From aa0e0de1d93bcc8ed4c6a8ce092fc45a4ce76996 Mon Sep 17 00:00:00 2001 From: mickski56 <35852605+mickski56@users.noreply.github.com> Date: Tue, 24 Jul 2018 22:48:50 +0100 Subject: [PATCH 001/304] address #6920 Proper analog trigger support --- input/drivers_joypad/udev_joypad.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/input/drivers_joypad/udev_joypad.c b/input/drivers_joypad/udev_joypad.c index 4475c62e5f..2841032dda 100644 --- a/input/drivers_joypad/udev_joypad.c +++ b/input/drivers_joypad/udev_joypad.c @@ -80,6 +80,8 @@ struct udev_joypad char *path; int32_t vid; int32_t pid; + /* Deal with analog triggers that report -32767 to 32767 */ + bool neg_trigger[NUM_AXES]; }; struct joypad_udev_entry @@ -217,6 +219,14 @@ static int udev_add_pad(struct udev_device *dev, unsigned p, int fd, const char if (abs->maximum > abs->minimum) { pad->axes[axes] = udev_compute_axis(abs, abs->value); + /* Deal with analog triggers that report -32767 to 32767 + by testing if the axis initial value is negative, allowing for + for some slop (1300 =~ 4%)in an axis centred around 0. + The actual work is done in udev_joypad_axis. + All bets are off if you're sitting on it. Reinitailise it by unpluging + and plugging back in. */ + if (udev_compute_axis(abs, abs->value) < -1300) + pad->neg_trigger[i] = true; pad->axes_bind[i] = axes++; } } @@ -662,12 +672,20 @@ static int16_t udev_joypad_axis(unsigned port, uint32_t joyaxis) if (AXIS_NEG_GET(joyaxis) < NUM_AXES) { val = pad->axes[AXIS_NEG_GET(joyaxis)]; + /* Deal with analog triggers that report -32767 to 32767 */ + if (((AXIS_NEG_GET(joyaxis) == ABS_Z) || (AXIS_NEG_GET(joyaxis) == ABS_RZ)) + && (pad->neg_trigger[AXIS_NEG_GET(joyaxis)])) + val = (val + 0x7fff) / 2; if (val > 0) val = 0; } else if (AXIS_POS_GET(joyaxis) < NUM_AXES) { val = pad->axes[AXIS_POS_GET(joyaxis)]; + /* Deal with analog triggers that report -32767 to 32767 */ + if (((AXIS_POS_GET(joyaxis) == ABS_Z) || (AXIS_POS_GET(joyaxis) == ABS_RZ)) + && (pad->neg_trigger[AXIS_POS_GET(joyaxis)])) + val = (val + 0x7fff) / 2; if (val < 0) val = 0; } From 7634b1bbb01d6704354f3efb6acd63fac0cdb9fb Mon Sep 17 00:00:00 2001 From: Gregor Richards Date: Sat, 1 Sep 2018 21:14:56 -0400 Subject: [PATCH 002/304] Fix netplay on Wii U getaddrinfo on Wii U doesn't support node==NULL. As I don't know of this bug on any other platform, I've made a Wii-U-specific workaround in getaddrinfo_retro. --- libretro-common/net/net_compat.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libretro-common/net/net_compat.c b/libretro-common/net/net_compat.c index 86c1381221..ea45743596 100644 --- a/libretro-common/net/net_compat.c +++ b/libretro-common/net/net_compat.c @@ -183,6 +183,16 @@ int getaddrinfo_retro(const char *node, const char *service, #endif } +#if defined(WIIU) + if (node == NULL) { + /* Wii U's socket library chokes on NULL node */ + if (hints->ai_flags & AI_PASSIVE) + node = "0.0.0.0"; + else + node = "127.0.0.1"; + } +#endif + #ifdef HAVE_SOCKET_LEGACY info = (struct addrinfo*)calloc(1, sizeof(*info)); if (!info) From 6dc88622208100b9fb01fe2873adb72abad25562 Mon Sep 17 00:00:00 2001 From: radius Date: Tue, 9 Oct 2018 19:07:05 -0500 Subject: [PATCH 003/304] [cheevos] autoload state may kick in before achievements are loaded, disable autoload state altogether if cheevos hardcode is enabled --- command.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/command.c b/command.c index f52fcee785..5bee7d0d08 100644 --- a/command.c +++ b/command.c @@ -1278,6 +1278,7 @@ static bool event_init_content(void) { bool contentless = false; bool is_inited = false; + settings_t *settings = config_get_ptr(); content_get_status(&contentless, &is_inited); @@ -1304,7 +1305,18 @@ static bool event_init_content(void) RARCH_LOG("%s.\n", msg_hash_to_str(MSG_SKIPPING_SRAM_LOAD)); +/* + Since the operations are asynchronouse we can't guarantee users will not use auto_load_state to cheat on + achievements so we forbid auto_load_state from happening if cheevos_enable and cheevos_hardcode_mode_enable + are true +*/ +#ifdef HAVE_CHEEVOS + if (!settings->bools.cheevos_enable || !settings->bools.cheevos_hardcore_mode_enable) + command_event_load_auto_state(); +#else command_event_load_auto_state(); +#endif + command_event(CMD_EVENT_BSV_MOVIE_INIT, NULL); command_event(CMD_EVENT_NETPLAY_INIT, NULL); From f336fa03379011105e05088fcdcdc0224eff1b4c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 10 Oct 2018 16:38:13 +0200 Subject: [PATCH 004/304] CXX_BUILD fixes --- deps/mbedtls/asn1write.c | 6 +- deps/mbedtls/blowfish.c | 517 +++++++++++++++--------------- deps/mbedtls/cipher_wrap.c | 24 +- deps/mbedtls/hmac_drbg.c | 2 +- deps/mbedtls/pem.c | 4 +- deps/mbedtls/ssl_tls.c | 49 +-- gfx/drivers/gl.c | 3 +- managers/cheat_manager.c | 641 ++++++++++++++++++------------------- 8 files changed, 618 insertions(+), 628 deletions(-) diff --git a/deps/mbedtls/asn1write.c b/deps/mbedtls/asn1write.c index 69b61b205f..d7a1e33f7e 100644 --- a/deps/mbedtls/asn1write.c +++ b/deps/mbedtls/asn1write.c @@ -345,7 +345,7 @@ mbedtls_asn1_named_data *mbedtls_asn1_store_named_data( mbedtls_asn1_named_data return( NULL ); cur->oid.len = oid_len; - cur->oid.p = mbedtls_calloc( 1, oid_len ); + cur->oid.p = (unsigned char*)(unsigned char*)(unsigned char*)(unsigned char*)(unsigned char*)(unsigned char*)(unsigned char*)(unsigned char*)(unsigned char*)mbedtls_calloc( 1, oid_len ); if( cur->oid.p == NULL ) { mbedtls_free( cur ); @@ -355,7 +355,7 @@ mbedtls_asn1_named_data *mbedtls_asn1_store_named_data( mbedtls_asn1_named_data memcpy( cur->oid.p, oid, oid_len ); cur->val.len = val_len; - cur->val.p = mbedtls_calloc( 1, val_len ); + cur->val.p = (unsigned char*)mbedtls_calloc( 1, val_len ); if( cur->val.p == NULL ) { mbedtls_free( cur->oid.p ); @@ -378,7 +378,7 @@ mbedtls_asn1_named_data *mbedtls_asn1_store_named_data( mbedtls_asn1_named_data return( NULL ); mbedtls_free( cur->val.p ); - cur->val.p = p; + cur->val.p = (unsigned char*)p; cur->val.len = val_len; } diff --git a/deps/mbedtls/blowfish.c b/deps/mbedtls/blowfish.c index 5f97f77122..e11f186067 100644 --- a/deps/mbedtls/blowfish.c +++ b/deps/mbedtls/blowfish.c @@ -73,7 +73,264 @@ static const uint32_t P[MBEDTLS_BLOWFISH_ROUNDS + 2] = { }; /* declarations of data at the end of this file */ -static const uint32_t S[4][256]; +static const uint32_t S[4][256] = { + { 0xD1310BA6L, 0x98DFB5ACL, 0x2FFD72DBL, 0xD01ADFB7L, + 0xB8E1AFEDL, 0x6A267E96L, 0xBA7C9045L, 0xF12C7F99L, + 0x24A19947L, 0xB3916CF7L, 0x0801F2E2L, 0x858EFC16L, + 0x636920D8L, 0x71574E69L, 0xA458FEA3L, 0xF4933D7EL, + 0x0D95748FL, 0x728EB658L, 0x718BCD58L, 0x82154AEEL, + 0x7B54A41DL, 0xC25A59B5L, 0x9C30D539L, 0x2AF26013L, + 0xC5D1B023L, 0x286085F0L, 0xCA417918L, 0xB8DB38EFL, + 0x8E79DCB0L, 0x603A180EL, 0x6C9E0E8BL, 0xB01E8A3EL, + 0xD71577C1L, 0xBD314B27L, 0x78AF2FDAL, 0x55605C60L, + 0xE65525F3L, 0xAA55AB94L, 0x57489862L, 0x63E81440L, + 0x55CA396AL, 0x2AAB10B6L, 0xB4CC5C34L, 0x1141E8CEL, + 0xA15486AFL, 0x7C72E993L, 0xB3EE1411L, 0x636FBC2AL, + 0x2BA9C55DL, 0x741831F6L, 0xCE5C3E16L, 0x9B87931EL, + 0xAFD6BA33L, 0x6C24CF5CL, 0x7A325381L, 0x28958677L, + 0x3B8F4898L, 0x6B4BB9AFL, 0xC4BFE81BL, 0x66282193L, + 0x61D809CCL, 0xFB21A991L, 0x487CAC60L, 0x5DEC8032L, + 0xEF845D5DL, 0xE98575B1L, 0xDC262302L, 0xEB651B88L, + 0x23893E81L, 0xD396ACC5L, 0x0F6D6FF3L, 0x83F44239L, + 0x2E0B4482L, 0xA4842004L, 0x69C8F04AL, 0x9E1F9B5EL, + 0x21C66842L, 0xF6E96C9AL, 0x670C9C61L, 0xABD388F0L, + 0x6A51A0D2L, 0xD8542F68L, 0x960FA728L, 0xAB5133A3L, + 0x6EEF0B6CL, 0x137A3BE4L, 0xBA3BF050L, 0x7EFB2A98L, + 0xA1F1651DL, 0x39AF0176L, 0x66CA593EL, 0x82430E88L, + 0x8CEE8619L, 0x456F9FB4L, 0x7D84A5C3L, 0x3B8B5EBEL, + 0xE06F75D8L, 0x85C12073L, 0x401A449FL, 0x56C16AA6L, + 0x4ED3AA62L, 0x363F7706L, 0x1BFEDF72L, 0x429B023DL, + 0x37D0D724L, 0xD00A1248L, 0xDB0FEAD3L, 0x49F1C09BL, + 0x075372C9L, 0x80991B7BL, 0x25D479D8L, 0xF6E8DEF7L, + 0xE3FE501AL, 0xB6794C3BL, 0x976CE0BDL, 0x04C006BAL, + 0xC1A94FB6L, 0x409F60C4L, 0x5E5C9EC2L, 0x196A2463L, + 0x68FB6FAFL, 0x3E6C53B5L, 0x1339B2EBL, 0x3B52EC6FL, + 0x6DFC511FL, 0x9B30952CL, 0xCC814544L, 0xAF5EBD09L, + 0xBEE3D004L, 0xDE334AFDL, 0x660F2807L, 0x192E4BB3L, + 0xC0CBA857L, 0x45C8740FL, 0xD20B5F39L, 0xB9D3FBDBL, + 0x5579C0BDL, 0x1A60320AL, 0xD6A100C6L, 0x402C7279L, + 0x679F25FEL, 0xFB1FA3CCL, 0x8EA5E9F8L, 0xDB3222F8L, + 0x3C7516DFL, 0xFD616B15L, 0x2F501EC8L, 0xAD0552ABL, + 0x323DB5FAL, 0xFD238760L, 0x53317B48L, 0x3E00DF82L, + 0x9E5C57BBL, 0xCA6F8CA0L, 0x1A87562EL, 0xDF1769DBL, + 0xD542A8F6L, 0x287EFFC3L, 0xAC6732C6L, 0x8C4F5573L, + 0x695B27B0L, 0xBBCA58C8L, 0xE1FFA35DL, 0xB8F011A0L, + 0x10FA3D98L, 0xFD2183B8L, 0x4AFCB56CL, 0x2DD1D35BL, + 0x9A53E479L, 0xB6F84565L, 0xD28E49BCL, 0x4BFB9790L, + 0xE1DDF2DAL, 0xA4CB7E33L, 0x62FB1341L, 0xCEE4C6E8L, + 0xEF20CADAL, 0x36774C01L, 0xD07E9EFEL, 0x2BF11FB4L, + 0x95DBDA4DL, 0xAE909198L, 0xEAAD8E71L, 0x6B93D5A0L, + 0xD08ED1D0L, 0xAFC725E0L, 0x8E3C5B2FL, 0x8E7594B7L, + 0x8FF6E2FBL, 0xF2122B64L, 0x8888B812L, 0x900DF01CL, + 0x4FAD5EA0L, 0x688FC31CL, 0xD1CFF191L, 0xB3A8C1ADL, + 0x2F2F2218L, 0xBE0E1777L, 0xEA752DFEL, 0x8B021FA1L, + 0xE5A0CC0FL, 0xB56F74E8L, 0x18ACF3D6L, 0xCE89E299L, + 0xB4A84FE0L, 0xFD13E0B7L, 0x7CC43B81L, 0xD2ADA8D9L, + 0x165FA266L, 0x80957705L, 0x93CC7314L, 0x211A1477L, + 0xE6AD2065L, 0x77B5FA86L, 0xC75442F5L, 0xFB9D35CFL, + 0xEBCDAF0CL, 0x7B3E89A0L, 0xD6411BD3L, 0xAE1E7E49L, + 0x00250E2DL, 0x2071B35EL, 0x226800BBL, 0x57B8E0AFL, + 0x2464369BL, 0xF009B91EL, 0x5563911DL, 0x59DFA6AAL, + 0x78C14389L, 0xD95A537FL, 0x207D5BA2L, 0x02E5B9C5L, + 0x83260376L, 0x6295CFA9L, 0x11C81968L, 0x4E734A41L, + 0xB3472DCAL, 0x7B14A94AL, 0x1B510052L, 0x9A532915L, + 0xD60F573FL, 0xBC9BC6E4L, 0x2B60A476L, 0x81E67400L, + 0x08BA6FB5L, 0x571BE91FL, 0xF296EC6BL, 0x2A0DD915L, + 0xB6636521L, 0xE7B9F9B6L, 0xFF34052EL, 0xC5855664L, + 0x53B02D5DL, 0xA99F8FA1L, 0x08BA4799L, 0x6E85076AL }, + { 0x4B7A70E9L, 0xB5B32944L, 0xDB75092EL, 0xC4192623L, + 0xAD6EA6B0L, 0x49A7DF7DL, 0x9CEE60B8L, 0x8FEDB266L, + 0xECAA8C71L, 0x699A17FFL, 0x5664526CL, 0xC2B19EE1L, + 0x193602A5L, 0x75094C29L, 0xA0591340L, 0xE4183A3EL, + 0x3F54989AL, 0x5B429D65L, 0x6B8FE4D6L, 0x99F73FD6L, + 0xA1D29C07L, 0xEFE830F5L, 0x4D2D38E6L, 0xF0255DC1L, + 0x4CDD2086L, 0x8470EB26L, 0x6382E9C6L, 0x021ECC5EL, + 0x09686B3FL, 0x3EBAEFC9L, 0x3C971814L, 0x6B6A70A1L, + 0x687F3584L, 0x52A0E286L, 0xB79C5305L, 0xAA500737L, + 0x3E07841CL, 0x7FDEAE5CL, 0x8E7D44ECL, 0x5716F2B8L, + 0xB03ADA37L, 0xF0500C0DL, 0xF01C1F04L, 0x0200B3FFL, + 0xAE0CF51AL, 0x3CB574B2L, 0x25837A58L, 0xDC0921BDL, + 0xD19113F9L, 0x7CA92FF6L, 0x94324773L, 0x22F54701L, + 0x3AE5E581L, 0x37C2DADCL, 0xC8B57634L, 0x9AF3DDA7L, + 0xA9446146L, 0x0FD0030EL, 0xECC8C73EL, 0xA4751E41L, + 0xE238CD99L, 0x3BEA0E2FL, 0x3280BBA1L, 0x183EB331L, + 0x4E548B38L, 0x4F6DB908L, 0x6F420D03L, 0xF60A04BFL, + 0x2CB81290L, 0x24977C79L, 0x5679B072L, 0xBCAF89AFL, + 0xDE9A771FL, 0xD9930810L, 0xB38BAE12L, 0xDCCF3F2EL, + 0x5512721FL, 0x2E6B7124L, 0x501ADDE6L, 0x9F84CD87L, + 0x7A584718L, 0x7408DA17L, 0xBC9F9ABCL, 0xE94B7D8CL, + 0xEC7AEC3AL, 0xDB851DFAL, 0x63094366L, 0xC464C3D2L, + 0xEF1C1847L, 0x3215D908L, 0xDD433B37L, 0x24C2BA16L, + 0x12A14D43L, 0x2A65C451L, 0x50940002L, 0x133AE4DDL, + 0x71DFF89EL, 0x10314E55L, 0x81AC77D6L, 0x5F11199BL, + 0x043556F1L, 0xD7A3C76BL, 0x3C11183BL, 0x5924A509L, + 0xF28FE6EDL, 0x97F1FBFAL, 0x9EBABF2CL, 0x1E153C6EL, + 0x86E34570L, 0xEAE96FB1L, 0x860E5E0AL, 0x5A3E2AB3L, + 0x771FE71CL, 0x4E3D06FAL, 0x2965DCB9L, 0x99E71D0FL, + 0x803E89D6L, 0x5266C825L, 0x2E4CC978L, 0x9C10B36AL, + 0xC6150EBAL, 0x94E2EA78L, 0xA5FC3C53L, 0x1E0A2DF4L, + 0xF2F74EA7L, 0x361D2B3DL, 0x1939260FL, 0x19C27960L, + 0x5223A708L, 0xF71312B6L, 0xEBADFE6EL, 0xEAC31F66L, + 0xE3BC4595L, 0xA67BC883L, 0xB17F37D1L, 0x018CFF28L, + 0xC332DDEFL, 0xBE6C5AA5L, 0x65582185L, 0x68AB9802L, + 0xEECEA50FL, 0xDB2F953BL, 0x2AEF7DADL, 0x5B6E2F84L, + 0x1521B628L, 0x29076170L, 0xECDD4775L, 0x619F1510L, + 0x13CCA830L, 0xEB61BD96L, 0x0334FE1EL, 0xAA0363CFL, + 0xB5735C90L, 0x4C70A239L, 0xD59E9E0BL, 0xCBAADE14L, + 0xEECC86BCL, 0x60622CA7L, 0x9CAB5CABL, 0xB2F3846EL, + 0x648B1EAFL, 0x19BDF0CAL, 0xA02369B9L, 0x655ABB50L, + 0x40685A32L, 0x3C2AB4B3L, 0x319EE9D5L, 0xC021B8F7L, + 0x9B540B19L, 0x875FA099L, 0x95F7997EL, 0x623D7DA8L, + 0xF837889AL, 0x97E32D77L, 0x11ED935FL, 0x16681281L, + 0x0E358829L, 0xC7E61FD6L, 0x96DEDFA1L, 0x7858BA99L, + 0x57F584A5L, 0x1B227263L, 0x9B83C3FFL, 0x1AC24696L, + 0xCDB30AEBL, 0x532E3054L, 0x8FD948E4L, 0x6DBC3128L, + 0x58EBF2EFL, 0x34C6FFEAL, 0xFE28ED61L, 0xEE7C3C73L, + 0x5D4A14D9L, 0xE864B7E3L, 0x42105D14L, 0x203E13E0L, + 0x45EEE2B6L, 0xA3AAABEAL, 0xDB6C4F15L, 0xFACB4FD0L, + 0xC742F442L, 0xEF6ABBB5L, 0x654F3B1DL, 0x41CD2105L, + 0xD81E799EL, 0x86854DC7L, 0xE44B476AL, 0x3D816250L, + 0xCF62A1F2L, 0x5B8D2646L, 0xFC8883A0L, 0xC1C7B6A3L, + 0x7F1524C3L, 0x69CB7492L, 0x47848A0BL, 0x5692B285L, + 0x095BBF00L, 0xAD19489DL, 0x1462B174L, 0x23820E00L, + 0x58428D2AL, 0x0C55F5EAL, 0x1DADF43EL, 0x233F7061L, + 0x3372F092L, 0x8D937E41L, 0xD65FECF1L, 0x6C223BDBL, + 0x7CDE3759L, 0xCBEE7460L, 0x4085F2A7L, 0xCE77326EL, + 0xA6078084L, 0x19F8509EL, 0xE8EFD855L, 0x61D99735L, + 0xA969A7AAL, 0xC50C06C2L, 0x5A04ABFCL, 0x800BCADCL, + 0x9E447A2EL, 0xC3453484L, 0xFDD56705L, 0x0E1E9EC9L, + 0xDB73DBD3L, 0x105588CDL, 0x675FDA79L, 0xE3674340L, + 0xC5C43465L, 0x713E38D8L, 0x3D28F89EL, 0xF16DFF20L, + 0x153E21E7L, 0x8FB03D4AL, 0xE6E39F2BL, 0xDB83ADF7L }, + { 0xE93D5A68L, 0x948140F7L, 0xF64C261CL, 0x94692934L, + 0x411520F7L, 0x7602D4F7L, 0xBCF46B2EL, 0xD4A20068L, + 0xD4082471L, 0x3320F46AL, 0x43B7D4B7L, 0x500061AFL, + 0x1E39F62EL, 0x97244546L, 0x14214F74L, 0xBF8B8840L, + 0x4D95FC1DL, 0x96B591AFL, 0x70F4DDD3L, 0x66A02F45L, + 0xBFBC09ECL, 0x03BD9785L, 0x7FAC6DD0L, 0x31CB8504L, + 0x96EB27B3L, 0x55FD3941L, 0xDA2547E6L, 0xABCA0A9AL, + 0x28507825L, 0x530429F4L, 0x0A2C86DAL, 0xE9B66DFBL, + 0x68DC1462L, 0xD7486900L, 0x680EC0A4L, 0x27A18DEEL, + 0x4F3FFEA2L, 0xE887AD8CL, 0xB58CE006L, 0x7AF4D6B6L, + 0xAACE1E7CL, 0xD3375FECL, 0xCE78A399L, 0x406B2A42L, + 0x20FE9E35L, 0xD9F385B9L, 0xEE39D7ABL, 0x3B124E8BL, + 0x1DC9FAF7L, 0x4B6D1856L, 0x26A36631L, 0xEAE397B2L, + 0x3A6EFA74L, 0xDD5B4332L, 0x6841E7F7L, 0xCA7820FBL, + 0xFB0AF54EL, 0xD8FEB397L, 0x454056ACL, 0xBA489527L, + 0x55533A3AL, 0x20838D87L, 0xFE6BA9B7L, 0xD096954BL, + 0x55A867BCL, 0xA1159A58L, 0xCCA92963L, 0x99E1DB33L, + 0xA62A4A56L, 0x3F3125F9L, 0x5EF47E1CL, 0x9029317CL, + 0xFDF8E802L, 0x04272F70L, 0x80BB155CL, 0x05282CE3L, + 0x95C11548L, 0xE4C66D22L, 0x48C1133FL, 0xC70F86DCL, + 0x07F9C9EEL, 0x41041F0FL, 0x404779A4L, 0x5D886E17L, + 0x325F51EBL, 0xD59BC0D1L, 0xF2BCC18FL, 0x41113564L, + 0x257B7834L, 0x602A9C60L, 0xDFF8E8A3L, 0x1F636C1BL, + 0x0E12B4C2L, 0x02E1329EL, 0xAF664FD1L, 0xCAD18115L, + 0x6B2395E0L, 0x333E92E1L, 0x3B240B62L, 0xEEBEB922L, + 0x85B2A20EL, 0xE6BA0D99L, 0xDE720C8CL, 0x2DA2F728L, + 0xD0127845L, 0x95B794FDL, 0x647D0862L, 0xE7CCF5F0L, + 0x5449A36FL, 0x877D48FAL, 0xC39DFD27L, 0xF33E8D1EL, + 0x0A476341L, 0x992EFF74L, 0x3A6F6EABL, 0xF4F8FD37L, + 0xA812DC60L, 0xA1EBDDF8L, 0x991BE14CL, 0xDB6E6B0DL, + 0xC67B5510L, 0x6D672C37L, 0x2765D43BL, 0xDCD0E804L, + 0xF1290DC7L, 0xCC00FFA3L, 0xB5390F92L, 0x690FED0BL, + 0x667B9FFBL, 0xCEDB7D9CL, 0xA091CF0BL, 0xD9155EA3L, + 0xBB132F88L, 0x515BAD24L, 0x7B9479BFL, 0x763BD6EBL, + 0x37392EB3L, 0xCC115979L, 0x8026E297L, 0xF42E312DL, + 0x6842ADA7L, 0xC66A2B3BL, 0x12754CCCL, 0x782EF11CL, + 0x6A124237L, 0xB79251E7L, 0x06A1BBE6L, 0x4BFB6350L, + 0x1A6B1018L, 0x11CAEDFAL, 0x3D25BDD8L, 0xE2E1C3C9L, + 0x44421659L, 0x0A121386L, 0xD90CEC6EL, 0xD5ABEA2AL, + 0x64AF674EL, 0xDA86A85FL, 0xBEBFE988L, 0x64E4C3FEL, + 0x9DBC8057L, 0xF0F7C086L, 0x60787BF8L, 0x6003604DL, + 0xD1FD8346L, 0xF6381FB0L, 0x7745AE04L, 0xD736FCCCL, + 0x83426B33L, 0xF01EAB71L, 0xB0804187L, 0x3C005E5FL, + 0x77A057BEL, 0xBDE8AE24L, 0x55464299L, 0xBF582E61L, + 0x4E58F48FL, 0xF2DDFDA2L, 0xF474EF38L, 0x8789BDC2L, + 0x5366F9C3L, 0xC8B38E74L, 0xB475F255L, 0x46FCD9B9L, + 0x7AEB2661L, 0x8B1DDF84L, 0x846A0E79L, 0x915F95E2L, + 0x466E598EL, 0x20B45770L, 0x8CD55591L, 0xC902DE4CL, + 0xB90BACE1L, 0xBB8205D0L, 0x11A86248L, 0x7574A99EL, + 0xB77F19B6L, 0xE0A9DC09L, 0x662D09A1L, 0xC4324633L, + 0xE85A1F02L, 0x09F0BE8CL, 0x4A99A025L, 0x1D6EFE10L, + 0x1AB93D1DL, 0x0BA5A4DFL, 0xA186F20FL, 0x2868F169L, + 0xDCB7DA83L, 0x573906FEL, 0xA1E2CE9BL, 0x4FCD7F52L, + 0x50115E01L, 0xA70683FAL, 0xA002B5C4L, 0x0DE6D027L, + 0x9AF88C27L, 0x773F8641L, 0xC3604C06L, 0x61A806B5L, + 0xF0177A28L, 0xC0F586E0L, 0x006058AAL, 0x30DC7D62L, + 0x11E69ED7L, 0x2338EA63L, 0x53C2DD94L, 0xC2C21634L, + 0xBBCBEE56L, 0x90BCB6DEL, 0xEBFC7DA1L, 0xCE591D76L, + 0x6F05E409L, 0x4B7C0188L, 0x39720A3DL, 0x7C927C24L, + 0x86E3725FL, 0x724D9DB9L, 0x1AC15BB4L, 0xD39EB8FCL, + 0xED545578L, 0x08FCA5B5L, 0xD83D7CD3L, 0x4DAD0FC4L, + 0x1E50EF5EL, 0xB161E6F8L, 0xA28514D9L, 0x6C51133CL, + 0x6FD5C7E7L, 0x56E14EC4L, 0x362ABFCEL, 0xDDC6C837L, + 0xD79A3234L, 0x92638212L, 0x670EFA8EL, 0x406000E0L }, + { 0x3A39CE37L, 0xD3FAF5CFL, 0xABC27737L, 0x5AC52D1BL, + 0x5CB0679EL, 0x4FA33742L, 0xD3822740L, 0x99BC9BBEL, + 0xD5118E9DL, 0xBF0F7315L, 0xD62D1C7EL, 0xC700C47BL, + 0xB78C1B6BL, 0x21A19045L, 0xB26EB1BEL, 0x6A366EB4L, + 0x5748AB2FL, 0xBC946E79L, 0xC6A376D2L, 0x6549C2C8L, + 0x530FF8EEL, 0x468DDE7DL, 0xD5730A1DL, 0x4CD04DC6L, + 0x2939BBDBL, 0xA9BA4650L, 0xAC9526E8L, 0xBE5EE304L, + 0xA1FAD5F0L, 0x6A2D519AL, 0x63EF8CE2L, 0x9A86EE22L, + 0xC089C2B8L, 0x43242EF6L, 0xA51E03AAL, 0x9CF2D0A4L, + 0x83C061BAL, 0x9BE96A4DL, 0x8FE51550L, 0xBA645BD6L, + 0x2826A2F9L, 0xA73A3AE1L, 0x4BA99586L, 0xEF5562E9L, + 0xC72FEFD3L, 0xF752F7DAL, 0x3F046F69L, 0x77FA0A59L, + 0x80E4A915L, 0x87B08601L, 0x9B09E6ADL, 0x3B3EE593L, + 0xE990FD5AL, 0x9E34D797L, 0x2CF0B7D9L, 0x022B8B51L, + 0x96D5AC3AL, 0x017DA67DL, 0xD1CF3ED6L, 0x7C7D2D28L, + 0x1F9F25CFL, 0xADF2B89BL, 0x5AD6B472L, 0x5A88F54CL, + 0xE029AC71L, 0xE019A5E6L, 0x47B0ACFDL, 0xED93FA9BL, + 0xE8D3C48DL, 0x283B57CCL, 0xF8D56629L, 0x79132E28L, + 0x785F0191L, 0xED756055L, 0xF7960E44L, 0xE3D35E8CL, + 0x15056DD4L, 0x88F46DBAL, 0x03A16125L, 0x0564F0BDL, + 0xC3EB9E15L, 0x3C9057A2L, 0x97271AECL, 0xA93A072AL, + 0x1B3F6D9BL, 0x1E6321F5L, 0xF59C66FBL, 0x26DCF319L, + 0x7533D928L, 0xB155FDF5L, 0x03563482L, 0x8ABA3CBBL, + 0x28517711L, 0xC20AD9F8L, 0xABCC5167L, 0xCCAD925FL, + 0x4DE81751L, 0x3830DC8EL, 0x379D5862L, 0x9320F991L, + 0xEA7A90C2L, 0xFB3E7BCEL, 0x5121CE64L, 0x774FBE32L, + 0xA8B6E37EL, 0xC3293D46L, 0x48DE5369L, 0x6413E680L, + 0xA2AE0810L, 0xDD6DB224L, 0x69852DFDL, 0x09072166L, + 0xB39A460AL, 0x6445C0DDL, 0x586CDECFL, 0x1C20C8AEL, + 0x5BBEF7DDL, 0x1B588D40L, 0xCCD2017FL, 0x6BB4E3BBL, + 0xDDA26A7EL, 0x3A59FF45L, 0x3E350A44L, 0xBCB4CDD5L, + 0x72EACEA8L, 0xFA6484BBL, 0x8D6612AEL, 0xBF3C6F47L, + 0xD29BE463L, 0x542F5D9EL, 0xAEC2771BL, 0xF64E6370L, + 0x740E0D8DL, 0xE75B1357L, 0xF8721671L, 0xAF537D5DL, + 0x4040CB08L, 0x4EB4E2CCL, 0x34D2466AL, 0x0115AF84L, + 0xE1B00428L, 0x95983A1DL, 0x06B89FB4L, 0xCE6EA048L, + 0x6F3F3B82L, 0x3520AB82L, 0x011A1D4BL, 0x277227F8L, + 0x611560B1L, 0xE7933FDCL, 0xBB3A792BL, 0x344525BDL, + 0xA08839E1L, 0x51CE794BL, 0x2F32C9B7L, 0xA01FBAC9L, + 0xE01CC87EL, 0xBCC7D1F6L, 0xCF0111C3L, 0xA1E8AAC7L, + 0x1A908749L, 0xD44FBD9AL, 0xD0DADECBL, 0xD50ADA38L, + 0x0339C32AL, 0xC6913667L, 0x8DF9317CL, 0xE0B12B4FL, + 0xF79E59B7L, 0x43F5BB3AL, 0xF2D519FFL, 0x27D9459CL, + 0xBF97222CL, 0x15E6FC2AL, 0x0F91FC71L, 0x9B941525L, + 0xFAE59361L, 0xCEB69CEBL, 0xC2A86459L, 0x12BAA8D1L, + 0xB6C1075EL, 0xE3056A0CL, 0x10D25065L, 0xCB03A442L, + 0xE0EC6E0EL, 0x1698DB3BL, 0x4C98A0BEL, 0x3278E964L, + 0x9F1F9532L, 0xE0D392DFL, 0xD3A0342BL, 0x8971F21EL, + 0x1B0A7441L, 0x4BA3348CL, 0xC5BE7120L, 0xC37632D8L, + 0xDF359F8DL, 0x9B992F2EL, 0xE60B6F47L, 0x0FE3F11DL, + 0xE54CDA54L, 0x1EDAD891L, 0xCE6279CFL, 0xCD3E7E6FL, + 0x1618B166L, 0xFD2C1D05L, 0x848FD2C5L, 0xF6FB2299L, + 0xF523F357L, 0xA6327623L, 0x93A83531L, 0x56CCCD02L, + 0xACF08162L, 0x5A75EBB5L, 0x6E163697L, 0x88D273CCL, + 0xDE966292L, 0x81B949D0L, 0x4C50901BL, 0x71C65614L, + 0xE6C6C7BDL, 0x327A140AL, 0x45E1D006L, 0xC3F27B9AL, + 0xC9AA53FDL, 0x62A80F00L, 0xBB25BFE2L, 0x35BDD2F6L, + 0x71126905L, 0xB2040222L, 0xB6CBCF7CL, 0xCD769C2BL, + 0x53113EC0L, 0x1640E3D3L, 0x38ABBD60L, 0x2547ADF0L, + 0xBA38209CL, 0xF746CE76L, 0x77AFA1C5L, 0x20756060L, + 0x85CBFE4EL, 0x8AE88DD8L, 0x7AAAF9B0L, 0x4CF9AA7EL, + 0x1948C25CL, 0x02FB8A8CL, 0x01C36AE4L, 0xD6EBE1F9L, + 0x90D4F869L, 0xA65CDEA0L, 0x3F09252DL, 0xC208E69FL, + 0xB74E6132L, 0xCE77E25BL, 0x578FDFE3L, 0x3AC372E6L } +}; static uint32_t F( mbedtls_blowfish_context *ctx, uint32_t x ) { @@ -390,264 +647,6 @@ int mbedtls_blowfish_crypt_ctr( mbedtls_blowfish_context *ctx, } #endif /* MBEDTLS_CIPHER_MODE_CTR */ -static const uint32_t S[4][256] = { - { 0xD1310BA6L, 0x98DFB5ACL, 0x2FFD72DBL, 0xD01ADFB7L, - 0xB8E1AFEDL, 0x6A267E96L, 0xBA7C9045L, 0xF12C7F99L, - 0x24A19947L, 0xB3916CF7L, 0x0801F2E2L, 0x858EFC16L, - 0x636920D8L, 0x71574E69L, 0xA458FEA3L, 0xF4933D7EL, - 0x0D95748FL, 0x728EB658L, 0x718BCD58L, 0x82154AEEL, - 0x7B54A41DL, 0xC25A59B5L, 0x9C30D539L, 0x2AF26013L, - 0xC5D1B023L, 0x286085F0L, 0xCA417918L, 0xB8DB38EFL, - 0x8E79DCB0L, 0x603A180EL, 0x6C9E0E8BL, 0xB01E8A3EL, - 0xD71577C1L, 0xBD314B27L, 0x78AF2FDAL, 0x55605C60L, - 0xE65525F3L, 0xAA55AB94L, 0x57489862L, 0x63E81440L, - 0x55CA396AL, 0x2AAB10B6L, 0xB4CC5C34L, 0x1141E8CEL, - 0xA15486AFL, 0x7C72E993L, 0xB3EE1411L, 0x636FBC2AL, - 0x2BA9C55DL, 0x741831F6L, 0xCE5C3E16L, 0x9B87931EL, - 0xAFD6BA33L, 0x6C24CF5CL, 0x7A325381L, 0x28958677L, - 0x3B8F4898L, 0x6B4BB9AFL, 0xC4BFE81BL, 0x66282193L, - 0x61D809CCL, 0xFB21A991L, 0x487CAC60L, 0x5DEC8032L, - 0xEF845D5DL, 0xE98575B1L, 0xDC262302L, 0xEB651B88L, - 0x23893E81L, 0xD396ACC5L, 0x0F6D6FF3L, 0x83F44239L, - 0x2E0B4482L, 0xA4842004L, 0x69C8F04AL, 0x9E1F9B5EL, - 0x21C66842L, 0xF6E96C9AL, 0x670C9C61L, 0xABD388F0L, - 0x6A51A0D2L, 0xD8542F68L, 0x960FA728L, 0xAB5133A3L, - 0x6EEF0B6CL, 0x137A3BE4L, 0xBA3BF050L, 0x7EFB2A98L, - 0xA1F1651DL, 0x39AF0176L, 0x66CA593EL, 0x82430E88L, - 0x8CEE8619L, 0x456F9FB4L, 0x7D84A5C3L, 0x3B8B5EBEL, - 0xE06F75D8L, 0x85C12073L, 0x401A449FL, 0x56C16AA6L, - 0x4ED3AA62L, 0x363F7706L, 0x1BFEDF72L, 0x429B023DL, - 0x37D0D724L, 0xD00A1248L, 0xDB0FEAD3L, 0x49F1C09BL, - 0x075372C9L, 0x80991B7BL, 0x25D479D8L, 0xF6E8DEF7L, - 0xE3FE501AL, 0xB6794C3BL, 0x976CE0BDL, 0x04C006BAL, - 0xC1A94FB6L, 0x409F60C4L, 0x5E5C9EC2L, 0x196A2463L, - 0x68FB6FAFL, 0x3E6C53B5L, 0x1339B2EBL, 0x3B52EC6FL, - 0x6DFC511FL, 0x9B30952CL, 0xCC814544L, 0xAF5EBD09L, - 0xBEE3D004L, 0xDE334AFDL, 0x660F2807L, 0x192E4BB3L, - 0xC0CBA857L, 0x45C8740FL, 0xD20B5F39L, 0xB9D3FBDBL, - 0x5579C0BDL, 0x1A60320AL, 0xD6A100C6L, 0x402C7279L, - 0x679F25FEL, 0xFB1FA3CCL, 0x8EA5E9F8L, 0xDB3222F8L, - 0x3C7516DFL, 0xFD616B15L, 0x2F501EC8L, 0xAD0552ABL, - 0x323DB5FAL, 0xFD238760L, 0x53317B48L, 0x3E00DF82L, - 0x9E5C57BBL, 0xCA6F8CA0L, 0x1A87562EL, 0xDF1769DBL, - 0xD542A8F6L, 0x287EFFC3L, 0xAC6732C6L, 0x8C4F5573L, - 0x695B27B0L, 0xBBCA58C8L, 0xE1FFA35DL, 0xB8F011A0L, - 0x10FA3D98L, 0xFD2183B8L, 0x4AFCB56CL, 0x2DD1D35BL, - 0x9A53E479L, 0xB6F84565L, 0xD28E49BCL, 0x4BFB9790L, - 0xE1DDF2DAL, 0xA4CB7E33L, 0x62FB1341L, 0xCEE4C6E8L, - 0xEF20CADAL, 0x36774C01L, 0xD07E9EFEL, 0x2BF11FB4L, - 0x95DBDA4DL, 0xAE909198L, 0xEAAD8E71L, 0x6B93D5A0L, - 0xD08ED1D0L, 0xAFC725E0L, 0x8E3C5B2FL, 0x8E7594B7L, - 0x8FF6E2FBL, 0xF2122B64L, 0x8888B812L, 0x900DF01CL, - 0x4FAD5EA0L, 0x688FC31CL, 0xD1CFF191L, 0xB3A8C1ADL, - 0x2F2F2218L, 0xBE0E1777L, 0xEA752DFEL, 0x8B021FA1L, - 0xE5A0CC0FL, 0xB56F74E8L, 0x18ACF3D6L, 0xCE89E299L, - 0xB4A84FE0L, 0xFD13E0B7L, 0x7CC43B81L, 0xD2ADA8D9L, - 0x165FA266L, 0x80957705L, 0x93CC7314L, 0x211A1477L, - 0xE6AD2065L, 0x77B5FA86L, 0xC75442F5L, 0xFB9D35CFL, - 0xEBCDAF0CL, 0x7B3E89A0L, 0xD6411BD3L, 0xAE1E7E49L, - 0x00250E2DL, 0x2071B35EL, 0x226800BBL, 0x57B8E0AFL, - 0x2464369BL, 0xF009B91EL, 0x5563911DL, 0x59DFA6AAL, - 0x78C14389L, 0xD95A537FL, 0x207D5BA2L, 0x02E5B9C5L, - 0x83260376L, 0x6295CFA9L, 0x11C81968L, 0x4E734A41L, - 0xB3472DCAL, 0x7B14A94AL, 0x1B510052L, 0x9A532915L, - 0xD60F573FL, 0xBC9BC6E4L, 0x2B60A476L, 0x81E67400L, - 0x08BA6FB5L, 0x571BE91FL, 0xF296EC6BL, 0x2A0DD915L, - 0xB6636521L, 0xE7B9F9B6L, 0xFF34052EL, 0xC5855664L, - 0x53B02D5DL, 0xA99F8FA1L, 0x08BA4799L, 0x6E85076AL }, - { 0x4B7A70E9L, 0xB5B32944L, 0xDB75092EL, 0xC4192623L, - 0xAD6EA6B0L, 0x49A7DF7DL, 0x9CEE60B8L, 0x8FEDB266L, - 0xECAA8C71L, 0x699A17FFL, 0x5664526CL, 0xC2B19EE1L, - 0x193602A5L, 0x75094C29L, 0xA0591340L, 0xE4183A3EL, - 0x3F54989AL, 0x5B429D65L, 0x6B8FE4D6L, 0x99F73FD6L, - 0xA1D29C07L, 0xEFE830F5L, 0x4D2D38E6L, 0xF0255DC1L, - 0x4CDD2086L, 0x8470EB26L, 0x6382E9C6L, 0x021ECC5EL, - 0x09686B3FL, 0x3EBAEFC9L, 0x3C971814L, 0x6B6A70A1L, - 0x687F3584L, 0x52A0E286L, 0xB79C5305L, 0xAA500737L, - 0x3E07841CL, 0x7FDEAE5CL, 0x8E7D44ECL, 0x5716F2B8L, - 0xB03ADA37L, 0xF0500C0DL, 0xF01C1F04L, 0x0200B3FFL, - 0xAE0CF51AL, 0x3CB574B2L, 0x25837A58L, 0xDC0921BDL, - 0xD19113F9L, 0x7CA92FF6L, 0x94324773L, 0x22F54701L, - 0x3AE5E581L, 0x37C2DADCL, 0xC8B57634L, 0x9AF3DDA7L, - 0xA9446146L, 0x0FD0030EL, 0xECC8C73EL, 0xA4751E41L, - 0xE238CD99L, 0x3BEA0E2FL, 0x3280BBA1L, 0x183EB331L, - 0x4E548B38L, 0x4F6DB908L, 0x6F420D03L, 0xF60A04BFL, - 0x2CB81290L, 0x24977C79L, 0x5679B072L, 0xBCAF89AFL, - 0xDE9A771FL, 0xD9930810L, 0xB38BAE12L, 0xDCCF3F2EL, - 0x5512721FL, 0x2E6B7124L, 0x501ADDE6L, 0x9F84CD87L, - 0x7A584718L, 0x7408DA17L, 0xBC9F9ABCL, 0xE94B7D8CL, - 0xEC7AEC3AL, 0xDB851DFAL, 0x63094366L, 0xC464C3D2L, - 0xEF1C1847L, 0x3215D908L, 0xDD433B37L, 0x24C2BA16L, - 0x12A14D43L, 0x2A65C451L, 0x50940002L, 0x133AE4DDL, - 0x71DFF89EL, 0x10314E55L, 0x81AC77D6L, 0x5F11199BL, - 0x043556F1L, 0xD7A3C76BL, 0x3C11183BL, 0x5924A509L, - 0xF28FE6EDL, 0x97F1FBFAL, 0x9EBABF2CL, 0x1E153C6EL, - 0x86E34570L, 0xEAE96FB1L, 0x860E5E0AL, 0x5A3E2AB3L, - 0x771FE71CL, 0x4E3D06FAL, 0x2965DCB9L, 0x99E71D0FL, - 0x803E89D6L, 0x5266C825L, 0x2E4CC978L, 0x9C10B36AL, - 0xC6150EBAL, 0x94E2EA78L, 0xA5FC3C53L, 0x1E0A2DF4L, - 0xF2F74EA7L, 0x361D2B3DL, 0x1939260FL, 0x19C27960L, - 0x5223A708L, 0xF71312B6L, 0xEBADFE6EL, 0xEAC31F66L, - 0xE3BC4595L, 0xA67BC883L, 0xB17F37D1L, 0x018CFF28L, - 0xC332DDEFL, 0xBE6C5AA5L, 0x65582185L, 0x68AB9802L, - 0xEECEA50FL, 0xDB2F953BL, 0x2AEF7DADL, 0x5B6E2F84L, - 0x1521B628L, 0x29076170L, 0xECDD4775L, 0x619F1510L, - 0x13CCA830L, 0xEB61BD96L, 0x0334FE1EL, 0xAA0363CFL, - 0xB5735C90L, 0x4C70A239L, 0xD59E9E0BL, 0xCBAADE14L, - 0xEECC86BCL, 0x60622CA7L, 0x9CAB5CABL, 0xB2F3846EL, - 0x648B1EAFL, 0x19BDF0CAL, 0xA02369B9L, 0x655ABB50L, - 0x40685A32L, 0x3C2AB4B3L, 0x319EE9D5L, 0xC021B8F7L, - 0x9B540B19L, 0x875FA099L, 0x95F7997EL, 0x623D7DA8L, - 0xF837889AL, 0x97E32D77L, 0x11ED935FL, 0x16681281L, - 0x0E358829L, 0xC7E61FD6L, 0x96DEDFA1L, 0x7858BA99L, - 0x57F584A5L, 0x1B227263L, 0x9B83C3FFL, 0x1AC24696L, - 0xCDB30AEBL, 0x532E3054L, 0x8FD948E4L, 0x6DBC3128L, - 0x58EBF2EFL, 0x34C6FFEAL, 0xFE28ED61L, 0xEE7C3C73L, - 0x5D4A14D9L, 0xE864B7E3L, 0x42105D14L, 0x203E13E0L, - 0x45EEE2B6L, 0xA3AAABEAL, 0xDB6C4F15L, 0xFACB4FD0L, - 0xC742F442L, 0xEF6ABBB5L, 0x654F3B1DL, 0x41CD2105L, - 0xD81E799EL, 0x86854DC7L, 0xE44B476AL, 0x3D816250L, - 0xCF62A1F2L, 0x5B8D2646L, 0xFC8883A0L, 0xC1C7B6A3L, - 0x7F1524C3L, 0x69CB7492L, 0x47848A0BL, 0x5692B285L, - 0x095BBF00L, 0xAD19489DL, 0x1462B174L, 0x23820E00L, - 0x58428D2AL, 0x0C55F5EAL, 0x1DADF43EL, 0x233F7061L, - 0x3372F092L, 0x8D937E41L, 0xD65FECF1L, 0x6C223BDBL, - 0x7CDE3759L, 0xCBEE7460L, 0x4085F2A7L, 0xCE77326EL, - 0xA6078084L, 0x19F8509EL, 0xE8EFD855L, 0x61D99735L, - 0xA969A7AAL, 0xC50C06C2L, 0x5A04ABFCL, 0x800BCADCL, - 0x9E447A2EL, 0xC3453484L, 0xFDD56705L, 0x0E1E9EC9L, - 0xDB73DBD3L, 0x105588CDL, 0x675FDA79L, 0xE3674340L, - 0xC5C43465L, 0x713E38D8L, 0x3D28F89EL, 0xF16DFF20L, - 0x153E21E7L, 0x8FB03D4AL, 0xE6E39F2BL, 0xDB83ADF7L }, - { 0xE93D5A68L, 0x948140F7L, 0xF64C261CL, 0x94692934L, - 0x411520F7L, 0x7602D4F7L, 0xBCF46B2EL, 0xD4A20068L, - 0xD4082471L, 0x3320F46AL, 0x43B7D4B7L, 0x500061AFL, - 0x1E39F62EL, 0x97244546L, 0x14214F74L, 0xBF8B8840L, - 0x4D95FC1DL, 0x96B591AFL, 0x70F4DDD3L, 0x66A02F45L, - 0xBFBC09ECL, 0x03BD9785L, 0x7FAC6DD0L, 0x31CB8504L, - 0x96EB27B3L, 0x55FD3941L, 0xDA2547E6L, 0xABCA0A9AL, - 0x28507825L, 0x530429F4L, 0x0A2C86DAL, 0xE9B66DFBL, - 0x68DC1462L, 0xD7486900L, 0x680EC0A4L, 0x27A18DEEL, - 0x4F3FFEA2L, 0xE887AD8CL, 0xB58CE006L, 0x7AF4D6B6L, - 0xAACE1E7CL, 0xD3375FECL, 0xCE78A399L, 0x406B2A42L, - 0x20FE9E35L, 0xD9F385B9L, 0xEE39D7ABL, 0x3B124E8BL, - 0x1DC9FAF7L, 0x4B6D1856L, 0x26A36631L, 0xEAE397B2L, - 0x3A6EFA74L, 0xDD5B4332L, 0x6841E7F7L, 0xCA7820FBL, - 0xFB0AF54EL, 0xD8FEB397L, 0x454056ACL, 0xBA489527L, - 0x55533A3AL, 0x20838D87L, 0xFE6BA9B7L, 0xD096954BL, - 0x55A867BCL, 0xA1159A58L, 0xCCA92963L, 0x99E1DB33L, - 0xA62A4A56L, 0x3F3125F9L, 0x5EF47E1CL, 0x9029317CL, - 0xFDF8E802L, 0x04272F70L, 0x80BB155CL, 0x05282CE3L, - 0x95C11548L, 0xE4C66D22L, 0x48C1133FL, 0xC70F86DCL, - 0x07F9C9EEL, 0x41041F0FL, 0x404779A4L, 0x5D886E17L, - 0x325F51EBL, 0xD59BC0D1L, 0xF2BCC18FL, 0x41113564L, - 0x257B7834L, 0x602A9C60L, 0xDFF8E8A3L, 0x1F636C1BL, - 0x0E12B4C2L, 0x02E1329EL, 0xAF664FD1L, 0xCAD18115L, - 0x6B2395E0L, 0x333E92E1L, 0x3B240B62L, 0xEEBEB922L, - 0x85B2A20EL, 0xE6BA0D99L, 0xDE720C8CL, 0x2DA2F728L, - 0xD0127845L, 0x95B794FDL, 0x647D0862L, 0xE7CCF5F0L, - 0x5449A36FL, 0x877D48FAL, 0xC39DFD27L, 0xF33E8D1EL, - 0x0A476341L, 0x992EFF74L, 0x3A6F6EABL, 0xF4F8FD37L, - 0xA812DC60L, 0xA1EBDDF8L, 0x991BE14CL, 0xDB6E6B0DL, - 0xC67B5510L, 0x6D672C37L, 0x2765D43BL, 0xDCD0E804L, - 0xF1290DC7L, 0xCC00FFA3L, 0xB5390F92L, 0x690FED0BL, - 0x667B9FFBL, 0xCEDB7D9CL, 0xA091CF0BL, 0xD9155EA3L, - 0xBB132F88L, 0x515BAD24L, 0x7B9479BFL, 0x763BD6EBL, - 0x37392EB3L, 0xCC115979L, 0x8026E297L, 0xF42E312DL, - 0x6842ADA7L, 0xC66A2B3BL, 0x12754CCCL, 0x782EF11CL, - 0x6A124237L, 0xB79251E7L, 0x06A1BBE6L, 0x4BFB6350L, - 0x1A6B1018L, 0x11CAEDFAL, 0x3D25BDD8L, 0xE2E1C3C9L, - 0x44421659L, 0x0A121386L, 0xD90CEC6EL, 0xD5ABEA2AL, - 0x64AF674EL, 0xDA86A85FL, 0xBEBFE988L, 0x64E4C3FEL, - 0x9DBC8057L, 0xF0F7C086L, 0x60787BF8L, 0x6003604DL, - 0xD1FD8346L, 0xF6381FB0L, 0x7745AE04L, 0xD736FCCCL, - 0x83426B33L, 0xF01EAB71L, 0xB0804187L, 0x3C005E5FL, - 0x77A057BEL, 0xBDE8AE24L, 0x55464299L, 0xBF582E61L, - 0x4E58F48FL, 0xF2DDFDA2L, 0xF474EF38L, 0x8789BDC2L, - 0x5366F9C3L, 0xC8B38E74L, 0xB475F255L, 0x46FCD9B9L, - 0x7AEB2661L, 0x8B1DDF84L, 0x846A0E79L, 0x915F95E2L, - 0x466E598EL, 0x20B45770L, 0x8CD55591L, 0xC902DE4CL, - 0xB90BACE1L, 0xBB8205D0L, 0x11A86248L, 0x7574A99EL, - 0xB77F19B6L, 0xE0A9DC09L, 0x662D09A1L, 0xC4324633L, - 0xE85A1F02L, 0x09F0BE8CL, 0x4A99A025L, 0x1D6EFE10L, - 0x1AB93D1DL, 0x0BA5A4DFL, 0xA186F20FL, 0x2868F169L, - 0xDCB7DA83L, 0x573906FEL, 0xA1E2CE9BL, 0x4FCD7F52L, - 0x50115E01L, 0xA70683FAL, 0xA002B5C4L, 0x0DE6D027L, - 0x9AF88C27L, 0x773F8641L, 0xC3604C06L, 0x61A806B5L, - 0xF0177A28L, 0xC0F586E0L, 0x006058AAL, 0x30DC7D62L, - 0x11E69ED7L, 0x2338EA63L, 0x53C2DD94L, 0xC2C21634L, - 0xBBCBEE56L, 0x90BCB6DEL, 0xEBFC7DA1L, 0xCE591D76L, - 0x6F05E409L, 0x4B7C0188L, 0x39720A3DL, 0x7C927C24L, - 0x86E3725FL, 0x724D9DB9L, 0x1AC15BB4L, 0xD39EB8FCL, - 0xED545578L, 0x08FCA5B5L, 0xD83D7CD3L, 0x4DAD0FC4L, - 0x1E50EF5EL, 0xB161E6F8L, 0xA28514D9L, 0x6C51133CL, - 0x6FD5C7E7L, 0x56E14EC4L, 0x362ABFCEL, 0xDDC6C837L, - 0xD79A3234L, 0x92638212L, 0x670EFA8EL, 0x406000E0L }, - { 0x3A39CE37L, 0xD3FAF5CFL, 0xABC27737L, 0x5AC52D1BL, - 0x5CB0679EL, 0x4FA33742L, 0xD3822740L, 0x99BC9BBEL, - 0xD5118E9DL, 0xBF0F7315L, 0xD62D1C7EL, 0xC700C47BL, - 0xB78C1B6BL, 0x21A19045L, 0xB26EB1BEL, 0x6A366EB4L, - 0x5748AB2FL, 0xBC946E79L, 0xC6A376D2L, 0x6549C2C8L, - 0x530FF8EEL, 0x468DDE7DL, 0xD5730A1DL, 0x4CD04DC6L, - 0x2939BBDBL, 0xA9BA4650L, 0xAC9526E8L, 0xBE5EE304L, - 0xA1FAD5F0L, 0x6A2D519AL, 0x63EF8CE2L, 0x9A86EE22L, - 0xC089C2B8L, 0x43242EF6L, 0xA51E03AAL, 0x9CF2D0A4L, - 0x83C061BAL, 0x9BE96A4DL, 0x8FE51550L, 0xBA645BD6L, - 0x2826A2F9L, 0xA73A3AE1L, 0x4BA99586L, 0xEF5562E9L, - 0xC72FEFD3L, 0xF752F7DAL, 0x3F046F69L, 0x77FA0A59L, - 0x80E4A915L, 0x87B08601L, 0x9B09E6ADL, 0x3B3EE593L, - 0xE990FD5AL, 0x9E34D797L, 0x2CF0B7D9L, 0x022B8B51L, - 0x96D5AC3AL, 0x017DA67DL, 0xD1CF3ED6L, 0x7C7D2D28L, - 0x1F9F25CFL, 0xADF2B89BL, 0x5AD6B472L, 0x5A88F54CL, - 0xE029AC71L, 0xE019A5E6L, 0x47B0ACFDL, 0xED93FA9BL, - 0xE8D3C48DL, 0x283B57CCL, 0xF8D56629L, 0x79132E28L, - 0x785F0191L, 0xED756055L, 0xF7960E44L, 0xE3D35E8CL, - 0x15056DD4L, 0x88F46DBAL, 0x03A16125L, 0x0564F0BDL, - 0xC3EB9E15L, 0x3C9057A2L, 0x97271AECL, 0xA93A072AL, - 0x1B3F6D9BL, 0x1E6321F5L, 0xF59C66FBL, 0x26DCF319L, - 0x7533D928L, 0xB155FDF5L, 0x03563482L, 0x8ABA3CBBL, - 0x28517711L, 0xC20AD9F8L, 0xABCC5167L, 0xCCAD925FL, - 0x4DE81751L, 0x3830DC8EL, 0x379D5862L, 0x9320F991L, - 0xEA7A90C2L, 0xFB3E7BCEL, 0x5121CE64L, 0x774FBE32L, - 0xA8B6E37EL, 0xC3293D46L, 0x48DE5369L, 0x6413E680L, - 0xA2AE0810L, 0xDD6DB224L, 0x69852DFDL, 0x09072166L, - 0xB39A460AL, 0x6445C0DDL, 0x586CDECFL, 0x1C20C8AEL, - 0x5BBEF7DDL, 0x1B588D40L, 0xCCD2017FL, 0x6BB4E3BBL, - 0xDDA26A7EL, 0x3A59FF45L, 0x3E350A44L, 0xBCB4CDD5L, - 0x72EACEA8L, 0xFA6484BBL, 0x8D6612AEL, 0xBF3C6F47L, - 0xD29BE463L, 0x542F5D9EL, 0xAEC2771BL, 0xF64E6370L, - 0x740E0D8DL, 0xE75B1357L, 0xF8721671L, 0xAF537D5DL, - 0x4040CB08L, 0x4EB4E2CCL, 0x34D2466AL, 0x0115AF84L, - 0xE1B00428L, 0x95983A1DL, 0x06B89FB4L, 0xCE6EA048L, - 0x6F3F3B82L, 0x3520AB82L, 0x011A1D4BL, 0x277227F8L, - 0x611560B1L, 0xE7933FDCL, 0xBB3A792BL, 0x344525BDL, - 0xA08839E1L, 0x51CE794BL, 0x2F32C9B7L, 0xA01FBAC9L, - 0xE01CC87EL, 0xBCC7D1F6L, 0xCF0111C3L, 0xA1E8AAC7L, - 0x1A908749L, 0xD44FBD9AL, 0xD0DADECBL, 0xD50ADA38L, - 0x0339C32AL, 0xC6913667L, 0x8DF9317CL, 0xE0B12B4FL, - 0xF79E59B7L, 0x43F5BB3AL, 0xF2D519FFL, 0x27D9459CL, - 0xBF97222CL, 0x15E6FC2AL, 0x0F91FC71L, 0x9B941525L, - 0xFAE59361L, 0xCEB69CEBL, 0xC2A86459L, 0x12BAA8D1L, - 0xB6C1075EL, 0xE3056A0CL, 0x10D25065L, 0xCB03A442L, - 0xE0EC6E0EL, 0x1698DB3BL, 0x4C98A0BEL, 0x3278E964L, - 0x9F1F9532L, 0xE0D392DFL, 0xD3A0342BL, 0x8971F21EL, - 0x1B0A7441L, 0x4BA3348CL, 0xC5BE7120L, 0xC37632D8L, - 0xDF359F8DL, 0x9B992F2EL, 0xE60B6F47L, 0x0FE3F11DL, - 0xE54CDA54L, 0x1EDAD891L, 0xCE6279CFL, 0xCD3E7E6FL, - 0x1618B166L, 0xFD2C1D05L, 0x848FD2C5L, 0xF6FB2299L, - 0xF523F357L, 0xA6327623L, 0x93A83531L, 0x56CCCD02L, - 0xACF08162L, 0x5A75EBB5L, 0x6E163697L, 0x88D273CCL, - 0xDE966292L, 0x81B949D0L, 0x4C50901BL, 0x71C65614L, - 0xE6C6C7BDL, 0x327A140AL, 0x45E1D006L, 0xC3F27B9AL, - 0xC9AA53FDL, 0x62A80F00L, 0xBB25BFE2L, 0x35BDD2F6L, - 0x71126905L, 0xB2040222L, 0xB6CBCF7CL, 0xCD769C2BL, - 0x53113EC0L, 0x1640E3D3L, 0x38ABBD60L, 0x2547ADF0L, - 0xBA38209CL, 0xF746CE76L, 0x77AFA1C5L, 0x20756060L, - 0x85CBFE4EL, 0x8AE88DD8L, 0x7AAAF9B0L, 0x4CF9AA7EL, - 0x1948C25CL, 0x02FB8A8CL, 0x01C36AE4L, 0xD6EBE1F9L, - 0x90D4F869L, 0xA65CDEA0L, 0x3F09252DL, 0xC208E69FL, - 0xB74E6132L, 0xCE77E25BL, 0x578FDFE3L, 0x3AC372E6L } -}; #endif /* !MBEDTLS_BLOWFISH_ALT */ #endif /* MBEDTLS_BLOWFISH_C */ diff --git a/deps/mbedtls/cipher_wrap.c b/deps/mbedtls/cipher_wrap.c index dc76af8ff4..dabc7a25d4 100644 --- a/deps/mbedtls/cipher_wrap.c +++ b/deps/mbedtls/cipher_wrap.c @@ -87,8 +87,8 @@ static void *gcm_ctx_alloc( void ) static void gcm_ctx_free( void *ctx ) { - mbedtls_gcm_free( ctx ); - mbedtls_free( ctx ); + mbedtls_gcm_free((mbedtls_gcm_context*)ctx); + mbedtls_free(ctx); } #endif /* MBEDTLS_GCM_C */ @@ -106,7 +106,7 @@ static void *ccm_ctx_alloc( void ) static void ccm_ctx_free( void *ctx ) { - mbedtls_ccm_free( ctx ); + mbedtls_ccm_free((mbedtls_ccm_context*)ctx); mbedtls_free( ctx ); } #endif /* MBEDTLS_CCM_C */ @@ -162,7 +162,7 @@ static int aes_setkey_enc_wrap( void *ctx, const unsigned char *key, static void * aes_ctx_alloc( void ) { - mbedtls_aes_context *aes = mbedtls_calloc( 1, sizeof( mbedtls_aes_context ) ); + mbedtls_aes_context *aes = (mbedtls_aes_context*)mbedtls_calloc( 1, sizeof( mbedtls_aes_context ) ); if( aes == NULL ) return( NULL ); @@ -518,8 +518,8 @@ static int camellia_setkey_enc_wrap( void *ctx, const unsigned char *key, static void * camellia_ctx_alloc( void ) { - mbedtls_camellia_context *ctx; - ctx = mbedtls_calloc( 1, sizeof( mbedtls_camellia_context ) ); + mbedtls_camellia_context *ctx = (mbedtls_camellia_context*) + mbedtls_calloc( 1, sizeof( mbedtls_camellia_context ) ); if( ctx == NULL ) return( NULL ); @@ -906,7 +906,8 @@ static int des3_set3key_enc_wrap( void *ctx, const unsigned char *key, static void * des_ctx_alloc( void ) { - mbedtls_des_context *des = mbedtls_calloc( 1, sizeof( mbedtls_des_context ) ); + mbedtls_des_context *des = (mbedtls_des_context*) + mbedtls_calloc( 1, sizeof( mbedtls_des_context ) ); if( des == NULL ) return( NULL ); @@ -924,8 +925,7 @@ static void des_ctx_free( void *ctx ) static void * des3_ctx_alloc( void ) { - mbedtls_des3_context *des3; - des3 = mbedtls_calloc( 1, sizeof( mbedtls_des3_context ) ); + mbedtls_des3_context *des3 = (mbedtls_des3_context*)mbedtls_calloc( 1, sizeof( mbedtls_des3_context ) ); if( des3 == NULL ) return( NULL ); @@ -1123,8 +1123,7 @@ static int blowfish_setkey_wrap( void *ctx, const unsigned char *key, static void * blowfish_ctx_alloc( void ) { - mbedtls_blowfish_context *ctx; - ctx = mbedtls_calloc( 1, sizeof( mbedtls_blowfish_context ) ); + mbedtls_blowfish_context *ctx = (mbedtls_blowfish_context*)mbedtls_calloc( 1, sizeof( mbedtls_blowfish_context ) ); if( ctx == NULL ) return( NULL ); @@ -1233,8 +1232,7 @@ static int arc4_setkey_wrap( void *ctx, const unsigned char *key, static void * arc4_ctx_alloc( void ) { - mbedtls_arc4_context *ctx; - ctx = mbedtls_calloc( 1, sizeof( mbedtls_arc4_context ) ); + mbedtls_arc4_context *ctx = (mbedtls_arc4_context*)mbedtls_calloc( 1, sizeof( mbedtls_arc4_context ) ); if( ctx == NULL ) return( NULL ); diff --git a/deps/mbedtls/hmac_drbg.c b/deps/mbedtls/hmac_drbg.c index a32052b724..a8ed885c82 100644 --- a/deps/mbedtls/hmac_drbg.c +++ b/deps/mbedtls/hmac_drbg.c @@ -447,7 +447,7 @@ static size_t test_offset; static int hmac_drbg_self_test_entropy( void *data, unsigned char *buf, size_t len ) { - const unsigned char *p = data; + const unsigned char *p = (const unsigned char*)data; memcpy( buf, p + test_offset, len ); test_offset += len; return( 0 ); diff --git a/deps/mbedtls/pem.c b/deps/mbedtls/pem.c index 37e857e92c..2995d7fd70 100644 --- a/deps/mbedtls/pem.c +++ b/deps/mbedtls/pem.c @@ -323,7 +323,7 @@ int mbedtls_pem_read_buffer( mbedtls_pem_context *ctx, const char *header, const if( ret == MBEDTLS_ERR_BASE64_INVALID_CHARACTER ) return( MBEDTLS_ERR_PEM_INVALID_DATA + ret ); - if( ( buf = mbedtls_calloc( 1, len ) ) == NULL ) + if( ( buf = (unsigned char*)mbedtls_calloc( 1, len ) ) == NULL ) return( MBEDTLS_ERR_PEM_ALLOC_FAILED ); if( ( ret = mbedtls_base64_decode( buf, len, &len, s1, s2 - s1 ) ) != 0 ) @@ -409,7 +409,7 @@ int mbedtls_pem_write_buffer( const char *header, const char *footer, return( MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL ); } - if( ( encode_buf = mbedtls_calloc( 1, use_len ) ) == NULL ) + if( ( encode_buf = (unsigned char*)mbedtls_calloc( 1, use_len ) ) == NULL ) return( MBEDTLS_ERR_PEM_ALLOC_FAILED ); if( ( ret = mbedtls_base64_encode( encode_buf, use_len, &use_len, der_data, diff --git a/deps/mbedtls/ssl_tls.c b/deps/mbedtls/ssl_tls.c index e417d1915a..6c136351c9 100644 --- a/deps/mbedtls/ssl_tls.c +++ b/deps/mbedtls/ssl_tls.c @@ -163,7 +163,7 @@ static int ssl_session_copy( mbedtls_ssl_session *dst, const mbedtls_ssl_session { int ret; - dst->peer_cert = mbedtls_calloc( 1, sizeof(mbedtls_x509_crt) ); + dst->peer_cert = (mbedtls_x509_crt*)mbedtls_calloc( 1, sizeof(mbedtls_x509_crt) ); if( dst->peer_cert == NULL ) return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); @@ -182,7 +182,7 @@ static int ssl_session_copy( mbedtls_ssl_session *dst, const mbedtls_ssl_session #if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) if( src->ticket != NULL ) { - dst->ticket = mbedtls_calloc( 1, src->ticket_len ); + dst->ticket = (unsigned char*)mbedtls_calloc( 1, src->ticket_len ); if( dst->ticket == NULL ) return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); @@ -2471,14 +2471,15 @@ static int ssl_flight_append( mbedtls_ssl_context *ssl ) mbedtls_ssl_flight_item *msg; /* Allocate space for current message */ - if( ( msg = mbedtls_calloc( 1, sizeof( mbedtls_ssl_flight_item ) ) ) == NULL ) + if( ( msg = (mbedtls_ssl_flight_item*) + mbedtls_calloc( 1, sizeof( mbedtls_ssl_flight_item ) ) ) == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc %d bytes failed", sizeof( mbedtls_ssl_flight_item ) ) ); return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); } - if( ( msg->p = mbedtls_calloc( 1, ssl->out_msglen ) ) == NULL ) + if( ( msg->p = (unsigned char*)mbedtls_calloc( 1, ssl->out_msglen ) ) == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc %d bytes failed", ssl->out_msglen ) ); mbedtls_free( msg ); @@ -2950,7 +2951,7 @@ static int ssl_reassemble_dtls_handshake( mbedtls_ssl_context *ssl ) /* The bitmask needs one bit per byte of message excluding header */ alloc_len = 12 + msg_len + msg_len / 8 + ( msg_len % 8 != 0 ); - ssl->handshake->hs_msg = mbedtls_calloc( 1, alloc_len ); + ssl->handshake->hs_msg = (unsigned char*)mbedtls_calloc( 1, alloc_len ); if( ssl->handshake->hs_msg == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc failed (%d bytes)", alloc_len ) ); @@ -4453,7 +4454,7 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) mbedtls_free( ssl->session_negotiate->peer_cert ); } - if( ( ssl->session_negotiate->peer_cert = mbedtls_calloc( 1, + if( ( ssl->session_negotiate->peer_cert = (mbedtls_x509_crt*)mbedtls_calloc( 1, sizeof( mbedtls_x509_crt ) ) ) == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", @@ -5506,17 +5507,17 @@ static int ssl_handshake_init( mbedtls_ssl_context *ssl ) */ if( ssl->transform_negotiate == NULL ) { - ssl->transform_negotiate = mbedtls_calloc( 1, sizeof(mbedtls_ssl_transform) ); + ssl->transform_negotiate = (mbedtls_ssl_transform*)mbedtls_calloc( 1, sizeof(mbedtls_ssl_transform) ); } if( ssl->session_negotiate == NULL ) { - ssl->session_negotiate = mbedtls_calloc( 1, sizeof(mbedtls_ssl_session) ); + ssl->session_negotiate = (mbedtls_ssl_session*)mbedtls_calloc( 1, sizeof(mbedtls_ssl_session) ); } if( ssl->handshake == NULL ) { - ssl->handshake = mbedtls_calloc( 1, sizeof(mbedtls_ssl_handshake_params) ); + ssl->handshake = (mbedtls_ssl_handshake_params*)mbedtls_calloc( 1, sizeof(mbedtls_ssl_handshake_params) ); } /* All pointers should exist and can be directly freed without issue */ @@ -5610,8 +5611,8 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, /* * Prepare base structures */ - if( ( ssl-> in_buf = mbedtls_calloc( 1, len ) ) == NULL || - ( ssl->out_buf = mbedtls_calloc( 1, len ) ) == NULL ) + if( ( ssl-> in_buf = (unsigned char*)mbedtls_calloc( 1, len ) ) == NULL || + ( ssl->out_buf = (unsigned char*)mbedtls_calloc( 1, len ) ) == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", len ) ); mbedtls_free( ssl->in_buf ); @@ -5936,27 +5937,26 @@ static int ssl_append_key_cert( mbedtls_ssl_key_cert **head, mbedtls_x509_crt *cert, mbedtls_pk_context *key ) { - mbedtls_ssl_key_cert *new; - - new = mbedtls_calloc( 1, sizeof( mbedtls_ssl_key_cert ) ); - if( new == NULL ) + mbedtls_ssl_key_cert *keycert = (mbedtls_ssl_key_cert*) + mbedtls_calloc( 1, sizeof( mbedtls_ssl_key_cert ) ); + if( keycert == NULL ) return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); - new->cert = cert; - new->key = key; - new->next = NULL; + keycert->cert = cert; + keycert->key = key; + keycert->next = NULL; /* Update head is the list was null, else add to the end */ if( *head == NULL ) { - *head = new; + *head = keycert; } else { mbedtls_ssl_key_cert *cur = *head; while( cur->next != NULL ) cur = cur->next; - cur->next = new; + cur->next = keycert; } return( 0 ); @@ -6054,8 +6054,8 @@ int mbedtls_ssl_conf_psk( mbedtls_ssl_config *conf, conf->psk_identity = NULL; } - if( ( conf->psk = mbedtls_calloc( 1, psk_len ) ) == NULL || - ( conf->psk_identity = mbedtls_calloc( 1, psk_identity_len ) ) == NULL ) + if( ( conf->psk = (unsigned char*)mbedtls_calloc( 1, psk_len ) ) == NULL || + ( conf->psk_identity = (unsigned char*)mbedtls_calloc( 1, psk_identity_len ) ) == NULL ) { mbedtls_free( conf->psk ); mbedtls_free( conf->psk_identity ); @@ -6085,7 +6085,8 @@ int mbedtls_ssl_set_hs_psk( mbedtls_ssl_context *ssl, if( ssl->handshake->psk != NULL ) mbedtls_free( ssl->handshake->psk ); - if( ( ssl->handshake->psk = mbedtls_calloc( 1, psk_len ) ) == NULL ) + if( ( ssl->handshake->psk = (unsigned char*) + mbedtls_calloc( 1, psk_len ) ) == NULL ) return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); ssl->handshake->psk_len = psk_len; @@ -6185,7 +6186,7 @@ int mbedtls_ssl_set_hostname( mbedtls_ssl_context *ssl, const char *hostname ) if( hostname_len > MBEDTLS_SSL_MAX_HOST_NAME_LEN ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - ssl->hostname = mbedtls_calloc( 1, hostname_len + 1 ); + ssl->hostname = (char*)mbedtls_calloc( 1, hostname_len + 1 ); if( ssl->hostname == NULL ) return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index aa0f52dba7..09c6e826f0 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -364,10 +364,11 @@ static void gl_set_viewport_wrapper(void *data, unsigned viewport_width, unsigned viewport_height, bool force_full, bool allow_rotate) { video_frame_info_t video_info; + gl_t *gl = (gl_t*)data; video_driver_build_info(&video_info); - gl_set_viewport(data, &video_info, + gl_set_viewport(gl, &video_info, viewport_width, viewport_height, force_full, allow_rotate); } diff --git a/managers/cheat_manager.c b/managers/cheat_manager.c index 5a58463b6b..d581e4790d 100644 --- a/managers/cheat_manager.c +++ b/managers/cheat_manager.c @@ -108,7 +108,7 @@ void cheat_manager_set_code(unsigned i, const char *str) return; if (!string_is_empty(str)) - strcpy(cheat_manager_state.cheats[i].code,str) ; + strcpy(cheat_manager_state.cheats[i].code,str); cheat_manager_state.cheats[i].state = true; } @@ -151,7 +151,7 @@ bool cheat_manager_save(const char *path, const char *cheat_database, bool overw buf[0] = cheats_file[0] = '\0'; if ( (!cheat_manager_state.cheats) || cheat_manager_state.size==0 ) - return false ; + return false; if (!cheat_database) strlcpy(cheats_file, path, sizeof(cheats_file)); @@ -172,7 +172,7 @@ bool cheat_manager_save(const char *path, const char *cheat_database, bool overw if (!conf) return false; - conf->guaranteed_no_duplicates = true ; + conf->guaranteed_no_duplicates = true; config_set_int(conf, "cheats", cheat_manager_state.size); @@ -240,44 +240,42 @@ bool cheat_manager_copy_idx_to_working(unsigned idx) return false; } - memcpy(&(cheat_manager_state.working_cheat), &(cheat_manager_state.cheats[idx]), sizeof(struct item_cheat)) ; + memcpy(&(cheat_manager_state.working_cheat), &(cheat_manager_state.cheats[idx]), sizeof(struct item_cheat)); if ( cheat_manager_state.cheats[idx].desc != NULL ) - strlcpy(cheat_manager_state.working_desc, cheat_manager_state.cheats[idx].desc, CHEAT_DESC_SCRATCH_SIZE) ; + strlcpy(cheat_manager_state.working_desc, cheat_manager_state.cheats[idx].desc, CHEAT_DESC_SCRATCH_SIZE); else - cheat_manager_state.working_desc[0] = '\0' ; + cheat_manager_state.working_desc[0] = '\0'; if ( cheat_manager_state.cheats[idx].code != NULL ) - strlcpy(cheat_manager_state.working_code, cheat_manager_state.cheats[idx].code, CHEAT_CODE_SCRATCH_SIZE) ; + strlcpy(cheat_manager_state.working_code, cheat_manager_state.cheats[idx].code, CHEAT_CODE_SCRATCH_SIZE); else - cheat_manager_state.working_code[0] = '\0' ; + cheat_manager_state.working_code[0] = '\0'; - return true ; + return true; } bool cheat_manager_copy_working_to_idx(unsigned idx) { if ( (!cheat_manager_state.cheats) || (cheat_manager_state.size < idx+1)) - { return false; - } - memcpy(&(cheat_manager_state.cheats[idx]), &(cheat_manager_state.working_cheat), sizeof(struct item_cheat)) ; + memcpy(&(cheat_manager_state.cheats[idx]), &(cheat_manager_state.working_cheat), sizeof(struct item_cheat)); if ( cheat_manager_state.cheats[idx].desc != NULL ) - free(cheat_manager_state.cheats[idx].desc) ; + free(cheat_manager_state.cheats[idx].desc); - cheat_manager_state.cheats[idx].desc = strdup(cheat_manager_state.working_desc) ; + cheat_manager_state.cheats[idx].desc = strdup(cheat_manager_state.working_desc); if ( cheat_manager_state.cheats[idx].code != NULL ) - free(cheat_manager_state.cheats[idx].code) ; + free(cheat_manager_state.cheats[idx].code); - cheat_manager_state.cheats[idx].code = strdup(cheat_manager_state.working_code) ; - return true ; + cheat_manager_state.cheats[idx].code = strdup(cheat_manager_state.working_code); + return true; } static void cheat_manager_new(unsigned size) { unsigned i; - cheat_manager_free() ; + cheat_manager_free(); cheat_manager_state.buf_size = size; cheat_manager_state.size = size; @@ -290,66 +288,66 @@ static void cheat_manager_new(unsigned size) cheat_manager_state.buf_size = 0; cheat_manager_state.size = 0; cheat_manager_state.cheats = NULL; - return ; + return; } for (i = 0; i < cheat_manager_state.size; i++) { - cheat_manager_state.cheats[i].desc = NULL ; - cheat_manager_state.cheats[i].code = NULL ; + cheat_manager_state.cheats[i].desc = NULL; + cheat_manager_state.cheats[i].code = NULL; cheat_manager_state.cheats[i].state = false; cheat_manager_state.cheats[i].repeat_count = 1; cheat_manager_state.cheats[i].repeat_add_to_value = 0; cheat_manager_state.cheats[i].repeat_add_to_address = 1; } - return ; + return; } void cheat_manager_load_cb_first_pass(char *key, char *value) { - errno = 0 ; + errno = 0; if (string_is_equal(key, "cheats")) { cheat_manager_state.loading_cheat_size = (unsigned)strtoul(value, NULL, 0); if (errno != 0) - cheat_manager_state.loading_cheat_size = 0 ; + cheat_manager_state.loading_cheat_size = 0; } } void cheat_manager_load_cb_second_pass(char *key, char *value) { - char cheat_num_str[20] ; - unsigned cheat_num ; - unsigned cheat_idx ; - int idx = 0 ; - int key_length ; - errno = 0 ; + char cheat_num_str[20]; + unsigned cheat_num; + unsigned cheat_idx; + int idx = 0; + int key_length; + errno = 0; if (strncmp(key, "cheat", 5) != 0) - return ; + return; - idx = 5 ; - key_length = strlen(key) ; + idx = 5; + key_length = strlen(key); while (idx < key_length && key[idx] >= '0' && key[idx] <= '9' && idx < 24) { - cheat_num_str[idx-5] = key[idx] ; - idx++ ; + cheat_num_str[idx-5] = key[idx]; + idx++; } - cheat_num_str[idx-5] = '\0' ; + cheat_num_str[idx-5] = '\0'; - cheat_num = (unsigned)strtoul(cheat_num_str, NULL, 0); ; + cheat_num = (unsigned)strtoul(cheat_num_str, NULL, 0); if (cheat_num+cheat_manager_state.loading_cheat_offset >= cheat_manager_state.size) - return ; + return; - key = key+idx+1 ; + key = key+idx+1; - cheat_idx = cheat_num+cheat_manager_state.loading_cheat_offset ; + cheat_idx = cheat_num+cheat_manager_state.loading_cheat_offset; if (string_is_equal(key, "address")) cheat_manager_state.cheats[cheat_idx].address = (unsigned)strtoul(value, NULL, 0); @@ -360,9 +358,9 @@ void cheat_manager_load_cb_second_pass(char *key, char *value) else if (string_is_equal(key, "cheat_type")) cheat_manager_state.cheats[cheat_idx].cheat_type = (unsigned)strtoul(value, NULL, 0); else if (string_is_equal(key, "code")) - cheat_manager_state.cheats[cheat_idx].code = strdup(value) ; + cheat_manager_state.cheats[cheat_idx].code = strdup(value); else if (string_is_equal(key, "desc")) - cheat_manager_state.cheats[cheat_idx].desc = strdup(value) ; + cheat_manager_state.cheats[cheat_idx].desc = strdup(value); else if (string_is_equal(key, "enable")) cheat_manager_state.cheats[cheat_idx].state = (string_is_equal(value,"true") || string_is_equal(value,"1")); else if (string_is_equal(key, "handler")) @@ -401,61 +399,59 @@ bool cheat_manager_load(const char *path, bool append) config_file_cb_t cb; config_file_t *conf = NULL; - cb.config_file_new_entry_cb = cheat_manager_load_cb_first_pass ; + cb.config_file_new_entry_cb = cheat_manager_load_cb_first_pass; - cheat_manager_state.loading_cheat_size = 0 ; + cheat_manager_state.loading_cheat_size = 0; conf = config_file_new_with_callback(path, &cb); if (!conf) return false; - cheats = cheat_manager_state.loading_cheat_size ; + cheats = cheat_manager_state.loading_cheat_size; if (cheats == 0) goto error; - config_file_free(conf) ; - conf = NULL ; + config_file_free(conf); + conf = NULL; - cheat_manager_alloc_if_empty() ; + cheat_manager_alloc_if_empty(); if ( append ) { - orig_size = cheat_manager_get_size() ; + orig_size = cheat_manager_get_size(); if ( orig_size == 0) { cheat_manager_new(cheats); } else { - cheats = cheats + orig_size ; - if (cheat_manager_realloc(cheats, CHEAT_HANDLER_TYPE_EMU)) - { - } + cheats = cheats + orig_size; + if (cheat_manager_realloc(cheats, CHEAT_HANDLER_TYPE_EMU)) { } } } else { - orig_size = 0 ; + orig_size = 0; cheat_manager_new(cheats); } for (i = orig_size; i < cheats; i++) { - cheat_manager_state.cheats[i].idx = i ; - cheat_manager_state.cheats[i].desc = NULL ; - cheat_manager_state.cheats[i].code = NULL ; - cheat_manager_state.cheats[i].state = false ; - cheat_manager_state.cheats[i].big_endian = false ; - cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE ; + cheat_manager_state.cheats[i].idx = i; + cheat_manager_state.cheats[i].desc = NULL; + cheat_manager_state.cheats[i].code = NULL; + cheat_manager_state.cheats[i].state = false; + cheat_manager_state.cheats[i].big_endian = false; + cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE; cheat_manager_state.cheats[i].memory_search_size = 3; } - cheat_manager_state.loading_cheat_offset = orig_size ; - cb.config_file_new_entry_cb = cheat_manager_load_cb_second_pass ; + cheat_manager_state.loading_cheat_offset = orig_size; + cb.config_file_new_entry_cb = cheat_manager_load_cb_second_pass; conf = config_file_new_with_callback(path, &cb); if (!conf) @@ -474,26 +470,26 @@ error: bool cheat_manager_realloc(unsigned new_size, unsigned default_handler) { unsigned i; - unsigned orig_size ; + unsigned orig_size; if (!cheat_manager_state.cheats) { cheat_manager_state.cheats = (struct item_cheat*) calloc(new_size, sizeof(struct item_cheat)); - orig_size = 0 ; + orig_size = 0; } else { - orig_size = cheat_manager_state.size ; + orig_size = cheat_manager_state.size; /* if size is decreasing, free the items that will be lost */ for (i = new_size; i < orig_size; i++) { if ( cheat_manager_state.cheats[i].code != NULL ) - free(cheat_manager_state.cheats[i].code) ; + free(cheat_manager_state.cheats[i].code); if ( cheat_manager_state.cheats[i].desc != NULL ) - free(cheat_manager_state.cheats[i].desc) ; + free(cheat_manager_state.cheats[i].desc); } cheat_manager_state.cheats = (struct item_cheat*) @@ -512,14 +508,14 @@ bool cheat_manager_realloc(unsigned new_size, unsigned default_handler) for (i = orig_size; i < cheat_manager_state.size; i++) { - memset(&(cheat_manager_state.cheats[i]), 0, sizeof(cheat_manager_state.cheats[i])) ; - cheat_manager_state.cheats[i].state = false; - cheat_manager_state.cheats[i].handler = default_handler; - cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE ; - cheat_manager_state.cheats[i].memory_search_size = 3; - cheat_manager_state.cheats[i].idx = i; - cheat_manager_state.cheats[i].repeat_count = 1; - cheat_manager_state.cheats[i].repeat_add_to_value = 0; + memset(&(cheat_manager_state.cheats[i]), 0, sizeof(cheat_manager_state.cheats[i])); + cheat_manager_state.cheats[i].state = false; + cheat_manager_state.cheats[i].handler = default_handler; + cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE; + cheat_manager_state.cheats[i].memory_search_size = 3; + cheat_manager_state.cheats[i].idx = i; + cheat_manager_state.cheats[i].repeat_count = 1; + cheat_manager_state.cheats[i].repeat_add_to_value = 0; cheat_manager_state.cheats[i].repeat_add_to_address = 1; } @@ -528,37 +524,37 @@ bool cheat_manager_realloc(unsigned new_size, unsigned default_handler) void cheat_manager_free(void) { - unsigned i = 0 ; + unsigned i = 0; if (cheat_manager_state.cheats) { for (i = 0; i < cheat_manager_state.size; i++) { if ( cheat_manager_state.cheats[i].desc != NULL ) - free(cheat_manager_state.cheats[i].desc) ; + free(cheat_manager_state.cheats[i].desc); if ( cheat_manager_state.cheats[i].code != NULL ) - free(cheat_manager_state.cheats[i].code) ; + free(cheat_manager_state.cheats[i].code); } free(cheat_manager_state.cheats); } if ( cheat_manager_state.prev_memory_buf ) - free(cheat_manager_state.prev_memory_buf) ; + free(cheat_manager_state.prev_memory_buf); if ( cheat_manager_state.matches ) - free(cheat_manager_state.matches) ; + free(cheat_manager_state.matches); - cheat_manager_state.cheats = NULL ; - cheat_manager_state.size = 0 ; - cheat_manager_state.buf_size = 0 ; - cheat_manager_state.prev_memory_buf = NULL ; - cheat_manager_state.curr_memory_buf = NULL ; - cheat_manager_state.matches = NULL ; - cheat_manager_state.total_memory_size = 0 ; - cheat_manager_state.actual_memory_size = 0 ; - cheat_manager_state.memory_initialized = false ; - cheat_manager_state.memory_search_initialized = false ; + cheat_manager_state.cheats = NULL; + cheat_manager_state.size = 0; + cheat_manager_state.buf_size = 0; + cheat_manager_state.prev_memory_buf = NULL; + cheat_manager_state.curr_memory_buf = NULL; + cheat_manager_state.matches = NULL; + cheat_manager_state.total_memory_size = 0; + cheat_manager_state.actual_memory_size = 0; + cheat_manager_state.memory_initialized = false; + cheat_manager_state.memory_search_initialized = false; } @@ -588,7 +584,7 @@ void cheat_manager_toggle_index(unsigned i) cheat_manager_update(&cheat_manager_state, i); if (!settings) - return ; + return; if (settings->bools.apply_cheats_after_toggle) cheat_manager_apply_cheats(); @@ -657,18 +653,17 @@ bool cheat_manager_get_game_specific_filename(char * cheat_filename, size_t max_ struct retro_system_info system_info; if (!settings || !global || !cheat_filename) - return false ; + return false; if ( !core_get_system_info(&system_info) ) - return false ; - + return false; core_name = system_info.library_name; game_name = path_basename(global->name.cheatfile); if ( string_is_empty(settings->paths.path_cheat_database) || string_is_empty(core_name) || string_is_empty(game_name) ) - return false ; + return false; cheat_filename[0] = '\0'; strlcat(cheat_filename, settings->paths.path_cheat_database, max_length); @@ -681,23 +676,23 @@ bool cheat_manager_get_game_specific_filename(char * cheat_filename, size_t max_ strlcat(cheat_filename, game_name, max_length); - return true ; + return true; } void cheat_manager_load_game_specific_cheats() { - char cheat_file[PATH_MAX_LENGTH] ; + char cheat_file[PATH_MAX_LENGTH]; if (cheat_manager_get_game_specific_filename(cheat_file, PATH_MAX_LENGTH) ) - cheat_manager_load(cheat_file,true) ; + cheat_manager_load(cheat_file,true); } void cheat_manager_save_game_specific_cheats() { - char cheat_file[PATH_MAX_LENGTH] ; + char cheat_file[PATH_MAX_LENGTH]; if (cheat_manager_get_game_specific_filename(cheat_file, PATH_MAX_LENGTH) ) - cheat_manager_save(cheat_file, NULL, true) ; + cheat_manager_save(cheat_file, NULL, true); } @@ -708,11 +703,8 @@ void cheat_manager_state_free(void) bool cheat_manager_alloc_if_empty(void) { - if (!cheat_manager_state.cheats) - { cheat_manager_new(0); - } return true; } @@ -731,9 +723,8 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) } if ( meminfo.size == 0 ) - { - return 0 ; - } + return 0; + cheat_manager_state.actual_memory_size = (unsigned)meminfo.size; cheat_manager_state.curr_memory_buf = meminfo.data; cheat_manager_state.total_memory_size = (unsigned)meminfo.size; @@ -787,84 +778,84 @@ static void cheat_manager_setup_search_meta(unsigned int bitsize, unsigned int * { case 0 : { - *bytes_per_item = 1 ; - *bits = 1 ; - *mask = 0x01 ; - break ; + *bytes_per_item = 1; + *bits = 1; + *mask = 0x01; + break; } case 1 : { - *bytes_per_item = 1 ; - *bits = 2 ; - *mask = 0x03 ; - break ; + *bytes_per_item = 1; + *bits = 2; + *mask = 0x03; + break; } case 2 : { - *bytes_per_item = 1 ; - *bits = 4 ; - *mask = 0x0F ; - break ; + *bytes_per_item = 1; + *bits = 4; + *mask = 0x0F; + break; } case 3 : { - *bytes_per_item = 1 ; - *bits = 8 ; - *mask = 0xFF ; - break ; + *bytes_per_item = 1; + *bits = 8; + *mask = 0xFF; + break; } case 4 : { - *bytes_per_item = 2 ; - *bits = 8 ; - *mask = 0xFFFF ; - break ; + *bytes_per_item = 2; + *bits = 8; + *mask = 0xFFFF; + break; } case 5 : { - *bytes_per_item = 4 ; - *bits = 8 ; - *mask = 0xFFFFFFFF ; - break ; + *bytes_per_item = 4; + *bits = 8; + *mask = 0xFFFFFFFF; + break; } } } int cheat_manager_search_exact(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EXACT) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_EXACT); } int cheat_manager_search_lt(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_LT) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_LT); } int cheat_manager_search_gt(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_GT) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_GT); } int cheat_manager_search_lte(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_LTE) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_LTE); } int cheat_manager_search_gte(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_GTE) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_GTE); } int cheat_manager_search_eq(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EQ) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_EQ); } int cheat_manager_search_neq(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_NEQ) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_NEQ); } int cheat_manager_search_eqplus(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EQPLUS) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_EQPLUS); } int cheat_manager_search_eqminus(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EQMINUS) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_EQMINUS); } int cheat_manager_search(enum cheat_search_type search_type) @@ -883,14 +874,14 @@ int cheat_manager_search(enum cheat_search_type search_type) if (!cheat_manager_state.curr_memory_buf) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_NOT_INITIALIZED), 1, 180, true); - return 0 ; + return 0; } - cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits) ; + cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits); /* little endian FF000000 = 256 */ - for (idx = 0 ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item) + for (idx = 0; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) { unsigned byte_part; @@ -900,73 +891,73 @@ int cheat_manager_search(enum cheat_search_type search_type) { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256) ; + *(curr+idx) + (*(curr+idx+1)*256); prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256) + *(prev+idx+1) : - *(prev+idx) + (*(prev+idx+1)*256) ; - break ; + *(prev+idx) + (*(prev+idx+1)*256); + break; } case 4 : { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256*256*256) + (*(prev+idx+1)*256*256) + (*(prev+idx+2)*256) + *(prev+idx+3) : - *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256) ; - break ; + *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256); + break; } case 1 : default : { - curr_val = *(curr+idx) ; - prev_val = *(prev+idx) ; - break ; + curr_val = *(curr+idx); + prev_val = *(prev+idx); + break; } } - for (byte_part = 0 ; byte_part < 8/bits ; byte_part++) + for (byte_part = 0; byte_part < 8/bits; byte_part++) { - unsigned int curr_subval = (curr_val >> (byte_part*bits) ) & mask ; - unsigned int prev_subval = (prev_val >> (byte_part*bits) ) & mask ; - unsigned int prev_match ; + unsigned int curr_subval = (curr_val >> (byte_part*bits) ) & mask; + unsigned int prev_subval = (prev_val >> (byte_part*bits) ) & mask; + unsigned int prev_match; if (bits < 8 ) - prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; + prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)); else - prev_match = *(cheat_manager_state.matches+idx) ; + prev_match = *(cheat_manager_state.matches+idx); if (prev_match > 0) { - bool match = false ; + bool match = false; switch (search_type) { case CHEAT_SEARCH_TYPE_EXACT : - match = ( curr_subval == cheat_manager_state.search_exact_value) ; + match = ( curr_subval == cheat_manager_state.search_exact_value); break; case CHEAT_SEARCH_TYPE_LT : - match = ( curr_subval < prev_subval) ; + match = ( curr_subval < prev_subval); break; case CHEAT_SEARCH_TYPE_GT : - match = ( curr_subval > prev_subval) ; + match = ( curr_subval > prev_subval); break; case CHEAT_SEARCH_TYPE_LTE : - match = ( curr_subval <= prev_subval) ; + match = ( curr_subval <= prev_subval); break; case CHEAT_SEARCH_TYPE_GTE : - match = ( curr_subval >= prev_subval) ; + match = ( curr_subval >= prev_subval); break; case CHEAT_SEARCH_TYPE_EQ : - match = ( curr_subval == prev_subval) ; + match = ( curr_subval == prev_subval); break; case CHEAT_SEARCH_TYPE_NEQ : - match = ( curr_subval != prev_subval) ; + match = ( curr_subval != prev_subval); break; case CHEAT_SEARCH_TYPE_EQPLUS : - match = ( curr_subval == prev_subval+cheat_manager_state.search_eqplus_value) ; + match = ( curr_subval == prev_subval+cheat_manager_state.search_eqplus_value); break; case CHEAT_SEARCH_TYPE_EQMINUS : - match = ( curr_subval == prev_subval-cheat_manager_state.search_eqminus_value) ; + match = ( curr_subval == prev_subval-cheat_manager_state.search_eqminus_value); break; } if (!match ) @@ -975,9 +966,9 @@ int cheat_manager_search(enum cheat_search_type search_type) *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & (( ~(mask << (byte_part*bits))) & 0xFF ); else - memset(cheat_manager_state.matches+idx,0,bytes_per_item) ; + memset(cheat_manager_state.matches+idx,0,bytes_per_item); if ( cheat_manager_state.num_matches > 0 ) - cheat_manager_state.num_matches-- ; + cheat_manager_state.num_matches--; } } } @@ -985,7 +976,7 @@ int cheat_manager_search(enum cheat_search_type search_type) memcpy(cheat_manager_state.prev_memory_buf, cheat_manager_state.curr_memory_buf, cheat_manager_state.actual_memory_size); - snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_FOUND_MATCHES), cheat_manager_state.num_matches) ; + snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_FOUND_MATCHES), cheat_manager_state.num_matches); msg[sizeof(msg) - 1] = 0; runloop_msg_queue_push(msg, 1, 180, true); @@ -994,7 +985,7 @@ int cheat_manager_search(enum cheat_search_type search_type) menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); #endif - return 0 ; + return 0; } bool cheat_manager_add_new_code(unsigned int memory_search_size, unsigned int address, unsigned int address_mask, @@ -1003,15 +994,15 @@ bool cheat_manager_add_new_code(unsigned int memory_search_size, unsigned int ad int new_size = cheat_manager_get_size() + 1; if ( !cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_RETRO) ) - return false ; + return false; - cheat_manager_state.cheats[cheat_manager_state.size-1].address = address ; - cheat_manager_state.cheats[cheat_manager_state.size-1].address_mask = address_mask ; - cheat_manager_state.cheats[cheat_manager_state.size-1].memory_search_size = memory_search_size ; - cheat_manager_state.cheats[cheat_manager_state.size-1].value = value ; - cheat_manager_state.cheats[cheat_manager_state.size-1].big_endian = big_endian ; + cheat_manager_state.cheats[cheat_manager_state.size-1].address = address; + cheat_manager_state.cheats[cheat_manager_state.size-1].address_mask = address_mask; + cheat_manager_state.cheats[cheat_manager_state.size-1].memory_search_size = memory_search_size; + cheat_manager_state.cheats[cheat_manager_state.size-1].value = value; + cheat_manager_state.cheats[cheat_manager_state.size-1].big_endian = big_endian; - return true ; + return true; } int cheat_manager_add_matches(const char *path, const char *label, unsigned type, size_t menuidx, size_t entry_idx) @@ -1030,66 +1021,66 @@ int cheat_manager_add_matches(const char *path, if ( cheat_manager_state.num_matches + cheat_manager_state.size > 100 ) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_TOO_MANY), 1, 180, true); - return 0 ; + return 0; } - cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits) ; + cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits); - for (idx = 0 ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item) + for (idx = 0; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) { switch ( bytes_per_item ) { case 2 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256) ; - break ; + *(curr+idx) + (*(curr+idx+1)*256); + break; case 4 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; - break ; + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); + break; case 1 : default : - curr_val = *(curr+idx) ; - break ; + curr_val = *(curr+idx); + break; } - for (byte_part = 0 ; byte_part < 8/bits ; byte_part++) + for (byte_part = 0; byte_part < 8/bits; byte_part++) { unsigned int prev_match; if (bits < 8 ) { - prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; + prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)); if (prev_match) { if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, (mask << (byte_part*bits)), cheat_manager_state.big_endian, curr_val) ) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL), 1, 180, true); - return 0 ; + return 0; } - num_added++ ; + num_added++; } } else { - prev_match = *(cheat_manager_state.matches+idx) ; + prev_match = *(cheat_manager_state.matches+idx); if (prev_match) { if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF, cheat_manager_state.big_endian, curr_val)) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL), 1, 180, true); - return 0 ; + return 0; } - num_added++ ; + num_added++; } } } } - snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_SUCCESS), cheat_manager_state.num_matches) ; + snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_SUCCESS), cheat_manager_state.num_matches); msg[sizeof(msg) - 1] = 0; runloop_msg_queue_push(msg, 1, 180, true); @@ -1111,38 +1102,38 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu case RUMBLE_TYPE_DISABLED: return; case RUMBLE_TYPE_CHANGES: - rumble = (curr_value != cheat->rumble_prev_value) ; - break ; + rumble = (curr_value != cheat->rumble_prev_value); + break; case RUMBLE_TYPE_DOES_NOT_CHANGE: - rumble = (curr_value == cheat->rumble_prev_value) ; - break ; + rumble = (curr_value == cheat->rumble_prev_value); + break; case RUMBLE_TYPE_INCREASE: - rumble = (curr_value > cheat->rumble_prev_value) ; - break ; + rumble = (curr_value > cheat->rumble_prev_value); + break; case RUMBLE_TYPE_DECREASE: - rumble = (curr_value < cheat->rumble_prev_value) ; - break ; + rumble = (curr_value < cheat->rumble_prev_value); + break; case RUMBLE_TYPE_EQ_VALUE: - rumble = (curr_value == cheat->rumble_value) ; - break ; + rumble = (curr_value == cheat->rumble_value); + break; case RUMBLE_TYPE_NEQ_VALUE: - rumble = (curr_value != cheat->rumble_value) ; - break ; + rumble = (curr_value != cheat->rumble_value); + break; case RUMBLE_TYPE_LT_VALUE: - rumble = (curr_value < cheat->rumble_value) ; - break ; + rumble = (curr_value < cheat->rumble_value); + break; case RUMBLE_TYPE_GT_VALUE: - rumble = (curr_value > cheat->rumble_value) ; + rumble = (curr_value > cheat->rumble_value); break; case RUMBLE_TYPE_INCREASE_BY_VALUE: - rumble = (curr_value == cheat->rumble_prev_value + cheat->rumble_value) ; - break ; + rumble = (curr_value == cheat->rumble_prev_value + cheat->rumble_value); + break; case RUMBLE_TYPE_DECREASE_BY_VALUE: - rumble = (curr_value == cheat->rumble_prev_value - cheat->rumble_value) ; - break ; + rumble = (curr_value == cheat->rumble_prev_value - cheat->rumble_value); + break; } - cheat->rumble_prev_value = curr_value ; + cheat->rumble_prev_value = curr_value; /* Give the emulator enough time * to initialize, load state, etc */ @@ -1150,15 +1141,15 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu { if (rumble) { - cheat->rumble_primary_end_time = cpu_features_get_time_usec() + (cheat->rumble_primary_duration*1000) ; - cheat->rumble_secondary_end_time = cpu_features_get_time_usec() + (cheat->rumble_secondary_duration*1000) ; + cheat->rumble_primary_end_time = cpu_features_get_time_usec() + (cheat->rumble_primary_duration*1000); + cheat->rumble_secondary_end_time = cpu_features_get_time_usec() + (cheat->rumble_secondary_duration*1000); input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_STRONG, cheat->rumble_primary_strength); input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_WEAK, cheat->rumble_secondary_strength); } } else { - cheat->rumble_initialized++ ; + cheat->rumble_initialized++; return; } @@ -1177,7 +1168,7 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu { if (cheat->rumble_secondary_end_time != 0) input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_WEAK, 0); - cheat->rumble_secondary_end_time = 0 ; + cheat->rumble_secondary_end_time = 0; } else { @@ -1197,19 +1188,19 @@ void cheat_manager_apply_retro_cheats(void) if ((!cheat_manager_state.cheats)) return; - for (i = 0 ; i < cheat_manager_state.size ; i++ ) + for (i = 0; i < cheat_manager_state.size; i++ ) { unsigned char *curr; unsigned int idx; bool set_value = false; unsigned int value_to_set = 0; - unsigned int repeat_iter = 0 ; - unsigned int address_mask = cheat_manager_state.cheats[i].address_mask ; + unsigned int repeat_iter = 0; + unsigned int address_mask = cheat_manager_state.cheats[i].address_mask; if (cheat_manager_state.cheats[i].handler != CHEAT_HANDLER_TYPE_RETRO || !cheat_manager_state.cheats[i].state) - continue ; + continue; if (!cheat_manager_state.memory_initialized) - cheat_manager_initialize_memory(NULL, false) ; + cheat_manager_initialize_memory(NULL, false); /* If we're still not initialized, something * must have gone wrong - just bail */ @@ -1218,13 +1209,13 @@ void cheat_manager_apply_retro_cheats(void) if (!run_cheat) { - run_cheat = true ; - continue ; + run_cheat = true; + continue; } - cheat_manager_setup_search_meta(cheat_manager_state.cheats[i].memory_search_size, &bytes_per_item, &mask, &bits) ; + cheat_manager_setup_search_meta(cheat_manager_state.cheats[i].memory_search_size, &bytes_per_item, &mask, &bits); - curr = cheat_manager_state.curr_memory_buf ; - idx = cheat_manager_state.cheats[i].address ; + curr = cheat_manager_state.curr_memory_buf; + idx = cheat_manager_state.cheats[i].address; switch (bytes_per_item) { @@ -1232,142 +1223,142 @@ void cheat_manager_apply_retro_cheats(void) { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256) ; - break ; + *(curr+idx) + (*(curr+idx+1)*256); + break; } case 4 : { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; - break ; + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); + break; } case 1 : default : { - curr_val = *(curr+idx) ; - break ; + curr_val = *(curr+idx); + break; } } - cheat_manager_apply_rumble(&cheat_manager_state.cheats[i], curr_val) ; + cheat_manager_apply_rumble(&cheat_manager_state.cheats[i], curr_val); switch (cheat_manager_state.cheats[i].cheat_type ) { case CHEAT_TYPE_SET_TO_VALUE : - set_value = true ; - value_to_set = cheat_manager_state.cheats[i].value ; - break ; + set_value = true; + value_to_set = cheat_manager_state.cheats[i].value; + break; case CHEAT_TYPE_INCREASE_VALUE: - set_value = true ; - value_to_set = curr_val + cheat_manager_state.cheats[i].value ; + set_value = true; + value_to_set = curr_val + cheat_manager_state.cheats[i].value; break; case CHEAT_TYPE_DECREASE_VALUE: - set_value = true ; - value_to_set = curr_val - cheat_manager_state.cheats[i].value ; + set_value = true; + value_to_set = curr_val - cheat_manager_state.cheats[i].value; break; case CHEAT_TYPE_RUN_NEXT_IF_EQ: if (!(curr_val == cheat_manager_state.cheats[i].value)) - run_cheat = false ; + run_cheat = false; break; case CHEAT_TYPE_RUN_NEXT_IF_NEQ: if (!(curr_val != cheat_manager_state.cheats[i].value )) - run_cheat = false ; + run_cheat = false; break; case CHEAT_TYPE_RUN_NEXT_IF_LT: if (!(cheat_manager_state.cheats[i].value < curr_val)) - run_cheat = false ; + run_cheat = false; break; case CHEAT_TYPE_RUN_NEXT_IF_GT: if (!(cheat_manager_state.cheats[i].value > curr_val)) - run_cheat = false ; + run_cheat = false; break; } if (set_value) { - for ( repeat_iter = 1 ; repeat_iter <= cheat_manager_state.cheats[i].repeat_count ; repeat_iter++) + for ( repeat_iter = 1; repeat_iter <= cheat_manager_state.cheats[i].repeat_count; repeat_iter++) { switch (bytes_per_item) { case 2 : if (cheat_manager_state.cheats[i].big_endian) { - *(curr+idx) = (value_to_set >> 8) & 0xFF ; - *(curr+idx+1) = value_to_set & 0xFF ; + *(curr+idx) = (value_to_set >> 8) & 0xFF; + *(curr+idx+1) = value_to_set & 0xFF; } else { - *(curr+idx) = value_to_set & 0xFF ; - *(curr+idx+1) = (value_to_set >> 8) & 0xFF ; + *(curr+idx) = value_to_set & 0xFF; + *(curr+idx+1) = (value_to_set >> 8) & 0xFF; } - break ; + break; case 4 : if (cheat_manager_state.cheats[i].big_endian) { - *(curr+idx) = (value_to_set >> 24) & 0xFF ; - *(curr+idx+1) = (value_to_set >> 16) & 0xFF ; - *(curr+idx+2) = (value_to_set >> 8) & 0xFF ; - *(curr+idx+3) = value_to_set & 0xFF ; + *(curr+idx) = (value_to_set >> 24) & 0xFF; + *(curr+idx+1) = (value_to_set >> 16) & 0xFF; + *(curr+idx+2) = (value_to_set >> 8) & 0xFF; + *(curr+idx+3) = value_to_set & 0xFF; } else { - *(curr+idx) = value_to_set & 0xFF ; - *(curr+idx+1) = (value_to_set >> 8) & 0xFF ; - *(curr+idx+2) = (value_to_set >> 16) & 0xFF ; - *(curr+idx+3) = (value_to_set >> 24) & 0xFF ; + *(curr+idx) = value_to_set & 0xFF; + *(curr+idx+1) = (value_to_set >> 8) & 0xFF; + *(curr+idx+2) = (value_to_set >> 16) & 0xFF; + *(curr+idx+3) = (value_to_set >> 24) & 0xFF; } - break ; + break; case 1 : if (bits < 8) { unsigned bitpos; unsigned char val = *(curr+idx); - for (bitpos = 0 ; bitpos < 8 ; bitpos++) + for (bitpos = 0; bitpos < 8; bitpos++) { if ((address_mask>>bitpos)&0x01 ) { - mask = (~(1<>bitpos)&0x01)<>bitpos)&0x01)< cheat_manager_state.num_matches-1) @@ -1396,57 +1387,57 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits); if (match_action == CHEAT_MATCH_ACTION_TYPE_BROWSE) - start_idx = *address ; + start_idx = *address; else - start_idx = 0 ; + start_idx = 0; - for (idx = start_idx ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item) + for (idx = start_idx; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) { switch (bytes_per_item ) { case 2 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256) ; + *(curr+idx) + (*(curr+idx+1)*256); if (prev != NULL) prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256) + *(prev+idx+1) : - *(prev+idx) + (*(prev+idx+1)*256) ; - break ; + *(prev+idx) + (*(prev+idx+1)*256); + break; case 4 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); if (prev != NULL) prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256*256*256) + (*(prev+idx+1)*256*256) + (*(prev+idx+2)*256) + *(prev+idx+3) : - *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256) ; - break ; + *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256); + break; case 1 : default : - curr_val = *(curr+idx) ; + curr_val = *(curr+idx); if (prev != NULL) - prev_val = *(prev+idx) ; - break ; + prev_val = *(prev+idx); + break; } if (match_action == CHEAT_MATCH_ACTION_TYPE_BROWSE) { *curr_value = curr_val; *prev_value = prev_val; - return ; + return; } if (!prev) return; - for (byte_part = 0 ; byte_part < 8/bits ; byte_part++) + for (byte_part = 0; byte_part < 8/bits; byte_part++) { - unsigned int prev_match ; + unsigned int prev_match; if (bits < 8 ) { - prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; + prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)); if (prev_match) { if (target_match_idx == curr_match_idx) @@ -1454,12 +1445,12 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig switch (match_action) { case CHEAT_MATCH_ACTION_TYPE_BROWSE : - return ; + return; case CHEAT_MATCH_ACTION_TYPE_VIEW : - *address = idx ; - *address_mask = (mask << (byte_part*bits)) ; - *curr_value = curr_val ; - *prev_value = prev_val ; + *address = idx; + *address_mask = (mask << (byte_part*bits)); + *curr_value = curr_val; + *prev_value = prev_val; return; case CHEAT_MATCH_ACTION_TYPE_COPY : if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, (mask << (byte_part*bits)), @@ -1467,26 +1458,26 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_FAIL), 1, 180, true); else runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS), 1, 180, true); - return ; + return; case CHEAT_MATCH_ACTION_TYPE_DELETE : if (bits < 8) *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & (( ~(mask << (byte_part*bits))) & 0xFF ); else - memset(cheat_manager_state.matches+idx,0,bytes_per_item) ; + memset(cheat_manager_state.matches+idx,0,bytes_per_item); if ( cheat_manager_state.num_matches > 0 ) - cheat_manager_state.num_matches-- ; + cheat_manager_state.num_matches--; runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS), 1, 180, true); return; } return; } - curr_match_idx++ ; + curr_match_idx++; } } else { - prev_match = *(cheat_manager_state.matches+idx) ; + prev_match = *(cheat_manager_state.matches+idx); if (prev_match) { if (target_match_idx == curr_match_idx) @@ -1494,33 +1485,33 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig switch (match_action) { case CHEAT_MATCH_ACTION_TYPE_BROWSE : - return ; + return; case CHEAT_MATCH_ACTION_TYPE_VIEW : - *address = idx ; - *address_mask = 0xFF ; - *curr_value = curr_val ; - *prev_value = prev_val ; - return ; + *address = idx; + *address_mask = 0xFF; + *curr_value = curr_val; + *prev_value = prev_val; + return; case CHEAT_MATCH_ACTION_TYPE_COPY : if ( !cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF, cheat_manager_state.big_endian, curr_val) ) runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_FAIL), 1, 180, true); else runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS), 1, 180, true); - return ; + return; case CHEAT_MATCH_ACTION_TYPE_DELETE : if ( bits < 8 ) *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & (( ~(mask << (byte_part*bits))) & 0xFF ); else - memset(cheat_manager_state.matches+idx,0,bytes_per_item) ; + memset(cheat_manager_state.matches+idx,0,bytes_per_item); if ( cheat_manager_state.num_matches > 0 ) - cheat_manager_state.num_matches-- ; + cheat_manager_state.num_matches--; runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS), 1, 180, true); - return ; + return; } } - curr_match_idx++ ; + curr_match_idx++; } } @@ -1530,8 +1521,8 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig int cheat_manager_copy_match(rarch_setting_t *setting, bool wraparound) { cheat_manager_match_action(CHEAT_MATCH_ACTION_TYPE_COPY, - cheat_manager_state.match_idx, NULL, NULL, NULL, NULL) ; - return 0 ; + cheat_manager_state.match_idx, NULL, NULL, NULL, NULL); + return 0; } int cheat_manager_delete_match(rarch_setting_t *setting, bool wraparound) From 230a7fd7b023bc9cdee86251b37b726eb884441a Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Wed, 10 Oct 2018 10:59:28 -0400 Subject: [PATCH 005/304] Win95 buildfix --- menu/drivers_display/menu_display_gdi.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/menu/drivers_display/menu_display_gdi.c b/menu/drivers_display/menu_display_gdi.c index 1c5b6e0a6e..e4b2f1f746 100644 --- a/menu/drivers_display/menu_display_gdi.c +++ b/menu/drivers_display/menu_display_gdi.c @@ -70,7 +70,9 @@ static void menu_display_gdi_draw(menu_display_ctx_draw_t *draw, if (gdi->memDC) { +#if _WIN32_WINNT >= 0x0410 /* Win98 */ BLENDFUNCTION blend = {0}; +#endif if (!gdi->texDC) gdi->texDC = CreateCompatibleDC(gdi->winDC); @@ -90,17 +92,20 @@ static void menu_display_gdi_draw(menu_display_ctx_draw_t *draw, gdi->bmp_old = SelectObject(gdi->memDC, gdi->bmp); +#if _WIN32_WINNT >= 0x0410 /* Win98 */ blend.BlendOp = AC_SRC_OVER; blend.BlendFlags = 0; blend.SourceConstantAlpha = 255;/*clamp_8bit(draw->coords->color[3] * 255.0f);*/ blend.AlphaFormat = AC_SRC_ALPHA; + /* AlphaBlend() is only available since Win98 */ AlphaBlend(gdi->memDC, draw->x, video_info->height - draw->height - draw->y, draw->width, draw->height, gdi->texDC, 0, 0, draw->width, draw->height, blend); - /*TransparentBlt(gdi->memDC, draw->x, video_info->height - draw->height - draw->y, draw->width, draw->height, gdi->texDC, 0, 0, draw->width, draw->height, 0);*/ +#else + /* Just draw without the blending */ + StretchBlt(gdi->memDC, draw->x, video_info->height - draw->height - draw->y, draw->width, draw->height, gdi->texDC, 0, 0, draw->width, draw->height, SRCCOPY); - /* To draw without blending: */ - /*StretchBlt(gdi->memDC, draw->x, video_info->height - draw->height - draw->y, draw->width, draw->height, gdi->texDC, 0, 0, draw->width, draw->height, SRCCOPY);*/ +#endif SelectObject(gdi->memDC, gdi->bmp_old); SelectObject(gdi->texDC, texture->bmp_old); From 4c3b06d64039c8cedd0a671d335783dc0a6fc288 Mon Sep 17 00:00:00 2001 From: Sven <40953353+RetroSven@users.noreply.github.com> Date: Wed, 10 Oct 2018 11:10:49 -0400 Subject: [PATCH 006/304] bugfix cheat saving --- libretro-common/file/config_file.c | 7 ++++++- libretro-common/include/file/config_file.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libretro-common/file/config_file.c b/libretro-common/file/config_file.c index 7dd671b662..846fa2c6fc 100644 --- a/libretro-common/file/config_file.c +++ b/libretro-common/file/config_file.c @@ -406,6 +406,7 @@ static config_file_t *config_file_new_internal( conf->path = NULL; conf->entries = NULL; conf->tail = NULL; + conf->last = NULL; conf->includes = NULL; conf->include_depth = 0; conf->guaranteed_no_duplicates = false ; @@ -558,6 +559,7 @@ config_file_t *config_file_new_from_string(const char *from_string) conf->path = NULL; conf->entries = NULL; conf->tail = NULL; + conf->last = NULL; conf->includes = NULL; conf->include_depth = 0; conf->guaranteed_no_duplicates = false ; @@ -842,7 +844,7 @@ bool config_get_bool(config_file_t *conf, const char *key, bool *in) void config_set_string(config_file_t *conf, const char *key, const char *val) { - struct config_entry_list *last = conf->entries; + struct config_entry_list *last = (conf->guaranteed_no_duplicates && conf->last) ? conf->last : conf->entries; struct config_entry_list *entry = conf->guaranteed_no_duplicates?NULL:config_get_entry(conf, key, &last); if (entry && !entry->readonly) @@ -868,6 +870,9 @@ void config_set_string(config_file_t *conf, const char *key, const char *val) last->next = entry; else conf->entries = entry; + + conf->last = entry ; + } void config_unset(config_file_t *conf, const char *key) diff --git a/libretro-common/include/file/config_file.h b/libretro-common/include/file/config_file.h index e55430472d..d2d5b026f7 100644 --- a/libretro-common/include/file/config_file.h +++ b/libretro-common/include/file/config_file.h @@ -57,6 +57,7 @@ struct config_file char *path; struct config_entry_list *entries; struct config_entry_list *tail; + struct config_entry_list *last; unsigned include_depth; bool guaranteed_no_duplicates; From b61c67b5c68e6a5ecd733c34a2a91e03cb5e1166 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 10 Oct 2018 17:17:02 +0200 Subject: [PATCH 007/304] Don't have GDI fallback to rgui --- configuration.c | 1 + 1 file changed, 1 insertion(+) diff --git a/configuration.c b/configuration.c index 4759929212..118fe20bef 100644 --- a/configuration.c +++ b/configuration.c @@ -2357,6 +2357,7 @@ static bool check_menu_driver_compatibility(void) string_is_equal(video_driver, "d3d10") || string_is_equal(video_driver, "d3d11") || string_is_equal(video_driver, "d3d12") || + string_is_equal(video_driver, "gdi") || string_is_equal(video_driver, "gl") || string_is_equal(video_driver, "gx2") || string_is_equal(video_driver, "vulkan") || From c3c169aeabd1f4a7010f698a251018f06cbaca8d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 10 Oct 2018 18:08:13 +0200 Subject: [PATCH 008/304] Add this --- gfx/drivers/gl.c | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 09c6e826f0..7db576af99 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -1788,28 +1788,37 @@ static void *gl_init(const video_info_t *video, hwr = video_driver_get_hw_context(); +#ifdef GL_CONTEXT_PROFILE_MASK if (hwr->context_type == RETRO_HW_CONTEXT_OPENGL_CORE) { - gfx_ctx_flags_t flags; + /* Check if we have a core context */ + GLint gl_flags = 0; + glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &gl_flags); - gl_query_core_context_set(true); - gl->core_context_in_use = true; - - /** - * Ensure that the rest of the frontend knows we have a core context - */ - flags.flags = 0; - BIT32_SET(flags.flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT); - - video_context_driver_set_flags(&flags); - - RARCH_LOG("[GL]: Using Core GL context, setting up VAO...\n"); - if (!gl_check_capability(GL_CAPS_VAO)) + if (gl_flags & GL_CONTEXT_CORE_PROFILE_BIT) { - RARCH_ERR("[GL]: Failed to initialize VAOs.\n"); - goto error; + gfx_ctx_flags_t flags; + + gl_query_core_context_set(true); + gl->core_context_in_use = true; + + /** + * Ensure that the rest of the frontend knows we have a core context + */ + flags.flags = 0; + BIT32_SET(flags.flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT); + + video_context_driver_set_flags(&flags); + + RARCH_LOG("[GL]: Using Core GL context, setting up VAO...\n"); + if (!gl_check_capability(GL_CAPS_VAO)) + { + RARCH_ERR("[GL]: Failed to initialize VAOs.\n"); + goto error; + } } } +#endif if (!renderchain_gl_init_first(&gl->renderchain_driver, &gl->renderchain_data)) From 5b4473b9489c6034fb88e78f6bf3775fa8448644 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 10 Oct 2018 18:24:41 +0200 Subject: [PATCH 009/304] Create gl_set_core_context --- dynamic.c | 16 ++++++++-------- gfx/common/gl_common.h | 18 ++++++++++++++++++ gfx/drivers/gl.c | 19 ++++++------------- 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/dynamic.c b/dynamic.c index 81a03dd2a1..e011d802fa 100644 --- a/dynamic.c +++ b/dynamic.c @@ -39,6 +39,10 @@ #include "cheevos/cheevos.h" #endif +#ifdef HAVE_OPENGL +#include "gfx/common/gl_common.h" +#endif + #ifdef HAVE_NETWORKING #include "network/netplay/netplay.h" #endif @@ -1368,14 +1372,10 @@ bool rarch_environment_cb(unsigned cmd, void *data) if (!dynamic_verify_hw_context(cb->context_type, cb->version_minor, cb->version_major)) return false; - if (cb->context_type == RETRO_HW_CONTEXT_OPENGL_CORE) - { - gfx_ctx_flags_t flags; - flags.flags = 0; - BIT32_SET(flags.flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT); - - video_context_driver_set_flags(&flags); - } +#if defined(HAVE_OPENGL) + if (!gl_set_core_context(cb->context_type)) + return false; +#endif cb->get_current_framebuffer = video_driver_get_current_framebuffer; cb->get_proc_address = video_driver_get_proc_address; diff --git a/gfx/common/gl_common.h b/gfx/common/gl_common.h index 41a52f2bd5..0f77410cd5 100644 --- a/gfx/common/gl_common.h +++ b/gfx/common/gl_common.h @@ -19,6 +19,7 @@ #include #include +#include #include #ifdef HAVE_CONFIG_H @@ -386,6 +387,23 @@ static INLINE GLenum gl_min_filter_to_mag(GLenum type) return type; } +static INLINE bool gl_set_core_context(enum retro_hw_context_type ctx_type) +{ + gfx_ctx_flags_t flags; + if (ctx_type != RETRO_HW_CONTEXT_OPENGL_CORE) + return false; + + /** + * Ensure that the rest of the frontend knows we have a core context + */ + flags.flags = 0; + BIT32_SET(flags.flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT); + + video_context_driver_set_flags(&flags); + + return true; +} + RETRO_END_DECLS #endif diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 7db576af99..8589a69c6e 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -1797,25 +1797,18 @@ static void *gl_init(const video_info_t *video, if (gl_flags & GL_CONTEXT_CORE_PROFILE_BIT) { - gfx_ctx_flags_t flags; - - gl_query_core_context_set(true); - gl->core_context_in_use = true; - - /** - * Ensure that the rest of the frontend knows we have a core context - */ - flags.flags = 0; - BIT32_SET(flags.flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT); - - video_context_driver_set_flags(&flags); - RARCH_LOG("[GL]: Using Core GL context, setting up VAO...\n"); if (!gl_check_capability(GL_CAPS_VAO)) { RARCH_ERR("[GL]: Failed to initialize VAOs.\n"); goto error; } + + if (gl_set_core_context(hwr->context_type)) + { + gl_query_core_context_set(true); + gl->core_context_in_use = true; + } } } #endif From c2112c4cbfec679b22db994d3b880e31994687f0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 10 Oct 2018 20:15:31 +0200 Subject: [PATCH 010/304] Commit this diff patch by gblues --- wiiu/include/sys/socket.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/wiiu/include/sys/socket.h b/wiiu/include/sys/socket.h index 3486f5130f..242e161c0e 100644 --- a/wiiu/include/sys/socket.h +++ b/wiiu/include/sys/socket.h @@ -28,6 +28,7 @@ extern "C" { /* return codes */ #define SO_SUCCESS 0 #define SO_EWOULDBLOCK 6 +#define SO_EINVAL 11 #define EWOULDBLOCK SO_EWOULDBLOCK #define EAGAIN SO_EWOULDBLOCK @@ -42,11 +43,10 @@ struct sockaddr char sa_data[]; }; -struct sockaddr_storage -{ - sa_family_t ss_family; - char __ss_padding[26]; -}; +/* Wii U only supports IPv4 so we make sockaddr_storage ++ be sockaddr_in for compatibility. ++ */ +#define sockaddr_storage sockaddr_in struct linger { From 192d1f6dd479135b6bdfb8775e1e855577f2cad0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 10 Oct 2018 20:17:33 +0200 Subject: [PATCH 011/304] Updates --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 6aaebd3bde..7a26574e83 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,6 +8,7 @@ - SCANNER: Fix GDI disc scanning. - SWITCH/LIBNX: Improve touch scaling calculation. - SWITCH: Proper button labels. +- WIIU: Initial netplay peer-to-peer support. # 1.7.5 - CAMERA: Fix Video4Linux2 driver that broke years ago. From d32b08b0f4cd0a6e8d63245c8a1801a435da3afc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 10 Oct 2018 20:31:55 +0200 Subject: [PATCH 012/304] Add split joycon settings --- configuration.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/configuration.c b/configuration.c index 118fe20bef..813ee6ca0d 100644 --- a/configuration.c +++ b/configuration.c @@ -1575,6 +1575,16 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, SETTING_UINT("dpi_override_value", &settings->uints.menu_dpi_override_value, true, menu_dpi_override_value, false); SETTING_UINT("menu_thumbnails", &settings->uints.menu_thumbnails, true, menu_thumbnails_default, false); SETTING_UINT("menu_timedate_style", &settings->uints.menu_timedate_style, true, menu_timedate_style, false); +#ifdef HAVE_LIBNX + SETTING_UINT("split_joycon_p1", &settings->uints.input_split_joycon[0], true, 0, false); + SETTING_UINT("split_joycon_p2", &settings->uints.input_split_joycon[1], true, 0, false); + SETTING_UINT("split_joycon_p3", &settings->uints.input_split_joycon[2], true, 0, false); + SETTING_UINT("split_joycon_p4", &settings->uints.input_split_joycon[3], true, 0, false); + SETTING_UINT("split_joycon_p5", &settings->uints.input_split_joycon[4], true, 0, false); + SETTING_UINT("split_joycon_p6", &settings->uints.input_split_joycon[5], true, 0, false); + SETTING_UINT("split_joycon_p7", &settings->uints.input_split_joycon[6], true, 0, false); + SETTING_UINT("split_joycon_p8", &settings->uints.input_split_joycon[7], true, 0, false); +#endif #ifdef HAVE_XMB SETTING_UINT("menu_left_thumbnails", &settings->uints.menu_left_thumbnails, true, menu_left_thumbnails_default, false); SETTING_UINT("xmb_alpha_factor", &settings->uints.menu_xmb_alpha_factor, true, xmb_alpha_factor, false); From d3f8d8a08df6961cec3a88f967dc6c221d833aee Mon Sep 17 00:00:00 2001 From: Nathan Strong Date: Wed, 10 Oct 2018 11:38:03 -0700 Subject: [PATCH 013/304] wiiu: small cleanup == DETAILS - remove extraneous '+' from a manually applied diff - fix the net_listen.sh script so it works properly on Mac OSX == TESTING Works locally. --- wiiu/include/sys/socket.h | 4 ++-- wiiu/net_listen.sh | 27 ++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/wiiu/include/sys/socket.h b/wiiu/include/sys/socket.h index 242e161c0e..322d6bb905 100644 --- a/wiiu/include/sys/socket.h +++ b/wiiu/include/sys/socket.h @@ -44,8 +44,8 @@ struct sockaddr }; /* Wii U only supports IPv4 so we make sockaddr_storage -+ be sockaddr_in for compatibility. -+ */ + be sockaddr_in for compatibility. + */ #define sockaddr_storage sockaddr_in struct linger diff --git a/wiiu/net_listen.sh b/wiiu/net_listen.sh index f023734305..ca121f4af2 100755 --- a/wiiu/net_listen.sh +++ b/wiiu/net_listen.sh @@ -6,7 +6,28 @@ # # If you would like a logfile, pipe this script's output to tee. -script_dir=$(dirname $(readlink -f $0)) +NETCAT= + +find_netcat() +{ + NETCAT=$(which netcat 2>/dev/null |grep '/') + if [ -z "$NETCAT" ]; then + NETCAT=$(which nc 2>/dev/null |grep '/') + if [ -z "$NETCAT" ]; then + echo "Failed to find either 'netcat' or 'nc'. Please install it." + exit 1 + fi + fi +} + +do_readlink() +{ + local exe=$1 + echo "$(cd $(dirname $exe) && pwd)" +} + +find_netcat +script_dir=$(do_readlink $0) IP=$(which ip 2>/dev/null | grep '^/') IFCONFIG=$(which ifconfig 2>/dev/null | grep '^/') @@ -54,8 +75,8 @@ echo "Listening for UDP packets on broadcast IP: $broadcast" while [ $exit_listen_loop -eq 0 ]; do echo ========= `date` ========= if [ -z "$TS" ]; then - netcat -kluw 0 $broadcast $PC_DEVELOPMENT_TCP_PORT + $NETCAT -kluw 0 $broadcast $PC_DEVELOPMENT_TCP_PORT else - netcat -kluw 0 $broadcast $PC_DEVELOPMENT_TCP_PORT |ts '[%Y-%m-%d %H:%M:%.S]' + $NETCAT -kluw 0 $broadcast $PC_DEVELOPMENT_TCP_PORT |ts '[%Y-%m-%d %H:%M:%.S]' fi done From 98625796106ea6453102b67ac4108b856ed3b9a3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 10 Oct 2018 23:26:18 +0200 Subject: [PATCH 014/304] Revert "bugfix cheat saving" This reverts commit 4c3b06d64039c8cedd0a671d335783dc0a6fc288. --- libretro-common/file/config_file.c | 7 +------ libretro-common/include/file/config_file.h | 1 - 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/libretro-common/file/config_file.c b/libretro-common/file/config_file.c index 846fa2c6fc..7dd671b662 100644 --- a/libretro-common/file/config_file.c +++ b/libretro-common/file/config_file.c @@ -406,7 +406,6 @@ static config_file_t *config_file_new_internal( conf->path = NULL; conf->entries = NULL; conf->tail = NULL; - conf->last = NULL; conf->includes = NULL; conf->include_depth = 0; conf->guaranteed_no_duplicates = false ; @@ -559,7 +558,6 @@ config_file_t *config_file_new_from_string(const char *from_string) conf->path = NULL; conf->entries = NULL; conf->tail = NULL; - conf->last = NULL; conf->includes = NULL; conf->include_depth = 0; conf->guaranteed_no_duplicates = false ; @@ -844,7 +842,7 @@ bool config_get_bool(config_file_t *conf, const char *key, bool *in) void config_set_string(config_file_t *conf, const char *key, const char *val) { - struct config_entry_list *last = (conf->guaranteed_no_duplicates && conf->last) ? conf->last : conf->entries; + struct config_entry_list *last = conf->entries; struct config_entry_list *entry = conf->guaranteed_no_duplicates?NULL:config_get_entry(conf, key, &last); if (entry && !entry->readonly) @@ -870,9 +868,6 @@ void config_set_string(config_file_t *conf, const char *key, const char *val) last->next = entry; else conf->entries = entry; - - conf->last = entry ; - } void config_unset(config_file_t *conf, const char *key) diff --git a/libretro-common/include/file/config_file.h b/libretro-common/include/file/config_file.h index d2d5b026f7..e55430472d 100644 --- a/libretro-common/include/file/config_file.h +++ b/libretro-common/include/file/config_file.h @@ -57,7 +57,6 @@ struct config_file char *path; struct config_entry_list *entries; struct config_entry_list *tail; - struct config_entry_list *last; unsigned include_depth; bool guaranteed_no_duplicates; From 7d0dba30071a6768448494435ce67400c509b7e5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 10 Oct 2018 23:34:16 +0200 Subject: [PATCH 015/304] Revert this - was getting crashes in both OSX and MSVC 2003 in config_file.c inside config_get_entry --- libretro-common/file/config_file.c | 49 +- libretro-common/include/file/config_file.h | 14 - managers/cheat_manager.c | 784 ++++++++++----------- managers/cheat_manager.h | 5 +- menu/menu_driver.h | 2 +- menu/menu_setting.c | 2 +- 6 files changed, 399 insertions(+), 457 deletions(-) diff --git a/libretro-common/file/config_file.c b/libretro-common/file/config_file.c index 7dd671b662..0a63e7781a 100644 --- a/libretro-common/file/config_file.c +++ b/libretro-common/file/config_file.c @@ -66,7 +66,7 @@ struct config_include_list }; static config_file_t *config_file_new_internal( - const char *path, unsigned depth, config_file_cb_t *cb); + const char *path, unsigned depth); static int config_sort_compare_func(struct config_entry_list *a, struct config_entry_list *b) @@ -267,7 +267,7 @@ static void add_child_list(config_file_t *parent, config_file_t *child) parent->tail = NULL; } -static void add_sub_conf(config_file_t *conf, char *path, config_file_cb_t *cb) +static void add_sub_conf(config_file_t *conf, char *path) { char real_path[PATH_MAX_LENGTH]; config_file_t *sub_conf = NULL; @@ -314,7 +314,7 @@ static void add_sub_conf(config_file_t *conf, char *path, config_file_cb_t *cb) #endif sub_conf = (config_file_t*) - config_file_new_internal(real_path, conf->include_depth + 1, cb); + config_file_new_internal(real_path, conf->include_depth + 1); if (!sub_conf) return; @@ -324,7 +324,7 @@ static void add_sub_conf(config_file_t *conf, char *path, config_file_cb_t *cb) } static bool parse_line(config_file_t *conf, - struct config_entry_list *list, char *line, config_file_cb_t *cb) + struct config_entry_list *list, char *line) { char *comment = NULL; char *key_tmp = NULL; @@ -351,7 +351,7 @@ static bool parse_line(config_file_t *conf, if (conf->include_depth >= MAX_INCLUDE_DEPTH) fprintf(stderr, "!!! #include depth exceeded for config. Might be a cycle.\n"); else - add_sub_conf(conf, path, cb); + add_sub_conf(conf, path); free(path); } goto error; @@ -396,19 +396,18 @@ error: } static config_file_t *config_file_new_internal( - const char *path, unsigned depth, config_file_cb_t *cb) + const char *path, unsigned depth) { RFILE *file = NULL; struct config_file *conf = (struct config_file*)malloc(sizeof(*conf)); if (!conf) return NULL; - conf->path = NULL; - conf->entries = NULL; - conf->tail = NULL; - conf->includes = NULL; - conf->include_depth = 0; - conf->guaranteed_no_duplicates = false ; + conf->path = NULL; + conf->entries = NULL; + conf->tail = NULL; + conf->includes = NULL; + conf->include_depth = 0; if (!path || !*path) return conf; @@ -456,7 +455,7 @@ static config_file_t *config_file_new_internal( continue; } - if (*line && parse_line(conf, list, line, cb)) + if (*line && parse_line(conf, list, line)) { if (conf->entries) conf->tail->next = list; @@ -464,9 +463,6 @@ static config_file_t *config_file_new_internal( conf->entries = list; conf->tail = list; - - if (cb != NULL && list->key != NULL && list->value != NULL) - cb->config_file_new_entry_cb(list->key, list->value) ; } free(line); @@ -555,12 +551,11 @@ config_file_t *config_file_new_from_string(const char *from_string) if (!from_string) return conf; - conf->path = NULL; - conf->entries = NULL; - conf->tail = NULL; - conf->includes = NULL; - conf->include_depth = 0; - conf->guaranteed_no_duplicates = false ; + conf->path = NULL; + conf->entries = NULL; + conf->tail = NULL; + conf->includes = NULL; + conf->include_depth = 0; lines = string_split(from_string, "\n"); if (!lines) @@ -585,7 +580,7 @@ config_file_t *config_file_new_from_string(const char *from_string) if (line && conf) { - if (*line && parse_line(conf, list, line, NULL)) + if (*line && parse_line(conf, list, line)) { if (conf->entries) conf->tail->next = list; @@ -605,13 +600,9 @@ config_file_t *config_file_new_from_string(const char *from_string) return conf; } -config_file_t *config_file_new_with_callback(const char *path, config_file_cb_t *cb) -{ - return config_file_new_internal(path, 0, cb); -} config_file_t *config_file_new(const char *path) { - return config_file_new_internal(path, 0, NULL); + return config_file_new_internal(path, 0); } static struct config_entry_list *config_get_entry(const config_file_t *conf, @@ -843,7 +834,7 @@ bool config_get_bool(config_file_t *conf, const char *key, bool *in) void config_set_string(config_file_t *conf, const char *key, const char *val) { struct config_entry_list *last = conf->entries; - struct config_entry_list *entry = conf->guaranteed_no_duplicates?NULL:config_get_entry(conf, key, &last); + struct config_entry_list *entry = config_get_entry(conf, key, &last); if (entry && !entry->readonly) { diff --git a/libretro-common/include/file/config_file.h b/libretro-common/include/file/config_file.h index e55430472d..cbeac2ed98 100644 --- a/libretro-common/include/file/config_file.h +++ b/libretro-common/include/file/config_file.h @@ -58,7 +58,6 @@ struct config_file struct config_entry_list *entries; struct config_entry_list *tail; unsigned include_depth; - bool guaranteed_no_duplicates; struct config_include_list *includes; }; @@ -66,13 +65,6 @@ struct config_file typedef struct config_file config_file_t; -struct config_file_cb -{ - void (*config_file_new_entry_cb)(char*, char*); -}; - -typedef struct config_file_cb config_file_cb_t ; - /* Config file format * - # are treated as comments. Rest of the line is ignored. * - Format is: key = value. There can be as many spaces as you like in-between. @@ -87,11 +79,6 @@ typedef struct config_file_cb config_file_cb_t ; * NULL path will create an empty config file. */ config_file_t *config_file_new(const char *path); -/* Loads a config file. Returns NULL if file doesn't exist. - * NULL path will create an empty config file. - * Includes cb callbacks to run custom code during config file processing.*/ -config_file_t *config_file_new_with_callback(const char *path, config_file_cb_t *cb); - /* Load a config file from a string. */ config_file_t *config_file_new_from_string(const char *from_string); @@ -191,4 +178,3 @@ bool config_file_exists(const char *path); RETRO_END_DECLS #endif - diff --git a/managers/cheat_manager.c b/managers/cheat_manager.c index d581e4790d..85296e55e4 100644 --- a/managers/cheat_manager.c +++ b/managers/cheat_manager.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include @@ -89,12 +88,8 @@ void cheat_manager_apply_cheats(void) core_set_cheat(&cheat_info); } } - - if (cheat_manager_state.size > 0) - { - runloop_msg_queue_push(msg_hash_to_str(MSG_APPLYING_CHEAT), 1, 180, true); - RARCH_LOG("%s\n", msg_hash_to_str(MSG_APPLYING_CHEAT)); - } + runloop_msg_queue_push(msg_hash_to_str(MSG_APPLYING_CHEAT), 1, 180, true); + RARCH_LOG("%s\n", msg_hash_to_str(MSG_APPLYING_CHEAT)); #ifdef HAVE_CHEEVOS data_bool = idx != 0; @@ -108,7 +103,7 @@ void cheat_manager_set_code(unsigned i, const char *str) return; if (!string_is_empty(str)) - strcpy(cheat_manager_state.cheats[i].code,str); + strcpy(cheat_manager_state.cheats[i].code,str) ; cheat_manager_state.cheats[i].state = true; } @@ -151,7 +146,7 @@ bool cheat_manager_save(const char *path, const char *cheat_database, bool overw buf[0] = cheats_file[0] = '\0'; if ( (!cheat_manager_state.cheats) || cheat_manager_state.size==0 ) - return false; + return false ; if (!cheat_database) strlcpy(cheats_file, path, sizeof(cheats_file)); @@ -172,8 +167,6 @@ bool cheat_manager_save(const char *path, const char *cheat_database, bool overw if (!conf) return false; - conf->guaranteed_no_duplicates = true; - config_set_int(conf, "cheats", cheat_manager_state.size); for (i = 0; i < cheat_manager_state.size; i++) @@ -240,42 +233,44 @@ bool cheat_manager_copy_idx_to_working(unsigned idx) return false; } - memcpy(&(cheat_manager_state.working_cheat), &(cheat_manager_state.cheats[idx]), sizeof(struct item_cheat)); + memcpy(&(cheat_manager_state.working_cheat), &(cheat_manager_state.cheats[idx]), sizeof(struct item_cheat)) ; if ( cheat_manager_state.cheats[idx].desc != NULL ) - strlcpy(cheat_manager_state.working_desc, cheat_manager_state.cheats[idx].desc, CHEAT_DESC_SCRATCH_SIZE); + strlcpy(cheat_manager_state.working_desc, cheat_manager_state.cheats[idx].desc, CHEAT_DESC_SCRATCH_SIZE) ; else - cheat_manager_state.working_desc[0] = '\0'; + cheat_manager_state.working_desc[0] = '\0' ; if ( cheat_manager_state.cheats[idx].code != NULL ) - strlcpy(cheat_manager_state.working_code, cheat_manager_state.cheats[idx].code, CHEAT_CODE_SCRATCH_SIZE); + strlcpy(cheat_manager_state.working_code, cheat_manager_state.cheats[idx].code, CHEAT_CODE_SCRATCH_SIZE) ; else - cheat_manager_state.working_code[0] = '\0'; + cheat_manager_state.working_code[0] = '\0' ; - return true; + return true ; } bool cheat_manager_copy_working_to_idx(unsigned idx) { if ( (!cheat_manager_state.cheats) || (cheat_manager_state.size < idx+1)) + { return false; + } - memcpy(&(cheat_manager_state.cheats[idx]), &(cheat_manager_state.working_cheat), sizeof(struct item_cheat)); + memcpy(&(cheat_manager_state.cheats[idx]), &(cheat_manager_state.working_cheat), sizeof(struct item_cheat)) ; if ( cheat_manager_state.cheats[idx].desc != NULL ) - free(cheat_manager_state.cheats[idx].desc); + free(cheat_manager_state.cheats[idx].desc) ; - cheat_manager_state.cheats[idx].desc = strdup(cheat_manager_state.working_desc); + cheat_manager_state.cheats[idx].desc = strdup(cheat_manager_state.working_desc) ; if ( cheat_manager_state.cheats[idx].code != NULL ) - free(cheat_manager_state.cheats[idx].code); + free(cheat_manager_state.cheats[idx].code) ; - cheat_manager_state.cheats[idx].code = strdup(cheat_manager_state.working_code); - return true; + cheat_manager_state.cheats[idx].code = strdup(cheat_manager_state.working_code) ; + return true ; } static void cheat_manager_new(unsigned size) { unsigned i; - cheat_manager_free(); + cheat_manager_free() ; cheat_manager_state.buf_size = size; cheat_manager_state.size = size; @@ -288,175 +283,147 @@ static void cheat_manager_new(unsigned size) cheat_manager_state.buf_size = 0; cheat_manager_state.size = 0; cheat_manager_state.cheats = NULL; - return; + return ; } for (i = 0; i < cheat_manager_state.size; i++) { - cheat_manager_state.cheats[i].desc = NULL; - cheat_manager_state.cheats[i].code = NULL; + cheat_manager_state.cheats[i].desc = NULL ; + cheat_manager_state.cheats[i].code = NULL ; cheat_manager_state.cheats[i].state = false; cheat_manager_state.cheats[i].repeat_count = 1; cheat_manager_state.cheats[i].repeat_add_to_value = 0; cheat_manager_state.cheats[i].repeat_add_to_address = 1; } - return; -} - -void cheat_manager_load_cb_first_pass(char *key, char *value) -{ - errno = 0; - - if (string_is_equal(key, "cheats")) - { - cheat_manager_state.loading_cheat_size = (unsigned)strtoul(value, NULL, 0); - - if (errno != 0) - cheat_manager_state.loading_cheat_size = 0; - } -} - -void cheat_manager_load_cb_second_pass(char *key, char *value) -{ - char cheat_num_str[20]; - unsigned cheat_num; - unsigned cheat_idx; - int idx = 0; - int key_length; - errno = 0; - - if (strncmp(key, "cheat", 5) != 0) - return; - - idx = 5; - key_length = strlen(key); - - while (idx < key_length && key[idx] >= '0' && key[idx] <= '9' && idx < 24) - { - cheat_num_str[idx-5] = key[idx]; - idx++; - } - - cheat_num_str[idx-5] = '\0'; - - cheat_num = (unsigned)strtoul(cheat_num_str, NULL, 0); - - if (cheat_num+cheat_manager_state.loading_cheat_offset >= cheat_manager_state.size) - return; - - key = key+idx+1; - - cheat_idx = cheat_num+cheat_manager_state.loading_cheat_offset; - - if (string_is_equal(key, "address")) - cheat_manager_state.cheats[cheat_idx].address = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "address_bit_position")) - cheat_manager_state.cheats[cheat_idx].address_mask = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "big_endian")) - cheat_manager_state.cheats[cheat_idx].big_endian = (string_is_equal(value,"true") || string_is_equal(value,"1")); - else if (string_is_equal(key, "cheat_type")) - cheat_manager_state.cheats[cheat_idx].cheat_type = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "code")) - cheat_manager_state.cheats[cheat_idx].code = strdup(value); - else if (string_is_equal(key, "desc")) - cheat_manager_state.cheats[cheat_idx].desc = strdup(value); - else if (string_is_equal(key, "enable")) - cheat_manager_state.cheats[cheat_idx].state = (string_is_equal(value,"true") || string_is_equal(value,"1")); - else if (string_is_equal(key, "handler")) - cheat_manager_state.cheats[cheat_idx].handler = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "memory_search_size")) - cheat_manager_state.cheats[cheat_idx].memory_search_size = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "repeat_add_to_address")) - cheat_manager_state.cheats[cheat_idx].repeat_add_to_address = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "repeat_add_to_value")) - cheat_manager_state.cheats[cheat_idx].repeat_add_to_value = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "repeat_count")) - cheat_manager_state.cheats[cheat_idx].repeat_count = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_port")) - cheat_manager_state.cheats[cheat_idx].rumble_port = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_primary_duration")) - cheat_manager_state.cheats[cheat_idx].rumble_primary_duration = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_primary_strength")) - cheat_manager_state.cheats[cheat_idx].rumble_primary_strength = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_secondary_duration")) - cheat_manager_state.cheats[cheat_idx].rumble_secondary_duration = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_secondary_strength")) - cheat_manager_state.cheats[cheat_idx].rumble_secondary_strength = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_type")) - cheat_manager_state.cheats[cheat_idx].rumble_type = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "rumble_value")) - cheat_manager_state.cheats[cheat_idx].rumble_value = (unsigned)strtoul(value, NULL, 0); - else if (string_is_equal(key, "value")) - cheat_manager_state.cheats[cheat_idx].value = (unsigned)strtoul(value, NULL, 0); - + return ; } bool cheat_manager_load(const char *path, bool append) { - unsigned orig_size; unsigned cheats = 0, i; - config_file_cb_t cb; - config_file_t *conf = NULL; - - cb.config_file_new_entry_cb = cheat_manager_load_cb_first_pass; - - cheat_manager_state.loading_cheat_size = 0; - - conf = config_file_new_with_callback(path, &cb); + config_file_t *conf = config_file_new(path); + unsigned orig_size ; + unsigned int* data_ptrs[16] = { NULL}; + char* keys[16] = { + "cheat%u_handler", + "cheat%u_memory_search_size", + "cheat%u_cheat_type", + "cheat%u_value", + "cheat%u_address", + "cheat%u_address_bit_position", + "cheat%u_rumble_type", + "cheat%u_rumble_value", + "cheat%u_rumble_port", + "cheat%u_rumble_primary_strength", + "cheat%u_rumble_primary_duration", + "cheat%u_rumble_secondary_strength", + "cheat%u_rumble_secondary_duration", + "cheat%u_repeat_count", + "cheat%u_repeat_add_to_value", + "cheat%u_repeat_add_to_address", + }; if (!conf) return false; - cheats = cheat_manager_state.loading_cheat_size; + config_get_uint(conf, "cheats", &cheats); if (cheats == 0) goto error; - config_file_free(conf); - conf = NULL; - - - cheat_manager_alloc_if_empty(); + cheat_manager_alloc_if_empty() ; if ( append ) { - orig_size = cheat_manager_get_size(); + orig_size = cheat_manager_get_size() ; if ( orig_size == 0) { cheat_manager_new(cheats); } else { - cheats = cheats + orig_size; - if (cheat_manager_realloc(cheats, CHEAT_HANDLER_TYPE_EMU)) { } + cheats = cheats + orig_size ; + if (cheat_manager_realloc(cheats, CHEAT_HANDLER_TYPE_EMU)) + { + } } } else { - orig_size = 0; + orig_size = 0 ; cheat_manager_new(cheats); } - for (i = orig_size; i < cheats; i++) { - cheat_manager_state.cheats[i].idx = i; - cheat_manager_state.cheats[i].desc = NULL; - cheat_manager_state.cheats[i].code = NULL; - cheat_manager_state.cheats[i].state = false; - cheat_manager_state.cheats[i].big_endian = false; - cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE; + unsigned j; + char desc_key[256]; + char code_key[256]; + char enable_key[256]; + char endian_key[256]; + char *tmp = NULL; + bool tmp_bool = false; + + data_ptrs[0] = &cheat_manager_state.cheats[i].handler; + data_ptrs[1] = &cheat_manager_state.cheats[i].memory_search_size; + data_ptrs[2] = &cheat_manager_state.cheats[i].cheat_type; + data_ptrs[3] = &cheat_manager_state.cheats[i].value; + data_ptrs[4] = &cheat_manager_state.cheats[i].address; + data_ptrs[5] = &cheat_manager_state.cheats[i].address_mask; + data_ptrs[6] = &cheat_manager_state.cheats[i].rumble_type; + data_ptrs[7] = &cheat_manager_state.cheats[i].rumble_value; + data_ptrs[8] = &cheat_manager_state.cheats[i].rumble_port; + data_ptrs[9] = &cheat_manager_state.cheats[i].rumble_primary_strength; + data_ptrs[10] = &cheat_manager_state.cheats[i].rumble_primary_duration; + data_ptrs[11] = &cheat_manager_state.cheats[i].rumble_secondary_strength; + data_ptrs[12] = &cheat_manager_state.cheats[i].rumble_secondary_duration; + data_ptrs[13] = &cheat_manager_state.cheats[i].repeat_count; + data_ptrs[14] = &cheat_manager_state.cheats[i].repeat_add_to_value; + data_ptrs[15] = &cheat_manager_state.cheats[i].repeat_add_to_address; + + endian_key[0] = desc_key[0] = code_key[0] = enable_key[0] = '\0'; + + snprintf(desc_key, sizeof(desc_key), "cheat%u_desc", i-orig_size); + snprintf(code_key, sizeof(code_key), "cheat%u_code", i-orig_size); + snprintf(enable_key, sizeof(enable_key), "cheat%u_enable", i-orig_size); + snprintf(endian_key, sizeof(endian_key), "cheat%u_endian", i-orig_size); + + cheat_manager_state.cheats[i].idx = i ; + + cheat_manager_state.cheats[i].desc = NULL ; + cheat_manager_state.cheats[i].code = NULL ; + cheat_manager_state.cheats[i].state = false ; + cheat_manager_state.cheats[i].big_endian = false ; + + if (config_get_string(conf, desc_key, &tmp) && !string_is_empty(tmp)) + cheat_manager_state.cheats[i].desc = strdup(tmp) ; + + if (config_get_string(conf, code_key, &tmp) && !string_is_empty(tmp)) + cheat_manager_state.cheats[i].code = strdup(tmp) ; + + if (config_get_bool(conf, enable_key, &tmp_bool)) + cheat_manager_state.cheats[i].state = tmp_bool; + + if (config_get_bool(conf, endian_key, &tmp_bool)) + cheat_manager_state.cheats[i].big_endian = tmp_bool; + + if (tmp) + free(tmp); + + cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE ; cheat_manager_state.cheats[i].memory_search_size = 3; + for (j = 0 ; j < 16 ; j++ ) + { + char key[50] ; + unsigned val = 0; + snprintf(key, sizeof(key), keys[j], i-orig_size); + + if ( config_get_uint(conf, key, &val)) + *(data_ptrs[j]) = val ; + } } - cheat_manager_state.loading_cheat_offset = orig_size; - cb.config_file_new_entry_cb = cheat_manager_load_cb_second_pass; - conf = config_file_new_with_callback(path, &cb); - - if (!conf) - return false; - config_file_free(conf); return true; @@ -470,26 +437,26 @@ error: bool cheat_manager_realloc(unsigned new_size, unsigned default_handler) { unsigned i; - unsigned orig_size; + unsigned orig_size ; if (!cheat_manager_state.cheats) { cheat_manager_state.cheats = (struct item_cheat*) calloc(new_size, sizeof(struct item_cheat)); - orig_size = 0; + orig_size = 0 ; } else { - orig_size = cheat_manager_state.size; + orig_size = cheat_manager_state.size ; /* if size is decreasing, free the items that will be lost */ for (i = new_size; i < orig_size; i++) { if ( cheat_manager_state.cheats[i].code != NULL ) - free(cheat_manager_state.cheats[i].code); + free(cheat_manager_state.cheats[i].code) ; if ( cheat_manager_state.cheats[i].desc != NULL ) - free(cheat_manager_state.cheats[i].desc); + free(cheat_manager_state.cheats[i].desc) ; } cheat_manager_state.cheats = (struct item_cheat*) @@ -508,14 +475,14 @@ bool cheat_manager_realloc(unsigned new_size, unsigned default_handler) for (i = orig_size; i < cheat_manager_state.size; i++) { - memset(&(cheat_manager_state.cheats[i]), 0, sizeof(cheat_manager_state.cheats[i])); - cheat_manager_state.cheats[i].state = false; - cheat_manager_state.cheats[i].handler = default_handler; - cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE; - cheat_manager_state.cheats[i].memory_search_size = 3; - cheat_manager_state.cheats[i].idx = i; - cheat_manager_state.cheats[i].repeat_count = 1; - cheat_manager_state.cheats[i].repeat_add_to_value = 0; + memset(&(cheat_manager_state.cheats[i]), 0, sizeof(cheat_manager_state.cheats[i])) ; + cheat_manager_state.cheats[i].state = false; + cheat_manager_state.cheats[i].handler = default_handler; + cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE ; + cheat_manager_state.cheats[i].memory_search_size = 3; + cheat_manager_state.cheats[i].idx = i; + cheat_manager_state.cheats[i].repeat_count = 1; + cheat_manager_state.cheats[i].repeat_add_to_value = 0; cheat_manager_state.cheats[i].repeat_add_to_address = 1; } @@ -524,37 +491,37 @@ bool cheat_manager_realloc(unsigned new_size, unsigned default_handler) void cheat_manager_free(void) { - unsigned i = 0; + unsigned i = 0 ; if (cheat_manager_state.cheats) { for (i = 0; i < cheat_manager_state.size; i++) { if ( cheat_manager_state.cheats[i].desc != NULL ) - free(cheat_manager_state.cheats[i].desc); + free(cheat_manager_state.cheats[i].desc) ; if ( cheat_manager_state.cheats[i].code != NULL ) - free(cheat_manager_state.cheats[i].code); + free(cheat_manager_state.cheats[i].code) ; } free(cheat_manager_state.cheats); } if ( cheat_manager_state.prev_memory_buf ) - free(cheat_manager_state.prev_memory_buf); + free(cheat_manager_state.prev_memory_buf) ; if ( cheat_manager_state.matches ) - free(cheat_manager_state.matches); + free(cheat_manager_state.matches) ; - cheat_manager_state.cheats = NULL; - cheat_manager_state.size = 0; - cheat_manager_state.buf_size = 0; - cheat_manager_state.prev_memory_buf = NULL; - cheat_manager_state.curr_memory_buf = NULL; - cheat_manager_state.matches = NULL; - cheat_manager_state.total_memory_size = 0; - cheat_manager_state.actual_memory_size = 0; - cheat_manager_state.memory_initialized = false; - cheat_manager_state.memory_search_initialized = false; + cheat_manager_state.cheats = NULL ; + cheat_manager_state.size = 0 ; + cheat_manager_state.buf_size = 0 ; + cheat_manager_state.prev_memory_buf = NULL ; + cheat_manager_state.curr_memory_buf = NULL ; + cheat_manager_state.matches = NULL ; + cheat_manager_state.total_memory_size = 0 ; + cheat_manager_state.actual_memory_size = 0 ; + cheat_manager_state.memory_initialized = false ; + cheat_manager_state.memory_search_initialized = false ; } @@ -584,7 +551,7 @@ void cheat_manager_toggle_index(unsigned i) cheat_manager_update(&cheat_manager_state, i); if (!settings) - return; + return ; if (settings->bools.apply_cheats_after_toggle) cheat_manager_apply_cheats(); @@ -653,17 +620,18 @@ bool cheat_manager_get_game_specific_filename(char * cheat_filename, size_t max_ struct retro_system_info system_info; if (!settings || !global || !cheat_filename) - return false; + return false ; if ( !core_get_system_info(&system_info) ) - return false; + return false ; + core_name = system_info.library_name; game_name = path_basename(global->name.cheatfile); if ( string_is_empty(settings->paths.path_cheat_database) || string_is_empty(core_name) || string_is_empty(game_name) ) - return false; + return false ; cheat_filename[0] = '\0'; strlcat(cheat_filename, settings->paths.path_cheat_database, max_length); @@ -676,23 +644,23 @@ bool cheat_manager_get_game_specific_filename(char * cheat_filename, size_t max_ strlcat(cheat_filename, game_name, max_length); - return true; + return true ; } void cheat_manager_load_game_specific_cheats() { - char cheat_file[PATH_MAX_LENGTH]; + char cheat_file[PATH_MAX_LENGTH] ; if (cheat_manager_get_game_specific_filename(cheat_file, PATH_MAX_LENGTH) ) - cheat_manager_load(cheat_file,true); + cheat_manager_load(cheat_file,true) ; } void cheat_manager_save_game_specific_cheats() { - char cheat_file[PATH_MAX_LENGTH]; + char cheat_file[PATH_MAX_LENGTH] ; if (cheat_manager_get_game_specific_filename(cheat_file, PATH_MAX_LENGTH) ) - cheat_manager_save(cheat_file, NULL, true); + cheat_manager_save(cheat_file, NULL, true) ; } @@ -703,8 +671,11 @@ void cheat_manager_state_free(void) bool cheat_manager_alloc_if_empty(void) { + if (!cheat_manager_state.cheats) + { cheat_manager_new(0); + } return true; } @@ -722,9 +693,6 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) return 0; } - if ( meminfo.size == 0 ) - return 0; - cheat_manager_state.actual_memory_size = (unsigned)meminfo.size; cheat_manager_state.curr_memory_buf = meminfo.data; cheat_manager_state.total_memory_size = (unsigned)meminfo.size; @@ -778,84 +746,84 @@ static void cheat_manager_setup_search_meta(unsigned int bitsize, unsigned int * { case 0 : { - *bytes_per_item = 1; - *bits = 1; - *mask = 0x01; - break; + *bytes_per_item = 1 ; + *bits = 1 ; + *mask = 0x01 ; + break ; } case 1 : { - *bytes_per_item = 1; - *bits = 2; - *mask = 0x03; - break; + *bytes_per_item = 1 ; + *bits = 2 ; + *mask = 0x03 ; + break ; } case 2 : { - *bytes_per_item = 1; - *bits = 4; - *mask = 0x0F; - break; + *bytes_per_item = 1 ; + *bits = 4 ; + *mask = 0x0F ; + break ; } case 3 : { - *bytes_per_item = 1; - *bits = 8; - *mask = 0xFF; - break; + *bytes_per_item = 1 ; + *bits = 8 ; + *mask = 0xFF ; + break ; } case 4 : { - *bytes_per_item = 2; - *bits = 8; - *mask = 0xFFFF; - break; + *bytes_per_item = 2 ; + *bits = 8 ; + *mask = 0xFFFF ; + break ; } case 5 : { - *bytes_per_item = 4; - *bits = 8; - *mask = 0xFFFFFFFF; - break; + *bytes_per_item = 4 ; + *bits = 8 ; + *mask = 0xFFFFFFFF ; + break ; } } } int cheat_manager_search_exact(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EXACT); + return cheat_manager_search(CHEAT_SEARCH_TYPE_EXACT) ; } int cheat_manager_search_lt(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_LT); + return cheat_manager_search(CHEAT_SEARCH_TYPE_LT) ; } int cheat_manager_search_gt(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_GT); + return cheat_manager_search(CHEAT_SEARCH_TYPE_GT) ; } int cheat_manager_search_lte(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_LTE); + return cheat_manager_search(CHEAT_SEARCH_TYPE_LTE) ; } int cheat_manager_search_gte(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_GTE); + return cheat_manager_search(CHEAT_SEARCH_TYPE_GTE) ; } int cheat_manager_search_eq(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EQ); + return cheat_manager_search(CHEAT_SEARCH_TYPE_EQ) ; } int cheat_manager_search_neq(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_NEQ); + return cheat_manager_search(CHEAT_SEARCH_TYPE_NEQ) ; } int cheat_manager_search_eqplus(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EQPLUS); + return cheat_manager_search(CHEAT_SEARCH_TYPE_EQPLUS) ; } int cheat_manager_search_eqminus(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EQMINUS); + return cheat_manager_search(CHEAT_SEARCH_TYPE_EQMINUS) ; } int cheat_manager_search(enum cheat_search_type search_type) @@ -874,14 +842,14 @@ int cheat_manager_search(enum cheat_search_type search_type) if (!cheat_manager_state.curr_memory_buf) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_NOT_INITIALIZED), 1, 180, true); - return 0; + return 0 ; } - cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits); + cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits) ; /* little endian FF000000 = 256 */ - for (idx = 0; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) + for (idx = 0 ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item) { unsigned byte_part; @@ -891,73 +859,73 @@ int cheat_manager_search(enum cheat_search_type search_type) { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256); + *(curr+idx) + (*(curr+idx+1)*256) ; prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256) + *(prev+idx+1) : - *(prev+idx) + (*(prev+idx+1)*256); - break; + *(prev+idx) + (*(prev+idx+1)*256) ; + break ; } case 4 : { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256*256*256) + (*(prev+idx+1)*256*256) + (*(prev+idx+2)*256) + *(prev+idx+3) : - *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256); - break; + *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256) ; + break ; } case 1 : default : { - curr_val = *(curr+idx); - prev_val = *(prev+idx); - break; + curr_val = *(curr+idx) ; + prev_val = *(prev+idx) ; + break ; } } - for (byte_part = 0; byte_part < 8/bits; byte_part++) + for (byte_part = 0 ; byte_part < 8/bits ; byte_part++) { - unsigned int curr_subval = (curr_val >> (byte_part*bits) ) & mask; - unsigned int prev_subval = (prev_val >> (byte_part*bits) ) & mask; - unsigned int prev_match; + unsigned int curr_subval = (curr_val >> (byte_part*bits) ) & mask ; + unsigned int prev_subval = (prev_val >> (byte_part*bits) ) & mask ; + unsigned int prev_match ; if (bits < 8 ) - prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)); + prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; else - prev_match = *(cheat_manager_state.matches+idx); + prev_match = *(cheat_manager_state.matches+idx) ; if (prev_match > 0) { - bool match = false; + bool match = false ; switch (search_type) { case CHEAT_SEARCH_TYPE_EXACT : - match = ( curr_subval == cheat_manager_state.search_exact_value); + match = ( curr_subval == cheat_manager_state.search_exact_value) ; break; case CHEAT_SEARCH_TYPE_LT : - match = ( curr_subval < prev_subval); + match = ( curr_subval < prev_subval) ; break; case CHEAT_SEARCH_TYPE_GT : - match = ( curr_subval > prev_subval); + match = ( curr_subval > prev_subval) ; break; case CHEAT_SEARCH_TYPE_LTE : - match = ( curr_subval <= prev_subval); + match = ( curr_subval <= prev_subval) ; break; case CHEAT_SEARCH_TYPE_GTE : - match = ( curr_subval >= prev_subval); + match = ( curr_subval >= prev_subval) ; break; case CHEAT_SEARCH_TYPE_EQ : - match = ( curr_subval == prev_subval); + match = ( curr_subval == prev_subval) ; break; case CHEAT_SEARCH_TYPE_NEQ : - match = ( curr_subval != prev_subval); + match = ( curr_subval != prev_subval) ; break; case CHEAT_SEARCH_TYPE_EQPLUS : - match = ( curr_subval == prev_subval+cheat_manager_state.search_eqplus_value); + match = ( curr_subval == prev_subval+cheat_manager_state.search_eqplus_value) ; break; case CHEAT_SEARCH_TYPE_EQMINUS : - match = ( curr_subval == prev_subval-cheat_manager_state.search_eqminus_value); + match = ( curr_subval == prev_subval-cheat_manager_state.search_eqminus_value) ; break; } if (!match ) @@ -966,9 +934,9 @@ int cheat_manager_search(enum cheat_search_type search_type) *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & (( ~(mask << (byte_part*bits))) & 0xFF ); else - memset(cheat_manager_state.matches+idx,0,bytes_per_item); + memset(cheat_manager_state.matches+idx,0,bytes_per_item) ; if ( cheat_manager_state.num_matches > 0 ) - cheat_manager_state.num_matches--; + cheat_manager_state.num_matches-- ; } } } @@ -976,7 +944,7 @@ int cheat_manager_search(enum cheat_search_type search_type) memcpy(cheat_manager_state.prev_memory_buf, cheat_manager_state.curr_memory_buf, cheat_manager_state.actual_memory_size); - snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_FOUND_MATCHES), cheat_manager_state.num_matches); + snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_FOUND_MATCHES), cheat_manager_state.num_matches) ; msg[sizeof(msg) - 1] = 0; runloop_msg_queue_push(msg, 1, 180, true); @@ -985,7 +953,7 @@ int cheat_manager_search(enum cheat_search_type search_type) menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); #endif - return 0; + return 0 ; } bool cheat_manager_add_new_code(unsigned int memory_search_size, unsigned int address, unsigned int address_mask, @@ -994,15 +962,15 @@ bool cheat_manager_add_new_code(unsigned int memory_search_size, unsigned int ad int new_size = cheat_manager_get_size() + 1; if ( !cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_RETRO) ) - return false; + return false ; - cheat_manager_state.cheats[cheat_manager_state.size-1].address = address; - cheat_manager_state.cheats[cheat_manager_state.size-1].address_mask = address_mask; - cheat_manager_state.cheats[cheat_manager_state.size-1].memory_search_size = memory_search_size; - cheat_manager_state.cheats[cheat_manager_state.size-1].value = value; - cheat_manager_state.cheats[cheat_manager_state.size-1].big_endian = big_endian; + cheat_manager_state.cheats[cheat_manager_state.size-1].address = address ; + cheat_manager_state.cheats[cheat_manager_state.size-1].address_mask = address_mask ; + cheat_manager_state.cheats[cheat_manager_state.size-1].memory_search_size = memory_search_size ; + cheat_manager_state.cheats[cheat_manager_state.size-1].value = value ; + cheat_manager_state.cheats[cheat_manager_state.size-1].big_endian = big_endian ; - return true; + return true ; } int cheat_manager_add_matches(const char *path, const char *label, unsigned type, size_t menuidx, size_t entry_idx) @@ -1021,66 +989,66 @@ int cheat_manager_add_matches(const char *path, if ( cheat_manager_state.num_matches + cheat_manager_state.size > 100 ) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_TOO_MANY), 1, 180, true); - return 0; + return 0 ; } - cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits); + cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits) ; - for (idx = 0; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) + for (idx = 0 ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item) { switch ( bytes_per_item ) { case 2 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256); - break; + *(curr+idx) + (*(curr+idx+1)*256) ; + break ; case 4 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); - break; + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; + break ; case 1 : default : - curr_val = *(curr+idx); - break; + curr_val = *(curr+idx) ; + break ; } - for (byte_part = 0; byte_part < 8/bits; byte_part++) + for (byte_part = 0 ; byte_part < 8/bits ; byte_part++) { unsigned int prev_match; if (bits < 8 ) { - prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)); + prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; if (prev_match) { if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, (mask << (byte_part*bits)), cheat_manager_state.big_endian, curr_val) ) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL), 1, 180, true); - return 0; + return 0 ; } - num_added++; + num_added++ ; } } else { - prev_match = *(cheat_manager_state.matches+idx); + prev_match = *(cheat_manager_state.matches+idx) ; if (prev_match) { if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF, cheat_manager_state.big_endian, curr_val)) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL), 1, 180, true); - return 0; + return 0 ; } - num_added++; + num_added++ ; } } } } - snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_SUCCESS), cheat_manager_state.num_matches); + snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_SUCCESS), cheat_manager_state.num_matches) ; msg[sizeof(msg) - 1] = 0; runloop_msg_queue_push(msg, 1, 180, true); @@ -1102,38 +1070,38 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu case RUMBLE_TYPE_DISABLED: return; case RUMBLE_TYPE_CHANGES: - rumble = (curr_value != cheat->rumble_prev_value); - break; + rumble = (curr_value != cheat->rumble_prev_value) ; + break ; case RUMBLE_TYPE_DOES_NOT_CHANGE: - rumble = (curr_value == cheat->rumble_prev_value); - break; + rumble = (curr_value == cheat->rumble_prev_value) ; + break ; case RUMBLE_TYPE_INCREASE: - rumble = (curr_value > cheat->rumble_prev_value); - break; + rumble = (curr_value > cheat->rumble_prev_value) ; + break ; case RUMBLE_TYPE_DECREASE: - rumble = (curr_value < cheat->rumble_prev_value); - break; + rumble = (curr_value < cheat->rumble_prev_value) ; + break ; case RUMBLE_TYPE_EQ_VALUE: - rumble = (curr_value == cheat->rumble_value); - break; + rumble = (curr_value == cheat->rumble_value) ; + break ; case RUMBLE_TYPE_NEQ_VALUE: - rumble = (curr_value != cheat->rumble_value); - break; + rumble = (curr_value != cheat->rumble_value) ; + break ; case RUMBLE_TYPE_LT_VALUE: - rumble = (curr_value < cheat->rumble_value); - break; + rumble = (curr_value < cheat->rumble_value) ; + break ; case RUMBLE_TYPE_GT_VALUE: - rumble = (curr_value > cheat->rumble_value); + rumble = (curr_value > cheat->rumble_value) ; break; case RUMBLE_TYPE_INCREASE_BY_VALUE: - rumble = (curr_value == cheat->rumble_prev_value + cheat->rumble_value); - break; + rumble = (curr_value == cheat->rumble_prev_value + cheat->rumble_value) ; + break ; case RUMBLE_TYPE_DECREASE_BY_VALUE: - rumble = (curr_value == cheat->rumble_prev_value - cheat->rumble_value); - break; + rumble = (curr_value == cheat->rumble_prev_value - cheat->rumble_value) ; + break ; } - cheat->rumble_prev_value = curr_value; + cheat->rumble_prev_value = curr_value ; /* Give the emulator enough time * to initialize, load state, etc */ @@ -1141,15 +1109,15 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu { if (rumble) { - cheat->rumble_primary_end_time = cpu_features_get_time_usec() + (cheat->rumble_primary_duration*1000); - cheat->rumble_secondary_end_time = cpu_features_get_time_usec() + (cheat->rumble_secondary_duration*1000); + cheat->rumble_primary_end_time = cpu_features_get_time_usec() + (cheat->rumble_primary_duration*1000) ; + cheat->rumble_secondary_end_time = cpu_features_get_time_usec() + (cheat->rumble_secondary_duration*1000) ; input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_STRONG, cheat->rumble_primary_strength); input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_WEAK, cheat->rumble_secondary_strength); } } else { - cheat->rumble_initialized++; + cheat->rumble_initialized++ ; return; } @@ -1168,7 +1136,7 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu { if (cheat->rumble_secondary_end_time != 0) input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_WEAK, 0); - cheat->rumble_secondary_end_time = 0; + cheat->rumble_secondary_end_time = 0 ; } else { @@ -1188,19 +1156,19 @@ void cheat_manager_apply_retro_cheats(void) if ((!cheat_manager_state.cheats)) return; - for (i = 0; i < cheat_manager_state.size; i++ ) + for (i = 0 ; i < cheat_manager_state.size ; i++ ) { unsigned char *curr; unsigned int idx; bool set_value = false; unsigned int value_to_set = 0; - unsigned int repeat_iter = 0; - unsigned int address_mask = cheat_manager_state.cheats[i].address_mask; + unsigned int repeat_iter = 0 ; + unsigned int address_mask = cheat_manager_state.cheats[i].address_mask ; if (cheat_manager_state.cheats[i].handler != CHEAT_HANDLER_TYPE_RETRO || !cheat_manager_state.cheats[i].state) - continue; + continue ; if (!cheat_manager_state.memory_initialized) - cheat_manager_initialize_memory(NULL, false); + cheat_manager_initialize_memory(NULL, false) ; /* If we're still not initialized, something * must have gone wrong - just bail */ @@ -1209,13 +1177,13 @@ void cheat_manager_apply_retro_cheats(void) if (!run_cheat) { - run_cheat = true; - continue; + run_cheat = true ; + continue ; } - cheat_manager_setup_search_meta(cheat_manager_state.cheats[i].memory_search_size, &bytes_per_item, &mask, &bits); + cheat_manager_setup_search_meta(cheat_manager_state.cheats[i].memory_search_size, &bytes_per_item, &mask, &bits) ; - curr = cheat_manager_state.curr_memory_buf; - idx = cheat_manager_state.cheats[i].address; + curr = cheat_manager_state.curr_memory_buf ; + idx = cheat_manager_state.cheats[i].address ; switch (bytes_per_item) { @@ -1223,142 +1191,142 @@ void cheat_manager_apply_retro_cheats(void) { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256); - break; + *(curr+idx) + (*(curr+idx+1)*256) ; + break ; } case 4 : { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); - break; + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; + break ; } case 1 : default : { - curr_val = *(curr+idx); - break; + curr_val = *(curr+idx) ; + break ; } } - cheat_manager_apply_rumble(&cheat_manager_state.cheats[i], curr_val); + cheat_manager_apply_rumble(&cheat_manager_state.cheats[i], curr_val) ; switch (cheat_manager_state.cheats[i].cheat_type ) { case CHEAT_TYPE_SET_TO_VALUE : - set_value = true; - value_to_set = cheat_manager_state.cheats[i].value; - break; + set_value = true ; + value_to_set = cheat_manager_state.cheats[i].value ; + break ; case CHEAT_TYPE_INCREASE_VALUE: - set_value = true; - value_to_set = curr_val + cheat_manager_state.cheats[i].value; + set_value = true ; + value_to_set = curr_val + cheat_manager_state.cheats[i].value ; break; case CHEAT_TYPE_DECREASE_VALUE: - set_value = true; - value_to_set = curr_val - cheat_manager_state.cheats[i].value; + set_value = true ; + value_to_set = curr_val - cheat_manager_state.cheats[i].value ; break; case CHEAT_TYPE_RUN_NEXT_IF_EQ: if (!(curr_val == cheat_manager_state.cheats[i].value)) - run_cheat = false; + run_cheat = false ; break; case CHEAT_TYPE_RUN_NEXT_IF_NEQ: if (!(curr_val != cheat_manager_state.cheats[i].value )) - run_cheat = false; + run_cheat = false ; break; case CHEAT_TYPE_RUN_NEXT_IF_LT: if (!(cheat_manager_state.cheats[i].value < curr_val)) - run_cheat = false; + run_cheat = false ; break; case CHEAT_TYPE_RUN_NEXT_IF_GT: if (!(cheat_manager_state.cheats[i].value > curr_val)) - run_cheat = false; + run_cheat = false ; break; } if (set_value) { - for ( repeat_iter = 1; repeat_iter <= cheat_manager_state.cheats[i].repeat_count; repeat_iter++) + for ( repeat_iter = 1 ; repeat_iter <= cheat_manager_state.cheats[i].repeat_count ; repeat_iter++) { switch (bytes_per_item) { case 2 : if (cheat_manager_state.cheats[i].big_endian) { - *(curr+idx) = (value_to_set >> 8) & 0xFF; - *(curr+idx+1) = value_to_set & 0xFF; + *(curr+idx) = (value_to_set >> 8) & 0xFF ; + *(curr+idx+1) = value_to_set & 0xFF ; } else { - *(curr+idx) = value_to_set & 0xFF; - *(curr+idx+1) = (value_to_set >> 8) & 0xFF; + *(curr+idx) = value_to_set & 0xFF ; + *(curr+idx+1) = (value_to_set >> 8) & 0xFF ; } - break; + break ; case 4 : if (cheat_manager_state.cheats[i].big_endian) { - *(curr+idx) = (value_to_set >> 24) & 0xFF; - *(curr+idx+1) = (value_to_set >> 16) & 0xFF; - *(curr+idx+2) = (value_to_set >> 8) & 0xFF; - *(curr+idx+3) = value_to_set & 0xFF; + *(curr+idx) = (value_to_set >> 24) & 0xFF ; + *(curr+idx+1) = (value_to_set >> 16) & 0xFF ; + *(curr+idx+2) = (value_to_set >> 8) & 0xFF ; + *(curr+idx+3) = value_to_set & 0xFF ; } else { - *(curr+idx) = value_to_set & 0xFF; - *(curr+idx+1) = (value_to_set >> 8) & 0xFF; - *(curr+idx+2) = (value_to_set >> 16) & 0xFF; - *(curr+idx+3) = (value_to_set >> 24) & 0xFF; + *(curr+idx) = value_to_set & 0xFF ; + *(curr+idx+1) = (value_to_set >> 8) & 0xFF ; + *(curr+idx+2) = (value_to_set >> 16) & 0xFF ; + *(curr+idx+3) = (value_to_set >> 24) & 0xFF ; } - break; + break ; case 1 : if (bits < 8) { unsigned bitpos; unsigned char val = *(curr+idx); - for (bitpos = 0; bitpos < 8; bitpos++) + for (bitpos = 0 ; bitpos < 8 ; bitpos++) { if ((address_mask>>bitpos)&0x01 ) { - mask = (~(1<>bitpos)&0x01)<>bitpos)&0x01)< cheat_manager_state.num_matches-1) @@ -1387,57 +1355,57 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits); if (match_action == CHEAT_MATCH_ACTION_TYPE_BROWSE) - start_idx = *address; + start_idx = *address ; else - start_idx = 0; + start_idx = 0 ; - for (idx = start_idx; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) + for (idx = start_idx ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item) { switch (bytes_per_item ) { case 2 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256); + *(curr+idx) + (*(curr+idx+1)*256) ; if (prev != NULL) prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256) + *(prev+idx+1) : - *(prev+idx) + (*(prev+idx+1)*256); - break; + *(prev+idx) + (*(prev+idx+1)*256) ; + break ; case 4 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; if (prev != NULL) prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256*256*256) + (*(prev+idx+1)*256*256) + (*(prev+idx+2)*256) + *(prev+idx+3) : - *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256); - break; + *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256) ; + break ; case 1 : default : - curr_val = *(curr+idx); + curr_val = *(curr+idx) ; if (prev != NULL) - prev_val = *(prev+idx); - break; + prev_val = *(prev+idx) ; + break ; } if (match_action == CHEAT_MATCH_ACTION_TYPE_BROWSE) { *curr_value = curr_val; *prev_value = prev_val; - return; + return ; } if (!prev) return; - for (byte_part = 0; byte_part < 8/bits; byte_part++) + for (byte_part = 0 ; byte_part < 8/bits ; byte_part++) { - unsigned int prev_match; + unsigned int prev_match ; if (bits < 8 ) { - prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)); + prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; if (prev_match) { if (target_match_idx == curr_match_idx) @@ -1445,12 +1413,12 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig switch (match_action) { case CHEAT_MATCH_ACTION_TYPE_BROWSE : - return; + return ; case CHEAT_MATCH_ACTION_TYPE_VIEW : - *address = idx; - *address_mask = (mask << (byte_part*bits)); - *curr_value = curr_val; - *prev_value = prev_val; + *address = idx ; + *address_mask = (mask << (byte_part*bits)) ; + *curr_value = curr_val ; + *prev_value = prev_val ; return; case CHEAT_MATCH_ACTION_TYPE_COPY : if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, (mask << (byte_part*bits)), @@ -1458,26 +1426,26 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_FAIL), 1, 180, true); else runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS), 1, 180, true); - return; + return ; case CHEAT_MATCH_ACTION_TYPE_DELETE : if (bits < 8) *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & (( ~(mask << (byte_part*bits))) & 0xFF ); else - memset(cheat_manager_state.matches+idx,0,bytes_per_item); + memset(cheat_manager_state.matches+idx,0,bytes_per_item) ; if ( cheat_manager_state.num_matches > 0 ) - cheat_manager_state.num_matches--; + cheat_manager_state.num_matches-- ; runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS), 1, 180, true); return; } return; } - curr_match_idx++; + curr_match_idx++ ; } } else { - prev_match = *(cheat_manager_state.matches+idx); + prev_match = *(cheat_manager_state.matches+idx) ; if (prev_match) { if (target_match_idx == curr_match_idx) @@ -1485,33 +1453,33 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig switch (match_action) { case CHEAT_MATCH_ACTION_TYPE_BROWSE : - return; + return ; case CHEAT_MATCH_ACTION_TYPE_VIEW : - *address = idx; - *address_mask = 0xFF; - *curr_value = curr_val; - *prev_value = prev_val; - return; + *address = idx ; + *address_mask = 0xFF ; + *curr_value = curr_val ; + *prev_value = prev_val ; + return ; case CHEAT_MATCH_ACTION_TYPE_COPY : if ( !cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF, cheat_manager_state.big_endian, curr_val) ) runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_FAIL), 1, 180, true); else runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS), 1, 180, true); - return; + return ; case CHEAT_MATCH_ACTION_TYPE_DELETE : if ( bits < 8 ) *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & (( ~(mask << (byte_part*bits))) & 0xFF ); else - memset(cheat_manager_state.matches+idx,0,bytes_per_item); + memset(cheat_manager_state.matches+idx,0,bytes_per_item) ; if ( cheat_manager_state.num_matches > 0 ) - cheat_manager_state.num_matches--; + cheat_manager_state.num_matches-- ; runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS), 1, 180, true); - return; + return ; } } - curr_match_idx++; + curr_match_idx++ ; } } @@ -1521,8 +1489,8 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig int cheat_manager_copy_match(rarch_setting_t *setting, bool wraparound) { cheat_manager_match_action(CHEAT_MATCH_ACTION_TYPE_COPY, - cheat_manager_state.match_idx, NULL, NULL, NULL, NULL); - return 0; + cheat_manager_state.match_idx, NULL, NULL, NULL, NULL) ; + return 0 ; } int cheat_manager_delete_match(rarch_setting_t *setting, bool wraparound) diff --git a/managers/cheat_manager.h b/managers/cheat_manager.h index 1e0737bcbc..917ea711b8 100644 --- a/managers/cheat_manager.h +++ b/managers/cheat_manager.h @@ -77,8 +77,7 @@ enum cheat_rumble_type RUMBLE_TYPE_LT_VALUE, RUMBLE_TYPE_GT_VALUE, RUMBLE_TYPE_INCREASE_BY_VALUE, - RUMBLE_TYPE_DECREASE_BY_VALUE, - RUMBLE_TYPE_END_LIST + RUMBLE_TYPE_DECREASE_BY_VALUE }; /* Some codes are ridiculously large - over 10000 bytes */ @@ -179,8 +178,6 @@ struct cheat_manager unsigned browse_address; char working_desc[CHEAT_DESC_SCRATCH_SIZE] ; char working_code[CHEAT_CODE_SCRATCH_SIZE] ; - unsigned int loading_cheat_size; - unsigned int loading_cheat_offset; }; typedef struct cheat_manager cheat_manager_t; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 0110f9ef21..dee87c546a 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -45,7 +45,7 @@ RETRO_BEGIN_DECLS #endif #ifndef MAX_CHEAT_COUNTERS -#define MAX_CHEAT_COUNTERS 6000 +#define MAX_CHEAT_COUNTERS 100 #endif #define MENU_SETTINGS_CORE_INFO_NONE 0xffff diff --git a/menu/menu_setting.c b/menu/menu_setting.c index fbf57eab1b..0f6b8e889b 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4745,7 +4745,7 @@ static bool setting_append_list( config_uint_cbs(cheat_manager_state.working_cheat.rumble_type, CHEAT_RUMBLE_TYPE, setting_uint_action_left_default,setting_uint_action_right_default, MENU_ENUM_LABEL_RUMBLE_TYPE_DISABLED,&setting_get_string_representation_uint_as_enum, - RUMBLE_TYPE_DISABLED,RUMBLE_TYPE_END_LIST-1,1) ; + RUMBLE_TYPE_DISABLED,RUMBLE_TYPE_GT_VALUE,1) ; (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; config_uint_cbs(cheat_manager_state.working_cheat.rumble_value, CHEAT_RUMBLE_VALUE, From 2517670f80cd012ed27ca69b8a64d21beb527679 Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Wed, 10 Oct 2018 17:53:27 -0400 Subject: [PATCH 016/304] gdi: remove unused variable --- gfx/drivers_font/gdi_font.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/gfx/drivers_font/gdi_font.c b/gfx/drivers_font/gdi_font.c index 2cb7e0e981..baa236d6ab 100644 --- a/gfx/drivers_font/gdi_font.c +++ b/gfx/drivers_font/gdi_font.c @@ -86,7 +86,7 @@ static void gdi_render_msg( void *data, const char *msg, const struct font_params *params) { - float x, y, scale, drop_mod, alpha, drop_alpha; + float x, y, scale, drop_mod, drop_alpha; int drop_x, drop_y, msg_strlen; unsigned i; unsigned newX, newY, newDropX, newDropY; @@ -116,7 +116,6 @@ static void gdi_render_msg( red = FONT_COLOR_GET_RED(params->color); green = FONT_COLOR_GET_GREEN(params->color); blue = FONT_COLOR_GET_BLUE(params->color); - alpha = FONT_COLOR_GET_ALPHA(params->color); } else { @@ -131,7 +130,6 @@ static void gdi_render_msg( red = video_info->font_msg_color_r * 255.0f; green = video_info->font_msg_color_g * 255.0f; blue = video_info->font_msg_color_b * 255.0f; - alpha = 255; } msg_strlen = strlen(msg); From 454efe03dc18d862318c3a3101e9d522738da87d Mon Sep 17 00:00:00 2001 From: radius Date: Wed, 10 Oct 2018 19:02:36 -0500 Subject: [PATCH 017/304] fix auto shader preset loading in d3d10, d3d11, d3d12 --- gfx/drivers/d3d10.c | 6 ++++-- gfx/drivers/d3d11.c | 5 +++-- gfx/drivers/d3d12.c | 5 +++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/gfx/drivers/d3d10.c b/gfx/drivers/d3d10.c index dd08fdf786..b123cda661 100644 --- a/gfx/drivers/d3d10.c +++ b/gfx/drivers/d3d10.c @@ -23,6 +23,8 @@ #include "../../driver.h" #include "../../verbosity.h" #include "../../configuration.h" +#include "../../retroarch.h" + #include "../video_driver.h" #include "../font_driver.h" #include "../common/win32_common.h" @@ -909,10 +911,10 @@ d3d10_gfx_init(const video_info_t* video, if (settings->bools.video_shader_enable) { - const char* ext = path_get_extension(settings->paths.path_shader); + const char* ext = path_get_extension(retroarch_get_shader_preset()); if (ext && !strncmp(ext, "slang", 5)) - d3d10_gfx_set_shader(d3d10, RARCH_SHADER_SLANG, settings->paths.path_shader); + d3d10_gfx_set_shader(d3d10, RARCH_SHADER_SLANG, retroarch_get_shader_preset()); } #if 0 diff --git a/gfx/drivers/d3d11.c b/gfx/drivers/d3d11.c index 405894bbef..137ad02525 100644 --- a/gfx/drivers/d3d11.c +++ b/gfx/drivers/d3d11.c @@ -25,6 +25,7 @@ #include "../../driver.h" #include "../../verbosity.h" #include "../configuration.h" +#include "../../retroarch.h" #include "../video_driver.h" #include "../font_driver.h" #include "../common/win32_common.h" @@ -954,10 +955,10 @@ d3d11_gfx_init(const video_info_t* video, const input_driver_t** input, void** i if (settings->bools.video_shader_enable) { - const char* ext = path_get_extension(settings->paths.path_shader); + const char* ext = path_get_extension(retroarch_get_shader_preset()); if (ext && !strncmp(ext, "slang", 5)) - d3d11_gfx_set_shader(d3d11, RARCH_SHADER_SLANG, settings->paths.path_shader); + d3d11_gfx_set_shader(d3d11, RARCH_SHADER_SLANG, retroarch_get_shader_preset()); } if (video_driver_get_hw_context()->context_type == RETRO_HW_CONTEXT_DIRECT3D && diff --git a/gfx/drivers/d3d12.c b/gfx/drivers/d3d12.c index 0f2ab31178..c4dab9fcc3 100644 --- a/gfx/drivers/d3d12.c +++ b/gfx/drivers/d3d12.c @@ -31,6 +31,7 @@ #include "../../driver.h" #include "../../verbosity.h" #include "../../configuration.h" +#include "../../retroarch.h" #include "wiiu/wiiu_dbg.h" @@ -971,10 +972,10 @@ d3d12_gfx_init(const video_info_t* video, const input_driver_t** input, void** i if (settings->bools.video_shader_enable) { - const char* ext = path_get_extension(settings->paths.path_shader); + const char* ext = path_get_extension(retroarch_get_shader_preset()); if (ext && string_is_equal(ext, "slangp")) - d3d12_gfx_set_shader(d3d12, RARCH_SHADER_SLANG, settings->paths.path_shader); + d3d12_gfx_set_shader(d3d12, RARCH_SHADER_SLANG, retroarch_get_shader_preset()); } return d3d12; From 0782c3c82086e1f2a8eed64ed1d5623f18510e24 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 11 Oct 2018 03:26:39 +0200 Subject: [PATCH 018/304] Cleanups --- gfx/drivers/metal.m | 38 ++++++++++++++++++++++++-------------- retroarch.c | 3 +-- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/gfx/drivers/metal.m b/gfx/drivers/metal.m index 0fcd932d01..3496d035bf 100644 --- a/gfx/drivers/metal.m +++ b/gfx/drivers/metal.m @@ -1,9 +1,17 @@ -// -// metal.m -// RetroArch_Metal -// -// Created by Stuart Carnie on 5/14/18. -// +/* RetroArch - A frontend for libretro. + * Copyright (C) 2018 - Stuart Carnie + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ #import #import @@ -28,9 +36,7 @@ #endif #ifdef HAVE_MENU - #import "../../menu/menu_driver.h" - #endif #import "../font_driver.h" @@ -145,10 +151,12 @@ static void metal_free(void *data) static void metal_set_viewport(void *data, unsigned viewport_width, unsigned viewport_height, bool force_full, bool allow_rotate) { -// RARCH_LOG("[Metal]: set_viewport size: %dx%d full: %s rotate: %s\n", -// viewport_width, viewport_height, -// force_full ? "YES" : "NO", -// allow_rotate ? "YES" : "NO"); +#if 0 + RARCH_LOG("[Metal]: set_viewport size: %dx%d full: %s rotate: %s\n", + viewport_width, viewport_height, + force_full ? "YES" : "NO", + allow_rotate ? "YES" : "NO"); +#endif } static void metal_set_rotation(void *data, unsigned rotation) @@ -270,7 +278,9 @@ static void metal_set_texture_enable(void *data, bool state, bool full_screen) return; md.menu.enabled = state; - //md.menu.fullScreen = full_screen; +#if 0 + md.menu.fullScreen = full_screen; +#endif } static void metal_set_osd_msg(void *data, @@ -398,7 +408,7 @@ static const video_overlay_interface_t metal_overlay_interface = { }; static void metal_get_overlay_interface(void *data, - const video_overlay_interface_t **iface) + const video_overlay_interface_t **iface) { (void)data; *iface = &metal_overlay_interface; diff --git a/retroarch.c b/retroarch.c index ccfe66dc9f..4a286e30e7 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2060,8 +2060,7 @@ char* retroarch_get_shader_preset(void) return runtime_shader_preset; else if (!string_is_empty(settings->paths.path_shader)) return settings->paths.path_shader; - else - return NULL; + return NULL; } bool retroarch_override_setting_is_set(enum rarch_override_setting enum_idx, void *data) From c443d6b4753dffa2ed0a9f7e379cd5e4c9b841cb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 11 Oct 2018 03:26:58 +0200 Subject: [PATCH 019/304] Revert "Revert this - was getting crashes in both OSX and MSVC 2003" This reverts commit 7d0dba30071a6768448494435ce67400c509b7e5. --- libretro-common/file/config_file.c | 49 +- libretro-common/include/file/config_file.h | 14 + managers/cheat_manager.c | 784 +++++++++++---------- managers/cheat_manager.h | 5 +- menu/menu_driver.h | 2 +- menu/menu_setting.c | 2 +- 6 files changed, 457 insertions(+), 399 deletions(-) diff --git a/libretro-common/file/config_file.c b/libretro-common/file/config_file.c index 0a63e7781a..7dd671b662 100644 --- a/libretro-common/file/config_file.c +++ b/libretro-common/file/config_file.c @@ -66,7 +66,7 @@ struct config_include_list }; static config_file_t *config_file_new_internal( - const char *path, unsigned depth); + const char *path, unsigned depth, config_file_cb_t *cb); static int config_sort_compare_func(struct config_entry_list *a, struct config_entry_list *b) @@ -267,7 +267,7 @@ static void add_child_list(config_file_t *parent, config_file_t *child) parent->tail = NULL; } -static void add_sub_conf(config_file_t *conf, char *path) +static void add_sub_conf(config_file_t *conf, char *path, config_file_cb_t *cb) { char real_path[PATH_MAX_LENGTH]; config_file_t *sub_conf = NULL; @@ -314,7 +314,7 @@ static void add_sub_conf(config_file_t *conf, char *path) #endif sub_conf = (config_file_t*) - config_file_new_internal(real_path, conf->include_depth + 1); + config_file_new_internal(real_path, conf->include_depth + 1, cb); if (!sub_conf) return; @@ -324,7 +324,7 @@ static void add_sub_conf(config_file_t *conf, char *path) } static bool parse_line(config_file_t *conf, - struct config_entry_list *list, char *line) + struct config_entry_list *list, char *line, config_file_cb_t *cb) { char *comment = NULL; char *key_tmp = NULL; @@ -351,7 +351,7 @@ static bool parse_line(config_file_t *conf, if (conf->include_depth >= MAX_INCLUDE_DEPTH) fprintf(stderr, "!!! #include depth exceeded for config. Might be a cycle.\n"); else - add_sub_conf(conf, path); + add_sub_conf(conf, path, cb); free(path); } goto error; @@ -396,18 +396,19 @@ error: } static config_file_t *config_file_new_internal( - const char *path, unsigned depth) + const char *path, unsigned depth, config_file_cb_t *cb) { RFILE *file = NULL; struct config_file *conf = (struct config_file*)malloc(sizeof(*conf)); if (!conf) return NULL; - conf->path = NULL; - conf->entries = NULL; - conf->tail = NULL; - conf->includes = NULL; - conf->include_depth = 0; + conf->path = NULL; + conf->entries = NULL; + conf->tail = NULL; + conf->includes = NULL; + conf->include_depth = 0; + conf->guaranteed_no_duplicates = false ; if (!path || !*path) return conf; @@ -455,7 +456,7 @@ static config_file_t *config_file_new_internal( continue; } - if (*line && parse_line(conf, list, line)) + if (*line && parse_line(conf, list, line, cb)) { if (conf->entries) conf->tail->next = list; @@ -463,6 +464,9 @@ static config_file_t *config_file_new_internal( conf->entries = list; conf->tail = list; + + if (cb != NULL && list->key != NULL && list->value != NULL) + cb->config_file_new_entry_cb(list->key, list->value) ; } free(line); @@ -551,11 +555,12 @@ config_file_t *config_file_new_from_string(const char *from_string) if (!from_string) return conf; - conf->path = NULL; - conf->entries = NULL; - conf->tail = NULL; - conf->includes = NULL; - conf->include_depth = 0; + conf->path = NULL; + conf->entries = NULL; + conf->tail = NULL; + conf->includes = NULL; + conf->include_depth = 0; + conf->guaranteed_no_duplicates = false ; lines = string_split(from_string, "\n"); if (!lines) @@ -580,7 +585,7 @@ config_file_t *config_file_new_from_string(const char *from_string) if (line && conf) { - if (*line && parse_line(conf, list, line)) + if (*line && parse_line(conf, list, line, NULL)) { if (conf->entries) conf->tail->next = list; @@ -600,9 +605,13 @@ config_file_t *config_file_new_from_string(const char *from_string) return conf; } +config_file_t *config_file_new_with_callback(const char *path, config_file_cb_t *cb) +{ + return config_file_new_internal(path, 0, cb); +} config_file_t *config_file_new(const char *path) { - return config_file_new_internal(path, 0); + return config_file_new_internal(path, 0, NULL); } static struct config_entry_list *config_get_entry(const config_file_t *conf, @@ -834,7 +843,7 @@ bool config_get_bool(config_file_t *conf, const char *key, bool *in) void config_set_string(config_file_t *conf, const char *key, const char *val) { struct config_entry_list *last = conf->entries; - struct config_entry_list *entry = config_get_entry(conf, key, &last); + struct config_entry_list *entry = conf->guaranteed_no_duplicates?NULL:config_get_entry(conf, key, &last); if (entry && !entry->readonly) { diff --git a/libretro-common/include/file/config_file.h b/libretro-common/include/file/config_file.h index cbeac2ed98..e55430472d 100644 --- a/libretro-common/include/file/config_file.h +++ b/libretro-common/include/file/config_file.h @@ -58,6 +58,7 @@ struct config_file struct config_entry_list *entries; struct config_entry_list *tail; unsigned include_depth; + bool guaranteed_no_duplicates; struct config_include_list *includes; }; @@ -65,6 +66,13 @@ struct config_file typedef struct config_file config_file_t; +struct config_file_cb +{ + void (*config_file_new_entry_cb)(char*, char*); +}; + +typedef struct config_file_cb config_file_cb_t ; + /* Config file format * - # are treated as comments. Rest of the line is ignored. * - Format is: key = value. There can be as many spaces as you like in-between. @@ -79,6 +87,11 @@ typedef struct config_file config_file_t; * NULL path will create an empty config file. */ config_file_t *config_file_new(const char *path); +/* Loads a config file. Returns NULL if file doesn't exist. + * NULL path will create an empty config file. + * Includes cb callbacks to run custom code during config file processing.*/ +config_file_t *config_file_new_with_callback(const char *path, config_file_cb_t *cb); + /* Load a config file from a string. */ config_file_t *config_file_new_from_string(const char *from_string); @@ -178,3 +191,4 @@ bool config_file_exists(const char *path); RETRO_END_DECLS #endif + diff --git a/managers/cheat_manager.c b/managers/cheat_manager.c index 85296e55e4..d581e4790d 100644 --- a/managers/cheat_manager.c +++ b/managers/cheat_manager.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -88,8 +89,12 @@ void cheat_manager_apply_cheats(void) core_set_cheat(&cheat_info); } } - runloop_msg_queue_push(msg_hash_to_str(MSG_APPLYING_CHEAT), 1, 180, true); - RARCH_LOG("%s\n", msg_hash_to_str(MSG_APPLYING_CHEAT)); + + if (cheat_manager_state.size > 0) + { + runloop_msg_queue_push(msg_hash_to_str(MSG_APPLYING_CHEAT), 1, 180, true); + RARCH_LOG("%s\n", msg_hash_to_str(MSG_APPLYING_CHEAT)); + } #ifdef HAVE_CHEEVOS data_bool = idx != 0; @@ -103,7 +108,7 @@ void cheat_manager_set_code(unsigned i, const char *str) return; if (!string_is_empty(str)) - strcpy(cheat_manager_state.cheats[i].code,str) ; + strcpy(cheat_manager_state.cheats[i].code,str); cheat_manager_state.cheats[i].state = true; } @@ -146,7 +151,7 @@ bool cheat_manager_save(const char *path, const char *cheat_database, bool overw buf[0] = cheats_file[0] = '\0'; if ( (!cheat_manager_state.cheats) || cheat_manager_state.size==0 ) - return false ; + return false; if (!cheat_database) strlcpy(cheats_file, path, sizeof(cheats_file)); @@ -167,6 +172,8 @@ bool cheat_manager_save(const char *path, const char *cheat_database, bool overw if (!conf) return false; + conf->guaranteed_no_duplicates = true; + config_set_int(conf, "cheats", cheat_manager_state.size); for (i = 0; i < cheat_manager_state.size; i++) @@ -233,44 +240,42 @@ bool cheat_manager_copy_idx_to_working(unsigned idx) return false; } - memcpy(&(cheat_manager_state.working_cheat), &(cheat_manager_state.cheats[idx]), sizeof(struct item_cheat)) ; + memcpy(&(cheat_manager_state.working_cheat), &(cheat_manager_state.cheats[idx]), sizeof(struct item_cheat)); if ( cheat_manager_state.cheats[idx].desc != NULL ) - strlcpy(cheat_manager_state.working_desc, cheat_manager_state.cheats[idx].desc, CHEAT_DESC_SCRATCH_SIZE) ; + strlcpy(cheat_manager_state.working_desc, cheat_manager_state.cheats[idx].desc, CHEAT_DESC_SCRATCH_SIZE); else - cheat_manager_state.working_desc[0] = '\0' ; + cheat_manager_state.working_desc[0] = '\0'; if ( cheat_manager_state.cheats[idx].code != NULL ) - strlcpy(cheat_manager_state.working_code, cheat_manager_state.cheats[idx].code, CHEAT_CODE_SCRATCH_SIZE) ; + strlcpy(cheat_manager_state.working_code, cheat_manager_state.cheats[idx].code, CHEAT_CODE_SCRATCH_SIZE); else - cheat_manager_state.working_code[0] = '\0' ; + cheat_manager_state.working_code[0] = '\0'; - return true ; + return true; } bool cheat_manager_copy_working_to_idx(unsigned idx) { if ( (!cheat_manager_state.cheats) || (cheat_manager_state.size < idx+1)) - { return false; - } - memcpy(&(cheat_manager_state.cheats[idx]), &(cheat_manager_state.working_cheat), sizeof(struct item_cheat)) ; + memcpy(&(cheat_manager_state.cheats[idx]), &(cheat_manager_state.working_cheat), sizeof(struct item_cheat)); if ( cheat_manager_state.cheats[idx].desc != NULL ) - free(cheat_manager_state.cheats[idx].desc) ; + free(cheat_manager_state.cheats[idx].desc); - cheat_manager_state.cheats[idx].desc = strdup(cheat_manager_state.working_desc) ; + cheat_manager_state.cheats[idx].desc = strdup(cheat_manager_state.working_desc); if ( cheat_manager_state.cheats[idx].code != NULL ) - free(cheat_manager_state.cheats[idx].code) ; + free(cheat_manager_state.cheats[idx].code); - cheat_manager_state.cheats[idx].code = strdup(cheat_manager_state.working_code) ; - return true ; + cheat_manager_state.cheats[idx].code = strdup(cheat_manager_state.working_code); + return true; } static void cheat_manager_new(unsigned size) { unsigned i; - cheat_manager_free() ; + cheat_manager_free(); cheat_manager_state.buf_size = size; cheat_manager_state.size = size; @@ -283,147 +288,175 @@ static void cheat_manager_new(unsigned size) cheat_manager_state.buf_size = 0; cheat_manager_state.size = 0; cheat_manager_state.cheats = NULL; - return ; + return; } for (i = 0; i < cheat_manager_state.size; i++) { - cheat_manager_state.cheats[i].desc = NULL ; - cheat_manager_state.cheats[i].code = NULL ; + cheat_manager_state.cheats[i].desc = NULL; + cheat_manager_state.cheats[i].code = NULL; cheat_manager_state.cheats[i].state = false; cheat_manager_state.cheats[i].repeat_count = 1; cheat_manager_state.cheats[i].repeat_add_to_value = 0; cheat_manager_state.cheats[i].repeat_add_to_address = 1; } - return ; + return; +} + +void cheat_manager_load_cb_first_pass(char *key, char *value) +{ + errno = 0; + + if (string_is_equal(key, "cheats")) + { + cheat_manager_state.loading_cheat_size = (unsigned)strtoul(value, NULL, 0); + + if (errno != 0) + cheat_manager_state.loading_cheat_size = 0; + } +} + +void cheat_manager_load_cb_second_pass(char *key, char *value) +{ + char cheat_num_str[20]; + unsigned cheat_num; + unsigned cheat_idx; + int idx = 0; + int key_length; + errno = 0; + + if (strncmp(key, "cheat", 5) != 0) + return; + + idx = 5; + key_length = strlen(key); + + while (idx < key_length && key[idx] >= '0' && key[idx] <= '9' && idx < 24) + { + cheat_num_str[idx-5] = key[idx]; + idx++; + } + + cheat_num_str[idx-5] = '\0'; + + cheat_num = (unsigned)strtoul(cheat_num_str, NULL, 0); + + if (cheat_num+cheat_manager_state.loading_cheat_offset >= cheat_manager_state.size) + return; + + key = key+idx+1; + + cheat_idx = cheat_num+cheat_manager_state.loading_cheat_offset; + + if (string_is_equal(key, "address")) + cheat_manager_state.cheats[cheat_idx].address = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "address_bit_position")) + cheat_manager_state.cheats[cheat_idx].address_mask = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "big_endian")) + cheat_manager_state.cheats[cheat_idx].big_endian = (string_is_equal(value,"true") || string_is_equal(value,"1")); + else if (string_is_equal(key, "cheat_type")) + cheat_manager_state.cheats[cheat_idx].cheat_type = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "code")) + cheat_manager_state.cheats[cheat_idx].code = strdup(value); + else if (string_is_equal(key, "desc")) + cheat_manager_state.cheats[cheat_idx].desc = strdup(value); + else if (string_is_equal(key, "enable")) + cheat_manager_state.cheats[cheat_idx].state = (string_is_equal(value,"true") || string_is_equal(value,"1")); + else if (string_is_equal(key, "handler")) + cheat_manager_state.cheats[cheat_idx].handler = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "memory_search_size")) + cheat_manager_state.cheats[cheat_idx].memory_search_size = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "repeat_add_to_address")) + cheat_manager_state.cheats[cheat_idx].repeat_add_to_address = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "repeat_add_to_value")) + cheat_manager_state.cheats[cheat_idx].repeat_add_to_value = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "repeat_count")) + cheat_manager_state.cheats[cheat_idx].repeat_count = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "rumble_port")) + cheat_manager_state.cheats[cheat_idx].rumble_port = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "rumble_primary_duration")) + cheat_manager_state.cheats[cheat_idx].rumble_primary_duration = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "rumble_primary_strength")) + cheat_manager_state.cheats[cheat_idx].rumble_primary_strength = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "rumble_secondary_duration")) + cheat_manager_state.cheats[cheat_idx].rumble_secondary_duration = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "rumble_secondary_strength")) + cheat_manager_state.cheats[cheat_idx].rumble_secondary_strength = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "rumble_type")) + cheat_manager_state.cheats[cheat_idx].rumble_type = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "rumble_value")) + cheat_manager_state.cheats[cheat_idx].rumble_value = (unsigned)strtoul(value, NULL, 0); + else if (string_is_equal(key, "value")) + cheat_manager_state.cheats[cheat_idx].value = (unsigned)strtoul(value, NULL, 0); + } bool cheat_manager_load(const char *path, bool append) { + unsigned orig_size; unsigned cheats = 0, i; - config_file_t *conf = config_file_new(path); - unsigned orig_size ; - unsigned int* data_ptrs[16] = { NULL}; - char* keys[16] = { - "cheat%u_handler", - "cheat%u_memory_search_size", - "cheat%u_cheat_type", - "cheat%u_value", - "cheat%u_address", - "cheat%u_address_bit_position", - "cheat%u_rumble_type", - "cheat%u_rumble_value", - "cheat%u_rumble_port", - "cheat%u_rumble_primary_strength", - "cheat%u_rumble_primary_duration", - "cheat%u_rumble_secondary_strength", - "cheat%u_rumble_secondary_duration", - "cheat%u_repeat_count", - "cheat%u_repeat_add_to_value", - "cheat%u_repeat_add_to_address", - }; + config_file_cb_t cb; + config_file_t *conf = NULL; + + cb.config_file_new_entry_cb = cheat_manager_load_cb_first_pass; + + cheat_manager_state.loading_cheat_size = 0; + + conf = config_file_new_with_callback(path, &cb); if (!conf) return false; - config_get_uint(conf, "cheats", &cheats); + cheats = cheat_manager_state.loading_cheat_size; if (cheats == 0) goto error; - cheat_manager_alloc_if_empty() ; + config_file_free(conf); + conf = NULL; + + + cheat_manager_alloc_if_empty(); if ( append ) { - orig_size = cheat_manager_get_size() ; + orig_size = cheat_manager_get_size(); if ( orig_size == 0) { cheat_manager_new(cheats); } else { - cheats = cheats + orig_size ; - if (cheat_manager_realloc(cheats, CHEAT_HANDLER_TYPE_EMU)) - { - } + cheats = cheats + orig_size; + if (cheat_manager_realloc(cheats, CHEAT_HANDLER_TYPE_EMU)) { } } } else { - orig_size = 0 ; + orig_size = 0; cheat_manager_new(cheats); } + for (i = orig_size; i < cheats; i++) { - unsigned j; - char desc_key[256]; - char code_key[256]; - char enable_key[256]; - char endian_key[256]; - char *tmp = NULL; - bool tmp_bool = false; - - data_ptrs[0] = &cheat_manager_state.cheats[i].handler; - data_ptrs[1] = &cheat_manager_state.cheats[i].memory_search_size; - data_ptrs[2] = &cheat_manager_state.cheats[i].cheat_type; - data_ptrs[3] = &cheat_manager_state.cheats[i].value; - data_ptrs[4] = &cheat_manager_state.cheats[i].address; - data_ptrs[5] = &cheat_manager_state.cheats[i].address_mask; - data_ptrs[6] = &cheat_manager_state.cheats[i].rumble_type; - data_ptrs[7] = &cheat_manager_state.cheats[i].rumble_value; - data_ptrs[8] = &cheat_manager_state.cheats[i].rumble_port; - data_ptrs[9] = &cheat_manager_state.cheats[i].rumble_primary_strength; - data_ptrs[10] = &cheat_manager_state.cheats[i].rumble_primary_duration; - data_ptrs[11] = &cheat_manager_state.cheats[i].rumble_secondary_strength; - data_ptrs[12] = &cheat_manager_state.cheats[i].rumble_secondary_duration; - data_ptrs[13] = &cheat_manager_state.cheats[i].repeat_count; - data_ptrs[14] = &cheat_manager_state.cheats[i].repeat_add_to_value; - data_ptrs[15] = &cheat_manager_state.cheats[i].repeat_add_to_address; - - endian_key[0] = desc_key[0] = code_key[0] = enable_key[0] = '\0'; - - snprintf(desc_key, sizeof(desc_key), "cheat%u_desc", i-orig_size); - snprintf(code_key, sizeof(code_key), "cheat%u_code", i-orig_size); - snprintf(enable_key, sizeof(enable_key), "cheat%u_enable", i-orig_size); - snprintf(endian_key, sizeof(endian_key), "cheat%u_endian", i-orig_size); - - cheat_manager_state.cheats[i].idx = i ; - - cheat_manager_state.cheats[i].desc = NULL ; - cheat_manager_state.cheats[i].code = NULL ; - cheat_manager_state.cheats[i].state = false ; - cheat_manager_state.cheats[i].big_endian = false ; - - if (config_get_string(conf, desc_key, &tmp) && !string_is_empty(tmp)) - cheat_manager_state.cheats[i].desc = strdup(tmp) ; - - if (config_get_string(conf, code_key, &tmp) && !string_is_empty(tmp)) - cheat_manager_state.cheats[i].code = strdup(tmp) ; - - if (config_get_bool(conf, enable_key, &tmp_bool)) - cheat_manager_state.cheats[i].state = tmp_bool; - - if (config_get_bool(conf, endian_key, &tmp_bool)) - cheat_manager_state.cheats[i].big_endian = tmp_bool; - - if (tmp) - free(tmp); - - cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE ; + cheat_manager_state.cheats[i].idx = i; + cheat_manager_state.cheats[i].desc = NULL; + cheat_manager_state.cheats[i].code = NULL; + cheat_manager_state.cheats[i].state = false; + cheat_manager_state.cheats[i].big_endian = false; + cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE; cheat_manager_state.cheats[i].memory_search_size = 3; - for (j = 0 ; j < 16 ; j++ ) - { - char key[50] ; - unsigned val = 0; - snprintf(key, sizeof(key), keys[j], i-orig_size); - - if ( config_get_uint(conf, key, &val)) - *(data_ptrs[j]) = val ; - } } + cheat_manager_state.loading_cheat_offset = orig_size; + cb.config_file_new_entry_cb = cheat_manager_load_cb_second_pass; + conf = config_file_new_with_callback(path, &cb); + + if (!conf) + return false; + config_file_free(conf); return true; @@ -437,26 +470,26 @@ error: bool cheat_manager_realloc(unsigned new_size, unsigned default_handler) { unsigned i; - unsigned orig_size ; + unsigned orig_size; if (!cheat_manager_state.cheats) { cheat_manager_state.cheats = (struct item_cheat*) calloc(new_size, sizeof(struct item_cheat)); - orig_size = 0 ; + orig_size = 0; } else { - orig_size = cheat_manager_state.size ; + orig_size = cheat_manager_state.size; /* if size is decreasing, free the items that will be lost */ for (i = new_size; i < orig_size; i++) { if ( cheat_manager_state.cheats[i].code != NULL ) - free(cheat_manager_state.cheats[i].code) ; + free(cheat_manager_state.cheats[i].code); if ( cheat_manager_state.cheats[i].desc != NULL ) - free(cheat_manager_state.cheats[i].desc) ; + free(cheat_manager_state.cheats[i].desc); } cheat_manager_state.cheats = (struct item_cheat*) @@ -475,14 +508,14 @@ bool cheat_manager_realloc(unsigned new_size, unsigned default_handler) for (i = orig_size; i < cheat_manager_state.size; i++) { - memset(&(cheat_manager_state.cheats[i]), 0, sizeof(cheat_manager_state.cheats[i])) ; - cheat_manager_state.cheats[i].state = false; - cheat_manager_state.cheats[i].handler = default_handler; - cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE ; - cheat_manager_state.cheats[i].memory_search_size = 3; - cheat_manager_state.cheats[i].idx = i; - cheat_manager_state.cheats[i].repeat_count = 1; - cheat_manager_state.cheats[i].repeat_add_to_value = 0; + memset(&(cheat_manager_state.cheats[i]), 0, sizeof(cheat_manager_state.cheats[i])); + cheat_manager_state.cheats[i].state = false; + cheat_manager_state.cheats[i].handler = default_handler; + cheat_manager_state.cheats[i].cheat_type = CHEAT_TYPE_SET_TO_VALUE; + cheat_manager_state.cheats[i].memory_search_size = 3; + cheat_manager_state.cheats[i].idx = i; + cheat_manager_state.cheats[i].repeat_count = 1; + cheat_manager_state.cheats[i].repeat_add_to_value = 0; cheat_manager_state.cheats[i].repeat_add_to_address = 1; } @@ -491,37 +524,37 @@ bool cheat_manager_realloc(unsigned new_size, unsigned default_handler) void cheat_manager_free(void) { - unsigned i = 0 ; + unsigned i = 0; if (cheat_manager_state.cheats) { for (i = 0; i < cheat_manager_state.size; i++) { if ( cheat_manager_state.cheats[i].desc != NULL ) - free(cheat_manager_state.cheats[i].desc) ; + free(cheat_manager_state.cheats[i].desc); if ( cheat_manager_state.cheats[i].code != NULL ) - free(cheat_manager_state.cheats[i].code) ; + free(cheat_manager_state.cheats[i].code); } free(cheat_manager_state.cheats); } if ( cheat_manager_state.prev_memory_buf ) - free(cheat_manager_state.prev_memory_buf) ; + free(cheat_manager_state.prev_memory_buf); if ( cheat_manager_state.matches ) - free(cheat_manager_state.matches) ; + free(cheat_manager_state.matches); - cheat_manager_state.cheats = NULL ; - cheat_manager_state.size = 0 ; - cheat_manager_state.buf_size = 0 ; - cheat_manager_state.prev_memory_buf = NULL ; - cheat_manager_state.curr_memory_buf = NULL ; - cheat_manager_state.matches = NULL ; - cheat_manager_state.total_memory_size = 0 ; - cheat_manager_state.actual_memory_size = 0 ; - cheat_manager_state.memory_initialized = false ; - cheat_manager_state.memory_search_initialized = false ; + cheat_manager_state.cheats = NULL; + cheat_manager_state.size = 0; + cheat_manager_state.buf_size = 0; + cheat_manager_state.prev_memory_buf = NULL; + cheat_manager_state.curr_memory_buf = NULL; + cheat_manager_state.matches = NULL; + cheat_manager_state.total_memory_size = 0; + cheat_manager_state.actual_memory_size = 0; + cheat_manager_state.memory_initialized = false; + cheat_manager_state.memory_search_initialized = false; } @@ -551,7 +584,7 @@ void cheat_manager_toggle_index(unsigned i) cheat_manager_update(&cheat_manager_state, i); if (!settings) - return ; + return; if (settings->bools.apply_cheats_after_toggle) cheat_manager_apply_cheats(); @@ -620,18 +653,17 @@ bool cheat_manager_get_game_specific_filename(char * cheat_filename, size_t max_ struct retro_system_info system_info; if (!settings || !global || !cheat_filename) - return false ; + return false; if ( !core_get_system_info(&system_info) ) - return false ; - + return false; core_name = system_info.library_name; game_name = path_basename(global->name.cheatfile); if ( string_is_empty(settings->paths.path_cheat_database) || string_is_empty(core_name) || string_is_empty(game_name) ) - return false ; + return false; cheat_filename[0] = '\0'; strlcat(cheat_filename, settings->paths.path_cheat_database, max_length); @@ -644,23 +676,23 @@ bool cheat_manager_get_game_specific_filename(char * cheat_filename, size_t max_ strlcat(cheat_filename, game_name, max_length); - return true ; + return true; } void cheat_manager_load_game_specific_cheats() { - char cheat_file[PATH_MAX_LENGTH] ; + char cheat_file[PATH_MAX_LENGTH]; if (cheat_manager_get_game_specific_filename(cheat_file, PATH_MAX_LENGTH) ) - cheat_manager_load(cheat_file,true) ; + cheat_manager_load(cheat_file,true); } void cheat_manager_save_game_specific_cheats() { - char cheat_file[PATH_MAX_LENGTH] ; + char cheat_file[PATH_MAX_LENGTH]; if (cheat_manager_get_game_specific_filename(cheat_file, PATH_MAX_LENGTH) ) - cheat_manager_save(cheat_file, NULL, true) ; + cheat_manager_save(cheat_file, NULL, true); } @@ -671,11 +703,8 @@ void cheat_manager_state_free(void) bool cheat_manager_alloc_if_empty(void) { - if (!cheat_manager_state.cheats) - { cheat_manager_new(0); - } return true; } @@ -693,6 +722,9 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) return 0; } + if ( meminfo.size == 0 ) + return 0; + cheat_manager_state.actual_memory_size = (unsigned)meminfo.size; cheat_manager_state.curr_memory_buf = meminfo.data; cheat_manager_state.total_memory_size = (unsigned)meminfo.size; @@ -746,84 +778,84 @@ static void cheat_manager_setup_search_meta(unsigned int bitsize, unsigned int * { case 0 : { - *bytes_per_item = 1 ; - *bits = 1 ; - *mask = 0x01 ; - break ; + *bytes_per_item = 1; + *bits = 1; + *mask = 0x01; + break; } case 1 : { - *bytes_per_item = 1 ; - *bits = 2 ; - *mask = 0x03 ; - break ; + *bytes_per_item = 1; + *bits = 2; + *mask = 0x03; + break; } case 2 : { - *bytes_per_item = 1 ; - *bits = 4 ; - *mask = 0x0F ; - break ; + *bytes_per_item = 1; + *bits = 4; + *mask = 0x0F; + break; } case 3 : { - *bytes_per_item = 1 ; - *bits = 8 ; - *mask = 0xFF ; - break ; + *bytes_per_item = 1; + *bits = 8; + *mask = 0xFF; + break; } case 4 : { - *bytes_per_item = 2 ; - *bits = 8 ; - *mask = 0xFFFF ; - break ; + *bytes_per_item = 2; + *bits = 8; + *mask = 0xFFFF; + break; } case 5 : { - *bytes_per_item = 4 ; - *bits = 8 ; - *mask = 0xFFFFFFFF ; - break ; + *bytes_per_item = 4; + *bits = 8; + *mask = 0xFFFFFFFF; + break; } } } int cheat_manager_search_exact(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EXACT) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_EXACT); } int cheat_manager_search_lt(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_LT) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_LT); } int cheat_manager_search_gt(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_GT) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_GT); } int cheat_manager_search_lte(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_LTE) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_LTE); } int cheat_manager_search_gte(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_GTE) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_GTE); } int cheat_manager_search_eq(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EQ) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_EQ); } int cheat_manager_search_neq(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_NEQ) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_NEQ); } int cheat_manager_search_eqplus(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EQPLUS) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_EQPLUS); } int cheat_manager_search_eqminus(rarch_setting_t *setting, bool wraparound) { - return cheat_manager_search(CHEAT_SEARCH_TYPE_EQMINUS) ; + return cheat_manager_search(CHEAT_SEARCH_TYPE_EQMINUS); } int cheat_manager_search(enum cheat_search_type search_type) @@ -842,14 +874,14 @@ int cheat_manager_search(enum cheat_search_type search_type) if (!cheat_manager_state.curr_memory_buf) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_NOT_INITIALIZED), 1, 180, true); - return 0 ; + return 0; } - cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits) ; + cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits); /* little endian FF000000 = 256 */ - for (idx = 0 ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item) + for (idx = 0; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) { unsigned byte_part; @@ -859,73 +891,73 @@ int cheat_manager_search(enum cheat_search_type search_type) { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256) ; + *(curr+idx) + (*(curr+idx+1)*256); prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256) + *(prev+idx+1) : - *(prev+idx) + (*(prev+idx+1)*256) ; - break ; + *(prev+idx) + (*(prev+idx+1)*256); + break; } case 4 : { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256*256*256) + (*(prev+idx+1)*256*256) + (*(prev+idx+2)*256) + *(prev+idx+3) : - *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256) ; - break ; + *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256); + break; } case 1 : default : { - curr_val = *(curr+idx) ; - prev_val = *(prev+idx) ; - break ; + curr_val = *(curr+idx); + prev_val = *(prev+idx); + break; } } - for (byte_part = 0 ; byte_part < 8/bits ; byte_part++) + for (byte_part = 0; byte_part < 8/bits; byte_part++) { - unsigned int curr_subval = (curr_val >> (byte_part*bits) ) & mask ; - unsigned int prev_subval = (prev_val >> (byte_part*bits) ) & mask ; - unsigned int prev_match ; + unsigned int curr_subval = (curr_val >> (byte_part*bits) ) & mask; + unsigned int prev_subval = (prev_val >> (byte_part*bits) ) & mask; + unsigned int prev_match; if (bits < 8 ) - prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; + prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)); else - prev_match = *(cheat_manager_state.matches+idx) ; + prev_match = *(cheat_manager_state.matches+idx); if (prev_match > 0) { - bool match = false ; + bool match = false; switch (search_type) { case CHEAT_SEARCH_TYPE_EXACT : - match = ( curr_subval == cheat_manager_state.search_exact_value) ; + match = ( curr_subval == cheat_manager_state.search_exact_value); break; case CHEAT_SEARCH_TYPE_LT : - match = ( curr_subval < prev_subval) ; + match = ( curr_subval < prev_subval); break; case CHEAT_SEARCH_TYPE_GT : - match = ( curr_subval > prev_subval) ; + match = ( curr_subval > prev_subval); break; case CHEAT_SEARCH_TYPE_LTE : - match = ( curr_subval <= prev_subval) ; + match = ( curr_subval <= prev_subval); break; case CHEAT_SEARCH_TYPE_GTE : - match = ( curr_subval >= prev_subval) ; + match = ( curr_subval >= prev_subval); break; case CHEAT_SEARCH_TYPE_EQ : - match = ( curr_subval == prev_subval) ; + match = ( curr_subval == prev_subval); break; case CHEAT_SEARCH_TYPE_NEQ : - match = ( curr_subval != prev_subval) ; + match = ( curr_subval != prev_subval); break; case CHEAT_SEARCH_TYPE_EQPLUS : - match = ( curr_subval == prev_subval+cheat_manager_state.search_eqplus_value) ; + match = ( curr_subval == prev_subval+cheat_manager_state.search_eqplus_value); break; case CHEAT_SEARCH_TYPE_EQMINUS : - match = ( curr_subval == prev_subval-cheat_manager_state.search_eqminus_value) ; + match = ( curr_subval == prev_subval-cheat_manager_state.search_eqminus_value); break; } if (!match ) @@ -934,9 +966,9 @@ int cheat_manager_search(enum cheat_search_type search_type) *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & (( ~(mask << (byte_part*bits))) & 0xFF ); else - memset(cheat_manager_state.matches+idx,0,bytes_per_item) ; + memset(cheat_manager_state.matches+idx,0,bytes_per_item); if ( cheat_manager_state.num_matches > 0 ) - cheat_manager_state.num_matches-- ; + cheat_manager_state.num_matches--; } } } @@ -944,7 +976,7 @@ int cheat_manager_search(enum cheat_search_type search_type) memcpy(cheat_manager_state.prev_memory_buf, cheat_manager_state.curr_memory_buf, cheat_manager_state.actual_memory_size); - snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_FOUND_MATCHES), cheat_manager_state.num_matches) ; + snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_FOUND_MATCHES), cheat_manager_state.num_matches); msg[sizeof(msg) - 1] = 0; runloop_msg_queue_push(msg, 1, 180, true); @@ -953,7 +985,7 @@ int cheat_manager_search(enum cheat_search_type search_type) menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); #endif - return 0 ; + return 0; } bool cheat_manager_add_new_code(unsigned int memory_search_size, unsigned int address, unsigned int address_mask, @@ -962,15 +994,15 @@ bool cheat_manager_add_new_code(unsigned int memory_search_size, unsigned int ad int new_size = cheat_manager_get_size() + 1; if ( !cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_RETRO) ) - return false ; + return false; - cheat_manager_state.cheats[cheat_manager_state.size-1].address = address ; - cheat_manager_state.cheats[cheat_manager_state.size-1].address_mask = address_mask ; - cheat_manager_state.cheats[cheat_manager_state.size-1].memory_search_size = memory_search_size ; - cheat_manager_state.cheats[cheat_manager_state.size-1].value = value ; - cheat_manager_state.cheats[cheat_manager_state.size-1].big_endian = big_endian ; + cheat_manager_state.cheats[cheat_manager_state.size-1].address = address; + cheat_manager_state.cheats[cheat_manager_state.size-1].address_mask = address_mask; + cheat_manager_state.cheats[cheat_manager_state.size-1].memory_search_size = memory_search_size; + cheat_manager_state.cheats[cheat_manager_state.size-1].value = value; + cheat_manager_state.cheats[cheat_manager_state.size-1].big_endian = big_endian; - return true ; + return true; } int cheat_manager_add_matches(const char *path, const char *label, unsigned type, size_t menuidx, size_t entry_idx) @@ -989,66 +1021,66 @@ int cheat_manager_add_matches(const char *path, if ( cheat_manager_state.num_matches + cheat_manager_state.size > 100 ) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_TOO_MANY), 1, 180, true); - return 0 ; + return 0; } - cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits) ; + cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits); - for (idx = 0 ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item) + for (idx = 0; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) { switch ( bytes_per_item ) { case 2 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256) ; - break ; + *(curr+idx) + (*(curr+idx+1)*256); + break; case 4 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; - break ; + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); + break; case 1 : default : - curr_val = *(curr+idx) ; - break ; + curr_val = *(curr+idx); + break; } - for (byte_part = 0 ; byte_part < 8/bits ; byte_part++) + for (byte_part = 0; byte_part < 8/bits; byte_part++) { unsigned int prev_match; if (bits < 8 ) { - prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; + prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)); if (prev_match) { if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, (mask << (byte_part*bits)), cheat_manager_state.big_endian, curr_val) ) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL), 1, 180, true); - return 0 ; + return 0; } - num_added++ ; + num_added++; } } else { - prev_match = *(cheat_manager_state.matches+idx) ; + prev_match = *(cheat_manager_state.matches+idx); if (prev_match) { if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF, cheat_manager_state.big_endian, curr_val)) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL), 1, 180, true); - return 0 ; + return 0; } - num_added++ ; + num_added++; } } } } - snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_SUCCESS), cheat_manager_state.num_matches) ; + snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_SUCCESS), cheat_manager_state.num_matches); msg[sizeof(msg) - 1] = 0; runloop_msg_queue_push(msg, 1, 180, true); @@ -1070,38 +1102,38 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu case RUMBLE_TYPE_DISABLED: return; case RUMBLE_TYPE_CHANGES: - rumble = (curr_value != cheat->rumble_prev_value) ; - break ; + rumble = (curr_value != cheat->rumble_prev_value); + break; case RUMBLE_TYPE_DOES_NOT_CHANGE: - rumble = (curr_value == cheat->rumble_prev_value) ; - break ; + rumble = (curr_value == cheat->rumble_prev_value); + break; case RUMBLE_TYPE_INCREASE: - rumble = (curr_value > cheat->rumble_prev_value) ; - break ; + rumble = (curr_value > cheat->rumble_prev_value); + break; case RUMBLE_TYPE_DECREASE: - rumble = (curr_value < cheat->rumble_prev_value) ; - break ; + rumble = (curr_value < cheat->rumble_prev_value); + break; case RUMBLE_TYPE_EQ_VALUE: - rumble = (curr_value == cheat->rumble_value) ; - break ; + rumble = (curr_value == cheat->rumble_value); + break; case RUMBLE_TYPE_NEQ_VALUE: - rumble = (curr_value != cheat->rumble_value) ; - break ; + rumble = (curr_value != cheat->rumble_value); + break; case RUMBLE_TYPE_LT_VALUE: - rumble = (curr_value < cheat->rumble_value) ; - break ; + rumble = (curr_value < cheat->rumble_value); + break; case RUMBLE_TYPE_GT_VALUE: - rumble = (curr_value > cheat->rumble_value) ; + rumble = (curr_value > cheat->rumble_value); break; case RUMBLE_TYPE_INCREASE_BY_VALUE: - rumble = (curr_value == cheat->rumble_prev_value + cheat->rumble_value) ; - break ; + rumble = (curr_value == cheat->rumble_prev_value + cheat->rumble_value); + break; case RUMBLE_TYPE_DECREASE_BY_VALUE: - rumble = (curr_value == cheat->rumble_prev_value - cheat->rumble_value) ; - break ; + rumble = (curr_value == cheat->rumble_prev_value - cheat->rumble_value); + break; } - cheat->rumble_prev_value = curr_value ; + cheat->rumble_prev_value = curr_value; /* Give the emulator enough time * to initialize, load state, etc */ @@ -1109,15 +1141,15 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu { if (rumble) { - cheat->rumble_primary_end_time = cpu_features_get_time_usec() + (cheat->rumble_primary_duration*1000) ; - cheat->rumble_secondary_end_time = cpu_features_get_time_usec() + (cheat->rumble_secondary_duration*1000) ; + cheat->rumble_primary_end_time = cpu_features_get_time_usec() + (cheat->rumble_primary_duration*1000); + cheat->rumble_secondary_end_time = cpu_features_get_time_usec() + (cheat->rumble_secondary_duration*1000); input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_STRONG, cheat->rumble_primary_strength); input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_WEAK, cheat->rumble_secondary_strength); } } else { - cheat->rumble_initialized++ ; + cheat->rumble_initialized++; return; } @@ -1136,7 +1168,7 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu { if (cheat->rumble_secondary_end_time != 0) input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_WEAK, 0); - cheat->rumble_secondary_end_time = 0 ; + cheat->rumble_secondary_end_time = 0; } else { @@ -1156,19 +1188,19 @@ void cheat_manager_apply_retro_cheats(void) if ((!cheat_manager_state.cheats)) return; - for (i = 0 ; i < cheat_manager_state.size ; i++ ) + for (i = 0; i < cheat_manager_state.size; i++ ) { unsigned char *curr; unsigned int idx; bool set_value = false; unsigned int value_to_set = 0; - unsigned int repeat_iter = 0 ; - unsigned int address_mask = cheat_manager_state.cheats[i].address_mask ; + unsigned int repeat_iter = 0; + unsigned int address_mask = cheat_manager_state.cheats[i].address_mask; if (cheat_manager_state.cheats[i].handler != CHEAT_HANDLER_TYPE_RETRO || !cheat_manager_state.cheats[i].state) - continue ; + continue; if (!cheat_manager_state.memory_initialized) - cheat_manager_initialize_memory(NULL, false) ; + cheat_manager_initialize_memory(NULL, false); /* If we're still not initialized, something * must have gone wrong - just bail */ @@ -1177,13 +1209,13 @@ void cheat_manager_apply_retro_cheats(void) if (!run_cheat) { - run_cheat = true ; - continue ; + run_cheat = true; + continue; } - cheat_manager_setup_search_meta(cheat_manager_state.cheats[i].memory_search_size, &bytes_per_item, &mask, &bits) ; + cheat_manager_setup_search_meta(cheat_manager_state.cheats[i].memory_search_size, &bytes_per_item, &mask, &bits); - curr = cheat_manager_state.curr_memory_buf ; - idx = cheat_manager_state.cheats[i].address ; + curr = cheat_manager_state.curr_memory_buf; + idx = cheat_manager_state.cheats[i].address; switch (bytes_per_item) { @@ -1191,142 +1223,142 @@ void cheat_manager_apply_retro_cheats(void) { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256) ; - break ; + *(curr+idx) + (*(curr+idx+1)*256); + break; } case 4 : { curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; - break ; + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); + break; } case 1 : default : { - curr_val = *(curr+idx) ; - break ; + curr_val = *(curr+idx); + break; } } - cheat_manager_apply_rumble(&cheat_manager_state.cheats[i], curr_val) ; + cheat_manager_apply_rumble(&cheat_manager_state.cheats[i], curr_val); switch (cheat_manager_state.cheats[i].cheat_type ) { case CHEAT_TYPE_SET_TO_VALUE : - set_value = true ; - value_to_set = cheat_manager_state.cheats[i].value ; - break ; + set_value = true; + value_to_set = cheat_manager_state.cheats[i].value; + break; case CHEAT_TYPE_INCREASE_VALUE: - set_value = true ; - value_to_set = curr_val + cheat_manager_state.cheats[i].value ; + set_value = true; + value_to_set = curr_val + cheat_manager_state.cheats[i].value; break; case CHEAT_TYPE_DECREASE_VALUE: - set_value = true ; - value_to_set = curr_val - cheat_manager_state.cheats[i].value ; + set_value = true; + value_to_set = curr_val - cheat_manager_state.cheats[i].value; break; case CHEAT_TYPE_RUN_NEXT_IF_EQ: if (!(curr_val == cheat_manager_state.cheats[i].value)) - run_cheat = false ; + run_cheat = false; break; case CHEAT_TYPE_RUN_NEXT_IF_NEQ: if (!(curr_val != cheat_manager_state.cheats[i].value )) - run_cheat = false ; + run_cheat = false; break; case CHEAT_TYPE_RUN_NEXT_IF_LT: if (!(cheat_manager_state.cheats[i].value < curr_val)) - run_cheat = false ; + run_cheat = false; break; case CHEAT_TYPE_RUN_NEXT_IF_GT: if (!(cheat_manager_state.cheats[i].value > curr_val)) - run_cheat = false ; + run_cheat = false; break; } if (set_value) { - for ( repeat_iter = 1 ; repeat_iter <= cheat_manager_state.cheats[i].repeat_count ; repeat_iter++) + for ( repeat_iter = 1; repeat_iter <= cheat_manager_state.cheats[i].repeat_count; repeat_iter++) { switch (bytes_per_item) { case 2 : if (cheat_manager_state.cheats[i].big_endian) { - *(curr+idx) = (value_to_set >> 8) & 0xFF ; - *(curr+idx+1) = value_to_set & 0xFF ; + *(curr+idx) = (value_to_set >> 8) & 0xFF; + *(curr+idx+1) = value_to_set & 0xFF; } else { - *(curr+idx) = value_to_set & 0xFF ; - *(curr+idx+1) = (value_to_set >> 8) & 0xFF ; + *(curr+idx) = value_to_set & 0xFF; + *(curr+idx+1) = (value_to_set >> 8) & 0xFF; } - break ; + break; case 4 : if (cheat_manager_state.cheats[i].big_endian) { - *(curr+idx) = (value_to_set >> 24) & 0xFF ; - *(curr+idx+1) = (value_to_set >> 16) & 0xFF ; - *(curr+idx+2) = (value_to_set >> 8) & 0xFF ; - *(curr+idx+3) = value_to_set & 0xFF ; + *(curr+idx) = (value_to_set >> 24) & 0xFF; + *(curr+idx+1) = (value_to_set >> 16) & 0xFF; + *(curr+idx+2) = (value_to_set >> 8) & 0xFF; + *(curr+idx+3) = value_to_set & 0xFF; } else { - *(curr+idx) = value_to_set & 0xFF ; - *(curr+idx+1) = (value_to_set >> 8) & 0xFF ; - *(curr+idx+2) = (value_to_set >> 16) & 0xFF ; - *(curr+idx+3) = (value_to_set >> 24) & 0xFF ; + *(curr+idx) = value_to_set & 0xFF; + *(curr+idx+1) = (value_to_set >> 8) & 0xFF; + *(curr+idx+2) = (value_to_set >> 16) & 0xFF; + *(curr+idx+3) = (value_to_set >> 24) & 0xFF; } - break ; + break; case 1 : if (bits < 8) { unsigned bitpos; unsigned char val = *(curr+idx); - for (bitpos = 0 ; bitpos < 8 ; bitpos++) + for (bitpos = 0; bitpos < 8; bitpos++) { if ((address_mask>>bitpos)&0x01 ) { - mask = (~(1<>bitpos)&0x01)<>bitpos)&0x01)< cheat_manager_state.num_matches-1) @@ -1355,57 +1387,57 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits); if (match_action == CHEAT_MATCH_ACTION_TYPE_BROWSE) - start_idx = *address ; + start_idx = *address; else - start_idx = 0 ; + start_idx = 0; - for (idx = start_idx ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item) + for (idx = start_idx; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) { switch (bytes_per_item ) { case 2 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256) ; + *(curr+idx) + (*(curr+idx+1)*256); if (prev != NULL) prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256) + *(prev+idx+1) : - *(prev+idx) + (*(prev+idx+1)*256) ; - break ; + *(prev+idx) + (*(prev+idx+1)*256); + break; case 4 : curr_val = cheat_manager_state.big_endian ? (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; + *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); if (prev != NULL) prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256*256*256) + (*(prev+idx+1)*256*256) + (*(prev+idx+2)*256) + *(prev+idx+3) : - *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256) ; - break ; + *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256); + break; case 1 : default : - curr_val = *(curr+idx) ; + curr_val = *(curr+idx); if (prev != NULL) - prev_val = *(prev+idx) ; - break ; + prev_val = *(prev+idx); + break; } if (match_action == CHEAT_MATCH_ACTION_TYPE_BROWSE) { *curr_value = curr_val; *prev_value = prev_val; - return ; + return; } if (!prev) return; - for (byte_part = 0 ; byte_part < 8/bits ; byte_part++) + for (byte_part = 0; byte_part < 8/bits; byte_part++) { - unsigned int prev_match ; + unsigned int prev_match; if (bits < 8 ) { - prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; + prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)); if (prev_match) { if (target_match_idx == curr_match_idx) @@ -1413,12 +1445,12 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig switch (match_action) { case CHEAT_MATCH_ACTION_TYPE_BROWSE : - return ; + return; case CHEAT_MATCH_ACTION_TYPE_VIEW : - *address = idx ; - *address_mask = (mask << (byte_part*bits)) ; - *curr_value = curr_val ; - *prev_value = prev_val ; + *address = idx; + *address_mask = (mask << (byte_part*bits)); + *curr_value = curr_val; + *prev_value = prev_val; return; case CHEAT_MATCH_ACTION_TYPE_COPY : if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, (mask << (byte_part*bits)), @@ -1426,26 +1458,26 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_FAIL), 1, 180, true); else runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS), 1, 180, true); - return ; + return; case CHEAT_MATCH_ACTION_TYPE_DELETE : if (bits < 8) *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & (( ~(mask << (byte_part*bits))) & 0xFF ); else - memset(cheat_manager_state.matches+idx,0,bytes_per_item) ; + memset(cheat_manager_state.matches+idx,0,bytes_per_item); if ( cheat_manager_state.num_matches > 0 ) - cheat_manager_state.num_matches-- ; + cheat_manager_state.num_matches--; runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS), 1, 180, true); return; } return; } - curr_match_idx++ ; + curr_match_idx++; } } else { - prev_match = *(cheat_manager_state.matches+idx) ; + prev_match = *(cheat_manager_state.matches+idx); if (prev_match) { if (target_match_idx == curr_match_idx) @@ -1453,33 +1485,33 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig switch (match_action) { case CHEAT_MATCH_ACTION_TYPE_BROWSE : - return ; + return; case CHEAT_MATCH_ACTION_TYPE_VIEW : - *address = idx ; - *address_mask = 0xFF ; - *curr_value = curr_val ; - *prev_value = prev_val ; - return ; + *address = idx; + *address_mask = 0xFF; + *curr_value = curr_val; + *prev_value = prev_val; + return; case CHEAT_MATCH_ACTION_TYPE_COPY : if ( !cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF, cheat_manager_state.big_endian, curr_val) ) runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_FAIL), 1, 180, true); else runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS), 1, 180, true); - return ; + return; case CHEAT_MATCH_ACTION_TYPE_DELETE : if ( bits < 8 ) *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & (( ~(mask << (byte_part*bits))) & 0xFF ); else - memset(cheat_manager_state.matches+idx,0,bytes_per_item) ; + memset(cheat_manager_state.matches+idx,0,bytes_per_item); if ( cheat_manager_state.num_matches > 0 ) - cheat_manager_state.num_matches-- ; + cheat_manager_state.num_matches--; runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS), 1, 180, true); - return ; + return; } } - curr_match_idx++ ; + curr_match_idx++; } } @@ -1489,8 +1521,8 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig int cheat_manager_copy_match(rarch_setting_t *setting, bool wraparound) { cheat_manager_match_action(CHEAT_MATCH_ACTION_TYPE_COPY, - cheat_manager_state.match_idx, NULL, NULL, NULL, NULL) ; - return 0 ; + cheat_manager_state.match_idx, NULL, NULL, NULL, NULL); + return 0; } int cheat_manager_delete_match(rarch_setting_t *setting, bool wraparound) diff --git a/managers/cheat_manager.h b/managers/cheat_manager.h index 917ea711b8..1e0737bcbc 100644 --- a/managers/cheat_manager.h +++ b/managers/cheat_manager.h @@ -77,7 +77,8 @@ enum cheat_rumble_type RUMBLE_TYPE_LT_VALUE, RUMBLE_TYPE_GT_VALUE, RUMBLE_TYPE_INCREASE_BY_VALUE, - RUMBLE_TYPE_DECREASE_BY_VALUE + RUMBLE_TYPE_DECREASE_BY_VALUE, + RUMBLE_TYPE_END_LIST }; /* Some codes are ridiculously large - over 10000 bytes */ @@ -178,6 +179,8 @@ struct cheat_manager unsigned browse_address; char working_desc[CHEAT_DESC_SCRATCH_SIZE] ; char working_code[CHEAT_CODE_SCRATCH_SIZE] ; + unsigned int loading_cheat_size; + unsigned int loading_cheat_offset; }; typedef struct cheat_manager cheat_manager_t; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index dee87c546a..0110f9ef21 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -45,7 +45,7 @@ RETRO_BEGIN_DECLS #endif #ifndef MAX_CHEAT_COUNTERS -#define MAX_CHEAT_COUNTERS 100 +#define MAX_CHEAT_COUNTERS 6000 #endif #define MENU_SETTINGS_CORE_INFO_NONE 0xffff diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 0f6b8e889b..fbf57eab1b 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4745,7 +4745,7 @@ static bool setting_append_list( config_uint_cbs(cheat_manager_state.working_cheat.rumble_type, CHEAT_RUMBLE_TYPE, setting_uint_action_left_default,setting_uint_action_right_default, MENU_ENUM_LABEL_RUMBLE_TYPE_DISABLED,&setting_get_string_representation_uint_as_enum, - RUMBLE_TYPE_DISABLED,RUMBLE_TYPE_GT_VALUE,1) ; + RUMBLE_TYPE_DISABLED,RUMBLE_TYPE_END_LIST-1,1) ; (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; config_uint_cbs(cheat_manager_state.working_cheat.rumble_value, CHEAT_RUMBLE_VALUE, From 49a3514147eab34132b2af65683871ca3bdd4e6a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 11 Oct 2018 03:27:06 +0200 Subject: [PATCH 020/304] Revert "Revert "bugfix cheat saving"" This reverts commit 98625796106ea6453102b67ac4108b856ed3b9a3. --- libretro-common/file/config_file.c | 7 ++++++- libretro-common/include/file/config_file.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libretro-common/file/config_file.c b/libretro-common/file/config_file.c index 7dd671b662..846fa2c6fc 100644 --- a/libretro-common/file/config_file.c +++ b/libretro-common/file/config_file.c @@ -406,6 +406,7 @@ static config_file_t *config_file_new_internal( conf->path = NULL; conf->entries = NULL; conf->tail = NULL; + conf->last = NULL; conf->includes = NULL; conf->include_depth = 0; conf->guaranteed_no_duplicates = false ; @@ -558,6 +559,7 @@ config_file_t *config_file_new_from_string(const char *from_string) conf->path = NULL; conf->entries = NULL; conf->tail = NULL; + conf->last = NULL; conf->includes = NULL; conf->include_depth = 0; conf->guaranteed_no_duplicates = false ; @@ -842,7 +844,7 @@ bool config_get_bool(config_file_t *conf, const char *key, bool *in) void config_set_string(config_file_t *conf, const char *key, const char *val) { - struct config_entry_list *last = conf->entries; + struct config_entry_list *last = (conf->guaranteed_no_duplicates && conf->last) ? conf->last : conf->entries; struct config_entry_list *entry = conf->guaranteed_no_duplicates?NULL:config_get_entry(conf, key, &last); if (entry && !entry->readonly) @@ -868,6 +870,9 @@ void config_set_string(config_file_t *conf, const char *key, const char *val) last->next = entry; else conf->entries = entry; + + conf->last = entry ; + } void config_unset(config_file_t *conf, const char *key) diff --git a/libretro-common/include/file/config_file.h b/libretro-common/include/file/config_file.h index e55430472d..d2d5b026f7 100644 --- a/libretro-common/include/file/config_file.h +++ b/libretro-common/include/file/config_file.h @@ -57,6 +57,7 @@ struct config_file char *path; struct config_entry_list *entries; struct config_entry_list *tail; + struct config_entry_list *last; unsigned include_depth; bool guaranteed_no_duplicates; From 08e8fa31449cb1ca929b82641efa7b7312895f0a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 11 Oct 2018 03:38:50 +0200 Subject: [PATCH 021/304] This shouldn't return false --- dynamic.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dynamic.c b/dynamic.c index e011d802fa..6613a4f03c 100644 --- a/dynamic.c +++ b/dynamic.c @@ -1373,8 +1373,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) return false; #if defined(HAVE_OPENGL) - if (!gl_set_core_context(cb->context_type)) - return false; + if (!gl_set_core_context(cb->context_type)) { } #endif cb->get_current_framebuffer = video_driver_get_current_framebuffer; From 75f8e2e7a166713f899a82752cea49a78d6afd68 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 11 Oct 2018 03:52:38 +0200 Subject: [PATCH 022/304] Revert --- gfx/drivers/gl.c | 68 +++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 8589a69c6e..66f45482d5 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -364,11 +364,10 @@ static void gl_set_viewport_wrapper(void *data, unsigned viewport_width, unsigned viewport_height, bool force_full, bool allow_rotate) { video_frame_info_t video_info; - gl_t *gl = (gl_t*)data; video_driver_build_info(&video_info); - gl_set_viewport(gl, &video_info, + gl_set_viewport(data, &video_info, viewport_width, viewport_height, force_full, allow_rotate); } @@ -954,7 +953,7 @@ static bool gl_frame(void *data, const void *frame, return false; #ifdef HAVE_LIBNX - /* Should be called once per frame */ + // Should be called once per frame if(!appletMainLoop()) return false; #endif @@ -1507,38 +1506,31 @@ static const gfx_ctx_driver_t *gl_get_context(gl_t *gl) struct retro_hw_render_callback *hwr = video_driver_get_hw_context(); unsigned major = hwr->version_major; unsigned minor = hwr->version_minor; - enum retro_hw_context_type ctx_type = hwr->context_type; - bool hw_context_in_use = ctx_type != RETRO_HW_CONTEXT_NONE; #ifdef HAVE_OPENGLES api = GFX_CTX_OPENGL_ES_API; api_name = "OpenGL ES 2.0"; - switch (ctx_type) + if (hwr->context_type == RETRO_HW_CONTEXT_OPENGLES3) { - case RETRO_HW_CONTEXT_OPENGLES3: - major = 3; - minor = 0; - api_name = "OpenGL ES 3.0"; - break; - case RETRO_HW_CONTEXT_OPENGLES_VERSION: - api_name = "OpenGL ES 3.1+"; - break; - case RETRO_HW_CONTEXT_NONE: - default: - break; + major = 3; + minor = 0; + api_name = "OpenGL ES 3.0"; } + else if (hwr->context_type == RETRO_HW_CONTEXT_OPENGLES_VERSION) + api_name = "OpenGL ES 3.1+"; #else - api = GFX_CTX_OPENGL_API; - api_name = "OpenGL"; + api = GFX_CTX_OPENGL_API; + api_name = "OpenGL"; #endif (void)api_name; gl_shared_context_use = settings->bools.video_shared_context - && hw_context_in_use; + && hwr->context_type != RETRO_HW_CONTEXT_NONE; - if (libretro_get_shared_context() && hw_context_in_use) + if ( (libretro_get_shared_context()) + && (hwr->context_type != RETRO_HW_CONTEXT_NONE)) gl_shared_context_use = true; return video_context_driver_init_first(gl, @@ -1788,30 +1780,28 @@ static void *gl_init(const video_info_t *video, hwr = video_driver_get_hw_context(); -#ifdef GL_CONTEXT_PROFILE_MASK if (hwr->context_type == RETRO_HW_CONTEXT_OPENGL_CORE) { - /* Check if we have a core context */ - GLint gl_flags = 0; - glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &gl_flags); + gfx_ctx_flags_t flags; - if (gl_flags & GL_CONTEXT_CORE_PROFILE_BIT) + gl_query_core_context_set(true); + gl->core_context_in_use = true; + + /** + * Ensure that the rest of the frontend knows we have a core context + */ + flags.flags = 0; + BIT32_SET(flags.flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT); + + video_context_driver_set_flags(&flags); + + RARCH_LOG("[GL]: Using Core GL context, setting up VAO...\n"); + if (!gl_check_capability(GL_CAPS_VAO)) { - RARCH_LOG("[GL]: Using Core GL context, setting up VAO...\n"); - if (!gl_check_capability(GL_CAPS_VAO)) - { - RARCH_ERR("[GL]: Failed to initialize VAOs.\n"); - goto error; - } - - if (gl_set_core_context(hwr->context_type)) - { - gl_query_core_context_set(true); - gl->core_context_in_use = true; - } + RARCH_ERR("[GL]: Failed to initialize VAOs.\n"); + goto error; } } -#endif if (!renderchain_gl_init_first(&gl->renderchain_driver, &gl->renderchain_data)) From 21e39c03897c42fd45cf58550093f1d8e588f0f4 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 11 Oct 2018 05:00:34 +0200 Subject: [PATCH 023/304] Cleanups --- managers/cheat_manager.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/managers/cheat_manager.c b/managers/cheat_manager.c index d581e4790d..6fd50412b7 100644 --- a/managers/cheat_manager.c +++ b/managers/cheat_manager.c @@ -322,15 +322,14 @@ void cheat_manager_load_cb_second_pass(char *key, char *value) char cheat_num_str[20]; unsigned cheat_num; unsigned cheat_idx; - int idx = 0; - int key_length; + int idx = 5; + size_t key_length = 0; errno = 0; if (strncmp(key, "cheat", 5) != 0) return; - idx = 5; - key_length = strlen(key); + key_length = strlen((const char*)key); while (idx < key_length && key[idx] >= '0' && key[idx] <= '9' && idx < 24) { From 85c1de7d3a406d69b0647da18d978f64a813cd0d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 11 Oct 2018 05:05:05 +0200 Subject: [PATCH 024/304] Cleanups --- gfx/drivers/gl.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 66f45482d5..0111500ad2 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -1782,18 +1782,10 @@ static void *gl_init(const video_info_t *video, if (hwr->context_type == RETRO_HW_CONTEXT_OPENGL_CORE) { - gfx_ctx_flags_t flags; - gl_query_core_context_set(true); gl->core_context_in_use = true; - /** - * Ensure that the rest of the frontend knows we have a core context - */ - flags.flags = 0; - BIT32_SET(flags.flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT); - - video_context_driver_set_flags(&flags); + gl_set_core_context(hwr->context_type); RARCH_LOG("[GL]: Using Core GL context, setting up VAO...\n"); if (!gl_check_capability(GL_CAPS_VAO)) From 8509132ebd26690909b4e9daf38a0ff6c190ae53 Mon Sep 17 00:00:00 2001 From: LamboLighting Date: Fri, 12 Oct 2018 01:22:33 +0300 Subject: [PATCH 025/304] (Language) Greek translation of RetroArch First steps of the translation. Still a WIP. Most of the menu labels have been translated. Lots of sublabels still need translation. --- Makefile.common | 3 +- griffin/griffin.c | 1 + intl/msg_hash_el.c | 2256 ++++++++ intl/msg_hash_el.h | 7677 ++++++++++++++++++++++++++++ intl/msg_hash_us.h | 4 + libretro-common/include/libretro.h | 1 + menu/menu_setting.c | 2 +- msg_hash.c | 6 + msg_hash.h | 4 + 9 files changed, 9952 insertions(+), 2 deletions(-) create mode 100644 intl/msg_hash_el.c create mode 100644 intl/msg_hash_el.h diff --git a/Makefile.common b/Makefile.common index bc1ea2b9f9..a9be11ef4e 100644 --- a/Makefile.common +++ b/Makefile.common @@ -308,7 +308,8 @@ OBJ += intl/msg_hash_de.o \ intl/msg_hash_vn.o \ intl/msg_hash_chs.o \ intl/msg_hash_cht.o \ - intl/msg_hash_ar.o + intl/msg_hash_ar.o \ + intl/msg_hash_el.o endif diff --git a/griffin/griffin.c b/griffin/griffin.c index 30d8c7718a..d1be92b996 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -1035,6 +1035,7 @@ RETROARCH #include "../intl/msg_hash_chs.c" #include "../intl/msg_hash_cht.c" #include "../intl/msg_hash_ar.c" +#include "../intl/msg_hash_el.c" #endif #include "../intl/msg_hash_us.c" diff --git a/intl/msg_hash_el.c b/intl/msg_hash_el.c new file mode 100644 index 0000000000..fe0dd74863 --- /dev/null +++ b/intl/msg_hash_el.c @@ -0,0 +1,2256 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2011-2017 - Daniel De Matteis + * Copyright (C) 2016-2017 - Brad Parker + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include + +#include +#include + +#include "../msg_hash.h" +#include "../verbosity.h" + +#ifdef RARCH_INTERNAL +#include "../configuration.h" + +int menu_hash_get_help_el_enum(enum msg_hash_enums msg, char *s, size_t len) +{ + settings_t *settings = config_get_ptr(); + + if (msg == MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM) + { + snprintf(s, len, + "TODO/FIXME - Fill in message here." + ); + return 0; + } + if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END && + msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN) + { + unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN; + + switch (idx) + { + case RARCH_FAST_FORWARD_KEY: + snprintf(s, len, + "Αλλαγή ανάμεσα σε γρήγορη και \n" + "κανονική ταχύτητα." + ); + break; + case RARCH_FAST_FORWARD_HOLD_KEY: + snprintf(s, len, + "Κρατήστε πατημένο για γρήγορη ταχύτητα. \n" + " \n" + "Αφήνοντας το κουμπί απενεργοποιείται η γρήγορη ταχύτητα." + ); + break; + case RARCH_SLOWMOTION_KEY: + snprintf(s, len, + "Αλλάζει την αργή ταχύτητα."); + break; + case RARCH_SLOWMOTION_HOLD_KEY: + snprintf(s, len, + "Κρατήστε για αρχή ταχύτητα."); + break; + case RARCH_PAUSE_TOGGLE: + snprintf(s, len, + "Αλλαγή ανάμεσα σε κατάσταση παύσης και μη παύσης."); + break; + case RARCH_FRAMEADVANCE: + snprintf(s, len, + "Προπόρευση καρέ κατά την παύση περιεχομένου."); + break; + case RARCH_SHADER_NEXT: + snprintf(s, len, + "Εφαρμόζει την επόμενη σκίαση στο ευρετήριο."); + break; + case RARCH_SHADER_PREV: + snprintf(s, len, + "Εφαρμόζει την προηγούμενη σκίαση στο ευρετήριο."); + break; + case RARCH_CHEAT_INDEX_PLUS: + case RARCH_CHEAT_INDEX_MINUS: + case RARCH_CHEAT_TOGGLE: + snprintf(s, len, + "Κωδικοί."); + break; + case RARCH_RESET: + snprintf(s, len, + "Επαναφορά του περιεχομένου."); + break; + case RARCH_SCREENSHOT: + snprintf(s, len, + "Λήψη στιγμιοτύπου."); + break; + case RARCH_MUTE: + snprintf(s, len, + "Σίγαση/κατάργηση σίγασης ήχου."); + break; + case RARCH_OSK: + snprintf(s, len, + "Ενεργοποιεί το πληκτρολόγιο οθόνης."); + break; + case RARCH_NETPLAY_GAME_WATCH: + snprintf(s, len, + "Εναλλαγή λειτουργίας παιχνιδιού/παρακολούθησης Netplay."); + break; + case RARCH_ENABLE_HOTKEY: + snprintf(s, len, + "Ενεργοποίηση άλλων πλήκτρων εντολών. \n" + " \n" + "Εάν αυτό το πλήκτρο είναι συνδεδεμένο είτε με\n" + "ένα πληκτρολόγιο ή κάποιο κουμπί χειριστιερίου, \n" + "όλα τα υπόλοιπα κουμπιά εντολών θα ενεργοποιηθούν μόνο \n" + "εάν και αυτό είναι πατημένο την ίδια στιγμή. \n" + " \n" + "Διαφορετικά, όλα τα κουμπιά εντολών πληκτρολογίου \n" + "μπορούν να απενεργοποιηθούν από τον χρήστη."); + break; + case RARCH_VOLUME_UP: + snprintf(s, len, + "Αυξάνει την ένταση του ήχου."); + break; + case RARCH_VOLUME_DOWN: + snprintf(s, len, + "Μειώνει την ένταση του ήχου."); + break; + case RARCH_OVERLAY_NEXT: + snprintf(s, len, + "Αλλάζει στο επόμενο επικάλλυμα. Επαναφέρεται."); + break; + case RARCH_DISK_EJECT_TOGGLE: + snprintf(s, len, + "Ενεργοποιεί την αφαίρεση δίσκων. \n" + " \n" + "Χρησιμοποιείται για περιεχόμενο με πολλούς δίσκους. "); + break; + case RARCH_DISK_NEXT: + case RARCH_DISK_PREV: + snprintf(s, len, + "Αλλάζει ανάμεσα σε εικόνες δίσκων. Χρησιμοποιείστε μετά την εξαγωγή. \n" + " \n" + "Ολοκληρώστε πατώντας εξαγωγή ξανά."); + break; + case RARCH_GRAB_MOUSE_TOGGLE: + snprintf(s, len, + "Ενεργοποίηση ελέγχου ποντικιού. \n" + " \n" + "Όταν το ποντίκι ελέγχεται, το RetroArch κρύβει το \n" + "ποντίκι, και κρατάει τον δρομέα μέσα στο \n" + "παράθυρο για να επιτρέψει την σχετική εισαγωγή \n" + "ώστε να λειτουργήσει καλύτερα."); + break; + case RARCH_GAME_FOCUS_TOGGLE: + snprintf(s, len, + "Ενεργοποίηση εστίασης παιχνιδιού.\n" + " \n" + "Όταν ένα παιχνίδι έχει την εστίαση, το RetroArch θα απενεργοποιήσει \n" + "τα κουμπιά εντολών και θα κρατήσει τον δρομέα του ποντικιού μέσα στο παράθυρο."); + break; + case RARCH_MENU_TOGGLE: + snprintf(s, len, "Ενεργοποιεί το μενού."); + break; + case RARCH_LOAD_STATE_KEY: + snprintf(s, len, + "Φορτώνει κατάσταση."); + break; + case RARCH_FULLSCREEN_TOGGLE_KEY: + snprintf(s, len, + "Ενεργοποιεί την πλήρη οθόνη."); + break; + case RARCH_QUIT_KEY: + snprintf(s, len, + "Κουμπί καθαρής εξόδου από το RetroArch. \n" + " \n" + "Η απότομη απενεργοποίηση της λειτουργίας του θα \n" + "τερματίσει το RetroArch χωρίς να αποθηκεύσει την RAM κ.α." +#ifdef __unix__ + "\nΣε Unix-likes, SIGINT/SIGTERM επιτρέπουν την \n" + "καθαρή απενεργοποίηση." +#endif + ""); + break; + case RARCH_STATE_SLOT_PLUS: + case RARCH_STATE_SLOT_MINUS: + snprintf(s, len, + "Θυρίδες κατάστασης. \n" + " \n" + "Με την θυρίδα τοποθετημένη στο 0, το όνομα της αποθηκευμένης κατάστασης είναι \n" + "*.state (ή οτιδήποτε έχει καθοριστεί στην γραμμή εντολών). \n" + " \n" + "Όταν η θυρίδα δεν είναι 0, η διαδρομή θα είναι <διαδρομή>, \n" + "όπου είναι ο αριθμός θυρίδας."); + break; + case RARCH_SAVE_STATE_KEY: + snprintf(s, len, + "Αποθηκεύει την κατάσταση."); + break; + case RARCH_REWIND: + snprintf(s, len, + "Κρατήστε το κουμπί για επιστροφή προς τα πίσω. \n" + " \n" + "Η επιστροφή προς τα πίσω πρέπει να είναι ενεργοποιημένη."); + break; + case RARCH_BSV_RECORD_TOGGLE: + snprintf(s, len, + "Αλλαγή ανάμεσα σε εγγραφή ή όχι."); + break; + default: + if (string_is_empty(s)) + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len); + break; + } + + return 0; + } + + switch (msg) + { + case MENU_ENUM_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS: + snprintf(s, len, "Στοιχεία σύνδεσης για τον \n" + "λογαριασμό Retro Achievements. \n" + " \n" + "Επισκεφθείτε το retroachievements.org και εγγραφείτε \n" + "για δωρεάν λογαριασμό. \n" + " \n" + "Μετά την ολοκλήρωση της εγγραφής, πρέπει να \n" + "εισάγετε το όνομα χρήστη και τον κωδικό στο \n" + "RetroArch."); + break; + case MENU_ENUM_LABEL_CHEEVOS_USERNAME: + snprintf(s, len, "Όνομα χρήστη για τον λογαριασμό σας στο Retro Achievements."); + break; + case MENU_ENUM_LABEL_CHEEVOS_PASSWORD: + snprintf(s, len, "Κωδικός για τον λογαριασμό σας στο Retro Achievements."); + break; + case MENU_ENUM_LABEL_USER_LANGUAGE: + snprintf(s, len, "Τοπικοποίηση του μενού και όλων των μηνυμάτων \n" + "ανάλογα με την γλώσσα που έχετε επιλέξει \n" + "εδώ. \n" + " \n" + "Χρειάζεται επανεκκίνηση για να ενεργοποιηθούν \n" + "οι αλλαγές. \n" + " \n" + "Σημείωση: πιθανόν να μην έχουν εφαρμοστεί \n" + "όλες οι γλώσσες. \n" + " \n" + "Σε περίπτωση που μία γλώσσα δεν έχει εφαρμοστεί, \n" + "χρησιμοποιούμε τα Αγγλικά."); + break; + case MENU_ENUM_LABEL_VIDEO_FONT_PATH: + snprintf(s, len, "Αλλαγή της γραμματοσειράς που χρησιμοποιείται \n" + "για το κείμενο της Οθόνης Απεικόνισης."); + break; + case MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS: + snprintf(s, len, "Αυτόματη φόρτωση επιλογών πυρήνα βάση περιεχομένου."); + break; + case MENU_ENUM_LABEL_AUTO_OVERRIDES_ENABLE: + snprintf(s, len, "Αυτόματη φόρτωση ρυθμίσεων παράκαμψης."); + break; + case MENU_ENUM_LABEL_AUTO_REMAPS_ENABLE: + snprintf(s, len, "Αυτόματη φόρτωση αρχείων αναδιοργάνωσης πλήκτρων."); + break; + case MENU_ENUM_LABEL_SORT_SAVESTATES_ENABLE: + snprintf(s, len, "Οργάνωση καταστάσεων αποθήκευσης σε φακέλους \n" + "ονομασμένες με βάση τον πυρήνα libretro που χρησιμοποιούν."); + break; + case MENU_ENUM_LABEL_SORT_SAVEFILES_ENABLE: + snprintf(s, len, "Οργάνωση αρχείων αποθήκευσης σε φακέλους \n" + "ονομασμένα με βάση τον πυρήνα libretro που χρησιμοποιούν."); + break; + case MENU_ENUM_LABEL_RESUME_CONTENT: + snprintf(s, len, "Έξοδος από το μενού και επιστροφή \n" + "στο περιεχόμενο."); + break; + case MENU_ENUM_LABEL_RESTART_CONTENT: + snprintf(s, len, "Επανεκκινεί το περιεχόμενο από την αρχή."); + break; + case MENU_ENUM_LABEL_CLOSE_CONTENT: + snprintf(s, len, "Κλείνει το περιεχόμενο και το αποφορτώνει από την \n" + "μνήμη."); + break; + case MENU_ENUM_LABEL_UNDO_LOAD_STATE: + snprintf(s, len, "Εάν μία κατάσταση φορτώθηκε, το περιεχόμενο \n" + "θα επανέλθει στην κατάσταση πριν την φόρτωση."); + break; + case MENU_ENUM_LABEL_UNDO_SAVE_STATE: + snprintf(s, len, "Εάν μία κατάσταση αντικαταστάθηκε, θα \n" + "επανέλθει στην προηγούμενη κατάσταση αποθήκευσης."); + break; + case MENU_ENUM_LABEL_TAKE_SCREENSHOT: + snprintf(s, len, "Δημιουργία στιγμιοτύπου. \n" + " \n" + "Το στιγμιότυπο θα αποθηκευθεί στην \n" + "Διαδρομή Στιγμιοτύπων."); + break; + case MENU_ENUM_LABEL_ADD_TO_FAVORITES: + snprintf(s, len, "Προσθήκη της καταχώρισης στα Αγαπημένα."); + break; + case MENU_ENUM_LABEL_RUN: + snprintf(s, len, "Έναρξη περιεχομένου."); + break; + case MENU_ENUM_LABEL_INFORMATION: + snprintf(s, len, "Προβολή περισσότερων μεταδεδομένων πληροφοριών \n" + "σχετικά με το περιεχόμενο."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_CONFIG: + snprintf(s, len, "Αρχείο Διαμόρφωσης."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_COMPRESSED_ARCHIVE: + snprintf(s, len, "Συμπιεσμένο αρχείο."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_RECORD_CONFIG: + snprintf(s, len, "Αρχείο διαμόρφωσης καταγραφών."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_CURSOR: + snprintf(s, len, "Αρχείο ερωτήματος βάσης δεδομένων."); + break; + case MENU_ENUM_LABEL_FILE_CONFIG: + snprintf(s, len, "Αρχείο Διαμόρφωσης."); + break; + case MENU_ENUM_LABEL_SCAN_THIS_DIRECTORY: + snprintf(s, len, + "Επέλεξε αυτό για να ανιχνεύσεις περιεχόμενο στην \n" + "τρέχουσα διαδρομή."); + break; + case MENU_ENUM_LABEL_USE_THIS_DIRECTORY: + snprintf(s, len, + "Επέλεξε αυτό για να ορίσεις αυτήν ως την διαδρομή."); + break; + case MENU_ENUM_LABEL_CONTENT_DATABASE_DIRECTORY: + snprintf(s, len, + "Ευρετήριο Βάσης Δεδομένων Περιεχομένου. \n" + " \n" + "Διαδρομή για το ευρετήριο της βάσης δεδομένων \n" + "περιεχομένου."); + break; + case MENU_ENUM_LABEL_THUMBNAILS_DIRECTORY: + snprintf(s, len, + "Ευρετήριο Μικρογραφιών. \n" + " \n" + "Για την αποθήκευση αρχείων μικρογραφιών."); + break; + case MENU_ENUM_LABEL_LIBRETRO_INFO_PATH: + snprintf(s, len, + "Ευρετήριο Πληροφοριών Πυρήνων. \n" + " \n" + "Ένα ευρετήριο για το που να ψάξεις \n" + "για πληφοροφίες των πυρήνων libretro."); + break; + case MENU_ENUM_LABEL_PLAYLIST_DIRECTORY: + snprintf(s, len, + "Ευρετήριο Λιστών Αναπαραγωγής. \n" + " \n" + "Αποθηκέυστε όλα τα αρχεία λιστών αναπαραγωγής \n" + "σε αυτό το ευρετήριο."); + break; + case MENU_ENUM_LABEL_DUMMY_ON_CORE_SHUTDOWN: + snprintf(s, len, + "Μερικοί πυρήνες μπορεί να έχουν \n" + "λειτουργία απενεργοποίησης. \n" + " \n" + "If this option is left disabled, \n" + "selecting the shutdown procedure \n" + "would trigger RetroArch being shut \n" + "down. \n" + " \n" + "Enabling this option will load a \n" + "dummy core instead so that we remain \n" + "inside the menu and RetroArch won't \n" + "shutdown."); + break; + case MENU_ENUM_LABEL_CHECK_FOR_MISSING_FIRMWARE: + snprintf(s, len, + "Some cores might need \n" + "firmware or bios files. \n" + " \n" + "If this option is disabled, \n" + "it will try to load even if such \n" + "firmware is missing. \n"); + break; + case MENU_ENUM_LABEL_PARENT_DIRECTORY: + snprintf(s, len, + "Go back to the parent directory."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_SHADER_PRESET: + snprintf(s, len, + "Shader preset file."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_SHADER: + snprintf(s, len, + "Shader file."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_REMAP: + snprintf(s, len, + "Remap controls file."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_CHEAT: + snprintf(s, len, + "Cheat file."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_OVERLAY: + snprintf(s, len, + "Overlay file."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_RDB: + snprintf(s, len, + "Database file."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_FONT: + snprintf(s, len, + "TrueType font file."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_PLAIN_FILE: + snprintf(s, len, + "Plain file."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_MOVIE_OPEN: + snprintf(s, len, + "Video. \n" + " \n" + "Select it to open this file with the \n" + "video player."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_MUSIC_OPEN: + snprintf(s, len, + "Music. \n" + " \n" + "Select it to open this file with the \n" + "music player."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_IMAGE: + snprintf(s, len, + "Image file."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_IMAGE_OPEN_WITH_VIEWER: + snprintf(s, len, + "Image. \n" + " \n" + "Select it to open this file with the \n" + "image viewer."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION: + snprintf(s, len, + "Libretro core. \n" + " \n" + "Selecting this will associate this core \n" + "to the game."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_CORE: + snprintf(s, len, + "Libretro core. \n" + " \n" + "Select this file to have RetroArch load this core."); + break; + case MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY: + snprintf(s, len, + "Directory. \n" + " \n" + "Select it to open this directory."); + break; + case MENU_ENUM_LABEL_CACHE_DIRECTORY: + snprintf(s, len, + "Cache Directory. \n" + " \n" + "Content decompressed by RetroArch will be \n" + "temporarily extracted to this directory."); + break; + case MENU_ENUM_LABEL_HISTORY_LIST_ENABLE: + snprintf(s, len, + "If enabled, every content loaded \n" + "in RetroArch will be automatically \n" + "added to the recent history list."); + break; + case MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY: + snprintf(s, len, + "File Browser Directory. \n" + " \n" + "Sets start directory for menu file browser."); + break; + case MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR: + snprintf(s, len, + "Influence how input polling is done inside \n" + "RetroArch. \n" + " \n" + "Early - Input polling is performed before \n" + "the frame is processed. \n" + "Normal - Input polling is performed when \n" + "polling is requested. \n" + "Late - Input polling is performed on \n" + "first input state request per frame.\n" + " \n" + "Setting it to 'Early' or 'Late' can result \n" + "in less latency, \n" + "depending on your configuration.\n\n" + "Will be ignored when using netplay." + ); + break; + case MENU_ENUM_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND: + snprintf(s, len, + "Hide input descriptors that were not set \n" + "by the core."); + break; + case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE: + snprintf(s, len, + "Video refresh rate of your monitor. \n" + "Used to calculate a suitable audio input rate."); + break; + case MENU_ENUM_LABEL_VIDEO_FORCE_SRGB_DISABLE: + snprintf(s, len, + "Forcibly disable sRGB FBO support. Some Intel \n" + "OpenGL drivers on Windows have video problems \n" + "with sRGB FBO support enabled."); + break; + case MENU_ENUM_LABEL_AUDIO_ENABLE: + snprintf(s, len, + "Enable audio output."); + break; + case MENU_ENUM_LABEL_AUDIO_SYNC: + snprintf(s, len, + "Synchronize audio (recommended)."); + break; + case MENU_ENUM_LABEL_AUDIO_LATENCY: + snprintf(s, len, + "Desired audio latency in milliseconds. \n" + "Might not be honored if the audio driver \n" + "can't provide given latency."); + break; + case MENU_ENUM_LABEL_VIDEO_ALLOW_ROTATE: + snprintf(s, len, + "Allow cores to set rotation. If false, \n" + "rotation requests are honored, but ignored.\n\n" + "Used for setups where one manually rotates \n" + "the monitor."); + break; + case MENU_ENUM_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW: + snprintf(s, len, + "Show the input descriptors set by the core \n" + "instead of the default ones."); + break; + case MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE: + snprintf(s, len, + "Number of entries that will be kept in \n" + "content history playlist."); + break; + case MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN: + snprintf(s, len, + "To use windowed mode or not when going \n" + "fullscreen."); + break; + case MENU_ENUM_LABEL_VIDEO_FONT_SIZE: + snprintf(s, len, + "Font size for on-screen messages."); + break; + case MENU_ENUM_LABEL_SAVESTATE_AUTO_INDEX: + snprintf(s, len, + "Automatically increment slot index on each save, \n" + "generating multiple savestate files. \n" + "When the content is loaded, state slot will be \n" + "set to the highest existing value (last savestate)."); + break; + case MENU_ENUM_LABEL_FPS_SHOW: + snprintf(s, len, + "Enables displaying the current frames \n" + "per second."); + break; + case MENU_ENUM_LABEL_VIDEO_FONT_ENABLE: + snprintf(s, len, + "Show and/or hide onscreen messages."); + break; + case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_X: + case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_Y: + snprintf(s, len, + "Offset for where messages will be placed \n" + "onscreen. Values are in range [0.0, 1.0]."); + break; + case MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE: + snprintf(s, len, + "Enable or disable the current overlay."); + break; + case MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU: + snprintf(s, len, + "Hide the current overlay from appearing \n" + "inside the menu."); + break; + case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS: + snprintf(s, len, + "Show keyboard/controller button presses on \n" + "the onscreen overlay."); + break; + case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT: + snprintf(s, len, + "Select the port to listen for controller input \n" + "to display on the onscreen overlay."); + break; + case MENU_ENUM_LABEL_OVERLAY_PRESET: + snprintf(s, len, + "Path to input overlay."); + break; + case MENU_ENUM_LABEL_OVERLAY_OPACITY: + snprintf(s, len, + "Overlay opacity."); + break; + case MENU_ENUM_LABEL_INPUT_BIND_TIMEOUT: + snprintf(s, len, + "Input bind timer timeout (in seconds). \n" + "Amount of seconds to wait until proceeding \n" + "to the next bind."); + break; + case MENU_ENUM_LABEL_INPUT_BIND_HOLD: + snprintf(s, len, + "Input bind hold time (in seconds). \n" + "Amount of seconds to hold an input to bind it."); + break; + case MENU_ENUM_LABEL_OVERLAY_SCALE: + snprintf(s, len, + "Overlay scale."); + break; + case MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE: + snprintf(s, len, + "Audio output samplerate."); + break; + case MENU_ENUM_LABEL_VIDEO_SHARED_CONTEXT: + snprintf(s, len, + "Set to true if hardware-rendered cores \n" + "should get their private context. \n" + "Avoids having to assume hardware state changes \n" + "inbetween frames." + ); + break; + case MENU_ENUM_LABEL_CORE_LIST: + snprintf(s, len, + "Load Core. \n" + " \n" + "Browse for a libretro core \n" + "implementation. Where the browser \n" + "starts depends on your Core Directory \n" + "path. If blank, it will start in root. \n" + " \n" + "If Core Directory is a directory, the menu \n" + "will use that as top folder. If Core \n" + "Directory is a full path, it will start \n" + "in the folder where the file is."); + break; + case MENU_ENUM_LABEL_VALUE_MENU_ENUM_CONTROLS_PROLOG: + snprintf(s, len, + "You can use the following controls below \n" + "on either your gamepad or keyboard in order\n" + "to control the menu: \n" + " \n" + ); + break; + case MENU_ENUM_LABEL_WELCOME_TO_RETROARCH: + snprintf(s, len, + "Welcome to RetroArch\n" + ); + break; + case MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC: { + /* Work around C89 limitations */ + char u[501]; + const char *t = + "RetroArch relies on an unique form of\n" + "audio/video synchronization where it needs to be\n" + "calibrated against the refresh rate of your\n" + "display for best performance results.\n" + " \n" + "If you experience any audio crackling or video\n" + "tearing, usually it means that you need to\n" + "calibrate the settings. Some choices below:\n" + " \n"; + snprintf(u, sizeof(u), /* can't inline this due to the printf arguments */ + "a) Go to '%s' -> '%s', and enable\n" + "'Threaded Video'. Refresh rate will not matter\n" + "in this mode, framerate will be higher,\n" + "but video might be less smooth.\n" + "b) Go to '%s' -> '%s', and look at\n" + "'%s'. Let it run for\n" + "2048 frames, then press 'OK'.", + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO)); + strlcpy(s, t, len); + strlcat(s, u, len); + } + break; + case MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC: + snprintf(s, len, + "To scan for content, go to '%s' and\n" + "select either '%s' or %s'.\n" + " \n" + "Files will be compared to database entries.\n" + "If there is a match, it will add an entry\n" + "to a collection.\n" + " \n" + "You can then easily access this content by\n" + "going to '%s' ->\n" + "'%s'\n" + "instead of having to go through the\n" + "filebrowser everytime.\n" + " \n" + "NOTE: Content for some cores might still not be\n" + "scannable.", + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_FILE), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST) + ); + break; + case MENU_ENUM_LABEL_VALUE_EXTRACTING_PLEASE_WAIT: + snprintf(s, len, + "Welcome to RetroArch\n" + "\n" + "Extracting assets, please wait.\n" + "This might take a while...\n" + ); + break; + case MENU_ENUM_LABEL_INPUT_DRIVER: + { + const char *lbl = settings ? settings->arrays.input_driver : NULL; + + if (string_is_equal(lbl, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_DRIVER_UDEV))) + snprintf(s, len, + "udev Input driver. \n" + " \n" + "It uses the recent evdev joypad API \n" + "for joystick support. It supports \n" + "hotplugging and force feedback. \n" + " \n" + "The driver reads evdev events for keyboard \n" + "support. It also supports keyboard callback, \n" + "mice and touchpads. \n" + " \n" + "By default in most distros, /dev/input nodes \n" + "are root-only (mode 600). You can set up a udev \n" + "rule which makes these accessible to non-root." + ); + else if (string_is_equal(lbl, + msg_hash_to_str(MENU_ENUM_LABEL_INPUT_DRIVER_LINUXRAW))) + snprintf(s, len, + "linuxraw Input driver. \n" + " \n" + "This driver requires an active TTY. Keyboard \n" + "events are read directly from the TTY which \n" + "makes it simpler, but not as flexible as udev. \n" "Mice, etc, are not supported at all. \n" + " \n" + "This driver uses the older joystick API \n" + "(/dev/input/js*)."); + else + snprintf(s, len, + "Input driver.\n" + " \n" + "Depending on video driver, it might \n" + "force a different input driver."); + } + break; + case MENU_ENUM_LABEL_LOAD_CONTENT_LIST: + snprintf(s, len, + "Load Content. \n" + "Browse for content. \n" + " \n" + "To load content, you need a \n" + "'Core' to use, and a content file. \n" + " \n" + "To control where the menu starts \n" + "to browse for content, set \n" + "'File Browser Directory'. \n" + "If not set, it will start in root. \n" + " \n" + "The browser will filter out \n" + "extensions for the last core set \n" + "in 'Load Core', and use that core \n" + "when content is loaded." + ); + break; + case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY: + snprintf(s, len, + "Loading content from history. \n" + " \n" + "As content is loaded, content and libretro \n" + "core combinations are saved to history. \n" + " \n" + "The history is saved to a file in the same \n" + "directory as the RetroArch config file. If \n" + "no config file was loaded in startup, history \n" + "will not be saved or loaded, and will not exist \n" + "in the main menu." + ); + break; + case MENU_ENUM_LABEL_VIDEO_DRIVER: + snprintf(s, len, + "Current Video driver."); + + if (string_is_equal(settings->arrays.video_driver, "gl")) + { + snprintf(s, len, + "OpenGL Video driver. \n" + " \n" + "This driver allows libretro GL cores to \n" + "be used in addition to software-rendered \n" + "core implementations.\n" + " \n" + "Performance for software-rendered and \n" + "libretro GL core implementations is \n" + "dependent on your graphics card's \n" + "underlying GL driver)."); + } + else if (string_is_equal(settings->arrays.video_driver, "sdl2")) + { + snprintf(s, len, + "SDL 2 Video driver.\n" + " \n" + "This is an SDL 2 software-rendered video \n" + "driver.\n" + " \n" + "Performance for software-rendered libretro \n" + "core implementations is dependent \n" + "on your platform SDL implementation."); + } + else if (string_is_equal(settings->arrays.video_driver, "sdl1")) + { + snprintf(s, len, + "SDL Video driver.\n" + " \n" + "This is an SDL 1.2 software-rendered video \n" + "driver.\n" + " \n" + "Performance is considered to be suboptimal. \n" + "Consider using it only as a last resort."); + } + else if (string_is_equal(settings->arrays.video_driver, "d3d")) + { + snprintf(s, len, + "Direct3D Video driver. \n" + " \n" + "Performance for software-rendered cores \n" + "is dependent on your graphic card's \n" + "underlying D3D driver)."); + } + else if (string_is_equal(settings->arrays.video_driver, "exynos")) + { + snprintf(s, len, + "Exynos-G2D Video Driver. \n" + " \n" + "This is a low-level Exynos video driver. \n" + "Uses the G2D block in Samsung Exynos SoC \n" + "for blit operations. \n" + " \n" + "Performance for software rendered cores \n" + "should be optimal."); + } + else if (string_is_equal(settings->arrays.video_driver, "drm")) + { + snprintf(s, len, + "Plain DRM Video Driver. \n" + " \n" + "This is a low-level video driver using. \n" + "libdrm for hardware scaling using \n" + "GPU overlays."); + } + else if (string_is_equal(settings->arrays.video_driver, "sunxi")) + { + snprintf(s, len, + "Sunxi-G2D Video Driver. \n" + " \n" + "This is a low-level Sunxi video driver. \n" + "Uses the G2D block in Allwinner SoCs."); + } + break; + case MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN: + snprintf(s, len, + "Audio DSP plugin.\n" + " Processes audio before it's sent to \n" + "the driver." + ); + break; + case MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER: + { + const char *lbl = settings ? settings->arrays.audio_resampler : NULL; + + if (string_is_equal(lbl, msg_hash_to_str( + MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER_SINC))) + strlcpy(s, + "Windowed SINC implementation.", len); + else if (string_is_equal(lbl, msg_hash_to_str( + MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER_CC))) + strlcpy(s, + "Convoluted Cosine implementation.", len); + else if (string_is_empty(s)) + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len); + } + break; + + case MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION: snprintf(s, len, "SET CRT"); + break; + + case MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION_SUPER: snprintf(s, len, "SET CRT SUPER"); + break; + + case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET: + snprintf(s, len, + "Load Shader Preset. \n" + " \n" + " Load a shader preset directly. \n" + "The menu shader menu is updated accordingly. \n" + " \n" + "If the CGP uses scaling methods which are not \n" + "simple, (i.e. source scaling, same scaling \n" + "factor for X/Y), the scaling factor displayed \n" + "in the menu might not be correct." + ); + break; + case MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS: + snprintf(s, len, + "Scale for this pass. \n" + " \n" + "The scale factor accumulates, i.e. 2x \n" + "for first pass and 2x for second pass \n" + "will give you a 4x total scale. \n" + " \n" + "If there is a scale factor for last \n" + "pass, the result is stretched to \n" + "screen with the filter specified in \n" + "'Default Filter'. \n" + " \n" + "If 'Don't Care' is set, either 1x \n" + "scale or stretch to fullscreen will \n" + "be used depending if it's not the last \n" + "pass or not." + ); + break; + case MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES: + snprintf(s, len, + "Shader Passes. \n" + " \n" + "RetroArch allows you to mix and match various \n" + "shaders with arbitrary shader passes, with \n" + "custom hardware filters and scale factors. \n" + " \n" + "This option specifies the number of shader \n" + "passes to use. If you set this to 0, and use \n" + "Apply Shader Changes, you use a 'blank' shader. \n" + " \n" + "The Default Filter option will affect the \n" + "stretching filter."); + break; + case MENU_ENUM_LABEL_VIDEO_SHADER_PARAMETERS: + snprintf(s, len, + "Shader Parameters. \n" + " \n" + "Modifies current shader directly. Will not be \n" + "saved to CGP/GLSLP preset file."); + break; + case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_PARAMETERS: + snprintf(s, len, + "Shader Preset Parameters. \n" + " \n" + "Modifies shader preset currently in menu." + ); + break; + case MENU_ENUM_LABEL_VIDEO_SHADER_PASS: + snprintf(s, len, + "Path to shader. \n" + " \n" + "All shaders must be of the same \n" + "type (i.e. CG, GLSL or HLSL). \n" + " \n" + "Set Shader Directory to set where \n" + "the browser starts to look for \n" + "shaders." + ); + break; + case MENU_ENUM_LABEL_CONFIGURATION_SETTINGS: + snprintf(s, len, + "Determines how configuration files \n" + "are loaded and prioritized."); + break; + case MENU_ENUM_LABEL_CONFIG_SAVE_ON_EXIT: + snprintf(s, len, + "Saves config to disk on exit.\n" + "Useful for menu as settings can be\n" + "modified. Overwrites the config.\n" + " \n" + "#include's and comments are not \n" + "preserved. \n" + " \n" + "By design, the config file is \n" + "considered immutable as it is \n" + "likely maintained by the user, \n" + "and should not be overwritten \n" + "behind the user's back." +#if defined(RARCH_CONSOLE) || defined(RARCH_MOBILE) + "\nThis is not not the case on \n" + "consoles however, where \n" + "looking at the config file \n" + "manually isn't really an option." +#endif + ); + break; + case MENU_ENUM_LABEL_CONFIRM_ON_EXIT: + snprintf(s, len, "Are you sure you want to quit?"); + break; + case MENU_ENUM_LABEL_SHOW_HIDDEN_FILES: + snprintf(s, len, "Show hidden files\n" + "and folders."); + break; + case MENU_ENUM_LABEL_VIDEO_SHADER_FILTER_PASS: + snprintf(s, len, + "Hardware filter for this pass. \n" + " \n" + "If 'Don't Care' is set, 'Default \n" + "Filter' will be used." + ); + break; + case MENU_ENUM_LABEL_AUTOSAVE_INTERVAL: + snprintf(s, len, + "Autosaves the non-volatile SRAM \n" + "at a regular interval.\n" + " \n" + "This is disabled by default unless set \n" + "otherwise. The interval is measured in \n" + "seconds. \n" + " \n" + "A value of 0 disables autosave."); + break; + case MENU_ENUM_LABEL_INPUT_BIND_DEVICE_TYPE: + snprintf(s, len, + "Input Device Type. \n" + " \n" + "Picks which device type to use. This is \n" + "relevant for the libretro core itself." + ); + break; + case MENU_ENUM_LABEL_LIBRETRO_LOG_LEVEL: + snprintf(s, len, + "Sets log level for libretro cores \n" + "(GET_LOG_INTERFACE). \n" + " \n" + " If a log level issued by a libretro \n" + " core is below libretro_log level, it \n" + " is ignored.\n" + " \n" + " DEBUG logs are always ignored unless \n" + " verbose mode is activated (--verbose).\n" + " \n" + " DEBUG = 0\n" + " INFO = 1\n" + " WARN = 2\n" + " ERROR = 3" + ); + break; + case MENU_ENUM_LABEL_STATE_SLOT_INCREASE: + case MENU_ENUM_LABEL_STATE_SLOT_DECREASE: + snprintf(s, len, + "State slots.\n" + " \n" + " With slot set to 0, save state name is *.state \n" + " (or whatever defined on commandline).\n" + "When slot is != 0, path will be (path)(d), \n" + "where (d) is slot number."); + break; + case MENU_ENUM_LABEL_SHADER_APPLY_CHANGES: + snprintf(s, len, + "Apply Shader Changes. \n" + " \n" + "After changing shader settings, use this to \n" + "apply changes. \n" + " \n" + "Changing shader settings is a somewhat \n" + "expensive operation so it has to be \n" + "done explicitly. \n" + " \n" + "When you apply shaders, the menu shader \n" + "settings are saved to a temporary file (either \n" + "menu.cgp or menu.glslp) and loaded. The file \n" + "persists after RetroArch exits. The file is \n" + "saved to Shader Directory." + ); + break; + case MENU_ENUM_LABEL_SHADER_WATCH_FOR_CHANGES: + snprintf(s, len, + "Watch shader files for new changes. \n" + " \n" + "After saving changes to a shader on disk, \n" + "it will automatically be recompiled \n" + "and applied to the running content." + ); + break; + case MENU_ENUM_LABEL_MENU_TOGGLE: + snprintf(s, len, + "Toggles menu."); + break; + case MENU_ENUM_LABEL_GRAB_MOUSE_TOGGLE: + snprintf(s, len, + "Toggles mouse grab.\n" + " \n" + "When mouse is grabbed, RetroArch hides the \n" + "mouse, and keeps the mouse pointer inside \n" + "the window to allow relative mouse input to \n" + "work better."); + break; + case MENU_ENUM_LABEL_GAME_FOCUS_TOGGLE: + snprintf(s, len, + "Toggles game focus.\n" + " \n" + "When a game has focus, RetroArch will both disable \n" + "hotkeys and keep/warp the mouse pointer inside the window."); + break; + case MENU_ENUM_LABEL_DISK_NEXT: + snprintf(s, len, + "Cycles through disk images. Use after \n" + "ejecting. \n" + " \n" + " Complete by toggling eject again."); + break; + case MENU_ENUM_LABEL_VIDEO_FILTER: +#ifdef HAVE_FILTERS_BUILTIN + snprintf(s, len, + "CPU-based video filter."); +#else + snprintf(s, len, + "CPU-based video filter.\n" + " \n" + "Path to a dynamic library."); +#endif + break; + case MENU_ENUM_LABEL_AUDIO_DEVICE: + snprintf(s, len, + "Override the default audio device \n" + "the audio driver uses.\n" + "This is driver dependent. E.g.\n" +#ifdef HAVE_ALSA + " \n" + "ALSA wants a PCM device." +#endif +#ifdef HAVE_OSS + " \n" + "OSS wants a path (e.g. /dev/dsp)." +#endif +#ifdef HAVE_JACK + " \n" + "JACK wants portnames (e.g. system:playback1\n" + ",system:playback_2)." +#endif +#ifdef HAVE_RSOUND + " \n" + "RSound wants an IP address to an RSound \n" + "server." +#endif + ); + break; + case MENU_ENUM_LABEL_DISK_EJECT_TOGGLE: + snprintf(s, len, + "Toggles eject for disks.\n" + " \n" + "Used for multiple-disk content."); + break; + case MENU_ENUM_LABEL_ENABLE_HOTKEY: + snprintf(s, len, + "Enable other hotkeys.\n" + " \n" + " If this hotkey is bound to either keyboard, \n" + "joybutton or joyaxis, all other hotkeys will \n" + "be disabled unless this hotkey is also held \n" + "at the same time. \n" + " \n" + "This is useful for RETRO_KEYBOARD centric \n" + "implementations which query a large area of \n" + "the keyboard, where it is not desirable that \n" + "hotkeys get in the way."); + break; + case MENU_ENUM_LABEL_REWIND_ENABLE: + snprintf(s, len, + "Enable rewinding.\n" + " \n" + "This will take a performance hit, \n" + "so it is disabled by default."); + break; + case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE: + snprintf(s, len, + "Apply cheat immediately after toggling."); + break; + case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD: + snprintf(s, len, + "Auto-apply cheats when game loads."); + break; + case MENU_ENUM_LABEL_LIBRETRO_DIR_PATH: + snprintf(s, len, + "Core Directory. \n" + " \n" + "A directory for where to search for \n" + "libretro core implementations."); + break; + case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_AUTO: + snprintf(s, len, + "Refresh Rate Auto.\n" + " \n" + "The accurate refresh rate of our monitor (Hz).\n" + "This is used to calculate audio input rate with \n" + "the formula: \n" + " \n" + "audio_input_rate = game input rate * display \n" + "refresh rate / game refresh rate\n" + " \n" + "If the implementation does not report any \n" + "values, NTSC defaults will be assumed for \n" + "compatibility.\n" + " \n" + "This value should stay close to 60Hz to avoid \n" + "large pitch changes. If your monitor does \n" + "not run at 60Hz, or something close to it, \n" + "disable VSync, and leave this at its default."); + break; + case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_POLLED: + snprintf(s, len, + "Set Polled Refresh Rate\n" + " \n" + "Sets the refresh rate to the actual value\n" + "polled from the display driver."); + break; + case MENU_ENUM_LABEL_VIDEO_ROTATION: + snprintf(s, len, + "Forces a certain rotation \n" + "of the screen.\n" + " \n" + "The rotation is added to rotations which\n" + "the libretro core sets (see Video Allow\n" + "Rotate)."); + break; + case MENU_ENUM_LABEL_VIDEO_SCALE: + snprintf(s, len, + "Fullscreen resolution.\n" + " \n" + "Resolution of 0 uses the \n" + "resolution of the environment.\n"); + break; + case MENU_ENUM_LABEL_FASTFORWARD_RATIO: + snprintf(s, len, + "Fastforward ratio.\n" + " \n" + "The maximum rate at which content will\n" + "be run when using fast forward.\n" + " \n" + " (E.g. 5.0 for 60 fps content => 300 fps \n" + "cap).\n" + " \n" + "RetroArch will go to sleep to ensure that \n" + "the maximum rate will not be exceeded.\n" + "Do not rely on this cap to be perfectly \n" + "accurate."); + break; + case MENU_ENUM_LABEL_VRR_RUNLOOP_ENABLE: + snprintf(s, len, + "Sync to Exact Content Framerate.\n" + " \n" + "This option is the equivalent of forcing x1 speed\n" + "while still allowing fast forward.\n" + "No deviation from the core requested refresh rate,\n" + "no sound Dynamic Rate Control)."); + break; + case MENU_ENUM_LABEL_VIDEO_MONITOR_INDEX: + snprintf(s, len, + "Which monitor to prefer.\n" + " \n" + "0 (default) means no particular monitor \n" + "is preferred, 1 and up (1 being first \n" + "monitor), suggests RetroArch to use that \n" + "particular monitor."); + break; + case MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN: + snprintf(s, len, + "Forces cropping of overscanned \n" + "frames.\n" + " \n" + "Exact behavior of this option is \n" + "core-implementation specific."); + break; + case MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER: + snprintf(s, len, + "Only scales video in integer \n" + "steps.\n" + " \n" + "The base size depends on system-reported \n" + "geometry and aspect ratio.\n" + " \n" + "If Force Aspect is not set, X/Y will be \n" + "integer scaled independently."); + break; + case MENU_ENUM_LABEL_AUDIO_VOLUME: + snprintf(s, len, + "Audio volume, expressed in dB.\n" + " \n" + " 0 dB is normal volume. No gain will be applied.\n" + "Gain can be controlled in runtime with Input\n" + "Volume Up / Input Volume Down."); + break; + case MENU_ENUM_LABEL_AUDIO_RATE_CONTROL_DELTA: + snprintf(s, len, + "Audio rate control.\n" + " \n" + "Setting this to 0 disables rate control.\n" + "Any other value controls audio rate control \n" + "delta.\n" + " \n" + "Defines how much input rate can be adjusted \n" + "dynamically.\n" + " \n" + " Input rate is defined as: \n" + " input rate * (1.0 +/- (rate control delta))"); + break; + case MENU_ENUM_LABEL_AUDIO_MAX_TIMING_SKEW: + snprintf(s, len, + "Maximum audio timing skew.\n" + " \n" + "Defines the maximum change in input rate.\n" + "You may want to increase this to enable\n" + "very large changes in timing, for example\n" + "running PAL cores on NTSC displays, at the\n" + "cost of inaccurate audio pitch.\n" + " \n" + " Input rate is defined as: \n" + " input rate * (1.0 +/- (max timing skew))"); + break; + case MENU_ENUM_LABEL_OVERLAY_NEXT: + snprintf(s, len, + "Toggles to next overlay.\n" + " \n" + "Wraps around."); + break; + case MENU_ENUM_LABEL_LOG_VERBOSITY: + snprintf(s, len, + "Enable or disable verbosity level \n" + "of frontend."); + break; + case MENU_ENUM_LABEL_VOLUME_UP: + snprintf(s, len, + "Increases audio volume."); + break; + case MENU_ENUM_LABEL_VOLUME_DOWN: + snprintf(s, len, + "Decreases audio volume."); + break; + case MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION: + snprintf(s, len, + "Forcibly disable composition.\n" + "Only valid on Windows Vista/7 for now."); + break; + case MENU_ENUM_LABEL_PERFCNT_ENABLE: + snprintf(s, len, + "Enable or disable frontend \n" + "performance counters."); + break; + case MENU_ENUM_LABEL_SYSTEM_DIRECTORY: + snprintf(s, len, + "System Directory. \n" + " \n" + "Sets the 'system' directory.\n" + "Cores can query for this\n" + "directory to load BIOSes, \n" + "system-specific configs, etc."); + break; + case MENU_ENUM_LABEL_SAVESTATE_AUTO_SAVE: + case MENU_ENUM_LABEL_SAVESTATE_AUTO_LOAD: + snprintf(s, len, + "Automatically saves a savestate at the \n" + "end of RetroArch's lifetime.\n" + " \n" + "RetroArch will automatically load any savestate\n" + "with this path on startup if 'Auto Load State\n" + "is enabled."); + break; + case MENU_ENUM_LABEL_VIDEO_THREADED: + snprintf(s, len, + "Use threaded video driver.\n" + " \n" + "Using this might improve performance at the \n" + "possible cost of latency and more video \n" + "stuttering."); + break; + case MENU_ENUM_LABEL_VIDEO_VSYNC: + snprintf(s, len, + "Video V-Sync.\n"); + break; + case MENU_ENUM_LABEL_VIDEO_HARD_SYNC: + snprintf(s, len, + "Attempts to hard-synchronize \n" + "CPU and GPU.\n" + " \n" + "Can reduce latency at the cost of \n" + "performance."); + break; + case MENU_ENUM_LABEL_REWIND_GRANULARITY: + snprintf(s, len, + "Rewind granularity.\n" + " \n" + " When rewinding defined number of \n" + "frames, you can rewind several frames \n" + "at a time, increasing the rewinding \n" + "speed."); + break; + case MENU_ENUM_LABEL_REWIND_BUFFER_SIZE: + snprintf(s, len, + "Rewind buffer size (MB).\n" + " \n" + " The amount of memory in MB to reserve \n" + "for rewinding. Increasing this value \n" + "increases the rewind history length.\n"); + break; + case MENU_ENUM_LABEL_REWIND_BUFFER_SIZE_STEP: + snprintf(s, len, + "Rewind buffer size step (MB).\n" + " \n" + " Each time you increase or decrease \n" + "the rewind buffer size value via this \n" + "UI it will change by this amount.\n"); + break; + case MENU_ENUM_LABEL_SCREENSHOT: + snprintf(s, len, + "Take screenshot."); + break; + case MENU_ENUM_LABEL_VIDEO_FRAME_DELAY: + snprintf(s, len, + "Sets how many milliseconds to delay\n" + "after VSync before running the core.\n" + "\n" + "Can reduce latency at the cost of\n" + "higher risk of stuttering.\n" + " \n" + "Maximum is 15."); + break; + case MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES: + snprintf(s, len, + "Sets how many frames CPU can \n" + "run ahead of GPU when using 'GPU \n" + "Hard Sync'.\n" + " \n" + "Maximum is 3.\n" + " \n" + " 0: Syncs to GPU immediately.\n" + " 1: Syncs to previous frame.\n" + " 2: Etc ..."); + break; + case MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION: + snprintf(s, len, + "Inserts a black frame inbetween \n" + "frames.\n" + " \n" + "Useful for 120 Hz monitors who want to \n" + "play 60 Hz material with eliminated \n" + "ghosting.\n" + " \n" + "Video refresh rate should still be \n" + "configured as if it is a 60 Hz monitor \n" + "(divide refresh rate by 2)."); + break; + case MENU_ENUM_LABEL_RGUI_SHOW_START_SCREEN: + snprintf(s, len, + "Show startup screen in menu.\n" + "Is automatically set to false when seen\n" + "for the first time.\n" + " \n" + "This is only updated in config if\n" + "'Save Configuration on Exit' is enabled.\n"); + break; + case MENU_ENUM_LABEL_VIDEO_FULLSCREEN: + snprintf(s, len, "Toggles fullscreen."); + break; + case MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE: + snprintf(s, len, + "Block SRAM from being overwritten \n" + "when loading save states.\n" + " \n" + "Might potentially lead to buggy games."); + break; + case MENU_ENUM_LABEL_PAUSE_NONACTIVE: + snprintf(s, len, + "Pause gameplay when window focus \n" + "is lost."); + break; + case MENU_ENUM_LABEL_VIDEO_GPU_SCREENSHOT: + snprintf(s, len, + "Screenshots output of GPU shaded \n" + "material if available."); + break; + case MENU_ENUM_LABEL_SCREENSHOT_DIRECTORY: + snprintf(s, len, + "Screenshot Directory. \n" + " \n" + "Directory to dump screenshots to." + ); + break; + case MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL: + snprintf(s, len, + "VSync Swap Interval.\n" + " \n" + "Uses a custom swap interval for VSync. Set this \n" + "to effectively halve monitor refresh rate."); + break; + case MENU_ENUM_LABEL_SAVEFILE_DIRECTORY: + snprintf(s, len, + "Savefile Directory. \n" + " \n" + "Save all save files (*.srm) to this \n" + "directory. This includes related files like \n" + ".bsv, .rt, .psrm, etc...\n" + " \n" + "This will be overridden by explicit command line\n" + "options."); + break; + case MENU_ENUM_LABEL_SAVESTATE_DIRECTORY: + snprintf(s, len, + "Savestate Directory. \n" + " \n" + "Save all save states (*.state) to this \n" + "directory.\n" + " \n" + "This will be overridden by explicit command line\n" + "options."); + break; + case MENU_ENUM_LABEL_ASSETS_DIRECTORY: + snprintf(s, len, + "Assets Directory. \n" + " \n" + " This location is queried by default when \n" + "menu interfaces try to look for loadable \n" + "assets, etc."); + break; + case MENU_ENUM_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY: + snprintf(s, len, + "Dynamic Wallpapers Directory. \n" + " \n" + " The place to store backgrounds that will \n" + "be loaded dynamically by the menu depending \n" + "on context."); + break; + case MENU_ENUM_LABEL_SLOWMOTION_RATIO: + snprintf(s, len, + "Slowmotion ratio." + " \n" + "When slowmotion, content will slow\n" + "down by factor."); + break; + case MENU_ENUM_LABEL_INPUT_AXIS_THRESHOLD: + snprintf(s, len, + "Defines axis threshold.\n" + " \n" + "How far an axis must be tilted to result\n" + "in a button press.\n" + " Possible values are [0.0, 1.0]."); + break; + case MENU_ENUM_LABEL_INPUT_TURBO_PERIOD: + snprintf(s, len, + "Turbo period.\n" + " \n" + "Describes the period of which turbo-enabled\n" + "buttons toggle.\n" + " \n" + "Numbers are described in frames." + ); + break; + case MENU_ENUM_LABEL_INPUT_DUTY_CYCLE: + snprintf(s, len, + "Duty cycle.\n" + " \n" + "Describes how long the period of a turbo-enabled\n" + "should be.\n" + " \n" + "Numbers are described in frames." + ); + break; + case MENU_ENUM_LABEL_INPUT_TOUCH_ENABLE: + snprintf(s, len, "Enable touch support."); + break; + case MENU_ENUM_LABEL_INPUT_PREFER_FRONT_TOUCH: + snprintf(s, len, "Use front instead of back touch."); + break; + case MENU_ENUM_LABEL_MOUSE_ENABLE: + snprintf(s, len, "Enable mouse input inside the menu."); + break; + case MENU_ENUM_LABEL_POINTER_ENABLE: + snprintf(s, len, "Enable touch input inside the menu."); + break; + case MENU_ENUM_LABEL_MENU_WALLPAPER: + snprintf(s, len, "Path to an image to set as the background."); + break; + case MENU_ENUM_LABEL_NAVIGATION_WRAPAROUND: + snprintf(s, len, + "Wrap-around to beginning and/or end \n" + "if boundary of list is reached \n" + "horizontally and/or vertically."); + break; + case MENU_ENUM_LABEL_PAUSE_LIBRETRO: + snprintf(s, len, + "If disabled, the game will keep \n" + "running in the background when we are in the \n" + "menu."); + break; + case MENU_ENUM_LABEL_SUSPEND_SCREENSAVER_ENABLE: + snprintf(s, len, + "Suspends the screensaver. Is a hint that \n" + "does not necessarily have to be \n" + "honored by the video driver."); + break; + case MENU_ENUM_LABEL_NETPLAY_MODE: + snprintf(s, len, + "Netplay client mode for the current user. \n" + "Will be 'Server' mode if disabled."); + break; + case MENU_ENUM_LABEL_NETPLAY_DELAY_FRAMES: + snprintf(s, len, + "The amount of delay frames to use for netplay. \n" + " \n" + "Increasing this value will increase \n" + "performance, but introduce more latency."); + break; + case MENU_ENUM_LABEL_NETPLAY_PUBLIC_ANNOUNCE: + snprintf(s, len, + "Whether to announce netplay games publicly. \n" + " \n" + "If set to false, clients must manually connect \n" + "rather than using the public lobby."); + break; + case MENU_ENUM_LABEL_NETPLAY_START_AS_SPECTATOR: + snprintf(s, len, + "Whether to start netplay in spectator mode. \n" + " \n" + "If set to true, netplay will be in spectator mode \n" + "on start. It's always possible to change mode \n" + "later."); + break; + case MENU_ENUM_LABEL_NETPLAY_ALLOW_SLAVES: + snprintf(s, len, + "Whether to allow connections in slave mode. \n" + " \n" + "Slave-mode clients require very little processing \n" + "power on either side, but will suffer \n" + "significantly from network latency."); + break; + case MENU_ENUM_LABEL_NETPLAY_REQUIRE_SLAVES: + snprintf(s, len, + "Whether to disallow connections not in slave mode. \n" + " \n" + "Not recommended except for very fast networks \n" + "with very weak machines. \n"); + break; + case MENU_ENUM_LABEL_NETPLAY_STATELESS_MODE: + snprintf(s, len, + "Whether to run netplay in a mode not requiring\n" + "save states. \n" + " \n" + "If set to true, a very fast network is required,\n" + "but no rewinding is performed, so there will be\n" + "no netplay jitter.\n"); + break; + case MENU_ENUM_LABEL_NETPLAY_CHECK_FRAMES: + snprintf(s, len, + "The frequency in frames with which netplay \n" + "will verify that the host and client are in \n" + "sync. \n" + " \n" + "With most cores, this value will have no \n" + "visible effect and can be ignored. With \n" + "nondeterminstic cores, this value determines \n" + "how often the netplay peers will be brought \n" + "into sync. With buggy cores, setting this \n" + "to any non-zero value will cause severe \n" + "performance issues. Set to zero to perform \n" + "no checks. This value is only used on the \n" + "netplay host. \n"); + break; + case MENU_ENUM_LABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN: + snprintf(s, len, + "The number of frames of input latency for \n" + "netplay to use to hide network latency. \n" + " \n" + "When in netplay, this option delays local \n" + "input, so that the frame being run is \n" + "closer to the frames being received from \n" + "the network. This reduces jitter and makes \n" + "netplay less CPU-intensive, but at the \n" + "price of noticeable input lag. \n"); + break; + case MENU_ENUM_LABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE: + snprintf(s, len, + "The range of frames of input latency that \n" + "may be used by netplay to hide network \n" + "latency. \n" + "\n" + "If set, netplay will adjust the number of \n" + "frames of input latency dynamically to \n" + "balance CPU time, input latency and \n" + "network latency. This reduces jitter and \n" + "makes netplay less CPU-intensive, but at \n" + "the price of unpredictable input lag. \n"); + break; + case MENU_ENUM_LABEL_NETPLAY_NAT_TRAVERSAL: + snprintf(s, len, + "When hosting, attempt to listen for\n" + "connections from the public internet, using\n" + "UPnP or similar technologies to escape LANs. \n"); + break; + case MENU_ENUM_LABEL_NETPLAY_USE_MITM_SERVER: + snprintf(s, len, + "When hosting a netplay session, relay connection through a \n" + "man-in-the-middle server \n" + "to get around firewalls or NAT/UPnP issues. \n"); + break; + case MENU_ENUM_LABEL_NETPLAY_MITM_SERVER: + snprintf(s, len, + "Specifies the man-in-the-middle server \n" + "to use for netplay. A server that is \n" + "located closer to you may have less latency. \n"); + break; + case MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES: + snprintf(s, len, + "Maximum amount of swapchain images. This \n" + "can tell the video driver to use a specific \n" + "video buffering mode. \n" + " \n" + "Single buffering - 1\n" + "Double buffering - 2\n" + "Triple buffering - 3\n" + " \n" + "Setting the right buffering mode can have \n" + "a big impact on latency."); + break; + case MENU_ENUM_LABEL_VIDEO_SMOOTH: + snprintf(s, len, + "Smoothens picture with bilinear filtering. \n" + "Should be disabled if using shaders."); + break; + case MENU_ENUM_LABEL_TIMEDATE_ENABLE: + snprintf(s, len, + "Shows current date and/or time inside menu."); + break; + case MENU_ENUM_LABEL_BATTERY_LEVEL_ENABLE: + snprintf(s, len, + "Shows current battery level inside menu."); + break; + case MENU_ENUM_LABEL_CORE_ENABLE: + snprintf(s, len, + "Shows current core inside menu."); + break; + case MENU_ENUM_LABEL_NETPLAY_ENABLE_HOST: + snprintf(s, len, + "Enables Netplay in host (server) mode."); + break; + case MENU_ENUM_LABEL_NETPLAY_ENABLE_CLIENT: + snprintf(s, len, + "Enables Netplay in client mode."); + break; + case MENU_ENUM_LABEL_NETPLAY_DISCONNECT: + snprintf(s, len, + "Disconnects an active Netplay connection."); + break; + case MENU_ENUM_LABEL_NETPLAY_LAN_SCAN_SETTINGS: + snprintf(s, len, + "Search for and connect to netplay hosts on the local network."); + break; + case MENU_ENUM_LABEL_NETPLAY_SETTINGS: + snprintf(s, len, + "Setting related to Netplay."); + break; + case MENU_ENUM_LABEL_DYNAMIC_WALLPAPER: + snprintf(s, len, + "Dynamically load a new background \n" + "depending on context."); + break; + case MENU_ENUM_LABEL_CORE_UPDATER_BUILDBOT_URL: + snprintf(s, len, + "URL to core updater directory on the \n" + "Libretro buildbot."); + break; + case MENU_ENUM_LABEL_BUILDBOT_ASSETS_URL: + snprintf(s, len, + "URL to assets updater directory on the \n" + "Libretro buildbot."); + break; + case MENU_ENUM_LABEL_INPUT_REMAP_BINDS_ENABLE: + snprintf(s, len, + "if enabled, overrides the input binds \n" + "with the remapped binds set for the \n" + "current core."); + break; + case MENU_ENUM_LABEL_OVERLAY_DIRECTORY: + snprintf(s, len, + "Overlay Directory. \n" + " \n" + "Defines a directory where overlays are \n" + "kept for easy access."); + break; + case MENU_ENUM_LABEL_INPUT_MAX_USERS: + snprintf(s, len, + "Maximum amount of users supported by \n" + "RetroArch."); + break; + case MENU_ENUM_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE: + snprintf(s, len, + "After downloading, automatically extract \n" + "archives that the downloads are contained \n" + "inside."); + break; + case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE: + snprintf(s, len, + "Filter files being shown by \n" + "supported extensions."); + break; + case MENU_ENUM_LABEL_NETPLAY_NICKNAME: + snprintf(s, len, + "The username of the person running RetroArch. \n" + "This will be used for playing online games."); + break; + case MENU_ENUM_LABEL_NETPLAY_TCP_UDP_PORT: + snprintf(s, len, + "The port of the host IP address. \n" + "Can be either a TCP or UDP port."); + break; + case MENU_ENUM_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE: + snprintf(s, len, + "Enable or disable spectator mode for \n" + "the user during netplay."); + break; + case MENU_ENUM_LABEL_NETPLAY_IP_ADDRESS: + snprintf(s, len, + "The address of the host to connect to."); + break; + case MENU_ENUM_LABEL_NETPLAY_PASSWORD: + snprintf(s, len, + "The password for connecting to the netplay \n" + "host. Used only in host mode."); + break; + case MENU_ENUM_LABEL_NETPLAY_SPECTATE_PASSWORD: + snprintf(s, len, + "The password for connecting to the netplay \n" + "host with only spectator privileges. Used \n" + "only in host mode."); + break; + case MENU_ENUM_LABEL_STDIN_CMD_ENABLE: + snprintf(s, len, + "Enable stdin command interface."); + break; + case MENU_ENUM_LABEL_UI_COMPANION_START_ON_BOOT: + snprintf(s, len, + "Start User Interface companion driver \n" + "on boot (if available)."); + break; + case MENU_ENUM_LABEL_MENU_DRIVER: + snprintf(s, len, "Menu driver to use."); + break; + case MENU_ENUM_LABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO: + snprintf(s, len, + "Gamepad button combination to toggle menu. \n" + " \n" + "0 - None \n" + "1 - Press L + R + Y + D-Pad Down \n" + "simultaneously. \n" + "2 - Press L3 + R3 simultaneously. \n" + "3 - Press Start + Select simultaneously."); + break; + case MENU_ENUM_LABEL_INPUT_ALL_USERS_CONTROL_MENU: + snprintf(s, len, "Allows any user to control the menu. \n" + " \n" + "When disabled, only user 1 can control the menu."); + break; + case MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE: + snprintf(s, len, + "Enable input auto-detection.\n" + " \n" + "Will attempt to auto-configure \n" + "joypads, Plug-and-Play style."); + break; + case MENU_ENUM_LABEL_CAMERA_ALLOW: + snprintf(s, len, + "Allow or disallow camera access by \n" + "cores."); + break; + case MENU_ENUM_LABEL_LOCATION_ALLOW: + snprintf(s, len, + "Allow or disallow location services \n" + "access by cores."); + break; + case MENU_ENUM_LABEL_TURBO: + snprintf(s, len, + "Turbo enable.\n" + " \n" + "Holding the turbo while pressing another \n" + "button will let the button enter a turbo \n" + "mode where the button state is modulated \n" + "with a periodic signal. \n" + " \n" + "The modulation stops when the button \n" + "itself (not turbo button) is released."); + break; + case MENU_ENUM_LABEL_OSK_ENABLE: + snprintf(s, len, + "Enable/disable on-screen keyboard."); + break; + case MENU_ENUM_LABEL_AUDIO_MUTE: + snprintf(s, len, + "Mute/unmute audio."); + break; + case MENU_ENUM_LABEL_REWIND: + snprintf(s, len, + "Hold button down to rewind.\n" + " \n" + "Rewind must be enabled."); + break; + case MENU_ENUM_LABEL_EXIT_EMULATOR: + snprintf(s, len, + "Key to exit RetroArch cleanly." +#if !defined(RARCH_MOBILE) && !defined(RARCH_CONSOLE) + "\nKilling it in any hard way (SIGKILL, \n" + "etc) will terminate without saving\n" + "RAM, etc. On Unix-likes,\n" + "SIGINT/SIGTERM allows\n" + "a clean deinitialization." +#endif + ); + break; + case MENU_ENUM_LABEL_LOAD_STATE: + snprintf(s, len, + "Loads state."); + break; + case MENU_ENUM_LABEL_SAVE_STATE: + snprintf(s, len, + "Saves state."); + break; + case MENU_ENUM_LABEL_NETPLAY_GAME_WATCH: + snprintf(s, len, + "Netplay toggle play/spectate mode."); + break; + case MENU_ENUM_LABEL_CHEAT_INDEX_PLUS: + snprintf(s, len, + "Increment cheat index.\n"); + break; + case MENU_ENUM_LABEL_CHEAT_INDEX_MINUS: + snprintf(s, len, + "Decrement cheat index.\n"); + break; + case MENU_ENUM_LABEL_SHADER_PREV: + snprintf(s, len, + "Applies previous shader in directory."); + break; + case MENU_ENUM_LABEL_SHADER_NEXT: + snprintf(s, len, + "Applies next shader in directory."); + break; + case MENU_ENUM_LABEL_RESET: + snprintf(s, len, + "Reset the content.\n"); + break; + case MENU_ENUM_LABEL_PAUSE_TOGGLE: + snprintf(s, len, + "Toggle between paused and non-paused state."); + break; + case MENU_ENUM_LABEL_CHEAT_TOGGLE: + snprintf(s, len, + "Toggle cheat index.\n"); + break; + case MENU_ENUM_LABEL_CHEAT_IDX: + snprintf(s, len, + "Index position in list.\n"); + break; + case MENU_ENUM_LABEL_CHEAT_ADDRESS_BIT_POSITION: + snprintf(s, len, + "Address bitmask when Memory Search Size < 8-bit.\n"); + break; + case MENU_ENUM_LABEL_CHEAT_REPEAT_COUNT: + snprintf(s, len, + "The number of times the cheat will be applied.\nUse with the other two Iteration options to affect large areas of memory."); + break; + case MENU_ENUM_LABEL_CHEAT_REPEAT_ADD_TO_ADDRESS: + snprintf(s, len, + "After each 'Number of Iterations' the Memory Address will be increased by this number times the 'Memory Search Size'."); + break; + case MENU_ENUM_LABEL_CHEAT_REPEAT_ADD_TO_VALUE: + snprintf(s, len, + "After each 'Number of Iterations' the Value will be increased by this amount."); + break; + case MENU_ENUM_LABEL_CHEAT_MATCH_IDX: + snprintf(s, len, + "Select the match to view."); + break; + case MENU_ENUM_LABEL_CHEAT_START_OR_CONT: + snprintf(s, len, + "Scan memory to create new cheats"); + break; + case MENU_ENUM_LABEL_CHEAT_START_OR_RESTART: + snprintf(s, len, + "Left/Right to change bit-size\n"); + break; + case MENU_ENUM_LABEL_CHEAT_SEARCH_EXACT: + snprintf(s, len, + "Left/Right to change value\n"); + break; + case MENU_ENUM_LABEL_CHEAT_SEARCH_LT: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_SEARCH_GT: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_SEARCH_EQ: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_SEARCH_NEQ: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_SEARCH_EQPLUS: + snprintf(s, len, + "Left/Right to change value\n"); + break; + case MENU_ENUM_LABEL_CHEAT_SEARCH_EQMINUS: + snprintf(s, len, + "Left/Right to change value\n"); + break; + case MENU_ENUM_LABEL_CHEAT_ADD_MATCHES: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_VIEW_MATCHES: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_CREATE_OPTION: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_DELETE_OPTION: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_ADD_NEW_TOP: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_RELOAD_CHEATS: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_ADD_NEW_BOTTOM: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_DELETE_ALL: + snprintf(s, len, + " "); + break; + case MENU_ENUM_LABEL_CHEAT_BIG_ENDIAN: + snprintf(s, len, + "Big endian : 258 = 0x0102\n" + "Little endian : 258 = 0x0201"); + break; + case MENU_ENUM_LABEL_HOLD_FAST_FORWARD: + snprintf(s, len, + "Hold for fast-forward. Releasing button \n" + "disables fast-forward."); + break; + case MENU_ENUM_LABEL_SLOWMOTION_HOLD: + snprintf(s, len, + "Hold for slowmotion."); + break; + case MENU_ENUM_LABEL_FRAME_ADVANCE: + snprintf(s, len, + "Frame advance when content is paused."); + break; + case MENU_ENUM_LABEL_BSV_RECORD_TOGGLE: + snprintf(s, len, + "Toggle between recording and not."); + break; + case MENU_ENUM_LABEL_L_X_PLUS: + case MENU_ENUM_LABEL_L_X_MINUS: + case MENU_ENUM_LABEL_L_Y_PLUS: + case MENU_ENUM_LABEL_L_Y_MINUS: + case MENU_ENUM_LABEL_R_X_PLUS: + case MENU_ENUM_LABEL_R_X_MINUS: + case MENU_ENUM_LABEL_R_Y_PLUS: + case MENU_ENUM_LABEL_R_Y_MINUS: + snprintf(s, len, + "Axis for analog stick (DualShock-esque).\n" + " \n" + "Bound as usual, however, if a real analog \n" + "axis is bound, it can be read as a true analog.\n" + " \n" + "Positive X axis is right. \n" + "Positive Y axis is down."); + break; + case MENU_ENUM_LABEL_VALUE_WHAT_IS_A_CORE_DESC: + snprintf(s, len, + "RetroArch by itself does nothing. \n" + " \n" + "To make it do things, you need to \n" + "load a program into it. \n" + "\n" + "We call such a program 'Libretro core', \n" + "or 'core' in short. \n" + " \n" + "To load a core, select one from\n" + "'Load Core'.\n" + " \n" +#ifdef HAVE_NETWORKING + "You can obtain cores in several ways: \n" + "* Download them by going to\n" + "'%s' -> '%s'.\n" + "* Manually move them over to\n" + "'%s'.", + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH) +#else + "You can obtain cores by\n" + "manually moving them over to\n" + "'%s'.", + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH) +#endif + ); + break; + case MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD_DESC: + snprintf(s, len, + "You can change the virtual gamepad overlay\n" + "by going to '%s' -> '%s'." + " \n" + "From there you can change the overlay,\n" + "change the size and opacity of the buttons, etc.\n" + " \n" + "NOTE: By default, virtual gamepad overlays are\n" + "hidden when in the menu.\n" + "If you'd like to change this behavior,\n" + "you can set '%s' to false.", + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU) + ); + break; + case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_ENABLE: + snprintf(s, len, + "Enables a background color for the OSD."); + break; + case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_RED: + snprintf(s, len, + "Sets the red value of the OSD background color. Valid values are between 0 and 255."); + break; + case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_GREEN: + snprintf(s, len, + "Sets the green value of the OSD background color. Valid values are between 0 and 255."); + break; + case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_BLUE: + snprintf(s, len, + "Sets the blue value of the OSD background color. Valid values are between 0 and 255."); + break; + case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_OPACITY: + snprintf(s, len, + "Sets the opacity of the OSD background color. Valid values are between 0.0 and 1.0."); + break; + case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_RED: + snprintf(s, len, + "Sets the red value of the OSD text color. Valid values are between 0 and 255."); + break; + case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_GREEN: + snprintf(s, len, + "Sets the green value of the OSD text color. Valid values are between 0 and 255."); + break; + case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_BLUE: + snprintf(s, len, + "Sets the blue value of the OSD text color. Valid values are between 0 and 255."); + break; + case MENU_ENUM_LABEL_MIDI_DRIVER: + snprintf(s, len, + "MIDI driver to use."); + break; + case MENU_ENUM_LABEL_MIDI_INPUT: + snprintf(s, len, + "Sets the input device (driver specific).\n" + "When set to \"Off\", MIDI input will be disabled.\n" + "Device name can also be typed in."); + break; + case MENU_ENUM_LABEL_MIDI_OUTPUT: + snprintf(s, len, + "Sets the output device (driver specific).\n" + "When set to \"Off\", MIDI output will be disabled.\n" + "Device name can also be typed in.\n" + " \n" + "When MIDI output is enabled and core and game/app support MIDI output,\n" + "some or all sounds (depends on game/app) will be generated by MIDI device.\n" + "In case of \"null\" MIDI driver this means that those sounds won't be audible."); + break; + case MENU_ENUM_LABEL_MIDI_VOLUME: + snprintf(s, len, + "Sets the master volume of the output device."); + break; + default: + if (string_is_empty(s)) + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len); + return -1; + } + + return 0; +} +#endif + +#ifdef HAVE_MENU +static const char *menu_hash_to_str_el_label_enum(enum msg_hash_enums msg) +{ + if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END && + msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN) + { + static char hotkey_lbl[128] = {0}; + unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN; + snprintf(hotkey_lbl, sizeof(hotkey_lbl), "input_hotkey_binds_%d", idx); + return hotkey_lbl; + } + + switch (msg) + { +#include "msg_hash_lbl.h" + default: +#if 0 + RARCH_LOG("Unimplemented: [%d]\n", msg); +#endif + break; + } + + return "null"; +} +#endif + +const char *msg_hash_to_str_el(enum msg_hash_enums msg) { +#ifdef HAVE_MENU + const char *ret = menu_hash_to_str_el_label_enum(msg); + + if (ret && !string_is_equal(ret, "null")) + return ret; +#endif + + switch (msg) { +#include "msg_hash_el.h" + default: +#if 0 + RARCH_LOG("Unimplemented: [%d]\n", msg); + { + RARCH_LOG("[%d] : %s\n", msg - 1, msg_hash_to_str(((enum msg_hash_enums)(msg - 1)))); + } +#endif + break; + } + + return "null"; +} diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h new file mode 100644 index 0000000000..7d5f31b053 --- /dev/null +++ b/intl/msg_hash_el.h @@ -0,0 +1,7677 @@ +MSG_HASH( + MSG_COMPILER, + "Μεταγλωττιστής" + ) +MSG_HASH( + MSG_UNKNOWN_COMPILER, + "Άγνωστος Μεταγλωττιστής" + ) +MSG_HASH( + MSG_NATIVE, + "Native" + ) +MSG_HASH( + MSG_DEVICE_DISCONNECTED_FROM_PORT, + "Η συσκευή αποσυνδέθηκε από την θύρα" + ) +MSG_HASH( + MSG_UNKNOWN_NETPLAY_COMMAND_RECEIVED, + "Λήφθηκε άγνωστη εντολή netplay" + ) +MSG_HASH( + MSG_FILE_ALREADY_EXISTS_SAVING_TO_BACKUP_BUFFER, + "Το αρχείο υπάρχει ήδη. Αποθήκευση σε εφεδρική ενδιάμεση μνήμη." + ) +MSG_HASH( + MSG_GOT_CONNECTION_FROM, + "Λήφθηκε σύνδεση από: \"%s\"" + ) +MSG_HASH( + MSG_GOT_CONNECTION_FROM_NAME, + "Λήφθηκε σύνδεση από: \"%s (%s)\"" + ) +MSG_HASH( + MSG_PUBLIC_ADDRESS, + "Δημόσια διεύθυνση" + ) +MSG_HASH( + MSG_NO_ARGUMENTS_SUPPLIED_AND_NO_MENU_BUILTIN, + "Δεν παρασχέθηκε διαφωνία και δεν υπάρχει ενσωματωμένο μενού, εμφάνιση βοήθειας..." + ) +MSG_HASH( + MSG_SETTING_DISK_IN_TRAY, + "Τοποθέτηση δίσκου στην μονάδα δίσκου" + ) +MSG_HASH( + MSG_WAITING_FOR_CLIENT, + "Αναμονή για πελάτη ..." + ) +MSG_HASH( + MSG_NETPLAY_YOU_HAVE_LEFT_THE_GAME, + "Αποσυνδεθήκατε από το παιχνίδι" + ) +MSG_HASH( + MSG_NETPLAY_YOU_HAVE_JOINED_AS_PLAYER_N, + "Έχετε συνδεθεί ως παίκτης %u" + ) +MSG_HASH( + MSG_NETPLAY_YOU_HAVE_JOINED_WITH_INPUT_DEVICES_S, + "Έχετε συνδεθεί με συσκευές εισόδου %.*s" + ) +MSG_HASH( + MSG_NETPLAY_PLAYER_S_LEFT, + "Ο παίκτης %.*s αποσυνδέθηκε από το παιχνίδι" + ) +MSG_HASH( + MSG_NETPLAY_S_HAS_JOINED_AS_PLAYER_N, + "%.*s συνδέθηκε ως παίκτης %u" + ) +MSG_HASH( + MSG_NETPLAY_S_HAS_JOINED_WITH_INPUT_DEVICES_S, + "%.*s συνδέθηκε με συσκευές εισόδου %.*s" + ) +MSG_HASH( + MSG_NETPLAY_NOT_RETROARCH, + "Η προσπάθεια σύνδεσης netplay απέτυχε επειδή ο συμπέκτης δεν χρησιμοποιεί το RetroArch ή χρησιμοποιεί πιο παλιά έκδοση." + ) +MSG_HASH( + MSG_NETPLAY_OUT_OF_DATE, + "Ο συμπαίκτης χρησιμοποιεί πιο παλιά έκδοση RetroArch. Αδύνατη η σύνδεση." + ) +MSG_HASH( + MSG_NETPLAY_DIFFERENT_VERSIONS, + "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ο συμπαίκτης netplay χρησιμοποιεί διαφορετική έκδοση του RetroArch. Εάν προκύψουν προβλήματα χρησιμοποιήστε την ίδια έκδοση." + ) +MSG_HASH( + MSG_NETPLAY_DIFFERENT_CORES, + "Ο συμπαίκτης netplay χρησιμοποιεί διαφορειτκό πυρήνα. Αδύνατη η σύνδεση." + ) +MSG_HASH( + MSG_NETPLAY_DIFFERENT_CORE_VERSIONS, + "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ο συμπαίκτης netplay χρησιμοποιεί διαφορετική έκδοση του πυρήνα. Εάν προκύψουν προβλήματα χρησιμοποιήστε την ίδια έκδοση." + ) +MSG_HASH( + MSG_NETPLAY_ENDIAN_DEPENDENT, + "Αυτός ο πυρήνας δεν υποστηρίζει σύνδεση διαφορετικών πλατφόρμων για netplay ανάμεσα σε αυτά τα συστήματα" + ) +MSG_HASH( + MSG_NETPLAY_PLATFORM_DEPENDENT, + "Αυτός ο πυρήνας δεν υποστηρίζει σύνδεση διαφορετικών πλατφόρμων για netplay" + ) +MSG_HASH( + MSG_NETPLAY_ENTER_PASSWORD, + "Εισάγετε κωδικό διακομιστή netplay:" + ) +MSG_HASH( + MSG_NETPLAY_INCORRECT_PASSWORD, + "Λάθος κωδικός" + ) +MSG_HASH( + MSG_NETPLAY_SERVER_NAMED_HANGUP, + "\"%s\" αποσυνδέθηκε" + ) +MSG_HASH( + MSG_NETPLAY_SERVER_HANGUP, + "Ένας πελάτης netplay έχει αποσυνδεθεί" + ) +MSG_HASH( + MSG_NETPLAY_CLIENT_HANGUP, + "Αποσύνδεση netplay" + ) +MSG_HASH( + MSG_NETPLAY_CANNOT_PLAY_UNPRIVILEGED, + "Δεν έχετε άδεια για να παίξετε" + ) +MSG_HASH( + MSG_NETPLAY_CANNOT_PLAY_NO_SLOTS, + "Δεν υπάρχουν κενές θέσεις παικτών" + ) +MSG_HASH( + MSG_NETPLAY_CANNOT_PLAY_NOT_AVAILABLE, + "Οι συσκευές εισόδου που ζητήθηκαν δεν είναι διαθέσιμες" + ) +MSG_HASH( + MSG_NETPLAY_CANNOT_PLAY, + "Δεν μπορεί να γίνει αλλαγή σε κατάσταση παιχνιδιού" + ) +MSG_HASH( + MSG_NETPLAY_PEER_PAUSED, + "Ο συμπαίκτης netplay \"%s\" έκανε παύση" + ) +MSG_HASH( + MSG_NETPLAY_CHANGED_NICK, + "Το ψευδώνυμο σας άλλαξε σε \"%s\"" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHARED_CONTEXT, + "Give hardware-rendered cores their own private context. Avoids having to assume hardware state changes inbetween frames." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SETTINGS, + "Προσαρμόζει τις εμφανισιακές ρυθμίσεις της οθόνης του μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_HARD_SYNC, + "Σκληρός συγχρονισμός επεξεργαστή και κάρτας γραφικών. Μειώνει την καθυστέρηση με τίμημα την επίδοση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_THREADED, + "Βελτιώνει την επίδοση με τίμημα την καθυστέρηση και περισσότερα κολλήματα στο βίντεο. Χρησιμοποιείστε μόνο εάν δεν μπορείτε να αποκτήσετε πλήρη ταχύτητα με άλλον τρόπο." + ) +MSG_HASH( + MSG_AUDIO_VOLUME, + "Ένταση ήχου" + ) +MSG_HASH( + MSG_AUTODETECT, + "Αυτόματη ανίχνευση" + ) +MSG_HASH( + MSG_AUTOLOADING_SAVESTATE_FROM, + "Αυτόματη φόρτωση κατάστασης αποθήκευσης από" + ) +MSG_HASH( + MSG_CAPABILITIES, + "Ικανότητες" + ) +MSG_HASH( + MSG_CONNECTING_TO_NETPLAY_HOST, + "Σύνδεση με εξυπηρετητή netplay" + ) +MSG_HASH( + MSG_CONNECTING_TO_PORT, + "Σύνδεση στην θύρα" + ) +MSG_HASH( + MSG_CONNECTION_SLOT, + "Θέση σύνδεσης" + ) +MSG_HASH( + MSG_SORRY_UNIMPLEMENTED_CORES_DONT_DEMAND_CONTENT_NETPLAY, + "Συγγνώμη, μη εφαρμοσμένο: πυρήνες που δεν απαιτούν περιεχόμενο δεν μπορούν να συμμετέχουν στο netplay." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_PASSWORD, + "Κωδικός" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_SETTINGS, + "Επιτεύγματα Λογαριασμού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_USERNAME, + "Όνομα Χρήστη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST, + "Λογαριασμοί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST_END, + "Accounts List Endpoint" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS, + "RetroAchievements" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST, + "Επιτεύγματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_PAUSE, + "Παύση Σκληροπυρηνικής Λειτουργίας Επιτευγμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_RESUME, + "Συνέχιση Σκληροπυρηνικής Λειτουργίας Επιτευγμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST_HARDCORE, + "Επιτεύγματα (Σκληροπυρηνικά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST, + "Σάρωση Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONFIGURATIONS_LIST, + "Διαμορφώσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TAB, + "Εισαγωγή περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_TAB, + "Δωμάτια Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ASK_ARCHIVE, + "Ερώτηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ASSETS_DIRECTORY, + "Εργαλεία" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_BLOCK_FRAMES, + "Φραγή Καρέ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_DEVICE, + "Συσκευή Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_DRIVER, + "Οδηγός Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_DSP_PLUGIN, + "Πρόσθετο Ήχου DSP" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE, + "Ενεργοποίηση Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_FILTER_DIR, + "Φίλτρα Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TURBO_DEADZONE_LIST, + "Turbo/Νεκρή Ζώνη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_LATENCY, + "Καθυστέρηση Ήχου (ms)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW, + "Μέγιστη Χρονική Διαστρέβλωση Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_MUTE, + "Σίγαση Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE, + "Συχνότητα Εξόδου Ήχου (Hz)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA, + "Δυναμικός Έλεγχος Βαθμού Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER, + "Οδηγός Επαναδειγματολήπτη Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS, + "Ήχος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_SYNC, + "Συγχρονισμός Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, + "Ένταση Ήχου (dB)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_EXCLUSIVE_MODE, + "Αποκλειστική Λειτουργία WASAPI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_FLOAT_FORMAT, + "Ασταθής Μορφή WASAPI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_SH_BUFFER_LENGTH, + "Μήκος Κοινόχρηστης Ενδιάμεσης Μνήμης WASAPI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUTOSAVE_INTERVAL, + "Διάστημα Αυτόματης Αποθήκευσης SaveRAM" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUTO_OVERRIDES_ENABLE, + "Φόρτωση Αρχείων Παράκαμψης Αυτόματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUTO_REMAPS_ENABLE, + "Φόρτωση Αρχείων Αναδιοργάνωσης Πλήτρκων Αυτόματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUTO_SHADERS_ENABLE, + "Φόρτωση Προεπιλογών Σκιάσεων Αυτόματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK, + "Πίσω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_CONFIRM, + "Επιβεβαίωση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_INFO, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_QUIT, + "Έξοδος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_DOWN, + "Μετακίνηση Προς Τα Κάτω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_UP, + "Μετακίνηση Προς Τα Πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_START, + "Εκκίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_KEYBOARD, + "Ενεργοποίηση/Απενεργοποίηση Πληκτρολογίου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_MENU, + "Ενεργοποίηση/Απενεργοποίηση Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS, + "Βασικός χειρισμός μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_CONFIRM, + "Επιβεβαίωση/ΟΚ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_INFO, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_QUIT, + "Έξοδος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_SCROLL_UP, + "Μετακίνηση Προς Τα Πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_START, + "Προεπιλογές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_KEYBOARD, + "Ενεργοποίηση/Απενεργοποίηση Πληκτρολογίου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_MENU, + "Ενεργοποίηση/Απενεργοποίηση Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BLOCK_SRAM_OVERWRITE, + "Απενεργοποίηση αντικατάστασης SaveRAM κατά την φάση φόρτωσης κατάστασης αποθήκευσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BLUETOOTH_ENABLE, + "Ενεργοποίηση Bluetooth" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BUILDBOT_ASSETS_URL, + "Σύνδεσμος Εργαλείων του Buildbot" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CACHE_DIRECTORY, + "Κρυφή Μνήμη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CAMERA_ALLOW, + "Επίτρεψη Κάμερας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CAMERA_DRIVER, + "Οδηγός Κάμερας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT, + "Απάτη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_CHANGES, + "Εφαρμογή Αλλαγών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_START_SEARCH, + "Έναρξη Αναζήτησης Για Νέους Κωδικούς Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_CONTINUE_SEARCH, + "Συνέχιση Αναζήτησης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DATABASE_PATH, + "Αρχεία Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_FILE, + "Αρχείο Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_FILE_LOAD, + "Φόρτωση Αρχείου Απάτης (Αντικατάσταση)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_FILE_LOAD_APPEND, + "Φόρτωση Αρχείου Απάτης (Προσάρτηση)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_FILE_SAVE_AS, + "Αποθήκευση Αρχείου Απάτης Ως" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_NUM_PASSES, + "Φορές Περάσματος Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_DESCRIPTION, + "Περιγραφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE, + "Σκληροπυρηνική Λειτουργία" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_LEADERBOARDS_ENABLE, + "Κατατάξεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_BADGES_ENABLE, + "Εμβλήματα Επιτευγμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_LOCKED_ACHIEVEMENTS, + "Κλειδωμένα Επιτεύγματα:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_LOCKED_ENTRY, + "Κλειδωμένο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_SETTINGS, + "RetroAchievements" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL, + "Δοκιμή Ανεπίσημων Επιτευγμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ACHIEVEMENTS, + "Ξεκλειδωμένα Επιτεύγματα:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY, + "Ξεκλείδωτο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY_HARDCORE, + "Σκληροπυρηνικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_VERBOSE_ENABLE, + "Βερμπαλιστική Λειτουργία" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_AUTO_SCREENSHOT, + "Αυτόματο Στιγμιότυπο Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, + "Κλείσιμο Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONFIG, + "Διαμόρφωση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONFIGURATIONS, + "Φόρτωση Διαμορφώσεων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONFIGURATION_SETTINGS, + "Διαμόρφωση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONFIG_SAVE_ON_EXIT, + "Απόθηκευση Διαμόρφωσης με την Έξοδο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST, + "Συλλογές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY, + "Βάσεις Δεδομένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_DIR, + "Περιεχόμενο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_SIZE, + "Μέγεθος Λίστας Ιστορικού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE, + "Επίτρεψη αφαίρεσης καταχωρήσεων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SETTINGS, + "Γρήγορο Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIR, + "Λήψεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIRECTORY, + "Λήψεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, + "Απάτες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_COUNTERS, + "Μετρητές Πυρήνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_ENABLE, + "Εμφάνιση ονόματος πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFORMATION, + "Πληροφορίες πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_AUTHORS, + "Δημιουργοί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_CATEGORIES, + "Κατηγορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_LABEL, + "Επιγραφή πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_NAME, + "Όνομα πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_FIRMWARE, + "Firmware(s)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_LICENSES, + "Άδεια(ες)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_PERMISSIONS, + "Άδειες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS, + "Υποστηριζόμενες επεκτάσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER, + "Κατασκευαστής συστήματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_NAME, + "Όνομα συστήματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, + "Χειρισμοί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_LIST, + "Φόρτωση Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, + "Επιλογές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_SETTINGS, + "Πυρήνας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE, + "Αυτόματη Έναρξη Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE, + "Αυτόματη εξαγωγή ληφθέντος συμπιεσμένου αρχείου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL, + "Σύνδεσμος Buildbot Πυρήνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST, + "Ενημέρωση Πυρήνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_SETTINGS, + "Ενημερωτής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CPU_ARCHITECTURE, + "Αρχιτεκτονική Επεξεργαστή:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CPU_CORES, + "Πυρήνες Επεξεργαστή:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CURSOR_DIRECTORY, + "Δρομείς" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CURSOR_MANAGER, + "Διαχειριστής Δρομέα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CUSTOM_RATIO, + "Πρωτιμώμενη Αναλογία" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER, + "Διαχειριστής Βάσης Δεδομένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION, + "Επιλογή Βάσης Δεδομένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, + "Κατάργηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FAVORITES, + "Ευρετήριο έναρξης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, + "<Ευρετήριο περιεχομένων>" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, + "<Προκαθορισμένο>" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DIRECTORY_NONE, + "<Κανένα>" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, + "Το ευρετήριο δεν βρέθηκε." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, + "Ευρετήρια" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, + "Disk Cycle Tray Status" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, + "Disk Image Append" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISK_INDEX, + "Disk Index" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, + "Disk Control" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DONT_CARE, + "Don't care" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST, + "Λήψεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE, + "Λήψη Πυρήνα..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE_CONTENT, + "Λήψη Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_ENABLE, + "DPI Override Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_VALUE, + "DPI Override" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS, + "Οδηγοί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN, + "Φόρτωση Dummy στο Κλείσιμο Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHECK_FOR_MISSING_FIRMWARE, + "Έλεγχος για απών Firmware Πριν την Φόρτωση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, + "Δυναμικό Φόντο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY, + "Δυναμικά Φόντα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_ENABLE, + "Ενεργοποίηση Επιτευγμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ENTRY_HOVER_COLOR, + "Χρώμα καταχώρησης μενού όταν το ποντίκι βρίσκεται από πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ENTRY_NORMAL_COLOR, + "Χρώμα καταχώρησης μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FALSE, + "Ψευδές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO, + "Μέγιστη Ταχύτητα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FAVORITES_TAB, + "Αγαπημένα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FPS_SHOW, + "Προβολή Ρυθμού Καρέ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_ENABLE, + "Περιορισμός Μέγιστης Ταχύτητας Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VRR_RUNLOOP_ENABLE, + "Συγχρονισμός με τον Ακριβή Ρυθμό Καρέ του Περιεχομένου (G-Sync, FreeSync)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_SETTINGS, + "Περιορισμός Καρέ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FRONTEND_COUNTERS, + "Frontend Counters" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS, + "Φόρτωση Επιλογών Πυρήνα Βάση Συγκεκριμένου Περιεχομένου Αυτόματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_CREATE, + "Δημιουργία αρχείου επιλογών παιχνιδιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_IN_USE, + "Αποθήκευση αρχείου επιλογών παιχνιδιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP, + "Βοήθεια" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING, + "Αντιμετώπιση Προβλημάτων Ήχου/Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD, + "Αλλαγή Επικαλύμματος Εικονικού Χειριστηρίου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_CONTROLS, + "Βασικός Χειρισμός Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_LIST, + "Βοήθεια" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_LOADING_CONTENT, + "Φόρτωση Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT, + "Σάρωση Για Περιεχόμενο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_WHAT_IS_A_CORE, + "Τι Είναι Ο Πυρήνας;" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HISTORY_LIST_ENABLE, + "Ενεργοποίηση Λίστας Ιστορικού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HISTORY_TAB, + "Ιστορικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HORIZONTAL_MENU, + "Οριζόντιο Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_IMAGES_TAB, + "Εικόνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INFORMATION, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INFORMATION_LIST, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ADC_TYPE, + "Τύπος Αναλογικού Σε Ψηφιακό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ALL_USERS_CONTROL_MENU, + "Όλοι Οι Χρήστες Χειρίζονται Το Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X, + "Αριστερό Αναλογικό X" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, + "Αριστερό Αναλογικό X- (αριστερά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, + "Αριστερό Αναλογικό X+ (δεξιά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y, + "Αριστερό Αναλογικό Y" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, + "Αριστερό Αναλογικό Y- (πάνω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, + "Αριστερό Αναλογικό Y+ (κάτω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X, + "Δεξί Αναλογικό X" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, + "Δεξί Αναλογικό X- (αριστερά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, + "Δεξί Αναλογικό X+ (δεξιά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y, + "Δεξί Αναλογικό Y" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, + "Δεξί Αναλογικό Y- (πάνω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, + "Δεξί Αναλογικό Y+ (κάτω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_TRIGGER, + "Σκανδάλη Όπλου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_RELOAD, + "Γέμισμα Όπλου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_A, + "Όπλο Aux A" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_B, + "Όπλο Aux B" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_C, + "Όπλο Aux C" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_START, + "Όπλο Start" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_SELECT, + "Όπλο Select" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_UP, + "Όπλο D-pad Πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_DOWN, + "Όπλο D-pad Κάτω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_LEFT, + "Όπλο D-pad Αριστερά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_RIGHT, + "Όπλο D-pad Δεξιά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_AUTODETECT_ENABLE, + "Ενεργοποίηση Αυτόματης Διαμόρφωσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_AXIS_THRESHOLD, + "Νεκρή Ζώνη Αναλογικού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_INPUT_SWAP_OK_CANCEL, + "Εναλλαγή Κουμπιών Επιβεβαίωσης & Ακύρωσης Στο Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_BIND_ALL, + "Σύνδεση Όλων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_BIND_DEFAULT_ALL, + "Επαναφορά Συνδέσεων Όλων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_BIND_TIMEOUT, + "Λήξη Χρόνου Σύνδεσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_BIND_HOLD, + "Κράτημα Σύνδεσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND, + "Hide Unbound Core Input Descriptors" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW, + "Display Input Descriptor Labels" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_INDEX, + "Κατάλογος Συσκευών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_TYPE, + "Τύπος Συσκευής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_INDEX, + "Κατάλογος Ποντικιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DRIVER, + "Οδηγός Εισαγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DUTY_CYCLE, + "Duty Cycle" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_BINDS, + "Input Hotkey Binds" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ICADE_ENABLE, + "Keyboard Gamepad Mapping Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, + "Κουμπί A (δεξιά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, + "Κουμπί B (κάτω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, + "D-pad κάτω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, + "Κουμπί L2 (σκανδάλι)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, + "Κουμπί L3 (αντίχειρας)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, + "Κουμπί L (πίσω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, + "D-pad αριστερό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, + "Κουμπί R2 (σκανδάλι)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, + "Κουμπί R3 (αντίχειρας)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, + "Κουμπί R (πίσω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, + "D-pad δεξί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, + "Κουμπί Select" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, + "Κουμπί Start" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, + "D-pad πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, + "Κουμπί X (πάνω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, + "Κουμπί Y (αριστερό)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_KEY, + "(Κουμπί: %s)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_LEFT, + "Ποντίκι 1" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_RIGHT, + "Ποντίκι 2" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_MIDDLE, + "Ποντίκι 3" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_BUTTON4, + "Ποντίκι 4" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_BUTTON5, + "Ποντίκι 5" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_WHEEL_UP, + "Ροδέλα Πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_WHEEL_DOWN, + "Ροδέλα Κάτω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_HORIZ_WHEEL_UP, + "Ροδέλα Αριστερά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_HORIZ_WHEEL_DOWN, + "Ροδέλα Δεξιά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE, + "Keyboard Gamepad Mapping Type" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MAX_USERS, + "Μέγιστοι Χρήστες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO, + "Συνδιασμός Πλήκτρων Χειριστηρίου για Άνοιγμα Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, + "Cheat index -" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, + "Cheat index +" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, + "Cheat toggle" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, + "Disk eject toggle" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, + "Disk next" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, + "Disk prev" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, + "Ενεργοποίηση πλήκτρων εντολών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY, + "Fast forward hold" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, + "Fast forward toggle" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, + "Frameadvance" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY, + "Πλήρης οθόνη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, + "Grab mouse toggle" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, + "Game focus toggle" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_UI_COMPANION_TOGGLE, + "Desktop menu toggle" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, + "Load state" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, + "Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_BSV_RECORD_TOGGLE, + "Input replay movie record toggle" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, + "Σίγαση Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, + "Netplay toggle play/spectate mode" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, + "Πληκτρολόγιο οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, + "Overlay next" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, + "Παύση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, + "Έξοδος από το RetroArch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, + "Reset game" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, + "Επιστροφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_DETAILS, + "Λεπτομέρειες Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_SEARCH, + "Start or Continue Cheat Search" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, + "Save state" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, + "Λήψη Στιγμιότυπου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, + "Επόμενη σκίαση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, + "Προηγούμενη σκίαση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_HOLD_KEY, + "Παύση αργής κίνησης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_KEY, + "Αργή κίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, + "Savestate slot -" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, + "Savestate slot +" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, + "Ένταση -" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, + "Ένταση +" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_ENABLE, + "Display Overlay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU, + "Hide Overlay In Menu" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, + "Show Inputs On Overlay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, + "Show Inputs Listen Port" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR, + "Poll Type Behavior" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_EARLY, + "Early" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_LATE, + "Late" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_NORMAL, + "Normal" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_PREFER_FRONT_TOUCH, + "Prefer Front Touch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY, + "Input Remapping" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE, + "Remap Binds Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_SAVE_AUTOCONFIG, + "Αποθήκευση Αυτόματης Διαμόρφωσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS, + "Εισαγωγή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE, + "Ενεργοποίηση Μικρού Πληκτρολογίου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_TOUCH_ENABLE, + "Ενεργοποίηση Αφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, + "Ενεργοποίηση Turbo" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_TURBO_PERIOD, + "Turbo Period" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_USER_BINDS, + "Σύνδεση Πλήκτρων Εισόδου Χρήστη %u" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LATENCY_SETTINGS, + "Καθυστέρηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INTERNAL_STORAGE_STATUS, + "Internal storage status" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR, + "Input Autoconfig" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_JOYPAD_DRIVER, + "Οδηγός Joypad" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LAKKA_SERVICES, + "Υπηρεσίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_CHINESE_SIMPLIFIED, + "Chinese (Simplified)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_CHINESE_TRADITIONAL, + "Chinese (Traditional)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_DUTCH, + "Dutch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_ENGLISH, + "English" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_ESPERANTO, + "Esperanto" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_FRENCH, + "French" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_GERMAN, + "German" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_ITALIAN, + "Italian" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_JAPANESE, + "Japanese" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_KOREAN, + "Korean" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_POLISH, + "Polish" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE_BRAZIL, + "Portuguese (Brazil)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE_PORTUGAL, + "Portuguese (Portugal)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_RUSSIAN, + "Russian" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_SPANISH, + "Spanish" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_VIETNAMESE, + "Vietnamese" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_ARABIC, + "Arabic" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_GREEK, + "Ελληνικά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_ANALOG, + "Αριστερό Αναλογικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH, + "Πυρήνας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LIBRETRO_INFO_PATH, + "Πληροφορίες Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LIBRETRO_LOG_LEVEL, + "Core Logging Level" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LINEAR, + "Γραμμικός" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, + "Φόρτωση Αρχείου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, + "Φόρτωση Πρόσφατου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, + "Φόρτωση Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOAD_STATE, + "Φόρτωση Κατάστασης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOCATION_ALLOW, + "Επίτρεψη Τοποθεσίας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOCATION_DRIVER, + "Οδηγός Τοποθεσίας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS, + "Αρχείο Καταγραφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY, + "Logging Verbosity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MAIN_MENU, + "Κεντρικό Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MANAGEMENT, + "Ρυθμίσεις Βάσης Δεδομένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME, + "Χρώμα Θέματος Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE, + "Μπλε" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE_GREY, + "Μπλε Γκρι" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_DARK_BLUE, + "Σκούρο Μπλε" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_GREEN, + "Πράσινο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_NVIDIA_SHIELD, + "Shield" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_RED, + "Κόκκινο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_YELLOW, + "Κίτρινο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_FOOTER_OPACITY, + "Footer Opacity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_HEADER_OPACITY, + "Header Opacity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_DRIVER, + "Οδηγός Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_ENUM_THROTTLE_FRAMERATE, + "Throttle Menu Framerate" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS, + "Ρυθμίσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_LINEAR_FILTER, + "Menu Linear Filter" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_HORIZONTAL_ANIMATION, + "Horizontal Animation" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SETTINGS, + "Εμφάνιση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER, + "Φόντο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER_OPACITY, + "Background opacity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MISSING, + "Λείπει" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MORE, + "..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE, + "Υποστήριξη Ποντικιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MULTIMEDIA_SETTINGS, + "Πολυμέσα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MUSIC_TAB, + "Μουσική" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, + "Φιλτράρισμα άγνωστων επεκτάσεων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NAVIGATION_WRAPAROUND, + "Navigation Wrap-Around" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NEAREST, + "Κοντινότερο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY, + "Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ALLOW_SLAVES, + "Allow Slave-Mode Clients" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_CHECK_FRAMES, + "Netplay Check Frames" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_INPUT_LATENCY_FRAMES_MIN, + "Input Latency Frames" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, + "Input Latency Frames Range" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_DELAY_FRAMES, + "Netplay Delay Frames" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_DISCONNECT, + "Disconnect from netplay host" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE, + "Ενεργοποίηση Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_CLIENT, + "Σύνδεση σε οικοδεσπότη netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_HOST, + "Έναρξη netplay ως οικοδεσπότης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_DISABLE_HOST, + "Λήξη netplay ως οικοδεσπότης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_IP_ADDRESS, + "Διέυθυνση Διακομιστή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_LAN_SCAN_SETTINGS, + "Σάρωση τοπικού δικτύου Scan local network" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_MODE, + "Netplay Client Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_NICKNAME, + "Όνομα Χρήστη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_PASSWORD, + "Κωδικός Διακομιστή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_PUBLIC_ANNOUNCE, + "Δημόσια Ανακοίνωση Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_REQUEST_DEVICE_I, + "Request Device %u" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_REQUIRE_SLAVES, + "Disallow Non-Slave-Mode Clients" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SETTINGS, + "Ρυθμίσεις Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG, + "Analog Input Sharing" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG_MAX, + "Μέγιστο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG_AVERAGE, + "Μέσος Όρος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL, + "Digital Input Sharing" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_OR, + "Κοινοποίηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_XOR, + "Grapple" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_VOTE, + "Ψήφος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_NONE, + "Κανείς" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_NO_PREFERENCE, + "Καμία προτίμηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_START_AS_SPECTATOR, + "Netplay Spectator Mode" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_STATELESS_MODE, + "Netplay Stateless Mode" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATE_PASSWORD, + "Server Spectate-Only Password" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE, + "Netplay Spectator Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_TCP_UDP_PORT, + "Netplay TCP Port" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_NAT_TRAVERSAL, + "Netplay NAT Traversal" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_CMD_ENABLE, + "Network Commands" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_CMD_PORT, + "Network Command Port" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_INFORMATION, + "Πληροφορίες Δικτύου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_ENABLE, + "Χειριστήριο Δικτύου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_PORT, + "Network Remote Base Port" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_SETTINGS, + "Δίκτυο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO, + "Όχι" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NONE, + "Τίποτα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE, + "Μ/Δ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_ACHIEVEMENTS_TO_DISPLAY, + "Δεν υπάρχουν επιτεύγματα προς προβολή." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_CORE, + "Κανένας Πυρήνας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_CORES_AVAILABLE, + "Δεν υπάρχουν διαθέσιμοι πυρήνες." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_CORE_INFORMATION_AVAILABLE, + "Δεν υπάρχουν διαθέσιμες πληροφορίες πυρήνα." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_CORE_OPTIONS_AVAILABLE, + "Δεν υπάρχουν διαθέσιμες επιλογές πυρήνα." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_ENTRIES_TO_DISPLAY, + "Δεν υπάρχουν καταχωρήσεις προς εμφάνιση." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_HISTORY_AVAILABLE, + "Δεν υπάρχει διαθέσιμο ιστορικό." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE, + "Δεν υπάρχουν διαθέσιμες πληροφορίες." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_ITEMS, + "Δεν υπάρχουν αντικείμενα." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_NETPLAY_HOSTS_FOUND, + "Δεν βρέθηκαν εξυπηρετητές netplay." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_NETWORKS_FOUND, + "Δεν βρέθηκαν δίκτυα." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_PERFORMANCE_COUNTERS, + "No performance counters." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_PLAYLISTS, + "Δεν βρέθηκαν λίστες αναπαραγωγής." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE, + "Δεν υπάρχουν διαθέσιμες καταχωρήσεις στην λίστα αναπαραγωγής." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND, + "Δεν βρέθηκαν ρυθμίσεις." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_SHADER_PARAMETERS, + "Δεν βρέθηκαν παράμετροι σκίασης." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OFF, + "OFF" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ON, + "ON" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ONLINE, + "Online" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER, + "Διαδικτυακός Ενημερωτής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS, + "Οθόνη Απεικόνισης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ONSCREEN_OVERLAY_SETTINGS, + "Επικάλλυμα Οθόνης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ONSCREEN_OVERLAY_SETTINGS, + "Adjust Bezels and Onscreen controls" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ONSCREEN_NOTIFICATIONS_SETTINGS, + "Ειδοποιήσεις Οθόνης Απεικόνισης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ONSCREEN_NOTIFICATIONS_SETTINGS, + "Adjust the Onscreen Notifications" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OPEN_ARCHIVE, + "Περιήγηση Αρχείου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OPTIONAL, + "Προεραιτικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY, + "Επικάλλυμα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED, + "Autoload Preferred Overlay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_DIRECTORY, + "Επικάλλυμα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_OPACITY, + "Overlay Opacity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_PRESET, + "Overlay Preset" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_SCALE, + "Overlay Scale" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS, + "Onscreen Overlay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PAL60_ENABLE, + "Use PAL60 Mode" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PARENT_DIRECTORY, + "Προηγούμενο ευρετήριο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, + "Παύση όταν ενεργοποιείται το μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE, + "Μην εκτελείτε στο παρασκήνιο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PERFCNT_ENABLE, + "Performance Counters" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLISTS_TAB, + "Λίστες Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, + "Λίστα Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS, + "Λίστες Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_POINTER_ENABLE, + "Υποστήριξη Αφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PORT, + "Θύρα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PRESENT, + "Present" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PRIVACY_SETTINGS, + "Ιδιωτικότητα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIDI_SETTINGS, + "MIDI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH, + "Έξοδος από RetroArch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ANALOG, + "Analog supported" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_BBFC_RATING, + "BBFC Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_CERO_RATING, + "CERO Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_COOP, + "Co-op supported" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_CRC32, + "CRC32" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DESCRIPTION, + "Description" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DEVELOPER, + "Developer" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_ISSUE, + "Edge Magazine Issue" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_RATING, + "Edge Magazine Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_REVIEW, + "Edge Magazine Review" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ELSPA_RATING, + "ELSPA Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ENHANCEMENT_HW, + "Enhancement Hardware" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ESRB_RATING, + "ESRB Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_FAMITSU_MAGAZINE_RATING, + "Famitsu Magazine Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_FRANCHISE, + "Franchise" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_GENRE, + "Genre" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_MD5, + "MD5" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_NAME, + "Όνομα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ORIGIN, + "Origin" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_PEGI_RATING, + "PEGI Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_PUBLISHER, + "Publisher" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_MONTH, + "Releasedate Month" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_YEAR, + "Releasedate Year" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RUMBLE, + "Rumble supported" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SERIAL, + "Serial" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SHA1, + "SHA1" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_START_CONTENT, + "Έναρξη Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_TGDB_RATING, + "TGDB Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REBOOT, + "Επανεκκίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY, + "Recording Config" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY, + "Recording Output" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORDING_SETTINGS, + "Εγγραφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORD_CONFIG, + "Custom Record Config" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STREAM_CONFIG, + "Custom Stream Config" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORD_DRIVER, + "Οδηγός Εγγραφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIDI_DRIVER, + "Οδηγός MIDI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORD_ENABLE, + "Enable Recording" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORD_PATH, + "Save Output Recording as..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY, + "Save Recordings in Output Dir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE, + "Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_LOAD, + "Load Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_CORE, + "Save Core Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_CONTENT_DIR, + "Save Content Directory Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_GAME, + "Save Game Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_CORE, + "Delete Core Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_GAME, + "Delete Game Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_CONTENT_DIR, + "Delete Game Content Directory Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REQUIRED, + "Απαραίτητο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, + "Επανεκκίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH, + "Επανεκκίνηση RetroArch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESUME, + "Συνέχιση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, + "Συνέχιση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RETROKEYBOARD, + "RetroKeyboard" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RETROPAD, + "RetroPad" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RETROPAD_WITH_ANALOG, + "RetroPad με Αναλογικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RETRO_ACHIEVEMENTS_SETTINGS, + "Επιτεύγματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REWIND_ENABLE, + "Ενεργοποίηση Επιστροφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_TOGGLE, + "Apply After Toggle" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_LOAD, + "Auto-Apply Cheats During Game Load" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY, + "Rewind Granularity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE, + "Rewind Buffer Size (MB)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP, + "Rewind Buffer Size Step (MB)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REWIND_SETTINGS, + "Επιστροφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SETTINGS, + "Ρυθμίσεις Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DETAILS_SETTINGS, + "Λεπτομέρειες Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_SETTINGS, + "Έναρξη ή Συνέχιση Αναζήτησης Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, + "Περιηγητής Αρχείων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, + "Config" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RGUI_SHOW_START_SCREEN, + "Εμφάνιση Αρχικής Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RIGHT_ANALOG, + "Δεξί Αναλογικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES, + "Προσθήκη στα Αγαπημένα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES_PLAYLIST, + "Προσθήκη στα Αγαπημένα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESET_CORE_ASSOCIATION, + "Επαναφορά Συσχέτισης Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN, + "Εκκίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN_MUSIC, + "Εκκίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAMBA_ENABLE, + "Ενεργοποίηση SAMBA" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVEFILE_DIRECTORY, + "Αρχείο Αποθήκευσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_INDEX, + "Save State Auto Index" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_LOAD, + "Auto Load State" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_SAVE, + "Auto Save State" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATE_DIRECTORY, + "Savestate" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATE_THUMBNAIL_ENABLE, + "Savestate Thumbnails" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG, + "Αποθήκευση Τρέχουσας Διαμόρφωσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, + "Save Core Overrides" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR, + "Save Content Directory Overrides" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, + "Save Game Overrides" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_NEW_CONFIG, + "Αποθήκευση Νέας Διαμόρφωσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_STATE, + "Κατάσταση Αποθήκευσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS, + "Αποθήκευση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY, + "Σάρωση Ευρετηρίου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCAN_FILE, + "Σάρωση αρχείου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCAN_THIS_DIRECTORY, + "<Σάρωση Αυτού Του Ευρετηρίου>" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCREENSHOT_DIRECTORY, + "Στιγμιότυπο Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION, + "Ανάλυση Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SEARCH, + "Αναζήτηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SECONDS, + "δευτερόλεπτα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SETTINGS, + "Ρυθμίσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SETTINGS_TAB, + "Ρυθμίσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER, + "Σκίαση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_APPLY_CHANGES, + "Εφαμοργή Αλλαγών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_OPTIONS, + "Σκιάσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON, + "Κορδέλλα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED, + "Κορδέλλα (απλοποιημένη)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SIMPLE_SNOW, + "Απλό Χιόνι" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW, + "Χιόνι" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS, + "Εμφάνιση Ρυθμίσεων Για Προχωρημένους" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHOW_HIDDEN_FILES, + "Εμφάνιση Κρυφών Αρχείων και Φακέλων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHUTDOWN, + "Τερματισμός" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO, + "Slow-Motion Ratio" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, + "Run-Ahead to Reduce Latency" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, + "Number of Frames to Run Ahead" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, + "RunAhead Use Second Instance" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, + "RunAhead Hide Warnings" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SORT_SAVEFILES_ENABLE, + "Sort Saves In Folders" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SORT_SAVESTATES_ENABLE, + "Sort Savestates In Folders" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATES_IN_CONTENT_DIR_ENABLE, + "Write Savestates to Content Dir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVEFILES_IN_CONTENT_DIR_ENABLE, + "Write Saves to Content Dir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEMFILES_IN_CONTENT_DIR_ENABLE, + "System Files are in Content Dir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCREENSHOTS_IN_CONTENT_DIR_ENABLE, + "Write Screenshots to Content Dir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SSH_ENABLE, + "Ενεργοποίηση SSH" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_START_CORE, + "Έναρξη Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_START_NET_RETROPAD, + "Έναρξη Απομακρυσμένου RetroPad" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_START_VIDEO_PROCESSOR, + "Έναρξη Επεξεργαστή Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STATE_SLOT, + "State Slot" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STATUS, + "Κατάσταση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STDIN_CMD_ENABLE, + "Εντολές stdin" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SUPPORTED_CORES, + "Προτεινόμενοι πυρήνες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE, + "Αναστολή Προφύλαξης Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_BGM_ENABLE, + "System BGM Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_DIRECTORY, + "Σύστημα/BIOS" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFORMATION, + "Πληροφορίες Συστήματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT, + "Υποστήριξη 7zip" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT, + "Υποστήριξη ALSA" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE, + "Ημερομηνία Κατασκευής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT, + "Υποστήριξη Cg" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT, + "Υποστήριξη Cocoa" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT, + "Υποστήριξη Γραμμής Εντολών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT, + "Υποστήριξη CoreText" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES, + "Χαρακτηριστικά Επεξεργαστή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI, + "DPI Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT, + "Ύψος Οθόνης (mm)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH, + "Πλάτος Οθόνης (mm)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT, + "Υποστήριξη DirectSound" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_WASAPI_SUPPORT, + "Υποστήριξη WASAPI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT, + "Υποστήριξη δυναμικής βιβλιοθήκης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYNAMIC_SUPPORT, + "Dynamic run-time loading of libretro library" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT, + "Υποστήριξη EGL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT, + "Υποστήριξη OpenGL/Direct3D render-to-texture (multi-pass shaders)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT, + "Υποστήριξη FFmpeg" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT, + "Υποστήριξη FreeType" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_STB_TRUETYPE_SUPPORT, + "Υποστήριξη STB TrueType" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER, + "Frontend identifier" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME, + "Frontend name" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS, + "Frontend OS" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION, + "Έκδοση Git" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT, + "Υποστήριξη GLSL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT, + "Υποστήριξη HLSL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT, + "Υποστήριξη JACK" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT, + "Υποστήριξη KMS/EGL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LAKKA_VERSION, + "Έκδοση Lakka" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT, + "Υποστήριξη LibretroDB" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT, + "Υποστήριξη Libusb" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT, + "Υποστήριξη libxml2 XML parsing" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT, + "Υποστήριξη Netplay (peer-to-peer)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT, + "Υποστήριξη Γραμμής Εντολών Δικτύου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_REMOTE_SUPPORT, + "Υποστήριξη Χειριστηρίου Δικτύου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT, + "Υποστήριξη OpenAL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT, + "Υποστήριξη OpenGL ES" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT, + "Υποστήριξη OpenGL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT, + "Υποστήριξη OpenSL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT, + "Υποστήριξη OpenVG" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT, + "Υποστήριξη OSS" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT, + "Υποστήριξη Επικαλλυμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE, + "Πηγή ρεύματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED, + "Φορτισμένο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING, + "Φορτίζει" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING, + "Ξεφορτίζει" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE, + "Καμία πηγή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT, + "Υποστήριξη PulseAudio" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT, + "Υποστήριξη Python (script support in shaders)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RBMP_SUPPORT, + "Υποστήριξη BMP (RBMP)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL, + "Επίπεδο RetroRating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RJPEG_SUPPORT, + "Υποστήριξη JPEG (RJPEG)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT, + "Υποστήριξη RoarAudio" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT, + "Υποστήριξη PNG (RPNG)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT, + "Υποστήριξη RSound" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RTGA_SUPPORT, + "Υποστήριξη TGA (RTGA)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT, + "Υποστήριξη SDL2" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT, + "Υποστήριξη Εικόνων SDL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT, + "Υποστήριξη SDL1.2" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SLANG_SUPPORT, + "Υποστήριξη Slang" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT, + "Υποστήριξη Threading" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT, + "Υποστήριξη Udev" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT, + "Υποστήριξη Video4Linux2" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER, + "Οδηγός video context" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VULKAN_SUPPORT, + "Υποστήριξη Vulkan" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_METAL_SUPPORT, + "Υποστήριξη Metal" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT, + "Υποστήριξη Wayland" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT, + "Υποστήριξη X11" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT, + "Υποστήριξη XAudio2" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT, + "Υποστήριξη XVideo" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT, + "Υποστήριξη Zlib" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, + "Λήψη Στιγμιότυπου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE, + "Threaded tasks" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAILS, + "Σκίτσα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS, + "Σκίτσα Αριστερά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_VERTICAL_THUMBNAILS, + "Thumbnails Vertical Disposition" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAILS_DIRECTORY, + "Σκίτσα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST, + "Ενημερωτής Σκίτσων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_BOXARTS, + "Εξώφυλλα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS, + "Στιγμιότυπα Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS, + "Οθόνες Τίτλων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_ENABLE, + "Εμφάνιση ημερομηνίας / ώρας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE, + "Στυλ ημερομηνίας / ώρας" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_TIMEDATE_STYLE, + "Αλλάζει το στυλ της τρέχουσας ημερομηνίας ή και ώρας που φαίνεται μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_YMD_HMS, + "YYYY-MM-DD HH:MM:SS" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_YMD_HM, + "YYYY-MM-DD HH:MM" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_MDYYYY, + "MM-DD-YYYY HH:MM" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_HMS, + "HH:MM:SS" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_HM, + "HH:MM" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_DM_HM, + "DD/MM HH:MM" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_MD_HM, + "MM/DD HH:MM" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_AM_PM, + "HH:MM:SS (AM/PM)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TITLE_COLOR, + "Χρώμα τίτλου μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TRUE, + "Αληθές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UI_COMPANION_ENABLE, + "UI Companion Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UI_COMPANION_START_ON_BOOT, + "UI Companion Start On Boot" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UI_COMPANION_TOGGLE, + "Show desktop menu on startup" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DESKTOP_MENU_ENABLE, + "Enable desktop menu (restart)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UI_MENUBAR_ENABLE, + "Menubar" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE, + "Αδυναμία ανάγνωσης συμπιεσμένου αρχείου." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UNDO_LOAD_STATE, + "Undo Load State" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UNDO_SAVE_STATE, + "Undo Save State" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UNKNOWN, + "Άγνωστο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATER_SETTINGS, + "Ενημερωτής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_ASSETS, + "Ενημέρωση Βασικών Στοιχείων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES, + "Ενημέρωση Προφίλ Joypad" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_CG_SHADERS, + "Ενημέρωση των Σκιάσεων Cg" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_CHEATS, + "Ενημέρωση Απατών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_CORE_INFO_FILES, + "Ενημέρωση Αρχείων Πληροφοριών Πυρήνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_DATABASES, + "Ενημέρωση Βάσεων Δεδομένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_GLSL_SHADERS, + "Ενημέρωση Σκιάσεων GLSL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_LAKKA, + "Ενημέρωση Lakka" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_OVERLAYS, + "Ενημέρωση Επικαλλυμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_SLANG_SHADERS, + "Ενημέρωση Σκιάσεων Slang" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USER, + "Χρήστης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_KEYBOARD, + "Kbd" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USER_INTERFACE_SETTINGS, + "Διεπαφή Χρήστη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USER_LANGUAGE, + "Γλώσσα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USER_SETTINGS, + "Χρήστης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Χρήση Ενσωματωμένου Προβολέα Εικόνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Χρήση Ενσωματωμένου Αναπαραγωγέα Πολυμέσων Use Builtin Media Player" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_THIS_DIRECTORY, + "<Χρήση αυτού του ευρετηρίου>" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ALLOW_ROTATE, + "Επίτρεψη περιστροφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO, + "Config Aspect Ratio" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_AUTO, + "Auto Aspect Ratio" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX, + "Aspect Ratio" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION, + "Black Frame Insertion" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_CROP_OVERSCAN, + "Crop Overscan (Reload)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION, + "Disable Desktop Composition" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_DRIVER, + "Οδηγός Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FILTER, + "Φίλτρο Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_DIR, + "Φίλτρο Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_FLICKER, + "Flicker filter" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FONT_ENABLE, + "Enable Onscreen Notifications" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FONT_PATH, + "Notification Font" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FONT_SIZE, + "Notification Size" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_ASPECT, + "Force aspect ratio" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE, + "Force-disable sRGB FBO" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY, + "Frame Delay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN, + "Start in Fullscreen Mode" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_GAMMA, + "Video Gamma" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_GPU_RECORD, + "Use GPU Recording" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_GPU_SCREENSHOT, + "GPU Screenshot Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC, + "Hard GPU Sync" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES, + "Hard GPU Sync Frames" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, + "Max swapchain images" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_X, + "Notification X Position" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_Y, + "Notification Y Position" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX, + "Monitor Index" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_POST_FILTER_RECORD, + "Use Post Filter Recording" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE, + "Vertical Refresh Rate" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO, + "Estimated Screen Framerate" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_POLLED, + "Set Display-Reported Refresh Rate" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION, + "Περιστροφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SCALE, + "Windowed Scale" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, + "Integer Scale" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS, + "Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_DIR, + "Σκίαση Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_NUM_PASSES, + "Shader Passes" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PARAMETERS, + "Shader Parameters" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET, + "Load Shader Preset" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS, + "Save Shader Preset As" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_CORE, + "Save Core Preset" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_PARENT, + "Save Content Directory Preset" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_GAME, + "Save Game Preset" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHARED_CONTEXT, + "Enable Hardware Shared Context" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SMOOTH, + "Bilinear Filtering" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SOFT_FILTER, + "Soft Filter Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SWAP_INTERVAL, + "Vertical Sync (Vsync) Swap Interval" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_TAB, + "Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_THREADED, + "Threaded Video" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VFILTER, + "Deflicker" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_HEIGHT, + "Custom Aspect Ratio Height" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH, + "Custom Aspect Ratio Width" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_X, + "Custom Aspect Ratio X Pos." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y, + "Custom Aspect Ratio Y Pos." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH, + "Set VI Screen Width" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, + "Vertical Sync (Vsync)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN, + "Windowed Fullscreen Mode" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH, + "Window Width" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT, + "Window Height" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_X, + "Fullscreen Width" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_Y, + "Fullscreen Height" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_WIFI_DRIVER, + "Οδηγός Wi-Fi" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_WIFI_SETTINGS, + "Wi-Fi" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ALPHA_FACTOR, + "Menu Alpha Factor" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_RED, + "Menu Font Red Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_GREEN, + "Menu Font Green Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_BLUE, + "Menu Font Blue Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_FONT, + "Γραμματοσειρά Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_CUSTOM, + "Custom" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_FLATUI, + "FlatUI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME, + "Μονόχρωμο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME_INVERTED, + "Μονόχρωμο Αναστρεμένο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_SYSTEMATIC, + "Systematic" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_NEOACTIVE, + "NeoActive" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_PIXEL, + "Pixel" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_RETROACTIVE, + "RetroActive" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_RETROSYSTEM, + "Retrosystem" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_DOTART, + "Dot-Art" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_AUTOMATIC, + "Automatic" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME, + "Χρώμα Θέματος Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_APPLE_GREEN, + "Πράσινο Μήλο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_DARK, + "Σκούρο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_LIGHT, + "Φωτεινό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MORNING_BLUE, + "Πρωινό Μπλε" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_DARK_PURPLE, + "Σκούρο Μωβ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ELECTRIC_BLUE, + "Μπλε Ηλεκτρίκ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GOLDEN, + "Χρυσαφί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_LEGACY_RED, + "Legacy Κόκκινο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MIDNIGHT_BLUE, + "Μεσωνύκτιο Μπλε" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_PLAIN, + "Απλό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_UNDERSEA, + "Κάτω Από Την Θάλασσα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_VOLCANIC_RED, + "Ηφαιστιακό Κόκκινο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_RIBBON_ENABLE, + "Menu Shader Pipeline" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_SCALE_FACTOR, + "Menu Scale Factor" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_SHADOWS_ENABLE, + "Ενεργοποίηση Σκιών Εικονιδίων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_HISTORY, + "Προβολή Καρτέλας Ιστορικού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD, + "Προβολή Καρτέλας Εισαγωγής Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS, + "Προβολή Καρτέλας Λίστας Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_FAVORITES, + "Προβολή Καρτέλας Αγαπημένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_IMAGES, + "Προβολή Καρτέλας Εικόνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_MUSIC, + "Προβολή Καρτέλας Μουσικής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS, + "Προβολή Καρτέλας Ρυθμίσεων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_VIDEO, + "Προβολή Καρτέλας Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_NETPLAY, + "Προβολή Καρτέλας Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_LAYOUT, + "Διάταξη Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_THEME, + "Θέμα Εικόνων Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_YES, + "Ναι" + ) +MSG_HASH( + MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_TWO, + "Shader Preset" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_ENABLE, + "Ενεργοποίηση ή απενεργοποίηση επιτευγμάτων. Για περισσότερες πληροφορίες επισκεφθείτε http://retroachievements.org" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_TEST_UNOFFICIAL, + "Enable or disable unofficial achievements and/or beta features for testing purposes." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_HARDCORE_MODE_ENABLE, + "Enable or disable savestates, cheats, rewind, pause, and slow-motion for all games." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_LEADERBOARDS_ENABLE, + "Enable or disable in-game leaderboards. Has no effect if Hardcore Mode is disabled." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_BADGES_ENABLE, + "Enable or disable badge display in the Achievement List." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_VERBOSE_ENABLE, + "Enable or disable OSD verbosity for achievements." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_AUTO_SCREENSHOT, + "Automatically take a screenshot when an achievement is triggered." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DRIVER_SETTINGS, + "Αλλαγή οδηγών που χρησιμοποιούνται από το σύστημα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RETRO_ACHIEVEMENTS_SETTINGS, + "Αλλαγή ρυθμίσεων επιτευγμάτων." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_SETTINGS, + "Αλλαγή ρυθμίσεων πυρήνα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RECORDING_SETTINGS, + "Αλλαγή ρυθμίσεων εγγραφής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ONSCREEN_DISPLAY_SETTINGS, + "Αλλαγή επικάλλυψης οθόνης και επικάλλυψης πληκτρολογίου και ρυθμίσεις ειδοποιήσεων οθόνης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FRAME_THROTTLE_SETTINGS, + "Αλλαγή ρυθμίσεων επιστροφής, γρήγορης κίνησης και αργής κίνησης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVING_SETTINGS, + "Αλλαγή ρυθμίσεων αποθήκευσης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOGGING_SETTINGS, + "Αλλαγή ρυθμίσεων αρχείου καταγραφής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_USER_INTERFACE_SETTINGS, + "Αλλαγή ρυθμίσεων περιβάλλοντος χρήστη." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_USER_SETTINGS, + "Αλλαγή ρυθμίσεων λογαριασμού, ονόματος χρήστη και γλώσσας." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PRIVACY_SETTINGS, + "Αλλαγή ρυθμίσεων ιδιοτηκότητας." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIDI_SETTINGS, + "Αλλαγή ρυθμίσεων MIDI." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DIRECTORY_SETTINGS, + "Αλλαγή προκαθορισμένων ευρετηρίων όπου βρίσκονται τα αρχεία." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_SETTINGS, + "Αλλαγή ρυθμίσεων λιστών αναπαραγωγής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETWORK_SETTINGS, + "Αλλαγή ρυθμίσεων εξυπηρετητή και δικτύου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ADD_CONTENT_LIST, + "Σάρωση περιεχομένου και προσθήκη στην βάση δεδομένων." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_SETTINGS, + "Αλλαγή ρυθμίσεων εξόδου ήχου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_BLUETOOTH_ENABLE, + "Ενεργοποίηση ή απενεργοποίηση bluetooth." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONFIG_SAVE_ON_EXIT, + "Αποθήκευση αλλαγών στο αρχείο διαμόρφωσης κατά την έξοδο." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONFIGURATION_SETTINGS, + "Αλλαγή προκαθορισμένων ρυθμίσεων των αρχείων διαμόρφωσης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONFIGURATIONS_LIST, + "Διαχειρισμός και δημιουργία αρχείων διαμόρφωσης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CPU_CORES, + "Αριθμός πυρήνων που έχει ο επεξεργαστής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FPS_SHOW, + "Εμφανίζει τον τρέχον ρυθμό καρέ ανά δευτερόλεπτο στην οθόνη." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_HOTKEY_BINDS, + "Διαμόρφωση ρυθμίσεων πλήκτρων εντολών." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO, + "Συνδιασμός κουμπιών χειριστηρίου για την εμφάνιση του μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_SETTINGS, + "Αλλαγή ρυθμίσεων χειριστηρίου, πληκτρολογίου και ποντικιού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_USER_BINDS, + "Διαμόρφωση χειρισμών για αυτόν τον χρήστη." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LATENCY_SETTINGS, + "Αλλαγή ρυθμίσεων συσχετιζόμενες με το βίντεο, τον ήχο και την καθυστέρηση εισαγωγής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOG_VERBOSITY, + "Ενεργοποίηση ή απενεργοποίηση αρχείων καταγραφής στο τερματικό." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY, + "Συμμετοχή ή δημιουργία μίας συνεδρίας netplay." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_LAN_SCAN_SETTINGS, + "Αναζήτηση για και σύνδεση με οικοδεσπότη netplay στο τοπικό δίκτυο." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INFORMATION_LIST_LIST, + "Εμφάνιση πληροφοριών συστήματος." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ONLINE_UPDATER, + "Κατεβάστε πρόσθετα, στοιχεία και περιεχόμενο για το RetroArch." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAMBA_ENABLE, + "Enable or disable network sharing of your folders." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SERVICES_SETTINGS, + "Manage operating system level services." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHOW_HIDDEN_FILES, + "Show hidden files/directories inside the file browser." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SSH_ENABLE, + "Enable or disable remote command line access." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SUSPEND_SCREENSAVER_ENABLE, + "Prevents your system's screensaver from becoming active." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_WINDOW_SCALE, + "Sets the window size relative to the core viewport size. Alternatively, you can set a window width and height below for a fixed window size." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_USER_LANGUAGE, + "Ορίζει την γλώσσα του περιβάλλοντος." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_BLACK_FRAME_INSERTION, + "Inserts a black frame inbetween frames. Useful for users with 120Hz screens who want to play 60Hz content to eliminate ghosting." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FRAME_DELAY, + "Reduces latency at the cost of a higher risk of video stuttering. Adds a delay after V-Sync (in ms)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_HARD_SYNC_FRAMES, + "Sets how many frames the CPU can run ahead of the GPU when using 'Hard GPU Sync'." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, + "Tells the video driver to explicitly use a specified buffering mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_MONITOR_INDEX, + "Selects which display screen to use." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_AUTO, + "The accurate estimated refresh rate of the screen in Hz." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_POLLED, + "The refresh rate as reported by the display driver." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SETTINGS, + "Αλλαγή ρυθμίσεων εξόδου βίντεο." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_WIFI_SETTINGS, + "Scans for wireless networks and establishes connection." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_HELP_LIST, + "Μάθετε περισσότερα για το πως λειτουργεί το πρόγραμμα." + ) +MSG_HASH( + MSG_ADDED_TO_FAVORITES, + "Προστέθηκε στα αγαπημένα" + ) +MSG_HASH( + MSG_RESET_CORE_ASSOCIATION, + "Playlist entry core association has been reset." + ) +MSG_HASH( + MSG_APPENDED_DISK, + "Appended disk" + ) +MSG_HASH( + MSG_APPLICATION_DIR, + "Application Dir" + ) +MSG_HASH( + MSG_APPLYING_CHEAT, + "Applying cheat changes." + ) +MSG_HASH( + MSG_APPLYING_SHADER, + "Applying shader" + ) +MSG_HASH( + MSG_AUDIO_MUTED, + "Ο ήχος απενεργοποιήθηκε." + ) +MSG_HASH( + MSG_AUDIO_UNMUTED, + "Ο ήχος ενεργοποιήθηκε." + ) +MSG_HASH( + MSG_AUTOCONFIG_FILE_ERROR_SAVING, + "Error saving autoconf file." + ) +MSG_HASH( + MSG_AUTOCONFIG_FILE_SAVED_SUCCESSFULLY, + "Autoconfig file saved successfully." + ) +MSG_HASH( + MSG_AUTOSAVE_FAILED, + "Could not initialize autosave." + ) +MSG_HASH( + MSG_AUTO_SAVE_STATE_TO, + "Auto save state to" + ) +MSG_HASH( + MSG_BLOCKING_SRAM_OVERWRITE, + "Blocking SRAM Overwrite" + ) +MSG_HASH( + MSG_BRINGING_UP_COMMAND_INTERFACE_ON_PORT, + "Bringing up command interface on port" + ) +MSG_HASH( + MSG_BYTES, + "bytes" + ) +MSG_HASH( + MSG_CANNOT_INFER_NEW_CONFIG_PATH, + "Cannot infer new config path. Use current time." + ) +MSG_HASH( + MSG_CHEEVOS_HARDCORE_MODE_ENABLE, + "Achievements Hardcore Mode Enabled, savestate & rewind were disabled." + ) +MSG_HASH( + MSG_COMPARING_WITH_KNOWN_MAGIC_NUMBERS, + "Comparing with known magic numbers..." + ) +MSG_HASH( + MSG_COMPILED_AGAINST_API, + "Compiled against API" + ) +MSG_HASH( + MSG_CONFIG_DIRECTORY_NOT_SET, + "Config directory not set. Cannot save new config." + ) +MSG_HASH( + MSG_CONNECTED_TO, + "Συνδέθηκε με" + ) +MSG_HASH( + MSG_CONTENT_CRC32S_DIFFER, + "Content CRC32s differ. Cannot use different games." + ) +MSG_HASH( + MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT, + "Content loading skipped. Implementation will load it on its own." + ) +MSG_HASH( + MSG_CORE_DOES_NOT_SUPPORT_SAVESTATES, + "Core does not support save states." + ) +MSG_HASH( + MSG_CORE_OPTIONS_FILE_CREATED_SUCCESSFULLY, + "Core options file created successfully." + ) +MSG_HASH( + MSG_COULD_NOT_FIND_ANY_NEXT_DRIVER, + "Could not find any next driver" + ) +MSG_HASH( + MSG_COULD_NOT_FIND_COMPATIBLE_SYSTEM, + "Could not find compatible system." + ) +MSG_HASH( + MSG_COULD_NOT_FIND_VALID_DATA_TRACK, + "Could not find valid data track" + ) +MSG_HASH( + MSG_COULD_NOT_OPEN_DATA_TRACK, + "could not open data track" + ) +MSG_HASH( + MSG_COULD_NOT_READ_CONTENT_FILE, + "Could not read content file" + ) +MSG_HASH( + MSG_COULD_NOT_READ_MOVIE_HEADER, + "Could not read movie header." + ) +MSG_HASH( + MSG_COULD_NOT_READ_STATE_FROM_MOVIE, + "Could not read state from movie." + ) +MSG_HASH( + MSG_CRC32_CHECKSUM_MISMATCH, + "CRC32 checksum mismatch between content file and saved content checksum in replay file header. Replay highly likely to desync on playback." + ) +MSG_HASH( + MSG_CUSTOM_TIMING_GIVEN, + "Custom timing given" + ) +MSG_HASH( + MSG_DECOMPRESSION_ALREADY_IN_PROGRESS, + "Decompression already in progress." + ) +MSG_HASH( + MSG_DECOMPRESSION_FAILED, + "Decompression failed." + ) +MSG_HASH( + MSG_DETECTED_VIEWPORT_OF, + "Detected viewport of" + ) +MSG_HASH( + MSG_DID_NOT_FIND_A_VALID_CONTENT_PATCH, + "Did not find a valid content patch." + ) +MSG_HASH( + MSG_DISCONNECT_DEVICE_FROM_A_VALID_PORT, + "Disconnect device from a valid port." + ) +MSG_HASH( + MSG_DISK_CLOSED, + "Closed" + ) +MSG_HASH( + MSG_DISK_EJECTED, + "Ejected" + ) +MSG_HASH( + MSG_DOWNLOADING, + "Γίνεται λήψη" + ) +MSG_HASH( + MSG_INDEX_FILE, + "index" + ) +MSG_HASH( + MSG_DOWNLOAD_FAILED, + "Η λήψη απέτυχε" + ) +MSG_HASH( + MSG_ERROR, + "Πρόβλημα" + ) +MSG_HASH( + MSG_ERROR_LIBRETRO_CORE_REQUIRES_CONTENT, + "Libretro core requires content, but nothing was provided." + ) +MSG_HASH( + MSG_ERROR_LIBRETRO_CORE_REQUIRES_SPECIAL_CONTENT, + "Libretro core requires special content, but none were provided." + ) +MSG_HASH( + MSG_ERROR_PARSING_ARGUMENTS, + "Error parsing arguments." + ) +MSG_HASH( + MSG_ERROR_SAVING_CORE_OPTIONS_FILE, + "Error saving core options file." + ) +MSG_HASH( + MSG_ERROR_SAVING_REMAP_FILE, + "Error saving remap file." + ) +MSG_HASH( + MSG_ERROR_REMOVING_REMAP_FILE, + "Error removing remap file." + ) +MSG_HASH( + MSG_ERROR_SAVING_SHADER_PRESET, + "Error saving shader preset." + ) +MSG_HASH( + MSG_EXTERNAL_APPLICATION_DIR, + "External Application Dir" + ) +MSG_HASH( + MSG_EXTRACTING, + "Γίνεται εξαγωγή" + ) +MSG_HASH( + MSG_EXTRACTING_FILE, + "Γίνεται εξαγωγή αρχείου" + ) +MSG_HASH( + MSG_FAILED_SAVING_CONFIG_TO, + "Failed saving config to" + ) +MSG_HASH( + MSG_FAILED_TO, + "Failed to" + ) +MSG_HASH( + MSG_FAILED_TO_ACCEPT_INCOMING_SPECTATOR, + "Failed to accept incoming spectator." + ) +MSG_HASH( + MSG_FAILED_TO_ALLOCATE_MEMORY_FOR_PATCHED_CONTENT, + "Failed to allocate memory for patched content..." + ) +MSG_HASH( + MSG_FAILED_TO_APPLY_SHADER, + "Failed to apply shader." + ) +MSG_HASH( + MSG_FAILED_TO_BIND_SOCKET, + "Failed to bind socket." + ) +MSG_HASH( + MSG_FAILED_TO_CREATE_THE_DIRECTORY, + "Failed to create the directory." + ) +MSG_HASH( + MSG_FAILED_TO_EXTRACT_CONTENT_FROM_COMPRESSED_FILE, + "Failed to extract content from compressed file" + ) +MSG_HASH( + MSG_FAILED_TO_GET_NICKNAME_FROM_CLIENT, + "Failed to get nickname from client." + ) +MSG_HASH( + MSG_FAILED_TO_LOAD, + "Failed to load" + ) +MSG_HASH( + MSG_FAILED_TO_LOAD_CONTENT, + "Failed to load content" + ) +MSG_HASH( + MSG_FAILED_TO_LOAD_MOVIE_FILE, + "Failed to load movie file" + ) +MSG_HASH( + MSG_FAILED_TO_LOAD_OVERLAY, + "Failed to load overlay." + ) +MSG_HASH( + MSG_FAILED_TO_LOAD_STATE, + "Failed to load state from" + ) +MSG_HASH( + MSG_FAILED_TO_OPEN_LIBRETRO_CORE, + "Failed to open libretro core" + ) +MSG_HASH( + MSG_FAILED_TO_PATCH, + "Failed to patch" + ) +MSG_HASH( + MSG_FAILED_TO_RECEIVE_HEADER_FROM_CLIENT, + "Failed to receive header from client." + ) +MSG_HASH( + MSG_FAILED_TO_RECEIVE_NICKNAME, + "Failed to receive nickname." + ) +MSG_HASH( + MSG_FAILED_TO_RECEIVE_NICKNAME_FROM_HOST, + "Failed to receive nickname from host." + ) +MSG_HASH( + MSG_FAILED_TO_RECEIVE_NICKNAME_SIZE_FROM_HOST, + "Failed to receive nickname size from host." + ) +MSG_HASH( + MSG_FAILED_TO_RECEIVE_SRAM_DATA_FROM_HOST, + "Failed to receive SRAM data from host." + ) +MSG_HASH( + MSG_FAILED_TO_REMOVE_DISK_FROM_TRAY, + "Failed to remove disk from tray." + ) +MSG_HASH( + MSG_FAILED_TO_REMOVE_TEMPORARY_FILE, + "Failed to remove temporary file" + ) +MSG_HASH( + MSG_FAILED_TO_SAVE_SRAM, + "Failed to save SRAM" + ) +MSG_HASH( + MSG_FAILED_TO_SAVE_STATE_TO, + "Failed to save state to" + ) +MSG_HASH( + MSG_FAILED_TO_SEND_NICKNAME, + "Failed to send nickname." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_NICKNAME_SIZE, + "Failed to send nickname size." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_NICKNAME_TO_CLIENT, + "Failed to send nickname to client." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_NICKNAME_TO_HOST, + "Failed to send nickname to host." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_SRAM_DATA_TO_CLIENT, + "Failed to send SRAM data to client." + ) +MSG_HASH( + MSG_FAILED_TO_START_AUDIO_DRIVER, + "Failed to start audio driver. Will continue without audio." + ) +MSG_HASH( + MSG_FAILED_TO_START_MOVIE_RECORD, + "Failed to start movie record." + ) +MSG_HASH( + MSG_FAILED_TO_START_RECORDING, + "Failed to start recording." + ) +MSG_HASH( + MSG_FAILED_TO_TAKE_SCREENSHOT, + "Failed to take screenshot." + ) +MSG_HASH( + MSG_FAILED_TO_UNDO_LOAD_STATE, + "Failed to undo load state." + ) +MSG_HASH( + MSG_FAILED_TO_UNDO_SAVE_STATE, + "Failed to undo save state." + ) +MSG_HASH( + MSG_FAILED_TO_UNMUTE_AUDIO, + "Failed to unmute audio." + ) +MSG_HASH( + MSG_FATAL_ERROR_RECEIVED_IN, + "Fatal error received in" + ) +MSG_HASH( + MSG_FILE_NOT_FOUND, + "Το αρχείο δεν βρέθηκε" + ) +MSG_HASH( + MSG_FOUND_AUTO_SAVESTATE_IN, + "Found auto savestate in" + ) +MSG_HASH( + MSG_FOUND_DISK_LABEL, + "Found disk label" + ) +MSG_HASH( + MSG_FOUND_FIRST_DATA_TRACK_ON_FILE, + "Found first data track on file" + ) +MSG_HASH( + MSG_FOUND_LAST_STATE_SLOT, + "Found last state slot" + ) +MSG_HASH( + MSG_FOUND_SHADER, + "Found shader" + ) +MSG_HASH( + MSG_FRAMES, + "Καρέ" + ) +MSG_HASH( + MSG_GAME_SPECIFIC_CORE_OPTIONS_FOUND_AT, + "Per-Game Options: game-specific core options found at" + ) +MSG_HASH( + MSG_GOT_INVALID_DISK_INDEX, + "Got invalid disk index." + ) +MSG_HASH( + MSG_GRAB_MOUSE_STATE, + "Grab mouse state" + ) +MSG_HASH( + MSG_GAME_FOCUS_ON, + "Game focus on" + ) +MSG_HASH( + MSG_GAME_FOCUS_OFF, + "Game focus off" + ) +MSG_HASH( + MSG_HW_RENDERED_MUST_USE_POSTSHADED_RECORDING, + "Libretro core is hardware rendered. Must use post-shaded recording as well." + ) +MSG_HASH( + MSG_INFLATED_CHECKSUM_DID_NOT_MATCH_CRC32, + "Inflated checksum did not match CRC32." + ) +MSG_HASH( + MSG_INPUT_CHEAT, + "Εισαγωγή Απάτης" + ) +MSG_HASH( + MSG_INPUT_CHEAT_FILENAME, + "Input Cheat Filename" + ) +MSG_HASH( + MSG_INPUT_PRESET_FILENAME, + "Input Preset Filename" + ) +MSG_HASH( + MSG_INPUT_RENAME_ENTRY, + "Rename Title" + ) +MSG_HASH( + MSG_INTERFACE, + "Αντάπτορας Δικτύου" + ) +MSG_HASH( + MSG_INTERNAL_STORAGE, + "Εσωτερική Μνήμη Αποθήκευσης" + ) +MSG_HASH( + MSG_REMOVABLE_STORAGE, + "Αφαιρούμενο Μέσο Αποθήκευσης" + ) +MSG_HASH( + MSG_INVALID_NICKNAME_SIZE, + "Μη έγκυρο μέγεθος ψευδώνυμου." + ) +MSG_HASH( + MSG_IN_BYTES, + "σε bytes" + ) +MSG_HASH( + MSG_IN_GIGABYTES, + "σε gigabytes" + ) +MSG_HASH( + MSG_IN_MEGABYTES, + "σε megabytes" + ) +MSG_HASH( + MSG_LIBRETRO_ABI_BREAK, + "is compiled against a different version of libretro than this libretro implementation." + ) +MSG_HASH( + MSG_LIBRETRO_FRONTEND, + "Frontend for libretro" + ) +MSG_HASH( + MSG_LOADED_STATE_FROM_SLOT, + "Loaded state from slot #%d." + ) +MSG_HASH( + MSG_LOADED_STATE_FROM_SLOT_AUTO, + "Loaded state from slot #-1 (auto)." + ) +MSG_HASH( + MSG_LOADING, + "Γίνεται φόρτωση" + ) +MSG_HASH( + MSG_FIRMWARE, + "One or more firmware files are missing" + ) +MSG_HASH( + MSG_LOADING_CONTENT_FILE, + "Loading content file" + ) +MSG_HASH( + MSG_LOADING_HISTORY_FILE, + "Loading history file" + ) +MSG_HASH( + MSG_LOADING_STATE, + "Loading state" + ) +MSG_HASH( + MSG_MEMORY, + "Μνήμη" + ) +MSG_HASH( + MSG_MOVIE_FILE_IS_NOT_A_VALID_BSV1_FILE, + "Input replay movie file is not a valid BSV1 file." + ) +MSG_HASH( + MSG_MOVIE_FORMAT_DIFFERENT_SERIALIZER_VERSION, + "Input replay movie format seems to have a different serializer version. Will most likely fail." + ) +MSG_HASH( + MSG_MOVIE_PLAYBACK_ENDED, + "Input replay movie playback ended." + ) +MSG_HASH( + MSG_MOVIE_RECORD_STOPPED, + "Stopping movie record." + ) +MSG_HASH( + MSG_NETPLAY_FAILED, + "Failed to initialize netplay." + ) +MSG_HASH( + MSG_NO_CONTENT_STARTING_DUMMY_CORE, + "No content, starting dummy core." + ) +MSG_HASH( + MSG_NO_SAVE_STATE_HAS_BEEN_OVERWRITTEN_YET, + "No save state has been overwritten yet." + ) +MSG_HASH( + MSG_NO_STATE_HAS_BEEN_LOADED_YET, + "No state has been loaded yet." + ) +MSG_HASH( + MSG_OVERRIDES_ERROR_SAVING, + "Error saving overrides." + ) +MSG_HASH( + MSG_OVERRIDES_SAVED_SUCCESSFULLY, + "Overrides saved successfully." + ) +MSG_HASH( + MSG_PAUSED, + "Παύση." + ) +MSG_HASH( + MSG_PROGRAM, + "RetroArch" + ) +MSG_HASH( + MSG_READING_FIRST_DATA_TRACK, + "Reading first data track..." + ) +MSG_HASH( + MSG_RECEIVED, + "ελήφθη" + ) +MSG_HASH( + MSG_RECORDING_TERMINATED_DUE_TO_RESIZE, + "Recording terminated due to resize." + ) +MSG_HASH( + MSG_RECORDING_TO, + "Εγγραφή σε" + ) +MSG_HASH( + MSG_REDIRECTING_CHEATFILE_TO, + "Redirecting cheat file to" + ) +MSG_HASH( + MSG_REDIRECTING_SAVEFILE_TO, + "Redirecting save file to" + ) +MSG_HASH( + MSG_REDIRECTING_SAVESTATE_TO, + "Redirecting savestate to" + ) +MSG_HASH( + MSG_REMAP_FILE_SAVED_SUCCESSFULLY, + "Remap file saved successfully." + ) +MSG_HASH( + MSG_REMAP_FILE_REMOVED_SUCCESSFULLY, + "Remap file removed successfully." + ) +MSG_HASH( + MSG_REMOVED_DISK_FROM_TRAY, + "Removed disk from tray." + ) +MSG_HASH( + MSG_REMOVING_TEMPORARY_CONTENT_FILE, + "Removing temporary content file" + ) +MSG_HASH( + MSG_RESET, + "Reset" + ) +MSG_HASH( + MSG_RESTARTING_RECORDING_DUE_TO_DRIVER_REINIT, + "Restarting recording due to driver reinit." + ) +MSG_HASH( + MSG_RESTORED_OLD_SAVE_STATE, + "Restored old save state." + ) +MSG_HASH( + MSG_RESTORING_DEFAULT_SHADER_PRESET_TO, + "Shaders: restoring default shader preset to" + ) +MSG_HASH( + MSG_REVERTING_SAVEFILE_DIRECTORY_TO, + "Reverting savefile directory to" + ) +MSG_HASH( + MSG_REVERTING_SAVESTATE_DIRECTORY_TO, + "Reverting savestate directory to" + ) +MSG_HASH( + MSG_REWINDING, + "Rewinding." + ) +MSG_HASH( + MSG_REWIND_INIT, + "Initializing rewind buffer with size" + ) +MSG_HASH( + MSG_REWIND_INIT_FAILED, + "Failed to initialize rewind buffer. Rewinding will be disabled." + ) +MSG_HASH( + MSG_REWIND_INIT_FAILED_THREADED_AUDIO, + "Implementation uses threaded audio. Cannot use rewind." + ) +MSG_HASH( + MSG_REWIND_REACHED_END, + "Reached end of rewind buffer." + ) +MSG_HASH( + MSG_SAVED_NEW_CONFIG_TO, + "Saved new config to" + ) +MSG_HASH( + MSG_SAVED_STATE_TO_SLOT, + "Saved state to slot #%d." + ) +MSG_HASH( + MSG_SAVED_STATE_TO_SLOT_AUTO, + "Saved state to slot #-1 (auto)." + ) +MSG_HASH( + MSG_SAVED_SUCCESSFULLY_TO, + "Saved successfully to" + ) +MSG_HASH( + MSG_SAVING_RAM_TYPE, + "Saving RAM type" + ) +MSG_HASH( + MSG_SAVING_STATE, + "Saving state" + ) +MSG_HASH( + MSG_SCANNING, + "Σάρωση" + ) +MSG_HASH( + MSG_SCANNING_OF_DIRECTORY_FINISHED, + "Η σάρωση του ευρετηρίου ολοκληρώθηκε" + ) +MSG_HASH( + MSG_SENDING_COMMAND, + "Αποστολή εντολής" + ) +MSG_HASH( + MSG_SEVERAL_PATCHES_ARE_EXPLICITLY_DEFINED, + "Several patches are explicitly defined, ignoring all..." + ) +MSG_HASH( + MSG_SHADER, + "Σκίαση" + ) +MSG_HASH( + MSG_SHADER_PRESET_SAVED_SUCCESSFULLY, + "Shader preset saved successfully." + ) +MSG_HASH( + MSG_SKIPPING_SRAM_LOAD, + "Skipping SRAM load." + ) +MSG_HASH( + MSG_SLOW_MOTION, + "Αργή κίνηση." + ) +MSG_HASH( + MSG_FAST_FORWARD, + "Fast forward." + ) +MSG_HASH( + MSG_SLOW_MOTION_REWIND, + "Slow motion rewind." + ) +MSG_HASH( + MSG_SRAM_WILL_NOT_BE_SAVED, + "SRAM will not be saved." + ) +MSG_HASH( + MSG_STARTING_MOVIE_PLAYBACK, + "Starting movie playback." + ) +MSG_HASH( + MSG_STARTING_MOVIE_RECORD_TO, + "Starting movie record to" + ) +MSG_HASH( + MSG_STATE_SIZE, + "State size" + ) +MSG_HASH( + MSG_STATE_SLOT, + "State slot" + ) +MSG_HASH( + MSG_TAKING_SCREENSHOT, + "Taking screenshot." + ) +MSG_HASH( + MSG_TO, + "to" + ) +MSG_HASH( + MSG_UNDID_LOAD_STATE, + "Undid load state." + ) +MSG_HASH( + MSG_UNDOING_SAVE_STATE, + "Undoing save state" + ) +MSG_HASH( + MSG_UNKNOWN, + "Άγνωστο" + ) +MSG_HASH( + MSG_UNPAUSED, + "Unpaused." + ) +MSG_HASH( + MSG_UNRECOGNIZED_COMMAND, + "Unrecognized command" + ) +MSG_HASH( + MSG_USING_CORE_NAME_FOR_NEW_CONFIG, + "Using core name for new config." + ) +MSG_HASH( + MSG_USING_LIBRETRO_DUMMY_CORE_RECORDING_SKIPPED, + "Using libretro dummy core. Skipping recording." + ) +MSG_HASH( + MSG_VALUE_CONNECT_DEVICE_FROM_A_VALID_PORT, + "Connect device from a valid port." + ) +MSG_HASH( + MSG_VALUE_DISCONNECTING_DEVICE_FROM_PORT, + "Disconnecting device from port" + ) +MSG_HASH( + MSG_VALUE_REBOOTING, + "Επανεκκίνηση..." + ) +MSG_HASH( + MSG_VALUE_SHUTTING_DOWN, + "Τερματισμός λειτουργίας..." + ) +MSG_HASH( + MSG_VERSION_OF_LIBRETRO_API, + "Έκδοση του libretro API" + ) +MSG_HASH( + MSG_VIEWPORT_SIZE_CALCULATION_FAILED, + "Viewport size calculation failed! Will continue using raw data. This will probably not work right ..." + ) +MSG_HASH( + MSG_VIRTUAL_DISK_TRAY, + "virtual disk tray." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_LATENCY, + "Επιθυμητή καθυστέρηση ήχου σε milliseconds. Ίσως να μην τηρηθεί εάν ο οδηγός ήχου δεν μπορεί να παρέχει την επιλεγμένη καθυστέρηση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_MUTE, + "Σίγαση/κατάργηση σίγασης ήχου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_RATE_CONTROL_DELTA, + "Helps smooth out imperfections in timing when synchronizing audio and video. Be aware that if disabled, proper synchronization is nearly impossible to obtain." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CAMERA_ALLOW, + "Allow or disallow camera access by cores." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOCATION_ALLOW, + "Allow or disallow location services access by cores." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_MAX_USERS, + "Μέγιστος αριθμός χρηστών που υποστηρίζεται από το RetroArch." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_POLL_TYPE_BEHAVIOR, + "Influence how input polling is done inside RetroArch. Setting it to 'Early' or 'Late' can result in less latency, depending on your configuration." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_ALL_USERS_CONTROL_MENU, + "Allows any user to control the menu. If disabled, only User 1 can control the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_VOLUME, + "Ένταση ήχου (σε dB). Το 0 είναι η φυσιολογική ένταση και δεν εφαρμόζεται gain." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_WASAPI_EXCLUSIVE_MODE, + "Allow the WASAPI driver to take exclusive control of the audio device. If disabled, it will use shared mode instead." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_WASAPI_FLOAT_FORMAT, + "Use float format for the WASAPI driver, if supported by your audio device." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_WASAPI_SH_BUFFER_LENGTH, + "The intermediate buffer length (in frames) when using the WASAPI driver in shared mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_SYNC, + "Συγχρονισμός ήχου. Προτείνεται." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_AXIS_THRESHOLD, + "How far an axis must be tilted to result in a button press." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_BIND_TIMEOUT, + "Amount of seconds to wait until proceeding to the next bind." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_BIND_HOLD, + "Amount of seconds to hold an input to bind it." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_TURBO_PERIOD, + "Describes the period when turbo-enabled buttons are toggled. Numbers are described in frames." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_DUTY_CYCLE, + "Describes how long the period of a turbo-enabled button should be. Numbers are described in frames." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_VSYNC, + "Synchronizes the output video of the graphics card to the refresh rate of the screen. Recommended." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_ALLOW_ROTATE, + "Allow cores to set rotation. When disabled, rotation requests are ignored. Useful for setups where one manually rotates the screen." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DUMMY_ON_CORE_SHUTDOWN, + "Some cores might have a shutdown feature. If enabled, it will prevent the core from shutting RetroArch down. Instead, it loads a dummy core." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHECK_FOR_MISSING_FIRMWARE, + "Check if all the required firmware is present before attempting to load content." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE, + "Vertical refresh rate of your screen. Used to calculate a suitable audio input rate.\n" + "NOTE: This will be ignored if 'Threaded Video' is enabled." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_ENABLE, + "Ενεργοποίηση εξόδου ήχου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_MAX_TIMING_SKEW, + "The maximum change in audio input rate. Increasing this enables very large changes in timing at the cost of an inaccurate audio pitch (e.g., running PAL cores on NTSC displays)." + ) +MSG_HASH( + MSG_FAILED, + "failed" + ) +MSG_HASH( + MSG_SUCCEEDED, + "succeeded" + ) +MSG_HASH( + MSG_DEVICE_NOT_CONFIGURED, + "not configured" + ) +MSG_HASH( + MSG_DEVICE_NOT_CONFIGURED_FALLBACK, + "not configured, using fallback" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST, + "Database Cursor List" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DEVELOPER, + "Database - Filter : Developer" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_PUBLISHER, + "Database - Filter : Publisher" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISABLED, + "Disabled" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ENABLED, + "Enabled" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_PATH, + "Content History Path" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_ORIGIN, + "Database - Filter : Origin" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_FRANCHISE, + "Database - Filter : Franchise" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_ESRB_RATING, + "Database - Filter : ESRB Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_ELSPA_RATING, + "Database - Filter : ELSPA Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_PEGI_RATING, + "Database - Filter : PEGI Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_CERO_RATING, + "Database - Filter : CERO Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_BBFC_RATING, + "Database - Filter : BBFC Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_MAX_USERS, + "Database - Filter : Max Users" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_RELEASEDATE_BY_MONTH, + "Database - Filter : Releasedate By Month" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_RELEASEDATE_BY_YEAR, + "Database - Filter : Releasedate By Year" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_ISSUE, + "Database - Filter : Edge Magazine Issue" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_RATING, + "Database - Filter : Edge Magazine Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DATABASE_INFO, + "Πληροφορίες Βάσης Δεδομένων" + ) +MSG_HASH( + MSG_WIFI_SCAN_COMPLETE, + "Η σάρωτη του Wi-Fi ολοκληρώθηκε." + ) +MSG_HASH( + MSG_SCANNING_WIRELESS_NETWORKS, + "Scanning wireless networks..." + ) +MSG_HASH( + MSG_NETPLAY_LAN_SCAN_COMPLETE, + "Netplay scan complete." + ) +MSG_HASH( + MSG_NETPLAY_LAN_SCANNING, + "Scanning for netplay hosts..." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PAUSE_NONACTIVE, + "Pause gameplay when RetroArch is not the active window." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_DISABLE_COMPOSITION, + "Enable or disable composition." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_HISTORY_LIST_ENABLE, + "Enable or disable recent playlist for games, images, music, and videos." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_HISTORY_SIZE, + "Limit the number of entries in recent playlist for games, images, music, and videos." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_UNIFIED_MENU_CONTROLS, + "Unified Menu Controls" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_UNIFIED_MENU_CONTROLS, + "Use the same controls for both the menu and the game. Applies to the keyboard." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FONT_ENABLE, + "Εμφάνιση μηνυμάτων οθόνης." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_USER_REMOTE_ENABLE, + "User %d Remote Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BATTERY_LEVEL_ENABLE, + "Εμφάνιση επιπέδου μπαταρίας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SELECT_FILE, + "Επιλογή Αρχείου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SELECT_FROM_COLLECTION, + "Επιλογή Από Συλλογή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FILTER, + "Φίλτρα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCALE, + "Κλίμακα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_START_WHEN_LOADED, + "Netplay will start when content is loaded." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_LOAD_CONTENT_MANUALLY, + "Couldn't find a suitable core or content file, load manually." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BROWSE_URL_LIST, + "Browse URL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BROWSE_URL, + "URL Path" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BROWSE_START, + "Έναρξη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_BOKEH, + "Bokeh" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOWFLAKE, + "Χιονονιφάδα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_REFRESH_ROOMS, + "Ανανέωση Λίστας Δωματίων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME, + "Ψευδώνυμο: %s" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME_LAN, + "Ψευδώνυμο (lan): %s" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND, + "Βρέθηκε συμβατό περιεχόμενο" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_CROP_OVERSCAN, + "Cuts off a few pixels around the edges of the image customarily left blank by developers which sometimes also contain garbage pixels." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SMOOTH, + "Adds a slight blur to the image to take the edge off of the hard pixel edges. This option has very little impact on performance." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FILTER, + "Apply a CPU-powered video filter.\n" + "NOTE: Might come at a high performance cost. Some video filters might only work for cores that use 32bit or 16bit color." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_USERNAME, + "Input the username of your RetroAchievements account." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_PASSWORD, + "Input the password of your RetroAchievements account." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_NICKNAME, + "Input your user name here. This will be used for netplay sessions, among other things." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_POST_FILTER_RECORD, + "Capture the image after filters (but not shaders) are applied. Your video will look as fancy as what you see on your screen." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_LIST, + "Επιλέξτε ποιον πυρήνα θα χρησιμοποιήστε." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOAD_CONTENT_LIST, + "Επιλέξτε ποιο περιεχόμενο θα ξεκινήσετε." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETWORK_INFORMATION, + "Εμφάνιση ανταπτόρων δικτύου και τις συσχετιζόμενες διευθύνσεις IP." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SYSTEM_INFORMATION, + "Εμφάνιση πληροφοριών για την συγκεκριμένη συσκευή." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUIT_RETROARCH, + "Έξοδος από το πρόγραμμα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_WINDOW_WIDTH, + "Set the custom width size for the display window. Leaving it at 0 will attempt to scale the window as large as possible." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_WINDOW_HEIGHT, + "Set the custom height size for the display window. Leaving it at 0 will attempt to scale the window as large as possible." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_X, + "Set the custom width size for the non-windowed fullscreen mode. Leaving it at 0 will use the desktop resolution." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_Y, + "Set the custom height size for the non-windowed fullscreen mode. Leaving it at 0 will use the desktop resolution" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_X, + "Specify custom X axis position for onscreen text." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_Y, + "Specify custom Y axis position for onscreen text." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FONT_SIZE, + "Specify the font size in points." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_OVERLAY_HIDE_IN_MENU, + "Hide the overlay while inside the menu, and show it again when exiting the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, + "Show keyboard/controller inputs on the onscreen overlay." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, + "Select the port for the overlay to listen to if Show Inputs On Overlay is enabled." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_COLLECTION_LIST, + "Το σαρωμένο περιεχόμενο θα εμφανίζεται εδώ." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER, + "Only scales video in integer steps. The base size depends on system-reported geometry and aspect ratio. If 'Force Aspect' is not set, X/Y will be integer scaled independently." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_GPU_SCREENSHOT, + "Screenshots output of GPU shaded material if available." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_ROTATION, + "Forces a certain rotation of the screen. The rotation is added to rotations which the core sets." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FORCE_SRGB_DISABLE, + "Forcibly disable sRGB FBO support. Some Intel OpenGL drivers on Windows have video problems with sRGB FBO support if this is enabled. Enabling this can work around it." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN, + "Start in fullscreen. Can be changed at runtime. Can be overridden by a command line switch" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_WINDOWED_FULLSCREEN, + "If fullscreen, prefer using a windowed fullscreen mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_GPU_RECORD, + "Records output of GPU shaded material if available." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVESTATE_AUTO_INDEX, + "When making a savestate, save state index is automatically increased before it is saved. When loading content, the index will be set to the highest existing index." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_BLOCK_SRAM_OVERWRITE, + "Block Save RAM from being overwritten when loading save states. Might potentially lead to buggy games." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FASTFORWARD_RATIO, + "The maximum rate at which content will be run when using fast forward (e.g., 5.0x for 60 fps content = 300 fps cap). If set to 0.0x, fastforward ratio is unlimited (no FPS cap)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SLOWMOTION_RATIO, + "When in slow motion, content will slow down by the factor specified/set." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, + "Run core logic one or more frames ahead then load the state back to reduce perceived input lag." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, + "The number of frames to run ahead. Causes gameplay issues such as jitter if you exceed the number of lag frames internal to the game." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, + "Use a second instance of the RetroArch core to run ahead. Prevents audio problems due to loading state." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, + "Hides the warning message that appears when using RunAhead and the core does not support savestates." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_REWIND_ENABLE, + "Enable rewinding. This will take a performance hit when playing." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_APPLY_AFTER_TOGGLE, + "Apply cheat immediately after toggling." +) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_APPLY_AFTER_LOAD, + "Auto-apply cheats when game loads." +) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_REPEAT_COUNT, + "The number of times the cheat will be applied. Use with the other two Iteration options to affect large areas of memory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_REPEAT_ADD_TO_ADDRESS, + "After each 'Number of Iterations' the Memory Address will be increased by this number times the 'Memory Search Size'." +) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_REPEAT_ADD_TO_VALUE, + "After each 'Number of Iterations' the Value will be increased by this amount." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_REWIND_GRANULARITY, + "When rewinding a defined number of frames, you can rewind several frames at a time, increasing the rewind speed." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_REWIND_BUFFER_SIZE, + "The amount of memory (in MB) to reserve for the rewind buffer. Increasing this will increase the amount of rewind history." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_REWIND_BUFFER_SIZE_STEP, + "Each time you increase or decrease the rewind buffer size value via this UI it will change by this amount" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_IDX, + "Index position in list." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_ADDRESS_BIT_POSITION, + "Address bitmask when Memory Search Size < 8-bit." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_MATCH_IDX, + "Select the match to view." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_START_OR_CONT, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_START_OR_RESTART, + "Αριστερά/Δεξιά για αλλαγή μεγέθους bit" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EXACT, + "Αριστερά/Δεξιά για αλλαγή τιμής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_LT, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_GT, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_LTE, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_GTE, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EQ, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_NEQ, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EQPLUS, + "Αριστερά/Δεξιά για αλλαγή τιμής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EQMINUS, + "Αριστερά/Δεξιά για αλλαγή τιμής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_ADD_MATCHES, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_VIEW_MATCHES, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_CREATE_OPTION, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_DELETE_OPTION, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_ADD_NEW_TOP, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_ADD_NEW_BOTTOM, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_DELETE_ALL, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_RELOAD_CHEATS, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_BIG_ENDIAN, + "Big endian : 258 = 0x0102,\n" + "Little endian : 258 = 0x0201" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LIBRETRO_LOG_LEVEL, + "Sets log level for cores. If a log level issued by a core is below this value, it is ignored." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PERFCNT_ENABLE, + "Enable performance counters for RetroArch (and cores)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVESTATE_AUTO_SAVE, + "Automatically makes a savestate at the end of RetroArch's runtime. RetroArch will automatically load this savestate if 'Auto Load State' is enabled." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVESTATE_AUTO_LOAD, + "Automatically load the auto save state on startup." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVESTATE_THUMBNAIL_ENABLE, + "Show thumbnails of save states inside the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUTOSAVE_INTERVAL, + "Autosaves the non-volatile Save RAM at a regular interval. This is disabled by default unless set otherwise. The interval is measured in seconds. A value of 0 disables autosave." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_REMAP_BINDS_ENABLE, + "If enabled, overrides the input binds with the remapped binds set for the current core." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_AUTODETECT_ENABLE, + "Enable input auto-detection. Will attempt to autoconfigure joypads, Plug-and-Play style." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_INPUT_SWAP_OK_CANCEL, + "Swap buttons for OK/Cancel. Disabled is the Japanese button orientation, enabled is the western orientation." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, + "If disabled, the content will keep running in the background when RetroArch's menu is toggled." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_DRIVER, + "Οδηγός βίντεο προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_DRIVER, + "Οδηγός ήχου προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_DRIVER, + "Οδηγός Εισόδου προς χρήση. Ανάλογα με τον οδηγό βίντεο, ίσως αλλάξει αναγκαστικά ο οδηγός εισαγωγής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_JOYPAD_DRIVER, + "Οδηγός Joypad προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_RESAMPLER_DRIVER, + "Οδηγός Επαναδειγματολήπτη Ήχου προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CAMERA_DRIVER, + "Οδηγός Κάμερας προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOCATION_DRIVER, + "Οδηγός Τοποθεσίας προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_DRIVER, + "Οδηγός Μενού προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RECORD_DRIVER, + "Οδηγός Εγγραφής προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIDI_DRIVER, + "Οδηγός MIDI προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_WIFI_DRIVER, + "Οδηγός Wi-Fi προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, + "Filter files being shown in filebrowser by supported extensions." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_WALLPAPER, + "Select an image to set as menu wallpaper." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DYNAMIC_WALLPAPER, + "Dynamically load a new wallpaper depending on context." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_DEVICE, + "Παράκαμψη της προκαθορισμένης συσκευής ήχου που χρησιμοποιεί ο οδηγός ήχου. Αυτή η επιλογή εξαρτάται από τον οδηγό." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_DSP_PLUGIN, + "Πρόσθετο ήχου DSP που επεξεργάζεται τον ήχο πριν αποσταλεί στον οδηγό." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_OUTPUT_RATE, + "Audio output sample rate." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OVERLAY_OPACITY, + "Opacity of all UI elements of the overlay." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OVERLAY_SCALE, + "Scale of all UI elements of the overlay." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_OVERLAY_ENABLE, + "Enable the overlay." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OVERLAY_PRESET, + "Select an overlay from the file browser." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_IP_ADDRESS, + "The address of the host to connect to." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_TCP_UDP_PORT, + "The port of the host IP address. Can be either a TCP or UDP port." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_PASSWORD, + "The password for connecting to the netplay host. Used only in host mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_PUBLIC_ANNOUNCE, + "Whether to announce netplay games publicly. If unset, clients must manually connect rather than using the public lobby." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_SPECTATE_PASSWORD, + "The password for connecting to the netplay host with only spectator privileges. Used only in host mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_START_AS_SPECTATOR, + "Whether to start netplay in spectator mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_ALLOW_SLAVES, + "Whether to allow connections in slave mode. Slave-mode clients require very little processing power on either side, but will suffer significantly from network latency." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_REQUIRE_SLAVES, + "Whether to disallow connections not in slave mode. Not recommended except for very fast networks with very weak machines." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_STATELESS_MODE, + "Whether to run netplay in a mode not requiring save states. If set to true, a very fast network is required, but no rewinding is performed, so there will be no netplay jitter." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_CHECK_FRAMES, + "The frequency in frames with which netplay will verify that the host and client are in sync." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_NAT_TRAVERSAL, + "When hosting, attempt to listen for connections from the public Internet, using UPnP or similar technologies to escape LANs." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_STDIN_CMD_ENABLE, + "Enable stdin command interface." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MOUSE_ENABLE, + "Enable mouse controls inside the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_POINTER_ENABLE, + "Enable touch controls inside the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_THUMBNAILS, + "Type of thumbnail to display." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, + "Type of thumbnail to display at the left." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_VERTICAL_THUMBNAILS, + "Display the left thumbnail under the right one, on the right side of the screen." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_TIMEDATE_ENABLE, + "Εμφάνιση τρέχουσας ημερομηνίας ή και ώρας μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_BATTERY_LEVEL_ENABLE, + "Εμφάνιση τρέχουσας μπαταρίας μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NAVIGATION_WRAPAROUND, + "Wrap-around to beginning and/or end if boundary of list is reached horizontally or vertically." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_ENABLE_HOST, + "Ενεργοποιεί το netplay ως οικοδεσπότης (εξυπηρετητής)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_ENABLE_CLIENT, + "Ενεργοποιεί το netplay ως πελάτης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_DISCONNECT, + "Αποσυνδέει μία ενεργή σύνδεση Netplay." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SCAN_DIRECTORY, + "Σαρώνει ένα ευρετήριο για συμβατά αρχεία και τα προσθέτει στην συλλογή." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SCAN_FILE, + "Σαρώνει ένα συμβατό αρχείο και το προσθέτει στην συλλογή." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SWAP_INTERVAL, + "Uses a custom swap interval for Vsync. Set this to effectively halve monitor refresh rate." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SORT_SAVEFILES_ENABLE, + "Sort save files in folders named after the core used." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SORT_SAVESTATES_ENABLE, + "Sort save states in folders named after the core used." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_REQUEST_DEVICE_I, + "Request to play with the given input device." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_UPDATER_BUILDBOT_URL, + "URL to core updater directory on the Libretro buildbot." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_BUILDBOT_ASSETS_URL, + "URL to assets updater directory on the Libretro buildbot." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE, + "After downloading, automatically extract files contained in the downloaded archives." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_REFRESH_ROOMS, + "Σάρωση για νέα δωμάτια." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DELETE_ENTRY, + "Κατάργηση αυτής της καταχώρησης από την συλλογή." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INFORMATION, + "View more information about the content." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES, + "Προσθήκη καταχώρησης στα αγαπημένα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST, + "Προσθήκη καταχώρησης στα αγαπημένα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUN, + "Έναρξη περιεχομένου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_FILE_BROWSER_SETTINGS, + "Προσαρμογή ρυθμίσεων εξερευνητή αρχείου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUTO_REMAPS_ENABLE, + "Enable customized controls by default at startup." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUTO_OVERRIDES_ENABLE, + "Enable customized configuration by default at startup." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GAME_SPECIFIC_OPTIONS, + "Enable customized core options by default at startup." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_ENABLE, + "Εμφανίζει το όνομα του τρέχων πυρήνα μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DATABASE_MANAGER, + "Προβολή βάσεων δεδομένων." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CURSOR_MANAGER, + "Προβολή προηγούμενων αναζητήσεων." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_TAKE_SCREENSHOT, + "Captures an image of the screen." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOSE_CONTENT, + "Closes the current content. Any unsaved changes might be lost." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOAD_STATE, + "Load a saved state from the currently selected slot." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_STATE, + "Save a state to the currently selected slot." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RESUME, + "Resume the currently running content and leave the Quick Menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RESUME_CONTENT, + "Resume the currently running content and leave the Quick Menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_STATE_SLOT, + "Changes the currently selected state slot." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_UNDO_LOAD_STATE, + "If a state was loaded, content will go back to the state prior to loading." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_UNDO_SAVE_STATE, + "If a state was overwritten, it will roll back to the previous save state." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACCOUNTS_RETRO_ACHIEVEMENTS, + "RetroAchievements service. For more information, visit http://retroachievements.org" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACCOUNTS_LIST, + "Manages currently configured accounts." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_META_REWIND, + "Manages rewind settings." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_META_CHEAT_DETAILS, + "Manages cheat details settings." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_META_CHEAT_SEARCH, + "Start or continue a cheat code search." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RESTART_CONTENT, + "Restarts the content from the beginning." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, + "Saves an override configuration file which will apply for all content loaded with this core. Will take precedence over the main configuration." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR, + "Saves an override configuration file which will apply for all content loaded from the same directory as the current file. Will take precedence over the main configuration." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, + "Saves an override configuration file which will apply for the current content only. Will take precedence over the main configuration." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_CHEAT_OPTIONS, + "Set up cheat codes." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHADER_OPTIONS, + "Set up shaders to visually augment the image." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, + "Change the controls for the currently running content." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_OPTIONS, + "Change the options for the currently running content." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHOW_ADVANCED_SETTINGS, + "Show advanced settings for power users (hidden by default)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_THREADED_DATA_RUNLOOP_ENABLE, + "Perform tasks on a separate thread." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_REMOVE, + "Allow the user to remove entries from collections." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SYSTEM_DIRECTORY, + "Sets the System directory. Cores can query for this directory to load BIOSes, system-specific configs, etc." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, + "Sets start directory for the filebrowser." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_DIR, + "Usually set by developers who bundle libretro/RetroArch apps to point to assets." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DYNAMIC_WALLPAPERS_DIRECTORY, + "Directory to store wallpapers dynamically loaded by the menu depending on context." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_THUMBNAILS_DIRECTORY, + "Supplementary thumbnails (boxarts/misc. images, etc.) are stored here." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RGUI_CONFIG_DIRECTORY, + "Sets start directory for menu configuration browser." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN, + "The number of frames of input latency for netplay to use to hide network latency. Reduces jitter and makes netplay less CPU-intensive, at the expense of noticeable input lag." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, + "The range of frames of input latency that may be used to hide network latency. Reduces jitter and makes netplay less CPU-intensive, at the expense of unpredictable input lag." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, + "Cycle the current disk. If the disk is inserted, it will eject the disk. If the disk has not been inserted, it will be inserted. " + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISK_INDEX, + "Change the disk index." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISK_OPTIONS, + "Disk image management." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, + "Select a disk image to insert." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, + "Makes sure the framerate is capped while inside the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VRR_RUNLOOP_ENABLE, + "No deviation from core requested timing. Use for Variable Refresh Rate screens, G-Sync, FreeSync." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_LAYOUT, + "Select a different layout for the XMB interface." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_THEME, + "Select a different theme for the icon. Changes will take effect after you restart the program." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_SHADOWS_ENABLE, + "Enable drop shadows for all icons. This will have a minor performance hit." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MATERIALUI_MENU_COLOR_THEME, + "Select a different background color gradient theme." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_WALLPAPER_OPACITY, + "Modify the opacity of the background wallpaper." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_MENU_COLOR_THEME, + "Select a different background color gradient theme." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE, + "Select an animated background effect. Can be GPU-intensive depending on the effect. If performance is unsatisfactory, either turn this off or revert to a simpler effect." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_FONT, + "Select a different main font to be used by the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_FAVORITES, + "Προβολή καρτέλας αγαπημένων μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_IMAGES, + "Προβολή καρτέλας εικόνων μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_MUSIC, + "Προβολή καρτέλας μουσικής μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_VIDEO, + "Προβολή καρτέλας βίντεο μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_NETPLAY, + "Προβολή καρτέλας netplay μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS, + "Προβολή καρτέλας ρυθμίσεων μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_HISTORY, + "Προβολή καρτέλας πρόσφατου ιστορικού μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_ADD, + "Προβολή καρτέλας εισαγωγής περιεχομένου μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, + "Προβολή καρτέλας λίστας αναπαραγωγής μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RGUI_SHOW_START_SCREEN, + "Προβολή οθόνης εκκίνησης στο μενού. Τίθεται αυτόματα σε αρνητικό μετά την πρώτη εκκίνηση του προγράμματος." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MATERIALUI_MENU_HEADER_OPACITY, + "Modify the opacity of the header graphic." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MATERIALUI_MENU_FOOTER_OPACITY, + "Modify the opacity of the footer graphic." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DPI_OVERRIDE_ENABLE, + "The menu normally scales itself dynamically. If you want to set a specific scaling size instead, enable this." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DPI_OVERRIDE_VALUE, + "Set the custom scaling size here.\n" + "NOTE: You have to enable 'DPI Override' for this scaling size to take effect." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_ASSETS_DIRECTORY, + "Save all downloaded files to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_REMAPPING_DIRECTORY, + "Save all remapped controls to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LIBRETRO_DIR_PATH, + "Directory where the program searches for content/cores." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LIBRETRO_INFO_PATH, + "Application/core information files are stored here." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_JOYPAD_AUTOCONFIG_DIR, + "If a joypad is plugged in, that joypad will be autoconfigured if a config file corresponding to it is present inside this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_DIRECTORY, + "Save all collections to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CACHE_DIRECTORY, + "If set to a directory, content which is temporarily extracted (e.g. from archives) will be extracted to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CURSOR_DIRECTORY, + "Saved queries are stored to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_DATABASE_DIRECTORY, + "Databases are stored to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ASSETS_DIRECTORY, + "This location is queried by default when menu interfaces try to look for loadable assets, etc." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVEFILE_DIRECTORY, + "Save all save files to this directory. If not set, will try to save inside the content file's working directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVESTATE_DIRECTORY, + "Save all save states to this directory. If not set, will try to save inside the content file's working directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SCREENSHOT_DIRECTORY, + "Directory to dump screenshots to." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OVERLAY_DIRECTORY, + "Defines a directory where overlays are kept for easy access." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_DATABASE_PATH, + "Cheat files are kept here." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_FILTER_DIR, + "Directory where audio DSP filter files are kept." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FILTER_DIR, + "Directory where CPU-based video filter files are kept." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_DIR, + "Defines a directory where GPU-based video shader files are kept for easy access." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RECORDING_OUTPUT_DIRECTORY, + "Recordings will be dumped to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RECORDING_CONFIG_DIRECTORY, + "Recording configurations will be kept here." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FONT_PATH, + "Select a different font for onscreen notifications." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHADER_APPLY_CHANGES, + "Changes to the shader configuration will take effect immediately. Use this if you changed the amount of shader passes, filtering, FBO scale, etc." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_NUM_PASSES, + "Increase or decrease the amount of shader pipeline passes. You can bind a separate shader to each pipeline pass and configure its scale and filtering." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET, + "Load a shader preset. The shader pipeline will be automatically set-up." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_AS, + "Save the current shader settings as a new shader preset." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_CORE, + "Save the current shader settings as the default settings for this application/core." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_PARENT, + "Save the current shader settings as the default settings for all files in the current content directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_GAME, + "Save the current shader settings as the default settings for the content." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PARAMETERS, + "Modifies the current shader directly. Changes will not be saved to the preset file." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_PARAMETERS, + "Modifies the shader preset itself currently used in the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_NUM_PASSES, + "Increase or decrease the amount of cheats." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_APPLY_CHANGES, + "Cheat changes will take effect immediately." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_START_SEARCH, + "Start search for a new cheat. Number of bits can be changed." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_CONTINUE_SEARCH, + "Continue search for a new cheat." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_FILE_LOAD, + "Load a cheat file and replace existing cheats." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_FILE_LOAD_APPEND, + "Load a cheat file and append to existing cheats." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_FILE_SAVE_AS, + "Save current cheats as a save file." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SETTINGS, + "Quickly access all relevant in-game settings." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_INFORMATION, + "View information pertaining to the application/core." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_ASPECT_RATIO, + "Floating point value for video aspect ratio (width / height), used if the Aspect Ratio is set to 'Config'." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_HEIGHT, + "Custom viewport height that is used if the Aspect Ratio is set to 'Custom'." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_WIDTH, + "Custom viewport width that is used if the Aspect Ratio is set to 'Custom'." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_X, + "Custom viewport offset used for defining the X-axis position of the viewport. These are ignored if 'Integer Scale' is enabled. It will be automatically centered then." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y, + "Custom viewport offset used for defining the Y-axis position of the viewport. These are ignored if 'Integer Scale' is enabled. It will be automatically centered then." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_USE_MITM_SERVER, + "Χρήση Εξυπηρετητή Αναμετάδοσης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER, + "Forward netplay connections through a man-in-the-middle server. Useful if the host is behind a firewall or has NAT/UPnP problems." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_MITM_SERVER, + "Τοποθεσία Εξυπηρετητή Αναμετάδοσης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_MITM_SERVER, + "Choose a specific relay server to use. Geographically closer locations tend to have lower latency." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER, + "Προσθήκη στον μίκτη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY, + "Προσθήκη στον μίκτη και αναπαραγωγή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION, + "Προσθήκη στον μίκτη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY, + "Προσθήκη στον μίκτη και αναπαραγωγή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, + "Φιλτράρισμα με βάση τον τρέχων πυρήνα" + ) +MSG_HASH( + MSG_AUDIO_MIXER_VOLUME, + "Γενική ένταση μίκτη ήχου" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_MIXER_VOLUME, + "Γενική ένταση μίκτη ήχου (σε dB). Το 0 είναι η φυσιολογική ένταση και δεν εφαρμόζεται gain." /*Need a good translation for gain if there's any*/ + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_VOLUME, + "Επίπεδο Έντασης Μίκτη Ήχου (dB)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_MUTE, + "Σίγαση Μίκτη Ήχου" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE, + "Σίγαση/κατάργηση σίγασης μίκτη ήχου." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_ONLINE_UPDATER, + "Προβολή Διαδικτυακού Ενημερωτή" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_ONLINE_UPDATER, + "Εμφάνιση/απόκρυψη της επιλογής 'Διαδικτυακού Ενημερωτή'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_VIEWS_SETTINGS, + "Προβολές" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_VIEWS_SETTINGS, + "Προβολή ή απόκρυψη στοιχείων στην οθόνη του μενού." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_CORE_UPDATER, + "Προβολή Ενημερωτή Πυρήνων" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_UPDATER, + "Εμφάνιση/απόκρυψη της ικανότητας ενημέρωσης πυρήνων (και πληροφοριακών αρχείων πυρήνων)." + ) +MSG_HASH( + MSG_PREPARING_FOR_CONTENT_SCAN, + "Προετοιμασία για σάρωση περιεχομένου..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_DELETE, + "Διαγραφή πυρήνα" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_DELETE, + "Κατάργηση αυτού του πυρήνα από τον δίσκο." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY, + "Framebuffer Opacity" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY, + "Modify the opacity of the framebuffer." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES, + "Αγαπημένα" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GOTO_FAVORITES, + "Περιεχόμενο που έχετε προσθέσει στα 'Αγαπημένα' θα εμφανίζεται εδώ." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GOTO_MUSIC, + "Μουσική" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GOTO_MUSIC, + "Μουσική που έχει προηγουμένως αναπαραχθεί θα εμφανίζονται εδώ." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GOTO_IMAGES, + "Εικόνα" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GOTO_IMAGES, + "Εικόνες που έχουν προηγουμένως προβληθεί θα εμφανίζονται εδώ." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GOTO_VIDEO, + "Βίντεο" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GOTO_VIDEO, + "Βίντεο που έχουν προηγουμένως αναπαραχθεί θα εμφανίζονται εδώ." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE, + "Εικονίδια Μενού" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE, + "Ενεργοποίηση/Απενεργοποίηση των εικονιδίων που εμφανίζονται στα αριστερά των καταχωρήσεων του μενού." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MAIN_MENU_ENABLE_SETTINGS, + "Ενεργοποίηση Καρτέλας Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS_PASSWORD, + "Ορισμός Κωδικού Για Την Ενεργοποίηση Της Καρτέλας Ρυθμίσεων" + ) +MSG_HASH( + MSG_INPUT_ENABLE_SETTINGS_PASSWORD, + "Εισαγωγή Κωδικού" + ) +MSG_HASH( + MSG_INPUT_ENABLE_SETTINGS_PASSWORD_OK, + "Σωστός κωδικός." + ) +MSG_HASH( + MSG_INPUT_ENABLE_SETTINGS_PASSWORD_NOK, + "Λανθασμένος κωδικός." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_MAIN_MENU_ENABLE_SETTINGS, + "Ενεργοποιεί την καρτέλα Ρυθμίσεις. Χρειάζεται επανεκκίνηση για να εμφανιστεί η καρτέλα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS_PASSWORD, + "Supplying a password when hiding the settings tab makes it possible to later restore it from the menu, by going to the Main Menu tab, selecting Enable Settings Tab and entering the password." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME, + "Allow the user to rename entries in collections." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME, + "Allow to rename entries" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RENAME_ENTRY, + "Rename the title of the entry." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RENAME_ENTRY, + "Μετονομασία" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE, + "Προβολή Φόρτωσης Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE, + "Εμφάνιση/απόκρυψη της επιλογής 'Φόρτωση Πυρήνα'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT, + "Προβολή Φόρτωσης Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT, + "Εμφάνιση/απόκρυψη της επιλογής 'Φόρτωση Περιεχομένου'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION, + "Προβολή Πληροφοριών" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION, + "Εμφάνιση/απόκρυψη της επιλογής 'Πληροφορίες'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS, + "Προβολή Διαμορφώσεων" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS, + "Εμφάνιση/απόκρυψη της επιλογής 'Διαμορφώσεις'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP, + "Προβολή Βοήθειας" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_HELP, + "Εμφάνιση/απόκρυψη της επιλογής 'Βοήθεια'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH, + "Προβολή Εξόδου RetroArch" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH, + "Εμφάνιση/απόκρυψη της επιλογής 'Έξοδος από RetroArch'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT, + "Προβολή Επανεκκίνησης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT, + "Εμφάνιση/απόκρυψη της επιλογής 'Επανεκκίνηση'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_SHUTDOWN, + "Show Shutdown" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_SHUTDOWN, + "Show/hide the 'Shutdown' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS, + "Γρήγορο Μενού" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS, + "Show or hide elements on the Quick Menu screen." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_TAKE_SCREENSHOT, + "Show Take Screenshot" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_TAKE_SCREENSHOT, + "Show/hide the 'Take Screenshot' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SAVE_LOAD_STATE, + "Show Save/Load State" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVE_LOAD_STATE, + "Show/hide the options for saving/loading state." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE, + "Show Undo Save/Load State" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE, + "Show/hide the options for undoing save/load state." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_FAVORITES, + "Show Add to Favorites" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES, + "Show/hide the 'Add to Favorites' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_OPTIONS, + "Show Options" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_OPTIONS, + "Show/hide the 'Options' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_CONTROLS, + "Show Controls" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_CONTROLS, + "Show/hide the 'Controls' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_CHEATS, + "Show Cheats" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_CHEATS, + "Show/hide the 'Cheats' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SHADERS, + "Show Shaders" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SHADERS, + "Show/hide the 'Shaders' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SAVE_CORE_OVERRIDES, + "Show Save Core Overrides" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVE_CORE_OVERRIDES, + "Show/hide the 'Save Core Overrides' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SAVE_GAME_OVERRIDES, + "Show Save Game Overrides" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVE_GAME_OVERRIDES, + "Show/hide the 'Save Game Overrides' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_INFORMATION, + "Show Information" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_INFORMATION, + "Show/hide the 'Information' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_ENABLE, + "Notification Background Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_RED, + "Notification Background Red Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_GREEN, + "Notification Background Green Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_BLUE, + "Notification Background Blue Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_OPACITY, + "Notification Background Opacity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_DISABLE_KIOSK_MODE, + "Disable Kiosk Mode" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_DISABLE_KIOSK_MODE, + "Disables kiosk mode. A restart is required for the change to take full effect." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_ENABLE_KIOSK_MODE, + "Ενεργοποίηση Λειτουργίας Κιόσκι" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_ENABLE_KIOSK_MODE, + "Protects the setup by hiding all configuration related settings." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_KIOSK_MODE_PASSWORD, + "Set Password For Disabling Kiosk Mode" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_KIOSK_MODE_PASSWORD, + "Supplying a password when enabling kiosk mode makes it possible to later disable it from the menu, by going to the Main Menu, selecting Disable Kiosk Mode and entering the password." + ) +MSG_HASH( + MSG_INPUT_KIOSK_MODE_PASSWORD, + "Εισαγωγή Κωδικού" + ) +MSG_HASH( + MSG_INPUT_KIOSK_MODE_PASSWORD_OK, + "Σωστός κωδικός." + ) +MSG_HASH( + MSG_INPUT_KIOSK_MODE_PASSWORD_NOK, + "Λανθασμένος κωδικός." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_RED, + "Notification Red Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_GREEN, + "Notification Green Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_BLUE, + "Notification Blue Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW, + "Show frame count on FPS display" + ) +MSG_HASH( + MSG_CONFIG_OVERRIDE_LOADED, + "Configuration override loaded." + ) +MSG_HASH( + MSG_GAME_REMAP_FILE_LOADED, + "Game remap file loaded." + ) +MSG_HASH( + MSG_CORE_REMAP_FILE_LOADED, + "Core remap file loaded." + ) +MSG_HASH( + MSG_RUNAHEAD_CORE_DOES_NOT_SUPPORT_SAVESTATES, + "RunAhead has been disabled because this core does not support save states." + ) +MSG_HASH( + MSG_RUNAHEAD_FAILED_TO_SAVE_STATE, + "Failed to save state. RunAhead has been disabled." + ) +MSG_HASH( + MSG_RUNAHEAD_FAILED_TO_LOAD_STATE, + "Failed to load state. RunAhead has been disabled." + ) +MSG_HASH( + MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE, + "Failed to create second instance. RunAhead will now use only one instance." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, + "Automatically add content to playlist" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, + "Automatically scans loaded content so they appear inside playlists." + ) +MSG_HASH( + MSG_SCANNING_OF_FILE_FINISHED, + "Scanning of file finished" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_OPACITY, + "Window Opacity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, + "Ποιότητα Επαναδειγματολήπτη Ήχου" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_RESAMPLER_QUALITY, + "Ελαττώστε αυτή την τιμή για καλύτερη επίδοση/χαμηλότερη καθυστέρηση αντί ποιότητας ήχου, αυξήστε εάν θέλετε καλύτερη ποιότητα με κόστος στην επίδοση/χαμηλώτερη καθυστέρηση." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_WATCH_FOR_CHANGES, + "Watch shader files for changes" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHADER_WATCH_FOR_CHANGES, + "Auto-apply changes made to shader files on disk." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SHOW_DECORATIONS, + "Show Window Decorations" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STATISTICS_SHOW, + "Εμφάνιση Στατιστικών" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_STATISTICS_SHOW, + "Εμφάνιση τεχνικών στατιστικών στην οθόνη." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_RGUI_BORDER_FILLER_ENABLE, + "Enable border filler" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_RGUI_BORDER_FILLER_THICKNESS_ENABLE, + "Enable border filler thickness" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_RGUI_BACKGROUND_FILLER_THICKNESS_ENABLE, + "Enable background filler thickness" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION, + "Για οθόνες CRT μόνο. Προσπαθεί να χρησιμοποιήσει την ακριβή ανάλυση πυρήνα/παιχνιδιού και ρυθμού ανανέωσης." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION, + "CRT SwitchRes" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_SUPER, + "Switch among native and ultrawide super resolutions." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_SUPER, + "Σούπερ Ανάλυση CRT" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_REWIND, + "Προβολή Ρυθμίσεων Επιστροφής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_REWIND, + "Εμφάνιση/απόκρυψη επιλογών Επιστροφής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_LATENCY, + "Εμφάνιση/απόκρυψη επιλογών Καθυστέρησης." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_LATENCY, + "Προβολή Ρυθμίσεων Καθυστέρησης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_OVERLAYS, + "Εμφάνιση/απόκρυψη επιλογών Επικαλλυμάτων." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_OVERLAYS, + "Προβολή Ρυθμίσεων Επικαλλυμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE_MENU, + "Ενεργοποίηση ήχου μενού" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_ENABLE_MENU, + "Ενεργοποίηση ή απενεργοποίηση ήχου μενού." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS, + "Ρυθμίσεις Μίκτη" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS, + "Εμφάνιση και/ή επεξεργασία ρυθμίσεων μίκτη." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_INFO, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_FILE, + "&File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_LOAD_CORE, + "&Load Core..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_UNLOAD_CORE, + "&Unload Core" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_EXIT, + "E&xit" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT, + "&Edit" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT_SEARCH, + "&Search" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW, + "&View" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_CLOSED_DOCKS, + "Closed Docks" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_SHADER_PARAMS, + "Shader Parameters" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS, + "&Options..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_DOCK_POSITIONS, + "Remember dock positions:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_GEOMETRY, + "Remember window geometry:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_LAST_TAB, + "Remember last content browser tab:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME, + "Θέμα:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_SYSTEM_DEFAULT, + "" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_DARK, + "Σκούρο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_CUSTOM, + "Custom..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_TITLE, + "Επιλογές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_TOOLS, + "&Tools" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_HELP, + "&Help" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_ABOUT, + "Σχετικά με το RetroArch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_DOCUMENTATION, + "Εγχειρίδιο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_LOAD_CUSTOM_CORE, + "Load Custom Core..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_LOAD_CORE, + "Φόρτωση Πυρήνα΄" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_LOADING_CORE, + "Φόρτωση Πυρήνα..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_NAME, + "Όνομα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CORE_VERSION, + "Έκδοση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_TAB_PLAYLISTS, + "Λίστες Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER, + "File Browser" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER_TOP, + "Top" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER_UP, + "Up" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_DOCK_CONTENT_BROWSER, + "Content Browser" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_BOXART, + "Boxart" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_SCREENSHOT, + "Screenshot" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_TITLE_SCREEN, + "Title Screen" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ALL_PLAYLISTS, + "All Playlists" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CORE, + "Core" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CORE_INFO, + "Core Info" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CORE_SELECTION_ASK, + "" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_INFORMATION, + "Information" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_WARNING, + "Warning" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ERROR, + "Error" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_NETWORK_ERROR, + "Network Error" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_RESTART_TO_TAKE_EFFECT, + "Please restart the program for the changes to take effect." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_LOG, + "Log" + ) +#ifdef HAVE_QT +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SCAN_FINISHED, + "Scan Finished.

\n" + "In order for content to be correctly scanned, you must:\n" + "
  • have a compatible core already downloaded
  • \n" + "
  • have \"Core Info Files\" updated via Online Updater
  • \n" + "
  • have \"Databases\" updated via Online Updater
  • \n" + "
  • restart RetroArch if any of the above was just done
\n" + "Finally, the content must match existing databases from here. If it is still not working, consider submitting a bug report." + ) +#endif +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHOW_WIMP, + "Εμφάνιση Μενού Επιφάνεις Εργασίας" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHOW_WIMP, + "Opens the desktop menu if closed." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DONT_SHOW_AGAIN, + "Don't show this again" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_STOP, + "Στοπ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ASSOCIATE_CORE, + "Associate Core" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_HIDDEN_PLAYLISTS, + "Hidden Playlists" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_HIDE, + "Hide" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_HIGHLIGHT_COLOR, + "Highlight color:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CHOOSE, + "&Choose..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SELECT_COLOR, + "Select Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SELECT_THEME, + "Select Theme" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CUSTOM_THEME, + "Custom Theme" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FILE_PATH_IS_BLANK, + "File path is blank." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FILE_IS_EMPTY, + "File is empty." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FILE_READ_OPEN_FAILED, + "Could not open file for reading." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FILE_WRITE_OPEN_FAILED, + "Could not open file for writing." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FILE_DOES_NOT_EXIST, + "File does not exist." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SUGGEST_LOADED_CORE_FIRST, + "Suggest loaded core first:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ZOOM, + "Zoom" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_VIEW, + "View" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_VIEW_TYPE_ICONS, + "Icons" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_VIEW_TYPE_LIST, + "List" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS, + "Overrides" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS, + "Options for overriding the global configuration." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY, + "Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED, + "Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL, + "Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP, + "This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE, + "This will stop playback of the audio stream and remove it entirely from memory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME, + "Adjust the volume of the audio stream." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ADD_TO_MIXER, + "Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY, + "Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY, + "Αναπαραγωγή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED, + "Αναπαραγωγή (Looped)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL, + "Αναπαραγωγή (Sequential)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP, + "Στοπ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE, + "Κατάργηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME, + "Ένταση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE, + "Τρέχων πυρήνας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR, + "Clear" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACHIEVEMENT_PAUSE, + "Pause achievements for current session (This action will enable savestates, cheats, rewind, pause, and slow-motion)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACHIEVEMENT_RESUME, + "Resume achievements for current session (This action will disable savestates, cheats, rewind, pause, and slow-motion and reset the current game)." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_IN_MENU, + "In-Menu" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_IN_GAME, + "In-Game" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_IN_GAME_PAUSED, + "In-Game (Paused)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_STATUS_PLAYING, + "Playing" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_STATUS_PAUSED, + "Paused" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_ALLOW, + "Ενεργοποίηση Discord Rich Presence" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISCORD_ALLOW, + "Ενεργοποίηση ή απενεργοποίηση υποστήριξης Discord Rich Presence.\n" + "ΣΗΜΕΙΩΣΗ: Δεν θα δουλέψει με την έκδοση του περιηγητή, μόνο με την τοπικά εγκατεστημένη." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIDI_INPUT, + "Είσοδος" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIDI_INPUT, + "Επιλογή συσκευής εισόδου." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIDI_OUTPUT, + "Έξοδος" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIDI_OUTPUT, + "Επιλογή συσκευής εξόδου." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIDI_VOLUME, + "Ένταση" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIDI_VOLUME, + "Ορισμός έντασης εξόδου (%)." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_POWER_MANAGEMENT_SETTINGS, + "Διαχείριση Ενέργειας" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_POWER_MANAGEMENT_SETTINGS, + "Αλλαγή ρυθμίσεων διαχείρισης ενέργειας." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SUSTAINED_PERFORMANCE_MODE, + "Κατάσταση Συνεχούς Επίδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_MPV_SUPPORT, + "Υποστήριξη mpv" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_IDX, + "Index" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_MATCH_IDX, + "View Match #" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_MATCH, + "Match Address: %08X Mask: %02X" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_COPY_MATCH, + "Create Code Match #" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DELETE_MATCH, + "Delete Match #" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_BROWSE_MEMORY, + "Browse Address: %08X" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DESC, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_STATE, + "Ενεργοποιημένο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_CODE, + "Κωδικός" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_HANDLER, + "Handler" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_MEMORY_SEARCH_SIZE, + "Memory Search Size" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_TYPE, + "Τύπος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_VALUE, + "Τιμή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADDRESS, + "Memory Address" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADDRESS_BIT_POSITION, + "Memory Address Mask" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_TYPE, + "Rumble When Memory" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_VALUE, + "Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_PORT, + "Rumble Port" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_PRIMARY_STRENGTH, + "Rumble Primary Strength" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_PRIMARY_DURATION, + "Rumble Primary Duration (ms)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_SECONDARY_STRENGTH, + "Rumble Secondary Strength" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_SECONDARY_DURATION, + "Rumble Secondary Duration (ms)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_COUNT, + "Number of Iterations" +) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_ADD_TO_VALUE, + "Value Increase Each Iteration" +) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_ADD_TO_ADDRESS, + "Address Increase Each Iteration" +) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_AFTER, + "Add New Cheat After This One" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_BEFORE, + "Add New Cheat Before This One" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_COPY_AFTER, + "Copy This Cheat After" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_COPY_BEFORE, + "Copy This Cheat Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DELETE, + "Delete This Cheat" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_HANDLER_TYPE_EMU, + "Emulator" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_HANDLER_TYPE_RETRO, + "RetroArch" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_DISABLED, + "" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_SET_TO_VALUE, + "Set To Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_INCREASE_VALUE, + "Increase By Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_DECREASE_VALUE, + "Decrease By Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_EQ, + "Run next cheat if value = memory" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_NEQ, + "Run next cheat if value != memory" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_LT, + "Run next cheat if value < memory" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_GT, + "Run next cheat if value > memory" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_DISABLED, + "" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_CHANGES, + "Changes" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_DOES_NOT_CHANGE, + "Does Not Change" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_INCREASE, + "Increases" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_DECREASE, + "Decreases" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_EQ_VALUE, + "= Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_NEQ_VALUE, + "!= Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_LT_VALUE, + "< Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_GT_VALUE, + "> Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_INCREASE_BY_VALUE, + "Increases by Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_DECREASE_BY_VALUE, + "Decreases by Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_1, + "1-bit, max value = 0x01" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_2, + "2-bit, max value = 0x03" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_4, + "4-bit, max value = 0x0F" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_8, + "8-bit, max value = 0xFF" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_16, + "16-bit, max value = 0xFFFF" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_32, + "32-bit, max value = 0xFFFFFFFF" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_0, + "1" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_1, + "2" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_2, + "3" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_3, + "4" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_4, + "5" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_5, + "6" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_6, + "7" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_7, + "8" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_8, + "9" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_9, + "10" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_10, + "11" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_11, + "12" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_12, + "13" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_13, + "14" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_14, + "15" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_15, + "16" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_16, + "All" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_START_OR_CONT, + "Start or Continue Cheat Search" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_START_OR_RESTART, + "Start or Restart Cheat Search" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EXACT, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_LT, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_GT, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EQ, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_GTE, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_LTE, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_NEQ, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EQPLUS, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EQMINUS, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADD_MATCHES, + "Add the %u Matches to Your List" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, + "View the List of %u Matches" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_CREATE_OPTION, + "Create Code From This Match" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DELETE_OPTION, + "Delete This Match" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_TOP, + "Add New Code to Top" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_BOTTOM, + "Add New Code to Bottom" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DELETE_ALL, + "Delete All Codes" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RELOAD_CHEATS, + "Reload Game-Specific Cheats" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_EXACT_VAL, + "Equal to %u (%X)" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_LT_VAL, + "Less Than Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_GT_VAL, + "Greater Than Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_LTE_VAL, + "Less Than or Equal To Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_GTE_VAL, + "Greater Than or Equal To Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_EQ_VAL, + "Equal to Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_NEQ_VAL, + "Not Equal to Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_EQPLUS_VAL, + "Equal to Before+%u (%X)" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_EQMINUS_VAL, + "Equal to Before-%u (%X)" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_SETTINGS, + "Start or Continue Cheat Search" + ) +MSG_HASH( + MSG_CHEAT_INIT_SUCCESS, + "Successfully started cheat search" + ) +MSG_HASH( + MSG_CHEAT_INIT_FAIL, + "Failed to start cheat search" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_NOT_INITIALIZED, + "Searching has not been initialized/started" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_FOUND_MATCHES, + "New match count = %u" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_BIG_ENDIAN, + "Big Endian" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_ADDED_MATCHES_SUCCESS, + "Added %u matches" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL, + "Failed to add matches" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS, + "Created code from match" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_ADD_MATCH_FAIL, + "Failed to create code" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS, + "Deleted match" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_ADDED_MATCHES_TOO_MANY, + "Not enough room. The total number of cheats you can have is 100." + ) +MSG_HASH( + MSG_CHEAT_ADD_TOP_SUCCESS, + "New cheat added to top of list." + ) +MSG_HASH( + MSG_CHEAT_ADD_BOTTOM_SUCCESS, + "New cheat added to bottom of list." + ) +MSG_HASH( + MSG_CHEAT_DELETE_ALL_INSTRUCTIONS, + "Press right five times to delete all cheats." + ) +MSG_HASH( + MSG_CHEAT_DELETE_ALL_SUCCESS, + "All cheats deleted." + ) +MSG_HASH( + MSG_CHEAT_ADD_BEFORE_SUCCESS, + "New cheat added before this one." + ) +MSG_HASH( + MSG_CHEAT_ADD_AFTER_SUCCESS, + "New cheat added after this one." + ) +MSG_HASH( + MSG_CHEAT_COPY_BEFORE_SUCCESS, + "Cheat copied before this one." + ) +MSG_HASH( + MSG_CHEAT_COPY_AFTER_SUCCESS, + "Cheat copied after this one." + ) +MSG_HASH( + MSG_CHEAT_DELETE_SUCCESS, + "Cheat deleted." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PROGRESS, + "Progress:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_ALL_PLAYLISTS_LIST_MAX_COUNT, + "\"All Playlists\" max list entries:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_ALL_PLAYLISTS_GRID_MAX_COUNT, + "\"All Playlists\" max grid entries:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SHOW_HIDDEN_FILES, + "Εμφάνιση κρυφών αρχείων και φακέλων:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_NEW_PLAYLIST, + "Νέα Λίστα Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ENTER_NEW_PLAYLIST_NAME, + "Please enter the new playlist name:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DELETE_PLAYLIST, + "Διαγραφή Λίστας Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_RENAME_PLAYLIST, + "Μετονομασία Λίστας Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CONFIRM_DELETE_PLAYLIST, + "Are you sure you want to delete the playlist \"%1\"?" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_QUESTION, + "Question" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_DELETE_FILE, + "Could not delete file." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_RENAME_FILE, + "Could not rename file." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_GATHERING_LIST_OF_FILES, + "Gathering list of files..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ADDING_FILES_TO_PLAYLIST, + "Adding files to playlist..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY, + "Playlist Entry" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_NAME, + "Όνομα:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_PATH, + "Path:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_CORE, + "Πυρήνας:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_DATABASE, + "Database:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_EXTENSIONS, + "Extensions:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_EXTENSIONS_PLACEHOLDER, + "(space-separated; includes all by default)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_FILTER_INSIDE_ARCHIVES, + "Filter inside archives" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FOR_THUMBNAILS, + "(used to find thumbnails)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CONFIRM_DELETE_PLAYLIST_ITEM, + "Are you sure you want to delete the item \"%1\"?" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CANNOT_ADD_TO_ALL_PLAYLISTS, + "Please choose a single playlist first." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DELETE, + "Delete" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ADD_ENTRY, + "Add Entry..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ADD_FILES, + "Add File(s)..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ADD_FOLDER, + "Add Folder..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_EDIT, + "Edit" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SELECT_FILES, + "Select Files" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SELECT_FOLDER, + "Select Folder" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FIELD_MULTIPLE, + "" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_UPDATE_PLAYLIST_ENTRY, + "Error updating playlist entry." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLEASE_FILL_OUT_REQUIRED_FIELDS, + "Please fill out all required fields." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_NIGHTLY, + "Update RetroArch (nightly)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_FINISHED, + "RetroArch updated successfully. Please restart the application for the changes to take effect." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_FAILED, + "Update failed." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_ABOUT_CONTRIBUTORS, + "Contributors" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CURRENT_SHADER, + "Current shader" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MOVE_DOWN, + "Move Down" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MOVE_UP, + "Move Up" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_LOAD, + "Load" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SAVE, + "Save" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_REMOVE, + "Remove" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_APPLY, + "Apply" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SHADER_ADD_PASS, + "Add Pass" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SHADER_CLEAR_ALL_PASSES, + "Clear All Passes" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SHADER_NO_PASSES, + "No shader passes." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_RESET_PASS, + "Reset Pass" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_RESET_ALL_PASSES, + "Reset All Passes" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_RESET_PARAMETER, + "Reset Parameter" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_THUMBNAIL, + "Download thumbnail" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALREADY_IN_PROGRESS, + "A download is already in progress." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_STARTUP_PLAYLIST, + "Start on playlist:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALL_THUMBNAILS, + "Λήψη Όλων των Σκίτσων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALL_THUMBNAILS_ENTIRE_SYSTEM, + "Όλο το Σύστημα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALL_THUMBNAILS_THIS_PLAYLIST, + "Αυτή η Λίστα Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_PACK_DOWNLOADED_SUCCESSFULLY, + "Thumbnails downloaded successfully." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_PLAYLIST_THUMBNAIL_PROGRESS, + "Succeeded: %1 Failed: %2" + ) +MSG_HASH( + MSG_DEVICE_CONFIGURED_IN_PORT, + "Configured in port:" + ) +MSG_HASH( + MSG_FAILED_TO_SET_DISK, + "Failed to set disk" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CORE_OPTIONS, + "Επιλογές Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ADAPTIVE_VSYNC, + "Adaptive Vsync" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_ADAPTIVE_VSYNC, + "V-Sync is enabled until performance falls below the target refresh rate. Can minimize stuttering when performance falls below realtime, and can be more energy efficient." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCHRES_SETTINGS, + "CRT SwitchRes" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCHRES_SETTINGS, + "Output native, low-resolution signals for use with CRT displays." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCH_X_AXIS_CENTERING, + "Cycle through these options if the image is not centered properly on the display." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_X_AXIS_CENTERING, + "X-Axis Centering" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, + "Use a custom refresh rate specified in the config file if needed." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, + "Use Custom Refresh Rate" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, + "Select the output port connected to the CRT display." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, + "Output Display ID" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_RECORDING, + "Έναρξη Εγγραφής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_START_RECORDING, + "Ξεκινάει την εγγραφή." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_STOP_RECORDING, + "Τέλος Εγγραφής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_RECORDING, + "Σταματάει την εγγραφή." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_STREAMING, + "Έναρξη Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_START_STREAMING, + "Ξεκινάει την απευθείας μετάδοση." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_STOP_STREAMING, + "Τέλος Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_STREAMING, + "Σταματάει την απευθείας μετάδοση." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_RECORDING_TOGGLE, + "Εγγραφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_STREAMING_TOGGLE, + "Απευθείας Μετάδοση" + ) +MSG_HASH( + MSG_CHEEVOS_HARDCORE_MODE_DISABLED, + "A savestate was loaded, Achievements Hardcore Mode disabled for the current session. Restart to enable hardcore mode." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_RECORD_QUALITY, + "Ποιότητα Εγγραφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_STREAM_QUALITY, + "Ποιότητα Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STREAMING_URL, + "Σύνδεσμος Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UDP_STREAM_PORT, + "Θύρα UDP Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_TWITCH, + "Twitch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_YOUTUBE, + "YouTube" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TWITCH_STREAM_KEY, + "Κλειδί Απευθείας Μετάδοσης Twitch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_YOUTUBE_STREAM_KEY, + "Κλειδί Απευθείας Μετάδοσης YouTube" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STREAMING_MODE, + "Μέσο Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STREAMING_TITLE, + "Τίτλος Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_SPLIT_JOYCON, + "Χωριστά Joy-Con" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG, + "Επαναφορά Προεπιλογών" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, + "Επαναφορά της τρέχουσας διαμόρφωσης στις προεπιλεγμένες ρυθμίσεις." + ) \ No newline at end of file diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index a3a118a1d1..6b4c968fcd 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -1515,6 +1515,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_LANG_ARABIC, "Arabic" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_GREEK, + "Greek" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LEFT_ANALOG, "Left Analog" diff --git a/libretro-common/include/libretro.h b/libretro-common/include/libretro.h index c2cbba6769..4cbd18936c 100644 --- a/libretro-common/include/libretro.h +++ b/libretro-common/include/libretro.h @@ -271,6 +271,7 @@ enum retro_language RETRO_LANGUAGE_POLISH = 14, RETRO_LANGUAGE_VIETNAMESE = 15, RETRO_LANGUAGE_ARABIC = 16, + RETRO_LANGUAGE_GREEK = 17, RETRO_LANGUAGE_LAST, /* Ensure sizeof(enum) == sizeof(int) */ diff --git a/menu/menu_setting.c b/menu/menu_setting.c index fbf57eab1b..5431fa6df6 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1873,7 +1873,7 @@ static void setting_get_string_representation_uint_user_language( modes[RETRO_LANGUAGE_POLISH] = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LANG_POLISH); modes[RETRO_LANGUAGE_VIETNAMESE] = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LANG_VIETNAMESE); modes[RETRO_LANGUAGE_ARABIC] = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LANG_ARABIC); - + modes[RETRO_LANGUAGE_GREEK] = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LANG_GREEK); strlcpy(s, modes[*msg_hash_get_uint(MSG_HASH_USER_LANGUAGE)], len); } #endif diff --git a/msg_hash.c b/msg_hash.c index ce82ea9f4e..a9e7e7e5b2 100644 --- a/msg_hash.c +++ b/msg_hash.c @@ -82,6 +82,9 @@ int menu_hash_get_help_enum(enum msg_hash_enums msg, char *s, size_t len) case RETRO_LANGUAGE_ARABIC: ret = menu_hash_get_help_ar_enum(msg, s, len); break; + case RETRO_LANGUAGE_GREEK: + ret = menu_hash_get_help_el_enum(msg, s, len); + break; default: break; } @@ -151,6 +154,9 @@ const char *msg_hash_to_str(enum msg_hash_enums msg) case RETRO_LANGUAGE_ARABIC: ret = msg_hash_to_str_ar(msg); break; + case RETRO_LANGUAGE_GREEK: + ret = msg_hash_to_str_el(msg); + break; default: break; } diff --git a/msg_hash.h b/msg_hash.h index bce6ce1de8..855e2609bb 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1838,6 +1838,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_LANG_POLISH, MENU_ENUM_LABEL_VALUE_LANG_VIETNAMESE, MENU_ENUM_LABEL_VALUE_LANG_ARABIC, + MENU_ENUM_LABEL_VALUE_LANG_GREEK, MENU_ENUM_LABEL_VALUE_NONE, MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE, @@ -2443,6 +2444,9 @@ int menu_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len); const char *msg_hash_to_str_ar(enum msg_hash_enums msg); int menu_hash_get_help_ar_enum(enum msg_hash_enums msg, char *s, size_t len); +const char *msg_hash_to_str_el(enum msg_hash_enums msg); +int menu_hash_get_help_el_enum(enum msg_hash_enums msg, char *s, size_t len); + int menu_hash_get_help_enum(enum msg_hash_enums msg, char *s, size_t len); enum msg_file_type msg_hash_to_file_type(uint32_t hash); From c5f9fc0a342ed28b793b64fcf35dc950d4a098d8 Mon Sep 17 00:00:00 2001 From: Nathan Strong Date: Thu, 11 Oct 2018 15:37:15 -0700 Subject: [PATCH 026/304] WiiU: fix network information == DETAILS For local netplay, it's useful to have your IP address easily available. This commit makes the Information > Network Information menu display the Wii U's IP address. Change summary: - Fix the logging init to be reentrant to avoid socket consumption - Add implementation of POSIX `getifaddrs()` and `freeifaddrs()` to `missing_libc_functions.c` - Remove compiler directives protecting the code paths that call `getifaddrs()` from being used in Wii U builds == TESTING Have tested locally, successfully get IP address information in the Information > Network Information. I think this may also fix NAT traversal. Will need to be tested. --- Makefile.wiiu | 2 - frontend/drivers/platform_wiiu.c | 3 + libretro-common/net/net_natt.c | 2 +- menu/menu_displaylist.c | 4 +- wiiu/include/arpa/inet.h | 1 + wiiu/include/ifaddrs.h | 18 ++++ wiiu/system/missing_libc_functions.c | 129 +++++++++++++++++++++++++++ 7 files changed, 154 insertions(+), 5 deletions(-) create mode 100644 wiiu/include/ifaddrs.h diff --git a/Makefile.wiiu b/Makefile.wiiu index 83c890e2a8..81bd02c697 100644 --- a/Makefile.wiiu +++ b/Makefile.wiiu @@ -137,8 +137,6 @@ endif WANT_IOSUHAX = 1 include Makefile.common - BLACKLIST := $(LIBRETRO_COMM_DIR)/net/net_ifinfo.o - OBJ := $(filter-out $(BLACKLIST),$(OBJ)) OBJ += gfx/drivers/gx2_gfx.o OBJ += gfx/drivers_font/wiiu_font.o diff --git a/frontend/drivers/platform_wiiu.c b/frontend/drivers/platform_wiiu.c index 1976beb86a..69e9ffc7c4 100644 --- a/frontend/drivers/platform_wiiu.c +++ b/frontend/drivers/platform_wiiu.c @@ -530,6 +530,9 @@ static void wiiu_log_init(int port) { wiiu_log_lock = 0; + if(wiiu_log_socket >= 0) + return; + if(broadcast_init(port) < 0) return; diff --git a/libretro-common/net/net_natt.c b/libretro-common/net/net_natt.c index 14dbdeeb8b..b6dc5c91b4 100644 --- a/libretro-common/net/net_natt.c +++ b/libretro-common/net/net_natt.c @@ -184,7 +184,7 @@ static bool natt_open_port(struct natt_status *status, bool natt_open_port_any(struct natt_status *status, uint16_t port, enum socket_protocol proto) { -#if !defined(HAVE_SOCKET_LEGACY) && !defined(WIIU) && !defined(SWITCH) +#if !defined(HAVE_SOCKET_LEGACY) && !defined(SWITCH) size_t i; char port_str[6]; struct net_ifinfo list; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 96b64a43a2..d816d94af0 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -97,7 +97,7 @@ static enum msg_hash_enums new_type = MSG_UNKNOWN; * function pointer callback functions that don't necessarily * call each other. */ -#if !defined(HAVE_SOCKET_LEGACY) && !defined(WIIU) && !defined(SWITCH) +#if !defined(HAVE_SOCKET_LEGACY) && !defined(SWITCH) #include static int menu_displaylist_parse_network_info(menu_displaylist_info_t *info) @@ -4834,7 +4834,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) break; case DISPLAYLIST_NETWORK_INFO: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); -#if defined(HAVE_NETWORKING) && !defined(HAVE_SOCKET_LEGACY) && !defined(WIIU) && !defined(SWITCH) +#if defined(HAVE_NETWORKING) && !defined(HAVE_SOCKET_LEGACY) && !defined(SWITCH) count = menu_displaylist_parse_network_info(info); #endif diff --git a/wiiu/include/arpa/inet.h b/wiiu/include/arpa/inet.h index fa505565c6..2a79d9526d 100644 --- a/wiiu/include/arpa/inet.h +++ b/wiiu/include/arpa/inet.h @@ -6,6 +6,7 @@ extern "C" { #endif #include +#include char *inet_ntoa(struct in_addr in); const char *inet_ntop(int af, const void *cp, char *buf, socklen_t len); diff --git a/wiiu/include/ifaddrs.h b/wiiu/include/ifaddrs.h new file mode 100644 index 0000000000..bf78a06c02 --- /dev/null +++ b/wiiu/include/ifaddrs.h @@ -0,0 +1,18 @@ +#ifndef _IFADDRS_H_ +#define _IFADDRS_H_ + +#include + +struct ifaddrs { + struct ifaddrs *ifa_next; + char *ifa_name; + unsigned int ifa_flags; + struct sockaddr *ifa_addr; + struct sockaddr *ifa_netmask; + struct sockaddr *ifa_dstaddr; + void *ifa_data; +}; + +int getifaddrs(struct ifaddrs **ifap); +void freeifaddrs(struct ifaddrs *ifp); +#endif // _IFADDRS_H_ \ No newline at end of file diff --git a/wiiu/system/missing_libc_functions.c b/wiiu/system/missing_libc_functions.c index bc47266b3a..4a35405a10 100644 --- a/wiiu/system/missing_libc_functions.c +++ b/wiiu/system/missing_libc_functions.c @@ -5,10 +5,18 @@ #include #include #include +#include +#include #include #include +#include #include #include +#include +#include +#include + +#include /* This is usually in libogc; we can't use that on wiiu */ int usleep(useconds_t microseconds) { @@ -112,3 +120,124 @@ int clock_gettime(clockid_t clk_id, struct timespec* tp) { } return 0; } + +/** + * Implementation of getifaddrs() and freeifaddrs() for WiiU. + */ + +// the Wii U doesn't define an interface name, so we'll use something generic. +static const char *wiiu_iface_name = "eth0"; + +/** + * Allocate and zeroize the hunk of memory for the ifaddrs struct and its contents; the struct will be filled + * out later. + * + * returns NULL if any of the memory allocations fail. + */ +static struct ifaddrs *buildEmptyIfa() { + struct ifaddrs *result = (struct ifaddrs *)malloc(sizeof(struct ifaddrs)); + if(result != NULL) { + memset(result, 0, sizeof(struct ifaddrs)); + result->ifa_name = strdup(wiiu_iface_name); + result->ifa_addr = (struct sockaddr *)malloc(sizeof(struct sockaddr_in)); + result->ifa_netmask = (struct sockaddr *)malloc(sizeof(struct sockaddr_in)); + result->ifa_dstaddr = (struct sockaddr *)malloc(sizeof(struct sockaddr_in)); + + if(!result->ifa_name || !result->ifa_addr || !result->ifa_netmask || !result->ifa_dstaddr) + goto error; + + memset(result->ifa_addr, 0, sizeof(struct sockaddr_in)); + result->ifa_addr->sa_family = AF_INET; + memset(result->ifa_netmask, 0, sizeof(struct sockaddr_in)); + result->ifa_netmask->sa_family = AF_INET; + memset(result->ifa_dstaddr, 0, sizeof(struct sockaddr_in)); + result->ifa_dstaddr->sa_family = AF_INET; + } + + return result; + error: + freeifaddrs(result); + return NULL; +} + +static int getAssignedAddress(struct sockaddr_in *sa) { + if(sa == NULL) + return -1; + ACIpAddress addr; + int result = ACGetAssignedAddress(&addr); + if(result == 0) + sa->sin_addr.s_addr = addr; + + return result; +} + +static int getAssignedSubnet(struct sockaddr_in *sa) { + if(sa == NULL) + return -1; + + ACIpAddress mask; + int result = ACGetAssignedSubnet(&mask); + if(result == 0) + sa->sin_addr.s_addr = mask; + + return result; +} + +static int getBroadcastAddress(struct sockaddr_in *sa, struct sockaddr_in *addr, struct sockaddr_in *mask) { + if(!sa || !addr || !mask) + return -1; + + sa->sin_addr.s_addr = addr->sin_addr.s_addr | (~mask->sin_addr.s_addr); + return 0; +} + +static struct ifaddrs *getWiiUInterfaceAddressData(void) { + struct ifaddrs *result = buildEmptyIfa(); + + if(result != NULL) { + if(getAssignedAddress((struct sockaddr_in *)result->ifa_addr) < 0 || + getAssignedSubnet((struct sockaddr_in *)result->ifa_netmask) < 0 || + getBroadcastAddress((struct sockaddr_in *)result->ifa_dstaddr, + (struct sockaddr_in *)result->ifa_addr, + (struct sockaddr_in *)result->ifa_netmask) < 0) { + goto error; + } + } + + return result; + + error: + freeifaddrs(result); + return NULL; +} + +int getifaddrs(struct ifaddrs **ifap) { + if(ifap == NULL) { + return -1; + } + *ifap = getWiiUInterfaceAddressData(); + + return (*ifap == NULL) ? -1 : 0; +} + +void freeifaddrs(struct ifaddrs *ifp) { + if(ifp != NULL) { + if(ifp->ifa_name) { + free(ifp->ifa_name); + ifp->ifa_name = NULL; + } + if(ifp->ifa_addr) { + free(ifp->ifa_addr); + ifp->ifa_addr = NULL; + } + if(ifp->ifa_netmask) { + free(ifp->ifa_netmask); + ifp->ifa_netmask = NULL; + } + if(ifp->ifa_dstaddr) { + free(ifp->ifa_dstaddr); + ifp->ifa_dstaddr = NULL; + } + free(ifp); + } +} \ No newline at end of file From b8cb3fd4a7175b551f2f6c72cadb6b7ce0bce4d6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 12 Oct 2018 01:37:53 +0200 Subject: [PATCH 027/304] (CHANGES.md) Update --- CHANGES.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 7a26574e83..b308524723 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,7 @@ # 1.7.6 (future) - DATE: Add Date / Time style options. - MIDI: Add a Linux ALSA driver for MIDI. +- LOCALIZATION: Add Greek translation. - LOCALIZATION: Update German translation. - LOCALIZATION: Update Italian translation. - LOCALIZATION: Update Simplified Chinese translation. @@ -8,7 +9,7 @@ - SCANNER: Fix GDI disc scanning. - SWITCH/LIBNX: Improve touch scaling calculation. - SWITCH: Proper button labels. -- WIIU: Initial netplay peer-to-peer support. +- WIIU: Initial netplay peer-to-peer support. Network information working. # 1.7.5 - CAMERA: Fix Video4Linux2 driver that broke years ago. From e1227b2d68cc95dc8ae84fa5503d062fb541fcef Mon Sep 17 00:00:00 2001 From: radius Date: Thu, 11 Oct 2018 20:15:50 -0500 Subject: [PATCH 028/304] enable local room discovery on WiiU --- network/netplay/netplay_discovery.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/network/netplay/netplay_discovery.c b/network/netplay/netplay_discovery.c index 67781977c0..0acc6c7598 100644 --- a/network/netplay/netplay_discovery.c +++ b/network/netplay/netplay_discovery.c @@ -134,7 +134,7 @@ void deinit_netplay_discovery(void) /* Todo: implement net_ifinfo and ntohs for consoles */ bool netplay_discovery_driver_ctl(enum rarch_netplay_discovery_ctl_state state, void *data) { -#ifndef RARCH_CONSOLE +#if defined(WIIU) || !defined(RARCH_CONSOLE) char port_str[6]; int ret; unsigned k = 0; @@ -162,7 +162,7 @@ bool netplay_discovery_driver_ctl(enum rarch_netplay_discovery_ctl_state state, #if defined(SOL_SOCKET) && defined(SO_BROADCAST) if (setsockopt(lan_ad_client_fd, SOL_SOCKET, SO_BROADCAST, (const char *)&canBroadcast, sizeof(canBroadcast)) < 0) - RARCH_WARN("[discovery] Failed to set netplay discovery port to broadcast\n"); + RARCH_WARN("[discovery] Failed to set netplay discovery port to broadcast\n"); #endif /* Put together the request */ @@ -238,7 +238,7 @@ error: bool netplay_lan_ad_server(netplay_t *netplay) { /* Todo: implement net_ifinfo and ntohs for consoles */ -#ifndef RARCH_CONSOLE +#if defined(WIIU) || !defined(RARCH_CONSOLE) fd_set fds; int ret; struct timeval tmp_tv = {0}; @@ -255,7 +255,7 @@ bool netplay_lan_ad_server(netplay_t *netplay) return false; if (lan_ad_server_fd < 0 && !init_lan_ad_server_socket(netplay, RARCH_DEFAULT_PORT)) - return false; + return false; /* Check for any ad queries */ while (1) From 8daff7e3da60511757b0d4f95b3e8d32dd7616d2 Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 7 Oct 2018 09:53:13 -0500 Subject: [PATCH 029/304] force fast-save-states while netplay is enabled --- dynamic.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dynamic.c b/dynamic.c index 6613a4f03c..e1bd95e018 100644 --- a/dynamic.c +++ b/dynamic.c @@ -1839,6 +1839,8 @@ bool rarch_environment_cb(unsigned cmd, void *data) #ifdef HAVE_NETWORKING if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_REPLAYING, NULL)) result &= ~(1|2); + if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL)) + result |= 4; #endif if (data != NULL) { From eac0d603f43df28f74e16d78cdf071c2c11ff02b Mon Sep 17 00:00:00 2001 From: natinusala Date: Fri, 12 Oct 2018 17:29:24 +0200 Subject: [PATCH 030/304] libnx: add network interfaces info --- Makefile.libnx | 2 +- frontend/drivers/platform_switch.c | 2 + libretro-common/net/net_ifinfo.c | 73 +++++++++++++++++++++++++++++- libretro-common/net/net_natt.c | 2 +- menu/menu_displaylist.c | 4 +- 5 files changed, 77 insertions(+), 6 deletions(-) diff --git a/Makefile.libnx b/Makefile.libnx index 00343d6b1c..d84f191f88 100644 --- a/Makefile.libnx +++ b/Makefile.libnx @@ -70,7 +70,7 @@ else endif include Makefile.common -BLACKLIST := $(LIBRETRO_COMM_DIR)/net/net_ifinfo.o +BLACKLIST := OBJ := $(filter-out $(BLACKLIST),$(OBJ)) diff --git a/frontend/drivers/platform_switch.c b/frontend/drivers/platform_switch.c index 39cb228a47..166640ee21 100644 --- a/frontend/drivers/platform_switch.c +++ b/frontend/drivers/platform_switch.c @@ -191,6 +191,7 @@ static void frontend_switch_deinit(void *data) (void)data; #ifdef HAVE_LIBNX + nifmExit(); #if defined(SWITCH) && defined(NXLINK) socketExit(); #endif @@ -607,6 +608,7 @@ static void frontend_switch_init(void *data) (void)data; #ifdef HAVE_LIBNX + nifmInitialize(); #ifndef HAVE_OPENGL /* Init Resolution before initDefault */ gfxInitResolution(1280, 720); diff --git a/libretro-common/net/net_ifinfo.c b/libretro-common/net/net_ifinfo.c index 77c5971171..55be3c90e9 100644 --- a/libretro-common/net/net_ifinfo.c +++ b/libretro-common/net/net_ifinfo.c @@ -38,9 +38,11 @@ #ifdef WANT_IFADDRS #include #else +#ifndef HAVE_LIBNX #include #endif #endif +#endif #include @@ -71,10 +73,77 @@ void net_ifinfo_free(net_ifinfo_t *list) free(list->entries); } +#ifdef HAVE_LIBNX +static void convert_ip(char *dst, size_t size, uint32_t ip, bool inverted) +{ + unsigned char bytes[4]; + bytes[0] = ip & 0xFF; + bytes[1] = (ip >> 8) & 0xFF; + bytes[2] = (ip >> 16) & 0xFF; + bytes[3] = (ip >> 24) & 0xFF; + + if (inverted) + snprintf(dst, size, "%d.%d.%d.%d", bytes[0], bytes[1], bytes[2], bytes[3]); + else + snprintf(dst, size, "%d.%d.%d.%d", bytes[3], bytes[2], bytes[1], bytes[0]); +} +#endif + bool net_ifinfo_new(net_ifinfo_t *list) { unsigned k = 0; -#if defined(_WIN32) && !defined(_XBOX) +#ifdef HAVE_LIBNX + uint32_t id; + Result rc; + + char hostname[128]; + struct net_ifinfo_entry *ptr = NULL; + + memset(list, 0, sizeof(net_ifinfo_t)); + + /* loopback */ + convert_ip(hostname, sizeof(hostname), INADDR_LOOPBACK, false); + + ptr = (struct net_ifinfo_entry*) + realloc(list->entries, (k+1) * sizeof(struct net_ifinfo_entry)); + + if (!ptr) + goto error; + + list->entries = ptr; + + list->entries[k].name = strdup("lo"); + list->entries[k].host = strdup(hostname); + list->size = k + 1; + + k++; + + /* + actual interface + can be wlan or eth (with a wiiu adapter) + so we just use "switch" as a name + */ + rc = nifmGetCurrentIpAddress(&id); + + if (!R_SUCCEEDED(rc)) /* not connected to any network */ + return true; + + convert_ip(hostname, sizeof(hostname), id, true); + + ptr = (struct net_ifinfo_entry*) + realloc(list->entries, (k+1) * sizeof(struct net_ifinfo_entry)); + + if (!ptr) + goto error; + + list->entries = ptr; + + list->entries[k].name = strdup("switch"); + list->entries[k].host = strdup(hostname); + list->size = k + 1; + + return true; +#elif defined(_WIN32) && !defined(_XBOX) PIP_ADAPTER_ADDRESSES adapter_addresses = NULL, aa = NULL; PIP_ADAPTER_UNICAST_ADDRESS ua = NULL; #ifdef _WIN32_WINNT_WINXP @@ -173,7 +242,7 @@ error: #ifdef _WIN32 if (adapter_addresses) free(adapter_addresses); -#else +#elif !defined(HAVE_LIBNX) freeifaddrs(ifaddr); #endif net_ifinfo_free(list); diff --git a/libretro-common/net/net_natt.c b/libretro-common/net/net_natt.c index b6dc5c91b4..eca2a65500 100644 --- a/libretro-common/net/net_natt.c +++ b/libretro-common/net/net_natt.c @@ -184,7 +184,7 @@ static bool natt_open_port(struct natt_status *status, bool natt_open_port_any(struct natt_status *status, uint16_t port, enum socket_protocol proto) { -#if !defined(HAVE_SOCKET_LEGACY) && !defined(SWITCH) +#if !defined(HAVE_SOCKET_LEGACY) && (!defined(SWITCH) || defined(SWITCH) && defined(HAVE_LIBNX)) size_t i; char port_str[6]; struct net_ifinfo list; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index d816d94af0..adb2d3d375 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -97,7 +97,7 @@ static enum msg_hash_enums new_type = MSG_UNKNOWN; * function pointer callback functions that don't necessarily * call each other. */ -#if !defined(HAVE_SOCKET_LEGACY) && !defined(SWITCH) +#if !defined(HAVE_SOCKET_LEGACY) && (!defined(SWITCH) || defined(SWITCH) && defined(HAVE_LIBNX)) #include static int menu_displaylist_parse_network_info(menu_displaylist_info_t *info) @@ -4834,7 +4834,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) break; case DISPLAYLIST_NETWORK_INFO: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); -#if defined(HAVE_NETWORKING) && !defined(HAVE_SOCKET_LEGACY) && !defined(SWITCH) +#if defined(HAVE_NETWORKING) && !defined(HAVE_SOCKET_LEGACY) && (!defined(SWITCH) || defined(SWITCH) && defined(HAVE_LIBNX)) count = menu_displaylist_parse_network_info(info); #endif From ba020720dbb25d3bccadb01ccd622f207bc1d9cc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 12 Oct 2018 18:29:52 +0200 Subject: [PATCH 031/304] Add HAVE_NETPLAYDISCOVERY --- Makefile.common | 4 +++ Makefile.griffin | 11 ++++++ Makefile.libnx | 1 + Makefile.wiiu | 3 +- Makefile.win | 1 + network/netplay/netplay_discovery.c | 4 +-- pkg/android/phoenix/jni/Android.mk | 2 +- pkg/android/phoenix64/jni/Android.mk | 2 +- .../RetroArch_Metal.xcodeproj/project.pbxproj | 2 ++ .../RetroArch_PPC.xcodeproj/project.pbxproj | 2 ++ .../RetroArch_iOS10.xcodeproj/project.pbxproj | 5 +++ .../project.pbxproj | 5 +++ .../RetroArch_iOS11.xcodeproj/project.pbxproj | 5 +++ .../project.pbxproj | 5 +++ .../RetroArch_iOS6.xcodeproj/project.pbxproj | 5 +++ .../RetroArch_iOS8.xcodeproj/project.pbxproj | 5 +++ .../RetroArch_iOS9.xcodeproj/project.pbxproj | 5 +++ pkg/msvc/msvc-2003/RetroArch-msvc2003.vcproj | 2 +- pkg/msvc/msvc-2005/RetroArch-msvc2005.vcproj | 2 +- pkg/msvc/msvc-2008/RetroArch-msvc2008.vcproj | 8 ++--- pkg/msvc/msvc-2010/RetroArch-msvc2010.vcxproj | 18 +++++----- pkg/msvc/msvc-2012/RetroArch-msvc2012.vcxproj | 6 ++-- pkg/msvc/msvc-2013/RetroArch-msvc2013.vcxproj | 10 +++--- pkg/msvc/msvc-2015/RetroArch-msvc2015.vcxproj | 18 +++++----- pkg/msvc/msvc-2017/RetroArch-msvc2017.vcxproj | 34 +++++++++---------- qb/config.params.sh | 1 + 26 files changed, 112 insertions(+), 54 deletions(-) diff --git a/Makefile.common b/Makefile.common index a9be11ef4e..361de1abb5 100644 --- a/Makefile.common +++ b/Makefile.common @@ -98,6 +98,10 @@ endif CFLAGS += -I$(LIBRETRO_COMM_DIR)/include -I$(DEPS_DIR) # Switches +# +ifeq ($(HAVE_NETPLAYDISCOVERY), 1) + CFLAGS += -DHAVE_NETPLAYDISCOVERY +endif ifeq ($(HAVE_NETLOGGER), 1) CFLAGS += -DHAVE_LOGGER diff --git a/Makefile.griffin b/Makefile.griffin index 0249e2b8e5..03d6d22d8d 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -320,6 +320,7 @@ else ifeq ($(platform), windows_msvc6_x86) HAVE_7ZIP := 1 HAVE_NETWORKING := 0 HAVE_NETWORK_CMD := 1 + HAVE_NETPLAYDISCOVERY := 1 HAVE_OVERLAY := 1 HAVE_MATERIALUI := 1 HAVE_XMB := 1 @@ -361,6 +362,7 @@ else ifeq ($(platform), windows_msvc2003_x86) HAVE_7ZIP := 1 HAVE_NETWORKING := 1 HAVE_NETWORK_CMD := 1 + HAVE_NETPLAYDISCOVERY := 1 HAVE_OVERLAY := 1 HAVE_MATERIALUI := 1 HAVE_XMB := 1 @@ -407,6 +409,7 @@ else ifeq ($(platform), windows_msvc2005_x86) HAVE_7ZIP := 1 HAVE_NETWORKING := 1 HAVE_NETWORK_CMD := 1 + HAVE_NETPLAYDISCOVERY := 1 HAVE_OVERLAY := 1 HAVE_MATERIALUI := 1 HAVE_XMB := 1 @@ -454,6 +457,7 @@ else ifneq (,$(findstring windows_msvc2010,$(platform))) HAVE_7ZIP := 1 HAVE_NETWORKING := 1 HAVE_NETWORK_CMD := 1 + HAVE_NETPLAYDISCOVERY := 1 HAVE_OVERLAY := 1 HAVE_MATERIALUI := 1 HAVE_XMB := 1 @@ -524,6 +528,7 @@ else ifneq (,$(findstring windows_msvc2012,$(platform))) HAVE_7ZIP := 1 HAVE_NETWORKING := 1 HAVE_NETWORK_CMD := 1 + HAVE_NETPLAYDISCOVERY := 1 HAVE_OVERLAY := 1 HAVE_MATERIALUI := 1 HAVE_XMB := 1 @@ -598,6 +603,7 @@ else ifneq (,$(findstring windows_msvc2013,$(platform))) HAVE_7ZIP := 1 HAVE_NETWORKING := 1 HAVE_NETWORK_CMD := 1 + HAVE_NETPLAYDISCOVERY := 1 HAVE_OVERLAY := 1 HAVE_MATERIALUI := 1 HAVE_XMB := 1 @@ -672,6 +678,7 @@ else ifneq (,$(findstring windows_msvc2015,$(platform))) HAVE_7ZIP := 1 HAVE_NETWORKING := 1 HAVE_NETWORK_CMD := 1 + HAVE_NETPLAYDISCOVERY := 1 HAVE_OVERLAY := 1 HAVE_MATERIALUI := 1 HAVE_XMB := 1 @@ -857,6 +864,10 @@ ifeq ($(HAVE_NETWORKING), 1) CFLAGS += -DHAVE_NETWORKING endif +ifeq ($(HAVE_NETPLAYDISCOVERY), 1) + CFLAGS += -DHAVE_NETPLAYDISCOVERY +endif + ifeq ($(RARCH_CONSOLE), 1) CFLAGS += -DRARCH_CONSOLE endif diff --git a/Makefile.libnx b/Makefile.libnx index d84f191f88..d417ee1a5e 100644 --- a/Makefile.libnx +++ b/Makefile.libnx @@ -36,6 +36,7 @@ HAVE_STATIC_AUDIO_FILTERS = 1 HAVE_MENU = 1 HAVE_RUNAHEAD = 1 HAVE_NETWORKING = 1 +HAVE_NETPLAYDISCOVERY = 1 HAVE_STB_FONT = 1 HAVE_CHEEVOS = 1 diff --git a/Makefile.wiiu b/Makefile.wiiu index 81bd02c697..e77be12ea9 100644 --- a/Makefile.wiiu +++ b/Makefile.wiiu @@ -105,7 +105,7 @@ endif OBJ += griffin/griffin.o DEFINES += -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_LIBRETRODB DEFINES += -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB -DHAVE_CC_RESAMPLER - DEFINES += -DHAVE_STB_FONT -DHAVE_STB_VORBIS -DHAVE_LANGEXTRA -DHAVE_LIBRETRODB -DHAVE_NETWORKING + DEFINES += -DHAVE_STB_FONT -DHAVE_STB_VORBIS -DHAVE_LANGEXTRA -DHAVE_LIBRETRODB -DHAVE_NETWORKING -DHAVE_NETPLAYDISCOVERY # DEFINES += -DWANT_IFADDRS # DEFINES += -DHAVE_FREETYPE DEFINES += -DHAVE_XMB -DHAVE_MATERIALUI @@ -128,6 +128,7 @@ endif HAVE_LANGEXTRA = 1 HAVE_LIBRETRODB = 1 HAVE_NETWORKING = 1 + HAVE_NETPLAYDISCOVERY = 1 HAVE_CHEEVOS = 1 # WANT_IFADDRS = 1 HAVE_OVERLAY = 1 diff --git a/Makefile.win b/Makefile.win index 932d0f896f..02d70bde7f 100644 --- a/Makefile.win +++ b/Makefile.win @@ -8,6 +8,7 @@ HAVE_OPENGL = 1 HAVE_DYLIB = 1 HAVE_D3D9 = 1 HAVE_NETWORKING = 1 +HAVE_NETPLAYDISCOVERY = 1 HAVE_STDIN_CMD = 1 HAVE_COMMAND = 1 HAVE_THREADS = 1 diff --git a/network/netplay/netplay_discovery.c b/network/netplay/netplay_discovery.c index 0acc6c7598..fa998ad9b6 100644 --- a/network/netplay/netplay_discovery.c +++ b/network/netplay/netplay_discovery.c @@ -134,7 +134,7 @@ void deinit_netplay_discovery(void) /* Todo: implement net_ifinfo and ntohs for consoles */ bool netplay_discovery_driver_ctl(enum rarch_netplay_discovery_ctl_state state, void *data) { -#if defined(WIIU) || !defined(RARCH_CONSOLE) +#ifdef HAVE_NETPLAYDISCOVERY char port_str[6]; int ret; unsigned k = 0; @@ -238,7 +238,7 @@ error: bool netplay_lan_ad_server(netplay_t *netplay) { /* Todo: implement net_ifinfo and ntohs for consoles */ -#if defined(WIIU) || !defined(RARCH_CONSOLE) +#ifdef HAVE_NETPLAYDISCOVERY fd_set fds; int ret; struct timeval tmp_tv = {0}; diff --git a/pkg/android/phoenix/jni/Android.mk b/pkg/android/phoenix/jni/Android.mk index 84351cad95..c2f1802597 100644 --- a/pkg/android/phoenix/jni/Android.mk +++ b/pkg/android/phoenix/jni/Android.mk @@ -72,7 +72,7 @@ else DEFINES += -DHAVE_OPENGLES2 endif -DEFINES += -DRARCH_MOBILE -DHAVE_GRIFFIN -DHAVE_STB_VORBIS -DHAVE_LANGEXTRA -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_OPENGLES -DGLSL_DEBUG -DHAVE_DYLIB -DHAVE_EGL -DHAVE_GLSL -DHAVE_MENU -DHAVE_RGUI -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DINLINE=inline -DHAVE_THREADS -D__LIBRETRO__ -DHAVE_RSOUND -DHAVE_NETWORKGAMEPAD -DHAVE_NETWORKING -DRARCH_INTERNAL -DHAVE_FILTERS_BUILTIN -DHAVE_MATERIALUI -DHAVE_XMB -DHAVE_SHADERPIPELINE -DHAVE_LIBRETRODB -DHAVE_STB_FONT -DHAVE_IMAGEVIEWER -DHAVE_UPDATE_ASSETS -DHAVE_CC_RESAMPLER -DHAVE_MINIUPNPC -DHAVE_BUILTINMINIUPNPC -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -DHAVE_KEYMAPPER -DHAVE_NETWORKGAMEPAD -DHAVE_FLAC -DHAVE_DR_FLAC -DHAVE_DR_MP3 -DHAVE_CHD -DHAVE_RUNAHEAD -DENABLE_HLSL +DEFINES += -DRARCH_MOBILE -DHAVE_GRIFFIN -DHAVE_STB_VORBIS -DHAVE_LANGEXTRA -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_OPENGLES -DGLSL_DEBUG -DHAVE_DYLIB -DHAVE_EGL -DHAVE_GLSL -DHAVE_MENU -DHAVE_RGUI -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DINLINE=inline -DHAVE_THREADS -D__LIBRETRO__ -DHAVE_RSOUND -DHAVE_NETWORKGAMEPAD -DHAVE_NETWORKING -DHAVE_NETPLAYDISCOVERY -DRARCH_INTERNAL -DHAVE_FILTERS_BUILTIN -DHAVE_MATERIALUI -DHAVE_XMB -DHAVE_SHADERPIPELINE -DHAVE_LIBRETRODB -DHAVE_STB_FONT -DHAVE_IMAGEVIEWER -DHAVE_UPDATE_ASSETS -DHAVE_CC_RESAMPLER -DHAVE_MINIUPNPC -DHAVE_BUILTINMINIUPNPC -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -DHAVE_KEYMAPPER -DHAVE_NETWORKGAMEPAD -DHAVE_FLAC -DHAVE_DR_FLAC -DHAVE_DR_MP3 -DHAVE_CHD -DHAVE_RUNAHEAD -DENABLE_HLSL DEFINES += -DWANT_IFADDRS ifeq ($(HAVE_VULKAN),1) diff --git a/pkg/android/phoenix64/jni/Android.mk b/pkg/android/phoenix64/jni/Android.mk index 4e148617fa..9862b63375 100644 --- a/pkg/android/phoenix64/jni/Android.mk +++ b/pkg/android/phoenix64/jni/Android.mk @@ -72,7 +72,7 @@ else DEFINES += -DHAVE_OPENGLES2 endif -DEFINES += -DRARCH_MOBILE -DHAVE_GRIFFIN -DHAVE_STB_VORBIS -DHAVE_LANGEXTRA -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_OPENGLES -DGLSL_DEBUG -DHAVE_DYLIB -DHAVE_EGL -DHAVE_GLSL -DHAVE_MENU -DHAVE_RGUI -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DINLINE=inline -DHAVE_THREADS -D__LIBRETRO__ -DHAVE_RSOUND -DHAVE_NETWORKGAMEPAD -DHAVE_NETWORKING -DRARCH_INTERNAL -DHAVE_FILTERS_BUILTIN -DHAVE_MATERIALUI -DHAVE_XMB -DHAVE_SHADERPIPELINE -DHAVE_LIBRETRODB -DHAVE_STB_FONT -DHAVE_IMAGEVIEWER -DHAVE_UPDATE_ASSETS -DHAVE_CC_RESAMPLER -DHAVE_MINIUPNPC -DHAVE_BUILTINMINIUPNPC -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -DHAVE_KEYMAPPER -DHAVE_NETWORKGAMEPAD -DHAVE_FLAC -DHAVE_DR_FLAC -DHAVE_DR_MP3 -DHAVE_CHD -DHAVE_RUNAHEAD -DENABLE_HLSL +DEFINES += -DRARCH_MOBILE -DHAVE_GRIFFIN -DHAVE_STB_VORBIS -DHAVE_LANGEXTRA -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_OPENGLES -DGLSL_DEBUG -DHAVE_DYLIB -DHAVE_EGL -DHAVE_GLSL -DHAVE_MENU -DHAVE_RGUI -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DINLINE=inline -DHAVE_THREADS -D__LIBRETRO__ -DHAVE_RSOUND -DHAVE_NETWORKGAMEPAD -DHAVE_NETPLAYDISCOVERY -DHAVE_NETWORKING -DRARCH_INTERNAL -DHAVE_FILTERS_BUILTIN -DHAVE_MATERIALUI -DHAVE_XMB -DHAVE_SHADERPIPELINE -DHAVE_LIBRETRODB -DHAVE_STB_FONT -DHAVE_IMAGEVIEWER -DHAVE_UPDATE_ASSETS -DHAVE_CC_RESAMPLER -DHAVE_MINIUPNPC -DHAVE_BUILTINMINIUPNPC -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -DHAVE_KEYMAPPER -DHAVE_NETWORKGAMEPAD -DHAVE_FLAC -DHAVE_DR_FLAC -DHAVE_DR_MP3 -DHAVE_CHD -DHAVE_RUNAHEAD -DENABLE_HLSL DEFINES += -DWANT_IFADDRS ifeq ($(HAVE_VULKAN),1) diff --git a/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj index 2cfc05036c..a0780ba6cc 100644 --- a/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj @@ -1843,6 +1843,7 @@ "-DHAVE_COCOA", "-DHAVE_NETWORKGAMEPAD", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DRARCH_INTERNAL", "-DHAVE_THREADS", "-DHAVE_DYLIB", @@ -1957,6 +1958,7 @@ "-DHAVE_COCOA", "-DHAVE_NETWORKGAMEPAD", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DRARCH_INTERNAL", "-DHAVE_THREADS", "-DHAVE_DYLIB", diff --git a/pkg/apple/RetroArch_PPC.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_PPC.xcodeproj/project.pbxproj index 5ed3fc21e5..15f9cadc81 100644 --- a/pkg/apple/RetroArch_PPC.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_PPC.xcodeproj/project.pbxproj @@ -319,6 +319,7 @@ "-DHAVE_MAIN", "-DHAVE_NETWORKGAMEPAD", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DRARCH_INTERNAL", "-DHAVE_THREADS", "-DHAVE_DYLIB", @@ -395,6 +396,7 @@ "-DHAVE_MAIN", "-DHAVE_NETWORKGAMEPAD", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DRARCH_INTERNAL", "-DHAVE_THREADS", "-DHAVE_DYLIB", diff --git a/pkg/apple/RetroArch_iOS10.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_iOS10.xcodeproj/project.pbxproj index a7643d2152..e1461cca61 100644 --- a/pkg/apple/RetroArch_iOS10.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_iOS10.xcodeproj/project.pbxproj @@ -332,6 +332,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -419,6 +420,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -473,6 +475,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -561,6 +564,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -633,6 +637,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", diff --git a/pkg/apple/RetroArch_iOS10_static.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_iOS10_static.xcodeproj/project.pbxproj index fbc4f7413e..71564abe2b 100644 --- a/pkg/apple/RetroArch_iOS10_static.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_iOS10_static.xcodeproj/project.pbxproj @@ -341,6 +341,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_GRIFFIN", "-DHAVE_STB_VORBIS", @@ -427,6 +428,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_GRIFFIN", "-DHAVE_STB_VORBIS", @@ -480,6 +482,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_GRIFFIN", "-DHAVE_STB_VORBIS", @@ -567,6 +570,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_GRIFFIN", "-DHAVE_STB_VORBIS", @@ -638,6 +642,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_GRIFFIN", "-DHAVE_STB_VORBIS", diff --git a/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj index d83a5f8d63..510c0bd261 100644 --- a/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj @@ -332,6 +332,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -420,6 +421,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -475,6 +477,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -564,6 +567,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -636,6 +640,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", diff --git a/pkg/apple/RetroArch_iOS11_static.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_iOS11_static.xcodeproj/project.pbxproj index c161f1728e..ebb461a418 100644 --- a/pkg/apple/RetroArch_iOS11_static.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_iOS11_static.xcodeproj/project.pbxproj @@ -340,6 +340,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_GRIFFIN", "-DHAVE_STB_VORBIS", @@ -426,6 +427,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_GRIFFIN", "-DHAVE_STB_VORBIS", @@ -479,6 +481,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_GRIFFIN", "-DHAVE_STB_VORBIS", @@ -566,6 +569,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_GRIFFIN", "-DHAVE_STB_VORBIS", @@ -637,6 +641,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_GRIFFIN", "-DHAVE_STB_VORBIS", diff --git a/pkg/apple/RetroArch_iOS6.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_iOS6.xcodeproj/project.pbxproj index 4e542c6909..59ff093d67 100644 --- a/pkg/apple/RetroArch_iOS6.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_iOS6.xcodeproj/project.pbxproj @@ -344,6 +344,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -428,6 +429,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -478,6 +480,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -561,6 +564,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -632,6 +636,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", diff --git a/pkg/apple/RetroArch_iOS8.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_iOS8.xcodeproj/project.pbxproj index 386b08d978..bf69260f49 100644 --- a/pkg/apple/RetroArch_iOS8.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_iOS8.xcodeproj/project.pbxproj @@ -346,6 +346,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -417,6 +418,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -494,6 +496,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -581,6 +584,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -634,6 +638,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", diff --git a/pkg/apple/RetroArch_iOS9.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_iOS9.xcodeproj/project.pbxproj index c713aba2e8..1decfd22f3 100644 --- a/pkg/apple/RetroArch_iOS9.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_iOS9.xcodeproj/project.pbxproj @@ -361,6 +361,7 @@ "-DHAVE_NETWORKGAMEPAD", "-DHAVE_CORETEXT", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -446,6 +447,7 @@ "-DHAVE_NETWORKGAMEPAD", "-DHAVE_CORETEXT", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -498,6 +500,7 @@ "-DHAVE_NETWORKGAMEPAD", "-DHAVE_CORETEXT", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -585,6 +588,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", @@ -656,6 +660,7 @@ "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", + "-DHAVE_NETPLAYDISCOVERY", "-DHAVE_AVFOUNDATION", "-DHAVE_RUNAHEAD", "-DHAVE_GRIFFIN", diff --git a/pkg/msvc/msvc-2003/RetroArch-msvc2003.vcproj b/pkg/msvc/msvc-2003/RetroArch-msvc2003.vcproj index fa171bc956..7531907b67 100644 --- a/pkg/msvc/msvc-2003/RetroArch-msvc2003.vcproj +++ b/pkg/msvc/msvc-2003/RetroArch-msvc2003.vcproj @@ -21,7 +21,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories=""$(SolutionDir)\..\..\libretro-common\include";"$(SolutionDir)\..\..\libretro-common\include\compat\msvc";"$(SolutionDir)\..\..\deps";"$(SolutionDir)\..\..\deps\stb";"$(SolutionDir)\..\..\deps\rcheevos\include";"$(SolutionDir)\..\..\gfx\include"" - PreprocessorDefinitions="_WIN32;WINVER=0x0400;_WIN32_WINNT=0x0400;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;WANT_ZLIB;HAVE_DINPUT;HAVE_DSOUND;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_OVERLAY;HAVE_RGUI;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;HAVE_D3D;HAVE_D3D8;DEBUG;_DEBUG;__STDC_CONSTANT_MACROS" + PreprocessorDefinitions="_WIN32;WINVER=0x0400;_WIN32_WINNT=0x0400;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;WANT_ZLIB;HAVE_DINPUT;HAVE_DSOUND;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETPLAYDISCOVERY;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_OVERLAY;HAVE_RGUI;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;HAVE_D3D;HAVE_D3D8;DEBUG;_DEBUG;__STDC_CONSTANT_MACROS" MinimalRebuild="TRUE" BasicRuntimeChecks="3" RuntimeLibrary="5" diff --git a/pkg/msvc/msvc-2005/RetroArch-msvc2005.vcproj b/pkg/msvc/msvc-2005/RetroArch-msvc2005.vcproj index 0838d2ba65..ed75674de6 100644 --- a/pkg/msvc/msvc-2005/RetroArch-msvc2005.vcproj +++ b/pkg/msvc/msvc-2005/RetroArch-msvc2005.vcproj @@ -42,7 +42,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories=""$(SolutionDir)\..\..\libretro-common\include";"$(SolutionDir)\..\..\libretro-common\include\compat\msvc";"$(SolutionDir)\..\..\deps";"$(SolutionDir)\..\..\deps\stb";"$(SolutionDir)\..\..\deps\rcheevos\include";"$(SolutionDir)\..\..\gfx\include";"$(INETSDK)\Include";"$(DXSDK_DIR)\Include"" - PreprocessorDefinitions="_WIN32_WINNT=0x0410;_WIN32;RARCH_INTERNAL;HAVE_THREADS;HAVE_D3D;HAVE_D3D9;HAVE_GLSL;HAVE_SHADERPIPELINE;HAVE_OPENGL;HAVE_CC_RESAMPLER;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_RPNG;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;WANT_ZLIB;HAVE_DINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_RTHREADS;HAVE_DYNAMIC;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;__STDC_CONSTANT_MACROS" + PreprocessorDefinitions="_WIN32_WINNT=0x0410;_WIN32;RARCH_INTERNAL;HAVE_THREADS;HAVE_D3D;HAVE_D3D9;HAVE_GLSL;HAVE_SHADERPIPELINE;HAVE_OPENGL;HAVE_CC_RESAMPLER;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_RPNG;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;WANT_ZLIB;HAVE_DINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_RTHREADS;HAVE_DYNAMIC;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;__STDC_CONSTANT_MACROS" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" diff --git a/pkg/msvc/msvc-2008/RetroArch-msvc2008.vcproj b/pkg/msvc/msvc-2008/RetroArch-msvc2008.vcproj index afaa0ce5ca..efd4191f59 100644 --- a/pkg/msvc/msvc-2008/RetroArch-msvc2008.vcproj +++ b/pkg/msvc/msvc-2008/RetroArch-msvc2008.vcproj @@ -42,7 +42,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories=""$(SolutionDir)\..\..\libretro-common\include";"$(SolutionDir)\..\..\libretro-common\include\compat\msvc";"$(SolutionDir)\..\..\deps";"$(SolutionDir)\..\..\deps\rcheevos\include";"$(SolutionDir)\..\..\gfx\include"" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_RUNAHEAD;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_GLSL;HAVE_OVERLAY;HAVE_DINPUT;HAVE_XINPUT;HAVE_DYLIB;HAVE_DYNAMIC;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;__STDC_CONSTANT_MACROS" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_RUNAHEAD;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_GLSL;HAVE_OVERLAY;HAVE_DINPUT;HAVE_XINPUT;HAVE_DYLIB;HAVE_DYNAMIC;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;__STDC_CONSTANT_MACROS" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" @@ -118,7 +118,7 @@ Optimization="2" EnableIntrinsicFunctions="true" AdditionalIncludeDirectories=""$(SolutionDir)\..\..\libretro-common\include";"$(SolutionDir)\..\..\libretro-common\include\compat\msvc";"$(SolutionDir)\..\..\deps";"$(SolutionDir)\..\..\deps\rcheevos\include";"$(SolutionDir)\..\..\gfx\include";"$(DXSDK_DIR)Include"" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_RUNAHEAD;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_GLSL;HAVE_OVERLAY;HAVE_DINPUT;HAVE_XINPUT;HAVE_DYLIB;HAVE_DYNAMIC;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;__STDC_CONSTANT_MACROS" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_RUNAHEAD;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_GLSL;HAVE_OVERLAY;HAVE_DINPUT;HAVE_XINPUT;HAVE_DYLIB;HAVE_DYNAMIC;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;__STDC_CONSTANT_MACROS" RuntimeLibrary="2" EnableFunctionLevelLinking="true" UsePrecompiledHeader="0" @@ -193,7 +193,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories=""$(SolutionDir)\..\..\libretro-common\include";"$(SolutionDir)\..\..\libretro-common\include\compat\msvc";"$(SolutionDir)\..\..\deps";"$(SolutionDir)\..\..\deps\rcheevos\include";"$(SolutionDir)\..\..\gfx\include"" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_RUNAHEAD;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DYLIB;HAVE_DYNAMIC;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;__STDC_CONSTANT_MACROS" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_RUNAHEAD;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DYLIB;HAVE_DYNAMIC;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;__STDC_CONSTANT_MACROS" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" @@ -269,7 +269,7 @@ Optimization="2" EnableIntrinsicFunctions="true" AdditionalIncludeDirectories=""$(SolutionDir)\..\..\libretro-common\include";"$(SolutionDir)\..\..\libretro-common\include\compat\msvc";"$(SolutionDir)\..\..\deps";"$(SolutionDir)\..\..\deps\rcheevos\include";"$(SolutionDir)\..\..\gfx\include"" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_RUNAHEAD;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DYLIB;HAVE_DYNAMIC;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;__STDC_CONSTANT_MACROS" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;RC_DISABLE_LUA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_RUNAHEAD;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DYLIB;HAVE_DYNAMIC;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT;__STDC_CONSTANT_MACROS" RuntimeLibrary="2" EnableFunctionLevelLinking="true" UsePrecompiledHeader="0" diff --git a/pkg/msvc/msvc-2010/RetroArch-msvc2010.vcxproj b/pkg/msvc/msvc-2010/RetroArch-msvc2010.vcxproj index bde207b1b2..e6d615a696 100644 --- a/pkg/msvc/msvc-2010/RetroArch-msvc2010.vcxproj +++ b/pkg/msvc/msvc-2010/RetroArch-msvc2010.vcxproj @@ -182,7 +182,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;RC_DISABLE_LUA;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;RC_DISABLE_LUA;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -202,7 +202,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -223,7 +223,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;RC_DISABLE_LUA;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;RC_DISABLE_LUA;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -243,7 +243,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -266,7 +266,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;RC_DISABLE_LUA;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;RC_DISABLE_LUA;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -292,7 +292,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3DX;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -319,7 +319,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;RC_DISABLE_LUA;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;RC_DISABLE_LUA;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -345,7 +345,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_CHEEVOS;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -383,4 +383,4 @@ - \ No newline at end of file + diff --git a/pkg/msvc/msvc-2012/RetroArch-msvc2012.vcxproj b/pkg/msvc/msvc-2012/RetroArch-msvc2012.vcxproj index c4ae7da5b0..e243793e61 100644 --- a/pkg/msvc/msvc-2012/RetroArch-msvc2012.vcxproj +++ b/pkg/msvc/msvc-2012/RetroArch-msvc2012.vcxproj @@ -52,7 +52,7 @@ Level3 Disabled - WIN32;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_MENU;HAVE_UPDATE_ASSETS;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;NDEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_OPENGL;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;_DEBUG;%(PreprocessorDefinitions) + WIN32;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_MENU;HAVE_UPDATE_ASSETS;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;NDEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_OPENGL;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;_DEBUG;%(PreprocessorDefinitions) $(SolutionDir)\..\..\deps;$(SolutionDir)\..\..\gfx\include;$(SolutionDir)\..\..\gfx\include\dxsdk;$(SolutionDir)\..\..\libretro-common\include;$(SolutionDir)\..\..\deps\SPIRV-Cross;%(AdditionalIncludeDirectories) @@ -70,7 +70,7 @@ MaxSpeed true true - WIN32;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_MENU;HAVE_UPDATE_ASSETS;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;NDEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_OPENGL;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;%(PreprocessorDefinitions) + WIN32;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_MENU;HAVE_UPDATE_ASSETS;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;NDEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_OPENGL;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;%(PreprocessorDefinitions) $(SolutionDir)\..\..\deps;$(SolutionDir)\..\..\gfx\include;$(SolutionDir)\..\..\gfx\include\dxsdk;$(SolutionDir)\..\..\libretro-common\include;$(SolutionDir)\..\..\deps\SPIRV-Cross;%(AdditionalIncludeDirectories) @@ -93,4 +93,4 @@ - \ No newline at end of file + diff --git a/pkg/msvc/msvc-2013/RetroArch-msvc2013.vcxproj b/pkg/msvc/msvc-2013/RetroArch-msvc2013.vcxproj index b3d93c79db..9d8f038124 100644 --- a/pkg/msvc/msvc-2013/RetroArch-msvc2013.vcxproj +++ b/pkg/msvc/msvc-2013/RetroArch-msvc2013.vcxproj @@ -84,7 +84,7 @@ Level3 Disabled - WIN32;WANT_GLSLANG;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_SPIRV_CROSS;RC_DISABLE_LUA;HAVE_UPDATE_ASSETS;HAVE_MENU;HAVE_SLANG;HAVE_GLSLANG;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;_DEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_OPENGL;HAVE_VULKAN;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;ENABLE_HLSL;%(PreprocessorDefinitions) + WIN32;WANT_GLSLANG;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_SPIRV_CROSS;RC_DISABLE_LUA;HAVE_UPDATE_ASSETS;HAVE_MENU;HAVE_SLANG;HAVE_GLSLANG;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;_DEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_OPENGL;HAVE_VULKAN;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;ENABLE_HLSL;%(PreprocessorDefinitions) $(SolutionDir)\..\..\gfx\include\dxsdk;$(SolutionDir)\..\..\gfx\include;$(SolutionDir)\..\..\libretro-common\include;$(SolutionDir)\..\..\deps;$(SolutionDir)\..\..\deps\glslang;$(SolutionDir)\..\..\deps\rcheevos\include;$(SolutionDir)\..\..\deps\SPIRV-Cross;%(AdditionalIncludeDirectories) OldStyle @@ -100,7 +100,7 @@ Level3 Disabled - WIN32;WANT_GLSLANG;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_SPIRV_CROSS;RC_DISABLE_LUA;HAVE_MENU;HAVE_SLANG;HAVE_GLSLANG;HAVE_UPDATE_ASSETS;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;_DEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_OPENGL;HAVE_VULKAN;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;ENABLE_HLSL;%(PreprocessorDefinitions) + WIN32;WANT_GLSLANG;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_SPIRV_CROSS;RC_DISABLE_LUA;HAVE_MENU;HAVE_SLANG;HAVE_GLSLANG;HAVE_UPDATE_ASSETS;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;_DEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_OPENGL;HAVE_VULKAN;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;ENABLE_HLSL;%(PreprocessorDefinitions) $(SolutionDir)\..\..\gfx\include\dxsdk;$(SolutionDir)\..\..\gfx\include;$(SolutionDir)\..\..\libretro-common\include;$(SolutionDir)\..\..\deps;$(SolutionDir)\..\..\deps\glslang;$(SolutionDir)\..\..\deps\rcheevos\include;$(SolutionDir)\..\..\deps\SPIRV-Cross;%(AdditionalIncludeDirectories) OldStyle @@ -118,7 +118,7 @@ MaxSpeed true true - WIN32;WANT_GLSLANG;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_SPIRV_CROSS;RC_DISABLE_LUA;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;HAVE_MENU;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;NDEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_OPENGL;HAVE_VULKAN;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_COMMAND;HAVE_NETWORK_CMD;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;ENABLE_HLSL;%(PreprocessorDefinitions) + WIN32;WANT_GLSLANG;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_SPIRV_CROSS;RC_DISABLE_LUA;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;HAVE_MENU;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;NDEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_OPENGL;HAVE_VULKAN;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_COMMAND;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;ENABLE_HLSL;%(PreprocessorDefinitions) $(SolutionDir)\..\..\gfx\include\dxsdk;$(SolutionDir)\..\..\gfx\include;$(SolutionDir)\..\..\libretro-common\include;$(SolutionDir)\..\..\deps;$(SolutionDir)\..\..\deps\glslang;$(SolutionDir)\..\..\deps\rcheevos\include;$(SolutionDir)\..\..\deps\SPIRV-Cross;%(AdditionalIncludeDirectories) OldStyle @@ -138,7 +138,7 @@ MaxSpeed true true - WIN32;WANT_GLSLANG;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_SPIRV_CROSS;RC_DISABLE_LUA;HAVE_MENU;HAVE_SLANG;HAVE_GLSLANG;HAVE_UPDATE_ASSETS;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;NDEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_OPENGL;HAVE_VULKAN;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;%(PreprocessorDefinitions) + WIN32;WANT_GLSLANG;HAVE_DYNAMIC;HAVE_DYLIB;HAVE_SPIRV_CROSS;RC_DISABLE_LUA;HAVE_MENU;HAVE_SLANG;HAVE_GLSLANG;HAVE_UPDATE_ASSETS;HAVE_XMB;HAVE_SHADERPIPELINE;HAVE_RGUI;HAVE_MATERIALUI;NDEBUG;_WINDOWS;HAVE_XAUDIO;HAVE_DSOUND;HAVE_DINPUT;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_OPENGL;HAVE_VULKAN;HAVE_GLSL;HAVE_THREADS;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_RJPEG;HAVE_RPNG;HAVE_ZLIB;WANT_ZLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_OVERLAY;HAVE_7ZIP;HAVE_LIBRETRODB;HAVE_STB_FONT;%(PreprocessorDefinitions) $(SolutionDir)\..\..\gfx\include\dxsdk;$(SolutionDir)\..\..\gfx\include;$(SolutionDir)\..\..\libretro-common\include;$(SolutionDir)\..\..\deps;$(SolutionDir)\..\..\deps\glslang;$(SolutionDir)\..\..\deps\rcheevos\include;$(SolutionDir)\..\..\deps\SPIRV-Cross;%(AdditionalIncludeDirectories) OldStyle @@ -168,4 +168,4 @@ - \ No newline at end of file + diff --git a/pkg/msvc/msvc-2015/RetroArch-msvc2015.vcxproj b/pkg/msvc/msvc-2015/RetroArch-msvc2015.vcxproj index e7cba6c2e2..7be9b56ada 100644 --- a/pkg/msvc/msvc-2015/RetroArch-msvc2015.vcxproj +++ b/pkg/msvc/msvc-2015/RetroArch-msvc2015.vcxproj @@ -190,7 +190,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\gfx\include\dxsdk;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -210,7 +210,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\gfx\include\dxsdk;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -231,7 +231,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\gfx\include\dxsdk;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -252,7 +252,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\gfx\include\dxsdk;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -275,7 +275,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\gfx\include\dxsdk;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -300,7 +300,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\gfx\include\dxsdk;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -326,7 +326,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\gfx\include\dxsdk;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -351,7 +351,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;HAVE_UPDATE_ASSETS;HAVE_SLANG;HAVE_GLSLANG;WANT_GLSLANG;HAVE_VULKAN;HAVE_SPIRV_CROSS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\gfx\include\dxsdk;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -385,4 +385,4 @@ - \ No newline at end of file + diff --git a/pkg/msvc/msvc-2017/RetroArch-msvc2017.vcxproj b/pkg/msvc/msvc-2017/RetroArch-msvc2017.vcxproj index 477ca5b610..162d564902 100644 --- a/pkg/msvc/msvc-2017/RetroArch-msvc2017.vcxproj +++ b/pkg/msvc/msvc-2017/RetroArch-msvc2017.vcxproj @@ -371,7 +371,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -391,7 +391,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -412,7 +412,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -433,7 +433,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -454,7 +454,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -474,7 +474,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -495,7 +495,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -516,7 +516,7 @@ Level3 Disabled - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_FBO;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreadedDebug CompileAsCpp @@ -539,7 +539,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -564,7 +564,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -590,7 +590,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -616,7 +616,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;__SSE__;__i686__;HAVE_OVERLAY;HAVE_MENU;HAVE_RGUI;HAVE_GL_SYNC;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -642,7 +642,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -667,7 +667,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -693,7 +693,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -719,7 +719,7 @@ MaxSpeed true true - WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT + WIN32;RARCH_INTERNAL;HAVE_CC_RESAMPLER;WANT_GLSLANG;HAVE_SLANG;HAVE_GLSLANG;HAVE_SPIRV_CROSS;HAVE_UPDATE_ASSETS;HAVE_D3D;HAVE_D3D9;HAVE_D3D10;HAVE_D3D11;HAVE_D3D12;HAVE_VULKAN;ENABLE_HLSL;RC_DISABLE_LUA;HAVE_CG;HAVE_GLSL;HAVE_CHEEVOS;HAVE_RUNAHEAD;HAVE_GRIFFIN;HAVE_LANGEXTRA;HAVE_FBO;HAVE_ZLIB;HAVE_QT;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;HAVE_XMB;HAVE_SHADERPIPELINE;WANT_ZLIB;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);HAVE_DINPUT;HAVE_XINPUT;HAVE_XAUDIO;HAVE_DSOUND;HAVE_OPENGL;HAVE_DYLIB;HAVE_NETWORKING;HAVE_NETWORK_CMD;HAVE_NETPLAYDISCOVERY;HAVE_COMMAND;HAVE_STDIN_CMD;HAVE_THREADS;HAVE_DYNAMIC;HAVE_RPNG;HAVE_RJPEG;HAVE_RBMP;HAVE_RTGA;HAVE_IMAGEVIEWER;WANT_ZLIB;_CRT_SECURE_NO_WARNINGS;__SSE__;__SSE2__;__x86_64__;HAVE_OVERLAY;HAVE_RGUI;HAVE_GL_SYNC;HAVE_MENU;HAVE_7ZIP;HAVE_MATERIALUI;HAVE_LIBRETRODB;HAVE_STB_FONT $(MSBuildProjectDirectory);$(MSBuildProjectDirectory)\..\..\..\;$(MSBuildProjectDirectory)\..\..\..\deps\rcheevos\include;$(CG_INC_PATH);$(MSBuildProjectDirectory)\..\..\..\deps\zlib;$(MSBuildProjectDirectory)\..\..\..\libretro-common\include;$(MSBuildProjectDirectory)\..\..\..\deps;$(MSBuildProjectDirectory)\..\..\..\deps\glslang;$(MSBuildProjectDirectory)\..\..\..\deps\SPIRV-Cross;$(MSBuildProjectDirectory)\..\..\..\deps\stb;$(MSBuildProjectDirectory)\..\..\..\gfx\include;%(AdditionalIncludeDirectories) MultiThreaded CompileAsCpp @@ -908,4 +908,4 @@ - \ No newline at end of file + diff --git a/qb/config.params.sh b/qb/config.params.sh index 659ae20ca0..1e097b8f0c 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -37,6 +37,7 @@ HAVE_DYLIB=auto # Dynamic loading support HAVE_NETWORKING=auto # Networking features (recommended) HAVE_NETWORKGAMEPAD=auto # Networked game pad (plus baked-in core) C89_NETWORKGAMEPAD=no +HAVE_NETPLAYDISCOVERY=yes # Add netplay discovery (room creation, etc.) HAVE_MINIUPNPC=auto # Mini UPnP client library (for NAT traversal) HAVE_BUILTINMINIUPNPC=yes # Bake in Mini UPnP client library (for NAT traversal) C89_BUILTINMINIUPNPC=no From 56a69b073f2bba38b0581ac097676b137011af2e Mon Sep 17 00:00:00 2001 From: altiereslima Date: Fri, 12 Oct 2018 14:15:02 -0300 Subject: [PATCH 032/304] Update intl/msg_hash_pt_br.h --- intl/msg_hash_pt_br.h | 234 +++++++++++++++++++++++++++++++++--------- 1 file changed, 187 insertions(+), 47 deletions(-) diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index ec0cb6b929..0861a1335d 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -1,3 +1,29 @@ +#ifdef HAVE_LAKKA_SWITCH +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SWITCH_GPU_PROFILE, + "Overclock da GPU" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SWITCH_GPU_PROFILE, + "Faz um Overclock ou underclock na CPU do Switch" + ) + MSG_HASH( + MENU_ENUM_LABEL_VALUE_SWITCH_BACKLIGHT_CONTROL, + "Brilho da tela" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SWITCH_BACKLIGHT_CONTROL, + "Aumentar ou diminuir o brilho da tela do Switch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SWITCH_CPU_PROFILE, + "Overclock da CPU" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SWITCH_CPU_PROFILE, + "Faz um Overclock na CPU do Switch" + ) +#endif MSG_HASH( MSG_COMPILER, "Compilador" @@ -8,7 +34,7 @@ MSG_HASH( ) MSG_HASH( MSG_NATIVE, - "Native") + "Nativo") MSG_HASH( MSG_DEVICE_DISCONNECTED_FROM_PORT, "Dispositivo desconectado da porta" @@ -1489,6 +1515,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_LANG_ARABIC, "Árabe" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_GREEK, + "Grego" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LEFT_ANALOG, "Analógico Esquerdo" @@ -2160,6 +2190,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RECORD_CONFIG, "Carregar Configuração de Gravação..." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STREAM_CONFIG, + "Configuração de Transmissão Personalizada" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RECORD_DRIVER, "Driver de Gravação" @@ -2876,6 +2910,46 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_TIMEDATE_ENABLE, "Exibir data e hora" ) + MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE, + "Estilo da data / hora" + ) + MSG_HASH( + MENU_ENUM_SUBLABEL_TIMEDATE_STYLE, + "Altera o estilo da data atual ou como a hora é mostrada dentro do menu." + ) + MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_YMD_HMS, + "YYYY-MM-DD HH:MM:SS" + ) + MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_YMD_HM, + "YYYY-MM-DD HH:MM" + ) + MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_MDYYYY, + "MM-DD-YYYY HH:MM" + ) + MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_HMS, + "HH:MM:SS" + ) + MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_HM, + "HH:MM" + ) + MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_DM_HM, + "DD/MM HH:MM" + ) + MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_MD_HM, + "MM/DD HH:MM" + ) + MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_AM_PM, + "HH:MM:SS (AM/PM)" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TITLE_COLOR, "Cor do título do menu" @@ -4542,7 +4616,8 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE, - "Taxa de atualização vertical da sua tela. Utilizado para calcular uma taxa de saída de áudio adequada. OBS: Isto será ignorado se a função 'Vídeo Paralelizado' estiver habilitada." + "Taxa de atualização vertical da sua tela. Utilizado para calcular uma taxa de saída de áudio adequada.\n" + "OBS: Isto será ignorado se a função 'Vídeo Paralelizado' estiver habilitada." ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_ENABLE, @@ -4766,7 +4841,8 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FILTER, - "Aplica um filtro de vídeo processado pela CPU. OBS: Pode vir a um alto custo de desempenho. Alguns filtros de vídeo podem funcionar apenas para núcleos que usam cores de 32 bits ou 16 bits." + "Aplica um filtro de vídeo processado pela CPU.\n" + "OBS: Pode vir a um alto custo de desempenho. Alguns filtros de vídeo podem funcionar apenas para núcleos que usam cores de 32 bits ou 16 bits." ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEEVOS_USERNAME, @@ -4920,6 +4996,18 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CHEAT_APPLY_AFTER_LOAD, "Aplicar trapaças automaticamente quando o jogo for carregado." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_REPEAT_COUNT, + "O número de vezes que a trapaça será aplicada. Use com as outras duas opções de iteração para afetar grandes áreas da memória." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_REPEAT_ADD_TO_ADDRESS, + "Após cada 'Número de Iterações', o Endereço de Memória será aumentado pelo número de vezes do 'Tamanho da Pesquisa da Memória'." +) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_REPEAT_ADD_TO_VALUE, + "Após cada "Número de Iterações", o Valor será aumentado por esse valor." + ) MSG_HASH( MENU_ENUM_SUBLABEL_REWIND_GRANULARITY, "Ao definir um número de quadros para o rebobinamento, você pode retroceder vários quadros de uma só vez, aumentando a velocidade da função." @@ -5022,7 +5110,8 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEAT_BIG_ENDIAN, - "Big endian : 258 = 0x0102,\nLittle endian : 258 = 0x0201" + "Big endian : 258 = 0x0102,\n" + "Little endian : 258 = 0x0201" ) MSG_HASH( MENU_ENUM_SUBLABEL_LIBRETRO_LOG_LEVEL, @@ -5570,7 +5659,8 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_DPI_OVERRIDE_VALUE, - "Define o tamanho do dimensionamento personalizado aqui. OBS: Você deve habilitar a função 'Redefinição de DPI' para que este dimensionamento tenha efeito." + "Define o tamanho do dimensionamento personalizado aqui.\n" + "OBS: Você deve habilitar a função 'Redefinição de DPI' para que este dimensionamento tenha efeito." ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_ASSETS_DIRECTORY, @@ -5922,7 +6012,8 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME, - "Permitir renomear itens" ) + "Permitir renomear itens" + ) MSG_HASH( MENU_ENUM_SUBLABEL_RENAME_ENTRY, "Renomear o título do item." @@ -6257,7 +6348,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_SUPER, - "Switch among native and ultrawide super resolutions." + "Alterna entre resoluções nativas e ultrawide." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_SUPER, @@ -6498,6 +6589,7 @@ MSG_HASH( "
  • reiniciar o RetroArch caso alguma das situações acima tenha sido feita
  • \n" "E finalmente, o conteúdo deve corresponder as bases de dados existentes aqui. Se ainda não estiver funcionando, considere enviar um relatório de erro." ) +#endif MSG_HASH( MENU_ENUM_LABEL_VALUE_SHOW_WIMP, "Exibir Menu Desktop" @@ -6506,7 +6598,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SHOW_WIMP, "Abre o menu desktop se estiver fechado." ) -#endif MSG_HASH( MENU_ENUM_LABEL_VALUE_QT_DONT_SHOW_AGAIN, "Não mostrar isto novamente" @@ -6688,12 +6779,13 @@ MSG_HASH( "Pausado" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISCORD_ALLOW, + MENU_ENUM_LABEL_VALUE_DISCORD_ALLOW, "Habilitar o Discord" - ) + ) MSG_HASH( MENU_ENUM_SUBLABEL_DISCORD_ALLOW, - "Habilitar ou desabilitar o suporte ao Discord. Não funcionará com a versão do navegador, apenas o cliente nativo de desktop." + "Habilitar ou desabilitar o suporte ao Discord.\n" + "Não funcionará com a versão do navegador, apenas o cliente nativo de desktop." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MIDI_INPUT, @@ -6823,6 +6915,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_SECONDARY_DURATION, "Duração (ms) da Vibração Secundária" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_COUNT, + "Número de Iterações" +) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_ADD_TO_VALUE, + "Aumento de Valor em Cada Iteração" +) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_ADD_TO_ADDRESS, + "Aumento de Endereço em Cada Iteração" +) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_AFTER, "Adicionar Nova Trapaça Depois Desta" @@ -6919,6 +7023,14 @@ MSG_HASH( MENU_ENUM_LABEL_RUMBLE_TYPE_GT_VALUE, "Maior Ao Valor da Vibração" ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_INCREASE_BY_VALUE, + "Aumenta o Valor da Vibração" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_DECREASE_BY_VALUE, + "Diminui o Valor da Vibração" + ) MSG_HASH( MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_1, "1-bit, valor máx. = 0x01" @@ -7235,6 +7347,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_QT_DELETE_PLAYLIST, "Excluir Lista de Reprodução" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_RENAME_PLAYLIST, + "Renomear Lista de Reprodução" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QT_CONFIRM_DELETE_PLAYLIST, "Tem certeza de que deseja excluir a lista de reprodução \"%1\"?" @@ -7457,87 +7573,103 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_ADAPTIVE_VSYNC, - "Adaptive Vsync" + "Vsync Adaptativo" ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_ADAPTIVE_VSYNC, - "V-Sync is enabled until performance falls below the target refresh rate. Can minimize stuttering when performance falls below realtime, and can be more energy efficient." + "O V-Sync é ativado até o desempenho ficar abaixo da taxa de atualização desejada. Pode minimizar as travadas quando o desempenho cai abaixo do tempo real e pode ser mais eficiente em termos energéticos." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCHRES_SETTINGS, - "CRT SwitchRes" + "SwitchRes CRT" ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCHRES_SETTINGS, - "Output native, low-resolution signals for use with CRT displays." + "Saída nativa, sinais de baixa resolução para uso com monitores CRT." ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_X_AXIS_CENTERING, - "Cycle through these options if the image is not centered properly on the display." + "Alterne entre essas opções se a imagem não estiver centralizada corretamente no visor." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCH_X_AXIS_CENTERING, - "X-Axis Centering" + "Centralização do Eixo-X" ) MSG_HASH( - MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, - "Use a custom refresh rate specified in the config file if needed.") + MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, + "Use uma taxa de atualização personalizada especificada no arquivo de configuração, se necessário." + ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, - "Use Custom Refresh Rate") + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, + "Usar Taxa de Atualização Personalizada" + ) MSG_HASH( - MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, - "Select the output port connected to the CRT display.") + MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, + "Selecione a porta de saída conectada ao monitor CRT." + ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, - "Output Display ID") + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, + "ID da Saída de Exibição" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_RECORDING, - "Start Recording" + "Iniciar Gravação" ) MSG_HASH( MENU_ENUM_SUBLABEL_QUICK_MENU_START_RECORDING, - "Starts recording." + "Inicia a gravação." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_STOP_RECORDING, - "Stop Recording" + "Parar Gravação" ) MSG_HASH( MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_RECORDING, - "Stops recording." + "Para a gravação." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_STREAMING, - "Start Streaming" + "Iniciar Transmissão" ) MSG_HASH( MENU_ENUM_SUBLABEL_QUICK_MENU_START_STREAMING, - "Starts streaming." + "Inicia a transmissão." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_STOP_STREAMING, - "Stop Streaming" + "Parar Transmissão" ) MSG_HASH( MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_STREAMING, - "Stops streaming." + "Para a transmissão." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_RECORDING_TOGGLE, + "Alternar gravação" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_STREAMING_TOGGLE, + "Alternar transmissão" + ) +MSG_HASH( + MSG_CHEEVOS_HARDCORE_MODE_DISABLED, + "Um estado do jogo foi carregado, Conquistas no Modo Hardcore foram desativadas para a sessão atual. Reinicie para ativar o modo hardcore." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_RECORD_QUALITY, - "Record Quality" + "Qualidade da Gravação" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_STREAM_QUALITY, - "Stream Quality" + "Qualidade da Transmissão" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STREAMING_URL, - "Streaming URL" + "URL da Transmissão" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_UDP_STREAM_PORT, - "UDP Stream Port" + "Porta da Transmissão UDP" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ACCOUNTS_TWITCH, @@ -7547,23 +7679,31 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_ACCOUNTS_YOUTUBE, "YouTube" ) -MSG_HASH(MENU_ENUM_LABEL_VALUE_TWITCH_STREAM_KEY, - "Twitch Stream Key") -MSG_HASH(MENU_ENUM_LABEL_VALUE_YOUTUBE_STREAM_KEY, - "YouTube Stream Key") -MSG_HASH(MENU_ENUM_LABEL_VALUE_STREAMING_MODE, - "Streaming Mode") -MSG_HASH(MENU_ENUM_LABEL_VALUE_STREAMING_TITLE, - "Title of Stream") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TWITCH_STREAM_KEY, + "Chave da Transmissão do Twitch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_YOUTUBE_STREAM_KEY, + "Chave da Transmissão do YouTube" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STREAMING_MODE, + "Modo de Transmissão" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STREAMING_TITLE, + "Título da Transmissão" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_SPLIT_JOYCON, "Split Joy-Con" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG, - "Reset To Defaults" + "Restaurar aos Padrões" ) MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, - "Reset the current configuration to default values." + "Restaura a configuração atual para os valores padrão." ) From 4a67dd8d022dc58d44446eecedb7cf00d9ecc3a9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 12 Oct 2018 21:31:59 +0200 Subject: [PATCH 033/304] Buildfix --- intl/msg_hash_pt_br.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index 0861a1335d..cf21f460b4 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -5006,7 +5006,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEAT_REPEAT_ADD_TO_VALUE, - "Após cada "Número de Iterações", o Valor será aumentado por esse valor." + "Após cada Número de Iterações, o Valor será aumentado por esse valor." ) MSG_HASH( MENU_ENUM_SUBLABEL_REWIND_GRANULARITY, From 84948c9b8b02ac4878bc495348aeab3225e7d0ad Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 12 Oct 2018 23:12:06 +0200 Subject: [PATCH 034/304] Backport orbea commits - don't unload content if it was never loaded - don't deinit core when they are not inited - sorry for the long delays --- core_impl.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/core_impl.c b/core_impl.c index eb4b2fffd0..a8a5acb949 100644 --- a/core_impl.c +++ b/core_impl.c @@ -396,7 +396,9 @@ bool core_unload(void) { video_driver_set_cached_frame_ptr(NULL); - current_core.retro_deinit(); + if (current_core.inited) + current_core.retro_deinit(); + return true; } @@ -407,9 +409,11 @@ bool core_unload_game(void) video_driver_set_cached_frame_ptr(NULL); - current_core.retro_unload_game(); - - current_core.game_loaded = false; + if (current_core.game_loaded) + { + current_core.retro_unload_game(); + current_core.game_loaded = false; + } audio_driver_stop(); From dbe35078ddf9ebeaaa178b6ace8313189014d172 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sat, 13 Oct 2018 22:07:10 +0200 Subject: [PATCH 035/304] (Mojave) have to bump up deployment target to OSX 10.6 --- pkg/apple/RetroArch.xcodeproj/project.pbxproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/apple/RetroArch.xcodeproj/project.pbxproj b/pkg/apple/RetroArch.xcodeproj/project.pbxproj index a6cb029d2c..66253f4f41 100644 --- a/pkg/apple/RetroArch.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch.xcodeproj/project.pbxproj @@ -385,7 +385,7 @@ ); INFOPLIST_FILE = OSX/Info.plist; INSTALL_PATH = "$(HOME)/Applications"; - MACOSX_DEPLOYMENT_TARGET = 10.5; + MACOSX_DEPLOYMENT_TARGET = 10.6; OTHER_CFLAGS = ( "$(inherited)", "-DHAVE_CG", @@ -419,7 +419,7 @@ ); INFOPLIST_FILE = OSX/Info.plist; INSTALL_PATH = "$(HOME)/Applications"; - MACOSX_DEPLOYMENT_TARGET = 10.5; + MACOSX_DEPLOYMENT_TARGET = 10.6; OTHER_CFLAGS = ( "$(inherited)", "-DHAVE_CG", @@ -455,7 +455,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/OSX/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; - MACOSX_DEPLOYMENT_TARGET = 10.5; + MACOSX_DEPLOYMENT_TARGET = 10.6; PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = YES; PRODUCT_NAME = RetroArch; }; @@ -485,7 +485,7 @@ ); INFOPLIST_FILE = "$(SRCROOT)/OSX/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; - MACOSX_DEPLOYMENT_TARGET = 10.5; + MACOSX_DEPLOYMENT_TARGET = 10.6; PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = YES; PRODUCT_NAME = RetroArch; }; @@ -510,7 +510,7 @@ "-DHAVE_LROUND", "-DFLAC__HAS_OGG=0", "-DHAVE_CHD", - "-DHAVE_STB_VORBIS", + "-DHAVE_STB_VORBIS", "-DHAVE_MINIUPNPC", "-DHAVE_BUILTINMINIUPNPC", "-DHAVE_UPDATE_ASSETS", @@ -574,7 +574,7 @@ "-DHAVE_LROUND", "-DFLAC__HAS_OGG=0", "-DHAVE_CHD", - "-DHAVE_STB_VORBIS", + "-DHAVE_STB_VORBIS", "-DHAVE_MINIUPNPC", "-DHAVE_BUILTINMINIUPNPC", "-DHAVE_UPDATE_ASSETS", From 8c9e6a7c4e40089e606f45a5f99d3a5f6c24650d Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 13 Oct 2018 16:06:43 -0500 Subject: [PATCH 036/304] fix these two --- menu/cbs/menu_cbs_deferred_push.c | 3 +++ menu/cbs/menu_cbs_ok.c | 33 +++++++++++++++++++------------ msg_hash.h | 1 + record/drivers/record_ffmpeg.c | 1 + 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index c7258c52cf..656c995a8c 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -1341,6 +1341,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label( case MENU_LABEL_RECORD_CONFIG: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_record_configfile); break; + case MENU_LABEL_STREAM_CONFIG: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_stream_configfile); + break; case MENU_LABEL_NETPLAY: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_netplay); break; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index d6fe477c11..5d4c54541a 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -477,12 +477,14 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; break; case ACTION_OK_DL_STREAM_CONFIGFILE: - filebrowser_clear_type(); - info.type = type; - info.directory_ptr = idx; - info_path = settings->paths.path_stream_config; - info_label = label; - dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; + { + global_t *global = global_get_ptr(); + info.type = type; + info.directory_ptr = idx; + info_path = global->record.config_dir; + info_label = label; + dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; + } break; case ACTION_OK_DL_RECORD_CONFIGFILE: filebrowser_clear_type(); @@ -1302,20 +1304,22 @@ static int generic_action_ok(const char *path, break; case ACTION_OK_LOAD_STREAM_CONFIGFILE: { - settings_t *settings = config_get_ptr(); + settings_t *settings = config_get_ptr(); flush_char = msg_hash_to_str(flush_id); - strlcpy(settings->paths.path_stream_config, action_path, - sizeof(settings->paths.path_stream_config)); + + if (settings) + strlcpy(settings->paths.path_stream_config, action_path, + sizeof(settings->paths.path_stream_config)); } break; case ACTION_OK_LOAD_RECORD_CONFIGFILE: { - global_t *global = global_get_ptr(); + settings_t *settings = config_get_ptr(); flush_char = msg_hash_to_str(flush_id); - if (global) - strlcpy(global->record.config, action_path, - sizeof(global->record.config)); + if (settings) + strlcpy(settings->paths.path_record_config, action_path, + sizeof(settings->paths.path_record_config)); } break; case ACTION_OK_LOAD_REMAPPING_FILE: @@ -5288,6 +5292,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_RECORD_CONFIG: BIND_ACTION_OK(cbs, action_ok_record_configfile); break; + case MENU_LABEL_STREAM_CONFIG: + BIND_ACTION_OK(cbs, action_ok_stream_configfile); + break; #ifdef HAVE_NETWORKING case MENU_LABEL_UPDATE_LAKKA: BIND_ACTION_OK(cbs, action_ok_lakka_list); diff --git a/msg_hash.h b/msg_hash.h index 855e2609bb..49a6ae1d41 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -2254,6 +2254,7 @@ enum msg_hash_enums /* Record settings */ #define MENU_LABEL_RECORD_CONFIG 0x11c3daf9U +#define MENU_LABEL_STREAM_CONFIG 0x79774b86U /* Cheat options */ diff --git a/record/drivers/record_ffmpeg.c b/record/drivers/record_ffmpeg.c index a4c332ac45..b181492bde 100644 --- a/record/drivers/record_ffmpeg.c +++ b/record/drivers/record_ffmpeg.c @@ -944,6 +944,7 @@ static void *ffmpeg_new(const struct record_params *params) if (params->preset == RECORD_CONFIG_TYPE_RECORDING_CUSTOM || params->preset == RECORD_CONFIG_TYPE_STREAMING_CUSTOM) { + RARCH_LOG("config: %s %s\n", &handle->config, params->config); if (!ffmpeg_init_config(&handle->config, params->config)) goto error; } From 32c346a3e71a3d1af546b9eee754df5f28892fd3 Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 13 Oct 2018 18:17:17 -0500 Subject: [PATCH 037/304] make discord app id configurable --- config.def.h | 2 ++ configuration.c | 5 ++++- configuration.h | 2 ++ discord/discord.c | 5 +++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/config.def.h b/config.def.h index e9cadb4165..a656c49fe6 100644 --- a/config.def.h +++ b/config.def.h @@ -811,4 +811,6 @@ static char buildbot_server_url[] = ""; static char buildbot_assets_server_url[] = "http://buildbot.libretro.com/assets/"; +static char default_discord_app_id[] = "475456035851599874"; + #endif diff --git a/configuration.c b/configuration.c index 813ee6ca0d..817b792cae 100644 --- a/configuration.c +++ b/configuration.c @@ -1111,7 +1111,7 @@ static struct config_array_setting *populate_settings_array(settings_t *settings SETTING_ARRAY("midi_input", settings->arrays.midi_input, true, midi_input, true); SETTING_ARRAY("midi_output", settings->arrays.midi_output, true, midi_output, true); SETTING_ARRAY("youtube_stream_key", settings->arrays.youtube_stream_key, true, NULL, true); - SETTING_ARRAY("twitch_stream_key", settings->arrays.twitch_stream_key, true, NULL, true); + SETTING_ARRAY("discord_app_id", settings->arrays.discord_app_id, true, default_discord_app_id, true); *size = count; return tmp; @@ -1814,6 +1814,9 @@ void config_set_defaults(void) *settings->paths.path_menu_xmb_font = '\0'; #endif + strlcpy(settings->arrays.discord_app_id, + default_discord_app_id, sizeof(settings->arrays.discord_app_id)); + #ifdef HAVE_MATERIALUI if (g_defaults.menu.materialui.menu_color_theme_enable) settings->uints.menu_materialui_color_theme = g_defaults.menu.materialui.menu_color_theme; diff --git a/configuration.h b/configuration.h index 28f599ff87..ec4dc7dce4 100644 --- a/configuration.h +++ b/configuration.h @@ -482,6 +482,8 @@ typedef struct settings char youtube_stream_key[PATH_MAX_LENGTH]; char twitch_stream_key[PATH_MAX_LENGTH]; + + char discord_app_id[PATH_MAX_LENGTH]; } arrays; struct diff --git a/discord/discord.c b/discord/discord.c index 0a33824fa5..572f56deb1 100644 --- a/discord/discord.c +++ b/discord/discord.c @@ -18,6 +18,7 @@ #include "discord.h" #include "../retroarch.h" +#include "../configuration.h" #include "../core.h" #include "../core_info.h" #include "../paths.h" @@ -35,7 +36,6 @@ #include "../cheevos/cheevos.h" #endif -static const char* APPLICATION_ID = "475456035851599874"; static int FrustrationLevel = 0; static int64_t start_time = 0; @@ -211,6 +211,7 @@ void discord_update(enum discord_presence presence) void discord_init(void) { + settings_t *settings = config_get_ptr(); DiscordEventHandlers handlers; RARCH_LOG("[Discord] initializing ..\n"); @@ -224,7 +225,7 @@ void discord_init(void) handlers.spectateGame = handle_discord_spectate; handlers.joinRequest = handle_discord_join_request; - Discord_Initialize(APPLICATION_ID, &handlers, 1, NULL); + Discord_Initialize(settings->arrays.discord_app_id, &handlers, 1, NULL); discord_ready = true; } From bf7c3f17b3b49be8a804fbde8e5d3e85ee75d367 Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 13 Oct 2018 21:09:19 -0500 Subject: [PATCH 038/304] start registering the application so it can be started from discord --- deps/discord-rpc/src/discord_register_win.cpp | 10 +++++----- discord/discord.c | 7 ++++++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/deps/discord-rpc/src/discord_register_win.cpp b/deps/discord-rpc/src/discord_register_win.cpp index e441318dd5..60b1db3e08 100644 --- a/deps/discord-rpc/src/discord_register_win.cpp +++ b/deps/discord-rpc/src/discord_register_win.cpp @@ -77,22 +77,22 @@ static void Discord_RegisterW(const wchar_t* applicationId, const wchar_t* comma wchar_t openCommand[1024]; if (command && command[0]) { - StringCbPrintfW(openCommand, sizeof(openCommand), L"%s", command); + StringCbPrintfW(openCommand, sizeof(openCommand), L"%S", command); } else { // StringCbCopyW(openCommand, sizeof(openCommand), exeFilePath); - StringCbPrintfW(openCommand, sizeof(openCommand), L"%s", exeFilePath); + StringCbPrintfW(openCommand, sizeof(openCommand), L"%S", exeFilePath); } wchar_t protocolName[64]; - StringCbPrintfW(protocolName, sizeof(protocolName), L"discord-%s", applicationId); + StringCbPrintfW(protocolName, sizeof(protocolName), L"discord-%S", applicationId); wchar_t protocolDescription[128]; StringCbPrintfW( - protocolDescription, sizeof(protocolDescription), L"URL:Run game %s protocol", applicationId); + protocolDescription, sizeof(protocolDescription), L"URL:Run game %S protocol", applicationId); wchar_t urlProtocol = 0; wchar_t keyName[256]; - StringCbPrintfW(keyName, sizeof(keyName), L"Software\\Classes\\%s", protocolName); + StringCbPrintfW(keyName, sizeof(keyName), L"Software\\Classes\\%S", protocolName); HKEY key; auto status = RegCreateKeyExW(HKEY_CURRENT_USER, keyName, 0, nullptr, 0, KEY_WRITE, nullptr, &key, nullptr); diff --git a/discord/discord.c b/discord/discord.c index 572f56deb1..0efe85e036 100644 --- a/discord/discord.c +++ b/discord/discord.c @@ -16,6 +16,7 @@ #include #include "discord.h" +#include "discord_register.h" #include "../retroarch.h" #include "../configuration.h" @@ -225,7 +226,11 @@ void discord_init(void) handlers.spectateGame = handle_discord_spectate; handlers.joinRequest = handle_discord_join_request; - Discord_Initialize(settings->arrays.discord_app_id, &handlers, 1, NULL); + /* To-Do: Add the arguments RetroArch was started with to the register URI*/ + const char command[256] = "retroarch"; + + Discord_Initialize(settings->arrays.discord_app_id, &handlers, 0, NULL); + Discord_Register(settings->arrays.discord_app_id, NULL); discord_ready = true; } From 4d6dfd163d35ef07d5e5120b2bb994b481db2d9d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 14 Oct 2018 06:00:26 +0200 Subject: [PATCH 039/304] Remove unused function --- gfx/video_driver.c | 6 ------ gfx/video_driver.h | 2 -- 2 files changed, 8 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index dd7168415e..768657a42c 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -460,12 +460,6 @@ static bool set_resize_null(void *a, unsigned b, unsigned c) return false; } -void video_driver_set_resize(unsigned width, unsigned height) -{ - if (current_video_context.set_resize) - current_video_context.set_resize(video_context_data, width, height); -} - /** * video_driver_find_handle: * @idx : index of driver to get handle to. diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 19f1767460..97c4dd63b8 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -1126,8 +1126,6 @@ void video_driver_set_threaded(bool val); void video_driver_get_status(uint64_t *frame_count, bool * is_alive, bool *is_focused); -void video_driver_set_resize(unsigned width, unsigned height); - /** * video_context_driver_init_first: * @data : Input data. From 24e18fcce6c68f9105dd7b2fa4d385a21c33a175 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 14 Oct 2018 07:59:43 +0200 Subject: [PATCH 040/304] Simplify video_context_driver_init_first --- gfx/video_driver.c | 103 ++++++++++++++++++--------------------------- 1 file changed, 41 insertions(+), 62 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 768657a42c..28055fe7d4 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -3009,74 +3009,30 @@ static const gfx_ctx_driver_t *video_context_driver_init( const gfx_ctx_driver_t *ctx, const char *ident, enum gfx_ctx_api api, unsigned major, - unsigned minor, bool hw_render_ctx) + unsigned minor, bool hw_render_ctx, + void **ctx_data) { - if (ctx->bind_api(data, api, major, minor)) + video_frame_info_t video_info; + + if (!ctx->bind_api(data, api, major, minor)) { - video_frame_info_t video_info; - void *ctx_data = NULL; + RARCH_WARN("Failed to bind API (#%u, version %u.%u)" + " on context driver \"%s\".\n", + (unsigned)api, major, minor, ctx->ident); - video_driver_build_info(&video_info); - - ctx_data = ctx->init(&video_info, data); - - if (!ctx_data) - return NULL; - - if (ctx->bind_hw_render) - ctx->bind_hw_render(ctx_data, - video_info.shared_context && hw_render_ctx); - - video_context_data = ctx_data; - - return ctx; + return NULL; } -#ifndef _WIN32 - RARCH_WARN("Failed to bind API (#%u, version %u.%u)" - " on context driver \"%s\".\n", - (unsigned)api, major, minor, ctx->ident); -#endif + video_driver_build_info(&video_info); - return NULL; -} + if (!(*ctx_data = ctx->init(&video_info, data))) + return NULL; -/** - * video_context_driver_find_driver: - * @data : Input data. - * @ident : Identifier of graphics context driver to find. - * @api : API of higher-level graphics API. - * @major : Major version number of higher-level graphics API. - * @minor : Minor version number of higher-level graphics API. - * @hw_render_ctx : Request a graphics context driver capable of - * hardware rendering? - * - * Finds graphics context driver and initializes. - * - * Returns: graphics context driver if found, otherwise NULL. - **/ -static const gfx_ctx_driver_t *video_context_driver_find_driver(void *data, - const char *ident, - enum gfx_ctx_api api, unsigned major, - unsigned minor, bool hw_render_ctx) -{ - int i = find_video_context_driver_index(ident); + if (ctx->bind_hw_render) + ctx->bind_hw_render(*ctx_data, + video_info.shared_context && hw_render_ctx); - if (i >= 0) - return video_context_driver_init(data, gfx_ctx_drivers[i], ident, - api, major, minor, hw_render_ctx); - - for (i = 0; gfx_ctx_drivers[i]; i++) - { - const gfx_ctx_driver_t *ctx = - video_context_driver_init(data, gfx_ctx_drivers[i], ident, - api, major, minor, hw_render_ctx); - - if (ctx) - return ctx; - } - - return NULL; + return ctx; } /** @@ -3097,8 +3053,31 @@ const gfx_ctx_driver_t *video_context_driver_init_first(void *data, const char *ident, enum gfx_ctx_api api, unsigned major, unsigned minor, bool hw_render_ctx) { - return video_context_driver_find_driver(data, ident, api, - major, minor, hw_render_ctx); + void *ctx_data = NULL; + int i = find_video_context_driver_index(ident); + + if (i >= 0) + { + const gfx_ctx_driver_t *ctx = video_context_driver_init(data, gfx_ctx_drivers[i], ident, + api, major, minor, hw_render_ctx, &ctx_data); + if (ctx) + video_context_data = ctx_data; + } + + for (i = 0; gfx_ctx_drivers[i]; i++) + { + const gfx_ctx_driver_t *ctx = + video_context_driver_init(data, gfx_ctx_drivers[i], ident, + api, major, minor, hw_render_ctx, &ctx_data); + + if (ctx) + { + video_context_data = ctx_data; + return ctx; + } + } + + return NULL; } bool video_context_driver_check_window(gfx_ctx_size_t *size_data) From 2bca74bbaa6e5eecc9a32b8f0d08c5804c118e65 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 14 Oct 2018 08:00:42 +0200 Subject: [PATCH 041/304] Fix this --- gfx/video_driver.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 28055fe7d4..4a126070a9 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -3061,7 +3061,10 @@ const gfx_ctx_driver_t *video_context_driver_init_first(void *data, const gfx_ctx_driver_t *ctx = video_context_driver_init(data, gfx_ctx_drivers[i], ident, api, major, minor, hw_render_ctx, &ctx_data); if (ctx) + { video_context_data = ctx_data; + return ctx; + } } for (i = 0; gfx_ctx_drivers[i]; i++) From e661cf3cfde95f66aa3289affdde43bd20077dfa Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 14 Oct 2018 08:13:05 +0200 Subject: [PATCH 042/304] Rewrite video_context_driver_init_first --- gfx/common/gdi_common.h | 1 + gfx/common/gl_common.h | 1 + gfx/common/sixel_common.h | 1 + gfx/common/vulkan_common.h | 1 + gfx/drivers/gdi_gfx.c | 6 +++++- gfx/drivers/gl.c | 11 +++++++++-- gfx/drivers/sixel_gfx.c | 8 ++++++-- gfx/drivers/vg.c | 6 +++++- gfx/drivers/vulkan.c | 19 ++++++++++++------- gfx/video_driver.c | 11 +++++------ gfx/video_driver.h | 6 ++++-- 11 files changed, 50 insertions(+), 21 deletions(-) diff --git a/gfx/common/gdi_common.h b/gfx/common/gdi_common.h index ddb33b3fb3..4bac582f3f 100644 --- a/gfx/common/gdi_common.h +++ b/gfx/common/gdi_common.h @@ -34,6 +34,7 @@ typedef struct gdi unsigned video_height; unsigned screen_width; unsigned screen_height; + void *ctx_data; } gdi_t; typedef struct gdi_texture diff --git a/gfx/common/gl_common.h b/gfx/common/gl_common.h index 0f77410cd5..4488287813 100644 --- a/gfx/common/gl_common.h +++ b/gfx/common/gl_common.h @@ -317,6 +317,7 @@ struct gl const gl_renderchain_driver_t *renderchain_driver; void *renderchain_data; + void *ctx_data; }; static INLINE void gl_bind_texture(GLuint id, GLint wrap_mode, GLint mag_filter, diff --git a/gfx/common/sixel_common.h b/gfx/common/sixel_common.h index 5d6e40ced1..d0bda4cef9 100644 --- a/gfx/common/sixel_common.h +++ b/gfx/common/sixel_common.h @@ -29,6 +29,7 @@ typedef struct sixel unsigned video_height; unsigned screen_width; unsigned screen_height; + void *ctx_data; } sixel_t; #endif diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index e4e3a50570..524f69336d 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -332,6 +332,7 @@ typedef struct vk vulkan_context_t *context; video_info_t video; + void *ctx_data; VkFormat tex_fmt; math_matrix_4x4 mvp, mvp_no_rot; diff --git a/gfx/drivers/gdi_gfx.c b/gfx/drivers/gdi_gfx.c index 6b820c1e18..b560f52d07 100644 --- a/gfx/drivers/gdi_gfx.c +++ b/gfx/drivers/gdi_gfx.c @@ -82,6 +82,7 @@ static void *gdi_gfx_init(const video_info_t *video, unsigned full_x, full_y; gfx_ctx_input_t inp; gfx_ctx_mode_t mode; + void *ctx_data = NULL; const gfx_ctx_driver_t *ctx_driver = NULL; unsigned win_width = 0, win_height = 0; unsigned temp_width = 0, temp_height = 0; @@ -106,10 +107,13 @@ static void *gdi_gfx_init(const video_info_t *video, ctx_driver = video_context_driver_init_first(gdi, settings->arrays.video_context_driver, - GFX_CTX_GDI_API, 1, 0, false); + GFX_CTX_GDI_API, 1, 0, false, &ctx_data); if (!ctx_driver) goto error; + if (ctx_data) + gdi->ctx_data = ctx_data; + video_context_driver_set((const gfx_ctx_driver_t*)ctx_driver); RARCH_LOG("[GDI]: Found GDI context: %s\n", ctx_driver->ident); diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 0111500ad2..9ba79b00e4 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -1501,6 +1501,8 @@ static bool gl_init_pbo_readback(gl_t *gl) static const gfx_ctx_driver_t *gl_get_context(gl_t *gl) { enum gfx_ctx_api api; + const gfx_ctx_driver_t *gfx_ctx = NULL; + void *ctx_data = NULL; const char *api_name = NULL; settings_t *settings = config_get_ptr(); struct retro_hw_render_callback *hwr = video_driver_get_hw_context(); @@ -1533,9 +1535,14 @@ static const gfx_ctx_driver_t *gl_get_context(gl_t *gl) && (hwr->context_type != RETRO_HW_CONTEXT_NONE)) gl_shared_context_use = true; - return video_context_driver_init_first(gl, + gfx_ctx = video_context_driver_init_first(gl, settings->arrays.video_context_driver, - api, major, minor, gl_shared_context_use); + api, major, minor, gl_shared_context_use, &ctx_data); + + if (ctx_data) + gl->ctx_data = ctx_data; + + return gfx_ctx; } #ifdef GL_DEBUG diff --git a/gfx/drivers/sixel_gfx.c b/gfx/drivers/sixel_gfx.c index 4777587688..20676cc755 100644 --- a/gfx/drivers/sixel_gfx.c +++ b/gfx/drivers/sixel_gfx.c @@ -188,9 +188,10 @@ static void scroll_on_demand(int pixelheight) static void *sixel_gfx_init(const video_info_t *video, const input_driver_t **input, void **input_data) { + gfx_ctx_input_t inp; + void *ctx_data = NULL; settings_t *settings = config_get_ptr(); sixel_t *sixel = (sixel_t*)calloc(1, sizeof(*sixel)); - gfx_ctx_input_t inp; const gfx_ctx_driver_t *ctx_driver = NULL; const char *scale_str = NULL; @@ -218,11 +219,14 @@ static void *sixel_gfx_init(const video_info_t *video, ctx_driver = video_context_driver_init_first(sixel, settings->arrays.video_context_driver, - GFX_CTX_SIXEL_API, 1, 0, false); + GFX_CTX_SIXEL_API, 1, 0, false, &ctx_data); if (!ctx_driver) goto error; + if (ctx_data) + sixel->ctx_data = ctx_data; + video_context_driver_set((const gfx_ctx_driver_t*)ctx_driver); RARCH_LOG("[SIXEL]: Found SIXEL context: %s\n", ctx_driver->ident); diff --git a/gfx/drivers/vg.c b/gfx/drivers/vg.c index 7f9c383d3e..f830e89117 100644 --- a/gfx/drivers/vg.c +++ b/gfx/drivers/vg.c @@ -102,15 +102,19 @@ static void *vg_init(const video_info_t *video, int interval = 0; unsigned temp_width = 0; unsigned temp_height = 0; + void *ctx_data = NULL; settings_t *settings = config_get_ptr(); vg_t *vg = (vg_t*)calloc(1, sizeof(vg_t)); const gfx_ctx_driver_t *ctx = video_context_driver_init_first( vg, settings->arrays.video_context_driver, - GFX_CTX_OPENVG_API, 0, 0, false); + GFX_CTX_OPENVG_API, 0, 0, false, &ctx_data); if (!vg || !ctx) goto error; + if (ctx_data) + vg->ctx_data = ctx_data; + video_context_driver_set((void*)ctx); video_context_driver_get_video_size(&mode); diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index cec0089daa..abf12506fb 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -61,14 +61,19 @@ static void vulkan_viewport_info(void *data, struct video_viewport *vp); static const gfx_ctx_driver_t *vulkan_get_context(vk_t *vk) { - unsigned major = 1; - unsigned minor = 0; - settings_t *settings = config_get_ptr(); - enum gfx_ctx_api api = GFX_CTX_VULKAN_API; - - return video_context_driver_init_first( + void *ctx_data = NULL; + unsigned major = 1; + unsigned minor = 0; + settings_t *settings = config_get_ptr(); + enum gfx_ctx_api api = GFX_CTX_VULKAN_API; + const gfx_ctx_driver_t *gfx_ctx = video_context_driver_init_first( vk, settings->arrays.video_context_driver, - api, major, minor, false); + api, major, minor, false, &ctx_data); + + if (ctx_data) + vk->ctx_data = ctx_data; + + return gfx_ctx; } static void vulkan_init_render_pass( diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 4a126070a9..c9aa356823 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -3051,18 +3051,17 @@ static const gfx_ctx_driver_t *video_context_driver_init( **/ const gfx_ctx_driver_t *video_context_driver_init_first(void *data, const char *ident, enum gfx_ctx_api api, unsigned major, - unsigned minor, bool hw_render_ctx) + unsigned minor, bool hw_render_ctx, void **ctx_data) { - void *ctx_data = NULL; int i = find_video_context_driver_index(ident); if (i >= 0) { const gfx_ctx_driver_t *ctx = video_context_driver_init(data, gfx_ctx_drivers[i], ident, - api, major, minor, hw_render_ctx, &ctx_data); + api, major, minor, hw_render_ctx, ctx_data); if (ctx) { - video_context_data = ctx_data; + video_context_data = *ctx_data; return ctx; } } @@ -3071,11 +3070,11 @@ const gfx_ctx_driver_t *video_context_driver_init_first(void *data, { const gfx_ctx_driver_t *ctx = video_context_driver_init(data, gfx_ctx_drivers[i], ident, - api, major, minor, hw_render_ctx, &ctx_data); + api, major, minor, hw_render_ctx, ctx_data); if (ctx) { - video_context_data = ctx_data; + video_context_data = *ctx_data; return ctx; } } diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 97c4dd63b8..6add41cec4 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -1140,8 +1140,10 @@ void video_driver_get_status(uint64_t *frame_count, bool * is_alive, * * Returns: graphics context driver if found, otherwise NULL. **/ -const gfx_ctx_driver_t *video_context_driver_init_first(void *data, const char *ident, - enum gfx_ctx_api api, unsigned major, unsigned minor, bool hw_render_ctx); +const gfx_ctx_driver_t *video_context_driver_init_first( + void *data, const char *ident, + enum gfx_ctx_api api, unsigned major, unsigned minor, + bool hw_render_ctx, void **ctx_data); bool video_context_driver_check_window(gfx_ctx_size_t *size_data); From 448d2d333c5f04bbf4710a0c23a0d3adfc2954b0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 14 Oct 2018 08:22:26 +0200 Subject: [PATCH 043/304] Set ctx_driver --- gfx/common/gdi_common.h | 1 + gfx/common/gl_common.h | 1 + gfx/common/sixel_common.h | 1 + gfx/common/vulkan_common.h | 1 + gfx/drivers/gdi_gfx.c | 1 + gfx/drivers/gl.c | 1 + gfx/drivers/sixel_gfx.c | 1 + gfx/drivers/vg.c | 3 +++ gfx/drivers/vulkan.c | 1 + 9 files changed, 11 insertions(+) diff --git a/gfx/common/gdi_common.h b/gfx/common/gdi_common.h index 4bac582f3f..3fc5423f9f 100644 --- a/gfx/common/gdi_common.h +++ b/gfx/common/gdi_common.h @@ -35,6 +35,7 @@ typedef struct gdi unsigned screen_width; unsigned screen_height; void *ctx_data; + const gfx_ctx_driver_t *ctx_driver; } gdi_t; typedef struct gdi_texture diff --git a/gfx/common/gl_common.h b/gfx/common/gl_common.h index 4488287813..893fdfb709 100644 --- a/gfx/common/gl_common.h +++ b/gfx/common/gl_common.h @@ -318,6 +318,7 @@ struct gl const gl_renderchain_driver_t *renderchain_driver; void *renderchain_data; void *ctx_data; + const gfx_ctx_driver_t *ctx_driver; }; static INLINE void gl_bind_texture(GLuint id, GLint wrap_mode, GLint mag_filter, diff --git a/gfx/common/sixel_common.h b/gfx/common/sixel_common.h index d0bda4cef9..f53438f0eb 100644 --- a/gfx/common/sixel_common.h +++ b/gfx/common/sixel_common.h @@ -30,6 +30,7 @@ typedef struct sixel unsigned screen_width; unsigned screen_height; void *ctx_data; + const gfx_ctx_driver_t *ctx_driver; } sixel_t; #endif diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index 524f69336d..10d6a1b1ba 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -333,6 +333,7 @@ typedef struct vk vulkan_context_t *context; video_info_t video; void *ctx_data; + const gfx_ctx_driver_t *ctx_driver; VkFormat tex_fmt; math_matrix_4x4 mvp, mvp_no_rot; diff --git a/gfx/drivers/gdi_gfx.c b/gfx/drivers/gdi_gfx.c index b560f52d07..8765351ca4 100644 --- a/gfx/drivers/gdi_gfx.c +++ b/gfx/drivers/gdi_gfx.c @@ -114,6 +114,7 @@ static void *gdi_gfx_init(const video_info_t *video, if (ctx_data) gdi->ctx_data = ctx_data; + gdi->ctx_driver = ctx_driver; video_context_driver_set((const gfx_ctx_driver_t*)ctx_driver); RARCH_LOG("[GDI]: Found GDI context: %s\n", ctx_driver->ident); diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 9ba79b00e4..bf23195a58 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -1733,6 +1733,7 @@ static void *gl_init(const video_info_t *video, video_context_driver_set((const gfx_ctx_driver_t*)ctx_driver); + gl->ctx_driver = ctx_driver; gl->video_info = *video; RARCH_LOG("[GL]: Found GL context: %s\n", ctx_driver->ident); diff --git a/gfx/drivers/sixel_gfx.c b/gfx/drivers/sixel_gfx.c index 20676cc755..6966820e14 100644 --- a/gfx/drivers/sixel_gfx.c +++ b/gfx/drivers/sixel_gfx.c @@ -227,6 +227,7 @@ static void *sixel_gfx_init(const video_info_t *video, if (ctx_data) sixel->ctx_data = ctx_data; + sixel->ctx_driver = ctx_driver; video_context_driver_set((const gfx_ctx_driver_t*)ctx_driver); RARCH_LOG("[SIXEL]: Found SIXEL context: %s\n", ctx_driver->ident); diff --git a/gfx/drivers/vg.c b/gfx/drivers/vg.c index f830e89117..b93ce38fb2 100644 --- a/gfx/drivers/vg.c +++ b/gfx/drivers/vg.c @@ -71,6 +71,8 @@ typedef struct VGuint mGlyphIndices[1024]; VGPaint mPaintFg; VGPaint mPaintBg; + void *ctx_data; + const gfx_ctx_driver_t *ctx_driver; } vg_t; static PFNVGCREATEEGLIMAGETARGETKHRPROC pvgCreateEGLImageTargetKHR; @@ -115,6 +117,7 @@ static void *vg_init(const video_info_t *video, if (ctx_data) vg->ctx_data = ctx_data; + vg->ctx_driver = ctx; video_context_driver_set((void*)ctx); video_context_driver_get_video_size(&mode); diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index abf12506fb..6713a46fbc 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -1146,6 +1146,7 @@ static void *vulkan_init(const video_info_t *video, goto error; } + vk->ctx_driver = ctx_driver; video_context_driver_set((const gfx_ctx_driver_t*)ctx_driver); video_context_driver_get_video_size(&mode); From c73d13d4bc4066c484c0639c9b8316c43ede1088 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 14 Oct 2018 08:40:00 +0200 Subject: [PATCH 044/304] Don't use video_context_driver_check_window anymore - go call it directly --- gfx/drivers/gl.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index bf23195a58..860df2c31a 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -2019,31 +2019,26 @@ error: static bool gl_alive(void *data) { - gfx_ctx_size_t size_data; unsigned temp_width = 0; unsigned temp_height = 0; bool ret = false; bool quit = false; bool resize = false; gl_t *gl = (gl_t*)data; + bool is_shutdown = rarch_ctl(RARCH_CTL_IS_SHUTDOWN, NULL); /* Needed because some context drivers don't track their sizes */ video_driver_get_size(&temp_width, &temp_height); - size_data.quit = &quit; - size_data.resize = &resize; - size_data.width = &temp_width; - size_data.height = &temp_height; + gl->ctx_driver->check_window(gl->ctx_data, + &quit, &resize, &temp_width, &temp_height, is_shutdown); - if (video_context_driver_check_window(&size_data)) - { - if (quit) - gl->quitting = true; - else if (resize) - gl->should_resize = true; + if (quit) + gl->quitting = true; + else if (resize) + gl->should_resize = true; - ret = !gl->quitting; - } + ret = !gl->quitting; if (temp_width != 0 && temp_height != 0) video_driver_set_size(&temp_width, &temp_height); From 4e99132e232e2c5d6ba251645afb420afdc31cae Mon Sep 17 00:00:00 2001 From: waitingmoon Date: Sun, 14 Oct 2018 17:41:51 +0900 Subject: [PATCH 045/304] Update JP translation (#7407) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update JP translation (Video and Audio) * Update JP translation (Main Menu, Settings) * Update JP translation (Netplay, Import) * minor change * Change システム to 全般 * Change 全般 to メイン (refrect 5ch users opinion) * restore explanation of non-windowed fullscreen mode --- intl/msg_hash_ja.h | 212 ++++++++++++++++++++++++--------------------- 1 file changed, 111 insertions(+), 101 deletions(-) diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index cd9030d9ce..66f0aa5dc1 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -152,11 +152,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_SETTINGS, - "メニューの外観に関係する設定を変更する。" + "メニューの外観に関係する設定を変更します。" ) MSG_HASH( MENU_ENUM_SUBLABEL_LATENCY_SETTINGS, - "ビデオやオーディオ、入力の遅延に関係する設定を変更します。" + "ビデオやオーディオ、入力の遅延に関係する設定を\n変更します。" ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_HARD_SYNC, @@ -244,7 +244,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONFIGURATIONS_LIST, - "設定ファイル" + "メイン設定ファイル" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ADD_TAB, @@ -344,7 +344,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUTO_OVERRIDES_ENABLE, - "オーバーライドファイルを自動的にロード" + "優先設定ファイルを自動的にロード" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUTO_REMAPS_ENABLE, @@ -546,7 +546,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONFIG, - "コンフィグ" + "メイン設定ファイル" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONFIGURATIONS, @@ -554,7 +554,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONFIGURATION_SETTINGS, - "設定" + "設定ファイル" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONFIG_SAVE_ON_EXIT, @@ -721,7 +721,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_SETTINGS, MSG_HASH(MENU_ENUM_LABEL_VALUE_FRONTEND_COUNTERS, "Frontend Counters") MSG_HASH(MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS, - "コンテンツ特定のコア設定を自動的にロード") + "コンテンツごとのコア設定を自動的にロード") MSG_HASH(MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_CREATE, "Create game-options file") MSG_HASH(MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_IN_USE, @@ -1480,7 +1480,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATE_DIRECTORY, MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATE_THUMBNAIL_ENABLE, "ステートセーブのサムネイル") MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG, - "現在の設定を保存") + "現在のメイン設定を保存") MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, "コアの優先を保存") MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR, @@ -1488,7 +1488,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR, MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, "ゲームの優先を保存") MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_NEW_CONFIG, - "新しい設定を保存") + "新しいメイン設定を保存") MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_STATE, "ステートセーブ") MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS, @@ -1786,7 +1786,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_SLANG_SHADERS, MSG_HASH(MENU_ENUM_LABEL_VALUE_USER, "ユーザー") MSG_HASH(MENU_ENUM_LABEL_VALUE_USER_INTERFACE_SETTINGS, - "ユーザーインタフェース") + "ユーザーインターフェース") MSG_HASH(MENU_ENUM_LABEL_VALUE_USER_LANGUAGE, "言語") MSG_HASH(MENU_ENUM_LABEL_VALUE_USER_SETTINGS, @@ -1850,7 +1850,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_X, MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_Y, "OSDメッセージのY位置") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX, - "モニタのインデックス") + "モニターの識別番号") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_POST_FILTER_RECORD, "事後フィルターの録画を有効") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE, @@ -1898,9 +1898,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_THREADED, MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_VFILTER, "非フリッカー") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_HEIGHT, - "カスタムビューポートの縦幅") + "カスタムビューポートの高さ") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH, - "カスタムビューポートの横幅") + "カスタムビューポートの幅") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_X, "カスタムビューポートのX位置") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y, @@ -1912,20 +1912,20 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN, "ウィンドウフルスクリーンモード") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH, - "ウィンドウの横幅") + "ウィンドウの幅") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT, - "ウィンドウの縦幅") + "ウィンドウの高さ") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_X, - "フルスクリーンの横幅") + "フルスクリーンの幅") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_Y, - "フルスクリーンの縦幅") + "フルスクリーンの高さ") MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_X, - "非ウィンドウフルスクリーンモードの横幅サイズを指定します。0を指定すると、デスクトップ解像度を使用します。" + "フルスクリーンモード時の幅を指定します。0を指定\nすると、デスクトップ解像度が適用されます。\nウィンドウフルスクリーンモードを使用している場合、\n幅はデスクトップ解像度で固定されます。" ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_Y, - "非ウィンドウフルスクリーンモードの縦幅サイズを指定します。0を指定すると、デスクトップ解像度を使用します。" + "フルスクリーンモード時の高さを指定します。0を指定\nすると、デスクトップ解像度が適用されます。\nウィンドウフルスクリーンモードを使用している場合、\n高さはデスクトップ解像度で固定されます。" ) MSG_HASH(MENU_ENUM_LABEL_VALUE_WIFI_DRIVER, "Wi-Fiのドライバ") @@ -2026,57 +2026,57 @@ MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_TEST_UNOFFICIAL, MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_HARDCORE_MODE_ENABLE, "ステートセーブやチート、巻き戻し、早送り、一時停止、スローモーションをすべてのゲームで無効する。") MSG_HASH(MENU_ENUM_SUBLABEL_DRIVER_SETTINGS, - "システムのドライバを変更する。") + "システムのドライバを変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_RETRO_ACHIEVEMENTS_SETTINGS, - "実績に関係する設定を変更する。") + "実績に関係する設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_CORE_SETTINGS, - "コアの設定を変更する。") + "コアの設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_RECORDING_SETTINGS, - "録画の設定を変更する。") + "録画の設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_ONSCREEN_DISPLAY_SETTINGS, - "OSDオーバーレイ、キーボードオーバーレイ、OSDメッセージの設定を変更する。") + "OSDオーバーレイやキーボードオーバーレイ、\nOSDメッセージの設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_FRAME_THROTTLE_SETTINGS, - "巻き戻しや早送り、スローモーションの設定を変更する。") + "巻き戻しや早送り、スローモーションの設定を\n変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_SAVING_SETTINGS, - "保存に関係する設定を変更する。") + "保存に関係する設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_LOGGING_SETTINGS, - "ログの設定を変更する。") + "ログの設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_USER_INTERFACE_SETTINGS, - "ユーザーインタフェースの設定を変更する。") + "ユーザーインターフェースの設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_USER_SETTINGS, - "アカウントやユーザー名、言語を変更する。") + "アカウントやユーザー名、ユーザーインターフェースの\n言語を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_PRIVACY_SETTINGS, - "プライバシー設定を変更する。") + "プライバシーの設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_DIRECTORY_SETTINGS, - "このシステムの初期ディレクトリーを変更する。") + "システムの動作に関係するファイルが格納される\n初期ディレクトリを変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_PLAYLIST_SETTINGS, - "プレイリストの設定を変更する。") + "プレイリストの設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_NETWORK_SETTINGS, - "ネットワークの設定を変更する。") + "ネットワークの設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_ADD_CONTENT_LIST, - "コンテンツをスキャンしてデータベースに登録する。") + "コンテンツをスキャンしてデータベースに登録します。") MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_SETTINGS, - "オーディオ出力の設定を変更する。") + "オーディオ出力の設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_BLUETOOTH_ENABLE, "Bluetoothを有効する。") MSG_HASH(MENU_ENUM_SUBLABEL_CONFIG_SAVE_ON_EXIT, "終了時に設定を自動的に保存する。") MSG_HASH(MENU_ENUM_SUBLABEL_CONFIGURATION_SETTINGS, - "コンフィグファイルのデフォルト設定を変更する。") + "設定ファイルのデフォルト設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_CONFIGURATIONS_LIST, - "コンフィグファイルを管理と作成する。") + "メイン設定ファイルの作成と管理を行います。") MSG_HASH(MENU_ENUM_SUBLABEL_CPU_CORES, "CPUのコア数") MSG_HASH(MENU_ENUM_SUBLABEL_FPS_SHOW, "画面に現在のフレームレートを表示する。") MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_HOTKEY_BINDS, - "ホットキー設定を変更する。") + "ホットキーの設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO, "同時押しでメニューに切り替え") MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_SETTINGS, - "ゲームパッド、キーボード、マウスの設定を変更する。") + "ゲームパッドやキーボード、マウスの設定を変更\nします。") MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_USER_BINDS, - "このユーザーの入力設定を変更する。") + "このユーザーの入力設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_LOG_VERBOSITY, "端末にログすることを有効と無効。") MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY, @@ -2084,9 +2084,9 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY, MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_LAN_SCAN_SETTINGS, "ローカルネットワーク上のネットプレイホストをスキャンして接続する。") MSG_HASH(MENU_ENUM_SUBLABEL_INFORMATION_LIST_LIST, - "コア、ネットワーク、システムの詳細を表示する。\nデータベースとカーソルのマネジャーを表示する。") + "コアやネットワーク、システムの詳細および、\nデータベース、カーソルのマネージャーを\n表示します。") MSG_HASH(MENU_ENUM_SUBLABEL_ONLINE_UPDATER, - "RetroArchにアドオン、コンポーネント、コンテンツをダウンロードする。") + "RetroArchにアドオンやコンポーネント、コンテンツを\nダウンロードします。") MSG_HASH(MENU_ENUM_SUBLABEL_SAMBA_ENABLE, "フォルダのネットワーク共有を有効する。") MSG_HASH(MENU_ENUM_SUBLABEL_SERVICES_SETTINGS, @@ -2096,11 +2096,11 @@ MSG_HASH(MENU_ENUM_SUBLABEL_SHOW_HIDDEN_FILES, MSG_HASH(MENU_ENUM_SUBLABEL_SSH_ENABLE, "SSHでのアクセスを有効する。") MSG_HASH(MENU_ENUM_SUBLABEL_SUSPEND_SCREENSAVER_ENABLE, - "システムのスクリーンセーバーをアクティブになることを予防する。") + "システムのスクリーンセーバーの起動を防止します。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_WINDOW_SCALE, - "コアのビューポートサイズを基準にしたウィンドウサイズを指定します。横幅と縦幅が一定の固定ウィンドウサイズを指定することもできます(下の項目)。") + "コアが出力するビューポートサイズを基準に\nウィンドウをスケールします。下の項目では、一定の\n幅と高さが適用される固定ウィンドウサイズを\n設定できます。") MSG_HASH(MENU_ENUM_SUBLABEL_USER_LANGUAGE, - "インタフェースの言語を変更する。") + "ユーザーインターフェースの言語を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_BLACK_FRAME_INSERTION, "フレームの間に黒フレームを挿入する。60Hzコンテンツを120Hz画面でやることを役に立つ。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FRAME_DELAY, @@ -2110,17 +2110,17 @@ MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_HARD_SYNC_FRAMES, MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, "指定するバッファーモードをビデオドライバに伝える。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_MONITOR_INDEX, - "希望する画面を選択する。") + "フルスクリーン画面を表示するモニターの識別番号を\n選択します。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_AUTO, "画面の正確な推定のリフレッシュレート") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_POLLED, "ディスプレイドライバーによって提供されたリフレッシュレート") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SETTINGS, - "ビデオ出力の設定を変更する。") + "ビデオ出力の設定を変更します。") MSG_HASH(MENU_ENUM_SUBLABEL_WIFI_SETTINGS, "無線ネットワークを検索して接続する。") MSG_HASH(MENU_ENUM_SUBLABEL_HELP_LIST, - "RetroArchの使い方について学ぶ。") + "RetroArchの基本的な使い方についてのヘルプを表示\nします。") MSG_HASH(MENU_ENUM_SUBLABEL_CHEAT_APPLY_CHANGES, "チートの変更点を今すぐに適用する。") MSG_HASH(MSG_ADDED_TO_FAVORITES, @@ -2446,7 +2446,7 @@ MSG_HASH(MSG_REWIND_INIT_FAILED_THREADED_AUDIO, MSG_HASH(MSG_REWIND_REACHED_END, "巻き戻しバッファの終わりに達しました") MSG_HASH(MSG_SAVED_NEW_CONFIG_TO, - "新しいコンフィグを保存しました to") + "新しいメイン設定ファイルを保存しました to") MSG_HASH(MSG_SAVED_STATE_TO_SLOT, "スロット%dにステートセーブしました") MSG_HASH(MSG_SAVED_STATE_TO_SLOT_AUTO, @@ -2522,7 +2522,7 @@ MSG_HASH(MSG_VIRTUAL_DISK_TRAY, MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_LATENCY, "ミリ秒でのオーディオ遅延。ドライバ対応による。") MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MUTE, - "オーディオを消音する。") + "オーディオを消音します。") MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RATE_CONTROL_DELTA, "Helps smooth out imperfections in timing when synchronizing audio and video at the same time. Be aware that if disabled, proper synchronization is nearly impossible to obtain." @@ -2587,7 +2587,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_ENABLE, - "オーディオ出力を有効にする。" + "オーディオ出力を有効にします。" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_MAX_TIMING_SKEW, @@ -2723,11 +2723,11 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME_LAN, MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND, "対応するコンテンツが見つかりました") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_CROP_OVERSCAN, - "開発者によって慣例的に空白にされていたイメージの端にあるいくつかのピクセルを切り取ります。 不正確なピクセルを含むこともあります。") + "コンテンツの開発者によって慣例的に空白にされていた\nイメージの端にあるいくつかのピクセルを\n切り取ります。不正確なピクセルを含むことも\nあります。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SMOOTH, - "画像にわずかなぼかしを加えて、ピクセルのエッジを柔らかくします。このオプションは、パフォーマンスにはほとんど影響しません。") + "イメージにわずかなぼかしを加えて、ピクセルの輪郭の\n硬さを和らげます。このオプションは\nパフォーマンスにはほとんど影響しません。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FILTER, - "CPUベースのビデオフィルターを適用します。備考: パフォーマンスを多く消費するかもしれません。一部のビデオフィルターは、32bitまたは16bitカラーを使用するコアでのみ動作する可能性があります。") + "CPUベースのビデオフィルターを適用します。\n一部のビデオフィルターは、コアによっては動作しない\n可能性があります。また、パフォーマンスに大きく\n影響します。") MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_USERNAME, "RetroAchievementsアカウントのユーザー名") MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_PASSWORD, @@ -2737,34 +2737,44 @@ MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_NICKNAME, MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_POST_FILTER_RECORD, "Capture the image after filters (but not shaders) are applied. Your video will look as fancy as what you see on your screen.") MSG_HASH(MENU_ENUM_SUBLABEL_CORE_LIST, - "使用するコアを選択する。") + "使用するコアを選択します。") MSG_HASH(MENU_ENUM_SUBLABEL_LOAD_CONTENT_LIST, - "起動するコンテンツを選択する。") + "起動するコンテンツを選択します。") MSG_HASH(MENU_ENUM_SUBLABEL_NETWORK_INFORMATION, "ネットワークインタフェースとIPアドレスを表示する。") MSG_HASH(MENU_ENUM_SUBLABEL_SYSTEM_INFORMATION, "デバイス特定の仕様") MSG_HASH(MENU_ENUM_SUBLABEL_QUIT_RETROARCH, - "アプリを終了する。") + "RetroArchを終了します。") +MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_ASPECT_RATIO, + "アスペクト比が「コンフィグ」に設定されている場合に\n使用されるアスペクト比の浮動小数点値(幅/高さ)\nです。") +MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_HEIGHT, + "アスペクト比が「カスタム」に設定されている場合に\n使用されるカスタムビューポートの高さです。") +MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_WIDTH, + "アスペクト比が「カスタム」に設定されている場合に\n使用されるカスタムビューポートの幅です。") +MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_X, + "ビューポートのX軸位置を定義するために使用される\nカスタムビューポートのオフセット値です。\n「整数スケール」が有効になっている場合は無視され、\nビューポートは自動的に中央寄せされます。") +MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y, + "ビューポートのY軸位置を定義するために使用される\nカスタムビューポートのオフセット値です。\n「整数スケール」が有効になっている場合は無視され、\nビューポートは自動的に中央寄せされます。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_WINDOW_WIDTH, - "ディスプレイのカスタムビデオ横幅を指定します。0を指定すると可能な限りウィンドウをスケールします。") + "ウィンドウの幅を指定します。0を指定すると\n可能な限りウィンドウをスケールします。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_WINDOW_HEIGHT, - "ディスプレイのカスタムビデオ縦幅を指定します。0を指定すると可能な限りウィンドウをスケールします。") + "ウィンドウの高さを指定します。0を指定すると\n可能な限りウィンドウをスケールします。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_X, - "OSDのカスタムX軸を指定する。") + "OSDのカスタムX軸位置を指定します。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_Y, - "OSDのカスタムY軸を指定する。") + "OSDのカスタムY軸位置を指定します。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_FONT_SIZE, "ポイントでのフォントサイズ") MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_OVERLAY_HIDE_IN_MENU, "メニュー表示中はオーバーレイを隠し、メニューを閉じたときに再表示する。") MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_COLLECTION_LIST, - "スキャンされたコンテンツがここに表示されます。" + "スキャンしたコンテンツを表示します。" ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER, - "ビデオのスケールを整数に限定します。基礎サイズはシステムによって報告されたジオメトリとアスペクト比に依存します。「強制アスペクト比」が指定されていない場合、横幅と縦幅はそれぞれ独立して整数でスケールされます。" + "ビデオのスケールを整数に限定します。基礎サイズは\nシステムが提供するジオメトリとアスペクト比に依存\nします。「強制アスペクト比」が指定されていない\n場合、幅と高さはそれぞれ整数でスケールされます。" ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_GPU_SCREENSHOT, @@ -2776,15 +2786,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FORCE_SRGB_DISABLE, - "sRGB FBOの対応を強制的に無効にします。sRGB FBOの対応が有効になっている一部のWindows用Intel Open GLドライバはビデオ問題を有します。この機能を有効にすることで問題を回避できます。" + "sRGB FBOの対応を強制的に無効にすることで、一部の\nWindows用Intel OpenGLドライバで発生するビデオの\n問題を回避します。" ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN, - "フルスクリーンで起動する。実行時にも切り替えできる。" + "フルスクリーンで起動します。実行時にも切り替え\n可能です。" ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_WINDOWED_FULLSCREEN, - "フルスクリーンであればウィンドウフルスクリーンモードを使用する。" + "ウィンドウフルスクリーンモードを使用します。" ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_GPU_RECORD, @@ -2912,7 +2922,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_DEVICE, - "オーディオドライバーが使用する標準オーディオデバイスをオーバーライドする。\nこの設定はドライバーに依存する。" + "オーディオドライバーが使用する\n標準オーディオデバイスをオーバーライドします。\nこの設定はドライバーに依存します。" ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_DSP_PLUGIN, @@ -3000,24 +3010,24 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_NETPLAY_ENABLE_HOST, - "ネットプレイをホスト(サーバー)モードで有効にします。" + "ネットプレイをホスト (サーバー) モードで有効に\nします。" ) MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_ENABLE_CLIENT, "ネットプレイをクライアントモードで有効にします。") MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_DISCONNECT, "アクティブなネットプレイ接続を切断する。") MSG_HASH(MENU_ENUM_SUBLABEL_SCAN_DIRECTORY, - "対応ファイルをフォルダからスキャンしてコレクションに追加します。") + "フォルダ内のすべての対応ファイルをスキャンして\nコレクションに追加します。") MSG_HASH(MENU_ENUM_SUBLABEL_SCAN_FILE, - "対応ファイルをスキャンしてコレクションに追加します。") + "対応ファイルをスキャンしてコレクションに追加\nします。") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SWAP_INTERVAL, "Uses a custom swap interval for Vsync. Set this to effectively halve monitor refresh rate." ) MSG_HASH(MENU_ENUM_SUBLABEL_SORT_SAVEFILES_ENABLE, - "使用したコアの名前に基づいてセーブファイルをフォルダごとに分類します。" + "使用したコアの名前に基づいてセーブファイルを\nフォルダごとに分類します。" ) MSG_HASH(MENU_ENUM_SUBLABEL_SORT_SAVESTATES_ENABLE, - "使用したコアの名前に基づいてステートセーブをフォルダごとに分類します。" + "使用したコアの名前に基づいてステートセーブを\nフォルダごとに分類します。" ) MSG_HASH(MENU_ENUM_SUBLABEL_CORE_UPDATER_BUILDBOT_URL, "URL to core updater directory on the Libretro buildbot.") @@ -3116,7 +3126,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_THUMBNAILS_DIRECTORY, "サムネイルファイルの保存フォルダ" ) MSG_HASH(MENU_ENUM_SUBLABEL_RGUI_CONFIG_DIRECTORY, - "設定ファイルブラウザーの初期ディレクトリを指定する。") + "設定ファイルブラウザの初期ディレクトリを指定します。") MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN, "The number of frames of input latency for netplay to use to hide network latency. This reduces jitter and makes netplay less CPU-intensive, at the expense of noticeable input lag.") MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, @@ -3264,7 +3274,7 @@ MSG_HASH( "オーディオミキサーを消音" ) MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE, - "ミキサーオーディオを消音/消音解除にする。") + "ミキサーオーディオを消音します。") MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_ONLINE_UPDATER, "オンラインアップデーターを表示") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_ONLINE_UPDATER, @@ -3286,7 +3296,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_DELETE, MSG_HASH(MENU_ENUM_SUBLABEL_CORE_DELETE, "コアをハードディスクから削除する。") MSG_HASH(MENU_ENUM_LABEL_VALUE_RENAME_ENTRY, - "エントリーの名前を変更する") + "エントリーの名前を変更") MSG_HASH(MENU_ENUM_SUBLABEL_RENAME_ENTRY, "このエントリーのタイトルを変更します。") MSG_HASH(MENU_ENUM_LABEL_RENAME_ENTRY, @@ -3298,19 +3308,19 @@ MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY, MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES, "お気に入り") MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES, - "「お気に入りに追加」したコンテンツがここに表示されます。") + "お気に入りに追加したコンテンツを表示します。") MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC, "音楽") MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC, - "再生した音楽がここに表示されます。") + "再生した音楽を表示します。") MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES, "画像") MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES, - "表示した画像がここに表示されます。") + "表示した画像を表示します。") MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO, "ビデオ") MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO, - "再生したビデオがここに表示されます。") + "再生したビデオ表示します。") MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE, "メニューのアイコン") MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE, @@ -3346,9 +3356,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION, MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION, "「情報」オプションを表示/非表示にする。") MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS, - "「設定ファイル」を表示") + "「メイン設定ファイル」を表示") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS, - "「設定ファイル」オプションを表示/非表示にする。") + "「メイン設定ファイル」オプションを表示/非表示にする。") MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP, "「ヘルプ」を表示") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_HELP, @@ -3484,7 +3494,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_OPACITY, MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, "オーディオリサンプラーの音質") MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_RESAMPLER_QUALITY, - "オーディオ品質よりもパフォーマンス/遅延を優先する場合は低い設定を、パフォーマンス/遅延よりもオーディオ品質を優先する場合は高い設定を選択します。") + "オーディオ品質よりもパフォーマンス/遅延を優先する\n場合は低い設定を、パフォーマンス/遅延よりも\nオーディオ品質を優先する場合は高い設定を選択\nします。") MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_WATCH_FOR_CHANGES, "シェーダーファイルの変更を監視") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SHOW_DECORATIONS, @@ -3522,11 +3532,11 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_OVERLAYS, MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE_MENU, "メニューのオーディオを有効") MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_ENABLE_MENU, - "メニューの音を有効または無効にする。") + "メニューのオーディオ出力を有効にします。") MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS, "ミキサー設定") MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS, - "オーディオミキサー設定を表示/編集する。") + "オーディオミキサーの設定を表示/編集します。") MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_INFO, "詳細") MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_FILE, @@ -3676,29 +3686,29 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_VIEW_TYPE_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS, "オーバーライド") MSG_HASH(MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS, - "グローバル設定をオーバーライドするための設定です。") + "メイン設定をオーバーライドするための設定です。") MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY, - "オーディオストリームの再生を開始します。再生が終わると、現在のオーディオストリームはメモリから取り除かれます。") + "オーディオストリームの再生を開始します。再生が\n終わると、現在のオーディオストリームはメモリから\n取り除かれます。") MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED, - "オーディオストリームの再生を開始します。再生が終わると、トラックは最初から繰り返して再生されます。") + "オーディオストリームの再生を開始します。再生が\n終わると、トラックは最初から繰り返して再生\nされます。") MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL, - "オーディオストリームの再生を開始します。再生が終わると、順番に次のオーディオストリームに\n移り、それを繰り返します。アルバム再生モードとして便利です。") + "オーディオストリームの再生を開始します。再生が\n終わると、順番に次のオーディオストリームに移り、\nそれを繰り返します。アルバム再生モードとして\n便利です。") MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP, - "オーディオストリームの再生を停止します。メモリからは取り除かれず、「再生」を選択することで再び再生を開始できます。") + "オーディオストリームの再生を停止します。\nメモリからは取り除かれず、「再生」を選択する\nことで再び再生を開始できます。") MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE, - "オーディオストリームの再生を停止してメモリから完全に取り除きます。") + "オーディオストリームの再生を停止してメモリから\n完全に取り除きます。") MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME, "オーディオストリームの音量を調整します。") MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER, - "このオーディオトラックを使用可能なオーディオストリームスロットに追加します。空きスロットが存在しない場合は無視されます。") + "このオーディオトラックを使用可能な\nオーディオストリームスロットに追加します。\n空きスロットが存在しない場合は無視されます。") MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY, - "このオーディオトラックを使用可能なオーディオストリームスロットに追加して再生します。空きスロットが存在しない場合は無視されます。") + "このオーディオトラックを使用可能な\nオーディオストリームスロットに追加して再生します。\n空きスロットが存在しない場合は無視されます。") MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY, "再生") MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED, - "再生(ループ)") + "再生(ループ)") MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL, - "再生(順番に)") + "再生(順番に)") MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP, "一時停止") MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE, @@ -3736,7 +3746,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MIDI_VOLUME, MSG_HASH(MENU_ENUM_LABEL_VALUE_POWER_MANAGEMENT_SETTINGS, "電源管理") MSG_HASH(MENU_ENUM_SUBLABEL_POWER_MANAGEMENT_SETTINGS, - "電源に関係する設定を変更する。") + "電源に関係する設定を変更します。") MSG_HASH(MENU_ENUM_LABEL_VALUE_SUSTAINED_PERFORMANCE_MODE, "パフォーマンス維持モード") MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_MPV_SUPPORT, @@ -3877,7 +3887,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCHRES_SETTINGS, - "Output native, low-resolution signals for use with CRT displays." + "CRTディスプレイで利用するためのネイティブな\n低解像度信号を出力します。" ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_X_AXIS_CENTERING, @@ -3889,7 +3899,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, - "設定ファイルで指定されたカスタムリフレッシュレートを使用します。") + "設定ファイルで定義されたカスタムリフレッシュレートを使用します。") MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, "カスタムリフレッシュレートを使用") @@ -3905,7 +3915,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_QUICK_MENU_START_RECORDING, - "録画を開始する。" + "録画を開始します。" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_STOP_RECORDING, @@ -3913,7 +3923,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_RECORDING, - "録画を停止する。" + "録画を停止します。" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_STREAMING, @@ -3921,7 +3931,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_QUICK_MENU_START_STREAMING, - "ストリーミングを開始する。" + "ストリーミングを開始します。" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_STOP_STREAMING, @@ -3929,7 +3939,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_STREAMING, - "ストリーミングを停止する。" + "ストリーミングを停止します。" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_RECORDING_TOGGLE, From d4861e095265500579f1f7c834431d565e8641c1 Mon Sep 17 00:00:00 2001 From: LamboLighting Date: Sun, 14 Oct 2018 15:06:35 +0300 Subject: [PATCH 046/304] More Greek translations and some fixes More things translated and fixed some spelling mistakes from the previous commit. --- intl/msg_hash_el.h | 120 ++++++++++++++++++++++----------------------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h index 7d5f31b053..3245125e2f 100644 --- a/intl/msg_hash_el.h +++ b/intl/msg_hash_el.h @@ -548,7 +548,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONFIG_SAVE_ON_EXIT, - "Απόθηκευση Διαμόρφωσης με την Έξοδο" + "Απόθηκευση Διαμόρφωσης στην Έξοδο" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST, @@ -2608,7 +2608,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYNAMIC_SUPPORT, - "Dynamic run-time loading of libretro library" + "Δυναμική φόρτωση κατά την εκτέλεση της βιβλιοθήκης libretro" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT, @@ -2632,15 +2632,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER, - "Frontend identifier" + "Αναγνωριστικό λειτουργικού συστήματος" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME, - "Frontend name" + "Όνομα λειτουργικού συστήματος" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS, - "Frontend OS" + "Λειτουργικό Σύστημα" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION, @@ -2676,7 +2676,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT, - "Υποστήριξη libxml2 XML parsing" + "Υποστήριξη ανάλυσης libxml2 XML" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT, @@ -2744,7 +2744,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT, - "Υποστήριξη Python (script support in shaders)" + "Υποστήριξη Python (υποστήριξη script στις σκιάσεις)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RBMP_SUPPORT, @@ -3044,15 +3044,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO, - "Config Aspect Ratio" + "Διαμόρφωση Αναλογίας Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_AUTO, - "Auto Aspect Ratio" + "Αυτόματη Αναλογία Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX, - "Aspect Ratio" + "Αναλογία Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION, @@ -3084,19 +3084,19 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FONT_ENABLE, - "Enable Onscreen Notifications" + "Ενεργοποίηση Ειδοποιήσεων Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FONT_PATH, - "Notification Font" + "Γραμματοσειρά Ειδοποιήσεων" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FONT_SIZE, - "Notification Size" + "Μέγεθος Γραμματοσειράς" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_ASPECT, - "Force aspect ratio" + "Εξαναγκασμένη αναλογία απεικόνισης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE, @@ -3104,31 +3104,31 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY, - "Frame Delay" + "Καθυστέρηση Καρέ" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN, - "Start in Fullscreen Mode" + "Έναρξη σε Κατάσταση Πλήρης Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_GAMMA, - "Video Gamma" + "Gamma Βίντεο" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_GPU_RECORD, - "Use GPU Recording" + "Χρήση Εγγραφής Κάρτας Γραφικών" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_GPU_SCREENSHOT, - "GPU Screenshot Enable" + "Ενεργοποίηση Στιγμιότυπου Οθόνης Κάρτας Γραφικών" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC, - "Hard GPU Sync" + "Σκληρός Συγχρονισμός Κάρτας Γραφικών" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES, - "Hard GPU Sync Frames" + "Σκληρός Συγχρονισμός Καρέ Κάρτας Γραφικών" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, @@ -3144,7 +3144,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX, - "Monitor Index" + "Ένδειξη Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_POST_FILTER_RECORD, @@ -3152,7 +3152,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE, - "Vertical Refresh Rate" + "Κάθετος Ρυθμός Ανανέωσης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO, @@ -3168,7 +3168,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SCALE, - "Windowed Scale" + "Κλίμακα Παραθύρου" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, @@ -3264,23 +3264,23 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN, - "Windowed Fullscreen Mode" + "Παράθυρο Πλήρης Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH, - "Window Width" + "Πλάτος Παραθύρου" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT, - "Window Height" + "Ύψος Παραθύρου" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_X, - "Fullscreen Width" + "Πλάτος Πλήρης Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_Y, - "Fullscreen Height" + "Ύψος Πλήρης Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_WIFI_DRIVER, @@ -3296,15 +3296,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_RED, - "Menu Font Red Color" + "Γραμματοσειρά Μενού Κόκκινο Χρώμα" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_GREEN, - "Menu Font Green Color" + "Γραμματοσειρά Μενού Πράσινο Χρώμα" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_BLUE, - "Menu Font Blue Color" + "Γραμματοσειρά Μενού Μπλε Χρώμα" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_FONT, @@ -3324,7 +3324,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME_INVERTED, - "Μονόχρωμο Αναστρεμένο" + "Μονόχρωμο Ανεστραμμένο" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_SYSTEMATIC, @@ -3648,7 +3648,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_SUSPEND_SCREENSAVER_ENABLE, - "Prevents your system's screensaver from becoming active." + "Αποτρέπει την προφύλαξη οθόνης του συστήματος από το να ενεργοποιηθεί." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_WINDOW_SCALE, @@ -3676,7 +3676,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_MONITOR_INDEX, - "Selects which display screen to use." + "Επιλέγει ποιά οθόνη θα χρησιμοποιηθεί." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_AUTO, @@ -4689,23 +4689,23 @@ MSG_HASH( ) MSG_HASH( MSG_WIFI_SCAN_COMPLETE, - "Η σάρωτη του Wi-Fi ολοκληρώθηκε." + "Η σάρωση του Wi-Fi ολοκληρώθηκε." ) MSG_HASH( MSG_SCANNING_WIRELESS_NETWORKS, - "Scanning wireless networks..." + "Σάρωση ασύρματων δικτύων..." ) MSG_HASH( MSG_NETPLAY_LAN_SCAN_COMPLETE, - "Netplay scan complete." + "Οκληρώθηκε η σάρωση Netplay." ) MSG_HASH( MSG_NETPLAY_LAN_SCANNING, - "Scanning for netplay hosts..." + "Σάρωση για οικοδεσπότες netplay..." ) MSG_HASH( MENU_ENUM_SUBLABEL_PAUSE_NONACTIVE, - "Pause gameplay when RetroArch is not the active window." + "Παύση παιχνιδιού όταν το RetroArch δεν είναι το ενεργό παράθυρο." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_DISABLE_COMPOSITION, @@ -4713,19 +4713,19 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_HISTORY_LIST_ENABLE, - "Enable or disable recent playlist for games, images, music, and videos." + "Ενεργοποίηση ή απενεργοποίηση λίστας πρόσφατων για παιχνίδια, εικόνες, μουσική και βίντεο." ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_HISTORY_SIZE, - "Limit the number of entries in recent playlist for games, images, music, and videos." + "Περιορισμός καταχωρήσεων στην λίστα πρόσφατων για παιχνίδια, εικόνες, μουσική και βίντεο." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_UNIFIED_MENU_CONTROLS, - "Unified Menu Controls" + "Ενοποιημένος Χειρισμός Μενού" ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_UNIFIED_MENU_CONTROLS, - "Use the same controls for both the menu and the game. Applies to the keyboard." + "Χρήση του ίδιου χειρισμού για το μενού και το παιχνίδι. Εφαρμόζεται στο πληκτρολόγιο." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FONT_ENABLE, @@ -4910,11 +4910,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN, - "Start in fullscreen. Can be changed at runtime. Can be overridden by a command line switch" + "Έναρξη σε πλήρη οθόνη. Μπορεί να αλλάξει κατά την εκτέλεση. Μπορεί να παρακαμπτεί από έναν διακόπτη γραμμής τερματικού." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_WINDOWED_FULLSCREEN, - "If fullscreen, prefer using a windowed fullscreen mode." + "Εάν χρησιμοποιηθεί πλήρης οθόνη προτιμήστε την κατάσταση παραθύρου πλήρης οθόνης." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_GPU_RECORD, @@ -6272,7 +6272,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_RESAMPLER_QUALITY, - "Ελαττώστε αυτή την τιμή για καλύτερη επίδοση/χαμηλότερη καθυστέρηση αντί ποιότητας ήχου, αυξήστε εάν θέλετε καλύτερη ποιότητα με κόστος στην επίδοση/χαμηλώτερη καθυστέρηση." + "Ελαττώστε αυτή την τιμή για καλύτερη επίδοση/χαμηλότερη καθυστέρηση αντί ποιότητας ήχου, αυξήστε εάν θέλετε καλύτερη ποιότητα με κόστος στην επίδοση/χαμηλότερη καθυστέρηση." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SHADER_WATCH_FOR_CHANGES, @@ -7521,19 +7521,19 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_PACK_DOWNLOADED_SUCCESSFULLY, - "Thumbnails downloaded successfully." + "Επιτυχής λήψη σκίτσων." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_PLAYLIST_THUMBNAIL_PROGRESS, - "Succeeded: %1 Failed: %2" + "Πέτυχαν: %1 Απέτυχαν: %2" ) MSG_HASH( MSG_DEVICE_CONFIGURED_IN_PORT, - "Configured in port:" + "Διαμορφώθηκε στην θύρα:" ) MSG_HASH( MSG_FAILED_TO_SET_DISK, - "Failed to set disk" + "Αποτυχία ορισμού δίσκου" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QT_CORE_OPTIONS, @@ -7541,11 +7541,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_ADAPTIVE_VSYNC, - "Adaptive Vsync" + "Προσαρμοστικό Vsync" ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_ADAPTIVE_VSYNC, - "V-Sync is enabled until performance falls below the target refresh rate. Can minimize stuttering when performance falls below realtime, and can be more energy efficient." + "Το V-Sync είναι ενεργοποιημένο μέχρι η επίδοση να πέσει κάτω από τον στόχο ρυθμού ανανέωσης. Μπορεί να μιώσει τα κολλήματα όταν η επίδοση πέφτει χαμηλότερα από τον κανονικό χρόνο και μπορεί να είναι πιο αποδοτικό ενεργειακά." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCHRES_SETTINGS, @@ -7553,31 +7553,31 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCHRES_SETTINGS, - "Output native, low-resolution signals for use with CRT displays." + "Εξαγωγή ντόπιων, χαμηλής ανάλυσης σημάτων για χρήση με οθόνες CRT." ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_X_AXIS_CENTERING, - "Cycle through these options if the image is not centered properly on the display." + "Εναλλάξτε μεταξύ αυτών των επιλογών εάν η εικόνα δεν είναι σωστά κεντραρισμένη στην οθόνη." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCH_X_AXIS_CENTERING, - "X-Axis Centering" + "Κεντράρισμα Άξωνα Χ" ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, - "Use a custom refresh rate specified in the config file if needed." + "Χρήση προσαρμοσμένου ρυθμού ανανέωσης προσδιορισμένου στο αρχείο διαμόρφωσης εάν χρειάζεται." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, - "Use Custom Refresh Rate" + "Χρήση Προσαρμοσμένου Ρυθμού Ανανέωσης" ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, - "Select the output port connected to the CRT display." + "Επιλέξτε την θύρα εξόδου που είναι συνδεδεμένη με την οθόνη CRT." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, - "Output Display ID" + "ID Οθόνης Εξόδου" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_RECORDING, From 2edd03361c35ef2648d30ff421bfcee44158bb4f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 14 Oct 2018 17:49:10 +0200 Subject: [PATCH 047/304] Remove video_context_driver_check_window --- gfx/drivers/gdi_gfx.c | 15 +++++++-------- gfx/drivers/sixel_gfx.c | 10 ++++------ gfx/drivers/vg.c | 10 +++------- gfx/drivers/vulkan.c | 21 ++++++++------------- gfx/video_driver.c | 18 ------------------ gfx/video_driver.h | 2 -- 6 files changed, 22 insertions(+), 54 deletions(-) diff --git a/gfx/drivers/gdi_gfx.c b/gfx/drivers/gdi_gfx.c index 8765351ca4..9caa715d27 100644 --- a/gfx/drivers/gdi_gfx.c +++ b/gfx/drivers/gdi_gfx.c @@ -30,6 +30,7 @@ #include "../../driver.h" #include "../../configuration.h" +#include "../../retroarch.h" #include "../../verbosity.h" #include "../../frontend/frontend_driver.h" #include "../common/gdi_common.h" @@ -360,23 +361,21 @@ static void gdi_gfx_set_nonblock_state(void *data, bool toggle) static bool gdi_gfx_alive(void *data) { - gfx_ctx_size_t size_data; unsigned temp_width = 0; unsigned temp_height = 0; bool quit = false; bool resize = false; bool ret = false; + bool is_shutdown = rarch_ctl(RARCH_CTL_IS_SHUTDOWN, NULL); + gdi_t *gdi = (gdi_t*)data; /* Needed because some context drivers don't track their sizes */ video_driver_get_size(&temp_width, &temp_height); - size_data.quit = &quit; - size_data.resize = &resize; - size_data.width = &temp_width; - size_data.height = &temp_height; + gdi->ctx_driver->check_window(gdi->ctx_data, + &quit, &resize, &temp_width, &temp_height, is_shutdown); - if (video_context_driver_check_window(&size_data)) - ret = !quit; + ret = !quit; if (temp_width != 0 && temp_height != 0) video_driver_set_size(&temp_width, &temp_height); @@ -406,7 +405,7 @@ static bool gdi_gfx_has_windowed(void *data) static void gdi_gfx_free(void *data) { gdi_t *gdi = (gdi_t*)data; - HWND hwnd = win32_get_window(); + HWND hwnd = win32_get_window(); if (gdi_menu_frame) { diff --git a/gfx/drivers/sixel_gfx.c b/gfx/drivers/sixel_gfx.c index 6966820e14..8daecdaa32 100644 --- a/gfx/drivers/sixel_gfx.c +++ b/gfx/drivers/sixel_gfx.c @@ -439,16 +439,14 @@ static bool sixel_gfx_alive(void *data) unsigned temp_height = 0; bool quit = false; bool resize = false; + bool is_shutdown = rarch_ctl(RARCH_CTL_IS_SHUTDOWN, NULL); + sixel_t *sixel = (sixel_t*)data; /* Needed because some context drivers don't track their sizes */ video_driver_get_size(&temp_width, &temp_height); - size_data.quit = &quit; - size_data.resize = &resize; - size_data.width = &temp_width; - size_data.height = &temp_height; - - video_context_driver_check_window(&size_data); + sixel->ctx_driver->check_window(sixel->ctx_data, + &quit, &resize, &temp_width, &temp_height, is_shutdown); if (temp_width != 0 && temp_height != 0) video_driver_set_size(&temp_width, &temp_height); diff --git a/gfx/drivers/vg.c b/gfx/drivers/vg.c index b93ce38fb2..28db6bdde7 100644 --- a/gfx/drivers/vg.c +++ b/gfx/drivers/vg.c @@ -441,18 +441,14 @@ static bool vg_frame(void *data, const void *frame, static bool vg_alive(void *data) { - gfx_ctx_size_t size_data; bool quit = false; unsigned temp_width = 0; unsigned temp_height = 0; vg_t *vg = (vg_t*)data; + bool is_shutdown = rarch_ctl(RARCH_CTL_IS_SHUTDOWN, NULL); - size_data.quit = &quit; - size_data.resize = &vg->should_resize; - size_data.width = &temp_width; - size_data.height = &temp_height; - - video_context_driver_check_window(&size_data); + vg->ctx_driver->check_window(vg->ctx_data, + &quit, &resize, &temp_width, &temp_height, is_shutdown); if (temp_width != 0 && temp_height != 0) video_driver_set_size(&temp_width, &temp_height); diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index 6713a46fbc..859b37a2b6 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -1286,30 +1286,25 @@ static void vulkan_set_nonblock_state(void *data, bool state) static bool vulkan_alive(void *data) { - gfx_ctx_size_t size_data; unsigned temp_width = 0; unsigned temp_height = 0; bool ret = false; bool quit = false; bool resize = false; vk_t *vk = (vk_t*)data; + bool is_shutdown = rarch_ctl(RARCH_CTL_IS_SHUTDOWN, NULL); video_driver_get_size(&temp_width, &temp_height); - size_data.quit = &quit; - size_data.resize = &resize; - size_data.width = &temp_width; - size_data.height = &temp_height; + vk->ctx_driver->check_window(vk->ctx_data, + &quit, &resize, &temp_width, &temp_height, is_shutdown); - if (video_context_driver_check_window(&size_data)) - { - if (quit) - vk->quitting = true; - else if (resize) - vk->should_resize = true; + if (quit) + vk->quitting = true; + else if (resize) + vk->should_resize = true; - ret = !vk->quitting; - } + ret = !vk->quitting; if (temp_width != 0 && temp_height != 0) video_driver_set_size(&temp_width, &temp_height); diff --git a/gfx/video_driver.c b/gfx/video_driver.c index c9aa356823..e2233a4323 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -3082,24 +3082,6 @@ const gfx_ctx_driver_t *video_context_driver_init_first(void *data, return NULL; } -bool video_context_driver_check_window(gfx_ctx_size_t *size_data) -{ - if ( video_context_data - && current_video_context.check_window) - { - bool is_shutdown = rarch_ctl(RARCH_CTL_IS_SHUTDOWN, NULL); - current_video_context.check_window(video_context_data, - size_data->quit, - size_data->resize, - size_data->width, - size_data->height, - is_shutdown); - return true; - } - - return false; -} - bool video_context_driver_init_image_buffer(const video_info_t *data) { if ( diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 6add41cec4..013df5745a 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -1145,8 +1145,6 @@ const gfx_ctx_driver_t *video_context_driver_init_first( enum gfx_ctx_api api, unsigned major, unsigned minor, bool hw_render_ctx, void **ctx_data); -bool video_context_driver_check_window(gfx_ctx_size_t *size_data); - bool video_context_driver_find_prev_driver(void); bool video_context_driver_find_next_driver(void); From 454761a6edd0ba7b94215cf6f5bf1a54a4410052 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 14 Oct 2018 19:49:24 +0200 Subject: [PATCH 048/304] Get rid of video_context_driver_bind_hw_render --- gfx/drivers/gl.c | 41 ++++++++++++----------- gfx/drivers_renderchain/gl2_renderchain.c | 16 ++++----- gfx/video_driver.c | 8 ----- 3 files changed, 29 insertions(+), 36 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 860df2c31a..e6578d753c 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -118,10 +118,11 @@ static const GLfloat white_color[] = { static bool gl_shared_context_use = false; -void context_bind_hw_render(bool enable) +void context_bind_hw_render(void *data, bool enable) { + gl_t *gl = (gl_t*)data; if (gl_shared_context_use) - video_context_driver_bind_hw_render(&enable); + gl->ctx_driver->bind_hw_render(gl->ctx_data, enable); } @@ -678,7 +679,7 @@ static void gl_set_texture_frame(void *data, if (!gl) return; - context_bind_hw_render(false); + context_bind_hw_render(gl, false); menu_filter = settings->bools.menu_linear_filter ? TEXTURE_FILTER_LINEAR : TEXTURE_FILTER_NEAREST; @@ -695,7 +696,7 @@ static void gl_set_texture_frame(void *data, gl->menu_texture_alpha = alpha; glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); - context_bind_hw_render(true); + context_bind_hw_render(gl, true); } static void gl_set_texture_enable(void *data, bool state, bool full_screen) @@ -958,7 +959,7 @@ static bool gl_frame(void *data, const void *frame, return false; #endif - context_bind_hw_render(false); + context_bind_hw_render(gl, false); if (gl->core_context_in_use && gl->renderchain_driver->bind_vao) gl->renderchain_driver->bind_vao(gl, gl->renderchain_data); @@ -1226,7 +1227,7 @@ static bool gl_frame(void *data, const void *frame, gl->renderchain_driver->unbind_vao(gl, gl->renderchain_data); - context_bind_hw_render(true); + context_bind_hw_render(gl, true); return true; } @@ -1266,7 +1267,7 @@ static void gl_free(void *data) if (!gl) return; - context_bind_hw_render(false); + context_bind_hw_render(gl, false); if (gl->have_sync) { @@ -1332,13 +1333,13 @@ static void gl_set_nonblock_state(void *data, bool state) RARCH_LOG("[GL]: VSync => %s\n", state ? "off" : "on"); - context_bind_hw_render(false); + context_bind_hw_render(gl, false); if (!state) interval = settings->uints.video_swap_interval; video_context_driver_swap_interval(&interval); - context_bind_hw_render(true); + context_bind_hw_render(gl, true); } static bool resolve_extensions(gl_t *gl, const char *context_ident, const video_info_t *video) @@ -1870,9 +1871,9 @@ static void *gl_init(const video_info_t *video, * create textures. */ gl->textures = 1; #ifdef GL_DEBUG - context_bind_hw_render(true); + context_bind_hw_render(gl, true); gl_begin_debug(gl); - context_bind_hw_render(false); + context_bind_hw_render(gl, false); #endif } @@ -2008,7 +2009,7 @@ static void *gl_init(const video_info_t *video, goto error; } - context_bind_hw_render(true); + context_bind_hw_render(gl, true); return gl; error: @@ -2065,7 +2066,7 @@ static void gl_update_tex_filter_frame(gl_t *gl) wrap_info.idx = 0; wrap_info.type = RARCH_WRAP_BORDER; - context_bind_hw_render(false); + context_bind_hw_render(gl, false); shader_filter.index = 1; shader_filter.smooth = &smooth; @@ -2102,7 +2103,7 @@ static void gl_update_tex_filter_frame(gl_t *gl) } glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); - context_bind_hw_render(true); + context_bind_hw_render(gl, true); } static bool gl_set_shader(void *data, @@ -2117,7 +2118,7 @@ static bool gl_set_shader(void *data, if (!gl) return false; - context_bind_hw_render(false); + context_bind_hw_render(gl, false); if (type == RARCH_SHADER_NONE) return false; @@ -2200,13 +2201,13 @@ static bool gl_set_shader(void *data, /* Apparently need to set viewport for passes when we aren't using FBOs. */ gl_set_shader_viewports(gl); - context_bind_hw_render(true); + context_bind_hw_render(gl, true); #endif return true; error: - context_bind_hw_render(true); + context_bind_hw_render(gl, true); return false; } @@ -2304,7 +2305,7 @@ static bool gl_overlay_load(void *data, if (!gl) return false; - context_bind_hw_render(false); + context_bind_hw_render(gl, false); gl_free_overlay(gl); gl->overlay_tex = (GLuint*) @@ -2312,7 +2313,7 @@ static bool gl_overlay_load(void *data, if (!gl->overlay_tex) { - context_bind_hw_render(true); + context_bind_hw_render(gl, true); return false; } @@ -2350,7 +2351,7 @@ static bool gl_overlay_load(void *data, gl->overlay_color_coord[16 * i + j] = 1.0f; } - context_bind_hw_render(true); + context_bind_hw_render(gl, true); return true; } diff --git a/gfx/drivers_renderchain/gl2_renderchain.c b/gfx/drivers_renderchain/gl2_renderchain.c index 52ac479b11..64a138218f 100644 --- a/gfx/drivers_renderchain/gl2_renderchain.c +++ b/gfx/drivers_renderchain/gl2_renderchain.c @@ -164,7 +164,7 @@ static void gl2_renderchain_bind_backbuffer(void *data, #endif } -void context_bind_hw_render(bool enable); +void context_bind_hw_render(void *data, bool enable); void gl_load_texture_data( uint32_t id_data, @@ -532,7 +532,7 @@ static void gl2_renderchain_deinit_hw_render( if (!gl) return; - context_bind_hw_render(true); + context_bind_hw_render(gl, true); if (gl->hw_render_fbo_init) gl2_delete_fb(gl->textures, gl->hw_render_fbo); @@ -540,7 +540,7 @@ static void gl2_renderchain_deinit_hw_render( gl2_delete_rb(gl->textures, chain->hw_render_depth); gl->hw_render_fbo_init = false; - context_bind_hw_render(false); + context_bind_hw_render(gl, false); } static void gl2_renderchain_free(gl_t *gl, void *chain_data) @@ -956,7 +956,7 @@ static bool gl2_renderchain_init_hw_render( /* We can only share texture objects through contexts. * FBOs are "abstract" objects and are not shared. */ - context_bind_hw_render(true); + context_bind_hw_render(gl, true); RARCH_LOG("[GL]: Initializing HW render (%u x %u).\n", width, height); glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max_fbo_size); @@ -1037,7 +1037,7 @@ static bool gl2_renderchain_init_hw_render( gl2_renderchain_bind_backbuffer(gl, chain_data); gl->hw_render_fbo_init = true; - context_bind_hw_render(false); + context_bind_hw_render(gl, false); return true; } @@ -1076,7 +1076,7 @@ static bool gl2_renderchain_read_viewport( if (!gl) return false; - context_bind_hw_render(false); + context_bind_hw_render(gl, false); num_pixels = gl->vp.width * gl->vp.height; @@ -1160,11 +1160,11 @@ static bool gl2_renderchain_read_viewport( gl->readback_buffer_screenshot = NULL; } - context_bind_hw_render(true); + context_bind_hw_render(gl, true); return true; error: - context_bind_hw_render(true); + context_bind_hw_render(gl, true); return false; } diff --git a/gfx/video_driver.c b/gfx/video_driver.c index e2233a4323..cf5211f338 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -3119,14 +3119,6 @@ bool video_context_driver_get_video_output_next(void) return true; } -bool video_context_driver_bind_hw_render(bool *enable) -{ - if (!current_video_context.bind_hw_render) - return false; - current_video_context.bind_hw_render(video_context_data, *enable); - return true; -} - void video_context_driver_make_current(bool release) { if (current_video_context.make_current) From 6b03a95b8dc52986b5161ef768420f2daa2a0583 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 14 Oct 2018 20:04:29 +0200 Subject: [PATCH 049/304] Cleanup --- gfx/drivers/gl.c | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index e6578d753c..f447f2bb1b 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -118,11 +118,14 @@ static const GLfloat white_color[] = { static bool gl_shared_context_use = false; +#define gl_context_bind_hw_render(gl, enable) \ + if (gl_shared_context_use) \ + gl->ctx_driver->bind_hw_render(gl->ctx_data, enable) + void context_bind_hw_render(void *data, bool enable) { gl_t *gl = (gl_t*)data; - if (gl_shared_context_use) - gl->ctx_driver->bind_hw_render(gl->ctx_data, enable); + gl_context_bind_hw_render(gl, enable); } @@ -679,7 +682,7 @@ static void gl_set_texture_frame(void *data, if (!gl) return; - context_bind_hw_render(gl, false); + gl_context_bind_hw_render(gl, false); menu_filter = settings->bools.menu_linear_filter ? TEXTURE_FILTER_LINEAR : TEXTURE_FILTER_NEAREST; @@ -696,7 +699,7 @@ static void gl_set_texture_frame(void *data, gl->menu_texture_alpha = alpha; glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); - context_bind_hw_render(gl, true); + gl_context_bind_hw_render(gl, true); } static void gl_set_texture_enable(void *data, bool state, bool full_screen) @@ -959,7 +962,7 @@ static bool gl_frame(void *data, const void *frame, return false; #endif - context_bind_hw_render(gl, false); + gl_context_bind_hw_render(gl, false); if (gl->core_context_in_use && gl->renderchain_driver->bind_vao) gl->renderchain_driver->bind_vao(gl, gl->renderchain_data); @@ -1227,7 +1230,7 @@ static bool gl_frame(void *data, const void *frame, gl->renderchain_driver->unbind_vao(gl, gl->renderchain_data); - context_bind_hw_render(gl, true); + gl_context_bind_hw_render(gl, true); return true; } @@ -1267,7 +1270,7 @@ static void gl_free(void *data) if (!gl) return; - context_bind_hw_render(gl, false); + gl_context_bind_hw_render(gl, false); if (gl->have_sync) { @@ -1333,13 +1336,13 @@ static void gl_set_nonblock_state(void *data, bool state) RARCH_LOG("[GL]: VSync => %s\n", state ? "off" : "on"); - context_bind_hw_render(gl, false); + gl_context_bind_hw_render(gl, false); if (!state) interval = settings->uints.video_swap_interval; video_context_driver_swap_interval(&interval); - context_bind_hw_render(gl, true); + gl_context_bind_hw_render(gl, true); } static bool resolve_extensions(gl_t *gl, const char *context_ident, const video_info_t *video) @@ -1871,9 +1874,9 @@ static void *gl_init(const video_info_t *video, * create textures. */ gl->textures = 1; #ifdef GL_DEBUG - context_bind_hw_render(gl, true); + gl_context_bind_hw_render(gl, true); gl_begin_debug(gl); - context_bind_hw_render(gl, false); + gl_context_bind_hw_render(gl, false); #endif } @@ -2009,7 +2012,7 @@ static void *gl_init(const video_info_t *video, goto error; } - context_bind_hw_render(gl, true); + gl_context_bind_hw_render(gl, true); return gl; error: @@ -2066,7 +2069,7 @@ static void gl_update_tex_filter_frame(gl_t *gl) wrap_info.idx = 0; wrap_info.type = RARCH_WRAP_BORDER; - context_bind_hw_render(gl, false); + gl_context_bind_hw_render(gl, false); shader_filter.index = 1; shader_filter.smooth = &smooth; @@ -2103,7 +2106,7 @@ static void gl_update_tex_filter_frame(gl_t *gl) } glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); - context_bind_hw_render(gl, true); + gl_context_bind_hw_render(gl, true); } static bool gl_set_shader(void *data, @@ -2118,7 +2121,7 @@ static bool gl_set_shader(void *data, if (!gl) return false; - context_bind_hw_render(gl, false); + gl_context_bind_hw_render(gl, false); if (type == RARCH_SHADER_NONE) return false; @@ -2201,13 +2204,13 @@ static bool gl_set_shader(void *data, /* Apparently need to set viewport for passes when we aren't using FBOs. */ gl_set_shader_viewports(gl); - context_bind_hw_render(gl, true); + gl_context_bind_hw_render(gl, true); #endif return true; error: - context_bind_hw_render(gl, true); + gl_context_bind_hw_render(gl, true); return false; } @@ -2305,7 +2308,7 @@ static bool gl_overlay_load(void *data, if (!gl) return false; - context_bind_hw_render(gl, false); + gl_context_bind_hw_render(gl, false); gl_free_overlay(gl); gl->overlay_tex = (GLuint*) @@ -2313,7 +2316,7 @@ static bool gl_overlay_load(void *data, if (!gl->overlay_tex) { - context_bind_hw_render(gl, true); + gl_context_bind_hw_render(gl, true); return false; } @@ -2351,7 +2354,7 @@ static bool gl_overlay_load(void *data, gl->overlay_color_coord[16 * i + j] = 1.0f; } - context_bind_hw_render(gl, true); + gl_context_bind_hw_render(gl, true); return true; } From 35620ffe473f5dee6119bf9a8e2e0e77df270420 Mon Sep 17 00:00:00 2001 From: Stuart Carnie Date: Sun, 14 Oct 2018 11:07:57 -0700 Subject: [PATCH 050/304] feat(Metal): Add support for screen shots --- .../RetroArch_Metal.xcodeproj/project.pbxproj | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj index a0780ba6cc..e4dcacd08a 100644 --- a/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj @@ -8,12 +8,7 @@ /* Begin PBXBuildFile section */ 05269A6220ABF20500C29F1E /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05269A6120ABF20500C29F1E /* MetalKit.framework */; }; - 053FC25E21433F2200D98D46 /* QtConcurrent.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25521433F1700D98D46 /* QtConcurrent.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 053FC26021433F2200D98D46 /* QtCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25421433F1700D98D46 /* QtCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 053FC26221433F2200D98D46 /* QtGui.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25321433F1700D98D46 /* QtGui.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 053FC26421433F2200D98D46 /* QtNetwork.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25621433F1800D98D46 /* QtNetwork.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 053FC26521433F2200D98D46 /* QtWidgets.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25721433F1800D98D46 /* QtWidgets.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - 053FC26621433F2200D98D46 /* QtWidgets.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25721433F1800D98D46 /* QtWidgets.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 053FC270214340F500D98D46 /* QtGui.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25321433F1700D98D46 /* QtGui.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 053FC271214340F500D98D46 /* QtNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25621433F1800D98D46 /* QtNetwork.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 053FC272214341E000D98D46 /* QtConcurrent.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25521433F1700D98D46 /* QtConcurrent.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -76,11 +71,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 053FC26021433F2200D98D46 /* QtCore.framework in Embed Frameworks */, - 053FC25E21433F2200D98D46 /* QtConcurrent.framework in Embed Frameworks */, - 053FC26621433F2200D98D46 /* QtWidgets.framework in Embed Frameworks */, - 053FC26421433F2200D98D46 /* QtNetwork.framework in Embed Frameworks */, - 053FC26221433F2200D98D46 /* QtGui.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -1603,7 +1593,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/zsh; - shellScript = "BINARY=${TARGET_BUILD_DIR}/${EXECUTABLE_PATH}\nVER=Versions/${QT_VERSION}\nfor name in {QtConcurrent,QtCore,QtWidgets,QtNetwork,QtGui}; do\n echo updating install path for ${name}.framework\n install_name_tool -change ${QT_FRAMEWORK_PATH}/${name}.framework/${VER}/${name} @executable_path/../Frameworks/${name}.framework/${VER}/${name} ${BINARY}\ndone"; + shellScript = "echo \"Updating ${FULL_PRODUCT_NAME} with Qt deployment\"\n${QT_INSTALL}/bin/macdeployqt ${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME} -no-strip -verbose=1\n"; showEnvVarsInLog = 0; }; 053FC2782143764B00D98D46 /* ShellScript */ = { @@ -1617,7 +1607,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "make -C ${SRCBASE} -f Makefile.apple HAVE_QT=1 MOC=${QT_INSTALL}/bin/moc generate"; + shellScript = "make -C ${SRCBASE} -f Makefile.apple HAVE_QT=1 MOC=${QT_INSTALL}/bin/moc generate\n"; }; /* End PBXShellScriptBuildPhase section */ From b48768c02360f7769b6e66813c88b432caa598ce Mon Sep 17 00:00:00 2001 From: Sven <40953353+RetroSven@users.noreply.github.com> Date: Sun, 14 Oct 2018 14:25:44 -0400 Subject: [PATCH 051/304] extend cheat searching to accommodate multiple memory pointers --- libretro-common/include/libretro.h | 19 ++- managers/cheat_manager.c | 231 ++++++++++++++++++++++------- managers/cheat_manager.h | 4 +- menu/menu_displaylist.c | 4 +- menu/menu_setting.c | 2 +- 5 files changed, 197 insertions(+), 63 deletions(-) diff --git a/libretro-common/include/libretro.h b/libretro-common/include/libretro.h index 4cbd18936c..6748c44dad 100644 --- a/libretro-common/include/libretro.h +++ b/libretro-common/include/libretro.h @@ -1290,14 +1290,17 @@ struct retro_hw_render_context_negotiation_interface * dependence */ #define RETRO_SERIALIZATION_QUIRK_PLATFORM_DEPENDENT (1 << 6) -#define RETRO_MEMDESC_CONST (1 << 0) /* The frontend will never change this memory area once retro_load_game has returned. */ -#define RETRO_MEMDESC_BIGENDIAN (1 << 1) /* The memory area contains big endian data. Default is little endian. */ -#define RETRO_MEMDESC_ALIGN_2 (1 << 16) /* All memory access in this area is aligned to their own size, or 2, whichever is smaller. */ -#define RETRO_MEMDESC_ALIGN_4 (2 << 16) -#define RETRO_MEMDESC_ALIGN_8 (3 << 16) -#define RETRO_MEMDESC_MINSIZE_2 (1 << 24) /* All memory in this region is accessed at least 2 bytes at the time. */ -#define RETRO_MEMDESC_MINSIZE_4 (2 << 24) -#define RETRO_MEMDESC_MINSIZE_8 (3 << 24) +#define RETRO_MEMDESC_CONST (1 << 0) /* The frontend will never change this memory area once retro_load_game has returned. */ +#define RETRO_MEMDESC_BIGENDIAN (1 << 1) /* The memory area contains big endian data. Default is little endian. */ +#define RETRO_MEMDESC_SYSTEM_RAM (1 << 2) /* The memory area is system RAM. This is main RAM of the gaming system. */ +#define RETRO_MEMDESC_SAVE_RAM (1 << 3) /* The memory area is save RAM. This RAM is usually found on a game cartridge, backed up by a battery. */ +#define RETRO_MEMDESC_VIDEO_RAM (1 << 4) /* The memory area is video RAM (VRAM) */ +#define RETRO_MEMDESC_ALIGN_2 (1 << 16) /* All memory access in this area is aligned to their own size, or 2, whichever is smaller. */ +#define RETRO_MEMDESC_ALIGN_4 (2 << 16) +#define RETRO_MEMDESC_ALIGN_8 (3 << 16) +#define RETRO_MEMDESC_MINSIZE_2 (1 << 24) /* All memory in this region is accessed at least 2 bytes at the time. */ +#define RETRO_MEMDESC_MINSIZE_4 (2 << 24) +#define RETRO_MEMDESC_MINSIZE_8 (3 << 24) struct retro_memory_descriptor { uint64_t flags; diff --git a/managers/cheat_manager.c b/managers/cheat_manager.c index 6fd50412b7..de8892c30d 100644 --- a/managers/cheat_manager.c +++ b/managers/cheat_manager.c @@ -544,14 +544,22 @@ void cheat_manager_free(void) if ( cheat_manager_state.matches ) free(cheat_manager_state.matches); + if ( cheat_manager_state.memory_buf_list ) + free(cheat_manager_state.memory_buf_list); + + if ( cheat_manager_state.memory_size_list ) + free(cheat_manager_state.memory_size_list); + cheat_manager_state.cheats = NULL; cheat_manager_state.size = 0; cheat_manager_state.buf_size = 0; cheat_manager_state.prev_memory_buf = NULL; cheat_manager_state.curr_memory_buf = NULL; + cheat_manager_state.memory_buf_list = NULL; + cheat_manager_state.memory_size_list = NULL; cheat_manager_state.matches = NULL; + cheat_manager_state.num_memory_buffers = 0; cheat_manager_state.total_memory_size = 0; - cheat_manager_state.actual_memory_size = 0; cheat_manager_state.memory_initialized = false; cheat_manager_state.memory_search_initialized = false; @@ -713,34 +721,105 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) retro_ctx_memory_info_t meminfo; bool refresh = false; bool is_search_initialization = (setting != NULL); + rarch_system_info_t *system = runloop_get_system_info(); + int i ; + unsigned offset = 0; - meminfo.id = RETRO_MEMORY_SYSTEM_RAM; - if (!core_get_memory(&meminfo)) + cheat_manager_state.num_memory_buffers = 0 ; + cheat_manager_state.total_memory_size = 0 ; + cheat_manager_state.curr_memory_buf = NULL ; + if (cheat_manager_state.memory_buf_list != NULL) { - runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_INIT_FAIL), 1, 180, true); - return 0; + free(cheat_manager_state.memory_buf_list) ; + cheat_manager_state.memory_buf_list = NULL ; + } + if (cheat_manager_state.memory_size_list != NULL) + { + free(cheat_manager_state.memory_size_list) ; + cheat_manager_state.memory_size_list = NULL ; } - if ( meminfo.size == 0 ) - return 0; + if (system && system->mmaps.num_descriptors > 0) + { + for (i = 0; i < system->mmaps.num_descriptors; i++) + { + if ((system->mmaps.descriptors[i].core.flags & RETRO_MEMDESC_SYSTEM_RAM) != 0 && + system->mmaps.descriptors[i].core.ptr != NULL && + system->mmaps.descriptors[i].core.len > 0) + { + cheat_manager_state.num_memory_buffers++ ; + + if (cheat_manager_state.memory_buf_list == NULL) + cheat_manager_state.memory_buf_list = calloc(1, sizeof(uint8_t *)); + else + cheat_manager_state.memory_buf_list = realloc(cheat_manager_state.memory_buf_list, sizeof(uint8_t *)*cheat_manager_state.num_memory_buffers); + + if (cheat_manager_state.memory_size_list == NULL) + cheat_manager_state.memory_size_list = calloc(1, sizeof(unsigned)); + else + cheat_manager_state.memory_size_list = realloc(cheat_manager_state.memory_size_list, sizeof(unsigned)*cheat_manager_state.num_memory_buffers); + + cheat_manager_state.memory_buf_list[cheat_manager_state.num_memory_buffers-1] = system->mmaps.descriptors[i].core.ptr ; + cheat_manager_state.memory_size_list[cheat_manager_state.num_memory_buffers-1] = system->mmaps.descriptors[i].core.len ; + cheat_manager_state.total_memory_size += system->mmaps.descriptors[i].core.len ; + + if (cheat_manager_state.curr_memory_buf == NULL) + cheat_manager_state.curr_memory_buf = system->mmaps.descriptors[i].core.ptr; + } + } + } + + if (cheat_manager_state.num_memory_buffers == 0) + { + meminfo.id = RETRO_MEMORY_SYSTEM_RAM; + if (!core_get_memory(&meminfo)) + { + runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_INIT_FAIL), 1, 180, true); + return 0; + } + + if (meminfo.size == 0) + return 0; + + cheat_manager_state.memory_buf_list = calloc(1, sizeof(uint8_t *)); + cheat_manager_state.memory_size_list = calloc(1, sizeof(unsigned)); + cheat_manager_state.num_memory_buffers = 1 ; + cheat_manager_state.memory_buf_list[0] = meminfo.data ; + cheat_manager_state.memory_size_list[0] = (unsigned)meminfo.size ; + cheat_manager_state.total_memory_size = (unsigned)meminfo.size; + cheat_manager_state.curr_memory_buf = meminfo.data; + + } - cheat_manager_state.actual_memory_size = (unsigned)meminfo.size; - cheat_manager_state.curr_memory_buf = meminfo.data; - cheat_manager_state.total_memory_size = (unsigned)meminfo.size; cheat_manager_state.num_matches = (cheat_manager_state.total_memory_size*8)/((int)pow(2,cheat_manager_state.search_bit_size)); + /* Ensure we're aligned on 4-byte boundary */ #if 0 if (meminfo.size % 4 > 0) cheat_manager_state.total_memory_size = cheat_manager_state.total_memory_size + (4 - (meminfo.size%4)); #endif + if (is_search_initialization) { + if (cheat_manager_state.prev_memory_buf != NULL) + { + free(cheat_manager_state.prev_memory_buf); + cheat_manager_state.prev_memory_buf = NULL ; + } + cheat_manager_state.prev_memory_buf = (uint8_t*) calloc(cheat_manager_state.total_memory_size, sizeof(uint8_t)); if (!cheat_manager_state.prev_memory_buf) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_INIT_FAIL), 1, 180, true); return 0; } + + if (cheat_manager_state.matches != NULL) + { + free(cheat_manager_state.matches); + cheat_manager_state.matches = NULL ; + } + cheat_manager_state.matches = (uint8_t*) calloc(cheat_manager_state.total_memory_size, sizeof(uint8_t)); if (!cheat_manager_state.matches) { @@ -751,7 +830,15 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) } memset(cheat_manager_state.matches, 0xFF, cheat_manager_state.total_memory_size); - memcpy(cheat_manager_state.prev_memory_buf, cheat_manager_state.curr_memory_buf, cheat_manager_state.actual_memory_size); + + offset = 0 ; + + for ( i = 0 ; i < cheat_manager_state.num_memory_buffers ; i++) + { + memcpy(cheat_manager_state.prev_memory_buf+offset, cheat_manager_state.memory_buf_list[i], cheat_manager_state.memory_size_list[i]); + offset += cheat_manager_state.memory_size_list[i] ; + } + cheat_manager_state.memory_search_initialized = true; } @@ -771,6 +858,25 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) return 0; } +static unsigned translate_address(unsigned address, unsigned char **curr) +{ + unsigned offset = 0 ; + unsigned i = 0 ; + + for (i = 0 ; i < cheat_manager_state.num_memory_buffers ; i++ ) + { + if ( (address >= offset) && (address < offset+cheat_manager_state.memory_size_list[i]) ) + { + *curr = cheat_manager_state.memory_buf_list[i] ; + break ; + } + else + offset += cheat_manager_state.memory_size_list[i] ; + } + + return offset ; +} + static void cheat_manager_setup_search_meta(unsigned int bitsize, unsigned int *bytes_per_item, unsigned int *mask, unsigned int *bits) { switch( bitsize) @@ -868,9 +974,11 @@ int cheat_manager_search(enum cheat_search_type search_type) unsigned int mask = 0; unsigned int bytes_per_item = 1; unsigned int bits = 8; + unsigned int offset = 0; + unsigned int i = 0; bool refresh = false; - if (!cheat_manager_state.curr_memory_buf) + if (cheat_manager_state.num_memory_buffers == 0) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_NOT_INITIALIZED), 1, 180, true); return 0; @@ -884,13 +992,15 @@ int cheat_manager_search(enum cheat_search_type search_type) { unsigned byte_part; + offset = translate_address(idx, &curr) ; + switch (bytes_per_item) { case 2 : { curr_val = cheat_manager_state.big_endian ? - (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256); + (*(curr+idx-offset)*256) + *(curr+idx+1-offset) : + *(curr+idx-offset) + (*(curr+idx+1-offset)*256); prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256) + *(prev+idx+1) : *(prev+idx) + (*(prev+idx+1)*256); @@ -899,8 +1009,8 @@ int cheat_manager_search(enum cheat_search_type search_type) case 4 : { curr_val = cheat_manager_state.big_endian ? - (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); + (*(curr+idx-offset)*256*256*256) + (*(curr+idx+1-offset)*256*256) + (*(curr+idx+2-offset)*256) + *(curr+idx+3-offset) : + *(curr+idx-offset) + (*(curr+idx+1-offset)*256) + (*(curr+idx+2-offset)*256*256) + (*(curr+idx+3-offset)*256*256*256); prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256*256*256) + (*(prev+idx+1)*256*256) + (*(prev+idx+2)*256) + *(prev+idx+3) : *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256); @@ -909,7 +1019,7 @@ int cheat_manager_search(enum cheat_search_type search_type) case 1 : default : { - curr_val = *(curr+idx); + curr_val = *(curr-offset+idx); prev_val = *(prev+idx); break; } @@ -973,7 +1083,13 @@ int cheat_manager_search(enum cheat_search_type search_type) } } - memcpy(cheat_manager_state.prev_memory_buf, cheat_manager_state.curr_memory_buf, cheat_manager_state.actual_memory_size); + offset = 0 ; + + for ( i = 0 ; i < cheat_manager_state.num_memory_buffers ; i++) + { + memcpy(cheat_manager_state.prev_memory_buf+offset, cheat_manager_state.memory_buf_list[i], cheat_manager_state.memory_size_list[i]); + offset += cheat_manager_state.memory_size_list[i] ; + } snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_FOUND_MATCHES), cheat_manager_state.num_matches); msg[sizeof(msg) - 1] = 0; @@ -1015,7 +1131,9 @@ int cheat_manager_add_matches(const char *path, unsigned int bits = 8; unsigned int curr_val = 0; unsigned int num_added = 0; - unsigned char *curr = cheat_manager_state.curr_memory_buf; + unsigned int offset = 0; + unsigned int i = 0; + unsigned char *curr = cheat_manager_state.curr_memory_buf; if ( cheat_manager_state.num_matches + cheat_manager_state.size > 100 ) { @@ -1026,21 +1144,23 @@ int cheat_manager_add_matches(const char *path, for (idx = 0; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) { + offset = translate_address(idx, &curr) ; + switch ( bytes_per_item ) { case 2 : curr_val = cheat_manager_state.big_endian ? - (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256); + (*(curr+idx-offset)*256) + *(curr+idx+1-offset) : + *(curr+idx-offset) + (*(curr+idx+1-offset)*256); break; case 4 : curr_val = cheat_manager_state.big_endian ? - (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); + (*(curr+idx-offset)*256*256*256) + (*(curr+idx+1-offset)*256*256) + (*(curr+idx+2-offset)*256) + *(curr+idx+3-offset) : + *(curr+idx-offset) + (*(curr+idx+1-offset)*256) + (*(curr+idx+2-offset)*256*256) + (*(curr+idx+3-offset)*256*256*256); break; case 1 : default : - curr_val = *(curr+idx); + curr_val = *(curr-offset+idx); break; } for (byte_part = 0; byte_part < 8/bits; byte_part++) @@ -1178,6 +1298,7 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu void cheat_manager_apply_retro_cheats(void) { unsigned i; + unsigned int offset; unsigned int mask = 0; unsigned int bytes_per_item = 1; unsigned int bits = 8; @@ -1216,26 +1337,28 @@ void cheat_manager_apply_retro_cheats(void) curr = cheat_manager_state.curr_memory_buf; idx = cheat_manager_state.cheats[i].address; + offset = translate_address(idx, &curr) ; + switch (bytes_per_item) { case 2 : { curr_val = cheat_manager_state.big_endian ? - (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256); + (*(curr+idx-offset)*256) + *(curr+idx+1-offset) : + *(curr+idx-offset) + (*(curr+idx+1-offset)*256); break; } case 4 : { curr_val = cheat_manager_state.big_endian ? - (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); + (*(curr+idx-offset)*256*256*256) + (*(curr+idx+1-offset)*256*256) + (*(curr+idx+2-offset)*256) + *(curr+idx+3-offset) : + *(curr+idx-offset) + (*(curr+idx+1-offset)*256) + (*(curr+idx+2-offset)*256*256) + (*(curr+idx+3-offset)*256*256*256); break; } case 1 : default : { - curr_val = *(curr+idx); + curr_val = *(curr+idx-offset); break; } } @@ -1283,30 +1406,30 @@ void cheat_manager_apply_retro_cheats(void) case 2 : if (cheat_manager_state.cheats[i].big_endian) { - *(curr+idx) = (value_to_set >> 8) & 0xFF; - *(curr+idx+1) = value_to_set & 0xFF; + *(curr+idx-offset) = (value_to_set >> 8) & 0xFF; + *(curr+idx+1-offset) = value_to_set & 0xFF; } else { - *(curr+idx) = value_to_set & 0xFF; - *(curr+idx+1) = (value_to_set >> 8) & 0xFF; + *(curr+idx-offset) = value_to_set & 0xFF; + *(curr+idx+1-offset) = (value_to_set >> 8) & 0xFF; } break; case 4 : if (cheat_manager_state.cheats[i].big_endian) { - *(curr+idx) = (value_to_set >> 24) & 0xFF; - *(curr+idx+1) = (value_to_set >> 16) & 0xFF; - *(curr+idx+2) = (value_to_set >> 8) & 0xFF; - *(curr+idx+3) = value_to_set & 0xFF; + *(curr+idx-offset) = (value_to_set >> 24) & 0xFF; + *(curr+idx+1-offset) = (value_to_set >> 16) & 0xFF; + *(curr+idx+2-offset) = (value_to_set >> 8) & 0xFF; + *(curr+idx+3-offset) = value_to_set & 0xFF; } else { - *(curr+idx) = value_to_set & 0xFF; - *(curr+idx+1) = (value_to_set >> 8) & 0xFF; - *(curr+idx+2) = (value_to_set >> 16) & 0xFF; - *(curr+idx+3) = (value_to_set >> 24) & 0xFF; + *(curr+idx-offset) = value_to_set & 0xFF; + *(curr+idx+1-offset) = (value_to_set >> 8) & 0xFF; + *(curr+idx+2-offset) = (value_to_set >> 16) & 0xFF; + *(curr+idx+3-offset) = (value_to_set >> 24) & 0xFF; } break; @@ -1314,7 +1437,7 @@ void cheat_manager_apply_retro_cheats(void) if (bits < 8) { unsigned bitpos; - unsigned char val = *(curr+idx); + unsigned char val = *(curr+idx-offset); for (bitpos = 0; bitpos < 8; bitpos++) { @@ -1327,13 +1450,13 @@ void cheat_manager_apply_retro_cheats(void) val = val | (((value_to_set>>bitpos)&0x01)< cheat_manager_state.num_matches-1) return; - if (!curr) + if (cheat_manager_state.num_memory_buffers == 0) return; cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits); @@ -1392,12 +1519,14 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig for (idx = start_idx; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) { + offset = translate_address(idx, &curr) ; + switch (bytes_per_item ) { case 2 : curr_val = cheat_manager_state.big_endian ? - (*(curr+idx)*256) + *(curr+idx+1) : - *(curr+idx) + (*(curr+idx+1)*256); + (*(curr+idx-offset)*256) + *(curr+idx+1-offset) : + *(curr+idx-offset) + (*(curr+idx+1-offset)*256); if (prev != NULL) prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256) + *(prev+idx+1) : @@ -1405,8 +1534,8 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig break; case 4 : curr_val = cheat_manager_state.big_endian ? - (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : - *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256); + (*(curr+idx-offset)*256*256*256) + (*(curr+idx+1-offset)*256*256) + (*(curr+idx+2-offset)*256) + *(curr+idx+3-offset) : + *(curr+idx-offset) + (*(curr+idx+1-offset)*256) + (*(curr+idx+2-offset)*256*256) + (*(curr+idx+3-offset)*256*256*256); if (prev != NULL) prev_val = cheat_manager_state.big_endian ? (*(prev+idx)*256*256*256) + (*(prev+idx+1)*256*256) + (*(prev+idx+2)*256) + *(prev+idx+3) : @@ -1414,7 +1543,7 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig break; case 1 : default : - curr_val = *(curr+idx); + curr_val = *(curr+idx-offset); if (prev != NULL) prev_val = *(prev+idx); break; diff --git a/managers/cheat_manager.h b/managers/cheat_manager.h index 1e0737bcbc..e941036a07 100644 --- a/managers/cheat_manager.h +++ b/managers/cheat_manager.h @@ -159,10 +159,12 @@ struct cheat_manager unsigned size; unsigned buf_size; unsigned total_memory_size ; - unsigned actual_memory_size ; uint8_t *curr_memory_buf ; uint8_t *prev_memory_buf ; uint8_t *matches ; + uint8_t **memory_buf_list ; + unsigned *memory_size_list ; + unsigned num_memory_buffers ; struct item_cheat working_cheat; unsigned match_idx ; unsigned match_action ; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index adb2d3d375..113e3495c9 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -5367,7 +5367,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) setting = menu_setting_find_enum(MENU_ENUM_LABEL_CHEAT_BROWSE_MEMORY); if ( setting ) - setting->max = cheat_manager_state.actual_memory_size>0?cheat_manager_state.actual_memory_size-1:0 ; + setting->max = cheat_manager_state.total_memory_size>0?cheat_manager_state.total_memory_size-1:0 ; menu_displaylist_parse_settings_enum(menu, info, @@ -5571,7 +5571,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) setting->max = cheat_manager_state.num_matches-1; setting = menu_setting_find_enum(MENU_ENUM_LABEL_CHEAT_BROWSE_MEMORY); if (setting) - setting->max = cheat_manager_state.actual_memory_size>0?cheat_manager_state.actual_memory_size-1:0 ; + setting->max = cheat_manager_state.total_memory_size>0?cheat_manager_state.total_memory_size-1:0 ; info->need_refresh = true; info->need_push = true; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 5431fa6df6..5ac6ca9464 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4985,7 +4985,7 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - menu_settings_list_current_add_range(list, list_info, 0, cheat_manager_state.actual_memory_size>0?cheat_manager_state.actual_memory_size-1:0, 1, true, true); + menu_settings_list_current_add_range(list, list_info, 0, cheat_manager_state.total_memory_size>0?cheat_manager_state.total_memory_size-1:0, 1, true, true); (*list)[list_info->index - 1].action_left = &setting_uint_action_left_with_refresh; (*list)[list_info->index - 1].action_right = &setting_uint_action_right_with_refresh; (*list)[list_info->index - 1].get_string_representation = &setting_get_string_representation_uint_cheat_browse_address; From 9e2d688e1dc056c61f420b7b393e9056a9bc1a08 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 15 Oct 2018 01:26:54 +0200 Subject: [PATCH 052/304] Get rid of video_context_driver_get_context_data --- gfx/drivers/vulkan.c | 19 +++++++++---------- gfx/video_driver.c | 15 ++------------- gfx/video_driver.h | 2 -- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index 859b37a2b6..3ac5d1fc12 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -1136,24 +1136,23 @@ static void *vulkan_init(const video_info_t *video, vk_t *vk = (vk_t*)calloc(1, sizeof(*vk)); if (!vk) return NULL; - - vk->video = *video; - - ctx_driver = vulkan_get_context(vk); + ctx_driver = vulkan_get_context(vk); if (!ctx_driver) { RARCH_ERR("[Vulkan]: Failed to get Vulkan context.\n"); goto error; } - vk->ctx_driver = ctx_driver; + vk->video = *video; + vk->ctx_driver = ctx_driver; + video_context_driver_set((const gfx_ctx_driver_t*)ctx_driver); video_context_driver_get_video_size(&mode); - full_x = mode.width; - full_y = mode.height; - mode.width = 0; - mode.height = 0; + full_x = mode.width; + full_y = mode.height; + mode.width = 0; + mode.height = 0; RARCH_LOG("[Vulkan]: Detecting screen resolution %ux%u.\n", full_x, full_y); interval = video->vsync ? video->swap_interval : 0; @@ -1188,7 +1187,7 @@ static void *vulkan_init(const video_info_t *video, RARCH_LOG("[Vulkan]: Using resolution %ux%u\n", temp_width, temp_height); - video_context_driver_get_context_data(&vk->context); + *(void**)&vk->context = vk->ctx_driver->get_context_data(vk->ctx_data); vk->vsync = video->vsync; vk->fullscreen = video->fullscreen; diff --git a/gfx/video_driver.c b/gfx/video_driver.c index cf5211f338..358737a0bf 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -3273,15 +3273,6 @@ bool video_context_driver_get_video_size(gfx_ctx_mode_t *mode_info) return true; } -bool video_context_driver_get_context_data(void *data) -{ - if (!current_video_context.get_context_data) - return false; - *(void**)data = current_video_context.get_context_data( - video_context_data); - return true; -} - bool video_context_driver_show_mouse(bool *bool_data) { if (!current_video_context.show_mouse) @@ -3384,15 +3375,13 @@ enum gfx_ctx_api video_context_driver_get_api(void) bool video_driver_has_windowed(void) { -#if defined(RARCH_CONSOLE) || defined(RARCH_MOBILE) - return false; -#else +#if !(defined(RARCH_CONSOLE) || defined(RARCH_MOBILE)) if (video_driver_data && current_video->has_windowed) return current_video->has_windowed(video_driver_data); else if (video_context_data && current_video_context.has_windowed) return current_video_context.has_windowed(video_context_data); - return false; #endif + return false; } bool video_driver_cached_frame_has_valid_framebuffer(void) diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 013df5745a..167b8687b4 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -1181,8 +1181,6 @@ bool video_context_driver_get_video_size(gfx_ctx_mode_t *mode_info); bool video_context_driver_get_refresh_rate(float *refresh_rate); -bool video_context_driver_get_context_data(void *data); - bool video_context_driver_show_mouse(bool *bool_data); bool video_context_driver_set_flags(gfx_ctx_flags_t *flags); From 9f74b05b13eb9875d9d7df55e533f45ed79a831d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 15 Oct 2018 03:38:15 +0200 Subject: [PATCH 053/304] Add HAVE_QT ifdefs --- ui/drivers/ui_cocoa.m | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 1e86b64667..c2d640fe5f 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -418,16 +418,29 @@ static char** waiting_argv; { int ret; unsigned sleep_ms = 0; +#ifdef HAVE_QT + const ui_application_t *application = ui_application_qt.process_events(); +#else const ui_application_t *application = ui_companion_driver_get_application_ptr(); +#endif if (application) application->process_events(); + ret = runloop_iterate(&sleep_ms); + if (ret == 1 && sleep_ms > 0) retro_sleep(sleep_ms); + task_queue_check(); + while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002, FALSE) == kCFRunLoopRunHandledSource); if (ret == -1) + { +#ifdef HAVE_QT + ui_application_qt.quit(); +#endif break; + } }while(1); main_exit(NULL); From 7717631909cf5195b747603165d9e5824de3f7ad Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 15 Oct 2018 03:38:43 +0200 Subject: [PATCH 054/304] Buildfix --- ui/drivers/ui_cocoa.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index c2d640fe5f..33d1852c96 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -419,7 +419,7 @@ static char** waiting_argv; int ret; unsigned sleep_ms = 0; #ifdef HAVE_QT - const ui_application_t *application = ui_application_qt.process_events(); + const ui_application_t *application = &ui_application_qt; #else const ui_application_t *application = ui_companion_driver_get_application_ptr(); #endif From 9e90316da9a73d7682e12f3b9f22a1bedfef4a96 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 15 Oct 2018 04:01:11 +0200 Subject: [PATCH 055/304] CXX_BUILD fixes --- managers/cheat_manager.c | 331 ++++++++++++++++++--------------------- 1 file changed, 152 insertions(+), 179 deletions(-) diff --git a/managers/cheat_manager.c b/managers/cheat_manager.c index de8892c30d..f0ce7643b4 100644 --- a/managers/cheat_manager.c +++ b/managers/cheat_manager.c @@ -127,30 +127,30 @@ bool cheat_manager_save(const char *path, const char *cheat_database, bool overw unsigned i; char buf[PATH_MAX_LENGTH]; char cheats_file[PATH_MAX_LENGTH]; - config_file_t *conf = NULL; + config_file_t *conf = NULL; unsigned int* data_ptrs[16] = { NULL}; - char* keys[16] = { - "cheat%u_handler", - "cheat%u_memory_search_size", - "cheat%u_cheat_type", - "cheat%u_value", - "cheat%u_address", - "cheat%u_address_bit_position", - "cheat%u_rumble_type", - "cheat%u_rumble_value", - "cheat%u_rumble_port", - "cheat%u_rumble_primary_strength", - "cheat%u_rumble_primary_duration", - "cheat%u_rumble_secondary_strength", - "cheat%u_rumble_secondary_duration", - "cheat%u_repeat_count", - "cheat%u_repeat_add_to_value", - "cheat%u_repeat_add_to_address", + char* keys[16] = { + (char*)"cheat%u_handler", + (char*)"cheat%u_memory_search_size", + (char*)"cheat%u_cheat_type", + (char*)"cheat%u_value", + (char*)"cheat%u_address", + (char*)"cheat%u_address_bit_position", + (char*)"cheat%u_rumble_type", + (char*)"cheat%u_rumble_value", + (char*)"cheat%u_rumble_port", + (char*)"cheat%u_rumble_primary_strength", + (char*)"cheat%u_rumble_primary_duration", + (char*)"cheat%u_rumble_secondary_strength", + (char*)"cheat%u_rumble_secondary_duration", + (char*)"cheat%u_repeat_count", + (char*)"cheat%u_repeat_add_to_value", + (char*)"cheat%u_repeat_add_to_address" }; buf[0] = cheats_file[0] = '\0'; - if ( (!cheat_manager_state.cheats) || cheat_manager_state.size==0 ) + if ((!cheat_manager_state.cheats) || cheat_manager_state.size==0) return false; if (!cheat_database) @@ -161,7 +161,7 @@ bool cheat_manager_save(const char *path, const char *cheat_database, bool overw fill_pathname_noext(cheats_file, buf, ".cht", sizeof(cheats_file)); } - if ( !overwrite ) + if (!overwrite) conf = config_file_new(cheats_file); else conf = config_file_new(NULL); @@ -235,18 +235,16 @@ bool cheat_manager_save(const char *path, const char *cheat_database, bool overw bool cheat_manager_copy_idx_to_working(unsigned idx) { - if ( (!cheat_manager_state.cheats) || (cheat_manager_state.size < idx+1)) - { + if ((!cheat_manager_state.cheats) || (cheat_manager_state.size < idx+1)) return false; - } memcpy(&(cheat_manager_state.working_cheat), &(cheat_manager_state.cheats[idx]), sizeof(struct item_cheat)); - if ( cheat_manager_state.cheats[idx].desc != NULL ) + if (cheat_manager_state.cheats[idx].desc) strlcpy(cheat_manager_state.working_desc, cheat_manager_state.cheats[idx].desc, CHEAT_DESC_SCRATCH_SIZE); else cheat_manager_state.working_desc[0] = '\0'; - if ( cheat_manager_state.cheats[idx].code != NULL ) + if (cheat_manager_state.cheats[idx].code) strlcpy(cheat_manager_state.working_code, cheat_manager_state.cheats[idx].code, CHEAT_CODE_SCRATCH_SIZE); else cheat_manager_state.working_code[0] = '\0'; @@ -255,16 +253,16 @@ bool cheat_manager_copy_idx_to_working(unsigned idx) } bool cheat_manager_copy_working_to_idx(unsigned idx) { - if ( (!cheat_manager_state.cheats) || (cheat_manager_state.size < idx+1)) + if ((!cheat_manager_state.cheats) || (cheat_manager_state.size < idx+1)) return false; memcpy(&(cheat_manager_state.cheats[idx]), &(cheat_manager_state.working_cheat), sizeof(struct item_cheat)); - if ( cheat_manager_state.cheats[idx].desc != NULL ) + if (cheat_manager_state.cheats[idx].desc) free(cheat_manager_state.cheats[idx].desc); cheat_manager_state.cheats[idx].desc = strdup(cheat_manager_state.working_desc); - if ( cheat_manager_state.cheats[idx].code != NULL ) + if (cheat_manager_state.cheats[idx].code) free(cheat_manager_state.cheats[idx].code); cheat_manager_state.cheats[idx].code = strdup(cheat_manager_state.working_code); @@ -418,13 +416,11 @@ bool cheat_manager_load(const char *path, bool append) cheat_manager_alloc_if_empty(); - if ( append ) + if (append) { orig_size = cheat_manager_get_size(); - if ( orig_size == 0) - { + if (orig_size == 0) cheat_manager_new(cheats); - } else { cheats = cheats + orig_size; @@ -485,9 +481,9 @@ bool cheat_manager_realloc(unsigned new_size, unsigned default_handler) /* if size is decreasing, free the items that will be lost */ for (i = new_size; i < orig_size; i++) { - if ( cheat_manager_state.cheats[i].code != NULL ) + if (cheat_manager_state.cheats[i].code) free(cheat_manager_state.cheats[i].code); - if ( cheat_manager_state.cheats[i].desc != NULL ) + if (cheat_manager_state.cheats[i].desc) free(cheat_manager_state.cheats[i].desc); } @@ -529,25 +525,25 @@ void cheat_manager_free(void) { for (i = 0; i < cheat_manager_state.size; i++) { - if ( cheat_manager_state.cheats[i].desc != NULL ) + if (cheat_manager_state.cheats[i].desc) free(cheat_manager_state.cheats[i].desc); - if ( cheat_manager_state.cheats[i].code != NULL ) + if (cheat_manager_state.cheats[i].code) free(cheat_manager_state.cheats[i].code); } free(cheat_manager_state.cheats); } - if ( cheat_manager_state.prev_memory_buf ) + if (cheat_manager_state.prev_memory_buf) free(cheat_manager_state.prev_memory_buf); - if ( cheat_manager_state.matches ) + if (cheat_manager_state.matches) free(cheat_manager_state.matches); - if ( cheat_manager_state.memory_buf_list ) + if (cheat_manager_state.memory_buf_list) free(cheat_manager_state.memory_buf_list); - if ( cheat_manager_state.memory_size_list ) + if (cheat_manager_state.memory_size_list) free(cheat_manager_state.memory_size_list); cheat_manager_state.cheats = NULL; @@ -576,7 +572,7 @@ void cheat_manager_update(cheat_manager_t *handle, unsigned handle_idx) handle_idx, handle->cheats[handle_idx].state ? "ON" : "OFF", (handle->cheats[handle_idx].desc!=NULL) ? (handle->cheats[handle_idx].desc) : (handle->cheats[handle_idx].code) - ); + ); runloop_msg_queue_push(msg, 1, 180, true); RARCH_LOG("%s\n", msg); } @@ -584,7 +580,7 @@ void cheat_manager_update(cheat_manager_t *handle, unsigned handle_idx) void cheat_manager_toggle_index(unsigned i) { settings_t *settings = config_get_ptr(); - if (!cheat_manager_state.cheats || cheat_manager_state.size == 0 ) + if (!cheat_manager_state.cheats || cheat_manager_state.size == 0) return; cheat_manager_state.cheats[i].state = !cheat_manager_state.cheats[i].state; @@ -662,14 +658,15 @@ bool cheat_manager_get_game_specific_filename(char * cheat_filename, size_t max_ if (!settings || !global || !cheat_filename) return false; - if ( !core_get_system_info(&system_info) ) + if (!core_get_system_info(&system_info)) return false; core_name = system_info.library_name; game_name = path_basename(global->name.cheatfile); - if ( string_is_empty(settings->paths.path_cheat_database) || - string_is_empty(core_name) || string_is_empty(game_name) ) + if (string_is_empty(settings->paths.path_cheat_database) || + string_is_empty(core_name) || + string_is_empty(game_name)) return false; cheat_filename[0] = '\0'; @@ -690,7 +687,7 @@ void cheat_manager_load_game_specific_cheats() { char cheat_file[PATH_MAX_LENGTH]; - if (cheat_manager_get_game_specific_filename(cheat_file, PATH_MAX_LENGTH) ) + if (cheat_manager_get_game_specific_filename(cheat_file, PATH_MAX_LENGTH)) cheat_manager_load(cheat_file,true); } @@ -698,7 +695,7 @@ void cheat_manager_save_game_specific_cheats() { char cheat_file[PATH_MAX_LENGTH]; - if (cheat_manager_get_game_specific_filename(cheat_file, PATH_MAX_LENGTH) ) + if (cheat_manager_get_game_specific_filename(cheat_file, PATH_MAX_LENGTH)) cheat_manager_save(cheat_file, NULL, true); } @@ -718,25 +715,27 @@ bool cheat_manager_alloc_if_empty(void) int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) { + int i; retro_ctx_memory_info_t meminfo; - bool refresh = false; - bool is_search_initialization = (setting != NULL); - rarch_system_info_t *system = runloop_get_system_info(); - int i ; - unsigned offset = 0; + bool refresh = false; + bool is_search_initialization = (setting != NULL); + rarch_system_info_t *system = runloop_get_system_info(); + unsigned offset = 0; - cheat_manager_state.num_memory_buffers = 0 ; - cheat_manager_state.total_memory_size = 0 ; - cheat_manager_state.curr_memory_buf = NULL ; - if (cheat_manager_state.memory_buf_list != NULL) + cheat_manager_state.num_memory_buffers = 0; + cheat_manager_state.total_memory_size = 0; + cheat_manager_state.curr_memory_buf = NULL; + + if (cheat_manager_state.memory_buf_list) { - free(cheat_manager_state.memory_buf_list) ; - cheat_manager_state.memory_buf_list = NULL ; + free(cheat_manager_state.memory_buf_list); + cheat_manager_state.memory_buf_list = NULL; } - if (cheat_manager_state.memory_size_list != NULL) + + if (cheat_manager_state.memory_size_list) { - free(cheat_manager_state.memory_size_list) ; - cheat_manager_state.memory_size_list = NULL ; + free(cheat_manager_state.memory_size_list); + cheat_manager_state.memory_size_list = NULL; } if (system && system->mmaps.num_descriptors > 0) @@ -744,27 +743,27 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) for (i = 0; i < system->mmaps.num_descriptors; i++) { if ((system->mmaps.descriptors[i].core.flags & RETRO_MEMDESC_SYSTEM_RAM) != 0 && - system->mmaps.descriptors[i].core.ptr != NULL && + system->mmaps.descriptors[i].core.ptr && system->mmaps.descriptors[i].core.len > 0) { - cheat_manager_state.num_memory_buffers++ ; + cheat_manager_state.num_memory_buffers++; - if (cheat_manager_state.memory_buf_list == NULL) - cheat_manager_state.memory_buf_list = calloc(1, sizeof(uint8_t *)); + if (!cheat_manager_state.memory_buf_list) + cheat_manager_state.memory_buf_list = (uint8_t**)calloc(1, sizeof(uint8_t *)); else - cheat_manager_state.memory_buf_list = realloc(cheat_manager_state.memory_buf_list, sizeof(uint8_t *)*cheat_manager_state.num_memory_buffers); + cheat_manager_state.memory_buf_list = (uint8_t**)realloc(cheat_manager_state.memory_buf_list, sizeof(uint8_t *) * cheat_manager_state.num_memory_buffers); - if (cheat_manager_state.memory_size_list == NULL) - cheat_manager_state.memory_size_list = calloc(1, sizeof(unsigned)); + if (!cheat_manager_state.memory_size_list) + cheat_manager_state.memory_size_list = (unsigned*)calloc(1, sizeof(unsigned)); else - cheat_manager_state.memory_size_list = realloc(cheat_manager_state.memory_size_list, sizeof(unsigned)*cheat_manager_state.num_memory_buffers); + cheat_manager_state.memory_size_list = (unsigned*)realloc(cheat_manager_state.memory_size_list, sizeof(unsigned) * cheat_manager_state.num_memory_buffers); - cheat_manager_state.memory_buf_list[cheat_manager_state.num_memory_buffers-1] = system->mmaps.descriptors[i].core.ptr ; - cheat_manager_state.memory_size_list[cheat_manager_state.num_memory_buffers-1] = system->mmaps.descriptors[i].core.len ; - cheat_manager_state.total_memory_size += system->mmaps.descriptors[i].core.len ; + cheat_manager_state.memory_buf_list[cheat_manager_state.num_memory_buffers-1] = (uint8_t*)system->mmaps.descriptors[i].core.ptr; + cheat_manager_state.memory_size_list[cheat_manager_state.num_memory_buffers-1] = system->mmaps.descriptors[i].core.len; + cheat_manager_state.total_memory_size += system->mmaps.descriptors[i].core.len; - if (cheat_manager_state.curr_memory_buf == NULL) - cheat_manager_state.curr_memory_buf = system->mmaps.descriptors[i].core.ptr; + if (!cheat_manager_state.curr_memory_buf) + cheat_manager_state.curr_memory_buf = (uint8_t*)system->mmaps.descriptors[i].core.ptr; } } } @@ -781,13 +780,15 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) if (meminfo.size == 0) return 0; - cheat_manager_state.memory_buf_list = calloc(1, sizeof(uint8_t *)); - cheat_manager_state.memory_size_list = calloc(1, sizeof(unsigned)); - cheat_manager_state.num_memory_buffers = 1 ; - cheat_manager_state.memory_buf_list[0] = meminfo.data ; - cheat_manager_state.memory_size_list[0] = (unsigned)meminfo.size ; - cheat_manager_state.total_memory_size = (unsigned)meminfo.size; - cheat_manager_state.curr_memory_buf = meminfo.data; + cheat_manager_state.memory_buf_list = (uint8_t**) + calloc(1, sizeof(uint8_t *)); + cheat_manager_state.memory_size_list = (unsigned*) + calloc(1, sizeof(unsigned)); + cheat_manager_state.num_memory_buffers = 1; + cheat_manager_state.memory_buf_list[0] = (uint8_t*)meminfo.data; + cheat_manager_state.memory_size_list[0] = (unsigned)meminfo.size; + cheat_manager_state.total_memory_size = (unsigned)meminfo.size; + cheat_manager_state.curr_memory_buf = (uint8_t*)meminfo.data; } @@ -801,10 +802,10 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) if (is_search_initialization) { - if (cheat_manager_state.prev_memory_buf != NULL) + if (cheat_manager_state.prev_memory_buf) { free(cheat_manager_state.prev_memory_buf); - cheat_manager_state.prev_memory_buf = NULL ; + cheat_manager_state.prev_memory_buf = NULL; } cheat_manager_state.prev_memory_buf = (uint8_t*) calloc(cheat_manager_state.total_memory_size, sizeof(uint8_t)); @@ -814,10 +815,10 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) return 0; } - if (cheat_manager_state.matches != NULL) + if (cheat_manager_state.matches) { free(cheat_manager_state.matches); - cheat_manager_state.matches = NULL ; + cheat_manager_state.matches = NULL; } cheat_manager_state.matches = (uint8_t*) calloc(cheat_manager_state.total_memory_size, sizeof(uint8_t)); @@ -831,12 +832,12 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) memset(cheat_manager_state.matches, 0xFF, cheat_manager_state.total_memory_size); - offset = 0 ; + offset = 0; - for ( i = 0 ; i < cheat_manager_state.num_memory_buffers ; i++) + for (i = 0; i < cheat_manager_state.num_memory_buffers; i++) { memcpy(cheat_manager_state.prev_memory_buf+offset, cheat_manager_state.memory_buf_list[i], cheat_manager_state.memory_size_list[i]); - offset += cheat_manager_state.memory_size_list[i] ; + offset += cheat_manager_state.memory_size_list[i]; } cheat_manager_state.memory_search_initialized = true; @@ -860,21 +861,21 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) static unsigned translate_address(unsigned address, unsigned char **curr) { - unsigned offset = 0 ; - unsigned i = 0 ; + unsigned offset = 0; + unsigned i = 0; - for (i = 0 ; i < cheat_manager_state.num_memory_buffers ; i++ ) + for (i = 0; i < cheat_manager_state.num_memory_buffers; i++) { - if ( (address >= offset) && (address < offset+cheat_manager_state.memory_size_list[i]) ) + if ((address >= offset) && (address < offset+cheat_manager_state.memory_size_list[i])) { - *curr = cheat_manager_state.memory_buf_list[i] ; - break ; + *curr = cheat_manager_state.memory_buf_list[i]; + break; } else - offset += cheat_manager_state.memory_size_list[i] ; + offset += cheat_manager_state.memory_size_list[i]; } - return offset ; + return offset; } static void cheat_manager_setup_search_meta(unsigned int bitsize, unsigned int *bytes_per_item, unsigned int *mask, unsigned int *bits) @@ -882,47 +883,35 @@ static void cheat_manager_setup_search_meta(unsigned int bitsize, unsigned int * switch( bitsize) { case 0 : - { *bytes_per_item = 1; *bits = 1; *mask = 0x01; break; - } case 1 : - { *bytes_per_item = 1; *bits = 2; *mask = 0x03; break; - } case 2 : - { *bytes_per_item = 1; *bits = 4; *mask = 0x0F; break; - } case 3 : - { *bytes_per_item = 1; *bits = 8; *mask = 0xFF; break; - } case 4 : - { *bytes_per_item = 2; *bits = 8; *mask = 0xFFFF; break; - } case 5 : - { *bytes_per_item = 4; *bits = 8; *mask = 0xFFFFFFFF; break; - } } } @@ -992,12 +981,11 @@ int cheat_manager_search(enum cheat_search_type search_type) { unsigned byte_part; - offset = translate_address(idx, &curr) ; + offset = translate_address(idx, &curr); switch (bytes_per_item) { case 2 : - { curr_val = cheat_manager_state.big_endian ? (*(curr+idx-offset)*256) + *(curr+idx+1-offset) : *(curr+idx-offset) + (*(curr+idx+1-offset)*256); @@ -1005,9 +993,7 @@ int cheat_manager_search(enum cheat_search_type search_type) (*(prev+idx)*256) + *(prev+idx+1) : *(prev+idx) + (*(prev+idx+1)*256); break; - } case 4 : - { curr_val = cheat_manager_state.big_endian ? (*(curr+idx-offset)*256*256*256) + (*(curr+idx+1-offset)*256*256) + (*(curr+idx+2-offset)*256) + *(curr+idx+3-offset) : *(curr+idx-offset) + (*(curr+idx+1-offset)*256) + (*(curr+idx+2-offset)*256*256) + (*(curr+idx+3-offset)*256*256*256); @@ -1015,23 +1001,20 @@ int cheat_manager_search(enum cheat_search_type search_type) (*(prev+idx)*256*256*256) + (*(prev+idx+1)*256*256) + (*(prev+idx+2)*256) + *(prev+idx+3) : *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256); break; - } case 1 : default : - { curr_val = *(curr-offset+idx); prev_val = *(prev+idx); break; - } } for (byte_part = 0; byte_part < 8/bits; byte_part++) { - unsigned int curr_subval = (curr_val >> (byte_part*bits) ) & mask; - unsigned int prev_subval = (prev_val >> (byte_part*bits) ) & mask; + unsigned int curr_subval = (curr_val >> (byte_part*bits)) & mask; + unsigned int prev_subval = (prev_val >> (byte_part*bits)) & mask; unsigned int prev_match; - if (bits < 8 ) + if (bits < 8) prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)); else prev_match = *(cheat_manager_state.matches+idx); @@ -1042,53 +1025,53 @@ int cheat_manager_search(enum cheat_search_type search_type) switch (search_type) { case CHEAT_SEARCH_TYPE_EXACT : - match = ( curr_subval == cheat_manager_state.search_exact_value); + match = (curr_subval == cheat_manager_state.search_exact_value); break; case CHEAT_SEARCH_TYPE_LT : - match = ( curr_subval < prev_subval); + match = (curr_subval < prev_subval); break; case CHEAT_SEARCH_TYPE_GT : - match = ( curr_subval > prev_subval); + match = (curr_subval > prev_subval); break; case CHEAT_SEARCH_TYPE_LTE : - match = ( curr_subval <= prev_subval); + match = (curr_subval <= prev_subval); break; case CHEAT_SEARCH_TYPE_GTE : - match = ( curr_subval >= prev_subval); + match = (curr_subval >= prev_subval); break; case CHEAT_SEARCH_TYPE_EQ : - match = ( curr_subval == prev_subval); + match = (curr_subval == prev_subval); break; case CHEAT_SEARCH_TYPE_NEQ : - match = ( curr_subval != prev_subval); + match = (curr_subval != prev_subval); break; case CHEAT_SEARCH_TYPE_EQPLUS : - match = ( curr_subval == prev_subval+cheat_manager_state.search_eqplus_value); + match = (curr_subval == prev_subval+cheat_manager_state.search_eqplus_value); break; case CHEAT_SEARCH_TYPE_EQMINUS : - match = ( curr_subval == prev_subval-cheat_manager_state.search_eqminus_value); + match = (curr_subval == prev_subval-cheat_manager_state.search_eqminus_value); break; } - if (!match ) + if (!match) { - if ( bits < 8 ) + if (bits < 8) *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & - (( ~(mask << (byte_part*bits))) & 0xFF ); + (( ~(mask << (byte_part*bits))) & 0xFF); else memset(cheat_manager_state.matches+idx,0,bytes_per_item); - if ( cheat_manager_state.num_matches > 0 ) + if (cheat_manager_state.num_matches > 0) cheat_manager_state.num_matches--; } } } } - offset = 0 ; + offset = 0; - for ( i = 0 ; i < cheat_manager_state.num_memory_buffers ; i++) + for (i = 0; i < cheat_manager_state.num_memory_buffers; i++) { memcpy(cheat_manager_state.prev_memory_buf+offset, cheat_manager_state.memory_buf_list[i], cheat_manager_state.memory_size_list[i]); - offset += cheat_manager_state.memory_size_list[i] ; + offset += cheat_manager_state.memory_size_list[i]; } snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_CHEAT_SEARCH_FOUND_MATCHES), cheat_manager_state.num_matches); @@ -1108,7 +1091,7 @@ bool cheat_manager_add_new_code(unsigned int memory_search_size, unsigned int ad { int new_size = cheat_manager_get_size() + 1; - if ( !cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_RETRO) ) + if (!cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_RETRO)) return false; cheat_manager_state.cheats[cheat_manager_state.size-1].address = address; @@ -1135,7 +1118,7 @@ int cheat_manager_add_matches(const char *path, unsigned int i = 0; unsigned char *curr = cheat_manager_state.curr_memory_buf; - if ( cheat_manager_state.num_matches + cheat_manager_state.size > 100 ) + if (cheat_manager_state.num_matches + cheat_manager_state.size > 100) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_TOO_MANY), 1, 180, true); return 0; @@ -1144,9 +1127,9 @@ int cheat_manager_add_matches(const char *path, for (idx = 0; idx < cheat_manager_state.total_memory_size; idx = idx + bytes_per_item) { - offset = translate_address(idx, &curr) ; + offset = translate_address(idx, &curr); - switch ( bytes_per_item ) + switch (bytes_per_item) { case 2 : curr_val = cheat_manager_state.big_endian ? @@ -1167,13 +1150,13 @@ int cheat_manager_add_matches(const char *path, { unsigned int prev_match; - if (bits < 8 ) + if (bits < 8) { prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)); if (prev_match) { if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, (mask << (byte_part*bits)), - cheat_manager_state.big_endian, curr_val) ) + cheat_manager_state.big_endian, curr_val)) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL), 1, 180, true); return 0; @@ -1272,7 +1255,7 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu return; } - if (cheat->rumble_primary_end_time <= cpu_features_get_time_usec() ) + if (cheat->rumble_primary_end_time <= cpu_features_get_time_usec()) { if (cheat->rumble_primary_end_time != 0) input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_STRONG, 0); @@ -1290,9 +1273,7 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu cheat->rumble_secondary_end_time = 0; } else - { input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_WEAK, cheat->rumble_secondary_strength); - } } void cheat_manager_apply_retro_cheats(void) @@ -1308,7 +1289,7 @@ void cheat_manager_apply_retro_cheats(void) if ((!cheat_manager_state.cheats)) return; - for (i = 0; i < cheat_manager_state.size; i++ ) + for (i = 0; i < cheat_manager_state.size; i++) { unsigned char *curr; unsigned int idx; @@ -1337,35 +1318,29 @@ void cheat_manager_apply_retro_cheats(void) curr = cheat_manager_state.curr_memory_buf; idx = cheat_manager_state.cheats[i].address; - offset = translate_address(idx, &curr) ; + offset = translate_address(idx, &curr); switch (bytes_per_item) { case 2 : - { curr_val = cheat_manager_state.big_endian ? - (*(curr+idx-offset)*256) + *(curr+idx+1-offset) : - *(curr+idx-offset) + (*(curr+idx+1-offset)*256); + (*(curr+idx-offset)*256) + *(curr+idx+1-offset) : + *(curr+idx-offset) + (*(curr+idx+1-offset)*256); break; - } case 4 : - { curr_val = cheat_manager_state.big_endian ? - (*(curr+idx-offset)*256*256*256) + (*(curr+idx+1-offset)*256*256) + (*(curr+idx+2-offset)*256) + *(curr+idx+3-offset) : - *(curr+idx-offset) + (*(curr+idx+1-offset)*256) + (*(curr+idx+2-offset)*256*256) + (*(curr+idx+3-offset)*256*256*256); + (*(curr+idx-offset)*256*256*256) + (*(curr+idx+1-offset)*256*256) + (*(curr+idx+2-offset)*256) + *(curr+idx+3-offset) : + *(curr+idx-offset) + (*(curr+idx+1-offset)*256) + (*(curr+idx+2-offset)*256*256) + (*(curr+idx+3-offset)*256*256*256); break; - } case 1 : default : - { curr_val = *(curr+idx-offset); break; - } } cheat_manager_apply_rumble(&cheat_manager_state.cheats[i], curr_val); - switch (cheat_manager_state.cheats[i].cheat_type ) + switch (cheat_manager_state.cheats[i].cheat_type) { case CHEAT_TYPE_SET_TO_VALUE : set_value = true; @@ -1384,7 +1359,7 @@ void cheat_manager_apply_retro_cheats(void) run_cheat = false; break; case CHEAT_TYPE_RUN_NEXT_IF_NEQ: - if (!(curr_val != cheat_manager_state.cheats[i].value )) + if (!(curr_val != cheat_manager_state.cheats[i].value)) run_cheat = false; break; case CHEAT_TYPE_RUN_NEXT_IF_LT: @@ -1399,7 +1374,7 @@ void cheat_manager_apply_retro_cheats(void) } if (set_value) { - for ( repeat_iter = 1; repeat_iter <= cheat_manager_state.cheats[i].repeat_count; repeat_iter++) + for (repeat_iter = 1; repeat_iter <= cheat_manager_state.cheats[i].repeat_count; repeat_iter++) { switch (bytes_per_item) { @@ -1441,7 +1416,7 @@ void cheat_manager_apply_retro_cheats(void) for (bitpos = 0; bitpos < 8; bitpos++) { - if ((address_mask>>bitpos)&0x01 ) + if ((address_mask>>bitpos)&0x01) { mask = (~(1< 0 ) + if (cheat_manager_state.num_matches > 0) cheat_manager_state.num_matches--; runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS), 1, 180, true); return; @@ -1621,19 +1594,19 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig *prev_value = prev_val; return; case CHEAT_MATCH_ACTION_TYPE_COPY : - if ( !cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF, - cheat_manager_state.big_endian, curr_val) ) + if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF, + cheat_manager_state.big_endian, curr_val)) runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_FAIL), 1, 180, true); else runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS), 1, 180, true); return; case CHEAT_MATCH_ACTION_TYPE_DELETE : - if ( bits < 8 ) + if (bits < 8) *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & - (( ~(mask << (byte_part*bits))) & 0xFF ); + (( ~(mask << (byte_part*bits))) & 0xFF); else memset(cheat_manager_state.matches+idx,0,bytes_per_item); - if ( cheat_manager_state.num_matches > 0 ) + if (cheat_manager_state.num_matches > 0) cheat_manager_state.num_matches--; runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS), 1, 180, true); return; From 778c3fff73bb221f2f98c662d981cce785fc862a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 15 Oct 2018 06:47:18 +0200 Subject: [PATCH 056/304] (GL) Use shader_driver directly --- gfx/drivers/gl.c | 33 +++++++++++++++++++-------------- gfx/video_driver.c | 2 +- gfx/video_driver.h | 2 +- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index f447f2bb1b..f9b93604fd 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -214,8 +214,9 @@ static void gl_render_overlay(gl_t *gl, video_frame_info_t *video_info) glViewport(0, 0, width, height); /* Ensure that we reset the attrib array. */ - video_info->cb_shader_use(gl, - video_info->shader_data, VIDEO_SHADER_STOCK_BLEND, true); + if (video_info->shader_driver && video_info->shader_driver->use) + video_info->shader_driver->use(gl, + video_info->shader_data, VIDEO_SHADER_STOCK_BLEND, true); gl->coords.vertex = gl->overlay_vertex_coord; gl->coords.tex_coord = gl->overlay_tex_coord; @@ -584,19 +585,17 @@ static void gl_init_textures(gl_t *gl, const video_info_t *video) static INLINE void gl_set_shader_viewports(gl_t *gl) { unsigned i, width, height; - video_shader_ctx_info_t shader_info; video_frame_info_t video_info; video_driver_build_info(&video_info); video_driver_get_size(&width, &height); - shader_info.data = gl; - shader_info.set_active = true; - for (i = 0; i < 2; i++) { - shader_info.idx = i; - video_shader_driver_use(&shader_info); + if (video_info.shader_driver && video_info.shader_driver->use) + video_info.shader_driver->use(gl, + video_info.shader_data, i, true); + gl_set_viewport(gl, &video_info, width, height, false, true); } @@ -781,8 +780,9 @@ static void gl_render_osd_background( video_driver_set_viewport(video_info->width, video_info->height, true, false); - video_info->cb_shader_use(gl, - video_info->shader_data, VIDEO_SHADER_STOCK_BLEND, true); + if (video_info->shader_driver && video_info->shader_driver->use) + video_info->shader_driver->use(gl, + video_info->shader_data, VIDEO_SHADER_STOCK_BLEND, true); video_driver_set_coords(&coords_data); @@ -881,8 +881,9 @@ static INLINE void gl_draw_texture(gl_t *gl, video_frame_info_t *video_info) glBindTexture(GL_TEXTURE_2D, gl->menu_texture); - video_info->cb_shader_use(gl, - video_info->shader_data, VIDEO_SHADER_STOCK_BLEND, true); + if (video_info->shader_driver && video_info->shader_driver->use) + video_info->shader_driver->use(gl, + video_info->shader_data, VIDEO_SHADER_STOCK_BLEND, true); gl->coords.vertices = 4; @@ -967,7 +968,9 @@ static bool gl_frame(void *data, const void *frame, if (gl->core_context_in_use && gl->renderchain_driver->bind_vao) gl->renderchain_driver->bind_vao(gl, gl->renderchain_data); - video_info->cb_shader_use(gl, video_info->shader_data, 1, true); + if (video_info->shader_driver && video_info->shader_driver->use) + video_info->shader_driver->use(gl, + video_info->shader_data, 1, true); #ifdef IOS /* Apparently the viewport is lost each frame, thanks Apple. */ @@ -1168,7 +1171,9 @@ static bool gl_frame(void *data, const void *frame, /* Reset state which could easily mess up libretro core. */ if (gl->hw_render_fbo_init) { - video_info->cb_shader_use(gl, video_info->shader_data, 0, true); + if (video_info->shader_driver && video_info->shader_driver->use) + video_info->shader_driver->use(gl, + video_info->shader_data, 0, true); glBindTexture(GL_TEXTURE_2D, 0); if (gl->renderchain_driver->disable_client_arrays) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 358737a0bf..2651ddb797 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -2824,6 +2824,7 @@ void video_driver_build_info(video_frame_info_t *video_info) video_info->input_driver_nonblock_state = input_driver_is_nonblock_state(); video_info->context_data = video_context_data; + video_info->shader_driver = current_shader; video_info->shader_data = current_shader_data; video_info->cb_update_window_title = current_video_context.update_window_title; @@ -2831,7 +2832,6 @@ void video_driver_build_info(video_frame_info_t *video_info) video_info->cb_get_metrics = current_video_context.get_metrics; video_info->cb_set_resize = current_video_context.set_resize; - video_info->cb_shader_use = video_driver_cb_shader_use; video_info->cb_set_mvp = video_driver_cb_shader_set_mvp; video_info->userdata = video_driver_get_ptr(false); diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 167b8687b4..ee2a567501 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -493,13 +493,13 @@ typedef struct video_frame_info float *value); bool (*cb_set_resize)(void*, unsigned, unsigned); - void (*cb_shader_use)(void *data, void *shader_data, unsigned index, bool set_active); bool (*cb_set_mvp)(void *data, void *shader_data, const void *mat_data); void *context_data; void *shader_data; void *userdata; + const shader_backend_t *shader_driver; } video_frame_info_t; typedef void (*update_window_title_cb)(void*, void*); From 6338039ac0c469420ed9a25cc3cc980501cc2b22 Mon Sep 17 00:00:00 2001 From: Alfrix Date: Mon, 15 Oct 2018 22:32:03 -0300 Subject: [PATCH 057/304] Move Privacy settings to User --- menu/menu_displaylist.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 113e3495c9..ec5511e554 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -6331,6 +6331,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) break; case DISPLAYLIST_USER_SETTINGS_LIST: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_PRIVACY_SETTINGS, + PARSE_ACTION, false); if (menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_ACCOUNTS_LIST, @@ -6952,8 +6955,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) MENU_ENUM_LABEL_USER_SETTINGS, PARSE_ACTION, false); ret = menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_DIRECTORY_SETTINGS, PARSE_ACTION, false); - ret = menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_PRIVACY_SETTINGS, PARSE_ACTION, false); info->need_push = true; break; case DISPLAYLIST_HORIZONTAL: From a92a27a23018de9056b8aa85f23e984e71c78a74 Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Tue, 16 Oct 2018 10:30:57 -0400 Subject: [PATCH 058/304] gdi: ignore menu_shader_pipeline setting --- gfx/drivers/gdi_gfx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gfx/drivers/gdi_gfx.c b/gfx/drivers/gdi_gfx.c index 9caa715d27..b2c438961b 100644 --- a/gfx/drivers/gdi_gfx.c +++ b/gfx/drivers/gdi_gfx.c @@ -199,8 +199,9 @@ static bool gdi_gfx_frame(void *data, const void *frame, HWND hwnd = win32_get_window(); BITMAPINFO *info; - /* FIXME */ + /* FIXME: Force these settings off as they interfere with the rendering */ video_info->xmb_shadows_enable = false; + video_info->menu_shader_pipeline = 0; if (!frame || !frame_width || !frame_height) return true; From d0e083ac1882487e6ac2cff15f7f2c6a2f3fcff7 Mon Sep 17 00:00:00 2001 From: Tatsuya79 Date: Tue, 16 Oct 2018 19:14:19 +0200 Subject: [PATCH 059/304] Menu driver fallback: don't change menu for null video driver --- configuration.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configuration.c b/configuration.c index 817b792cae..b24f242133 100644 --- a/configuration.c +++ b/configuration.c @@ -2362,7 +2362,8 @@ static bool check_menu_driver_compatibility(void) char *menu_driver = settings->arrays.menu_driver; if (string_is_equal (menu_driver, "rgui") || - string_is_equal(menu_driver, "null")) + string_is_equal(menu_driver, "null") || + string_is_equal(video_driver, "null")) return true; /* TODO/FIXME - maintenance hazard */ From 3f41cd533b986b5e30ea8d49b72cf438f42b1039 Mon Sep 17 00:00:00 2001 From: Themaister Date: Tue, 16 Oct 2018 23:25:31 +0200 Subject: [PATCH 060/304] Fix RGUI regression on Vulkan. --- gfx/common/vulkan_common.h | 1 + gfx/drivers/vulkan.c | 42 ++++++++++++++++++++++++++------------ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/gfx/common/vulkan_common.h b/gfx/common/vulkan_common.h index 10d6a1b1ba..4e7e24c9b9 100644 --- a/gfx/common/vulkan_common.h +++ b/gfx/common/vulkan_common.h @@ -501,6 +501,7 @@ static INLINE unsigned vulkan_format_to_bpp(VkFormat format) return 4; case VK_FORMAT_R4G4B4A4_UNORM_PACK16: + case VK_FORMAT_B4G4R4A4_UNORM_PACK16: case VK_FORMAT_R5G6B5_UNORM_PACK16: return 2; diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index 3ac5d1fc12..a65ee5e477 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -1779,6 +1779,30 @@ static bool vulkan_frame(void *data, const void *frame, vulkan_filter_chain_build_offscreen_passes( (vulkan_filter_chain_t*)vk->filter_chain, vk->cmd, &vk->vk_vp); + +#if defined(HAVE_MENU) + /* Upload menu texture. */ + if (vk->menu.enable) + { + if (vk->menu.textures[vk->menu.last_index].image != VK_NULL_HANDLE || + vk->menu.textures[vk->menu.last_index].buffer != VK_NULL_HANDLE) + { + struct vk_texture *optimal = &vk->menu.textures_optimal[vk->menu.last_index]; + struct vk_texture *texture = &vk->menu.textures[vk->menu.last_index]; + + if (optimal->memory != VK_NULL_HANDLE) + { + if (vk->menu.dirty[vk->menu.last_index]) + { + vulkan_copy_staging_to_dynamic(vk, vk->cmd, + optimal, texture); + vk->menu.dirty[vk->menu.last_index] = false; + } + } + } + } +#endif + /* Render to backbuffer. */ if (chain->backbuffer.image != VK_NULL_HANDLE && vk->context->has_acquired_swapchain) { @@ -1813,7 +1837,8 @@ static bool vulkan_frame(void *data, const void *frame, { menu_driver_frame(video_info); - if (vk->menu.textures[vk->menu.last_index].image != VK_NULL_HANDLE) + if (vk->menu.textures[vk->menu.last_index].image != VK_NULL_HANDLE || + vk->menu.textures[vk->menu.last_index].buffer != VK_NULL_HANDLE) { struct vk_draw_quad quad; struct vk_texture *optimal = &vk->menu.textures_optimal[vk->menu.last_index]; @@ -1823,16 +1848,7 @@ static bool vulkan_frame(void *data, const void *frame, quad.texture = &vk->menu.textures[vk->menu.last_index]; if (optimal->memory != VK_NULL_HANDLE) - { - if (vk->menu.dirty[vk->menu.last_index]) - { - vulkan_copy_staging_to_dynamic(vk, vk->cmd, - optimal, - quad.texture); - vk->menu.dirty[vk->menu.last_index] = false; - } quad.texture = optimal; - } quad.sampler = optimal->mipmap ? vk->samplers.mipmap_linear : vk->samplers.linear; @@ -2197,9 +2213,6 @@ static void vulkan_set_texture_frame(void *data, for (y = 0; y < height; y++, dst += texture->stride, src += stride) memcpy(dst, src, stride); - vulkan_sync_texture_to_gpu(vk, texture); - vkUnmapMemory(vk->context->device, texture->memory); - vk->menu.alpha = alpha; vk->menu.last_index = index; @@ -2212,7 +2225,10 @@ static void vulkan_set_texture_frame(void *data, NULL, rgb32 ? NULL : &br_swizzle, VULKAN_TEXTURE_DYNAMIC); } + else + vulkan_sync_texture_to_gpu(vk, texture); + vkUnmapMemory(vk->context->device, texture->memory); vk->menu.dirty[index] = true; } From 927c65a1ba459c7999802e3fec74dc2e05df3394 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 17 Oct 2018 04:57:47 +0200 Subject: [PATCH 061/304] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index b308524723..53985e0b4d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,6 +9,7 @@ - SCANNER: Fix GDI disc scanning. - SWITCH/LIBNX: Improve touch scaling calculation. - SWITCH: Proper button labels. +- VULKAN: Fix RGUI crashing at startup. - WIIU: Initial netplay peer-to-peer support. Network information working. # 1.7.5 From 131d77875e16d2c8f4bb6f208c7275f71cc0b48e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Oct 2018 05:33:22 +0200 Subject: [PATCH 062/304] Create menu_displaylist_setting --- menu/drivers/materialui.c | 30 +++++++++++++++--------------- menu/drivers/xmb.c | 38 +++++++++++++++++++------------------- menu/menu_displaylist.c | 27 ++++++++++++--------------- menu/menu_displaylist.h | 5 +++-- 4 files changed, 49 insertions(+), 51 deletions(-) diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 5d09674ade..fc216530e9 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -2074,7 +2074,7 @@ static int materialui_list_push(void *data, void *userdata, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE))) { entry.enum_idx = MENU_ENUM_LABEL_CONTENT_SETTINGS; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #ifndef HAVE_DYNAMIC @@ -2084,39 +2084,39 @@ static int materialui_list_push(void *data, void *userdata, if (settings->bools.menu_show_load_core) { entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } } if (system->load_no_content) { entry.enum_idx = MENU_ENUM_LABEL_START_CORE; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (settings->bools.menu_show_load_content) { entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (settings->bools.menu_content_show_history) { entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #if defined(HAVE_NETWORKING) #ifdef HAVE_LAKKA entry.enum_idx = MENU_ENUM_LABEL_UPDATE_LAKKA; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); #else { settings_t *settings = config_get_ptr(); if (settings->bools.menu_show_online_updater) { entry.enum_idx = MENU_ENUM_LABEL_ONLINE_UPDATER; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } } #endif @@ -2124,44 +2124,44 @@ static int materialui_list_push(void *data, void *userdata, if (settings->bools.menu_content_show_netplay) { entry.enum_idx = MENU_ENUM_LABEL_NETPLAY; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #endif if (settings->bools.menu_show_information) { entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #ifndef HAVE_DYNAMIC entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); #endif if (settings->bools.menu_show_configurations) { entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (settings->bools.menu_show_help) { entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #if !defined(IOS) entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); #endif #if defined(HAVE_LAKKA) if (settings->bools.menu_show_reboot) { entry.enum_idx = MENU_ENUM_LABEL_REBOOT; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (settings->bools.menu_show_shutdown) { entry.enum_idx = MENU_ENUM_LABEL_SHUTDOWN; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #endif info->need_push = true; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 1f0b9a92d3..922d7ce607 100755 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -5309,13 +5309,13 @@ static int xmb_list_push(void *data, void *userdata, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE))) { entry.enum_idx = MENU_ENUM_LABEL_CONTENT_SETTINGS; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (system->load_no_content) { entry.enum_idx = MENU_ENUM_LABEL_START_CORE; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #ifndef HAVE_DYNAMIC @@ -5325,7 +5325,7 @@ static int xmb_list_push(void *data, void *userdata, if (settings->bools.menu_show_load_core) { entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } } @@ -5334,7 +5334,7 @@ static int xmb_list_push(void *data, void *userdata, const struct retro_subsystem_info* subsystem = NULL; entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); subsystem = system->subsystem.data; @@ -5390,85 +5390,85 @@ static int xmb_list_push(void *data, void *userdata, } entry.enum_idx = MENU_ENUM_LABEL_ADD_CONTENT_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); #ifdef HAVE_QT if (settings->bools.desktop_menu_enable) { entry.enum_idx = MENU_ENUM_LABEL_SHOW_WIMP; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #endif #if defined(HAVE_NETWORKING) if (settings->bools.menu_show_online_updater && !settings->bools.kiosk_mode_enable) { entry.enum_idx = MENU_ENUM_LABEL_ONLINE_UPDATER; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #endif if (!settings->bools.menu_content_show_settings && !string_is_empty(settings->paths.menu_content_show_settings_password)) { entry.enum_idx = MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (settings->bools.kiosk_mode_enable && !string_is_empty(settings->paths.kiosk_mode_password)) { entry.enum_idx = MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (settings->bools.menu_show_information) { entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #ifdef HAVE_LAKKA_SWITCH entry.enum_idx = MENU_ENUM_LABEL_SWITCH_CPU_PROFILE; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); entry.enum_idx = MENU_ENUM_LABEL_SWITCH_GPU_PROFILE; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); entry.enum_idx = MENU_ENUM_LABEL_SWITCH_BACKLIGHT_CONTROL; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); #endif #ifndef HAVE_DYNAMIC entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); #endif if (settings->bools.menu_show_configurations && !settings->bools.kiosk_mode_enable) { entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (settings->bools.menu_show_help) { entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #if !defined(IOS) if (settings->bools.menu_show_quit_retroarch) { entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #endif if (settings->bools.menu_show_reboot) { entry.enum_idx = MENU_ENUM_LABEL_REBOOT; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (settings->bools.menu_show_shutdown) { entry.enum_idx = MENU_ENUM_LABEL_SHUTDOWN; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } info->need_push = true; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index ec5511e554..c05df58676 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4254,7 +4254,18 @@ void menu_displaylist_info_init(menu_displaylist_info_t *info) info->setting = NULL; } -bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) +bool menu_displaylist_setting(menu_displaylist_ctx_parse_entry_t *entry) +{ + if (menu_displaylist_parse_settings_enum(entry->data, + entry->info, + entry->enum_idx, + entry->parse_type, + entry->add_empty_entry) == -1) + return false; + return true; +} + +bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist_info_t *info) { size_t i; menu_ctx_displaylist_t disp_list; @@ -4263,7 +4274,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) bool use_filebrowser = false; unsigned count = 0; int ret = 0; - menu_displaylist_info_t *info = (menu_displaylist_info_t*)data; if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return false; @@ -7391,19 +7401,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) info->need_push = true; } break; - case DISPLAYLIST_SETTING_ENUM: - { - menu_displaylist_ctx_parse_entry_t *entry = - (menu_displaylist_ctx_parse_entry_t*)data; - - if (menu_displaylist_parse_settings_enum(entry->data, - entry->info, - entry->enum_idx, - entry->parse_type, - entry->add_empty_entry) == -1) - return false; - } - break; case DISPLAYLIST_HELP: menu_entries_append_enum(info->list, info->path, info->label, MSG_UNKNOWN, info->type, info->directory_ptr, 0); diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 5c1ff8abaa..0ea063328d 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -60,7 +60,6 @@ enum menu_displaylist_ctl_state DISPLAYLIST_HELP_SCREEN_LIST, DISPLAYLIST_MAIN_MENU, DISPLAYLIST_GENERIC, - DISPLAYLIST_SETTING_ENUM, DISPLAYLIST_SETTINGS_ALL, DISPLAYLIST_HORIZONTAL, DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS, @@ -245,7 +244,9 @@ void menu_displaylist_info_free(menu_displaylist_info_t *info); void menu_displaylist_info_init(menu_displaylist_info_t *info); -bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data); +bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist_info_t *info); + +bool menu_displaylist_setting(menu_displaylist_ctx_parse_entry_t *entry); #ifdef HAVE_NETWORKING void netplay_refresh_rooms_menu(file_list_t *list); From 5017063a7e8ad8c18d94cfe0c512d2374ff7bd81 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Oct 2018 05:34:59 +0200 Subject: [PATCH 063/304] Fix stripes.c --- menu/drivers/stripes.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/menu/drivers/stripes.c b/menu/drivers/stripes.c index c466ed5599..7dc34bfb8b 100755 --- a/menu/drivers/stripes.c +++ b/menu/drivers/stripes.c @@ -4209,13 +4209,13 @@ static int stripes_list_push(void *data, void *userdata, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE))) { entry.enum_idx = MENU_ENUM_LABEL_CONTENT_SETTINGS; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (system->load_no_content) { entry.enum_idx = MENU_ENUM_LABEL_START_CORE; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #ifndef HAVE_DYNAMIC @@ -4225,7 +4225,7 @@ static int stripes_list_push(void *data, void *userdata, if (settings->bools.menu_show_load_core) { entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } } @@ -4234,7 +4234,7 @@ static int stripes_list_push(void *data, void *userdata, const struct retro_subsystem_info* subsystem = NULL; entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); subsystem = system->subsystem.data; @@ -4290,68 +4290,68 @@ static int stripes_list_push(void *data, void *userdata, } entry.enum_idx = MENU_ENUM_LABEL_ADD_CONTENT_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); #if defined(HAVE_NETWORKING) { settings_t *settings = config_get_ptr(); if (settings->bools.menu_show_online_updater && !settings->bools.kiosk_mode_enable) { entry.enum_idx = MENU_ENUM_LABEL_ONLINE_UPDATER; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } } #endif if (!settings->bools.menu_content_show_settings && !string_is_empty(settings->paths.menu_content_show_settings_password)) { entry.enum_idx = MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (settings->bools.kiosk_mode_enable && !string_is_empty(settings->paths.kiosk_mode_password)) { entry.enum_idx = MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (settings->bools.menu_show_information) { entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #ifndef HAVE_DYNAMIC entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); #endif if (settings->bools.menu_show_configurations && !settings->bools.kiosk_mode_enable) { entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } if (settings->bools.menu_show_help) { entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #if !defined(IOS) if (settings->bools.menu_show_quit_retroarch) { entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } #endif if (settings->bools.menu_show_reboot) { entry.enum_idx = MENU_ENUM_LABEL_REBOOT; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); } entry.enum_idx = MENU_ENUM_LABEL_SHUTDOWN; - menu_displaylist_ctl(DISPLAYLIST_SETTING_ENUM, &entry); + menu_displaylist_setting(&entry); info->need_push = true; ret = 0; } From e3e4abf8468aa6504b0ccc80f9a3a5dea503bae5 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 17 Oct 2018 05:44:05 +0200 Subject: [PATCH 064/304] Remove some unused variables --- managers/cheat_manager.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/managers/cheat_manager.c b/managers/cheat_manager.c index f0ce7643b4..202d8af8bc 100644 --- a/managers/cheat_manager.c +++ b/managers/cheat_manager.c @@ -1115,7 +1115,6 @@ int cheat_manager_add_matches(const char *path, unsigned int curr_val = 0; unsigned int num_added = 0; unsigned int offset = 0; - unsigned int i = 0; unsigned char *curr = cheat_manager_state.curr_memory_buf; if (cheat_manager_state.num_matches + cheat_manager_state.size > 100) @@ -1472,7 +1471,6 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig unsigned int curr_val = 0; unsigned int prev_val = 0; unsigned int offset = 0; - unsigned int i = 0; unsigned char *curr = cheat_manager_state.curr_memory_buf; unsigned char *prev = cheat_manager_state.prev_memory_buf; unsigned int curr_match_idx = 0; From cf9341f2ea04b80bf1da7ebea22530392fd901cf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Oct 2018 05:45:43 +0200 Subject: [PATCH 065/304] Update libretro-common --- .../include/streams/file_stream_transforms.h | 4 ++++ .../streams/file_stream_transforms.c | 22 ++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/libretro-common/include/streams/file_stream_transforms.h b/libretro-common/include/streams/file_stream_transforms.h index 17c17580e9..9cf15c599d 100644 --- a/libretro-common/include/streams/file_stream_transforms.h +++ b/libretro-common/include/streams/file_stream_transforms.h @@ -47,6 +47,7 @@ RETRO_BEGIN_DECLS #undef fprintf #undef ferror #undef feof +#undef fscanf #define fopen rfopen #define fclose rfclose @@ -61,6 +62,7 @@ RETRO_BEGIN_DECLS #define fprintf rfprintf #define ferror rferror #define feof rfeof +#define fscanf rfscanf #endif @@ -92,6 +94,8 @@ int rferror(RFILE* stream); int rfeof(RFILE* stream); +int rfscanf(RFILE * stream, const char * format, ...); + RETRO_END_DECLS #endif diff --git a/libretro-common/streams/file_stream_transforms.c b/libretro-common/streams/file_stream_transforms.c index fc1e1bd160..5a82f88c73 100644 --- a/libretro-common/streams/file_stream_transforms.c +++ b/libretro-common/streams/file_stream_transforms.c @@ -109,7 +109,7 @@ char *rfgets(char *buffer, int maxCount, RFILE* stream) int rfgetc(RFILE* stream) { - return filestream_getc(stream); + return filestream_getc(stream); } int64_t rfwrite(void const* buffer, @@ -131,11 +131,11 @@ int64_t rfflush(RFILE * stream) int rfprintf(RFILE * stream, const char * format, ...) { int result; - va_list vl; - va_start(vl, format); - result = filestream_vprintf(stream, format, vl); - va_end(vl); - return result; + va_list vl; + va_start(vl, format); + result = filestream_vprintf(stream, format, vl); + va_end(vl); + return result; } int rferror(RFILE* stream) @@ -147,3 +147,13 @@ int rfeof(RFILE* stream) { return filestream_eof(stream); } + +int rfscanf(RFILE * stream, const char * format, ...) +{ + int result; + va_list vl; + va_start(vl, format); + result = filestream_scanf(stream, format, vl); + va_end(vl); + return result; +} From ebd8e5bbc28bc02ceb54c239ca3e6461e2f3d527 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Oct 2018 06:20:22 +0200 Subject: [PATCH 066/304] Cleanup --- gfx/video_driver.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 2651ddb797..c469a7d66f 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -671,11 +671,9 @@ retro_proc_address_t video_driver_get_proc_address(const char *sym) bool video_driver_set_shader(enum rarch_shader_type type, const char *path) { - bool ret = false; if (current_video->set_shader) - ret = current_video->set_shader(video_driver_data, type, path); - - return ret; + return current_video->set_shader(video_driver_data, type, path); + return false; } static void video_driver_filter_free(void) From 4692e95fd80eadf1014a96ef4cc2667a51d01f3d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Oct 2018 06:49:24 +0200 Subject: [PATCH 067/304] Refactor 'kill by tag' and 'kill by subject' --- menu/drivers/materialui.c | 2 +- menu/drivers/stripes.c | 6 +-- menu/drivers/xmb.c | 6 +-- menu/menu_animation.c | 105 +++++++++++++++++++------------------- menu/menu_animation.h | 8 +-- 5 files changed, 64 insertions(+), 63 deletions(-) diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index fc216530e9..d86190dc1f 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -2752,7 +2752,7 @@ static void materialui_list_clear(file_list_t *list) subject.count = 2; subject.data = subjects; - menu_animation_ctl(MENU_ANIMATION_CTL_KILL_BY_SUBJECT, &subject); + menu_animation_kill_by_subject(&subject); file_list_free_userdata(list, i); } diff --git a/menu/drivers/stripes.c b/menu/drivers/stripes.c index 7dc34bfb8b..cfea3c388d 100755 --- a/menu/drivers/stripes.c +++ b/menu/drivers/stripes.c @@ -1177,7 +1177,7 @@ static void stripes_selection_pointer_changed( tag = (uintptr_t)selection_buf; - menu_animation_ctl(MENU_ANIMATION_CTL_KILL_BY_TAG, &tag); + menu_animation_kill_by_tag(&tag); menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &num); for (i = 0; i < end; i++) @@ -3830,7 +3830,7 @@ static void stripes_list_clear(file_list_t *list) { menu_animation_ctx_tag tag = (uintptr_t)list; - menu_animation_ctl(MENU_ANIMATION_CTL_KILL_BY_TAG, &tag); + menu_animation_kill_by_tag(&tag); stripes_free_list_nodes(list, false); } @@ -3846,7 +3846,7 @@ static void stripes_list_deep_copy(const file_list_t *src, file_list_t *dst, size_t i, j = 0; menu_animation_ctx_tag tag = (uintptr_t)dst; - menu_animation_ctl(MENU_ANIMATION_CTL_KILL_BY_TAG, &tag); + menu_animation_kill_by_tag(&tag); /* use true here because file_list_copy() doesn't free actiondata */ stripes_free_list_nodes(dst, true); diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 922d7ce607..d649768f50 100755 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1231,7 +1231,7 @@ static void xmb_selection_pointer_changed( tag = (uintptr_t)selection_buf; - menu_animation_ctl(MENU_ANIMATION_CTL_KILL_BY_TAG, &tag); + menu_animation_kill_by_tag(&tag); menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &num); for (i = 0; i < end; i++) @@ -4930,7 +4930,7 @@ static void xmb_list_clear(file_list_t *list) { menu_animation_ctx_tag tag = (uintptr_t)list; - menu_animation_ctl(MENU_ANIMATION_CTL_KILL_BY_TAG, &tag); + menu_animation_kill_by_tag(&tag); xmb_free_list_nodes(list, false); } @@ -4946,7 +4946,7 @@ static void xmb_list_deep_copy(const file_list_t *src, file_list_t *dst, size_t i, j = 0; menu_animation_ctx_tag tag = (uintptr_t)dst; - menu_animation_ctl(MENU_ANIMATION_CTL_KILL_BY_TAG, &tag); + menu_animation_kill_by_tag(&tag); /* use true here because file_list_copy() doesn't free actiondata */ xmb_free_list_nodes(dst, true); diff --git a/menu/menu_animation.c b/menu/menu_animation.c index 628c41013e..f31c143a22 100644 --- a/menu/menu_animation.c +++ b/menu/menu_animation.c @@ -617,6 +617,58 @@ bool menu_animation_is_active(void) return animation_is_active; } +bool menu_animation_kill_by_tag(menu_animation_ctx_tag *tag) +{ + unsigned i; + + if (!tag || *tag == (uintptr_t)-1) + return false; + + for (i = 0; i < anim.size; ++i) + { + if (anim.list[i].tag != *tag) + continue; + + anim.list[i].alive = false; + anim.list[i].subject = NULL; + + if (i < anim.first_dead) + anim.first_dead = i; + + anim.need_defrag = true; + } + + return true; +} + +void menu_animation_kill_by_subject(menu_animation_ctx_subject_t *subject) +{ + unsigned i, j, killed = 0; + float **sub = (float**)subject->data; + + for (i = 0; i < anim.size && killed < subject->count; ++i) + { + if (!anim.list[i].alive) + continue; + + for (j = 0; j < subject->count; ++j) + { + if (anim.list[i].subject != sub[j]) + continue; + + anim.list[i].alive = false; + anim.list[i].subject = NULL; + + if (i < anim.first_dead) + anim.first_dead = i; + + killed++; + anim.need_defrag = true; + break; + } + } +} + bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data) { switch (state) @@ -653,59 +705,6 @@ bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data) *ptr = delta_time; } break; - case MENU_ANIMATION_CTL_KILL_BY_TAG: - { - unsigned i; - menu_animation_ctx_tag *tag = (menu_animation_ctx_tag*)data; - - if (!tag || *tag == (uintptr_t)-1) - return false; - - for (i = 0; i < anim.size; ++i) - { - if (anim.list[i].tag != *tag) - continue; - - anim.list[i].alive = false; - anim.list[i].subject = NULL; - - if (i < anim.first_dead) - anim.first_dead = i; - - anim.need_defrag = true; - } - } - break; - case MENU_ANIMATION_CTL_KILL_BY_SUBJECT: - { - unsigned i, j, killed = 0; - menu_animation_ctx_subject_t *subject = - (menu_animation_ctx_subject_t*)data; - float **sub = (float**)subject->data; - - for (i = 0; i < anim.size && killed < subject->count; ++i) - { - if (!anim.list[i].alive) - continue; - - for (j = 0; j < subject->count; ++j) - { - if (anim.list[i].subject != sub[j]) - continue; - - anim.list[i].alive = false; - anim.list[i].subject = NULL; - - if (i < anim.first_dead) - anim.first_dead = i; - - killed++; - anim.need_defrag = true; - break; - } - } - } - break; case MENU_ANIMATION_CTL_NONE: default: break; diff --git a/menu/menu_animation.h b/menu/menu_animation.h index 2f6c8aefbb..8e63ee1ef2 100644 --- a/menu/menu_animation.h +++ b/menu/menu_animation.h @@ -34,9 +34,7 @@ enum menu_animation_ctl_state MENU_ANIMATION_CTL_DEINIT, MENU_ANIMATION_CTL_CLEAR_ACTIVE, MENU_ANIMATION_CTL_SET_ACTIVE, - MENU_ANIMATION_CTL_DELTA_TIME, - MENU_ANIMATION_CTL_KILL_BY_TAG, - MENU_ANIMATION_CTL_KILL_BY_SUBJECT + MENU_ANIMATION_CTL_DELTA_TIME }; enum menu_animation_easing_type @@ -130,6 +128,10 @@ void menu_animation_update_time(bool timedate_enable); bool menu_animation_is_active(void); +bool menu_animation_kill_by_tag(menu_animation_ctx_tag *tag); + +void menu_animation_kill_by_subject(menu_animation_ctx_subject_t *subject); + bool menu_animation_push(menu_animation_ctx_entry_t *entry); bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data); From 63eff7f236e929f3b8ad28fdf0c0ad092b688ab1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Oct 2018 06:55:49 +0200 Subject: [PATCH 068/304] Create menu_animation_get_delta_time --- menu/drivers/materialui.c | 5 +---- menu/drivers/stripes.c | 5 +---- menu/drivers/xmb.c | 5 +---- menu/menu_animation.c | 17 +++++++---------- menu/menu_animation.h | 5 +++-- menu/menu_input.c | 9 ++------- 6 files changed, 15 insertions(+), 31 deletions(-) diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index d86190dc1f..752dc1caa8 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -650,7 +650,6 @@ static void materialui_compute_entries_box(materialui_handle_t* mui, int width) static void materialui_render(void *data, bool is_idle) { menu_animation_ctx_delta_t delta; - float delta_time; unsigned bottom, width, height, header_height; size_t i = 0; materialui_handle_t *mui = (materialui_handle_t*)data; @@ -669,9 +668,7 @@ static void materialui_render(void *data, bool is_idle) mui->need_compute = false; } - menu_animation_ctl(MENU_ANIMATION_CTL_DELTA_TIME, &delta_time); - - delta.current = delta_time; + delta.current = menu_animation_get_delta_time(); if (menu_animation_get_ideal_delta_time(&delta)) menu_animation_update(delta.ideal); diff --git a/menu/drivers/stripes.c b/menu/drivers/stripes.c index cfea3c388d..e72a569eba 100755 --- a/menu/drivers/stripes.c +++ b/menu/drivers/stripes.c @@ -2657,7 +2657,6 @@ static void stripes_draw_items( static void stripes_render(void *data, bool is_idle) { size_t i; - float delta_time; menu_animation_ctx_delta_t delta; settings_t *settings = config_get_ptr(); stripes_handle_t *stripes = (stripes_handle_t*)data; @@ -2668,9 +2667,7 @@ static void stripes_render(void *data, bool is_idle) if (!stripes) return; - menu_animation_ctl(MENU_ANIMATION_CTL_DELTA_TIME, &delta_time); - - delta.current = delta_time; + delta.current = menu_animation_get_delta_time(); if (menu_animation_get_ideal_delta_time(&delta)) menu_animation_update(delta.ideal); diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index d649768f50..2a5b13fb19 100755 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2934,7 +2934,6 @@ static void xmb_draw_items( static void xmb_render(void *data, bool is_idle) { size_t i; - float delta_time; menu_animation_ctx_delta_t delta; settings_t *settings = config_get_ptr(); xmb_handle_t *xmb = (xmb_handle_t*)data; @@ -2945,9 +2944,7 @@ static void xmb_render(void *data, bool is_idle) if (!xmb) return; - menu_animation_ctl(MENU_ANIMATION_CTL_DELTA_TIME, &delta_time); - - delta.current = delta_time; + delta.current = menu_animation_get_delta_time(); if (menu_animation_get_ideal_delta_time(&delta)) menu_animation_update(delta.ideal); diff --git a/menu/menu_animation.c b/menu/menu_animation.c index f31c143a22..8cd9d140f8 100644 --- a/menu/menu_animation.c +++ b/menu/menu_animation.c @@ -1,6 +1,6 @@ /* RetroArch - A frontend for libretro. - * Copyright (C) 2014-2017 - Jean-André Santoni - * Copyright (C) 2011-2017 - Daniel De Matteis + * Copyright (C) 2014-2018 - Jean-André Santoni + * Copyright (C) 2011-2018 - Daniel De Matteis * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- @@ -669,6 +669,11 @@ void menu_animation_kill_by_subject(menu_animation_ctx_subject_t *subject) } } +float menu_animation_get_delta_time(void) +{ + return delta_time; +} + bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data) { switch (state) @@ -697,14 +702,6 @@ bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data) case MENU_ANIMATION_CTL_SET_ACTIVE: animation_is_active = true; break; - case MENU_ANIMATION_CTL_DELTA_TIME: - { - float *ptr = (float*)data; - if (!ptr) - return false; - *ptr = delta_time; - } - break; case MENU_ANIMATION_CTL_NONE: default: break; diff --git a/menu/menu_animation.h b/menu/menu_animation.h index 8e63ee1ef2..71f31e9c6d 100644 --- a/menu/menu_animation.h +++ b/menu/menu_animation.h @@ -33,8 +33,7 @@ enum menu_animation_ctl_state MENU_ANIMATION_CTL_NONE = 0, MENU_ANIMATION_CTL_DEINIT, MENU_ANIMATION_CTL_CLEAR_ACTIVE, - MENU_ANIMATION_CTL_SET_ACTIVE, - MENU_ANIMATION_CTL_DELTA_TIME + MENU_ANIMATION_CTL_SET_ACTIVE }; enum menu_animation_easing_type @@ -134,6 +133,8 @@ void menu_animation_kill_by_subject(menu_animation_ctx_subject_t *subject); bool menu_animation_push(menu_animation_ctx_entry_t *entry); +float menu_animation_get_delta_time(void); + bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data); RETRO_END_DECLS diff --git a/menu/menu_input.c b/menu/menu_input.c index 98d1fc9ed4..1930307488 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -163,7 +163,6 @@ void menu_event_kb_set(bool down, enum retro_key key) unsigned menu_event(input_bits_t *p_input, input_bits_t *p_trigger_input) { menu_animation_ctx_delta_t delta; - float delta_time; /* Used for key repeat */ static float delay_timer = 0.0f; static float delay_count = 0.0f; @@ -236,9 +235,7 @@ unsigned menu_event(input_bits_t *p_input, input_bits_t *p_trigger_input) menu_driver_ctl(MENU_NAVIGATION_CTL_SET_SCROLL_ACCEL, &new_scroll_accel); - menu_animation_ctl(MENU_ANIMATION_CTL_DELTA_TIME, &delta_time); - - delta.current = delta_time; + delta.current = menu_animation_get_delta_time(); if (menu_animation_get_ideal_delta_time(&delta)) delay_count += delta.ideal; @@ -793,7 +790,7 @@ static int menu_input_pointer_post_iterate( if (abs(pointer_x - start_x) > (dpi / 10) || abs(pointer_y - start_y) > (dpi / 10)) { - float s, delta_time; + float s; menu_input_ctl(MENU_INPUT_CTL_SET_POINTER_DRAGGED, NULL); menu_input->pointer.dx = pointer_x - pointer_old_x; @@ -801,8 +798,6 @@ static int menu_input_pointer_post_iterate( pointer_old_x = pointer_x; pointer_old_y = pointer_y; - menu_animation_ctl(MENU_ANIMATION_CTL_DELTA_TIME, &delta_time); - s = menu_input->pointer.dy; menu_input->pointer.accel = (accel0 + accel1 + s) / 3; accel0 = accel1; From 3d731aec1943d2deca03d68077629e42491068cc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Oct 2018 07:36:46 +0200 Subject: [PATCH 069/304] Call network_init before processing the network information list --- menu/menu_displaylist.c | 1 + 1 file changed, 1 insertion(+) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index c05df58676..dd85bc88ab 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4845,6 +4845,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist case DISPLAYLIST_NETWORK_INFO: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); #if defined(HAVE_NETWORKING) && !defined(HAVE_SOCKET_LEGACY) && (!defined(SWITCH) || defined(SWITCH) && defined(HAVE_LIBNX)) + network_init(); count = menu_displaylist_parse_network_info(info); #endif From 0abe42d9a4944e83fb59579dc27108e7be945cca Mon Sep 17 00:00:00 2001 From: Nathan Strong Date: Tue, 16 Oct 2018 22:40:13 -0700 Subject: [PATCH 070/304] Rewrite content search task == DETAILS In attempting to identify where netplay lobby errors were occuring, I found that the code which does the content search was pretty messy, so I've cleaned it up. - Search is now more efficient. Playlists are only iterated over once, instead of twice. - Error messages are more helpful - Eliminated goto abuse - code is easier to follow and has comments describing the logical flow. == TESTING Tested lightly locally, although hard to test thoroughly due to tight netplay requirements. --- tasks/task_netplay_find_content.c | 324 +++++++++++++++--------------- 1 file changed, 162 insertions(+), 162 deletions(-) diff --git a/tasks/task_netplay_find_content.c b/tasks/task_netplay_find_content.c index 816a9e0e2e..10ab3ef953 100644 --- a/tasks/task_netplay_find_content.c +++ b/tasks/task_netplay_find_content.c @@ -123,184 +123,184 @@ static void netplay_crc_scan_callback(void *task_data, free(state); } -static void task_netplay_crc_scan_handler(retro_task_t *task) -{ - size_t i, j; - netplay_crc_handle_t *state = (netplay_crc_handle_t*)task->state; - +static void begin_task(retro_task_t *task, const char *title) { task_set_progress(task, 0); task_free_title(task); - task_set_title(task, strdup("Looking for compatible content...")); + task_set_title(task, strdup(title)); task_set_finished(task, false); +} +static void finish_task(retro_task_t *task, const char *title) { + task_set_progress(task, 100); + task_free_title(task); + task_set_title(task, strdup(title)); + task_set_finished(task, true); +} + +static bool core_requires_content(netplay_crc_handle_t *state) { + return string_is_not_equal(state->content_path, "N/A"); +} + +/** + * Given a path to a content file, return the base name without the + * path or the file extension. + * + * e.g. /home/user/foo.rom => foo + */ +static void get_entry(char *entry, int len, const char *path) { + const char *buf = path_basename(path); + entry[0] = '\0'; + + strlcpy(entry, buf, len); + path_remove_extension(entry); +} + +/** + * Execute a search for compatible content for netplay. + * We prioritize a CRC match, if we have a CRC to match against. + * If we don't have a CRC, or if there's no CRC match found, fall + * back to a filename match and hope for the best. + */ +static void task_netplay_crc_scan_handler(retro_task_t *task) +{ + netplay_crc_handle_t *state = (netplay_crc_handle_t*)task->state; + + begin_task(task, "Looking for compatible content..."); + + /* start by checking cases that don't require a search */ + + /* the core doesn't have any content to match, so fast-succeed */ + if(!core_requires_content(state)) { + state->found = true; + state->contentless = true; + task_set_data(task, state); + finish_task(task, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND)); + return; + } + + /* if this list is null, it means that RA failed to open the playlist directory */ if (!state->lpl_list) { - task_set_progress(task, 100); - task_free_title(task); - task_set_title(task, strdup("Playlist directory not found")); - task_set_finished(task, true); + finish_task(task, "Playlist directory not found"); free(state); return; } - if (state->lpl_list->size == 0 && - string_is_not_equal(state->content_path, "N/A")) - goto no_playlists; - - /* Core requires content */ - if (string_is_not_equal(state->content_path, "N/A")) - { - /* CRC matching */ - if (!string_is_equal(state->content_crc, "00000000|crc")) - { - char current[PATH_MAX_LENGTH]; - RARCH_LOG("[lobby] testing CRC matching for: %s\n", state->content_crc); - - snprintf(current, sizeof(current), "%X|crc", content_get_crc()); - RARCH_LOG("[lobby] current content crc: %s\n", current); - if (string_is_equal(current, state->content_crc)) - { - RARCH_LOG("[lobby] CRC match %s with currently loaded content\n", current); - strlcpy(state->content_path, "N/A", sizeof(state->content_path)); - state->found = true; - state->current = true; - task_set_data(task, state); - task_set_progress(task, 100); - task_free_title(task); - task_set_title(task, strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND))); - task_set_finished(task, true); - string_list_free(state->lpl_list); - return; - } - for (i = 0; i < state->lpl_list->size; i++) - { - playlist_t *playlist = NULL; - unsigned playlist_size = 0; - const char *lpl_path = state->lpl_list->elems[i].data; - - if (!strstr(lpl_path, file_path_str(FILE_PATH_LPL_EXTENSION))) - continue; - - playlist = playlist_init(lpl_path, 99999); - playlist_size = playlist_get_size(playlist); - - for (j = 0; j < playlist_size; j++) - { - const char *playlist_crc32 = NULL; - const char *playlist_path = NULL; - playlist_get_index(playlist, - j, &playlist_path, NULL, NULL, NULL, NULL, &playlist_crc32); - - if (string_is_equal(playlist_crc32, state->content_crc)) - { - RARCH_LOG("[lobby] CRC match %s\n", playlist_crc32); - strlcpy(state->content_path, playlist_path, sizeof(state->content_path)); - state->found = true; - task_set_data(task, state); - task_set_progress(task, 100); - task_free_title(task); - task_set_title(task, strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND))); - task_set_finished(task, true); - string_list_free(state->lpl_list); - free(playlist); - return; - } - - task_set_progress(task, (int)(j / playlist_size * 100.0)); - } - - free(playlist); - } - /* CRC matching failed, goto filename matching */ - if (!state->found) - { - RARCH_LOG("[lobby] CRC matching for: %s failed\n", state->content_crc); - goto filename_matching; - } - } - /* filename matching*/ - else - { -filename_matching: - RARCH_LOG("[lobby] testing filename matching for: %s\n", state->content_path); - for (i = 0; i < state->lpl_list->size; i++) - { - playlist_t *playlist = NULL; - unsigned playlist_size = 0; - const char *lpl_path = state->lpl_list->elems[i].data; - - if (!strstr(lpl_path, file_path_str(FILE_PATH_LPL_EXTENSION))) - continue; - - playlist = playlist_init(lpl_path, 99999); - playlist_size = playlist_get_size(playlist); - - for (j = 0; j < playlist_size; j++) - { - char entry[PATH_MAX_LENGTH]; - const char *playlist_path = NULL; - const char *buf = NULL; - - playlist_get_index(playlist, - j, &playlist_path, NULL, NULL, NULL, NULL, NULL); - - buf = path_basename(playlist_path); - entry[0] = '\0'; - - strlcpy(entry, buf, sizeof(entry)); - - path_remove_extension(entry); - - if ( !string_is_empty(entry) && - string_is_equal(entry, state->content_path) && - strstr(state->core_extensions, path_get_extension(playlist_path))) - { - RARCH_LOG("[lobby] filename match %s\n", playlist_path); - - strlcpy(state->content_path, playlist_path, sizeof(state->content_path)); - state->found = true; - task_set_data(task, state); - task_set_progress(task, 100); - task_free_title(task); - task_set_title(task, strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND))); - task_set_finished(task, true); - string_list_free(state->lpl_list); - free(playlist); - return; - } - - task_set_progress(task, (int)(j / playlist_size * 100.0)); - } - free(playlist); - } - - /* filename matching failed */ - if (!state->found) - RARCH_LOG("[lobby] filename matching for: %s failed\n", state->content_path); - } - } - /* Lobby reports core doesn't need content */ - else - { - state->found = true; - state->contentless = true; - task_set_data(task, state); - task_set_progress(task, 100); - task_free_title(task); - task_set_title(task, strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND))); - task_set_finished(task, true); + /* We opened the playlist directory, but there's nothing there. Nothing to do. */ + if(state->lpl_list->size == 0 && core_requires_content(state)) { + string_list_free(state->lpl_list); + finish_task(task, "There are no playlists available; cannot execute search"); + command_event(CMD_EVENT_NETPLAY_INIT_DIRECT_DEFERRED, state->hostname); + free(state); return; } -no_playlists: + bool have_crc = !string_is_equal(state->content_crc, "00000000|crc"); + + /* if content is already loaded and the lobby gave us a CRC, check the loaded content first */ + if(have_crc && content_get_crc() > 0) { + char current[PATH_MAX_LENGTH]; + RARCH_LOG("[lobby] testing CRC matching for: %s\n", state->content_crc); + + snprintf(current, sizeof(current), "%X|crc", content_get_crc()); + RARCH_LOG("[lobby] current content crc: %s\n", current); + if (string_is_equal(current, state->content_crc)) { + RARCH_LOG("[lobby] CRC match %s with currently loaded content\n", current); + strlcpy(state->content_path, "N/A", sizeof(state->content_path)); + state->found = true; + state->current = true; + task_set_data(task, state); + finish_task(task, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND)); + string_list_free(state->lpl_list); + return; + } + } + + /* now let's do the search */ + size_t i, j; + char *filename_match = NULL; + char entry[PATH_MAX_LENGTH]; + + + for(i = 0; i < state->lpl_list->size; i++) { + playlist_t *playlist = NULL; + unsigned playlist_size = 0; + const char *lpl_path = state->lpl_list->elems[i].data; + + /* skip files without .lpl file extension */ + if (!strstr(lpl_path, file_path_str(FILE_PATH_LPL_EXTENSION))) + continue; + + RARCH_LOG("Searching playlist: %s\n", lpl_path); + playlist = playlist_init(lpl_path, 99999); + playlist_size = playlist_get_size(playlist); + + for(j = 0; j < playlist_size; j++) { + const char *playlist_crc32 = NULL; + const char *playlist_path = NULL; + + playlist_get_index(playlist, j, &playlist_path, NULL, NULL, NULL, NULL, &playlist_crc32); + if(have_crc && string_is_equal(playlist_crc32, state->content_crc)) { + RARCH_LOG("[lobby] CRC match %s\n", playlist_crc32); + strlcpy(state->content_path, playlist_path, sizeof(state->content_path)); + state->found = true; + task_set_data(task, state); + finish_task(task, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND)); + string_list_free(state->lpl_list); + free(playlist); + return; + } + + get_entry(entry, sizeof(entry), playlist_path); + + /* See if the filename is a match. The response depends on whether or not we are doing a CRC + * search. + * + * If we are doing a CRC search, we stow a copy of the filename match in filename_match, which + * we'll use as our match if the CRC search is exhausted without a match. + * + * Otherwise, on match we complete the task and mark it as successful immediately. + */ + if(string_is_empty(filename_match) && + !string_is_empty(entry) && + string_is_equal(entry, state->content_path) && + strstr(state->core_extensions, path_get_extension(playlist_path))) { + if(have_crc) { + filename_match = strdup(playlist_path); + } else { + RARCH_LOG("[lobby] filename match %s\n", playlist_path); + + strlcpy(state->content_path, playlist_path, sizeof(state->content_path)); + state->found = true; + task_set_data(task, state); + finish_task(task, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND)); + string_list_free(state->lpl_list); + free(playlist); + return; + } + } + task_set_progress(task, (int)(j / playlist_size * 100.0)); + } + + free(playlist); + } + if(filename_match != NULL) { + RARCH_LOG("[lobby] CRC match failed; falling back to filename match %s\n", filename_match); + + strlcpy(state->content_path, filename_match, sizeof(state->content_path)); + state->found = true; + task_set_data(task, state); + finish_task(task, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND)); + string_list_free(state->lpl_list); + free(filename_match); + return; + } + + /* end of the line. no matches at all. */ string_list_free(state->lpl_list); - task_set_progress(task, 100); - task_free_title(task); - task_set_title(task, strdup("Content not found, try manual load or disconnect from host")); - task_set_finished(task, true); + finish_task(task, "Failed to locate matching content by either CRC or filename."); command_event(CMD_EVENT_NETPLAY_INIT_DIRECT_DEFERRED, state->hostname); free(state); - return; } bool task_push_netplay_crc_scan(uint32_t crc, char* name, From 697d8a3ba402c9280bcb5f0ee097463e094a0e92 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 17 Oct 2018 07:42:01 +0200 Subject: [PATCH 071/304] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 53985e0b4d..01287f3df7 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,7 @@ - SWITCH/LIBNX: Improve touch scaling calculation. - SWITCH: Proper button labels. - VULKAN: Fix RGUI crashing at startup. +- WINDOWS/WSA: Network Information info is blank until first network operation. - WIIU: Initial netplay peer-to-peer support. Network information working. # 1.7.5 From 421e6178e5aa247fe0fabbbdb2a4757792c9c01d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Oct 2018 18:20:01 +0200 Subject: [PATCH 072/304] Buildfix --- managers/cheat_manager.c | 4 +-- tasks/task_netplay_find_content.c | 45 +++++++++++++++++++------------ 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/managers/cheat_manager.c b/managers/cheat_manager.c index 202d8af8bc..9e979d09f2 100644 --- a/managers/cheat_manager.c +++ b/managers/cheat_manager.c @@ -320,7 +320,7 @@ void cheat_manager_load_cb_second_pass(char *key, char *value) char cheat_num_str[20]; unsigned cheat_num; unsigned cheat_idx; - int idx = 5; + unsigned idx = 5; size_t key_length = 0; errno = 0; @@ -715,7 +715,7 @@ bool cheat_manager_alloc_if_empty(void) int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) { - int i; + unsigned i; retro_ctx_memory_info_t meminfo; bool refresh = false; bool is_search_initialization = (setting != NULL); diff --git a/tasks/task_netplay_find_content.c b/tasks/task_netplay_find_content.c index 10ab3ef953..142893f45d 100644 --- a/tasks/task_netplay_find_content.c +++ b/tasks/task_netplay_find_content.c @@ -163,6 +163,10 @@ static void get_entry(char *entry, int len, const char *path) { */ static void task_netplay_crc_scan_handler(retro_task_t *task) { + size_t i, j; + char entry[PATH_MAX_LENGTH]; + char *filename_match = NULL; + bool have_crc = false; netplay_crc_handle_t *state = (netplay_crc_handle_t*)task->state; begin_task(task, "Looking for compatible content..."); @@ -195,16 +199,20 @@ static void task_netplay_crc_scan_handler(retro_task_t *task) return; } - bool have_crc = !string_is_equal(state->content_crc, "00000000|crc"); + have_crc = !string_is_equal(state->content_crc, "00000000|crc"); /* if content is already loaded and the lobby gave us a CRC, check the loaded content first */ - if(have_crc && content_get_crc() > 0) { + if(have_crc && content_get_crc() > 0) + { char current[PATH_MAX_LENGTH]; + RARCH_LOG("[lobby] testing CRC matching for: %s\n", state->content_crc); snprintf(current, sizeof(current), "%X|crc", content_get_crc()); RARCH_LOG("[lobby] current content crc: %s\n", current); - if (string_is_equal(current, state->content_crc)) { + + if (string_is_equal(current, state->content_crc)) + { RARCH_LOG("[lobby] CRC match %s with currently loaded content\n", current); strlcpy(state->content_path, "N/A", sizeof(state->content_path)); state->found = true; @@ -217,15 +225,11 @@ static void task_netplay_crc_scan_handler(retro_task_t *task) } /* now let's do the search */ - size_t i, j; - char *filename_match = NULL; - char entry[PATH_MAX_LENGTH]; - - - for(i = 0; i < state->lpl_list->size; i++) { - playlist_t *playlist = NULL; + for(i = 0; i < state->lpl_list->size; i++) + { + playlist_t *playlist = NULL; unsigned playlist_size = 0; - const char *lpl_path = state->lpl_list->elems[i].data; + const char *lpl_path = state->lpl_list->elems[i].data; /* skip files without .lpl file extension */ if (!strstr(lpl_path, file_path_str(FILE_PATH_LPL_EXTENSION))) @@ -235,12 +239,15 @@ static void task_netplay_crc_scan_handler(retro_task_t *task) playlist = playlist_init(lpl_path, 99999); playlist_size = playlist_get_size(playlist); - for(j = 0; j < playlist_size; j++) { + for(j = 0; j < playlist_size; j++) + { const char *playlist_crc32 = NULL; const char *playlist_path = NULL; playlist_get_index(playlist, j, &playlist_path, NULL, NULL, NULL, NULL, &playlist_crc32); - if(have_crc && string_is_equal(playlist_crc32, state->content_crc)) { + + if(have_crc && string_is_equal(playlist_crc32, state->content_crc)) + { RARCH_LOG("[lobby] CRC match %s\n", playlist_crc32); strlcpy(state->content_path, playlist_path, sizeof(state->content_path)); state->found = true; @@ -264,10 +271,12 @@ static void task_netplay_crc_scan_handler(retro_task_t *task) if(string_is_empty(filename_match) && !string_is_empty(entry) && string_is_equal(entry, state->content_path) && - strstr(state->core_extensions, path_get_extension(playlist_path))) { - if(have_crc) { + strstr(state->core_extensions, path_get_extension(playlist_path))) + { + if(have_crc) filename_match = strdup(playlist_path); - } else { + else + { RARCH_LOG("[lobby] filename match %s\n", playlist_path); strlcpy(state->content_path, playlist_path, sizeof(state->content_path)); @@ -284,7 +293,9 @@ static void task_netplay_crc_scan_handler(retro_task_t *task) free(playlist); } - if(filename_match != NULL) { + + if(filename_match != NULL) + { RARCH_LOG("[lobby] CRC match failed; falling back to filename match %s\n", filename_match); strlcpy(state->content_path, filename_match, sizeof(state->content_path)); From 87467be496910d757835f8839e012c6ad69d426d Mon Sep 17 00:00:00 2001 From: meleu Date: Wed, 17 Oct 2018 16:37:41 -0300 Subject: [PATCH 073/304] added cheevos console ID for atari7800 --- cheevos/cheevos.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cheevos/cheevos.h b/cheevos/cheevos.h index 0e53cc0021..ec25ae0019 100644 --- a/cheevos/cheevos.h +++ b/cheevos/cheevos.h @@ -98,7 +98,8 @@ typedef enum CHEEVOS_CONSOLE_VIRTUAL_BOY = 28, CHEEVOS_CONSOLE_MSX = 29, CHEEVOS_CONSOLE_COMMODORE_64 = 30, - CHEEVOS_CONSOLE_ZX81 = 31 + CHEEVOS_CONSOLE_ZX81 = 31, + CHEEVOS_CONSOLE_ATARI_7800 = 51 } cheevos_console_t; enum From 9370123133bd44a9c2748315708a63ae7016c5ee Mon Sep 17 00:00:00 2001 From: Stuart Carnie Date: Wed, 17 Oct 2018 19:36:18 -0700 Subject: [PATCH 074/304] fix: Post CMD_EVENT_QUIT directly to command queue --- ui/drivers/ui_cocoa.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 33d1852c96..f454831e90 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -466,7 +466,7 @@ static char** waiting_argv; if (rarch_ctl(RARCH_CTL_IS_INITED, NULL)) reply = NSTerminateCancel; - ui_companion_event_command(CMD_EVENT_QUIT); + command_event(CMD_EVENT_QUIT, NULL); return reply; } From 0957017a32b3783a7cb1c85cfd1ae18d7f6fa291 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 18 Oct 2018 05:49:28 +0200 Subject: [PATCH 075/304] Update Dutch localization --- intl/msg_hash_nl.h | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index d33ee6965c..2c42e03c06 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -107,7 +107,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST_END, - "Accounts List Endpoint" + "Accounts Lijst Eindpunt" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS, @@ -180,7 +180,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_MUTE, - "Audio Mute" + "Geluid uitzetten" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE, @@ -220,7 +220,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUTO_SHADERS_ENABLE, - "Load Shader Presets Automatically" + "Laad Shader Presets Automatisch" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK, @@ -2951,7 +2951,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_UPDATER, MSG_HASH(MSG_PREPARING_FOR_CONTENT_SCAN, "Preparing for content scan...") MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_DELETE, - "Delete core") + "Verwijder core") MSG_HASH(MENU_ENUM_SUBLABEL_CORE_DELETE, "Remove this core from disk.") MSG_HASH(MENU_ENUM_LABEL_VALUE_RENAME_ENTRY, @@ -2963,15 +2963,15 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY, MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY, "Modify the opacity of the framebuffer.") MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES, - "Favorites") + "Favorieten") MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_FAVORITES, "Content which you have added to 'Favorites' will appear here.") MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_MUSIC, - "Music") + "Muziek") MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_MUSIC, "Music which has been previously played will appear here.") MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_IMAGES, - "Image") + "Afbeeldingen") MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_IMAGES, "Images which have been previously viewed will appear here.") MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO, @@ -2987,11 +2987,11 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_MAIN_MENU_ENABLE_SETTINGS, MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS_PASSWORD, "Set Password For Enabling Settings Tab") MSG_HASH(MSG_INPUT_ENABLE_SETTINGS_PASSWORD, - "Enter Password") + "Voer wachtwoord in") MSG_HASH(MSG_INPUT_ENABLE_SETTINGS_PASSWORD_OK, - "Password correct.") + "Wachtwoord is correct.") MSG_HASH(MSG_INPUT_ENABLE_SETTINGS_PASSWORD_NOK, - "Password incorrect.") + "Wachtwoord is incorrect.") MSG_HASH(MENU_ENUM_SUBLABEL_XMB_MAIN_MENU_ENABLE_SETTINGS, "Enables the Settings tab. A restart is required for the tab to appear.") MSG_HASH(MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS_PASSWORD, @@ -3178,7 +3178,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE, MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME, "Volume") MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE, - "Current core") + "Huidige core") MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR, "Clear") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISCORD_IN_MENU, @@ -3193,7 +3193,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DISCORD_STATUS_PAUSED, "Paused") MSG_HASH( MENU_ENUM_LABEL_VALUE_DISCORD_ALLOW, - "Enable Discord" + "Discord Inschakelen" ) MSG_HASH( MENU_ENUM_SUBLABEL_DISCORD_ALLOW, @@ -3229,7 +3229,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCH_X_AXIS_CENTERING, - "X-Axis Centering" + "X-As Centering" ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, @@ -3245,19 +3245,19 @@ MSG_HASH( "Output Display ID") MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_RECORDING, - "Start Recording" + "Start Opname" ) MSG_HASH( MENU_ENUM_SUBLABEL_QUICK_MENU_START_RECORDING, - "Starts recording." + "Start met opnemen." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_STOP_RECORDING, - "Stop Recording" + "Stop Opname" ) MSG_HASH( MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_RECORDING, - "Stops recording." + "Stop met opnemen." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_STREAMING, @@ -3306,16 +3306,16 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_YOUTUBE_STREAM_KEY, MSG_HASH(MENU_ENUM_LABEL_VALUE_STREAMING_MODE, "Streaming Mode") MSG_HASH(MENU_ENUM_LABEL_VALUE_STREAMING_TITLE, - "Title of Stream") + "Titel van Stream") MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_SPLIT_JOYCON, "Split Joy-Con" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG, - "Reset To Defaults" + "Fabrieksinstellingen resetten" ) MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, - "Reset the current configuration to default values." + "Reset de instellingen aar fabrieksinstellingen." ) From ca0c1533e318398b6714eb92a6c8086d89e19ae6 Mon Sep 17 00:00:00 2001 From: Stuart Carnie Date: Wed, 17 Oct 2018 22:39:45 -0700 Subject: [PATCH 076/304] fix(cocoa): Suppress event propagation when event is not for RA window This is required when the Qt window is focused. Ideally, event handling should be reviewed and refactored such that this hack is not necessary. --- ui/drivers/ui_cocoa.m | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index f454831e90..b248d5ae9e 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -121,11 +121,18 @@ static void app_terminate(void) - (void)sendEvent:(NSEvent *)event { - NSEventType event_type; - cocoa_input_data_t *apple = NULL; [super sendEvent:event]; + + RetroArch_OSX *delegate = (RetroArch_OSX *)self.delegate; + if (event.window != delegate.window) { + // TODO(sgc): this is just a hack for the 1.7.5 release to + // ignore RA processing events that are not for the RA window. + // Ideally, we'de delegate `sendEvent` to the window listener + return; + } - event_type = event.type; + cocoa_input_data_t *apple = NULL; + NSEventType event_type = event.type; switch (event_type) { From edacf67e7545af5e2edce63efc16e6cd8c4b10c2 Mon Sep 17 00:00:00 2001 From: Nathan Strong Date: Thu, 18 Oct 2018 11:07:47 -0700 Subject: [PATCH 077/304] Capture CRC content for deferred-loading cores == DETAILS Fixes a bug where content CRC32 is not calculated when content loading is done by the core instead of libretro. This impacts the ability to do accurate content matching on netplay. This notably affects MAME, but is by no means limited to MAME. Change summary: - adds a method to the crc32 implementation that calculates crc32 for a file (as opposed to an in-memory buffer) - fix a minor bug that would print the "core will load its own content" right before attempting to load compressed content - in the actual "core will load its own content" path, calculate the CRC32 and log it before returning == TESTING Tested locally on OSX: - loaded content - started netplay - confirmed CRC showing in netplay data - verified CRC32 against external crc32 tool --- libretro-common/encodings/encoding_crc32.c | 17 +++++++++++++++++ libretro-common/include/encodings/crc32.h | 1 + libretro-common/streams/file_stream.c | 3 ++- tasks/task_content.c | 6 +++--- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/libretro-common/encodings/encoding_crc32.c b/libretro-common/encodings/encoding_crc32.c index 4775e76357..45800e82a6 100644 --- a/libretro-common/encodings/encoding_crc32.c +++ b/libretro-common/encodings/encoding_crc32.c @@ -23,6 +23,8 @@ #include #include #include +#include +#include static const uint32_t crc32_table[256] = { 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, @@ -88,3 +90,18 @@ uint32_t encoding_crc32(uint32_t crc, const uint8_t *buf, size_t len) return crc ^ 0xffffffff; } + +uint32_t file_crc32(uint32_t crc, const char *path) { + if(path == NULL) + return 0; + + void *file_bytes = NULL; + int64_t file_len = 0; + + if(filestream_read_file(path, &file_bytes, &file_len)) { + crc = encoding_crc32(crc, (uint8_t *)file_bytes, file_len); + free(file_bytes); + return crc; + } + return 0; +} diff --git a/libretro-common/include/encodings/crc32.h b/libretro-common/include/encodings/crc32.h index 76fbb5475e..25e926276f 100644 --- a/libretro-common/include/encodings/crc32.h +++ b/libretro-common/include/encodings/crc32.h @@ -31,6 +31,7 @@ RETRO_BEGIN_DECLS uint32_t encoding_crc32(uint32_t crc, const uint8_t *buf, size_t len); +uint32_t file_crc32(uint32_t crc, const char *path); RETRO_END_DECLS diff --git a/libretro-common/streams/file_stream.c b/libretro-common/streams/file_stream.c index 680a809ec5..b24102ff3b 100644 --- a/libretro-common/streams/file_stream.c +++ b/libretro-common/streams/file_stream.c @@ -482,7 +482,8 @@ int filestream_close(RFILE *stream) * * Read the contents of a file into @buf. * - * Returns: number of items read, -1 on error. + * Returns: 1 on success, 0 on failure + * In the error case, the dereferenced buf is set to NULL and the len is set to -1. */ int64_t filestream_read_file(const char *path, void **buf, int64_t *len) { diff --git a/tasks/task_content.c b/tasks/task_content.c index c2df099419..c366ab1673 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -603,9 +603,6 @@ static bool content_file_load( } else { - RARCH_LOG("%s\n", - msg_hash_to_str( - MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT)); #ifdef HAVE_COMPRESSION if ( !content_ctx->block_extract @@ -619,6 +616,9 @@ static bool content_file_load( goto error; #endif } + RARCH_LOG("%s\n", msg_hash_to_str(MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT)); + content_rom_crc = file_crc32(0, path); + RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); } load_info.content = content; From 5353e29afa54ede24ab097647c8ca5a99b6a1095 Mon Sep 17 00:00:00 2001 From: LamboLighting Date: Thu, 18 Oct 2018 22:57:11 +0300 Subject: [PATCH 078/304] Update intl/msg_hash_el.h --- intl/msg_hash_el.h | 258 ++++++++++++++++++++++----------------------- 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h index 3245125e2f..8343d39cda 100644 --- a/intl/msg_hash_el.h +++ b/intl/msg_hash_el.h @@ -8,7 +8,7 @@ MSG_HASH( ) MSG_HASH( MSG_NATIVE, - "Native" + "Ντόπιος" ) MSG_HASH( MSG_DEVICE_DISCONNECTED_FROM_PORT, @@ -692,7 +692,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CUSTOM_RATIO, - "Πρωτιμώμενη Αναλογία" + "Προτιμώμενη Αναλογία" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER, @@ -1060,7 +1060,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_BINDS, - "Input Hotkey Binds" + "Σύνδεση Πλήκτρων Εντολών" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_ICADE_ENABLE, @@ -1332,35 +1332,35 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_ENABLE, - "Display Overlay" + "Εμφάνιση Επικαλύμματος" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU, - "Hide Overlay In Menu" + "Απόκρυψη Επικαλύμματος Στο Μενού" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, - "Show Inputs On Overlay" + "Εμφάνιση Εισαγωγών Στο Επικάλλυμα" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, - "Show Inputs Listen Port" + "Εμφάνιση Θύρας Εισαγωγών" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR, - "Poll Type Behavior" + "Τύπος Συμπεριφοράς Συγκέντρωσης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_EARLY, - "Early" + "Νωρίς" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_LATE, - "Late" + "Αργά" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_NORMAL, - "Normal" + "Φυσιολογικά" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_PREFER_FRONT_TOUCH, @@ -1924,7 +1924,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_ONSCREEN_OVERLAY_SETTINGS, - "Adjust Bezels and Onscreen controls" + "Προσαρμογή Προσόψεων και Χειρισμών Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ONSCREEN_NOTIFICATIONS_SETTINGS, @@ -1932,7 +1932,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_ONSCREEN_NOTIFICATIONS_SETTINGS, - "Adjust the Onscreen Notifications" + "Προσαρμόστε τις Ειδοποιήσεις Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OPEN_ARCHIVE, @@ -1948,7 +1948,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED, - "Autoload Preferred Overlay" + "Αυτόματη Φόρτωση Προτιμώμενου Επικαλύμματος" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OVERLAY_DIRECTORY, @@ -1956,23 +1956,23 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OVERLAY_OPACITY, - "Overlay Opacity" + "Διαφάνεια Επικαλύμματος" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OVERLAY_PRESET, - "Overlay Preset" + "Προκαθορισμένο Επικάλλυμα" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OVERLAY_SCALE, - "Overlay Scale" + "Κλίμακα Επικαλύμματος" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS, - "Onscreen Overlay" + "Επικάλλυμα Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PAL60_ENABLE, - "Use PAL60 Mode" + "Χρήση Λειτουργίας PAL60" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PARENT_DIRECTORY, @@ -2172,15 +2172,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RECORD_ENABLE, - "Enable Recording" + "Ενεργοποίηση Εγγραφής" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RECORD_PATH, - "Save Output Recording as..." + "Αποθήκευση Εγγραφής Ως..." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY, - "Save Recordings in Output Dir" + "Αποθήκευση Εγγραφών στο Ευρετήριο Εξαγωγής" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_REMAP_FILE, @@ -2256,23 +2256,23 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_TOGGLE, - "Apply After Toggle" + "Εφαρμογή Μετά Την Ενεργοποίηση" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_LOAD, - "Auto-Apply Cheats During Game Load" + "Αυτόματη Εφαρμογή Απατών Κατά την Φόρτωση Παιχνιδιού" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY, - "Rewind Granularity" + "Βαθμός Λεπτομέρειας Επιστροφής" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE, - "Rewind Buffer Size (MB)" + "Μέγεθος Ενδιάμεσης Μνήμης Επιστροφής (MB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP, - "Rewind Buffer Size Step (MB)" + "Βήμα Μεγέθους Ενδιάμεσης Μνήμης Επιστροφής (MB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_REWIND_SETTINGS, @@ -2376,7 +2376,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SAVE_STATE, - "Κατάσταση Αποθήκευσης" + "ποθήκευση Κατάστασης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS, @@ -2520,7 +2520,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STATE_SLOT, - "State Slot" + "Θέση Κατάστασης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STATUS, @@ -2888,35 +2888,35 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_YMD_HMS, - "YYYY-MM-DD HH:MM:SS" + "ΧΧΧΧ-ΜΜ-ΗΗ ΩΩ:ΛΛ:ΔΔ" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_YMD_HM, - "YYYY-MM-DD HH:MM" + "ΧΧΧΧ-ΜΜ-ΗΗ ΩΩ:ΛΛ" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_MDYYYY, - "MM-DD-YYYY HH:MM" + "ΜΜ-ΗΗ-ΧΧΧΧ ΩΩ:ΛΛ" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_HMS, - "HH:MM:SS" + "ΩΩ:ΛΛ:ΔΔ" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_HM, - "HH:MM" + "ΩΩ:ΛΛ" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_DM_HM, - "DD/MM HH:MM" + "ΗΗ/ΜΜ ΩΩ:ΛΛ" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_MD_HM, - "MM/DD HH:MM" + "ΜΜ/ΗΗ ΩΩ:ΛΛ" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_AM_PM, - "HH:MM:SS (AM/PM)" + "ΩΩ:ΛΛ:ΔΔ (ΠΜ/ΜΜ)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_TITLE_COLOR, @@ -2936,15 +2936,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_UI_COMPANION_TOGGLE, - "Show desktop menu on startup" + "Εμφάνιση μενού επιφάνειας εργασίας κατά την εκκίνηση" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_DESKTOP_MENU_ENABLE, - "Enable desktop menu (restart)" + "Ενεργοποίηση μενού επιφάνειας εργασίας (επανεκκίνηση)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_UI_MENUBAR_ENABLE, - "Menubar" + "Γραμμή Μενού" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE, @@ -2952,11 +2952,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_UNDO_LOAD_STATE, - "Undo Load State" + "Αναίρεση Φόρτωσης Κατάστασης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_UNDO_SAVE_STATE, - "Undo Save State" + "Αναίρεση Αποθήκευσης Κατάστασης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_UNKNOWN, @@ -3056,11 +3056,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION, - "Black Frame Insertion" + "Εισαγωγή Μαύρων Καρέ" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_CROP_OVERSCAN, - "Crop Overscan (Reload)" + "Περικοπή Υπερσάρωσης (Επαναφόρτωση)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION, @@ -3100,7 +3100,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE, - "Force-disable sRGB FBO" + "Εξαναγκασμένη απενεργοποίηση sRGB FBO" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY, @@ -3132,15 +3132,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, - "Max swapchain images" + "Μέγιστες εικόνες swapchain" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_X, - "Notification X Position" + "Θέση Ειδοποιήσης X" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_Y, - "Notification Y Position" + "Θέση Ειδοποιήσης Y" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX, @@ -3156,11 +3156,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO, - "Estimated Screen Framerate" + "Εκτιμόμενος Ρυθμός Καρέ Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_POLLED, - "Set Display-Reported Refresh Rate" + "Ορισμός Ρυθμού Ανανέωσης Βάση Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION, @@ -3172,7 +3172,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, - "Integer Scale" + "Ακέραια Κλίμακα" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS, @@ -3216,15 +3216,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SMOOTH, - "Bilinear Filtering" + "Διγραμμικό Φιλτράρισμα" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SOFT_FILTER, - "Soft Filter Enable" + "Ενεργοποίηση Απαλού Φίλτρου" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SWAP_INTERVAL, - "Vertical Sync (Vsync) Swap Interval" + "Διάστημα Εναλλαγής Κάθετου Συγχρονισμόυ (Vsync)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_TAB, @@ -3240,23 +3240,23 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_HEIGHT, - "Custom Aspect Ratio Height" + "Προτιμώμενο Ύψος Αναλογίας Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH, - "Custom Aspect Ratio Width" + "Προτιμώμενο Πλάτος Αναλογίας Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_X, - "Custom Aspect Ratio X Pos." + "Προτιμώμενη Θέση Άξωνα X Αναλογίας Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y, - "Custom Aspect Ratio Y Pos." + "Προτιμώμενη Θέση Άξωνα Y Αναλογίας Οθόνης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH, - "Set VI Screen Width" + "Ορισμός Πλάτους Οθόνης VI" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, @@ -3588,7 +3588,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_FPS_SHOW, - "Εμφανίζει τον τρέχον ρυθμό καρέ ανά δευτερόλεπτο στην οθόνη." + "Εμφανίζει τον τρέχων ρυθμό καρέ ανά δευτερόλεπτο στην οθόνη." ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_HOTKEY_BINDS, @@ -3652,7 +3652,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_WINDOW_SCALE, - "Sets the window size relative to the core viewport size. Alternatively, you can set a window width and height below for a fixed window size." + "Ορισμός μεγέθους παραθύρου σε σχέση με το μέγεθος της οπτικής γωνίας του πυρήνα. Διαφορετικά, παρακάτω μπορείτε να ορίσετε το πλάτος και το ύψος του παραθύρου σε σταθερό μέγεθος." ) MSG_HASH( MENU_ENUM_SUBLABEL_USER_LANGUAGE, @@ -3660,15 +3660,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_BLACK_FRAME_INSERTION, - "Inserts a black frame inbetween frames. Useful for users with 120Hz screens who want to play 60Hz content to eliminate ghosting." + "Εισάγει ένα μαύρο καρέ ανάμεσα στα καρέ. Χρήσιμο για χρήστες με οθόνες 120Hz που θέλουν να παίξουν περιεχόμενο στα 60Hz χωρίς 'φαντάσματα' στην εικόνα." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FRAME_DELAY, - "Reduces latency at the cost of a higher risk of video stuttering. Adds a delay after V-Sync (in ms)." + "Μειώνει την καθυστέρηση με μεγαλύτερο κίνδυνο για κολλήματα στο βίντεο. Προσθέτει μία επιβράδυνση μετά το V-Sync (σε ms)." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_HARD_SYNC_FRAMES, - "Sets how many frames the CPU can run ahead of the GPU when using 'Hard GPU Sync'." + "Ορίζει πόσα καρέ μπορεί ο επεξεργαστής να βρίσκεται μπροστά από την κάρτα γραφικών όταν χρησιμοποιείται τον 'Σκληρό Συγχρονισμό Κάρτα Γραφικών'." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, @@ -3680,11 +3680,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_AUTO, - "The accurate estimated refresh rate of the screen in Hz." + "Ο ακριβής εκτιμόμενος ρυθμός ανανέωσης της οθόνης σε Hz." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_POLLED, - "The refresh rate as reported by the display driver." + "Ο ρυθμός ανανέωσης όπως αναφέρεται από τον οδηγό οθόνης." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_SETTINGS, @@ -3692,7 +3692,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_WIFI_SETTINGS, - "Scans for wireless networks and establishes connection." + "Σαρώνει για ασύρματα δίκτυα και δημιουργεί σύνδεση." ) MSG_HASH( MENU_ENUM_SUBLABEL_HELP_LIST, @@ -3704,7 +3704,7 @@ MSG_HASH( ) MSG_HASH( MSG_RESET_CORE_ASSOCIATION, - "Playlist entry core association has been reset." + "Ο σύνδεση με πυρήνα της λίστας αναπαραγωγής έχει επαναφερθεί." ) MSG_HASH( MSG_APPENDED_DISK, @@ -3868,7 +3868,7 @@ MSG_HASH( ) MSG_HASH( MSG_INDEX_FILE, - "index" + "ευρετηρίου" ) MSG_HASH( MSG_DOWNLOAD_FAILED, @@ -3968,7 +3968,7 @@ MSG_HASH( ) MSG_HASH( MSG_FAILED_TO_LOAD_OVERLAY, - "Failed to load overlay." + "Αποτυχία φόρτωσης επικαλλύματος." ) MSG_HASH( MSG_FAILED_TO_LOAD_STATE, @@ -4524,7 +4524,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_ALL_USERS_CONTROL_MENU, - "Allows any user to control the menu. If disabled, only User 1 can control the menu." + "Επιτρέπει σε οποιονδήποτε χρήστη να χειριστεί το μενού. Εάν απενεργοποιηθεί, μόνο ο Χρήστης 1 μπορεί να χειριστει το μενού." ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_VOLUME, @@ -4548,15 +4548,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_AXIS_THRESHOLD, - "How far an axis must be tilted to result in a button press." + "Πόσο μακριά ένας άξωνας πρέπει να γείρει ώστε να οδηγήσει σε πάτημα κουμπιού." ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_BIND_TIMEOUT, - "Amount of seconds to wait until proceeding to the next bind." + "Χρόνος αναμονής σε δευτερόλεπτα μέχρι την συνέχιση στην επόμενη σύνδεση πλήκτρων." ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_BIND_HOLD, - "Amount of seconds to hold an input to bind it." + "Δευτερόλεπτα τα οποία χρειάζεται να κρατήσετε πατημένο κάποιο κουμπί μέχρι την σύνδεση του." ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_TURBO_PERIOD, @@ -4568,7 +4568,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_VSYNC, - "Synchronizes the output video of the graphics card to the refresh rate of the screen. Recommended." + "Συγχρονίζει την έξοδο βίντεο της κάρτας γραφικών με τον ρυθμό ανανέωσης της οθόνης. Προτείνεται." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_ALLOW_ROTATE, @@ -4584,8 +4584,8 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE, - "Vertical refresh rate of your screen. Used to calculate a suitable audio input rate.\n" - "NOTE: This will be ignored if 'Threaded Video' is enabled." + "Ο κάθετος ρυθμός ανανέωσης της οθόνης. Χρησιμοποιείται για τον υπολογισμό του κατάλληλου ρυθμού εισαγωγής ήχου.\n" + "ΣΗΜΕΙΩΣΗ: Αυτή η επιλογή αγνοείται εάν έχετε ενεργοποιήσει το 'Threaded Video'." ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_ENABLE, @@ -4801,28 +4801,28 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_CROP_OVERSCAN, - "Cuts off a few pixels around the edges of the image customarily left blank by developers which sometimes also contain garbage pixels." + "Αφαιρεί μερικά pixel γύρω από την εικόνα όπου εθιμικά οι προγραμματιστές άφηναν κενά ή και που περιέχουν άχρηστα pixel." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_SMOOTH, - "Adds a slight blur to the image to take the edge off of the hard pixel edges. This option has very little impact on performance." + "Προσθέτει μία μικρή θολούρα στην εικόνα ώστε να αφαιρέσει τις σκληρές γωνίες των pixel. Αυτή η επιλογή έχει πολύ μικρή επιρροή στην επίδοση." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FILTER, - "Apply a CPU-powered video filter.\n" - "NOTE: Might come at a high performance cost. Some video filters might only work for cores that use 32bit or 16bit color." + "Εφαρμόστε ένα φίλτρο βίντεο που λειτουργεί με τον επεξεργαστή.\n" + "ΣΗΜΕΙΩΣΗ: Μπορεί να έχει μεγάλο κόστος στην επίδοση. Μερικά φίλτρα βίντεο μπορεί να δουλεύουν μόνο με πυρήνες που χρησιμοποιούν 32bit ή 16bit χρώμα." ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEEVOS_USERNAME, - "Input the username of your RetroAchievements account." + "Εισάγεται το όνομα χρήστη του λογαριασμού σας στο RetroAchievements." ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEEVOS_PASSWORD, - "Input the password of your RetroAchievements account." + "Εισάγεται τον κωδικό πρόσβασης του λογαριασμού σας στο RetroAchievements." ) MSG_HASH( MENU_ENUM_SUBLABEL_NETPLAY_NICKNAME, - "Input your user name here. This will be used for netplay sessions, among other things." + "Εισάγεται το όνομα χρήστη σας εδώ. Αυτό θα χρησιμοποιηθεί για συνεδρίες netplay ανάμεσα σε άλλα πράγματα." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_POST_FILTER_RECORD, @@ -4850,11 +4850,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_WINDOW_WIDTH, - "Set the custom width size for the display window. Leaving it at 0 will attempt to scale the window as large as possible." + "Ορίστε το προτιμώμενο πλάτος του παραθύρου απεικόνισης. Αφήνοντας το στο 0 θα επιχειρηθεί η κλίμακα του παραθύρου να είναι όσο το δυνατόν μεγαλύτερη." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_WINDOW_HEIGHT, - "Set the custom height size for the display window. Leaving it at 0 will attempt to scale the window as large as possible." + "Ορίστε το προτιμώμενο ύψος του παραθύρου απεικόνισης. Αφήνοντας το στο 0 θα επιχειρηθεί η κλίμακα του παραθύρου να είναι όσο το δυνατόν μεγαλύτερη." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_X, @@ -4878,15 +4878,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_OVERLAY_HIDE_IN_MENU, - "Hide the overlay while inside the menu, and show it again when exiting the menu." + "Απόκρυψη του επικαλλύματος μέσα στο μενού και εμφάνιση του ξανά με την έξοδο από το μενού." ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, - "Show keyboard/controller inputs on the onscreen overlay." + "Εμφάνιση εισαγωγών πληκτρολογίου/χειριστηρίου στο επικάλλυμα οθόνης." ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, - "Select the port for the overlay to listen to if Show Inputs On Overlay is enabled." + "Επιλογή της θύρας για όταν είναι ενεργοποιημένη η επιλογή 'Εμφάνιση Εισαγωγών Στην Οθόνη'" ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_COLLECTION_LIST, @@ -4894,7 +4894,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER, - "Only scales video in integer steps. The base size depends on system-reported geometry and aspect ratio. If 'Force Aspect' is not set, X/Y will be integer scaled independently." + "Αλλαγή κλίμακας βίντεο σε ακέραια βήματα. Το βασικό μέγεθος εξαρτάται από την γεωμετρία και την κλίμακα οθόνης του συστήματος. Εάν η 'Εξαναγκασμένη Κλίμακα' δεν έχει οριστεί, οι άξωνες X/Y θα αλλάζουν κλίμακα ξεχωριστά." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_GPU_SCREENSHOT, @@ -4954,7 +4954,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_REWIND_ENABLE, - "Enable rewinding. This will take a performance hit when playing." + "Ενεργοποίηση επιστροφής. Η επίδοση θα πέσει κατά το παιχνίδι." ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEAT_APPLY_AFTER_TOGGLE, @@ -5115,11 +5115,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_INPUT_SWAP_OK_CANCEL, - "Swap buttons for OK/Cancel. Disabled is the Japanese button orientation, enabled is the western orientation." + "Εναλλαγή πλήτρκων για Επιβεβαίωση/Ακύρωση. Απενεργοποιημένο είναι ο Ιαπωνικός προσανατολισμός, ενεργοποιημένος είναι ο δυτικός προσανατολισμός." ) MSG_HASH( MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "If disabled, the content will keep running in the background when RetroArch's menu is toggled." + "Εάν απενεργοποιηθεί το περιεχόμενο θα συνεχίσει να τρέχει στο παρασκήνιο όταν το μενού του RetroArch είναι ανοικτό." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_DRIVER, @@ -5191,19 +5191,19 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_OVERLAY_OPACITY, - "Opacity of all UI elements of the overlay." + "Διαφάνεια όλων των στοιχείων του επικαλλύματος." ) MSG_HASH( MENU_ENUM_SUBLABEL_OVERLAY_SCALE, - "Scale of all UI elements of the overlay." + "Κλίμακα όλων των στοιχείων του επικαλλύματος." ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_OVERLAY_ENABLE, - "Enable the overlay." + "Ενεργοποίηση του επικαλλύματος." ) MSG_HASH( MENU_ENUM_SUBLABEL_OVERLAY_PRESET, - "Select an overlay from the file browser." + "Επιλογή ενός επικαλλύματος από τον περιηγητή αρχείων." ) MSG_HASH( MENU_ENUM_SUBLABEL_NETPLAY_IP_ADDRESS, @@ -5307,7 +5307,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_SWAP_INTERVAL, - "Uses a custom swap interval for Vsync. Set this to effectively halve monitor refresh rate." + "Χρησιμοποιεί ένα προτιμώμενο διάστημα αλλαγής για το Vsync. Ορίστε αυτό ώστε να μειώσεται στο μισό τον ρυθμό ανανέωσης της οθόνης αποτελεσματικά." ) MSG_HASH( MENU_ENUM_SUBLABEL_SORT_SAVEFILES_ENABLE, @@ -5387,51 +5387,51 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_TAKE_SCREENSHOT, - "Captures an image of the screen." + "Καταγράφει μία εικόνα της οθόνης." ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Closes the current content. Any unsaved changes might be lost." + "Κλείνει το τρέχον περιεχόμενο. Οποιεσδήποτε μη αποθηκευμένες αλλαγές μπορεί να χαθούν." ) MSG_HASH( MENU_ENUM_SUBLABEL_LOAD_STATE, - "Load a saved state from the currently selected slot." + "Φόρτωση μίας κατάστασης από την τρέχουσα θέση." ) MSG_HASH( MENU_ENUM_SUBLABEL_SAVE_STATE, - "Save a state to the currently selected slot." + "Αποθήκευση μίας κατάστασης στην τρέχουσα θέση." ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME, - "Resume the currently running content and leave the Quick Menu." + "Συνέχιση εκτέλεσης του τρέχοντος περιεχομένου και έξοδος από το Γρήγορο Μενού." ) MSG_HASH( MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Resume the currently running content and leave the Quick Menu." + "Συνέχιση εκτέλεσης του τρέχοντος περιεχομένου και έξοδος από το Γρήγορο Μενού." ) MSG_HASH( MENU_ENUM_SUBLABEL_STATE_SLOT, - "Changes the currently selected state slot." + "Αλλάζει την τρέχουσα επιλεγμένη θέση κατάστασης." ) MSG_HASH( MENU_ENUM_SUBLABEL_UNDO_LOAD_STATE, - "If a state was loaded, content will go back to the state prior to loading." + "Εάν μία κατάσταση φορτώθηκε, το περιεχόμενο θα επιστρέψει στην κατάσταση πριν την φόρτωση." ) MSG_HASH( MENU_ENUM_SUBLABEL_UNDO_SAVE_STATE, - "If a state was overwritten, it will roll back to the previous save state." + "Εάν μία κατάσταση αντικαταστάθηκε, το περιεχόμενο θα επιστρέψει στην προηγούμενη κατάσταση αποθήκευσης." ) MSG_HASH( MENU_ENUM_SUBLABEL_ACCOUNTS_RETRO_ACHIEVEMENTS, - "RetroAchievements service. For more information, visit http://retroachievements.org" + "Υπηρεσία RetroAchievements. Για περισσότερες πληροφορίες επισκεφθείτε το http://retroachievements.org" ) MSG_HASH( MENU_ENUM_SUBLABEL_ACCOUNTS_LIST, - "Manages currently configured accounts." + "Διαχειρίζεται τους τρέχοντες διαμορφωμένους λογαριασμούς." ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_REWIND, - "Manages rewind settings." + "Διαχειρίζεται τις ρυθμίσεις επαναφοράς." ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_META_CHEAT_DETAILS, @@ -5443,7 +5443,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_RESTART_CONTENT, - "Restarts the content from the beginning." + "Επανεκκινεί το περιεχόμενο από την αρχή." ) MSG_HASH( MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, @@ -5459,19 +5459,19 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_CHEAT_OPTIONS, - "Set up cheat codes." + "Στήσιμο κωδικών απάτης." ) MSG_HASH( MENU_ENUM_SUBLABEL_SHADER_OPTIONS, - "Set up shaders to visually augment the image." + "Στήσιμο σκιάσεων για την οπτική βελτίωση της εικόνας." ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Change the controls for the currently running content." + "Αλλαγή χειρισμών για το τρέχον εκτελούμενο περιεχόμενο." ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Change the options for the currently running content." + "Αλλαγή επιλογών για το τρέχον εκτελούμενο περιεχόμενο." ) MSG_HASH( MENU_ENUM_SUBLABEL_SHOW_ADVANCED_SETTINGS, @@ -5483,7 +5483,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_REMOVE, - "Allow the user to remove entries from collections." + "Επιτρέψτε στον χρήστη να καταργεί τις καταχωρήσεις από την συλλογή." ) MSG_HASH( MENU_ENUM_SUBLABEL_SYSTEM_DIRECTORY, @@ -5684,11 +5684,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_OVERLAY_DIRECTORY, - "Defines a directory where overlays are kept for easy access." + "Ορίζει ένα ευρετήριο όπου τα επικαλλύματα αποθηκεύονται για εύκολη πρόσβαση." ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEAT_DATABASE_PATH, - "Cheat files are kept here." + "Τα αρχεία απάτης αποθηκεύονται εδώ." ) MSG_HASH( MENU_ENUM_SUBLABEL_AUDIO_FILTER_DIR, @@ -5780,7 +5780,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SETTINGS, - "Quickly access all relevant in-game settings." + "Γρήγορα πρόσβαση σε όλες τις σχετικές ρυθμίσεις παιχνιδιού." ) MSG_HASH( MENU_ENUM_SUBLABEL_CORE_INFORMATION, @@ -5792,19 +5792,19 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_HEIGHT, - "Custom viewport height that is used if the Aspect Ratio is set to 'Custom'." + "Προτιμώμενο ύψος οπτικής γωνίας το οποίο χρησιμοποιείται εάν η Αναλογία Οθόνης είναι ορισμένη ως 'Προτιμώμενη'." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_WIDTH, - "Custom viewport width that is used if the Aspect Ratio is set to 'Custom'." + "Προτιμώμενο πλάτος οπτικής γωνίας το οποίο χρησιμοποιείται εάν η Αναλογία Οθόνης είναι ορισμένη ως 'Προτιμώμενη'." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_X, - "Custom viewport offset used for defining the X-axis position of the viewport. These are ignored if 'Integer Scale' is enabled. It will be automatically centered then." + "Προτιμώμενη απόκλειση οπτικής γωνίας για τον ορισμό της θέσης του άξωνα X της οπτικής γωνίας. Αυτό αγνοείται εάν έχεται ενεργοποιήσει την 'Ακέραια Κλίμακα'. Τότε θα κεντραριστεί αυτόματα." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y, - "Custom viewport offset used for defining the Y-axis position of the viewport. These are ignored if 'Integer Scale' is enabled. It will be automatically centered then." + "Προτιμώμενη απόκλειση οπτικής γωνίας για τον ορισμό της θέσης του άξωνα Y της οπτικής γωνίας. Αυτό αγνοείται εάν έχεται ενεργοποιήσει την 'Ακέραια Κλίμακα'. Τότε θα κεντραριστεί αυτόματα." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_NETPLAY_USE_MITM_SERVER, @@ -5976,15 +5976,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME, - "Allow the user to rename entries in collections." + "Επιτρέψτε στον χρήστη να μετονομάζει τις καταχωρήσεις στην συλλογή." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME, - "Allow to rename entries" + "Επίτρεψη μετονομασίας καταχωρήσεων" ) MSG_HASH( MENU_ENUM_SUBLABEL_RENAME_ENTRY, - "Rename the title of the entry." + "Μετονομασία του τίτλου αυτής της καταχώρησης." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RENAME_ENTRY, @@ -6264,7 +6264,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_OPACITY, - "Window Opacity" + "Διαφάνεια Παραθύρου" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, @@ -6284,7 +6284,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SHOW_DECORATIONS, - "Show Window Decorations" + "Εμφάνιση Διακοσμητικών Παραθύρου" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STATISTICS_SHOW, @@ -7545,7 +7545,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_ADAPTIVE_VSYNC, - "Το V-Sync είναι ενεργοποιημένο μέχρι η επίδοση να πέσει κάτω από τον στόχο ρυθμού ανανέωσης. Μπορεί να μιώσει τα κολλήματα όταν η επίδοση πέφτει χαμηλότερα από τον κανονικό χρόνο και μπορεί να είναι πιο αποδοτικό ενεργειακά." + "Το V-Sync είναι ενεργοποιημένο μέχρι η επίδοση να πέσει κάτω από τον στόχο ρυθμού ανανέωσης. Μπορεί να μειώσει τα κολλήματα όταν η επίδοση πέφτει χαμηλότερα από τον κανονικό χρόνο και μπορεί να είναι πιο αποδοτικό ενεργειακά." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCHRES_SETTINGS, From 66e7c73193219122de20fcd77bd459948c93aa5d Mon Sep 17 00:00:00 2001 From: Themaister Date: Thu, 18 Oct 2018 23:37:45 +0200 Subject: [PATCH 079/304] Keep enable state the same after loading new overlay. --- gfx/drivers/vulkan.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index a65ee5e477..140dbff7b7 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -2619,6 +2619,7 @@ static bool vulkan_overlay_load(void *data, const void *image_data, unsigned num_images) { unsigned i, j; + bool old_enabled; const struct texture_image *images = (const struct texture_image*)image_data; vk_t *vk = (vk_t*)data; @@ -2636,6 +2637,7 @@ static bool vulkan_overlay_load(void *data, #ifdef HAVE_THREADS slock_unlock(vk->context->queue_lock); #endif + old_enabled = vk->overlay.enable; vulkan_overlay_free(vk); vk->overlay.images = (struct vk_texture*) @@ -2663,6 +2665,7 @@ static bool vulkan_overlay_load(void *data, vk->overlay.vertex[4 * i + j].color = white; } + vk->overlay.enable = old_enabled; return true; error: From d03c0be71d4ec1920c9edb4f2f3b0fcab0fcc430 Mon Sep 17 00:00:00 2001 From: Nathan Strong Date: Thu, 18 Oct 2018 16:38:02 -0700 Subject: [PATCH 080/304] Rewrite file hasher to limit amount hashed == DETAILS Since the content file could potentially be huge, hashing the whole thing at runtime may take a really long time. Plus, it was loading the whole file into RAM at once. Now, we only load 1MB at a time and hash up to the first 64MB. == TESTING I don't have any large content files to test it with, but I tested it with a small one and confirmed that the hash was correct. --- libretro-common/encodings/encoding_crc32.c | 47 ++++++++++++++++++---- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/libretro-common/encodings/encoding_crc32.c b/libretro-common/encodings/encoding_crc32.c index 45800e82a6..4dd932db6a 100644 --- a/libretro-common/encodings/encoding_crc32.c +++ b/libretro-common/encodings/encoding_crc32.c @@ -91,17 +91,50 @@ uint32_t encoding_crc32(uint32_t crc, const uint8_t *buf, size_t len) return crc ^ 0xffffffff; } +#define CRC32_BUFFER_SIZE 1048576 +#define CRC32_MAX_MB 64 + +/** + * Calculate a CRC32 from the first part of the given file. + * "first part" being the first (CRC32_BUFFER_SIZE * CRC32_MAX_MB) + * bytes. + * TODO: maybe make these numbers configurable? + * + * Returns: the crc32, or 0 if there was an error. + */ uint32_t file_crc32(uint32_t crc, const char *path) { if(path == NULL) return 0; - void *file_bytes = NULL; - int64_t file_len = 0; + RFILE *file = NULL; + unsigned char *buf = NULL; + int i, nread; - if(filestream_read_file(path, &file_bytes, &file_len)) { - crc = encoding_crc32(crc, (uint8_t *)file_bytes, file_len); - free(file_bytes); - return crc; + file = filestream_open(path, RETRO_VFS_FILE_ACCESS_READ, 0); + if(file == NULL) + goto error; + + buf = (char *)malloc(CRC32_BUFFER_SIZE); + if(buf == NULL) + goto error; + + for(i = 0; i < CRC32_MAX_MB; i++) { + nread = filestream_read(file, buf, CRC32_BUFFER_SIZE); + if(nread < 0) + goto error; + + crc = encoding_crc32(crc, buf, nread); + if(filestream_eof(file)) + break; } - return 0; + free(buf); + filestream_close(file); + return crc; + + error: + if(buf) + free(buf); + if(file) + filestream_close(file); + return 0; } From dc181968442d03c403610fe6636981438016f31b Mon Sep 17 00:00:00 2001 From: Nathan Strong Date: Thu, 18 Oct 2018 16:44:30 -0700 Subject: [PATCH 081/304] get rid of TODO --- libretro-common/encodings/encoding_crc32.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libretro-common/encodings/encoding_crc32.c b/libretro-common/encodings/encoding_crc32.c index 4dd932db6a..85881e521b 100644 --- a/libretro-common/encodings/encoding_crc32.c +++ b/libretro-common/encodings/encoding_crc32.c @@ -98,7 +98,6 @@ uint32_t encoding_crc32(uint32_t crc, const uint8_t *buf, size_t len) * Calculate a CRC32 from the first part of the given file. * "first part" being the first (CRC32_BUFFER_SIZE * CRC32_MAX_MB) * bytes. - * TODO: maybe make these numbers configurable? * * Returns: the crc32, or 0 if there was an error. */ From ab1242f368c1da053edacb68beaeb1c34dbc8136 Mon Sep 17 00:00:00 2001 From: Stuart Carnie Date: Thu, 18 Oct 2018 19:03:10 -0700 Subject: [PATCH 082/304] fix(cocoa): Move sendEvent implementation to RAWindow Introduced independent Info_Metal.plist and MainMenu_Metal.xib files, to avoid breaking earlier builds. --- pkg/apple/BaseConfig.xcconfig | 1 + pkg/apple/OSX/Info_Metal.plist | 49 +++ pkg/apple/OSX/en.lproj/MainMenu_Metal.xib | 342 ++++++++++++++++++ .../RetroArch_Metal.xcodeproj/project.pbxproj | 26 +- ui/drivers/ui_cocoa.m | 15 +- 5 files changed, 406 insertions(+), 27 deletions(-) create mode 100644 pkg/apple/OSX/Info_Metal.plist create mode 100644 pkg/apple/OSX/en.lproj/MainMenu_Metal.xib diff --git a/pkg/apple/BaseConfig.xcconfig b/pkg/apple/BaseConfig.xcconfig index d1386170a1..0ff10b6737 100644 --- a/pkg/apple/BaseConfig.xcconfig +++ b/pkg/apple/BaseConfig.xcconfig @@ -12,3 +12,4 @@ DEPS_DIR = $(SRCBASE)/deps HEADER_SEARCH_PATHS = $(inherited) $(SRCBASE) $(SRCBASE)/gfx/include $(SRCBASE)/libretro-common/include $(DEPS_DIR)/libFLAC/include $(DEPS_DIR)/7zip $(DEPS_DIR)/stb $(DEPS_DIR) $(DEPS_DIR)/SPIRV-Cross $(DEPS_DIR)/glslang $(DEPS_DIR)/glslang/glslang/glslang/Public $(DEPS_DIR)/glslang/glslang/glslang/MachineIndependent $(DEPS_DIR)/glslang/glslang/SPIRV $(DEPS_DIR)/glslang/glslang/glslang/OSDependent/Unix CLANG_CXX_LANGUAGE_STANDARD=c++11 CLANG_ENABLE_OBJC_ARC=YES +INFOPLIST_FILE = $(SRCROOT)/OSX/Info_Metal.plist diff --git a/pkg/apple/OSX/Info_Metal.plist b/pkg/apple/OSX/Info_Metal.plist new file mode 100644 index 0000000000..72c6354868 --- /dev/null +++ b/pkg/apple/OSX/Info_Metal.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + * + + CFBundleTypeName + All Files + CFBundleTypeRole + Viewer + + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + retroarch + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.7.5 + CFBundleSignature + ???? + CFBundleVersion + 1.7.5 + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHighResolutionCapable + + NSHumanReadableCopyright + Copyright © 2018 RetroArch. All rights reserved. + NSMainNibFile + MainMenu_Metal + NSPrincipalClass + NSApplication + + diff --git a/pkg/apple/OSX/en.lproj/MainMenu_Metal.xib b/pkg/apple/OSX/en.lproj/MainMenu_Metal.xib new file mode 100644 index 0000000000..934ee76845 --- /dev/null +++ b/pkg/apple/OSX/en.lproj/MainMenu_Metal.xib @@ -0,0 +1,342 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj index e4dcacd08a..471b781c50 100644 --- a/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_Metal.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 0502387C2179713000789627 /* MainMenu_Metal.xib in Resources */ = {isa = PBXBuildFile; fileRef = A9020F323D5F3C8E120D04AC /* MainMenu_Metal.xib */; }; 05269A6220ABF20500C29F1E /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05269A6120ABF20500C29F1E /* MetalKit.framework */; }; 053FC26521433F2200D98D46 /* QtWidgets.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25721433F1800D98D46 /* QtWidgets.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 053FC270214340F500D98D46 /* QtGui.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25321433F1700D98D46 /* QtGui.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -14,7 +15,6 @@ 053FC272214341E000D98D46 /* QtConcurrent.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25521433F1700D98D46 /* QtConcurrent.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 053FC275214341F000D98D46 /* QtCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 053FC25421433F1700D98D46 /* QtCore.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 05422E3E2140C8DB00F09961 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; - 05422E3F2140C8DB00F09961 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; 05422E402140C8DB00F09961 /* retroarch.icns in Resources */ = {isa = PBXBuildFile; fileRef = 84DD5EB71A89F1C7007336C1 /* retroarch.icns */; }; 05422E432140C8DB00F09961 /* griffin_glslang.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 05D7753420A5678400646447 /* griffin_glslang.cpp */; }; 05422E442140C8DB00F09961 /* menu_pipeline.metal in Sources */ = {isa = PBXBuildFile; fileRef = 05770B9820E805160013DABC /* menu_pipeline.metal */; }; @@ -40,7 +40,6 @@ 05A8E23C20A63CF50084ABDA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05A8E23B20A63CF50084ABDA /* QuartzCore.framework */; }; 05D7753520A567A400646447 /* griffin_cpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 05D7753320A5678300646447 /* griffin_cpp.cpp */; }; 05D7753720A567A700646447 /* griffin_glslang.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 05D7753420A5678400646447 /* griffin_glslang.cpp */; }; - 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; 5061C8A41AE47E510080AE14 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5061C8A31AE47E510080AE14 /* libz.dylib */; }; 509F0C9D1AA23AFC00619ECC /* griffin_objc.m in Sources */ = {isa = PBXBuildFile; fileRef = 509F0C9C1AA23AFC00619ECC /* griffin_objc.m */; }; 840222FC1A889EE2009AB261 /* griffin.c in Sources */ = {isa = PBXBuildFile; fileRef = 840222FB1A889EE2009AB261 /* griffin.c */; }; @@ -52,6 +51,7 @@ 84DD5EB51A89E737007336C1 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EB41A89E737007336C1 /* IOKit.framework */; }; 84DD5EB81A89F1C7007336C1 /* retroarch.icns in Resources */ = {isa = PBXBuildFile; fileRef = 84DD5EB71A89F1C7007336C1 /* retroarch.icns */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + A90209ED44A1161587F10CA4 /* MainMenu_Metal.xib in Resources */ = {isa = PBXBuildFile; fileRef = A9020F323D5F3C8E120D04AC /* MainMenu_Metal.xib */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -534,7 +534,6 @@ 05F2874020F2BEEA00632D47 /* task_http.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = task_http.c; sourceTree = ""; }; 05F2874120F2BEEA00632D47 /* task_patch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = task_patch.c; sourceTree = ""; }; 089C165DFE840E0CC02AAC07 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = OSX/en.lproj/InfoPlist.strings; sourceTree = ""; }; - 1DDD58150DA1D0A300B32029 /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainMenu.xib; path = OSX/en.lproj/MainMenu.xib; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 5061C8A31AE47E510080AE14 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 509F0C9C1AA23AFC00619ECC /* griffin_objc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = griffin_objc.m; path = ../../griffin/griffin_objc.m; sourceTree = ""; }; @@ -547,9 +546,10 @@ 84DD5EB21A89E6C0007336C1 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; }; 84DD5EB41A89E737007336C1 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = ../../../../../../System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; 84DD5EB71A89F1C7007336C1 /* retroarch.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = retroarch.icns; path = ../../media/retroarch.icns; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = OSX/Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* RetroArch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RetroArch.app; sourceTree = BUILT_PRODUCTS_DIR; }; A902040DE66D42F9EE47BFE3 /* MenuDisplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuDisplay.h; sourceTree = ""; }; + A90205FD4D5979BD8B7E4DD6 /* Info_Metal.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.info; name = Info_Metal.plist; path = OSX/Info_Metal.plist; sourceTree = ""; }; + A902065A41AEBECE594908C7 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = OSX/en.lproj/MainMenu_Metal.xib; sourceTree = ""; }; A902070F2C43F222FD56A95A /* MenuDisplay.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuDisplay.m; sourceTree = ""; }; A90207489289602F593626D5 /* QTConfig.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = QTConfig.xcconfig; sourceTree = ""; }; /* End PBXFileReference section */ @@ -1445,9 +1445,9 @@ isa = PBXGroup; children = ( 84DD5EB71A89F1C7007336C1 /* retroarch.icns */, - 8D1107310486CEB800E47090 /* Info.plist */, + A90205FD4D5979BD8B7E4DD6 /* Info_Metal.plist */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, - 1DDD58140DA1D0A300B32029 /* MainMenu.xib */, + A9020F323D5F3C8E120D04AC /* MainMenu_Metal.xib */, ); name = Resources; sourceTree = ""; @@ -1564,8 +1564,8 @@ buildActionMask = 2147483647; files = ( 05422E3E2140C8DB00F09961 /* InfoPlist.strings in Resources */, - 05422E3F2140C8DB00F09961 /* MainMenu.xib in Resources */, 05422E402140C8DB00F09961 /* retroarch.icns in Resources */, + 0502387C2179713000789627 /* MainMenu_Metal.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1574,8 +1574,8 @@ buildActionMask = 2147483647; files = ( 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, - 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */, 84DD5EB81A89F1C7007336C1 /* retroarch.icns in Resources */, + A90209ED44A1161587F10CA4 /* MainMenu_Metal.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1649,12 +1649,12 @@ name = InfoPlist.strings; sourceTree = ""; }; - 1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = { + A9020F323D5F3C8E120D04AC /* MainMenu_Metal.xib */ = { isa = PBXVariantGroup; children = ( - 1DDD58150DA1D0A300B32029 /* MainMenu.xib */, + A902065A41AEBECE594908C7 /* en */, ); - name = MainMenu.xib; + name = MainMenu_Metal.xib; sourceTree = ""; }; /* End PBXVariantGroup section */ @@ -1671,7 +1671,6 @@ GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; - INFOPLIST_FILE = "$(SRCROOT)/OSX/Info.plist"; INSTALL_PATH = "@rpath"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1693,7 +1692,6 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; - INFOPLIST_FILE = "$(SRCROOT)/OSX/Info.plist"; INSTALL_PATH = "@rpath"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1716,7 +1714,6 @@ GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; - INFOPLIST_FILE = "$(SRCROOT)/OSX/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = YES; @@ -1734,7 +1731,6 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; - INFOPLIST_FILE = "$(SRCROOT)/OSX/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = YES; PRODUCT_BUNDLE_IDENTIFIER = "libretro.${PRODUCT_NAME:rfc1034identifier}"; diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index b248d5ae9e..2f52f5d06c 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -89,10 +89,10 @@ static void app_terminate(void) [[NSApplication sharedApplication] terminate:nil]; } -@interface RApplication : NSApplication +@interface RAWindow : NSWindow @end -@implementation RApplication +@implementation RAWindow #if MAC_OS_X_VERSION_MAX_ALLOWED < 101200 #define NSEventTypeKeyDown NSKeyDown @@ -119,18 +119,9 @@ static void app_terminate(void) #define NSEventModifierFlagNumericPad NSNumericPadKeyMask #endif -- (void)sendEvent:(NSEvent *)event -{ +- (void)sendEvent:(NSEvent *)event { [super sendEvent:event]; - RetroArch_OSX *delegate = (RetroArch_OSX *)self.delegate; - if (event.window != delegate.window) { - // TODO(sgc): this is just a hack for the 1.7.5 release to - // ignore RA processing events that are not for the RA window. - // Ideally, we'de delegate `sendEvent` to the window listener - return; - } - cocoa_input_data_t *apple = NULL; NSEventType event_type = event.type; From c55e65c895c71c4474130d13d6c7a4e727f3ac33 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 19 Oct 2018 07:41:41 +0200 Subject: [PATCH 083/304] Change this to vita2d --- configuration.c | 2 +- menu/drivers_display/menu_display_vita2d.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configuration.c b/configuration.c index b24f242133..676738e2f1 100644 --- a/configuration.c +++ b/configuration.c @@ -2376,7 +2376,7 @@ static bool check_menu_driver_compatibility(void) string_is_equal(video_driver, "gx2") || string_is_equal(video_driver, "vulkan") || string_is_equal(video_driver, "metal") || - string_is_equal(video_driver, "vita")) + string_is_equal(video_driver, "vita2d")) return true; return false; diff --git a/menu/drivers_display/menu_display_vita2d.c b/menu/drivers_display/menu_display_vita2d.c index e0edb878c1..d97b3f2437 100644 --- a/menu/drivers_display/menu_display_vita2d.c +++ b/menu/drivers_display/menu_display_vita2d.c @@ -247,7 +247,7 @@ menu_display_ctx_driver_t menu_display_ctx_vita2d = { menu_display_vita2d_get_default_tex_coords, menu_display_vita2d_font_init_first, MENU_VIDEO_DRIVER_VITA2D, - "menu_display_vita2d", + "vita2d", true, NULL, NULL From a1bc9805ced44b9751faa8a776b5c308b6a028b6 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 19 Oct 2018 07:44:24 +0200 Subject: [PATCH 084/304] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 01287f3df7..b284e65319 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,7 @@ - SWITCH/LIBNX: Improve touch scaling calculation. - SWITCH: Proper button labels. - VULKAN: Fix RGUI crashing at startup. +- VULKANL Fix secondary screens in overlays not working. - WINDOWS/WSA: Network Information info is blank until first network operation. - WIIU: Initial netplay peer-to-peer support. Network information working. From 222e5faab8498a505ff2ccbd807b2a363f36d94f Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 19 Oct 2018 07:44:35 +0200 Subject: [PATCH 085/304] Update CHANGES.md --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index b284e65319..4552019215 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,7 +10,7 @@ - SWITCH/LIBNX: Improve touch scaling calculation. - SWITCH: Proper button labels. - VULKAN: Fix RGUI crashing at startup. -- VULKANL Fix secondary screens in overlays not working. +- VULKAN: Fix secondary screens in overlays not working. - WINDOWS/WSA: Network Information info is blank until first network operation. - WIIU: Initial netplay peer-to-peer support. Network information working. From 882a25326c6f24fc391854bdf4d42ac9a3bb02dd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 20 Oct 2018 03:04:53 +0200 Subject: [PATCH 086/304] Add ctr to the list too --- configuration.c | 1 + 1 file changed, 1 insertion(+) diff --git a/configuration.c b/configuration.c index 676738e2f1..ceac27d6c2 100644 --- a/configuration.c +++ b/configuration.c @@ -2376,6 +2376,7 @@ static bool check_menu_driver_compatibility(void) string_is_equal(video_driver, "gx2") || string_is_equal(video_driver, "vulkan") || string_is_equal(video_driver, "metal") || + string_is_equal(video_driver, "ctr") || string_is_equal(video_driver, "vita2d")) return true; From 82c3103f82c4cb204294aa58ad6694fd5133184d Mon Sep 17 00:00:00 2001 From: Alfrix Date: Sat, 20 Oct 2018 09:50:06 -0300 Subject: [PATCH 087/304] Fix Wunused complains --- menu/menu_setting.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 5ac6ca9464..6bfe680545 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -632,6 +632,7 @@ static void setting_get_string_representation_uint_xmb_layout( } } +#ifdef HAVE_MATERIALUI static void setting_get_string_representation_uint_materialui_menu_color_theme( rarch_setting_t *setting, char *s, size_t len) @@ -680,6 +681,7 @@ static void setting_get_string_representation_uint_materialui_menu_color_theme( break; } } +#endif static void setting_get_string_representation_uint_xmb_menu_color_theme( rarch_setting_t *setting, @@ -765,6 +767,7 @@ static void setting_get_string_representation_uint_xmb_menu_color_theme( } } +#ifdef HAVE_SHADERPIPELINE static void setting_get_string_representation_uint_xmb_shader_pipeline( rarch_setting_t *setting, char *s, size_t len) @@ -809,6 +812,7 @@ static void setting_get_string_representation_uint_xmb_shader_pipeline( break; } } +#endif static void setting_get_string_representation_uint_video_monitor_index(rarch_setting_t *setting, char *s, size_t len) From 365fb4b4eb581c0b060f2a9ab5a6294fcc3098f9 Mon Sep 17 00:00:00 2001 From: DEX357 Date: Sat, 20 Oct 2018 20:36:59 +0200 Subject: [PATCH 088/304] Update msg_hash_pl.h --- intl/msg_hash_pl.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 26ed0fd143..6d529b1503 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -3705,11 +3705,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_RECORD_QUALITY, - "Record Quality" + "Jakość rekordu" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_STREAM_QUALITY, - "Stream Quality" + "Jakość strumienia" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_STREAMING_URL, @@ -3717,7 +3717,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_UDP_STREAM_PORT, - "UDP Stream Port" + "Port Strumienia UDP" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ACCOUNTS_TWITCH, @@ -3728,22 +3728,22 @@ MSG_HASH( "YouTube" ) MSG_HASH(MENU_ENUM_LABEL_VALUE_TWITCH_STREAM_KEY, - "Twitch Stream Key") + "Klucz strumienia Twitch") MSG_HASH(MENU_ENUM_LABEL_VALUE_YOUTUBE_STREAM_KEY, - "YouTube Stream Key") + "Klucz strumienia YouTube") MSG_HASH(MENU_ENUM_LABEL_VALUE_STREAMING_MODE, - "Streaming Mode") + "Tryb przesyłania strumieniowego") MSG_HASH(MENU_ENUM_LABEL_VALUE_STREAMING_TITLE, - "Title of Stream") + "Tytuł strumienia") MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_SPLIT_JOYCON, - "Split Joy-Con" + "Podziel Joy-Con" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG, - "Reset To Defaults" + "Przywróć domyślne" ) MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, - "Reset the current configuration to default values." + "Zresetuj bieżącą konfigurację do wartości domyślnych." ) From 726de8e447d9a688751b8e8373c7a91078e824a8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 21 Oct 2018 05:40:50 +0200 Subject: [PATCH 089/304] Apply diff to fix #6382 --- audio/audio_driver.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/audio/audio_driver.c b/audio/audio_driver.c index d0cc9d6497..cae227e790 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -796,6 +796,9 @@ size_t audio_driver_sample_batch(const int16_t *data, size_t frames) **/ void audio_driver_sample_rewind(int16_t left, int16_t right) { + if (audio_driver_rewind_ptr == 0) + return; + audio_driver_rewind_buf[--audio_driver_rewind_ptr] = right; audio_driver_rewind_buf[--audio_driver_rewind_ptr] = left; } @@ -819,7 +822,10 @@ size_t audio_driver_sample_batch_rewind(const int16_t *data, size_t frames) size_t samples = frames << 1; for (i = 0; i < samples; i++) - audio_driver_rewind_buf[--audio_driver_rewind_ptr] = data[i]; + { + if (audio_driver_rewind_ptr > 0) + audio_driver_rewind_buf[--audio_driver_rewind_ptr] = data[i]; + } return frames; } @@ -905,11 +911,13 @@ void audio_driver_setup_rewind(void) for (i = 0; i < audio_driver_data_ptr; i += 2) { - audio_driver_rewind_buf[--audio_driver_rewind_ptr] = - audio_driver_output_samples_conv_buf[i + 1]; + if (audio_driver_rewind_ptr > 0) + audio_driver_rewind_buf[--audio_driver_rewind_ptr] = + audio_driver_output_samples_conv_buf[i + 1]; - audio_driver_rewind_buf[--audio_driver_rewind_ptr] = - audio_driver_output_samples_conv_buf[i + 0]; + if (audio_driver_rewind_ptr > 0) + audio_driver_rewind_buf[--audio_driver_rewind_ptr] = + audio_driver_output_samples_conv_buf[i + 0]; } audio_driver_data_ptr = 0; From e5b9ca518764b9844e4e6925f4d64370ba814b73 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 21 Oct 2018 05:43:23 +0200 Subject: [PATCH 090/304] Silence code warnings --- libretro-common/encodings/encoding_crc32.c | 43 +++++++++++----------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/libretro-common/encodings/encoding_crc32.c b/libretro-common/encodings/encoding_crc32.c index 85881e521b..9724f3eff7 100644 --- a/libretro-common/encodings/encoding_crc32.c +++ b/libretro-common/encodings/encoding_crc32.c @@ -101,39 +101,40 @@ uint32_t encoding_crc32(uint32_t crc, const uint8_t *buf, size_t len) * * Returns: the crc32, or 0 if there was an error. */ -uint32_t file_crc32(uint32_t crc, const char *path) { - if(path == NULL) - return 0; - - RFILE *file = NULL; +uint32_t file_crc32(uint32_t crc, const char *path) +{ + unsigned i; + RFILE *file = NULL; unsigned char *buf = NULL; - int i, nread; + if (!path) + return 0; file = filestream_open(path, RETRO_VFS_FILE_ACCESS_READ, 0); - if(file == NULL) + if (!file) goto error; - buf = (char *)malloc(CRC32_BUFFER_SIZE); - if(buf == NULL) - goto error; + buf = (unsigned char*)malloc(CRC32_BUFFER_SIZE); + if (!buf) + goto error; - for(i = 0; i < CRC32_MAX_MB; i++) { - nread = filestream_read(file, buf, CRC32_BUFFER_SIZE); - if(nread < 0) - goto error; + for(i = 0; i < CRC32_MAX_MB; i++) + { + int nread = filestream_read(file, buf, CRC32_BUFFER_SIZE); + if (nread < 0) + goto error; crc = encoding_crc32(crc, buf, nread); - if(filestream_eof(file)) + if (filestream_eof(file)) break; } free(buf); filestream_close(file); return crc; - error: - if(buf) - free(buf); - if(file) - filestream_close(file); - return 0; +error: + if (buf) + free(buf); + if (file) + filestream_close(file); + return 0; } From 1e6503c0d93d02e4de7943e11e95c01679a3cf3f Mon Sep 17 00:00:00 2001 From: Stuart Carnie Date: Sun, 21 Oct 2018 15:57:05 -0700 Subject: [PATCH 091/304] fix(cocoa): Use RApplication for OpenGL --- ui/drivers/ui_cocoa.m | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 2f52f5d06c..7d5330f2d6 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -88,11 +88,17 @@ static void app_terminate(void) { [[NSApplication sharedApplication] terminate:nil]; } - +#ifdef HAVE_METAL @interface RAWindow : NSWindow @end @implementation RAWindow +#else +@interface RApplication : NSApplication +@end + +@implementation RApplication +#endif #if MAC_OS_X_VERSION_MAX_ALLOWED < 101200 #define NSEventTypeKeyDown NSKeyDown From c17135df3e9dc9a5bfa37a20045fa09c4a628ca5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 23 Oct 2018 02:42:06 +0200 Subject: [PATCH 092/304] Revert "Use sceCtrlIsMultiControllerSupported to detect" This reverts commit ef10b7897dfbb56cd56735287896b08dfedd8365. --- input/drivers_joypad/psp_joypad.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/input/drivers_joypad/psp_joypad.c b/input/drivers_joypad/psp_joypad.c index 943d4a0721..309a8a0f3c 100644 --- a/input/drivers_joypad/psp_joypad.c +++ b/input/drivers_joypad/psp_joypad.c @@ -34,6 +34,7 @@ #include #include #define PSP_MAX_PADS 4 +static int psp2_model; static SceCtrlPortInfo old_ctrl_info, curr_ctrl_info; static SceCtrlActuator actuators[PSP_MAX_PADS] = {0}; @@ -63,7 +64,7 @@ extern uint64_t lifecycle_state; static const char *psp_joypad_name(unsigned pad) { #ifdef VITA - if (!sceCtrlIsMultiControllerSupported()) + if (psp2_model != SCE_KERNEL_MODEL_VITATV) return "Vita Controller"; switch (curr_ctrl_info.port[pad + 1]) @@ -88,7 +89,8 @@ static bool psp_joypad_init(void *data) (void)data; #if defined(VITA) - if (!sceCtrlIsMultiControllerSupported()) + psp2_model = sceKernelGetModelForCDialog(); + if (psp2_model != SCE_KERNEL_MODEL_VITATV) { sceTouchSetSamplingState(SCE_TOUCH_PORT_BACK, SCE_TOUCH_SAMPLING_STATE_START); sceTouchSetSamplingState(SCE_TOUCH_PORT_FRONT, SCE_TOUCH_SAMPLING_STATE_START); @@ -190,7 +192,7 @@ static void psp_joypad_poll(void) #endif #ifdef VITA - if (!sceCtrlIsMultiControllerSupported()) + if (psp2_model != SCE_KERNEL_MODEL_VITATV) players_count = 1; else { @@ -235,7 +237,7 @@ static void psp_joypad_poll(void) SceCtrlData state_tmp; unsigned i = player; #if defined(VITA) - unsigned p = (sceCtrlIsMultiControllerSupported()) ? player + 1 : player; + unsigned p = (psp2_model == SCE_KERNEL_MODEL_VITATV) ? player + 1 : player; if (curr_ctrl_info.port[p] == SCE_CTRL_TYPE_UNPAIRED) continue; #elif defined(SN_TARGET_PSP2) @@ -259,7 +261,7 @@ static void psp_joypad_poll(void) continue; #endif #if defined(VITA) - if (!sceCtrlIsMultiControllerSupported() + if (psp2_model == SCE_KERNEL_MODEL_VITA && settings->bools.input_backtouch_enable) { unsigned i; @@ -330,7 +332,7 @@ static bool psp_joypad_rumble(unsigned pad, enum retro_rumble_effect effect, uint16_t strength) { #ifdef VITA - if (!sceCtrlIsMultiControllerSupported()) + if (psp2_model != SCE_KERNEL_MODEL_VITATV) return false; switch (effect) From ccceabc5410814ef6a6ad5413ae55211d6e40b31 Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Tue, 23 Oct 2018 16:43:28 +0100 Subject: [PATCH 093/304] Added Makefile.classic_armv7_a7 --- Makefile.classic_armv7_a7 | 74 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Makefile.classic_armv7_a7 diff --git a/Makefile.classic_armv7_a7 b/Makefile.classic_armv7_a7 new file mode 100644 index 0000000000..c635df8929 --- /dev/null +++ b/Makefile.classic_armv7_a7 @@ -0,0 +1,74 @@ +# Make sure you have patchelf installed (sudo apt-get install patchelf) to patch the binary for Hakchi. +# Might not be needed for your build but it's a useful tool and for safety it should be run anyway to +# ensure the SDL2 link isn't broken... + +# Classic Readme Variables ############ + +CLASSIC_MODS_VER := CLASSIC_MODS_Retroarch_Neo_v1_7_5b +CLASSIC_MODS_NAME := CLASSIC_MODS RetroArch 'Neo' v1.7.5b +MOD_CREATOR := TheOtherGuys +MOD_CATEGORY := RetroArch +GIT_COMMIT := $(shell echo "`git rev-parse --short HEAD``git diff-index --quiet HEAD -- || echo '-dirty'`") + +# Platform dependant Variables ######## +HAKCHI_DIR := RA_Platform-Hakchi +HAKCHI_GIT := https://github.com/Classicmods/RA_Platform-Hakchi + +# General Shared Variables ############ +TARGET := retroarch +CC_V = arm-linux-gnueabihf-gcc-8 +CXX_V = arm-linux-gnueabihf-g++-8 +AS_V = arm-linux-gnueabihf-as +CC_AS_V = arm-linux-gnueabihf-gcc-8 + +all: $(TARGET) + +retroarch: + #Build the RetroArch Binary for cross platform classics (ARMv7 Cortex A7) + patchelf --version #Check if you have patchelf installed... (sudo apt-get install patchelf) + ./configure --host=arm-linux-gnueabihf --enable-mali_fbdev --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard + make CC=$(CC_V) CXX=$(CXX_V) AS=$(AS_V) CC_AS=$(CC_AS_V) LDFLAGS_SDL=-lSDL2 -j #Cook it + patchelf --replace-needed libSDL2-2.0.so.0 libSDL2.so retroarch #libSDL2-2.0.so.0 sym link doesn't exist on native build. Just patch the binary... + + #HAKCHI BUILD (NESC, SNESC) + @echo "** BUILDING CLASSIC_MODS HAKCHI - $(CLASSIC_MODS_VER) HMOD PACKAGE **" + rm -fr /tmp/$(HAKCHI_DIR) + cd /tmp/; git clone $(HAKCHI_GIT) + cp retroarch /tmp/$(HAKCHI_DIR)/bin/retroarch + echo $$(echo "Built by: " $$USER @ $$(date) \\\\\\ Git Commit: $(GIT_COMMIT)) > /tmp/$(HAKCHI_DIR)/etc/libretro/retroarch_version + cp /tmp/$(HAKCHI_DIR)/readme.md /tmp/$(HAKCHI_DIR)/readme_COPY.md + printf "%s\n" \ + "---" \ + "Name: $(CLASSIC_MODS_NAME)" \ + "Creator: $(MOD_CREATOR)" \ + "Category: $(MOD_CATEGORY)" \ + "Version: $(CLASSIC_MODS_VER)" \ + "Built on: $(shell date)" \ + "Git commit: $(GIT_COMMIT)" \ + "---" > /tmp/$(HAKCHI_DIR)/readme.md + cat /tmp/$(HAKCHI_DIR)/readme_COPY.md >> /tmp/$(HAKCHI_DIR)/readme.md + rm /tmp/$(HAKCHI_DIR)/readme_COPY.md + @echo "** BUILDING CLASSIC_MODS $(CLASSIC_MODS_VER) HMOD PACKAGE **" + cd /tmp/$(HAKCHI_DIR)/; tar -czvf "$(CLASSIC_MODS_VER).hmod" * + mv /tmp/$(HAKCHI_DIR)/$(CLASSIC_MODS_VER).hmod . + @echo "** BUILT CLASSIC_MODS $(CLASSIC_MODS_VER) HMOD PACKAGE **" +clean: + rm -rf obj-unix + rm -f *.d + rm -f *.o + rm -f audio/*.o + rm -f conf/*.o + rm -f gfx/*.o + rm -f gfx/drivers_font/*.o + rm -f gfx/drivers_font_renderer/*.o + rm -f gfx/drivers_context/*.o + rm -f gfx/py_state/*.o + rm -f compat/*.o + rm -f record/*.o + rm -f input/*.o + rm -f tools/*.o + rm -f $(BINDIR)/retroarch + rm -f $(BINDIR)/retroarch-joyconfig + rm -f $(PNDDIR)/readme.html + rm -f retroarch + rm -f $(CLASSIC_MODS_VER).hmod From 8d883bda4b5470ba9af34235f218bf4a84a8d954 Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Tue, 23 Oct 2018 16:49:11 +0100 Subject: [PATCH 094/304] Removed old hakchi platform --- Makefile.nintendoc | 62 ---- hakchi/bin/retroarch-clover | 16 - hakchi/bin/retroarch-clover-child | 322 ------------------ hakchi/bin/retroarch-mini | 13 - hakchi/etc/libretro/core/CORES_GO_HERE.md | 0 .../libretro/info/CORE_INFO_FILES_GO_HERE.md | 0 .../etc/libretro/system/BIOS_FILES_GO_HERE.md | 0 hakchi/etc/preinit.d/be9af_retroarch | 18 - hakchi/etc/preinit.d/pe9af_retroarch | 1 - hakchi/install | 55 --- hakchi/readme.md | 49 --- 11 files changed, 536 deletions(-) delete mode 100644 Makefile.nintendoc delete mode 100644 hakchi/bin/retroarch-clover delete mode 100644 hakchi/bin/retroarch-clover-child delete mode 100644 hakchi/bin/retroarch-mini delete mode 100644 hakchi/etc/libretro/core/CORES_GO_HERE.md delete mode 100644 hakchi/etc/libretro/info/CORE_INFO_FILES_GO_HERE.md delete mode 100644 hakchi/etc/libretro/system/BIOS_FILES_GO_HERE.md delete mode 100644 hakchi/etc/preinit.d/be9af_retroarch delete mode 100644 hakchi/etc/preinit.d/pe9af_retroarch delete mode 100644 hakchi/install delete mode 100644 hakchi/readme.md diff --git a/Makefile.nintendoc b/Makefile.nintendoc deleted file mode 100644 index 4f971984a4..0000000000 --- a/Makefile.nintendoc +++ /dev/null @@ -1,62 +0,0 @@ -# Hakchi version added to ease confusion amongst Hakchi community due to messy past... -# -# Make sure you have readelf installed (sudo apt-get install readelf) to patch the binary -# Might not be needed for your build but it's a useful tool and for safety it should be -# run anyway to ensure the SDL2 link isn't broken... - -HAKCHI_VER := Hakchi_Retroarch_Neo_v1_7_3b -HAKCHI_NAME := "Hakchi RetroArch 'Neo' v1.7.3b -MOD_CREATOR := TheOtherGuys -MOD_CATEGORY := RetroArch - -HAKCHI_DIR := hakchi -TARGET := retroarch -GIT_COMMIT := $(shell echo "`git rev-parse --short HEAD``git diff-index --quiet HEAD -- || echo '-dirty'`") - -all: $(TARGET) - -retroarch: - readelf -v #Check if you have readelf installed... (sudo apt-get install readelf) - ./configure --host=arm-linux-gnueabihf --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard - make -f Makefile -j HAVE_HAKCHI=1 - patchelf --replace-needed libSDL2-2.0.so.0 libSDL2.so retroarch #libSDL2-2.0.so.0 sym link doesn't exist on native build. Just patch the binary... - #/usr/bin/arm-linux-gnueabihf-strip retroarch - rm -f $(HAKCHI_DIR)/bin/retroarch - cp retroarch $(HAKCHI_DIR)/bin/retroarch - echo $$(echo "Built by: " $$USER @ $$(date) \\\\\\ Git Commit: $(GIT_COMMIT)) > $(HAKCHI_DIR)/etc/libretro/retroarch_version - cp $(HAKCHI_DIR)/readme.md $(HAKCHI_DIR)/readme_COPY.md - printf "%s\n" \ - "---" \ - "Name: $(HAKCHI_VER)" \ - "Creator: $(MOD_CREATOR)" \ - "Category: $(MOD_CATEGORY)" \ - "Version: $(HAKCHI_VER)" \ - "Built on: $(shell date)" \ - "Git commit: $(GIT_COMMIT)" \ - "---" > $(HAKCHI_DIR)/readme.md - cat $(HAKCHI_DIR)/readme_COPY.md >> $(HAKCHI_DIR)/readme.md - rm $(HAKCHI_DIR)/readme_COPY.md - @echo "** BUILDING HAKCHI $(HAKCHI_VER) HMOD PACKAGE **" - cd $(HAKCHI_DIR)/; tar -czvf "$(HAKCHI_VER).hmod" * - mv $(HAKCHI_DIR)/$(HAKCHI_VER).hmod . - @echo "** BUILT HAKCHI $(HAKCHI_VER) HMOD PACKAGE **" -clean: - rm -f *.o - rm -f audio/*.o - rm -f conf/*.o - rm -f gfx/*.o - rm -f gfx/drivers_font/*.o - rm -f gfx/drivers_font_renderer/*.o - rm -f gfx/drivers_context/*.o - rm -f gfx/py_state/*.o - rm -f compat/*.o - rm -f record/*.o - rm -f input/*.o - rm -f tools/*.o - rm -f $(BINDIR)/retroarch - rm -f $(BINDIR)/retroarch-joyconfig - rm -f $(PNDDIR)/readme.html - rm -f retroarch - rm -f $(HAKCHI_DIR)/bin/retroarch - rm -f $(HAKCHI_VER).hmod - rm -f $(HAKCHI_DIR)/etc/libretro/retroarch_version diff --git a/hakchi/bin/retroarch-clover b/hakchi/bin/retroarch-clover deleted file mode 100644 index 4143555d4c..0000000000 --- a/hakchi/bin/retroarch-clover +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -source /etc/preinit -script_init - -uistop - -core="$1" -rom="$2" -shift 2 - -if [ -f "/bin/remote-exec" ]; then - echo retroarch-clover-child "$core" "\"$rom\"" ${1+"$@"} > /var/exec.flag -else - exec retroarch-clover-child "$core" "\"$rom\"" ${1+"$@"} -fi diff --git a/hakchi/bin/retroarch-clover-child b/hakchi/bin/retroarch-clover-child deleted file mode 100644 index f078f6ccfa..0000000000 --- a/hakchi/bin/retroarch-clover-child +++ /dev/null @@ -1,322 +0,0 @@ -#!/bin/sh - -source /etc/preinit -script_init - -#### Variable Definitions ################################################## - -HOME=/etc/libretro -corename="$1" -noprefix="${corename#km_}" -core="$HOME/core/${1}_libretro.so" -rom="$2" -filename="$(basename "$rom")" -id="${filename%.*}" -extension="${filename##*.}" -newrsram=/var/saves/retroarch -autosave="/var/cache/retroarch/$id.state.auto" -t_suffix=_time.txt -debug=0 -bezel_mode=0 -clovercon_file=/dev/clovercon1 -shift 2 - -while [ $# -gt 0 ]; do - [ "$1" == "--load-state-file" ] && load="$2" - [ "$1" == "--save-on-quit" ] && save="$2" - [ "$1" == "--rollback-input-dir" ] && load="$2/savestate" - [ "$1" == "--rollback-output-dir" ] && save="$2/savestate" - [ "$1" == "--save-screenshot-on-quit" ] && screenshot="$2" - [ "$1" == "--save-data-backing-file" ] && sram="$2" - [ "$1" == "--graphic-filter" ] && filter="$2" - [ "$1" == "--enable-crt-scanlines" ] && crt=1 - [ "$1" == "--video-mode" ] && [ "$2" == "crt-filter" ] && filter=crt720 && crt=1 - [ "$1" == "--video-mode" ] && [ "$2" == "keep-aspect-ratio" ] && filter=gpu720 - [ "$1" == "--video-mode" ] && [ "$2" == "pixel-perfect" ] && filter=ppu - [ "$1" == "--smooth43" ] && smooth43=1 - [ "$1" == "--no-smooth" ] && no_smooth=1 - [ "$1" == "--no-scanlines" ] && no_scanlines=1 - [ "$1" == "--bezel-mode" ] && bezel_mode=1 - [ "$1" == "--title-code" ] && title_code="$2" - [ "$1" == "--ra-extra" ] && extra="$2" - [ "$1" == "--ra-nosaves" ] && nosaves=1 - [ "$1" == "--load-time-path" ] && timefile_load="$2" - [ "$1" == "--save-time-path" ] && timefile_save="$2" - [ "$1" == "--replay-inputs" ] && demo=1 - [ "$1" == "--decorative-frame-path" ] && frame="$2" - [ "$1" == "--debug-usb" ] && debug=1 - [ "$1" == "--debug-nand" ] && debug=2 - [ "$1" == "--custom-loadscreen" ] && custom_loadscreen="$2" - shift -done - -#### Visuals ############################################################### - -#Retrospective fix for hakchi port splashes -if ! echo $corename | grep "prboom\|tyrquake\|cannonball"; then - umount "$rootfs/share/retroarch/assets/RAloading-min.png" -fi - -# Display Splash Screen -if [ ! -z "$custom_loadscreen" ]; then - decodepng "$rootfs/share/retroarch/assets/$custom_loadscreen" > /dev/fb0; -else - if [ -f "$mountpoint/media/hakchi/RA_loading_screens/$noprefix.png" ] && [ -f "$rootfs/share/retroarch/assets/RAloading-min.png" ]; then - decodepng "$mountpoint/media/hakchi/RA_loading_screens/$noprefix.png" > /dev/fb0; - else - if [ -f "$rootfs/share/retroarch/assets/core_loading_screens/$noprefix.png" ] && [ -f "$rootfs/share/retroarch/assets/RAloading-min.png" ]; then - decodepng "$rootfs/share/retroarch/assets/core_loading_screens/$noprefix.png" > /dev/fb0; - else - decodepng "$rootfs/share/retroarch/assets/RAloading-min.png" > /dev/fb0; - fi - fi -fi - -#### Network Mounting ###################################################### - -if [ -f "/media/hakchi/retroarch-mounted.cfg" ]; then - mv -f /media/hakchi/retroarch-mounted.cfg /etc/libretro/ -fi - -source /etc/libretro/retroarch-mounted.cfg -if [ "$ra_mount_enable" == "true" ] && [ ! -z "${ra_mount_address// }" ] && [ ! -d /var/mount ]; then - mkdir -p /var/mount - if [ ! -z "${ra_mount_user// }" ] && [ ! -z "${ra_mount_pass// }" ]; then - mount -t cifs -o user=$ra_mount_user,pass=$ra_mount_pass $ra_mount_address /var/mount - elif [ ! -z "${ra_mount_user// }" ] && [ -z "${ra_mount_pass// }" ]; then - mount -t cifs -o user=$ra_mount_user $ra_mount_address /var/mount - else - mount -t cifs $ra_mount_address /var/mount - fi -fi - -#### Saves and Configs ##################################################### - -[ ! -z "$demo" ] && load="$(dirname "$load")/savestate" - -# Create cache and /var/saves/retroarch directories -mkdir -p /var/cache/retroarch -mkdir -p "$newrsram" - -# Create a "cartridge.sram" file of 21B to avoid hakchi2 save-state manager from removing the folder -# Just in case we're going the "/var/saves/CLV-Z-RETROARCH" way -# if [ -f "/var/saves/CLV-Z-RETROARCH/cartridge.sram" ]; then - # [ "$(wc -c "/proc/sys/vm/overcommit_memory" - -[ -z "$timefile_save" ] && timefile_save="$load$t_suffix" -[ -z "$timefile_load" ] && timefile_load="$load$t_suffix" - -# Hold L button while starting a game to toggle bezel-mode for this game -if [ -e "$clovercon_file" ] && [ "$(cat $clovercon_file)" == "0004" ]; then - if [ "$bezel_mode" == "0" ]; then - sed -i "s/^Exec.*/& --bezel-mode/" "$gamepath/$title_code/$title_code.desktop" && bezel_mode=1 - else - sed -i "s/ --bezel-mode//g" "$gamepath/$title_code/$title_code.desktop" && bezel_mode=0 - fi -fi -# Hold R button while starting a game to toggle bezel-mode for this core -if [ -e "$clovercon_file" ] && [ "$(cat $clovercon_file)" == "0008" ]; then - [ ! -f "$HOME/bezel-core" ] && touch "$HOME/bezel-core" - if grep "^$corename$" "$HOME/bezel-core"; then - sed -i "/^$corename$/d" "$HOME/bezel-core" - else - echo "$corename" >> "$HOME/bezel-core" - fi -fi -[ -f "$HOME/bezel-core" ] && grep "^$corename$" "$HOME/bezel-core" && bezel_mode=1 - -# Smooth, border and scanlines -if [ "$bezel_mode" == "1" ]; then - [ "$filter" == "crt720" ] && overlay1=scanlines.png && overlay2="$frame.png" -else - [ "$filter" == "crt720" ] && overlay1=scanlines.png -fi -[ "$filter" == "crt720" ] && [ ! -z "$no_scanlines" ] || [ ! "$filter" == "crt720" ] && overlay1="$frame.png" -retroarch_watchdog --configEdit /etc/libretro/.config/retroarch/overlay/default.cfg overlay0_overlay "$overlay1" overlay0_desc0_overlay "$overlay2" -retroarch_watchdog --configEdit /etc/libretro/.config/retroarch/overlay/default_scanlines.cfg overlay0_desc0_overlay "$frame.png" - -ra_config_args="" -# Functions to make the rest easier -smooth(){ ra_config_args="$ra_config_args video_smooth $1"; } -overlay(){ ra_config_args="$ra_config_args input_overlay_enable $1"; } -overlay_file(){ ra_config_args="$ra_config_args input_overlay ~/.config/retroarch/overlay/$1"; } -int_scale(){ ra_config_args="$ra_config_args video_scale_integer $1"; } -ratio(){ ra_config_args="$ra_config_args aspect_ratio_index $1"; } -width(){ ra_config_args="$ra_config_args custom_viewport_width $1"; } -height(){ ra_config_args="$ra_config_args custom_viewport_height $1"; } -posx(){ ra_config_args="$ra_config_args custom_viewport_x $1"; } -posy(){ ra_config_args="$ra_config_args custom_viewport_y $1"; } - -# Smooth and bezel-mode -if [ "$bezel_mode" == "1" ]; then - [ "$filter" == "crt720" ] && width 877 && posx 201 - [ "$filter" == "gpu720" ] && smooth false && width 877 && posx 201 - [ "$filter" == "ppu" ] && smooth false && width 768 && posx 256 - ratio 22 && overlay true && overlay_file default.cfg && height 672 && posy 24 && int_scale true -fi -[ "$filter" == "crt720" ] && overlay true -[ "$filter" == "crt720" ] && [ -z "$no_smooth" ] && smooth true -[ "$filter" == "crt720" ] && [ ! -z "$no_smooth" ] && smooth false -[ "$filter" == "gpu720" ] && [ ! -z "$smooth43" ] && smooth true - -# Set config for standalone launch mode -if [ -z "${corename// }" ]; then - ra_config_args="$ra_config_args savefile_directory /var/saves/CLV-Z-RETROARCH" - ra_config_args="$ra_config_args savestate_directory /var/saves/CLV-Z-RASAVESTATES" - ra_config_args="$ra_config_args savestate_auto_save false" - ra_config_args="$ra_config_args savestate_auto_load false" - ra_config_args="$ra_config_args autosave_interval 0" -fi - -[ ! -z "$ra_config_args" ] && retroarch_watchdog --configEdit /etc/libretro/retroarch.cfg $ra_config_args - -#### Runtime ############################################################### - -if [ -f "/media/hakchi/RA_DEV_MODE" ]; then #Devmode Active (Record current session) - if [ -z "${corename// }" ]; then - rm -f /media/Development_RetroArch.log - echo "Pre RA load Core Temp: $(more /sys/devices/virtual/thermal/thermal_zone0/temp)" >> /media/Development_RA_temp.log - retroarch -c "$HOME/retroarch.cfg" -vf > /media/Development_RetroArch.log 2>&1 & - else - rm -f /media/Development_RetroArch.log - echo "Pre RA load Core Temp: $(more /sys/devices/virtual/thermal/thermal_zone0/temp)" >> /media/Development_RA_temp.log - retroarch -c "$HOME/retroarch.cfg" -vfL "$core" "$rom" "$extra" > /media/Development_RetroArch.log 2>&1 & - fi -else - if [ -z "${corename// }" ]; then - retroarch -c "$HOME/retroarch.cfg" -vf & - fi - if [ "$debug" == "0" ]; then #Default - retroarch -c "$HOME/retroarch.cfg" -vfL "$core" "$rom" "$extra" & - fi - if [ "$debug" == "1" ]; then #Verbose USB mode - retroarch -c "$HOME/retroarch.cfg" -vfL "$core" "$rom" "$extra" > "/media/${filename}_RetroArch.log" 2>&1 & - fi - if [ "$debug" == "2" ]; then #Verbose NAND mode - retroarch -c "$HOME/retroarch.cfg" -vfL "$core" "$rom" "$extra" > "/tmp/${filename}_RetroArch.log" 2>&1 & - fi -fi - -#### Watchdog ############################################################## - -# Set Watchdog Arguments -watchdog_args="$!" -# Demo mode enabled -[ ! -z "$demo" ] && watchdog_args="$watchdog_args --demo" -# Set Screenshot Args -[ ! -z "$screenshot" ] && [ -z "$nosaves" ] && watchdog_args="$watchdog_args --screenshot $screenshot" -# Load Time Played -[ -f "$timefile_load" ] && watchdog_args="$watchdog_args --time $(cat "$timefile_load")" -[ -z "$demo" ] && watchdog_args="$watchdog_args --timePath $timefile_save" - -# Create output folders -[ ! -z "$save" ] && mkdir -p "$(dirname "$save")" -[ ! -z "$sram" ] && mkdir -p "$(dirname "$sram")" -[ ! -z "$screenshot" ] && mkdir -p "$(dirname "$screenshot")" - -# Run retroarch watchdog -retroarch_watchdog $watchdog_args - -#### Cleanup ############################################################### - -# Saves! -[ ! -z "$save" ] && [ -f "$autosave" ] && [ -z "$nosaves" ] && gzip -f "$autosave" && mv -f "$autosave.gz" "$save" - -# Restore Retroarch Config -retroarch_watchdog --configRestore /etc/libretro/retroarch.cfg - -# Copy savestates to USB if any and delete cache folder -if [ -d "/media/hakchi" ] && ls "/var/cache/retroarch/$id".*[^auto]; then - [ ! -d "/media/data/ra_savestates/$title_code" ] && mkdir -p "/media/data/ra_savestates/$title_code" - cp "/var/cache/retroarch/$id".*[^auto] "/media/data/ra_savestates/$title_code" -fi -rm -rf /var/cache/retroarch/ - -#Remove network drive mount if Hakchi Mount mod is enabled -if [ ! -f "$rootfs/etc/hakchi_mount_mod" ]; then - umount "/var/mount" && rm -rf "/var/mount" -fi - -if [ -f "/media/hakchi/RA_DEV_MODE" ]; then #Devmode Active (Record current session) - echo "Post RA load Core Temp: $(more /sys/devices/virtual/thermal/thermal_zone0/temp)" >> /media/Development_RA_temp.log -fi - -# Back to the shell -uistart diff --git a/hakchi/bin/retroarch-mini b/hakchi/bin/retroarch-mini deleted file mode 100644 index a00ab31434..0000000000 --- a/hakchi/bin/retroarch-mini +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -source /etc/preinit -script_init - -uistop - -exec retroarch-clover-child -if [ -f "/bin/remote-exec" ]; then - echo retroarch-clover-child > /var/exec.flag -else - exec retroarch-clover-child -fi diff --git a/hakchi/etc/libretro/core/CORES_GO_HERE.md b/hakchi/etc/libretro/core/CORES_GO_HERE.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/hakchi/etc/libretro/info/CORE_INFO_FILES_GO_HERE.md b/hakchi/etc/libretro/info/CORE_INFO_FILES_GO_HERE.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/hakchi/etc/libretro/system/BIOS_FILES_GO_HERE.md b/hakchi/etc/libretro/system/BIOS_FILES_GO_HERE.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/hakchi/etc/preinit.d/be9af_retroarch b/hakchi/etc/preinit.d/be9af_retroarch deleted file mode 100644 index 871d348329..0000000000 --- a/hakchi/etc/preinit.d/be9af_retroarch +++ /dev/null @@ -1,18 +0,0 @@ -Hakchi_Libretro_Initialise(){ - if [ -z "$(mount | grep "/etc/libretro ")" ] && [ -d "$mountpoint/media/$modname" ] && [ "$cfg_usb_rw" == "y" ]; then - local externalPath="$mountpoint/media/data/ra_data" - local localPath="$rootfs/etc/libretro/.config/retroarch" - for ra_folders in database thumbnails playlists downloads; do - if [ ! -d "$externalPath/$ra_folders" ]; then - mkdir -p "$externalPath/$ra_folders" - copy "$localPath/$ra_folders" "$externalPath" - rm -rf "$localPath/$ra_folders/"* - fi - mount_bind "$externalPath/$ra_folders" "$localPath/$ra_folders" - overmount "${localPath#$rootfs}/$ra_folders" - done - unset ra_folders - fi - [ -f "$mountpoint/usr/bin/clover-kachikachi" ] && overmount /usr/bin/clover-kachikachi - [ -f "$mountpoint/usr/bin/clover-canoe-shvc" ] && overmount /usr/bin/clover-canoe-shvc -} diff --git a/hakchi/etc/preinit.d/pe9af_retroarch b/hakchi/etc/preinit.d/pe9af_retroarch deleted file mode 100644 index a05a2a8094..0000000000 --- a/hakchi/etc/preinit.d/pe9af_retroarch +++ /dev/null @@ -1 +0,0 @@ -Hakchi_Libretro_Initialise diff --git a/hakchi/install b/hakchi/install deleted file mode 100644 index a36083ccf8..0000000000 --- a/hakchi/install +++ /dev/null @@ -1,55 +0,0 @@ -echo "Grabbing old config variables..." -cheevos_username=$(grep -i "cheevos_username*" $rootfs/etc/libretro/retroarch.cfg) -cheevos_password=$(grep -i "cheevos_password*" $rootfs/etc/libretro/retroarch.cfg) -cheevos_token=$(grep -i "cheevos_token*" $rootfs/etc/libretro/retroarch.cfg) -netplay_nickname=$(grep -i "netplay_nickname*" $rootfs/etc/libretro/retroarch.cfg) -netplay_mitm_server=$(grep -i "netplay_mitm_server*" $rootfs/etc/libretro/retroarch.cfg) -netplay_ip_port=$(grep -i "netplay_ip_port*" $rootfs/etc/libretro/retroarch.cfg) -netplay_ip_address=$(grep -i "netplay_ip_address*" $rootfs/etc/libretro/retroarch.cfg) -netplay_password=$(grep -i "netplay_password*" $rootfs/etc/libretro/retroarch.cfg) -netplay_spectate_password=$(grep -i "netplay_spectate_password*" $rootfs/etc/libretro/retroarch.cfg) - -echo "Uninstalling old version of Hakchi RetroArch neo..." -var=$(hakchi pack_list | grep "Hakchi_Retroarch_Neo_") && hakchi pack_uninstall $var -echo "Uninstalled $var, Installing new version now..." - -transfer_default -chmod +x $rootfs/bin/* -chmod +x $rootfs/usr/bin/* -mkdir -p $rootfs/etc/libretro/system -[ -f "/newroot/usr/share/kachikachi/fds_bios.bin" ] && cp -f /newroot/usr/share/kachikachi/fds_bios.bin $rootfs/etc/libretro/system/disksys.rom -mkdir -p $rootfs/etc/options_menu/retroarch/default_files -copy $rootfs/etc/libretro/retroarch.cfg $rootfs/etc/options_menu/retroarch/default_files/ -copy $rootfs/etc/libretro/retroarch-core-options.cfg $rootfs/etc/options_menu/retroarch/default_files/ -loadscr_path=$rootfs/share/retroarch/assets/core_loading_screens -for arcade_loadscr in "$loadscr_path/fbalpha2012.png" "$loadscr_path/fbalpha2012_cps1.png" "$loadscr_path/fbalpha2012_cps2.png" "$loadscr_path/fbalpha2012_cps3.png" "$loadscr_path/fbalpha2012_neogeo.png" "$loadscr_path/fb_alpha.png" "$loadscr_path/mame2003.png" "$loadscr_path/mame2003_xtreme.png" "$loadscr_path/mame2010.png" "$loadscr_path/mame2014.png"; do - if [ ! -e "$arcade_loadscr" ]; then - ln -s "${loadscr_path#/newroot}/mame2000.png" "$arcade_loadscr" - fi -done -for snes_loadscr in "$loadscr_path/snes9x2002.png" "$loadscr_path/snes9x2005.png" "$loadscr_path/snes9x2010.png"; do - if [ ! -e "$snes_loadscr" ]; then - ln -s "${loadscr_path#/newroot}/snes9x.png" "$snes_loadscr" - fi -done -[ ! -e "$loadscr_path/fceumm.png" ] && ln -s ${loadscr_path#/newroot}/nestopia.png $loadscr_path/fceumm.png -[ ! -e "$loadscr_path/mupen64plus.png" ] && ln -s ${loadscr_path#/newroot}/glupen64.png $loadscr_path/mupen64plus.png -[ ! -e "$loadscr_path/genesis_plus_gx.png" ] && ln -s ${loadscr_path#/newroot}/picodrive.png $loadscr_path/genesis_plus_gx.png - - -echo "Reloading built in config..." -sed -i -e 's/cheevos_username = "[^"]*"/cheevos_username = "'$cheevos_username'"/g' $rootfs/etc/libretro/retroarch.cfg -sed -i -e 's/cheevos_password = "[^"]*"/cheevos_password = "'$cheevos_password'"/g' $rootfs/etc/libretro/retroarch.cfg -sed -i -e 's/cheevos_token = "[^"]*"/cheevos_token = "'$cheevos_token'"/g' $rootfs/etc/libretro/retroarch.cfg -sed -i -e 's/netplay_mitm_server = "[^"]*"/netplay_mitm_server = "'$netplay_mitm_server'"/g' $rootfs/etc/libretro/retroarch.cfg -sed -i -e 's/netplay_ip_port = "[^"]*"/netplay_ip_port = "'$netplay_ip_port'"/g' $rootfs/etc/libretro/retroarch.cfg -sed -i -e 's/netplay_ip_address = "[^"]*"/netplay_ip_address = "'$netplay_ip_address'"/g' $rootfs/etc/libretro/retroarch.cfg -sed -i -e 's/netplay_spectate_password = "[^"]*"/netplay_spectate_password = "'$netplay_spectate_password'"/g' $rootfs/etc/libretro/retroarch.cfg - -if [ "$cheevos_username" == "hakchiresources" ]; then - sed -i -e 's/cheevos_enable = "[^"]*"/cheevos_enable = "false"/g' $rootfs/etc/libretro/retroarch.cfg -fi - - -echo "Install complete!" -return 1 diff --git a/hakchi/readme.md b/hakchi/readme.md deleted file mode 100644 index 180962dd62..0000000000 --- a/hakchi/readme.md +++ /dev/null @@ -1,49 +0,0 @@ - -## New Release Overview video - -## Changelog - -### 1.7.3b - July 2018 - -**Please note: NES cores are no longer bundled with RA. You will need to download them seperately** - -**Please note: Standalone RetroArch Saves will be located in your saves under CLV-RETROARCH** - -- Huge amount of optimisation and streamlining reduced deployed package size by over half! (Complete RA now only ~5mb compared to ~12mb) -- RA Saves and savestates fully functional and working for all cores (that support them!) -- Launching RetroArch standalone now fully functional and working. Saves also supported. -- Switching roms within RetroArch standalone now supports saving. -- Stability fixes for intensive cores (N64, PSX) reducing the risk of C8 crashing. -- Added ability to now download and update cores directly from the RA menu via HakchiCloud! -- Added network storage support. You can now play entire rom sets and media directly from your networked drives! -- Playlist support now implemented. Add thousands of roms to your RetroArch GUI with boxart and thumbnails and launch the roms directly from the GUI (No GUI limit!) -- New layout look -- Saving mechanism reworked, better functionality and Hakchi Save Manager support. -- Loading and shutting down of RetroArch times reduced via optimisation. -- Fixed occasional C8 errors when launching RetroArch directly -- Holding R now enables bezel mode per core instead of individual games -- Numerous bug fixes - -### 1.7.3a - May 2018 - -- Built with preconfigured network and achievement support. (As soon as network connection is available, network and achievements are enabled.) -- New RetroArch binary 1.7.3 (completely overhauled audio mixer) -- Few RA bug fixes -- Default GUI is now changed to XMB with the purpose of using network and achievements. -- A few mapping issues Fixed for keyboard to gamepad -- Saves mame config properly (dip switches, etc.) -- Optimizations to avoid to many writes on NAND -- Boot sequence optimised -- Doom and Quake splash screen bug fixed. - -RetroArch and Retroarch Cores by libretro - -Hakchi RetroArch Neo main development by Swingflip, Bslenul and CompCom - -Hakchi by MadMonkey - -Special thanks to Team Hakchi Resources, Team Shinkansen and MadMonkey - -https://hakchiresources.com - -(c) 2016-2018 From 93ac62012d0dec0a3ad60e5425a895799f90ded9 Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Tue, 23 Oct 2018 16:55:23 +0100 Subject: [PATCH 095/304] Cleaned up ARMV7A7 --- Makefile.classic_armv7_a7 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile.classic_armv7_a7 b/Makefile.classic_armv7_a7 index c635df8929..0413cdb45b 100644 --- a/Makefile.classic_armv7_a7 +++ b/Makefile.classic_armv7_a7 @@ -4,9 +4,9 @@ # Classic Readme Variables ############ -CLASSIC_MODS_VER := CLASSIC_MODS_Retroarch_Neo_v1_7_5b -CLASSIC_MODS_NAME := CLASSIC_MODS RetroArch 'Neo' v1.7.5b -MOD_CREATOR := TheOtherGuys +CLASSIC_MODS_VER := Official_Retroarch_v1_7_5b_CMO +CLASSIC_MODS_NAME := RetroArch v1.7.5b (Official CM Optimised) +MOD_CREATOR := Libretro + ClassicMods MOD_CATEGORY := RetroArch GIT_COMMIT := $(shell echo "`git rev-parse --short HEAD``git diff-index --quiet HEAD -- || echo '-dirty'`") @@ -48,10 +48,10 @@ retroarch: "---" > /tmp/$(HAKCHI_DIR)/readme.md cat /tmp/$(HAKCHI_DIR)/readme_COPY.md >> /tmp/$(HAKCHI_DIR)/readme.md rm /tmp/$(HAKCHI_DIR)/readme_COPY.md - @echo "** BUILDING CLASSIC_MODS $(CLASSIC_MODS_VER) HMOD PACKAGE **" + @echo "** COMPRESSING $(CLASSIC_MODS_VER) HMOD PACKAGE **" cd /tmp/$(HAKCHI_DIR)/; tar -czvf "$(CLASSIC_MODS_VER).hmod" * mv /tmp/$(HAKCHI_DIR)/$(CLASSIC_MODS_VER).hmod . - @echo "** BUILT CLASSIC_MODS $(CLASSIC_MODS_VER) HMOD PACKAGE **" + @echo "** BUILT CLASSIC_MODS HAKCHI - $(CLASSIC_MODS_VER) HMOD PACKAGE **" clean: rm -rf obj-unix rm -f *.d From a8cb30b9c5f91b85a18651c74163a5b4bcdcfeb5 Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Tue, 23 Oct 2018 17:16:15 +0100 Subject: [PATCH 096/304] Static compiling of ARMv7 CortexA7 --- Makefile.classic_armv7_a7 | 12 +++++++++++- Makefile.common | 5 +++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Makefile.classic_armv7_a7 b/Makefile.classic_armv7_a7 index 0413cdb45b..eb04fde2f5 100644 --- a/Makefile.classic_armv7_a7 +++ b/Makefile.classic_armv7_a7 @@ -3,7 +3,6 @@ # ensure the SDL2 link isn't broken... # Classic Readme Variables ############ - CLASSIC_MODS_VER := Official_Retroarch_v1_7_5b_CMO CLASSIC_MODS_NAME := RetroArch v1.7.5b (Official CM Optimised) MOD_CREATOR := Libretro + ClassicMods @@ -21,6 +20,10 @@ CXX_V = arm-linux-gnueabihf-g++-8 AS_V = arm-linux-gnueabihf-as CC_AS_V = arm-linux-gnueabihf-gcc-8 +# Libretro Defines #################### +HAVE_CLASSIC = 1 + + all: $(TARGET) retroarch: @@ -52,6 +55,13 @@ retroarch: cd /tmp/$(HAKCHI_DIR)/; tar -czvf "$(CLASSIC_MODS_VER).hmod" * mv /tmp/$(HAKCHI_DIR)/$(CLASSIC_MODS_VER).hmod . @echo "** BUILT CLASSIC_MODS HAKCHI - $(CLASSIC_MODS_VER) HMOD PACKAGE **" + + #COMMODORE 64 MINI BUILD (WIP) + + @echo "*********************************************************************" + @echo "*** Classic ARM7 Cortex A7 build and packages built successfully! ***" + @echo "****************** Winner, Winner, Chicken Dinner! ******************" + @echo "*********************************************************************" clean: rm -rf obj-unix rm -f *.d diff --git a/Makefile.common b/Makefile.common index 361de1abb5..67d0c6845e 100644 --- a/Makefile.common +++ b/Makefile.common @@ -7,8 +7,9 @@ ifeq ($(HAVE_STACK_USAGE), 1) CFLAGS += -fstack-usage endif -ifeq ($(HAVE_HAKCHI), 1) -CFLAGS += -DHAVE_HAKCHI +ifeq ($(HAVE_CLASSIC), 1) + LDFLAGS += -static-libgcc -static-libstdc++ + CFLAGS += -DHAVE_CLASSIC endif ifeq ($(HAVE_GL_CONTEXT),) From 63d44c0ebcffb455cacf3f5a8aa8b6db3b4775f8 Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Tue, 23 Oct 2018 17:17:07 +0100 Subject: [PATCH 097/304] Added cleanup to A7A7 --- Makefile.classic_armv7_a7 | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.classic_armv7_a7 b/Makefile.classic_armv7_a7 index eb04fde2f5..3c2b540fcf 100644 --- a/Makefile.classic_armv7_a7 +++ b/Makefile.classic_armv7_a7 @@ -55,6 +55,7 @@ retroarch: cd /tmp/$(HAKCHI_DIR)/; tar -czvf "$(CLASSIC_MODS_VER).hmod" * mv /tmp/$(HAKCHI_DIR)/$(CLASSIC_MODS_VER).hmod . @echo "** BUILT CLASSIC_MODS HAKCHI - $(CLASSIC_MODS_VER) HMOD PACKAGE **" + rm -fr /tmp/$(HAKCHI_DIR) #clean up tmp #COMMODORE 64 MINI BUILD (WIP) From eff5914fa24258d70fc71dc5ad1ca7ea87e5aa04 Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Tue, 23 Oct 2018 17:28:23 +0100 Subject: [PATCH 098/304] Forgot the new brand name lol. --- Makefile.classic_armv7_a7 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.classic_armv7_a7 b/Makefile.classic_armv7_a7 index 3c2b540fcf..90c920fcdb 100644 --- a/Makefile.classic_armv7_a7 +++ b/Makefile.classic_armv7_a7 @@ -3,9 +3,9 @@ # ensure the SDL2 link isn't broken... # Classic Readme Variables ############ -CLASSIC_MODS_VER := Official_Retroarch_v1_7_5b_CMO -CLASSIC_MODS_NAME := RetroArch v1.7.5b (Official CM Optimised) -MOD_CREATOR := Libretro + ClassicMods +CLASSIC_MODS_VER := Official_Retroarch_v1_7_5b_MMCO +CLASSIC_MODS_NAME := RetroArch v1.7.5b (Official MMC Optimised) +MOD_CREATOR := Libretro + ModMyClassic MOD_CATEGORY := RetroArch GIT_COMMIT := $(shell echo "`git rev-parse --short HEAD``git diff-index --quiet HEAD -- || echo '-dirty'`") From 49b657fce26543bd96710cb69ec45ef2b87ef758 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 24 Oct 2018 04:42:58 +0200 Subject: [PATCH 099/304] Menu Font Green/Blue Color can now be manipulated with the GUI --- menu/menu_setting.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 6bfe680545..59e5e4527f 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -7784,8 +7784,6 @@ static bool setting_append_list( general_write_handler, general_read_handler); (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; - (*list)[list_info->index - 1].get_string_representation = - &setting_get_string_representation_float_video_msg_color; menu_settings_list_current_add_range(list, list_info, 0, 255, 1, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -7800,8 +7798,6 @@ static bool setting_append_list( parent_group, general_write_handler, general_read_handler); - (*list)[list_info->index - 1].get_string_representation = - &setting_get_string_representation_float_video_msg_color; (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; menu_settings_list_current_add_range(list, list_info, 0, 255, 1, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); From 183aede716a3c8a263dcfef82daf08c374282670 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 24 Oct 2018 04:44:29 +0200 Subject: [PATCH 100/304] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 4552019215..6dc971fd21 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,7 @@ - LOCALIZATION: Update Italian translation. - LOCALIZATION: Update Simplified Chinese translation. - LOCALIZATION: Update Japanese translation. +- MENU: User Interface -> Appearance -> 'Menu Font Green/Blue Color' settings now work properly. - SCANNER: Fix GDI disc scanning. - SWITCH/LIBNX: Improve touch scaling calculation. - SWITCH: Proper button labels. From 07c45cadd18678695591509bb5a5f3d4d0b090f1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 24 Oct 2018 04:49:53 +0200 Subject: [PATCH 101/304] Only display CRT SwitchRes settings if video display server is implemented --- CHANGES.md | 1 + gfx/video_display_server.c | 9 ++++++++- gfx/video_display_server.h | 2 ++ menu/menu_displaylist.c | 8 +++++--- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 6dc971fd21..ca75a843f5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,7 @@ - LOCALIZATION: Update Italian translation. - LOCALIZATION: Update Simplified Chinese translation. - LOCALIZATION: Update Japanese translation. +- MENU: Only show CRT SwitchRes if video display server is implemented (Windows/Linux for now) - MENU: User Interface -> Appearance -> 'Menu Font Green/Blue Color' settings now work properly. - SCANNER: Fix GDI disc scanning. - SWITCH/LIBNX: Improve touch scaling calculation. diff --git a/gfx/video_display_server.c b/gfx/video_display_server.c index 653cd0d8ad..98fd57eca1 100644 --- a/gfx/video_display_server.c +++ b/gfx/video_display_server.c @@ -21,7 +21,14 @@ #include "../verbosity.h" static const video_display_server_t *current_display_server = NULL; -static void *current_display_server_data = NULL; +static void *current_display_server_data = NULL; + +const char *video_display_server_get_ident(void) +{ + if (!current_display_server) + return "null"; + return current_display_server->ident; +} void* video_display_server_init(void) { diff --git a/gfx/video_display_server.h b/gfx/video_display_server.h index 6f06228915..9a39100807 100644 --- a/gfx/video_display_server.h +++ b/gfx/video_display_server.h @@ -52,6 +52,8 @@ bool video_display_server_switch_resolution( const char *video_display_server_get_output_options(void); +const char *video_display_server_get_ident(void); + extern const video_display_server_t dispserv_win32; extern const video_display_server_t dispserv_x11; extern const video_display_server_t dispserv_null; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index dd85bc88ab..f7b00d07dc 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -78,6 +78,7 @@ #include "../frontend/frontend_driver.h" #include "../ui/ui_companion_driver.h" #include "../gfx/video_driver.h" +#include "../gfx/video_display_server.h" #include "../config.features.h" #include "../version_git.h" #include "../input/input_driver.h" @@ -6513,9 +6514,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist break; case DISPLAYLIST_VIDEO_SETTINGS_LIST: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); - menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_CRT_SWITCHRES_SETTINGS, - PARSE_ACTION, false); + if (!string_is_equal(video_display_server_get_ident(), "null")) + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_CRT_SWITCHRES_SETTINGS, + PARSE_ACTION, false); menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_SUSPEND_SCREENSAVER_ENABLE, PARSE_ONLY_BOOL, false); From ce873906fcddbc5fb0fa14f71469ae3d37b4ec16 Mon Sep 17 00:00:00 2001 From: natinusala Date: Wed, 24 Oct 2018 17:23:22 +0200 Subject: [PATCH 102/304] libnx: add multitouch to input driver --- .vscode/c_cpp_properties.json | 3 ++- input/drivers/switch_input.c | 36 +++++++++++++++++++---------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 2e6b11d97a..26319581dc 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -29,7 +29,8 @@ "includePath": [ "/usr/include", "/usr/local/include", - "${workspaceRoot}" + "${workspaceRoot}", + "${workspaceFolder}/libretro-common/include" ], "defines": [], "intelliSenseMode": "clang-x64", diff --git a/input/drivers/switch_input.c b/input/drivers/switch_input.c index 26cfd510d5..0176ed63bc 100644 --- a/input/drivers/switch_input.c +++ b/input/drivers/switch_input.c @@ -11,12 +11,14 @@ #ifdef HAVE_LIBNX #include + +#define MULTITOUCH_LIMIT 4 /* supports up to this many fingers at once */ +#define TOUCH_AXIS_MAX 0x7fff /* abstraction of pointer coords */ #endif #include "../input_driver.h" #define MAX_PADS 10 -#define TOUCH_AXIS_MAX 0x7fff /* abstraction of pointer coords */ /* TODO/FIXME - * fix game focus toggle */ @@ -27,16 +29,15 @@ typedef struct switch_input bool blocked; #ifdef HAVE_LIBNX - uint32_t touch_x; - uint32_t touch_y; - uint32_t touch_scale_x; uint32_t touch_scale_y; uint32_t touch_half_resolution_x; uint32_t touch_half_resolution_y; - bool touch_state; + bool touch_state[MULTITOUCH_LIMIT]; + uint32_t touch_x[MULTITOUCH_LIMIT]; + uint32_t touch_y[MULTITOUCH_LIMIT]; #endif } switch_input_t; @@ -50,15 +51,18 @@ static void switch_input_poll(void *data) #ifdef HAVE_LIBNX uint32_t touch_count = hidTouchCount(); - sw->touch_state = touch_count > 0; - - if (sw->touch_state) + for (int i = 0; i < MULTITOUCH_LIMIT; i++) { - touchPosition touch_position; - hidTouchRead(&touch_position, 0); + sw->touch_state[i] = touch_count > i; - sw->touch_x = touch_position.px; - sw->touch_y = touch_position.py; + if (sw->touch_state[i]) + { + touchPosition touch_position; + hidTouchRead(&touch_position, i); + + sw->touch_x[i] = touch_position.px; + sw->touch_y[i] = touch_position.py; + } } #endif } @@ -76,17 +80,17 @@ void calc_touch_scaling(switch_input_t *sw, uint32_t x, uint32_t y, uint32_t axi static int16_t switch_pointer_device_state(switch_input_t *sw, unsigned id, unsigned idx) { - if (idx != 0) + if (idx >= MULTITOUCH_LIMIT) return 0; switch (id) { case RETRO_DEVICE_ID_POINTER_PRESSED: - return sw->touch_state; + return sw->touch_state[idx]; case RETRO_DEVICE_ID_POINTER_X: - return ((sw->touch_x - sw->touch_half_resolution_x) * sw->touch_scale_x); + return ((sw->touch_x[idx] - sw->touch_half_resolution_x) * sw->touch_scale_x); case RETRO_DEVICE_ID_POINTER_Y: - return ((sw->touch_y - sw->touch_half_resolution_y) * sw->touch_scale_y); + return ((sw->touch_y[idx] - sw->touch_half_resolution_y) * sw->touch_scale_y); } return 0; From 75008d0a229e78ab56e7650a0b8999c124af6be1 Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Thu, 25 Oct 2018 13:11:55 +0100 Subject: [PATCH 103/304] Added Optimisation for A7A7 and fixed Classic platform --- Makefile.classic_armv7_a7 | 7 ++++--- Makefile.common | 40 ++++++++++++++++++++++++++++++++++----- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/Makefile.classic_armv7_a7 b/Makefile.classic_armv7_a7 index 90c920fcdb..2058163cff 100644 --- a/Makefile.classic_armv7_a7 +++ b/Makefile.classic_armv7_a7 @@ -21,8 +21,9 @@ AS_V = arm-linux-gnueabihf-as CC_AS_V = arm-linux-gnueabihf-gcc-8 # Libretro Defines #################### -HAVE_CLASSIC = 1 - +#HAVE_CLASSIC = Classic Hook, disable some features +#HAVE_C_A7A7 = Classic Armv7 Cortex A7 optimisation override +#HAVE_HAKCHI = Hakchi Hook, change default configurations etc (TODO) all: $(TARGET) @@ -30,7 +31,7 @@ retroarch: #Build the RetroArch Binary for cross platform classics (ARMv7 Cortex A7) patchelf --version #Check if you have patchelf installed... (sudo apt-get install patchelf) ./configure --host=arm-linux-gnueabihf --enable-mali_fbdev --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard - make CC=$(CC_V) CXX=$(CXX_V) AS=$(AS_V) CC_AS=$(CC_AS_V) LDFLAGS_SDL=-lSDL2 -j #Cook it + make CC=$(CC_V) CXX=$(CXX_V) AS=$(AS_V) CC_AS=$(CC_AS_V) LDFLAGS_SDL=-lSDL2 HAVE_CLASSIC=1 HAVE_C_A7A7=1 HAVE_HAKCHI=1 -j #Cook it patchelf --replace-needed libSDL2-2.0.so.0 libSDL2.so retroarch #libSDL2-2.0.so.0 sym link doesn't exist on native build. Just patch the binary... #HAKCHI BUILD (NESC, SNESC) diff --git a/Makefile.common b/Makefile.common index 67d0c6845e..e59dfa94e8 100644 --- a/Makefile.common +++ b/Makefile.common @@ -7,11 +7,6 @@ ifeq ($(HAVE_STACK_USAGE), 1) CFLAGS += -fstack-usage endif -ifeq ($(HAVE_CLASSIC), 1) - LDFLAGS += -static-libgcc -static-libstdc++ - CFLAGS += -DHAVE_CLASSIC -endif - ifeq ($(HAVE_GL_CONTEXT),) HAVE_GL_CONTEXT=0 @@ -1840,3 +1835,38 @@ endif ifeq ($(HAVE_RPILED), 1) OBJ += led/drivers/led_rpi.o endif + +################################## +### Classic Platform specifics ### +###############WIP################ +# Help at https://modmyclassic.com/comp + +ifeq ($(HAVE_CLASSIC), 1) + CFLAGS += -DHAVE_CLASSIC +endif + +ifeq ($(HAVE_C_A7A7), 1) + C_A7A7_OPT = -Ofast \ + -fno-lto \ + -fdata-sections -ffunction-sections -Wl,--gc-sections \ + -fno-stack-protector -fno-ident -fomit-frame-pointer \ + -falign-functions=1 -falign-jumps=1 -falign-loops=1 \ + -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-unroll-loops \ + -fmerge-all-constants -fno-math-errno \ + -marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard + CFLAGS += $(C_A7A7_OPT) + CXXFLAGS += $(C_A7A7_OPT) + ifeq ($(shell echo `$(CC) -dumpversion` "< 4.9" | bc -l), 1) + CFLAGS += -march=armv7-a + else + CFLAGS += -march=armv7ve + # If gcc is 5.0 or later + ifeq ($(shell echo `$(CC) -dumpversion` ">= 5" | bc -l), 1) + LDFLAGS += -static-libgcc -static-libstdc++ + endif +endif + +ifeq ($(HAVE_HAKCHI), 1) + CFLAGS += -DHAVE_HAKCHI +endif +################################## \ No newline at end of file From 5da7494bfc1cfaa4cce732ace73cb238e70b456b Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Thu, 25 Oct 2018 13:15:41 +0100 Subject: [PATCH 104/304] whoops --- Makefile.common | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.common b/Makefile.common index e59dfa94e8..ff6ff02411 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1864,6 +1864,7 @@ ifeq ($(HAVE_C_A7A7), 1) ifeq ($(shell echo `$(CC) -dumpversion` ">= 5" | bc -l), 1) LDFLAGS += -static-libgcc -static-libstdc++ endif + endif endif ifeq ($(HAVE_HAKCHI), 1) From c3bfab9285feb119af18cf9d685cebee187339b5 Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Thu, 25 Oct 2018 13:47:22 +0100 Subject: [PATCH 105/304] Finished up Classic Platform (hopefully) --- Makefile.classic_armv7_a7 | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/Makefile.classic_armv7_a7 b/Makefile.classic_armv7_a7 index 2058163cff..8967b4b501 100644 --- a/Makefile.classic_armv7_a7 +++ b/Makefile.classic_armv7_a7 @@ -1,10 +1,15 @@ -# Make sure you have patchelf installed (sudo apt-get install patchelf) to patch the binary for Hakchi. -# Might not be needed for your build but it's a useful tool and for safety it should be run anyway to -# ensure the SDL2 link isn't broken... +# Building Prerequisites ############## +# arm-linux-gnueabihf-gcc-8 +# arm-linux-gnueabihf-g++-8 +# arm-linux-gnueabihf-as +# arm-linux-gnueabihf-strip +# patchelf +# bc # Classic Readme Variables ############ -CLASSIC_MODS_VER := Official_Retroarch_v1_7_5b_MMCO -CLASSIC_MODS_NAME := RetroArch v1.7.5b (Official MMC Optimised) +CLASSIC_MODS_VER := Official_Retroarch_v1_7_5c_COptimised +CLASSIC_MODS_NAME := RetroArch v1.7.5c (Official Classic Optimised) +CLASSIC_VERSION := 1.7.5c (Classic Optimised) MOD_CREATOR := Libretro + ModMyClassic MOD_CATEGORY := RetroArch GIT_COMMIT := $(shell echo "`git rev-parse --short HEAD``git diff-index --quiet HEAD -- || echo '-dirty'`") @@ -28,10 +33,15 @@ CC_AS_V = arm-linux-gnueabihf-gcc-8 all: $(TARGET) retroarch: + #Backup vanilla version files + ammend version + cp version.all version_BACKUP.all && cp version.dtd version_BACKUP.dtd + sed -i -e 's/RARCH_VERSION="[^"]*"/RARCH_VERSION="'$(CLASSIC_VERSION)'"/g' version.all + sed -i -e 's/ENTITY version "[^"]*"/ENTITY version "'$(CLASSIC_VERSION)'"/g' version.dtd #Build the RetroArch Binary for cross platform classics (ARMv7 Cortex A7) patchelf --version #Check if you have patchelf installed... (sudo apt-get install patchelf) ./configure --host=arm-linux-gnueabihf --enable-mali_fbdev --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard make CC=$(CC_V) CXX=$(CXX_V) AS=$(AS_V) CC_AS=$(CC_AS_V) LDFLAGS_SDL=-lSDL2 HAVE_CLASSIC=1 HAVE_C_A7A7=1 HAVE_HAKCHI=1 -j #Cook it + arm-linux-gnueabihf-strip -v retroarch patchelf --replace-needed libSDL2-2.0.so.0 libSDL2.so retroarch #libSDL2-2.0.so.0 sym link doesn't exist on native build. Just patch the binary... #HAKCHI BUILD (NESC, SNESC) @@ -59,7 +69,10 @@ retroarch: rm -fr /tmp/$(HAKCHI_DIR) #clean up tmp #COMMODORE 64 MINI BUILD (WIP) - + + #Clean down dirty files + rm -f version.all version.dtd + mv version_BACKUP.all version.all && mv version_BACKUP.dtd version.dtd @echo "*********************************************************************" @echo "*** Classic ARM7 Cortex A7 build and packages built successfully! ***" @echo "****************** Winner, Winner, Chicken Dinner! ******************" From e83ccbafe27e729eba1320399c7cf74e08ff94d3 Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Thu, 25 Oct 2018 14:20:20 +0100 Subject: [PATCH 106/304] Updated version and updated clean for A7A7 --- Makefile.classic_armv7_a7 | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile.classic_armv7_a7 b/Makefile.classic_armv7_a7 index 8967b4b501..9a94a26ec5 100644 --- a/Makefile.classic_armv7_a7 +++ b/Makefile.classic_armv7_a7 @@ -9,7 +9,7 @@ # Classic Readme Variables ############ CLASSIC_MODS_VER := Official_Retroarch_v1_7_5c_COptimised CLASSIC_MODS_NAME := RetroArch v1.7.5c (Official Classic Optimised) -CLASSIC_VERSION := 1.7.5c (Classic Optimised) +CLASSIC_VERSION := 1.7.5c \(Classic+\) MOD_CREATOR := Libretro + ModMyClassic MOD_CATEGORY := RetroArch GIT_COMMIT := $(shell echo "`git rev-parse --short HEAD``git diff-index --quiet HEAD -- || echo '-dirty'`") @@ -35,11 +35,12 @@ all: $(TARGET) retroarch: #Backup vanilla version files + ammend version cp version.all version_BACKUP.all && cp version.dtd version_BACKUP.dtd - sed -i -e 's/RARCH_VERSION="[^"]*"/RARCH_VERSION="'$(CLASSIC_VERSION)'"/g' version.all - sed -i -e 's/ENTITY version "[^"]*"/ENTITY version "'$(CLASSIC_VERSION)'"/g' version.dtd + sed -i -e 's/RARCH_VERSION="[^"]*"/RARCH_VERSION="$(CLASSIC_VERSION)"/g' version.all + sed -i -e 's/PACKAGE_VERSION "[^"]*"/PACKAGE_VERSION "$(CLASSIC_VERSION)"/g' version.all + sed -i -e 's/ENTITY version "[^"]*"/ENTITY version "$(CLASSIC_VERSION)"/g' version.dtd #Build the RetroArch Binary for cross platform classics (ARMv7 Cortex A7) patchelf --version #Check if you have patchelf installed... (sudo apt-get install patchelf) - ./configure --host=arm-linux-gnueabihf --enable-mali_fbdev --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard + ./configure --host=arm-linux-gnueabihf --enable-mali_fbdev --disable-freetype --enable-opengles --enable-udev --enable-alsa --enable-neon --enable-floathard --disable-discord make CC=$(CC_V) CXX=$(CXX_V) AS=$(AS_V) CC_AS=$(CC_AS_V) LDFLAGS_SDL=-lSDL2 HAVE_CLASSIC=1 HAVE_C_A7A7=1 HAVE_HAKCHI=1 -j #Cook it arm-linux-gnueabihf-strip -v retroarch patchelf --replace-needed libSDL2-2.0.so.0 libSDL2.so retroarch #libSDL2-2.0.so.0 sym link doesn't exist on native build. Just patch the binary... @@ -97,3 +98,6 @@ clean: rm -f $(PNDDIR)/readme.html rm -f retroarch rm -f $(CLASSIC_MODS_VER).hmod + rm -f version.all version.dtd + mv version_BACKUP.all version.all && mv version_BACKUP.dtd version.dtd + rm -f *_BACKUP* From a45f3a2d5949edce7ef537ee5415f76abd35e68f Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Thu, 25 Oct 2018 16:30:07 +0100 Subject: [PATCH 107/304] Added MadMonkey's compression (and the fixes) --- libretro-common/dynamic/dylib.c | 278 +++++++++++++++++++++++++++++++- 1 file changed, 276 insertions(+), 2 deletions(-) diff --git a/libretro-common/dynamic/dylib.c b/libretro-common/dynamic/dylib.c index bc6be9fc40..e57ef62678 100644 --- a/libretro-common/dynamic/dylib.c +++ b/libretro-common/dynamic/dylib.c @@ -34,6 +34,270 @@ #include #endif +#if defined(__linux__) && !defined(ANDROID) +#define soramLoader +#endif + +#ifdef soramLoader +// stolen from here: https://x-c3ll.github.io/posts/fileless-memfd_create/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define debug_printf(...) //printf(__VA_ARGS__) + +typedef struct _soramHandle +{ + dylib_t handle; + char*soname; + int32_t ref; +} soramHandle_t; + +#define VECTOR_LIST_TYPE soramHandle_t +#define VECTOR_LIST_NAME soram +#include <../lists/vector_list.c> +typedef struct TYPE_NAME() soramList_t; +#undef VECTOR_LIST_TYPE +#undef VECTOR_LIST_NAME + +static soramList_t *soramList = 0; +static pthread_mutex_t soramMutex = PTHREAD_MUTEX_INITIALIZER; + +static soramHandle_t*soramFindName(const char*soname) +{ + size_t i; + if (soramList == 0) + return 0; + for (i = 0; i < soramList->count; ++i) + if (strcmp(soname, soramList->data[i].soname) == 0) + return &soramList->data[i]; + return 0; +} + +static soramHandle_t*soramFindHandle(dylib_t handle) +{ + size_t i; + if (soramList == 0) + return 0; + for (i = 0; i < soramList->count; ++i) + if (handle == soramList->data[i].handle) + return &soramList->data[i]; + return 0; +} + +static void soramAdd(const char*soname,dylib_t handle) +{ + soramHandle_t *so, _so; + if (soramList == 0) + soramList = soram_vector_list_new(); + so = soramFindHandle(0); + if (so == 0) + so = &_so; + so->handle = handle; + so->soname = strdup(soname); + so->ref = 1; + soram_vector_list_append(soramList, *so); +} + +static bool soramRemove(dylib_t handle) +{ + size_t i,count; + soramHandle_t *so = soramFindHandle(handle); + if (so == 0) + return 0; + if (--so->ref > 0) + return 1; +#ifndef NO_DLCLOSE + dlclose(so->handle); + free(so->soname); + so->handle = 0; + so->soname = 0; + count = 0; + for (i = 0; i < soramList->count; ++i) + if (soramList->data[i].ref > 0) + ++count; + if (count) + return 1; + soram_vector_list_free(soramList); + soramList = 0; +#endif + return 1; +} + +static void soramLock() +{ + pthread_mutex_lock(&soramMutex); +} + +static void soramUnlock() +{ + pthread_mutex_unlock(&soramMutex); +} + +// Wrapper to call memfd_create_cust syscall +static inline int memfd_create_cust(const char *pathname, int flags) +{ + return syscall(319, pathname, flags); +} + +// Returns a file descriptor where we can write our shared object +static int open_ramfs(const char *bname) +{ + int fd = memfd_create_cust(bname, 1); + if (fd < 0) + fd = shm_open(bname, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); + return fd; +} + +static int is_xz(const char *pathname) +{ + uint32_t buffer[2]; + FILE*hf=fopen(pathname, "rb"); + buffer[0] = 0; + if (hf) + { + if (fread(buffer, 1, 4, hf) != 4) + { + buffer[0] = 0; + } + fclose(hf); + } + return (ntohl(buffer[0]) == 0xfd377a58) ? 0 : -1; +} + +static int open_xz(const char *pathname,const char *bname) +{ + int status = -1; + size_t size = 0x1000, rchunk = 0, wchunk = 0; + char *buffer; + FILE *fp; + int fd; + + fd = open_ramfs(bname); + if (fd < 0) + return fd; + + buffer = (char*)malloc(size+8); + if (buffer) + { + snprintf(buffer, size, "xz -cd '%s'", pathname); + fp = popen(buffer, "re"); + if (fp != 0) + { + while (!feof(fp) && !ferror(fp)) + { + rchunk=TEMP_FAILURE_RETRY(fread(buffer, 1, size, fp)); + if (rchunk > 0) + { + wchunk=TEMP_FAILURE_RETRY(write(fd, buffer, rchunk)); + if (wchunk != rchunk) + break; + } + } + status = pclose(fp); + } + + free(buffer); + if ((status == 0) && (wchunk == rchunk)) + return fd; + } + + close(fd); + return -1; +} + +static int dlcallback(struct dl_phdr_info *info, size_t size, void *data) +{ + if (info && info->dlpi_name) + debug_printf("\t[+] %s\n", info->dlpi_name); + return 0; +} + +// Load the shared object +static dylib_t soramLoad(const char *pathname, int flag) +{ + char path[1024]; + char shmp[1024]; + void *handle; + ssize_t size; + char *dname, *bname; + soramHandle_t *so; + + if (is_xz(pathname) < 0) + return 0; + + dname = strdup(pathname); + if (dname == 0) + return 0; + bname = basename(dname); + + soramLock(); + so = soramFindName(bname); + if (so) + { + ++so->ref; + soramUnlock(); + free(dname); + return so->handle; + } + + debug_printf("[INFO] [dylib] soramLoad(%s)\n", pathname); + int fd = open_xz(pathname, bname); + if (fd < 0) + { + soramUnlock(); + free(dname); + return 0; + } + + snprintf(path, 1024, "/proc/self/fd/%d", fd); + handle = dlopen(path, flag); + size = readlink(path, shmp, 1024); + close(fd); + dl_iterate_phdr(dlcallback, 0); + if ((size > 9) && (memcmp(shmp, "/dev/shm/", 9) == 0)) + { + debug_printf("\t\tshm_unlink(%s) - ", bname); + errno = 0; + flag = shm_unlink(bname); + debug_printf("%d\n", errno); + if (flag < 0) + { + debug_printf("\t\t unlink(%s) - ", shmp); + errno = 0; + unlink(shmp); + debug_printf("%d\n", errno); + } + } + soramAdd(bname, handle); + soramUnlock(); + free(dname); + debug_printf("[INFO] [dylib] soramLoad(%s) - %s\n", pathname, handle?"ok":"fail"); + return handle; +} + +static bool soramUnload(dylib_t handle) +{ + bool ret; + soramLock(); + ret = soramRemove(handle); + soramUnlock(); + return ret; +} +#endif //soramLoader + /* Assume W-functions do not work below Win2K and Xbox platforms */ #if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0500 || defined(_XBOX) @@ -93,7 +357,12 @@ dylib_t dylib_load(const char *path) } last_dyn_error[0] = 0; #else - dylib_t lib = dlopen(path, RTLD_LAZY); + dylib_t lib; +#ifdef soramLoader + lib = soramLoad(path, RTLD_LAZY); + if (!lib) +#endif + lib = dlopen(path, RTLD_LAZY); #endif return lib; } @@ -158,8 +427,13 @@ void dylib_close(dylib_t lib) set_dl_error(); last_dyn_error[0] = 0; #else +#ifdef soramLoader + if (soramUnload(lib) == 0) +#endif #ifndef NO_DLCLOSE - dlclose(lib); + dlclose(lib); +#else + ; #endif #endif } From 2a4f42aba0f673904a8cbe09bfec9399160150aa Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Thu, 25 Oct 2018 16:45:15 +0100 Subject: [PATCH 108/304] Updated wording included link to support page incase/when help is required. --- Makefile.classic_armv7_a7 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Makefile.classic_armv7_a7 b/Makefile.classic_armv7_a7 index 9a94a26ec5..599c7cb8c2 100644 --- a/Makefile.classic_armv7_a7 +++ b/Makefile.classic_armv7_a7 @@ -1,3 +1,8 @@ +# This build was put together and is maintained by ModMyClassic.com for Libretro. +# The purpose is to have Libretro have a proper official build platform for classic consoles. +# If you need any help in building for the classics or have any questions then please visit +# https://modmyclassic.com/comp and we will help in any way possible! + # Building Prerequisites ############## # arm-linux-gnueabihf-gcc-8 # arm-linux-gnueabihf-g++-8 @@ -46,6 +51,7 @@ retroarch: patchelf --replace-needed libSDL2-2.0.so.0 libSDL2.so retroarch #libSDL2-2.0.so.0 sym link doesn't exist on native build. Just patch the binary... #HAKCHI BUILD (NESC, SNESC) + #FYI this build was originally known as RetroArch 'Neo' for Hakchi. @echo "** BUILDING CLASSIC_MODS HAKCHI - $(CLASSIC_MODS_VER) HMOD PACKAGE **" rm -fr /tmp/$(HAKCHI_DIR) cd /tmp/; git clone $(HAKCHI_GIT) @@ -99,5 +105,6 @@ clean: rm -f retroarch rm -f $(CLASSIC_MODS_VER).hmod rm -f version.all version.dtd - mv version_BACKUP.all version.all && mv version_BACKUP.dtd version.dtd + mv -f version_BACKUP.all version.all || echo "Backup Doesn't Exist - Ignoring..." + mv -f version_BACKUP.dtd version.dtd || echo "Backup Doesn't Exist - Ignoring..." rm -f *_BACKUP* From cff8c7741cfe1092edfa876ec891b3b33c5a5bfc Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Thu, 25 Oct 2018 16:47:46 +0100 Subject: [PATCH 109/304] Fixed tabbing and grammar on Makefile for A7A7 --- Makefile.classic_armv7_a7 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.classic_armv7_a7 b/Makefile.classic_armv7_a7 index 599c7cb8c2..34dc715cb5 100644 --- a/Makefile.classic_armv7_a7 +++ b/Makefile.classic_armv7_a7 @@ -1,5 +1,5 @@ # This build was put together and is maintained by ModMyClassic.com for Libretro. -# The purpose is to have Libretro have a proper official build platform for classic consoles. +# The purpose is to give Libretro a proper "official" build platform for classic consoles. # If you need any help in building for the classics or have any questions then please visit # https://modmyclassic.com/comp and we will help in any way possible! @@ -105,6 +105,6 @@ clean: rm -f retroarch rm -f $(CLASSIC_MODS_VER).hmod rm -f version.all version.dtd - mv -f version_BACKUP.all version.all || echo "Backup Doesn't Exist - Ignoring..." - mv -f version_BACKUP.dtd version.dtd || echo "Backup Doesn't Exist - Ignoring..." + mv -f version_BACKUP.all version.all || echo "Backup Doesn't Exist - Ignoring..." + mv -f version_BACKUP.dtd version.dtd || echo "Backup Doesn't Exist - Ignoring..." rm -f *_BACKUP* From 6b96ff82dedbbb822f764941b3f3a764ec5845e9 Mon Sep 17 00:00:00 2001 From: Nay Slayer Date: Thu, 25 Oct 2018 19:40:24 +0300 Subject: [PATCH 110/304] Fix xmb.c and stripes.c menu drivers texture memory leak --- menu/drivers/stripes.c | 10 +++++----- menu/drivers/xmb.c | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/menu/drivers/stripes.c b/menu/drivers/stripes.c index e72a569eba..54e25254d9 100755 --- a/menu/drivers/stripes.c +++ b/menu/drivers/stripes.c @@ -897,7 +897,7 @@ static void stripes_update_thumbnail_path(void *data, unsigned i, char pos) } else if (filebrowser_get_type() != FILEBROWSER_NONE) { - stripes->thumbnail = 0; + video_driver_texture_unload(&stripes->thumbnail); goto end; } @@ -921,7 +921,7 @@ static void stripes_update_thumbnail_path(void *data, unsigned i, char pos) } else { - stripes->left_thumbnail = 0; + video_driver_texture_unload(&stripes->left_thumbnail); goto end; } } @@ -1075,7 +1075,7 @@ static void stripes_update_thumbnail_image(void *data) task_push_image_load(stripes->thumbnail_file_path, menu_display_handle_thumbnail_upload, NULL); else - stripes->thumbnail = 0; + video_driver_texture_unload(&stripes->thumbnail); free(stripes->thumbnail_file_path); stripes->thumbnail_file_path = NULL; @@ -1087,7 +1087,7 @@ static void stripes_update_thumbnail_image(void *data) task_push_image_load(stripes->left_thumbnail_file_path, menu_display_handle_left_thumbnail_upload, NULL); else - stripes->left_thumbnail = 0; + video_driver_texture_unload(&stripes->left_thumbnail); free(stripes->left_thumbnail_file_path); stripes->left_thumbnail_file_path = NULL; @@ -1136,7 +1136,7 @@ static void stripes_update_savestate_thumbnail_image(void *data) task_push_image_load(stripes->savestate_thumbnail_file_path, menu_display_handle_savestate_thumbnail_upload, NULL); else - stripes->savestate_thumbnail = 0; + video_driver_texture_unload(&stripes->savestate_thumbnail); } static unsigned stripes_get_system_tab(stripes_handle_t *stripes, unsigned i) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 2a5b13fb19..9a8025b9d3 100755 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -948,7 +948,7 @@ static void xmb_update_thumbnail_path(void *data, unsigned i, char pos) } else if (filebrowser_get_type() != FILEBROWSER_NONE) { - xmb->thumbnail = 0; + video_driver_texture_unload(&xmb->thumbnail); goto end; } @@ -976,7 +976,7 @@ static void xmb_update_thumbnail_path(void *data, unsigned i, char pos) sizeof(new_path)); } else - xmb->left_thumbnail = 0; + video_driver_texture_unload(&xmb->left_thumbnail); goto end; } } @@ -1129,7 +1129,7 @@ static void xmb_update_thumbnail_image(void *data) task_push_image_load(xmb->thumbnail_file_path, menu_display_handle_thumbnail_upload, NULL); else - xmb->thumbnail = 0; + video_driver_texture_unload(&xmb->thumbnail); free(xmb->thumbnail_file_path); xmb->thumbnail_file_path = NULL; @@ -1141,7 +1141,7 @@ static void xmb_update_thumbnail_image(void *data) task_push_image_load(xmb->left_thumbnail_file_path, menu_display_handle_left_thumbnail_upload, NULL); else - xmb->left_thumbnail = 0; + video_driver_texture_unload(&xmb->left_thumbnail); free(xmb->left_thumbnail_file_path); xmb->left_thumbnail_file_path = NULL; @@ -1190,7 +1190,7 @@ static void xmb_update_savestate_thumbnail_image(void *data) task_push_image_load(xmb->savestate_thumbnail_file_path, menu_display_handle_savestate_thumbnail_upload, NULL); else - xmb->savestate_thumbnail = 0; + video_driver_texture_unload(&xmb->savestate_thumbnail); } static unsigned xmb_get_system_tab(xmb_handle_t *xmb, unsigned i) From 4a4d7f5e2f7c3a03faf8cef8a099b4c5fa2fa883 Mon Sep 17 00:00:00 2001 From: Ryan 'Swingflip' Hamlin Date: Thu, 25 Oct 2018 18:48:10 +0100 Subject: [PATCH 111/304] Revert MM dynamic code for seperate PR and rework --- libretro-common/dynamic/dylib.c | 278 +------------------------------- 1 file changed, 2 insertions(+), 276 deletions(-) diff --git a/libretro-common/dynamic/dylib.c b/libretro-common/dynamic/dylib.c index e57ef62678..bc6be9fc40 100644 --- a/libretro-common/dynamic/dylib.c +++ b/libretro-common/dynamic/dylib.c @@ -34,270 +34,6 @@ #include #endif -#if defined(__linux__) && !defined(ANDROID) -#define soramLoader -#endif - -#ifdef soramLoader -// stolen from here: https://x-c3ll.github.io/posts/fileless-memfd_create/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define debug_printf(...) //printf(__VA_ARGS__) - -typedef struct _soramHandle -{ - dylib_t handle; - char*soname; - int32_t ref; -} soramHandle_t; - -#define VECTOR_LIST_TYPE soramHandle_t -#define VECTOR_LIST_NAME soram -#include <../lists/vector_list.c> -typedef struct TYPE_NAME() soramList_t; -#undef VECTOR_LIST_TYPE -#undef VECTOR_LIST_NAME - -static soramList_t *soramList = 0; -static pthread_mutex_t soramMutex = PTHREAD_MUTEX_INITIALIZER; - -static soramHandle_t*soramFindName(const char*soname) -{ - size_t i; - if (soramList == 0) - return 0; - for (i = 0; i < soramList->count; ++i) - if (strcmp(soname, soramList->data[i].soname) == 0) - return &soramList->data[i]; - return 0; -} - -static soramHandle_t*soramFindHandle(dylib_t handle) -{ - size_t i; - if (soramList == 0) - return 0; - for (i = 0; i < soramList->count; ++i) - if (handle == soramList->data[i].handle) - return &soramList->data[i]; - return 0; -} - -static void soramAdd(const char*soname,dylib_t handle) -{ - soramHandle_t *so, _so; - if (soramList == 0) - soramList = soram_vector_list_new(); - so = soramFindHandle(0); - if (so == 0) - so = &_so; - so->handle = handle; - so->soname = strdup(soname); - so->ref = 1; - soram_vector_list_append(soramList, *so); -} - -static bool soramRemove(dylib_t handle) -{ - size_t i,count; - soramHandle_t *so = soramFindHandle(handle); - if (so == 0) - return 0; - if (--so->ref > 0) - return 1; -#ifndef NO_DLCLOSE - dlclose(so->handle); - free(so->soname); - so->handle = 0; - so->soname = 0; - count = 0; - for (i = 0; i < soramList->count; ++i) - if (soramList->data[i].ref > 0) - ++count; - if (count) - return 1; - soram_vector_list_free(soramList); - soramList = 0; -#endif - return 1; -} - -static void soramLock() -{ - pthread_mutex_lock(&soramMutex); -} - -static void soramUnlock() -{ - pthread_mutex_unlock(&soramMutex); -} - -// Wrapper to call memfd_create_cust syscall -static inline int memfd_create_cust(const char *pathname, int flags) -{ - return syscall(319, pathname, flags); -} - -// Returns a file descriptor where we can write our shared object -static int open_ramfs(const char *bname) -{ - int fd = memfd_create_cust(bname, 1); - if (fd < 0) - fd = shm_open(bname, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); - return fd; -} - -static int is_xz(const char *pathname) -{ - uint32_t buffer[2]; - FILE*hf=fopen(pathname, "rb"); - buffer[0] = 0; - if (hf) - { - if (fread(buffer, 1, 4, hf) != 4) - { - buffer[0] = 0; - } - fclose(hf); - } - return (ntohl(buffer[0]) == 0xfd377a58) ? 0 : -1; -} - -static int open_xz(const char *pathname,const char *bname) -{ - int status = -1; - size_t size = 0x1000, rchunk = 0, wchunk = 0; - char *buffer; - FILE *fp; - int fd; - - fd = open_ramfs(bname); - if (fd < 0) - return fd; - - buffer = (char*)malloc(size+8); - if (buffer) - { - snprintf(buffer, size, "xz -cd '%s'", pathname); - fp = popen(buffer, "re"); - if (fp != 0) - { - while (!feof(fp) && !ferror(fp)) - { - rchunk=TEMP_FAILURE_RETRY(fread(buffer, 1, size, fp)); - if (rchunk > 0) - { - wchunk=TEMP_FAILURE_RETRY(write(fd, buffer, rchunk)); - if (wchunk != rchunk) - break; - } - } - status = pclose(fp); - } - - free(buffer); - if ((status == 0) && (wchunk == rchunk)) - return fd; - } - - close(fd); - return -1; -} - -static int dlcallback(struct dl_phdr_info *info, size_t size, void *data) -{ - if (info && info->dlpi_name) - debug_printf("\t[+] %s\n", info->dlpi_name); - return 0; -} - -// Load the shared object -static dylib_t soramLoad(const char *pathname, int flag) -{ - char path[1024]; - char shmp[1024]; - void *handle; - ssize_t size; - char *dname, *bname; - soramHandle_t *so; - - if (is_xz(pathname) < 0) - return 0; - - dname = strdup(pathname); - if (dname == 0) - return 0; - bname = basename(dname); - - soramLock(); - so = soramFindName(bname); - if (so) - { - ++so->ref; - soramUnlock(); - free(dname); - return so->handle; - } - - debug_printf("[INFO] [dylib] soramLoad(%s)\n", pathname); - int fd = open_xz(pathname, bname); - if (fd < 0) - { - soramUnlock(); - free(dname); - return 0; - } - - snprintf(path, 1024, "/proc/self/fd/%d", fd); - handle = dlopen(path, flag); - size = readlink(path, shmp, 1024); - close(fd); - dl_iterate_phdr(dlcallback, 0); - if ((size > 9) && (memcmp(shmp, "/dev/shm/", 9) == 0)) - { - debug_printf("\t\tshm_unlink(%s) - ", bname); - errno = 0; - flag = shm_unlink(bname); - debug_printf("%d\n", errno); - if (flag < 0) - { - debug_printf("\t\t unlink(%s) - ", shmp); - errno = 0; - unlink(shmp); - debug_printf("%d\n", errno); - } - } - soramAdd(bname, handle); - soramUnlock(); - free(dname); - debug_printf("[INFO] [dylib] soramLoad(%s) - %s\n", pathname, handle?"ok":"fail"); - return handle; -} - -static bool soramUnload(dylib_t handle) -{ - bool ret; - soramLock(); - ret = soramRemove(handle); - soramUnlock(); - return ret; -} -#endif //soramLoader - /* Assume W-functions do not work below Win2K and Xbox platforms */ #if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0500 || defined(_XBOX) @@ -357,12 +93,7 @@ dylib_t dylib_load(const char *path) } last_dyn_error[0] = 0; #else - dylib_t lib; -#ifdef soramLoader - lib = soramLoad(path, RTLD_LAZY); - if (!lib) -#endif - lib = dlopen(path, RTLD_LAZY); + dylib_t lib = dlopen(path, RTLD_LAZY); #endif return lib; } @@ -427,13 +158,8 @@ void dylib_close(dylib_t lib) set_dl_error(); last_dyn_error[0] = 0; #else -#ifdef soramLoader - if (soramUnload(lib) == 0) -#endif #ifndef NO_DLCLOSE - dlclose(lib); -#else - ; + dlclose(lib); #endif #endif } From 158ddc0b2a927718e30849763a0ab90b1b468a5d Mon Sep 17 00:00:00 2001 From: natinusala Date: Tue, 18 Sep 2018 15:13:33 +0200 Subject: [PATCH 112/304] New menu driver : ozone (Nintendo Switch lookalike) --- .vscode/c_cpp_properties.json | 6 +- .vscode/settings.json | 6 +- Makefile.common | 11 + Makefile.libnx | 2 + cheevos-new/cheevos.c | 5 +- cheevos/cheevos.c | 5 +- configuration.c | 5 + griffin/griffin.c | 3 + menu/drivers/materialui.c | 8 - menu/drivers/ozone.c | 3038 +++++++++++++++++++++++++++++++++ menu/menu_animation.c | 4 +- menu/menu_animation.h | 3 +- menu/menu_driver.c | 22 +- menu/menu_driver.h | 5 + menu/menu_setting.c | 12 +- qb/config.libs.sh | 6 +- qb/config.params.sh | 1 + 17 files changed, 3118 insertions(+), 24 deletions(-) create mode 100644 menu/drivers/ozone.c diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 26319581dc..eec6a8bb70 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -30,7 +30,8 @@ "/usr/include", "/usr/local/include", "${workspaceRoot}", - "${workspaceFolder}/libretro-common/include" + "${workspaceFolder}/libretro-common/include", + "${workspaceRoot}/libretro-common/include" ], "defines": [], "intelliSenseMode": "clang-x64", @@ -51,7 +52,8 @@ "C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/ucrt", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/shared", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.15063.0/winrt", - "${workspaceRoot}" + "${workspaceRoot}", + "${workspaceFolder}/libretro-common/include" ], "defines": [ "_DEBUG", diff --git a/.vscode/settings.json b/.vscode/settings.json index 148f4b83ea..c08df32eb9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -22,7 +22,11 @@ "ios": "c", "list": "c", "input_driver.h": "c", - "video_driver.h": "c" + "video_driver.h": "c", + "menu_driver.h": "c", + "file_path.h": "c", + "unordered_map": "c", + "unordered_set": "c" }, "C_Cpp.dimInactiveRegions": false, } \ No newline at end of file diff --git a/Makefile.common b/Makefile.common index ff6ff02411..73836d6fd1 100644 --- a/Makefile.common +++ b/Makefile.common @@ -677,12 +677,17 @@ ifeq ($(HW_CONTEXT_MENU_DRIVERS), 1) ifeq ($(HAVE_STRIPES),) HAVE_STRIPES = 1 endif + + ifeq ($(HAVE_OZONE),) + HAVE_OZONE = 1 + endif else HAVE_ZARCH ?= 0 HAVE_MATERIALUI ?= 0 #HAVE_NUKLEAR ?= 0 HAVE_XMB ?= 0 HAVE_STRIPES ?= 0 + HAVE_OZONE ?= 0 endif ifeq ($(HAVE_RGUI), 1) @@ -714,6 +719,12 @@ ifeq ($(HAVE_XMB), 1) HAVE_MENU_COMMON = 1 endif +ifeq ($(HAVE_OZONE), 1) + OBJ += menu/drivers/ozone.o + DEFINES += -DHAVE_OZONE + HAVE_MENU_COMMON = 1 +endif + ifeq ($(HAVE_STRIPES), 1) OBJ += menu/drivers/stripes.o DEFINES += -DHAVE_STRIPES diff --git a/Makefile.libnx b/Makefile.libnx index d417ee1a5e..709f03364c 100644 --- a/Makefile.libnx +++ b/Makefile.libnx @@ -58,6 +58,7 @@ ifeq ($(HAVE_OPENGL), 1) HAVE_ZARCH = 0 HAVE_XMB = 1 + HAVE_OZONE = 0 HAVE_STRIPES = 0 HAVE_OVERLAY = 1 @@ -67,6 +68,7 @@ else HAVE_ZARCH = 0 HAVE_MATERIALUI = 0 HAVE_XMB = 0 + HAVE_OZONE = 0 HAVE_STRIPES = 0 endif diff --git a/cheevos-new/cheevos.c b/cheevos-new/cheevos.c index e67af93c59..3539db7938 100644 --- a/cheevos-new/cheevos.c +++ b/cheevos-new/cheevos.c @@ -1743,7 +1743,10 @@ found: { settings_t *settings = config_get_ptr(); - if (!string_is_equal(settings->arrays.menu_driver, "xmb") || + if (!( + string_is_equal(settings->arrays.menu_driver, "xmb") || + !string_is_equal(settings->arrays.menu_driver, "ozone") + ) || !settings->bools.cheevos_badges_enable) CORO_RET(); } diff --git a/cheevos/cheevos.c b/cheevos/cheevos.c index d6d1b36325..134e7e6513 100644 --- a/cheevos/cheevos.c +++ b/cheevos/cheevos.c @@ -3229,7 +3229,10 @@ found: { settings_t *settings = config_get_ptr(); - if (!string_is_equal(settings->arrays.menu_driver, "xmb") || + if (!( + string_is_equal(settings->arrays.menu_driver, "xmb") || + !string_is_equal(settings->arrays.menu_driver, "ozone") + ) || !settings->bools.cheevos_badges_enable) CORO_RET(); } diff --git a/configuration.c b/configuration.c index ceac27d6c2..7dfa178c30 100644 --- a/configuration.c +++ b/configuration.c @@ -288,6 +288,7 @@ enum menu_driver_enum MENU_XMB, MENU_STRIPES, MENU_NUKLEAR, + MENU_OZONE, MENU_NULL }; @@ -534,6 +535,8 @@ static enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_NULL; static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_XUI; #elif defined(HAVE_MATERIALUI) && defined(RARCH_MOBILE) static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_MATERIALUI; +#elif defined(HAVE_OZONE) && defined(HAVE_LIBNX) +static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_OZONE; #elif defined(HAVE_XMB) && !defined(_XBOX) static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_XMB; #elif defined(HAVE_RGUI) @@ -1028,6 +1031,8 @@ const char *config_get_default_menu(void) return "rgui"; case MENU_XUI: return "xui"; + case MENU_OZONE: + return "ozone"; case MENU_MATERIALUI: return "glui"; case MENU_XMB: diff --git a/griffin/griffin.c b/griffin/griffin.c index d1be92b996..237ce3a9c5 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -1264,6 +1264,9 @@ MENU #ifdef HAVE_XMB #include "../menu/drivers/xmb.c" #endif +#ifdef HAVE_OZONE +#include "../menu/drivers/ozone.c" +#endif #ifdef HAVE_STRIPES #include "../menu/drivers/stripes.c" diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 752dc1caa8..2c625ba881 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -183,14 +183,6 @@ typedef struct materialui_handle } materialui_handle_t; -static void hex32_to_rgba_normalized(uint32_t hex, float* rgba, float alpha) -{ - rgba[0] = rgba[4] = rgba[8] = rgba[12] = ((hex >> 16) & 0xFF) * (1.0f / 255.0f); /* r */ - rgba[1] = rgba[5] = rgba[9] = rgba[13] = ((hex >> 8 ) & 0xFF) * (1.0f / 255.0f); /* g */ - rgba[2] = rgba[6] = rgba[10] = rgba[14] = ((hex >> 0 ) & 0xFF) * (1.0f / 255.0f); /* b */ - rgba[3] = rgba[7] = rgba[11] = rgba[15] = alpha; -} - static const char *materialui_texture_path(unsigned id) { switch (id) diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c new file mode 100644 index 0000000000..a148d73112 --- /dev/null +++ b/menu/drivers/ozone.c @@ -0,0 +1,3038 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2011-2017 - Daniel De Matteis + * Copyright (C) 2014-2017 - Jean-André Santoni + * Copyright (C) 2016-2017 - Brad Parker + * Copyright (C) 2018 - Alfredo Monclús + * Copyright (C) 2018 - natinusala + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include +#include + +#include "menu_generic.h" +#include "../menu_driver.h" +#include "../menu_animation.h" + +#include "../../configuration.h" + +#include "../../cheevos/badges.h" +#include "../../content.h" + +#include "../../core_info.h" +#include "../../core.h" + +#include "../../retroarch.h" +#include "../../verbosity.h" + +//TODO Handle translation for hardcoded strings (footer...) + +#define FONT_SIZE_FOOTER 18 +#define FONT_SIZE_TITLE 36 +#define FONT_SIZE_TIME 22 +#define FONT_SIZE_ENTRIES_LABEL 24 +#define FONT_SIZE_ENTRIES_SUBLABEL 18 +#define FONT_SIZE_SIDEBAR 24 + +#define ANIMATION_PUSH_ENTRY_DURATION 10 +#define ANIMATION_CURSOR_DURATION 8 + +#define ENTRIES_START_Y 127 + +static float ozone_pure_white[16] = { + 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, + 1.00, 1.00, 1.00, 1.00, +}; + +enum OZONE_TEXTURE { + OZONE_TEXTURE_RETROARCH = 0, + + OZONE_TEXTURE_LAST +}; + +static char *OZONE_TEXTURES_FILES[OZONE_TEXTURE_LAST] = { + "retroarch" +}; + +enum OZONE_THEME_TEXTURES { + OZONE_THEME_TEXTURE_BUTTON_A = 0, + OZONE_THEME_TEXTURE_BUTTON_B, + OZONE_THEME_TEXTURE_SWITCH, + + OZONE_THEME_TEXTURE_LAST +}; + +static char* OZONE_THEME_TEXTURES_FILES[OZONE_THEME_TEXTURE_LAST] = { + "button_a", + "button_b", + "switch", +}; + +enum OZONE_TAB_TEXTURES { + OZONE_TAB_TEXTURE_MAIN_MENU = 0, + OZONE_TAB_TEXTURE_SETTINGS, + OZONE_TAB_TEXTURE_HISTORY, + OZONE_TAB_TEXTURE_FAVORITES, + OZONE_TAB_TEXTURE_MUSIC, + OZONE_TAB_TEXTURE_VIDEO, + OZONE_TAB_TEXTURE_IMAGE, + OZONE_TAB_TEXTURE_NETWORK, + OZONE_TAB_TEXTURE_SCAN_CONTENT, + + OZONE_TAB_TEXTURE_LAST +}; + +static char *OZONE_TAB_TEXTURES_FILES[OZONE_TAB_TEXTURE_LAST] = { + "retroarch", + "settings", + "history", + "favorites", + "music", + "video", + "image", + "netplay", + "add" +}; + +enum +{ + OZONE_SYSTEM_TAB_MAIN = 0, + OZONE_SYSTEM_TAB_SETTINGS, + OZONE_SYSTEM_TAB_HISTORY, + OZONE_SYSTEM_TAB_FAVORITES, + OZONE_SYSTEM_TAB_MUSIC, +#if defined(HAVE_FFMPEG) || defined(HAVE_MPV) + OZONE_SYSTEM_TAB_VIDEO, +#endif +#ifdef HAVE_IMAGEVIEWER + OZONE_SYSTEM_TAB_IMAGES, +#endif +#ifdef HAVE_NETWORKING + OZONE_SYSTEM_TAB_NETPLAY, +#endif + OZONE_SYSTEM_TAB_ADD, + + /* End of this enum - use the last one to determine num of possible tabs */ + OZONE_SYSTEM_TAB_LAST +}; + +static enum msg_hash_enums ozone_system_tabs_value[OZONE_SYSTEM_TAB_LAST] = { + MENU_ENUM_LABEL_VALUE_MAIN_MENU, + MENU_ENUM_LABEL_VALUE_SETTINGS_TAB, + MENU_ENUM_LABEL_VALUE_HISTORY_TAB, + MENU_ENUM_LABEL_VALUE_FAVORITES_TAB, + MENU_ENUM_LABEL_VALUE_MUSIC_TAB, +#if defined(HAVE_FFMPEG) || defined(HAVE_MPV) + MENU_ENUM_LABEL_VALUE_VIDEO_TAB, +#endif +#ifdef HAVE_IMAGEVIEWER + MENU_ENUM_LABEL_VALUE_IMAGES_TAB, +#endif +#ifdef HAVE_NETWORKING + MENU_ENUM_LABEL_VALUE_NETPLAY_TAB, +#endif + MENU_ENUM_LABEL_VALUE_ADD_TAB +}; + +static enum menu_settings_type ozone_system_tabs_type[OZONE_SYSTEM_TAB_LAST] = { + MENU_SETTINGS, + MENU_SETTINGS_TAB, + MENU_HISTORY_TAB, + MENU_FAVORITES_TAB, + MENU_MUSIC_TAB, +#if defined(HAVE_FFMPEG) || defined(HAVE_MPV) + MENU_VIDEO_TAB, +#endif +#ifdef HAVE_IMAGEVIEWER + MENU_IMAGES_TAB, +#endif +#ifdef HAVE_NETWORKING + MENU_NETPLAY_TAB, +#endif + MENU_ADD_TAB +}; + +static enum msg_hash_enums ozone_system_tabs_idx[OZONE_SYSTEM_TAB_LAST] = { + MENU_ENUM_LABEL_MAIN_MENU, + MENU_ENUM_LABEL_SETTINGS_TAB, + MENU_ENUM_LABEL_HISTORY_TAB, + MENU_ENUM_LABEL_FAVORITES_TAB, + MENU_ENUM_LABEL_MUSIC_TAB, +#if defined(HAVE_FFMPEG) || defined(HAVE_MPV) + MENU_ENUM_LABEL_VIDEO_TAB, +#endif +#ifdef HAVE_IMAGEVIEWER + MENU_ENUM_LABEL_IMAGES_TAB, +#endif +#ifdef HAVE_NETWORKING + MENU_ENUM_LABEL_NETPLAY_TAB, +#endif + MENU_ENUM_LABEL_ADD_TAB +}; + +enum +{ + OZONE_ENTRIES_ICONS_TEXTURE_MAIN_MENU = 0, + OZONE_ENTRIES_ICONS_TEXTURE_SETTINGS, + OZONE_ENTRIES_ICONS_TEXTURE_HISTORY, + OZONE_ENTRIES_ICONS_TEXTURE_FAVORITES, + OZONE_ENTRIES_ICONS_TEXTURE_MUSICS, +#if defined(HAVE_FFMPEG) || defined(HAVE_MPV) + OZONE_ENTRIES_ICONS_TEXTURE_MOVIES, +#endif +#ifdef HAVE_NETWORKING + OZONE_ENTRIES_ICONS_TEXTURE_NETPLAY, + OZONE_ENTRIES_ICONS_TEXTURE_ROOM, + OZONE_ENTRIES_ICONS_TEXTURE_ROOM_LAN, + OZONE_ENTRIES_ICONS_TEXTURE_ROOM_RELAY, +#endif +#ifdef HAVE_IMAGEVIEWER + OZONE_ENTRIES_ICONS_TEXTURE_IMAGES, +#endif + OZONE_ENTRIES_ICONS_TEXTURE_SETTING, + OZONE_ENTRIES_ICONS_TEXTURE_SUBSETTING, + OZONE_ENTRIES_ICONS_TEXTURE_ARROW, + OZONE_ENTRIES_ICONS_TEXTURE_RUN, + OZONE_ENTRIES_ICONS_TEXTURE_CLOSE, + OZONE_ENTRIES_ICONS_TEXTURE_RESUME, + OZONE_ENTRIES_ICONS_TEXTURE_SAVESTATE, + OZONE_ENTRIES_ICONS_TEXTURE_LOADSTATE, + OZONE_ENTRIES_ICONS_TEXTURE_UNDO, + OZONE_ENTRIES_ICONS_TEXTURE_CORE_INFO, + OZONE_ENTRIES_ICONS_TEXTURE_WIFI, + OZONE_ENTRIES_ICONS_TEXTURE_CORE_OPTIONS, + OZONE_ENTRIES_ICONS_TEXTURE_INPUT_REMAPPING_OPTIONS, + OZONE_ENTRIES_ICONS_TEXTURE_CHEAT_OPTIONS, + OZONE_ENTRIES_ICONS_TEXTURE_DISK_OPTIONS, + OZONE_ENTRIES_ICONS_TEXTURE_SHADER_OPTIONS, + OZONE_ENTRIES_ICONS_TEXTURE_ACHIEVEMENT_LIST, + OZONE_ENTRIES_ICONS_TEXTURE_SCREENSHOT, + OZONE_ENTRIES_ICONS_TEXTURE_RELOAD, + OZONE_ENTRIES_ICONS_TEXTURE_RENAME, + OZONE_ENTRIES_ICONS_TEXTURE_FILE, + OZONE_ENTRIES_ICONS_TEXTURE_FOLDER, + OZONE_ENTRIES_ICONS_TEXTURE_ZIP, + OZONE_ENTRIES_ICONS_TEXTURE_FAVORITE, + OZONE_ENTRIES_ICONS_TEXTURE_ADD_FAVORITE, + OZONE_ENTRIES_ICONS_TEXTURE_MUSIC, + OZONE_ENTRIES_ICONS_TEXTURE_IMAGE, + OZONE_ENTRIES_ICONS_TEXTURE_MOVIE, + OZONE_ENTRIES_ICONS_TEXTURE_CORE, + OZONE_ENTRIES_ICONS_TEXTURE_RDB, + OZONE_ENTRIES_ICONS_TEXTURE_CURSOR, + OZONE_ENTRIES_ICONS_TEXTURE_SWITCH_ON, + OZONE_ENTRIES_ICONS_TEXTURE_SWITCH_OFF, + OZONE_ENTRIES_ICONS_TEXTURE_CLOCK, + OZONE_ENTRIES_ICONS_TEXTURE_BATTERY_FULL, + OZONE_ENTRIES_ICONS_TEXTURE_BATTERY_CHARGING, + OZONE_ENTRIES_ICONS_TEXTURE_POINTER, + OZONE_ENTRIES_ICONS_TEXTURE_ADD, + OZONE_ENTRIES_ICONS_TEXTURE_KEY, + OZONE_ENTRIES_ICONS_TEXTURE_KEY_HOVER, + OZONE_ENTRIES_ICONS_TEXTURE_DIALOG_SLICE, + OZONE_ENTRIES_ICONS_TEXTURE_ACHIEVEMENTS, + OZONE_ENTRIES_ICONS_TEXTURE_AUDIO, + OZONE_ENTRIES_ICONS_TEXTURE_EXIT, + OZONE_ENTRIES_ICONS_TEXTURE_FRAMESKIP, + OZONE_ENTRIES_ICONS_TEXTURE_INFO, + OZONE_ENTRIES_ICONS_TEXTURE_HELP, + OZONE_ENTRIES_ICONS_TEXTURE_NETWORK, + OZONE_ENTRIES_ICONS_TEXTURE_POWER, + OZONE_ENTRIES_ICONS_TEXTURE_SAVING, + OZONE_ENTRIES_ICONS_TEXTURE_UPDATER, + OZONE_ENTRIES_ICONS_TEXTURE_VIDEO, + OZONE_ENTRIES_ICONS_TEXTURE_RECORD, + OZONE_ENTRIES_ICONS_TEXTURE_INPUT, + OZONE_ENTRIES_ICONS_TEXTURE_MIXER, + OZONE_ENTRIES_ICONS_TEXTURE_LOG, + OZONE_ENTRIES_ICONS_TEXTURE_OSD, + OZONE_ENTRIES_ICONS_TEXTURE_UI, + OZONE_ENTRIES_ICONS_TEXTURE_USER, + OZONE_ENTRIES_ICONS_TEXTURE_PRIVACY, + OZONE_ENTRIES_ICONS_TEXTURE_LATENCY, + OZONE_ENTRIES_ICONS_TEXTURE_DRIVERS, + OZONE_ENTRIES_ICONS_TEXTURE_PLAYLIST, + OZONE_ENTRIES_ICONS_TEXTURE_QUICKMENU, + OZONE_ENTRIES_ICONS_TEXTURE_REWIND, + OZONE_ENTRIES_ICONS_TEXTURE_OVERLAY, + OZONE_ENTRIES_ICONS_TEXTURE_OVERRIDE, + OZONE_ENTRIES_ICONS_TEXTURE_NOTIFICATIONS, + OZONE_ENTRIES_ICONS_TEXTURE_STREAM, + OZONE_ENTRIES_ICONS_TEXTURE_LAST +}; + +static unsigned ozone_system_tabs_icons[OZONE_SYSTEM_TAB_LAST] = { + OZONE_TAB_TEXTURE_MAIN_MENU, + OZONE_TAB_TEXTURE_SETTINGS, + OZONE_TAB_TEXTURE_HISTORY, + OZONE_TAB_TEXTURE_FAVORITES, + OZONE_TAB_TEXTURE_MUSIC, +#if defined(HAVE_FFMPEG) || defined(HAVE_MPV) + OZONE_TAB_TEXTURE_VIDEO, +#endif +#ifdef HAVE_IMAGEVIEWER + OZONE_TAB_TEXTURE_IMAGE, +#endif +#ifdef HAVE_NETWORKING + OZONE_TAB_TEXTURE_NETWORK, +#endif + OZONE_TAB_TEXTURE_SCAN_CONTENT +}; + +#define HEX_R(hex) ((hex >> 16) & 0xFF) * (1.0f / 255.0f) +#define HEX_G(hex) ((hex >> 8 ) & 0xFF) * (1.0f / 255.0f) +#define HEX_B(hex) ((hex >> 0 ) & 0xFF) * (1.0f / 255.0f) + +#define COLOR_HEX_TO_FLOAT(hex, alpha) { \ + HEX_R(hex), HEX_G(hex), HEX_B(hex), alpha, \ + HEX_R(hex), HEX_G(hex), HEX_B(hex), alpha, \ + HEX_R(hex), HEX_G(hex), HEX_B(hex), alpha, \ + HEX_R(hex), HEX_G(hex), HEX_B(hex), alpha \ +} + +#define COLOR_BACKGROUND(hex) hex, HEX_R(hex), HEX_G(hex), HEX_B(hex) + +static float ozone_sidebar_background_light[16] = { + 0.94, 0.94, 0.94, 1.00, + 0.94, 0.94, 0.94, 1.00, + 0.94, 0.94, 0.94, 1.00, + 0.94, 0.94, 0.94, 1.00, +}; + +static float ozone_sidebar_gradient_top_light[16] = { + 0.94, 0.94, 0.94, 1.00, + 0.94, 0.94, 0.94, 1.00, + 0.922, 0.922, 0.922, 1.00, + 0.922, 0.922, 0.922, 1.00, +}; + +static float ozone_sidebar_gradient_bottom_light[16] = { + 0.922, 0.922, 0.922, 1.00, + 0.922, 0.922, 0.922, 1.00, + 0.94, 0.94, 0.94, 1.00, + 0.94, 0.94, 0.94, 1.00, +}; + +static float ozone_sidebar_background_dark[16] = { + 0.2, 0.2, 0.2, 1.00, + 0.2, 0.2, 0.2, 1.00, + 0.2, 0.2, 0.2, 1.00, + 0.2, 0.2, 0.2, 1.00, +}; + +static float ozone_sidebar_gradient_top_dark[16] = { + 0.2, 0.2, 0.2, 1.00, + 0.2, 0.2, 0.2, 1.00, + 0.18, 0.18, 0.18, 1.00, + 0.18, 0.18, 0.18, 1.00, +}; + +static float ozone_sidebar_gradient_bottom_dark[16] = { + 0.18, 0.18, 0.18, 1.00, + 0.18, 0.18, 0.18, 1.00, + 0.2, 0.2, 0.2, 1.00, + 0.2, 0.2, 0.2, 1.00, +}; + +typedef struct ozone_theme +{ + //Background color + uint32_t background_rgb; + float background_r; + float background_g; + float background_b; + + //Float colors for quads and icons + float header_footer_separator[16]; + float text[16]; + float selection[16]; + float selection_border[16]; + float entries_border[16]; + float entries_icon[16]; + float text_selected[16]; + + //RGBA colors for text + uint32_t text_rgba; + uint32_t text_selected_rgba; + uint32_t text_sublabel_rgba; + + //Sidebar color + float *sidebar_background; + float *sidebar_top_gradient; + float *sidebar_bottom_gradient; + + const char *name; +} ozone_theme_t; + +ozone_theme_t ozone_theme_light = { + COLOR_BACKGROUND(0xEBEBEB), + + COLOR_HEX_TO_FLOAT(0x2B2B2B, 1.00), + COLOR_HEX_TO_FLOAT(0x333333, 1.00), + COLOR_HEX_TO_FLOAT(0xFFFFFF, 1.00), + COLOR_HEX_TO_FLOAT(0x10BEC5, 1.00), + COLOR_HEX_TO_FLOAT(0xCDCDCD, 1.00), + COLOR_HEX_TO_FLOAT(0x333333, 1.00), + COLOR_HEX_TO_FLOAT(0x374CFF, 1.00), + + 0x333333FF, + 0x374CFFFF, + 0x878787FF, + + ozone_sidebar_background_light, + ozone_sidebar_gradient_top_light, + ozone_sidebar_gradient_bottom_light, + + "light" +}; + +ozone_theme_t ozone_theme_dark = { + COLOR_BACKGROUND(0x2D2D2D), + + COLOR_HEX_TO_FLOAT(0xFFFFFF, 1.00), + COLOR_HEX_TO_FLOAT(0xFFFFFF, 1.00), + COLOR_HEX_TO_FLOAT(0x212227, 1.00), + COLOR_HEX_TO_FLOAT(0x2DA3CB, 1.00), + COLOR_HEX_TO_FLOAT(0x51514F, 1.00), + COLOR_HEX_TO_FLOAT(0xFFFFFF, 1.00), + COLOR_HEX_TO_FLOAT(0x00D9AE, 1.00), + + 0xFFFFFFFF, + 0x00FFC5FF, + 0x9F9FA1FF, + + ozone_sidebar_background_dark, + ozone_sidebar_gradient_top_dark, + ozone_sidebar_gradient_bottom_dark, + + "dark" +}; + +static ozone_theme_t *ozone_default_theme = &ozone_theme_light; + +typedef struct ozone_handle +{ + uint64_t frame_count; + + struct + { + font_data_t *footer; + font_data_t *title; + font_data_t *time; + font_data_t *entries_label; + font_data_t *entries_sublabel; + font_data_t *sidebar; + } fonts; + + struct + { + video_font_raster_block_t footer; + video_font_raster_block_t title; + video_font_raster_block_t time; + video_font_raster_block_t entries_label; + video_font_raster_block_t entries_sublabel; + video_font_raster_block_t sidebar; + } raster_blocks; + + menu_texture_item textures[OZONE_THEME_TEXTURE_LAST]; + menu_texture_item theme_textures[OZONE_THEME_TEXTURE_LAST]; + menu_texture_item icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_LAST]; + menu_texture_item tab_textures[OZONE_TAB_TEXTURE_LAST]; + + char title[PATH_MAX_LENGTH]; + + char assets_path[PATH_MAX_LENGTH]; + char png_path[PATH_MAX_LENGTH]; + char icons_path[PATH_MAX_LENGTH]; + char tab_path[PATH_MAX_LENGTH]; + char theme_path[PATH_MAX_LENGTH]; + + uint8_t system_tab_end; + uint8_t tabs[OZONE_SYSTEM_TAB_LAST]; + + size_t categories_selection_ptr; //active tab id + size_t categories_active_idx_old; + + bool cursor_in_sidebar; + bool cursor_in_sidebar_old; + + struct + { + float cursor_alpha; + float scroll_y; + + float list_alpha; + } animations; + + bool fade_direction; //false = left to right, true = right to left + + size_t selection; //currently selected entry + size_t selection_old; //previously selected entry (for fancy animation) + size_t selection_old_list; + + unsigned entries_height; + + int depth; + + bool draw_sidebar; + float sidebar_offset; + + unsigned title_font_glyph_width; + unsigned entry_font_glyph_width; + + ozone_theme_t *theme; + + struct { + float selection_border[16]; + float selection[16]; + float entries_border[16]; + float entries_icon[16]; + } theme_dynamic; + + bool need_compute; + + file_list_t *selection_buf_old; + + unsigned action; + bool draw_old_list; + float scroll_old; + + bool want_horizontal_animation; +} ozone_handle_t; + +/* If you change this struct, also + change ozone_alloc_node and + ozone_copy_node */ +typedef struct ozone_node +{ + unsigned height; + unsigned position_y; +} ozone_node_t; + +static const char *ozone_entries_icon_texture_path(ozone_handle_t *ozone, unsigned id) +{ + char *icon_name; + + switch (id) + { + case OZONE_ENTRIES_ICONS_TEXTURE_MAIN_MENU: +#if defined(HAVE_LAKKA) + icon_name = "lakka.png"; + break; +#else + icon_name = "retroarch.png"; + break; +#endif + case OZONE_ENTRIES_ICONS_TEXTURE_SETTINGS: + icon_name = "settings.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_HISTORY: + icon_name = "history.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_FAVORITES: + icon_name = "favorites.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_ADD_FAVORITE: + icon_name = "add-favorite.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_MUSICS: + icon_name = "musics.png"; + break; +#if defined(HAVE_FFMPEG) || defined(HAVE_MPV) + case OZONE_ENTRIES_ICONS_TEXTURE_MOVIES: + icon_name = "movies.png"; + break; +#endif +#ifdef HAVE_IMAGEVIEWER + case OZONE_ENTRIES_ICONS_TEXTURE_IMAGES: + icon_name = "images.png"; + break; +#endif + case OZONE_ENTRIES_ICONS_TEXTURE_SETTING: + icon_name = "setting.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_SUBSETTING: + icon_name = "subsetting.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_ARROW: + icon_name = "arrow.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_RUN: + icon_name = "run.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_CLOSE: + icon_name = "close.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_RESUME: + icon_name = "resume.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_CLOCK: + icon_name = "clock.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_BATTERY_FULL: + icon_name = "battery-full.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_BATTERY_CHARGING: + icon_name = "battery-charging.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_POINTER: + icon_name = "pointer.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_SAVESTATE: + icon_name = "savestate.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_LOADSTATE: + icon_name = "loadstate.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_UNDO: + icon_name = "undo.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_CORE_INFO: + icon_name = "core-infos.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_WIFI: + icon_name = "wifi.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_CORE_OPTIONS: + icon_name = "core-options.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_INPUT_REMAPPING_OPTIONS: + icon_name = "core-input-remapping-options.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_CHEAT_OPTIONS: + icon_name = "core-cheat-options.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_DISK_OPTIONS: + icon_name = "core-disk-options.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_SHADER_OPTIONS: + icon_name = "core-shader-options.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_ACHIEVEMENT_LIST: + icon_name = "achievement-list.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_SCREENSHOT: + icon_name = "screenshot.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_RELOAD: + icon_name = "reload.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_RENAME: + icon_name = "rename.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_FILE: + icon_name = "file.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_FOLDER: + icon_name = "folder.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_ZIP: + icon_name = "zip.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_MUSIC: + icon_name = "music.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_FAVORITE: + icon_name = "favorites-content.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_IMAGE: + icon_name = "image.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_MOVIE: + icon_name = "movie.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_CORE: + icon_name = "core.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_RDB: + icon_name = "database.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_CURSOR: + icon_name = "cursor.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_SWITCH_ON: + icon_name = "on.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_SWITCH_OFF: + icon_name = "off.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_ADD: + icon_name = "add.png"; + break; +#ifdef HAVE_NETWORKING + case OZONE_ENTRIES_ICONS_TEXTURE_NETPLAY: + icon_name = "netplay.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_ROOM: + icon_name = "menu_room.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_ROOM_LAN: + icon_name = "menu_room_lan.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_ROOM_RELAY: + icon_name = "menu_room_relay.png"; + break; +#endif + case OZONE_ENTRIES_ICONS_TEXTURE_KEY: + icon_name = "key.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_KEY_HOVER: + icon_name = "key-hover.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_DIALOG_SLICE: + icon_name = "dialog-slice.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_ACHIEVEMENTS: + icon_name = "menu_achievements.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_AUDIO: + icon_name = "menu_audio.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_DRIVERS: + icon_name = "menu_drivers.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_EXIT: + icon_name = "menu_exit.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_FRAMESKIP: + icon_name = "menu_frameskip.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_HELP: + icon_name = "menu_help.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_INFO: + icon_name = "menu_info.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_INPUT: + icon_name = "Libretro - Pad.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_LATENCY: + icon_name = "menu_latency.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_NETWORK: + icon_name = "menu_network.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_POWER: + icon_name = "menu_power.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_RECORD: + icon_name = "menu_record.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_SAVING: + icon_name = "menu_saving.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_UPDATER: + icon_name = "menu_updater.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_VIDEO: + icon_name = "menu_video.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_MIXER: + icon_name = "menu_mixer.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_LOG: + icon_name = "menu_log.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_OSD: + icon_name = "menu_osd.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_UI: + icon_name = "menu_ui.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_USER: + icon_name = "menu_user.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_PRIVACY: + icon_name = "menu_privacy.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_PLAYLIST: + icon_name = "menu_playlist.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_QUICKMENU: + icon_name = "menu_quickmenu.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_REWIND: + icon_name = "menu_rewind.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_OVERLAY: + icon_name = "menu_overlay.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_OVERRIDE: + icon_name = "menu_override.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_NOTIFICATIONS: + icon_name = "menu_notifications.png"; + break; + case OZONE_ENTRIES_ICONS_TEXTURE_STREAM: + icon_name = "menu_stream.png"; + break; + } + + char icon_fullpath[255]; + + fill_pathname_join( + icon_fullpath, + ozone->icons_path, + icon_name, + sizeof(icon_fullpath) + ); + + if (!filestream_exists(icon_fullpath)) + { + return "subsetting.png"; + } + else + return icon_name; +} + +static unsigned ozone_entries_icon_get_id(ozone_handle_t *ozone, + enum msg_hash_enums enum_idx, unsigned type, bool active) +{ + switch (enum_idx) + { + case MENU_ENUM_LABEL_CORE_OPTIONS: + case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE: + return OZONE_ENTRIES_ICONS_TEXTURE_CORE_OPTIONS; + case MENU_ENUM_LABEL_ADD_TO_FAVORITES: + case MENU_ENUM_LABEL_ADD_TO_FAVORITES_PLAYLIST: + return OZONE_ENTRIES_ICONS_TEXTURE_ADD_FAVORITE; + case MENU_ENUM_LABEL_RESET_CORE_ASSOCIATION: + return OZONE_ENTRIES_ICONS_TEXTURE_UNDO; + case MENU_ENUM_LABEL_CORE_INPUT_REMAPPING_OPTIONS: + return OZONE_ENTRIES_ICONS_TEXTURE_INPUT_REMAPPING_OPTIONS; + case MENU_ENUM_LABEL_CORE_CHEAT_OPTIONS: + return OZONE_ENTRIES_ICONS_TEXTURE_CHEAT_OPTIONS; + case MENU_ENUM_LABEL_DISK_OPTIONS: + return OZONE_ENTRIES_ICONS_TEXTURE_DISK_OPTIONS; + case MENU_ENUM_LABEL_SHADER_OPTIONS: + return OZONE_ENTRIES_ICONS_TEXTURE_SHADER_OPTIONS; + case MENU_ENUM_LABEL_ACHIEVEMENT_LIST: + return OZONE_ENTRIES_ICONS_TEXTURE_ACHIEVEMENT_LIST; + case MENU_ENUM_LABEL_ACHIEVEMENT_LIST_HARDCORE: + return OZONE_ENTRIES_ICONS_TEXTURE_ACHIEVEMENT_LIST; + case MENU_ENUM_LABEL_SAVE_STATE: + return OZONE_ENTRIES_ICONS_TEXTURE_SAVESTATE; + case MENU_ENUM_LABEL_LOAD_STATE: + return OZONE_ENTRIES_ICONS_TEXTURE_LOADSTATE; + case MENU_ENUM_LABEL_PARENT_DIRECTORY: + case MENU_ENUM_LABEL_UNDO_LOAD_STATE: + case MENU_ENUM_LABEL_UNDO_SAVE_STATE: + return OZONE_ENTRIES_ICONS_TEXTURE_UNDO; + case MENU_ENUM_LABEL_TAKE_SCREENSHOT: + return OZONE_ENTRIES_ICONS_TEXTURE_SCREENSHOT; + case MENU_ENUM_LABEL_DELETE_ENTRY: + return OZONE_ENTRIES_ICONS_TEXTURE_CLOSE; + case MENU_ENUM_LABEL_RESTART_CONTENT: + return OZONE_ENTRIES_ICONS_TEXTURE_RELOAD; + case MENU_ENUM_LABEL_RENAME_ENTRY: + return OZONE_ENTRIES_ICONS_TEXTURE_RENAME; + case MENU_ENUM_LABEL_RESUME_CONTENT: + return OZONE_ENTRIES_ICONS_TEXTURE_RESUME; + case MENU_ENUM_LABEL_FAVORITES: + case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: + return OZONE_ENTRIES_ICONS_TEXTURE_FOLDER; + case MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR: + return OZONE_ENTRIES_ICONS_TEXTURE_RDB; + + + /* Menu collection submenus*/ + case MENU_ENUM_LABEL_CONTENT_COLLECTION_LIST: + return OZONE_ENTRIES_ICONS_TEXTURE_ZIP; + case MENU_ENUM_LABEL_GOTO_FAVORITES: + return OZONE_ENTRIES_ICONS_TEXTURE_FAVORITE; + case MENU_ENUM_LABEL_GOTO_IMAGES: + return OZONE_ENTRIES_ICONS_TEXTURE_IMAGE; + case MENU_ENUM_LABEL_GOTO_VIDEO: + return OZONE_ENTRIES_ICONS_TEXTURE_MOVIE; + case MENU_ENUM_LABEL_GOTO_MUSIC: + return OZONE_ENTRIES_ICONS_TEXTURE_MUSIC; + case MENU_ENUM_LABEL_CONTENT_SETTINGS: + case MENU_ENUM_LABEL_UPDATE_ASSETS: + return OZONE_ENTRIES_ICONS_TEXTURE_QUICKMENU; + case MENU_ENUM_LABEL_START_CORE: + return OZONE_ENTRIES_ICONS_TEXTURE_RUN; + case MENU_ENUM_LABEL_CORE_LIST: + case MENU_ENUM_LABEL_CORE_SETTINGS: + case MENU_ENUM_LABEL_CORE_UPDATER_LIST: + return OZONE_ENTRIES_ICONS_TEXTURE_CORE; + case MENU_ENUM_LABEL_LOAD_CONTENT_LIST: + case MENU_ENUM_LABEL_SCAN_FILE: + return OZONE_ENTRIES_ICONS_TEXTURE_FILE; + case MENU_ENUM_LABEL_ONLINE_UPDATER: + case MENU_ENUM_LABEL_UPDATER_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_UPDATER; + case MENU_ENUM_LABEL_UPDATE_LAKKA: + return OZONE_ENTRIES_ICONS_TEXTURE_MAIN_MENU; + case MENU_ENUM_LABEL_UPDATE_CHEATS: + return OZONE_ENTRIES_ICONS_TEXTURE_CHEAT_OPTIONS; + case MENU_ENUM_LABEL_THUMBNAILS_UPDATER_LIST: + return OZONE_ENTRIES_ICONS_TEXTURE_IMAGE; + case MENU_ENUM_LABEL_UPDATE_OVERLAYS: + case MENU_ENUM_LABEL_ONSCREEN_OVERLAY_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_OVERLAY; + case MENU_ENUM_LABEL_UPDATE_CG_SHADERS: + case MENU_ENUM_LABEL_UPDATE_GLSL_SHADERS: + case MENU_ENUM_LABEL_UPDATE_SLANG_SHADERS: + return OZONE_ENTRIES_ICONS_TEXTURE_SHADER_OPTIONS; + case MENU_ENUM_LABEL_INFORMATION: + case MENU_ENUM_LABEL_INFORMATION_LIST: + case MENU_ENUM_LABEL_SYSTEM_INFORMATION: + case MENU_ENUM_LABEL_UPDATE_CORE_INFO_FILES: + return OZONE_ENTRIES_ICONS_TEXTURE_INFO; + case MENU_ENUM_LABEL_UPDATE_DATABASES: + case MENU_ENUM_LABEL_DATABASE_MANAGER_LIST: + return OZONE_ENTRIES_ICONS_TEXTURE_RDB; + case MENU_ENUM_LABEL_CURSOR_MANAGER_LIST: + return OZONE_ENTRIES_ICONS_TEXTURE_CURSOR; + case MENU_ENUM_LABEL_HELP_LIST: + case MENU_ENUM_LABEL_HELP_CONTROLS: + case MENU_ENUM_LABEL_HELP_LOADING_CONTENT: + case MENU_ENUM_LABEL_HELP_SCANNING_CONTENT: + case MENU_ENUM_LABEL_HELP_WHAT_IS_A_CORE: + case MENU_ENUM_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD: + case MENU_ENUM_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + return OZONE_ENTRIES_ICONS_TEXTURE_HELP; + case MENU_ENUM_LABEL_QUIT_RETROARCH: + return OZONE_ENTRIES_ICONS_TEXTURE_EXIT; + /* Settings icons*/ + case MENU_ENUM_LABEL_DRIVER_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_DRIVERS; + case MENU_ENUM_LABEL_VIDEO_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_VIDEO; + case MENU_ENUM_LABEL_AUDIO_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_AUDIO; + case MENU_ENUM_LABEL_AUDIO_MIXER_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_MIXER; + case MENU_ENUM_LABEL_INPUT_SETTINGS: + case MENU_ENUM_LABEL_UPDATE_AUTOCONFIG_PROFILES: + return OZONE_ENTRIES_ICONS_TEXTURE_INPUT; + case MENU_ENUM_LABEL_LATENCY_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_LATENCY; + case MENU_ENUM_LABEL_SAVING_SETTINGS: + case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE: + case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR: + case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME: + return OZONE_ENTRIES_ICONS_TEXTURE_SAVING; + case MENU_ENUM_LABEL_LOGGING_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_LOG; + case MENU_ENUM_LABEL_FRAME_THROTTLE_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_FRAMESKIP; + case MENU_ENUM_LABEL_QUICK_MENU_START_RECORDING: + case MENU_ENUM_LABEL_RECORDING_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_RECORD; + case MENU_ENUM_LABEL_QUICK_MENU_START_STREAMING: + return OZONE_ENTRIES_ICONS_TEXTURE_STREAM; + case MENU_ENUM_LABEL_QUICK_MENU_STOP_STREAMING: + case MENU_ENUM_LABEL_QUICK_MENU_STOP_RECORDING: + return OZONE_ENTRIES_ICONS_TEXTURE_CLOSE; + case MENU_ENUM_LABEL_ONSCREEN_DISPLAY_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_OSD; + case MENU_ENUM_LABEL_SHOW_WIMP: + case MENU_ENUM_LABEL_USER_INTERFACE_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_UI; +#ifdef HAVE_LAKKA_SWITCH + case MENU_ENUM_LABEL_SWITCH_GPU_PROFILE: + case MENU_ENUM_LABEL_SWITCH_CPU_PROFILE: +#endif + case MENU_ENUM_LABEL_POWER_MANAGEMENT_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_POWER; + case MENU_ENUM_LABEL_RETRO_ACHIEVEMENTS_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_ACHIEVEMENTS; + case MENU_ENUM_LABEL_NETWORK_INFORMATION: + case MENU_ENUM_LABEL_NETWORK_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_NETWORK; + case MENU_ENUM_LABEL_PLAYLIST_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_PLAYLIST; + case MENU_ENUM_LABEL_USER_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_USER; + case MENU_ENUM_LABEL_DIRECTORY_SETTINGS: + case MENU_ENUM_LABEL_SCAN_DIRECTORY: + return OZONE_ENTRIES_ICONS_TEXTURE_FOLDER; + case MENU_ENUM_LABEL_PRIVACY_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_PRIVACY; + + case MENU_ENUM_LABEL_REWIND_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_REWIND; + case MENU_ENUM_LABEL_QUICK_MENU_OVERRIDE_OPTIONS: + return OZONE_ENTRIES_ICONS_TEXTURE_OVERRIDE; + case MENU_ENUM_LABEL_ONSCREEN_NOTIFICATIONS_SETTINGS: + return OZONE_ENTRIES_ICONS_TEXTURE_NOTIFICATIONS; +#ifdef HAVE_NETWORKING + case MENU_ENUM_LABEL_NETPLAY_ENABLE_HOST: + return OZONE_ENTRIES_ICONS_TEXTURE_RUN; + case MENU_ENUM_LABEL_NETPLAY_DISCONNECT: + return OZONE_ENTRIES_ICONS_TEXTURE_CLOSE; + case MENU_ENUM_LABEL_NETPLAY_ENABLE_CLIENT: + return OZONE_ENTRIES_ICONS_TEXTURE_ROOM; + case MENU_ENUM_LABEL_NETPLAY_REFRESH_ROOMS: + return OZONE_ENTRIES_ICONS_TEXTURE_RELOAD; +#endif + default: + break; + } + + switch(type) + { + case FILE_TYPE_DIRECTORY: + return OZONE_ENTRIES_ICONS_TEXTURE_FOLDER; + case FILE_TYPE_PLAIN: + case FILE_TYPE_IN_CARCHIVE: + return OZONE_ENTRIES_ICONS_TEXTURE_FILE; + case FILE_TYPE_RPL_ENTRY: + return OZONE_ENTRIES_ICONS_TEXTURE_FILE; + case FILE_TYPE_SHADER: + case FILE_TYPE_SHADER_PRESET: + return OZONE_ENTRIES_ICONS_TEXTURE_SHADER_OPTIONS; + case FILE_TYPE_CARCHIVE: + return OZONE_ENTRIES_ICONS_TEXTURE_ZIP; + case FILE_TYPE_MUSIC: + return OZONE_ENTRIES_ICONS_TEXTURE_MUSIC; + case FILE_TYPE_IMAGE: + case FILE_TYPE_IMAGEVIEWER: + return OZONE_ENTRIES_ICONS_TEXTURE_IMAGE; + case FILE_TYPE_MOVIE: + return OZONE_ENTRIES_ICONS_TEXTURE_MOVIE; + case FILE_TYPE_CORE: + case FILE_TYPE_DIRECT_LOAD: + return OZONE_ENTRIES_ICONS_TEXTURE_CORE; + case FILE_TYPE_RDB: + return OZONE_ENTRIES_ICONS_TEXTURE_RDB; + case FILE_TYPE_CURSOR: + return OZONE_ENTRIES_ICONS_TEXTURE_CURSOR; + case FILE_TYPE_PLAYLIST_ENTRY: + case MENU_SETTING_ACTION_RUN: + return OZONE_ENTRIES_ICONS_TEXTURE_RUN; + case MENU_SETTING_ACTION_CLOSE: + return OZONE_ENTRIES_ICONS_TEXTURE_CLOSE; + case MENU_SETTING_ACTION_SAVESTATE: + return OZONE_ENTRIES_ICONS_TEXTURE_SAVESTATE; + case MENU_SETTING_ACTION_LOADSTATE: + return OZONE_ENTRIES_ICONS_TEXTURE_LOADSTATE; + case FILE_TYPE_RDB_ENTRY: + case MENU_SETTING_ACTION_CORE_INFORMATION: + return OZONE_ENTRIES_ICONS_TEXTURE_CORE_INFO; + case MENU_SETTING_ACTION_CORE_OPTIONS: + return OZONE_ENTRIES_ICONS_TEXTURE_CORE_OPTIONS; + case MENU_SETTING_ACTION_CORE_INPUT_REMAPPING_OPTIONS: + return OZONE_ENTRIES_ICONS_TEXTURE_INPUT_REMAPPING_OPTIONS; + case MENU_SETTING_ACTION_CORE_CHEAT_OPTIONS: + return OZONE_ENTRIES_ICONS_TEXTURE_CHEAT_OPTIONS; + case MENU_SETTING_ACTION_CORE_DISK_OPTIONS: + return OZONE_ENTRIES_ICONS_TEXTURE_DISK_OPTIONS; + case MENU_SETTING_ACTION_CORE_SHADER_OPTIONS: + return OZONE_ENTRIES_ICONS_TEXTURE_SHADER_OPTIONS; + case MENU_SETTING_ACTION_SCREENSHOT: + return OZONE_ENTRIES_ICONS_TEXTURE_SCREENSHOT; + case MENU_SETTING_ACTION_DELETE_ENTRY: + return OZONE_ENTRIES_ICONS_TEXTURE_CLOSE; + case MENU_SETTING_ACTION_RESET: + return OZONE_ENTRIES_ICONS_TEXTURE_RELOAD; + case MENU_SETTING_ACTION_PAUSE_ACHIEVEMENTS: + return OZONE_ENTRIES_ICONS_TEXTURE_RESUME; + case MENU_SETTING_ACTION_RESUME_ACHIEVEMENTS: + return OZONE_ENTRIES_ICONS_TEXTURE_RUN; + + case MENU_SETTING_GROUP: +#ifdef HAVE_LAKKA_SWITCH + case MENU_SET_SWITCH_BRIGHTNESS: +#endif + return OZONE_ENTRIES_ICONS_TEXTURE_SETTING; + case MENU_INFO_MESSAGE: + return OZONE_ENTRIES_ICONS_TEXTURE_CORE_INFO; + case MENU_WIFI: + return OZONE_ENTRIES_ICONS_TEXTURE_WIFI; +#ifdef HAVE_NETWORKING + case MENU_ROOM: + return OZONE_ENTRIES_ICONS_TEXTURE_ROOM; + case MENU_ROOM_LAN: + return OZONE_ENTRIES_ICONS_TEXTURE_ROOM_LAN; + case MENU_ROOM_RELAY: + return OZONE_ENTRIES_ICONS_TEXTURE_ROOM_RELAY; +#endif + case MENU_SETTING_ACTION: + if (ozone->depth <= 3) + return OZONE_ENTRIES_ICONS_TEXTURE_SETTING; + default: + return OZONE_ENTRIES_ICONS_TEXTURE_SUBSETTING; + } + +#ifdef HAVE_CHEEVOS + if ( + (type >= MENU_SETTINGS_CHEEVOS_START) && + (type < MENU_SETTINGS_NETPLAY_ROOMS_START) + ) + { + int new_id = type - MENU_SETTINGS_CHEEVOS_START; + if (get_badge_texture(new_id) != 0) + return get_badge_texture(new_id); + /* Should be replaced with placeholder badge icon. */ + return OZONE_ENTRIES_ICONS_TEXTURE_SUBSETTING; + } +#endif + + return OZONE_ENTRIES_ICONS_TEXTURE_SUBSETTING; +} + +static void ozone_draw_text( + video_frame_info_t *video_info, + ozone_handle_t *ozone, + const char *str, float x, + float y, + enum text_alignment text_align, + unsigned width, unsigned height, font_data_t* font, + uint32_t color) +{ + if ((color & 0x000000FF) == 0) + return; + + menu_display_draw_text(font, str, x, y, + width, height, color, text_align, 1.0f, + false, + 1.0); +} + +static void ozone_set_theme(ozone_handle_t *ozone, ozone_theme_t *theme) +{ + ozone->theme = theme; + + memcpy(ozone->theme_dynamic.selection_border, ozone->theme->selection_border, sizeof(ozone->theme_dynamic.selection_border)); + memcpy(ozone->theme_dynamic.selection, ozone->theme->selection, sizeof(ozone->theme_dynamic.selection)); + memcpy(ozone->theme_dynamic.entries_border, ozone->theme->entries_border, sizeof(ozone->theme_dynamic.entries_border)); + memcpy(ozone->theme_dynamic.entries_icon, ozone->theme->entries_icon, sizeof(ozone->theme_dynamic.entries_icon)); +} + +static void *ozone_init(void **userdata, bool video_is_threaded) +{ + unsigned width, height; + ozone_handle_t *ozone = NULL; + settings_t *settings = config_get_ptr(); + menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); + + if (!menu) + goto error; + + if (!menu_display_init_first_driver(video_is_threaded)) + goto error; + + video_driver_get_size(&width, &height); + + ozone = (ozone_handle_t*)calloc(1, sizeof(ozone_handle_t)); + + if (!ozone) + goto error; + + *userdata = ozone; + ozone->selection_buf_old = (file_list_t*)calloc(1, sizeof(file_list_t)); + ozone->want_horizontal_animation = false; + + ozone->system_tab_end = 0; + ozone->tabs[ozone->system_tab_end] = OZONE_SYSTEM_TAB_MAIN; + if (settings->bools.menu_content_show_settings && !settings->bools.kiosk_mode_enable) + ozone->tabs[++ozone->system_tab_end] = OZONE_SYSTEM_TAB_SETTINGS; + if (settings->bools.menu_content_show_favorites) + ozone->tabs[++ozone->system_tab_end] = OZONE_SYSTEM_TAB_FAVORITES; + if (settings->bools.menu_content_show_history) + ozone->tabs[++ozone->system_tab_end] = OZONE_SYSTEM_TAB_HISTORY; +#ifdef HAVE_IMAGEVIEWERe + if (settings->bools.menu_content_show_images) + ozone->tabs[++ozone->system_tab_end] = OZONE_SYSTEM_TAB_IMAGES; +#endif + if (settings->bools.menu_content_show_music) + ozone->tabs[++ozone->system_tab_end] = OZONE_SYSTEM_TAB_MUSIC; +#if defined(HAVE_FFMPEG) || defined(HAVE_MPV) + if (settings->bools.menu_content_show_video) + ozone->tabs[++ozone->system_tab_end] = OZONE_SYSTEM_TAB_VIDEO; +#endif +#ifdef HAVE_NETWORKING + if (settings->bools.menu_content_show_netplay) + ozone->tabs[++ozone->system_tab_end] = OZONE_SYSTEM_TAB_NETPLAY; +#endif +#ifdef HAVE_LIBRETRODB + if (settings->bools.menu_content_show_add && !settings->bools.kiosk_mode_enable) + ozone->tabs[++ozone->system_tab_end] = OZONE_SYSTEM_TAB_ADD; +#endif + + menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + + menu_display_set_width(width); + menu_display_set_height(height); + + menu_display_allocate_white_texture(); + + //Theme + //TODO Add theme override in settings +#ifdef HAVE_LIBNX + ColorSetId theme; + Result rc = setsysInitialize(); + + if (R_SUCCEEDED(rc)) + { + setsysGetColorSetId(&theme); + ozone_set_theme(ozone, theme == ColorSetId_Dark ? &ozone_theme_dark : &ozone_theme_light); + setsysExit(); + } + else + { + ozone_set_theme(ozone, ozone_default_theme); + } +#else + ozone_set_theme(ozone, ozone_default_theme); +#endif + + ozone->need_compute = false; + ozone->animations.scroll_y = 0.0f; + + //Assets path + fill_pathname_join( + ozone->assets_path, + settings->paths.directory_assets, + "ozone", + sizeof(ozone->assets_path) + ); + + //PNG path + fill_pathname_join( + ozone->png_path, + ozone->assets_path, + "png", + sizeof(ozone->png_path) + ); + + //Icons path + fill_pathname_join( + ozone->icons_path, + ozone->png_path, + "icons", + sizeof(ozone->icons_path) + ); + + //Sidebar path + fill_pathname_join( + ozone->tab_path, + ozone->png_path, + "sidebar", + sizeof(ozone->tab_path) + ); + + //Theme path + fill_pathname_join( + ozone->theme_path, + ozone->png_path, + ozone->theme->name, + sizeof(ozone->theme_path) + ); + + return menu; + +error: + if (menu) + free(menu); + + return NULL; +} + +static void ozone_free_node(ozone_node_t *node) +{ + if (!node) + return; + + free(node); +} + +static void ozone_free_list_nodes(file_list_t *list, bool actiondata) +{ + unsigned i, size = (unsigned)file_list_get_size(list); + + for (i = 0; i < size; ++i) + { + ozone_free_node((ozone_node_t*)file_list_get_userdata_at_offset(list, i)); + + /* file_list_set_userdata() doesn't accept NULL */ + list->list[i].userdata = NULL; + + if (actiondata) + file_list_free_actiondata(list, i); + } +} + +static void ozone_free(void *data) +{ + ozone_handle_t *ozone = (ozone_handle_t*) data; + + if (ozone) + { + video_coord_array_free(&ozone->raster_blocks.footer.carr); + video_coord_array_free(&ozone->raster_blocks.title.carr); + video_coord_array_free(&ozone->raster_blocks.time.carr); + video_coord_array_free(&ozone->raster_blocks.entries_label.carr); + video_coord_array_free(&ozone->raster_blocks.entries_sublabel.carr); + video_coord_array_free(&ozone->raster_blocks.sidebar.carr); + + font_driver_bind_block(NULL, NULL); + + if (ozone->selection_buf_old) + { + ozone_free_list_nodes(ozone->selection_buf_old, false); + file_list_free(ozone->selection_buf_old); + } + } +} + +static void ozone_context_reset(void *data, bool is_threaded) +{ + ozone_handle_t *ozone = (ozone_handle_t*) data; + + if (ozone) + { + //Fonts init + char font_path[PATH_MAX_LENGTH]; + + fill_pathname_join(font_path, ozone->assets_path, "Inter-UI-Regular.ttf", sizeof(font_path)); + ozone->fonts.footer = menu_display_font_file(font_path, FONT_SIZE_FOOTER, is_threaded); + ozone->fonts.entries_label = menu_display_font_file(font_path, FONT_SIZE_ENTRIES_LABEL, is_threaded); + ozone->fonts.entries_sublabel = menu_display_font_file(font_path, FONT_SIZE_ENTRIES_SUBLABEL, is_threaded); + ozone->fonts.time = menu_display_font_file(font_path, FONT_SIZE_TIME, is_threaded); + ozone->fonts.sidebar = menu_display_font_file(font_path, FONT_SIZE_SIDEBAR, is_threaded); + + fill_pathname_join(font_path, ozone->assets_path, "Inter-UI-Bold.ttf", sizeof(font_path)); + ozone->fonts.title = menu_display_font_file(font_path, FONT_SIZE_TITLE, is_threaded); + + ozone->title_font_glyph_width = font_driver_get_message_width(ozone->fonts.title, "a", 1, 1); + ozone->entry_font_glyph_width = font_driver_get_message_width(ozone->fonts.entries_label, "a", 1, 1); + + //Textures init + for (int i = 0; i < OZONE_TEXTURE_LAST; i++) + { + char filename[PATH_MAX_LENGTH]; + strcpy(filename, OZONE_TEXTURES_FILES[i]); + strcat(filename, ".png"); + + menu_display_reset_textures_list(filename, ozone->png_path, &ozone->textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); + } + + //Sidebar textures + for (int i = 0; i < OZONE_TAB_TEXTURE_LAST; i++) + { + char filename[PATH_MAX_LENGTH]; + strcpy(filename, OZONE_TAB_TEXTURES_FILES[i]); + strcat(filename, ".png"); + + menu_display_reset_textures_list(filename, ozone->tab_path, &ozone->tab_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); + } + + //Theme textures + for (int i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) + { + char filename[PATH_MAX_LENGTH]; + strcpy(filename, OZONE_THEME_TEXTURES_FILES[i]); + strcat(filename, ".png"); + + menu_display_reset_textures_list(filename, ozone->theme_path, &ozone->theme_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); + } + + //Icons textures init + for (int i = 0; i < OZONE_ENTRIES_ICONS_TEXTURE_LAST; i++) + { + menu_display_reset_textures_list(ozone_entries_icon_texture_path(ozone, i), ozone->icons_path, &ozone->icons_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); + } + + menu_display_allocate_white_texture(); + + //State reset + ozone->frame_count = 0; + ozone->fade_direction = false; + ozone->cursor_in_sidebar = false; + ozone->cursor_in_sidebar_old = false; + ozone->draw_sidebar = true; + ozone->sidebar_offset = 0; + ozone->draw_old_list = false; + + //Animations + ozone->animations.cursor_alpha = 1.0f; + ozone->animations.scroll_y = 0.0f; + ozone->animations.list_alpha = 1.0f; + } +} + +static void ozone_collapse_end(void *userdata) +{ + ozone_handle_t *ozone = (ozone_handle_t*) userdata; + ozone->draw_sidebar = false; +} + +static void ozone_context_destroy(void *data) +{ + ozone_handle_t *ozone = (ozone_handle_t*) data; + + if (!ozone) + return; + + //Theme + for (int i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) + { + video_driver_texture_unload(&ozone->theme_textures[i]); + } + + //Icons + for (int i = 0; i < OZONE_ENTRIES_ICONS_TEXTURE_LAST; i++) + { + video_driver_texture_unload(&ozone->icons_textures[i]); + } + + //Textures + for (int i = 0; i < OZONE_TEXTURE_LAST; i++) + { + video_driver_texture_unload(&ozone->textures[i]); + } + + //Icons + for (int i = 0; i < OZONE_TAB_TEXTURE_LAST; i++) + { + video_driver_texture_unload(&ozone->tab_textures[i]); + } + + video_driver_texture_unload(&menu_display_white_texture); + + menu_display_font_free(ozone->fonts.footer); + menu_display_font_free(ozone->fonts.title); + menu_display_font_free(ozone->fonts.time); + menu_display_font_free(ozone->fonts.entries_label); + menu_display_font_free(ozone->fonts.entries_sublabel); + menu_display_font_free(ozone->fonts.sidebar); + + ozone->fonts.footer = NULL; + ozone->fonts.title = NULL; + ozone->fonts.time = NULL; + ozone->fonts.entries_label = NULL; + ozone->fonts.entries_sublabel = NULL; + ozone->fonts.sidebar = NULL; +} + +static void *ozone_list_get_entry(void *data, + enum menu_list_type type, unsigned i) +{ + size_t list_size = 0; + + switch (type) + { + case MENU_LIST_PLAIN: + { + file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(0); + list_size = menu_entries_get_stack_size(0); + if (i < list_size) + return (void*)&menu_stack->list[i]; + } + break; + case MENU_LIST_HORIZONTAL: + //TODO Sidebar + break; + default: + break; + } + + return NULL; +} + +static unsigned ozone_get_system_tab(ozone_handle_t *ozone, unsigned i) +{ + if (i <= ozone->system_tab_end) + { + return ozone->tabs[i]; + } + return UINT_MAX; +} + +static size_t ozone_list_get_size(void *data, enum menu_list_type type) +{ + ozone_handle_t *ozone = (ozone_handle_t*) data; + + if (!ozone) + return 0; + + switch (type) + { + case MENU_LIST_PLAIN: + return menu_entries_get_stack_size(0); + case MENU_LIST_HORIZONTAL: + //TODO Return horizontal list size + return 0; + case MENU_LIST_TABS: + return ozone->system_tab_end; + } + + return 0; +} + +static int ozone_list_push(void *data, void *userdata, + menu_displaylist_info_t *info, unsigned type) +{ + menu_displaylist_ctx_parse_entry_t entry; + int ret = -1; + unsigned i = 0; + core_info_list_t *list = NULL; + menu_handle_t *menu = (menu_handle_t*)data; + + switch (type) + { + case DISPLAYLIST_LOAD_CONTENT_LIST: + { + settings_t *settings = config_get_ptr(); + + menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); + + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FAVORITES), + msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES), + MENU_ENUM_LABEL_FAVORITES, + MENU_SETTING_ACTION, 0, 0); + + core_info_get_list(&list); + if (core_info_list_num_info_files(list)) + { + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST), + msg_hash_to_str(MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST), + MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST, + MENU_SETTING_ACTION, 0, 0); + } + +#ifdef HAVE_LIBRETRODB + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST), + msg_hash_to_str(MENU_ENUM_LABEL_CONTENT_COLLECTION_LIST), + MENU_ENUM_LABEL_CONTENT_COLLECTION_LIST, + MENU_SETTING_ACTION, 0, 0); +#endif + + if (frontend_driver_parse_drive_list(info->list, true) != 0) + menu_entries_append_enum(info->list, "/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); + + if (!settings->bools.kiosk_mode_enable) + { + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS), + msg_hash_to_str(MENU_ENUM_LABEL_MENU_FILE_BROWSER_SETTINGS), + MENU_ENUM_LABEL_MENU_FILE_BROWSER_SETTINGS, + MENU_SETTING_ACTION, 0, 0); + } + + info->need_push = true; + info->need_refresh = true; + ret = 0; + } + break; + case DISPLAYLIST_MAIN_MENU: + { + settings_t *settings = config_get_ptr(); + rarch_system_info_t *system = runloop_get_system_info(); + menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); + + entry.data = menu; + entry.info = info; + entry.parse_type = PARSE_ACTION; + entry.add_empty_entry = false; + + if (!string_is_empty(system->info.library_name) && + !string_is_equal(system->info.library_name, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE))) + { + entry.enum_idx = MENU_ENUM_LABEL_CONTENT_SETTINGS; + menu_displaylist_setting(&entry); + } + + if (system->load_no_content) + { + entry.enum_idx = MENU_ENUM_LABEL_START_CORE; + menu_displaylist_setting(&entry); + } + +#ifndef HAVE_DYNAMIC + if (frontend_driver_has_fork()) +#endif + { + if (settings->bools.menu_show_load_core) + { + entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST; + menu_displaylist_setting(&entry); + } + } + + if (settings->bools.menu_show_load_content) + { + const struct retro_subsystem_info* subsystem = NULL; + + entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST; + menu_displaylist_setting(&entry); + + subsystem = system->subsystem.data; + + if (subsystem) + { + for (i = 0; i < (unsigned)system->subsystem.size; i++, subsystem++) + { + char s[PATH_MAX_LENGTH]; + if (content_get_subsystem() == i) + { + if (content_get_subsystem_rom_id() < subsystem->num_roms) + { + snprintf(s, sizeof(s), + "Load %s %s", + subsystem->desc, + i == content_get_subsystem() + ? "\u2605" : " "); + menu_entries_append_enum(info->list, + s, + msg_hash_to_str(MENU_ENUM_LABEL_SUBSYSTEM_ADD), + MENU_ENUM_LABEL_SUBSYSTEM_ADD, + MENU_SETTINGS_SUBSYSTEM_ADD + i, 0, 0); + } + else + { + snprintf(s, sizeof(s), + "Start %s %s", + subsystem->desc, + i == content_get_subsystem() + ? "\u2605" : " "); + menu_entries_append_enum(info->list, + s, + msg_hash_to_str(MENU_ENUM_LABEL_SUBSYSTEM_LOAD), + MENU_ENUM_LABEL_SUBSYSTEM_LOAD, + MENU_SETTINGS_SUBSYSTEM_LOAD, 0, 0); + } + } + else + { + snprintf(s, sizeof(s), + "Load %s %s", + subsystem->desc, + i == content_get_subsystem() + ? "\u2605" : " "); + menu_entries_append_enum(info->list, + s, + msg_hash_to_str(MENU_ENUM_LABEL_SUBSYSTEM_ADD), + MENU_ENUM_LABEL_SUBSYSTEM_ADD, + MENU_SETTINGS_SUBSYSTEM_ADD + i, 0, 0); + } + } + } + } + + entry.enum_idx = MENU_ENUM_LABEL_ADD_CONTENT_LIST; + menu_displaylist_setting(&entry); +#ifdef HAVE_QT + if (settings->bools.desktop_menu_enable) + { + entry.enum_idx = MENU_ENUM_LABEL_SHOW_WIMP; + menu_displaylist_setting(&entry); + } +#endif +#if defined(HAVE_NETWORKING) + if (settings->bools.menu_show_online_updater && !settings->bools.kiosk_mode_enable) + { + entry.enum_idx = MENU_ENUM_LABEL_ONLINE_UPDATER; + menu_displaylist_setting(&entry); + } +#endif + if (!settings->bools.menu_content_show_settings && !string_is_empty(settings->paths.menu_content_show_settings_password)) + { + entry.enum_idx = MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS; + menu_displaylist_setting(&entry); + } + + if (settings->bools.kiosk_mode_enable && !string_is_empty(settings->paths.kiosk_mode_password)) + { + entry.enum_idx = MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE; + menu_displaylist_setting(&entry); + } + + if (settings->bools.menu_show_information) + { + entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST; + menu_displaylist_setting(&entry); + } + +#ifdef HAVE_LAKKA_SWITCH + entry.enum_idx = MENU_ENUM_LABEL_SWITCH_CPU_PROFILE; + menu_displaylist_setting(&entry); + + entry.enum_idx = MENU_ENUM_LABEL_SWITCH_GPU_PROFILE; + menu_displaylist_setting(&entry); + + entry.enum_idx = MENU_ENUM_LABEL_SWITCH_BACKLIGHT_CONTROL; + menu_displaylist_setting(&entry); +#endif + +#ifndef HAVE_DYNAMIC + entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; + menu_displaylist_setting(&entry); +#endif + + if (settings->bools.menu_show_configurations && !settings->bools.kiosk_mode_enable) + { + entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST; + menu_displaylist_setting(&entry); + } + + if (settings->bools.menu_show_help) + { + entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST; + menu_displaylist_setting(&entry); + } + +#if !defined(IOS) + if (settings->bools.menu_show_quit_retroarch) + { + entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH; + menu_displaylist_setting(&entry); + } +#endif + + if (settings->bools.menu_show_reboot) + { + entry.enum_idx = MENU_ENUM_LABEL_REBOOT; + menu_displaylist_setting(&entry); + } + + if (settings->bools.menu_show_shutdown) + { + entry.enum_idx = MENU_ENUM_LABEL_SHUTDOWN; + menu_displaylist_setting(&entry); + } + + info->need_push = true; + ret = 0; + } + break; + } + return ret; +} + +static size_t ozone_list_get_selection(void *data) +{ + ozone_handle_t *ozone = (ozone_handle_t*)data; + + if (!ozone) + return 0; + + return ozone->categories_selection_ptr; +} + +static void ozone_list_clear(file_list_t *list) +{ + menu_animation_ctx_tag tag = (uintptr_t)list; + menu_animation_kill_by_tag(&tag); + + size_t i; + size_t size = list ? list->size : 0; + + ozone_free_list_nodes(list, false); +} + +static void ozone_list_free(file_list_t *list, size_t a, size_t b) +{ + ozone_list_clear(list); +} + +/* Compute new scroll position + * If the center of the currently selected entry is not in the middle + * And if we can scroll so that it's in the middle + * Then scroll + */ +static void ozone_update_scroll(ozone_handle_t *ozone, bool allow_animation, ozone_node_t *node) +{ + file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); + menu_animation_ctx_tag tag = (uintptr_t) selection_buf; + menu_animation_ctx_entry_t entry; + float new_scroll = 0; + + unsigned video_info_height; + video_driver_get_size(NULL, &video_info_height); + + float currentSelectionMiddleOnScreen = ENTRIES_START_Y + ozone->animations.scroll_y + node->position_y + node->height/2; + float bottom_boundary = video_info_height - 87 - 78; + float entries_middle = video_info_height/2; + + if (currentSelectionMiddleOnScreen != entries_middle) + { + new_scroll = ozone->animations.scroll_y - (currentSelectionMiddleOnScreen - entries_middle); + } + + if (new_scroll + ozone->entries_height < bottom_boundary) + new_scroll = -(78 + ozone->entries_height - bottom_boundary); + + if (new_scroll > 0) + new_scroll = 0; + + if (allow_animation) + { + //Cursor animation + ozone->animations.cursor_alpha = 0.0f; + + entry.cb = NULL; + entry.duration = ANIMATION_CURSOR_DURATION; + entry.easing_enum = EASING_OUT_QUAD; + entry.subject = &ozone->animations.cursor_alpha; + entry.tag = tag; + entry.target_value = 1.0f; + entry.userdata = NULL; + + menu_animation_push(&entry); + + //Scroll animation + entry.cb = NULL; + entry.duration = ANIMATION_CURSOR_DURATION; + entry.easing_enum = EASING_OUT_QUAD; + entry.subject = &ozone->animations.scroll_y; + entry.tag = tag; + entry.target_value = new_scroll; + entry.userdata = NULL; + + menu_animation_push(&entry); + } + else + { + ozone->selection_old = ozone->selection; + ozone->animations.cursor_alpha = 1.0f; + ozone->animations.scroll_y = new_scroll; + } +} + +static void ozone_compute_entries_position(ozone_handle_t *ozone) +{ + //Compute entries height and adjust scrolling if needed + size_t i; + menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i); + + size_t entries_end = menu_entries_get_size(); + file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); + + unsigned video_info_height; + video_driver_get_size(NULL, &video_info_height); + + ozone->entries_height = 0; + + for (i = 0; i < entries_end; i++) + { + //Entry + menu_entry_t entry; + char entry_value[255]; + + entry_value[0] = '\0'; + + menu_entry_init(&entry); + menu_entry_get(&entry, 0, (unsigned)i, NULL, true); + menu_entry_get_value(&entry, entry_value, sizeof(entry_value)); + + //Cache node + ozone_node_t *node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i); + + if (!node) + continue; + + node->height = (entry.sublabel ? 100 : 60-8); + node->position_y = ozone->entries_height; + + ozone->entries_height += node->height; + + menu_entry_free(&entry); + } + + //Update scrolling + ozone->selection = menu_navigation_get_selection(); + ozone_update_scroll(ozone, false, (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, ozone->selection)); +} + +static void ozone_render(void *data, bool is_idle) +{ + size_t i; + unsigned end = (unsigned)menu_entries_get_size(); + menu_animation_ctx_delta_t delta; + + if (!data) + return; + + ozone_handle_t *ozone = (ozone_handle_t*) data; + + if (ozone->need_compute) + { + ozone_compute_entries_position(ozone); + ozone->need_compute = false; + } + + ozone->selection = menu_navigation_get_selection(); + + delta.current = menu_animation_get_delta_time(); + + if (menu_animation_get_ideal_delta_time(&delta)) + menu_animation_update(delta.ideal); + + //TODO Handle pointer & mouse + + menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i); + + if (i >= end) + { + i = 0; + menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &i); + } + + menu_animation_ctl(MENU_ANIMATION_CTL_CLEAR_ACTIVE, NULL); +} + +static void ozone_draw_icon( + video_frame_info_t *video_info, + unsigned icon_width, + unsigned icon_height, + uintptr_t texture, + float x, float y, + unsigned width, unsigned height, + float rotation, float scale_factor, + float *color) +{ + menu_display_ctx_rotate_draw_t rotate_draw; + menu_display_ctx_draw_t draw; + struct video_coords coords; + math_matrix_4x4 mymat; + + rotate_draw.matrix = &mymat; + rotate_draw.rotation = rotation; + rotate_draw.scale_x = scale_factor; + rotate_draw.scale_y = scale_factor; + rotate_draw.scale_z = 1; + rotate_draw.scale_enable = true; + + menu_display_rotate_z(&rotate_draw, video_info); + + coords.vertices = 4; + coords.vertex = NULL; + coords.tex_coord = NULL; + coords.lut_tex_coord = NULL; + coords.color = color ? (const float*)color : ozone_pure_white; + + draw.x = x; + draw.y = height - y - icon_height; + draw.width = icon_width; + draw.height = icon_height; + draw.scale_factor = scale_factor; + draw.rotation = rotation; + draw.coords = &coords; + draw.matrix_data = &mymat; + draw.texture = texture; + draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP; + draw.pipeline.id = 0; + + menu_display_draw(&draw, video_info); +} + +static void ozone_draw_header(ozone_handle_t *ozone, video_frame_info_t *video_info) +{ + //Separator + menu_display_draw_quad(video_info, 30, 87, video_info->width - 60, 1, video_info->width, video_info->height, ozone->theme->header_footer_separator); + + //Title + char title[255]; + + menu_animation_ctx_ticker_t ticker; + + ticker.s = title; + ticker.len = (video_info->width - 128 - 47 - 130) / ozone->title_font_glyph_width; + ticker.idx = ozone->frame_count / 20; + ticker.str = ozone->title; + ticker.selected = true; + + menu_animation_ticker(&ticker); + + ozone_draw_text(video_info, ozone, title, 128, 20 + FONT_SIZE_TITLE, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.title, ozone->theme->text_rgba); + + //Icon + menu_display_blend_begin(video_info); + ozone_draw_icon(video_info, 60, 60, ozone->textures[OZONE_TEXTURE_RETROARCH], 47, 14, video_info->width, video_info->height, 0, 1, ozone->theme->entries_icon); + menu_display_blend_end(video_info); + + //Timedate + if (video_info->timedate_enable) + { + menu_display_ctx_datetime_t datetime; + char timedate[255]; + + timedate[0] = '\0'; + + datetime.s = timedate; + datetime.time_mode = 4; + datetime.len = sizeof(timedate); + + menu_display_timedate(&datetime); + + ozone_draw_text(video_info, ozone, timedate, video_info->width - 60, 30 + FONT_SIZE_TIME, TEXT_ALIGN_RIGHT, video_info->width, video_info->height, ozone->fonts.time, ozone->theme->text_rgba); + } +} + +static void ozone_color_alpha(float *color, float alpha) +{ + color[3] = color[7] = color[11] = color[15] = alpha; +} + +static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_info, settings_t *settings) +{ + //Separator + menu_display_draw_quad(video_info, 23, video_info->height - 78, video_info->width - 60, 1, video_info->width, video_info->height, ozone->theme->header_footer_separator); + + //Core title or Switch icon + char core_title[255]; + if (settings->bools.menu_core_enable && menu_entries_get_core_title(core_title, sizeof(core_title)) == 0) + { + ozone_draw_text(video_info, ozone, core_title, 59, video_info->height - 49 + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); + } + else + { + ozone_draw_icon(video_info, 69, 30, ozone->theme_textures[OZONE_THEME_TEXTURE_SWITCH], 59, video_info->height - 52, video_info->width,video_info->height, 0, 1, NULL); + } + + //Buttons + menu_display_blend_begin(video_info); + ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 251, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); + ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 133, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); + menu_display_blend_end(video_info); + + ozone_draw_text(video_info, ozone, "Back", video_info->width - 215, video_info->height - 49 + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); + ozone_draw_text(video_info, ozone, "OK", video_info->width - 96, video_info->height - 49 + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); + + menu_display_blend_end(video_info); +} + +//TODO Reduce sidebar width ? + +static void ozone_draw_cursor(ozone_handle_t *ozone, video_frame_info_t *video_info, unsigned x_offset, unsigned entry_width, size_t y, float alpha) +{ + ozone_color_alpha(ozone->theme_dynamic.selection_border, alpha); + ozone_color_alpha(ozone->theme_dynamic.selection, alpha); + + //Fill + menu_display_draw_quad(video_info, x_offset, y, entry_width, 70 - 10 - 10 - 3, video_info->width, video_info->height, ozone->theme_dynamic.selection); + + //Borders (can't do one single quad because of alpha) + menu_display_draw_quad(video_info, x_offset -3, y - 3, entry_width + 6, 3, video_info->width, video_info->height, ozone->theme_dynamic.selection_border); + menu_display_draw_quad(video_info, x_offset -3, y + 70 - 10 - 10 - 3, entry_width + 6, 3, video_info->width, video_info->height, ozone->theme_dynamic.selection_border); + menu_display_draw_quad(video_info, x_offset -3, y, 3, 70 - 10 - 3 - 6 - 4, video_info->width, video_info->height, ozone->theme_dynamic.selection_border); + menu_display_draw_quad(video_info, x_offset + entry_width, y, 3, 70 - 10 - 3 - 6 - 4, video_info->width, video_info->height, ozone->theme_dynamic.selection_border); +} + +static void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_info) +{ + if (!ozone->draw_sidebar) + return; + + menu_display_scissor_begin(video_info, 0, 87, 408, video_info->height - 87 - 78); + + //Background + unsigned sidebar_height = video_info->height - 87 - 55 - 78; + + menu_display_draw_quad(video_info, ozone->sidebar_offset, 88, 408, 55/2, video_info->width, video_info->height, ozone->theme->sidebar_top_gradient); + menu_display_draw_quad(video_info, ozone->sidebar_offset, 88 + 55/2, 408, sidebar_height, video_info->width, video_info->height, ozone->theme->sidebar_background); + menu_display_draw_quad(video_info, ozone->sidebar_offset, 55*2 + sidebar_height, 408, 55/2 + 1, video_info->width, video_info->height, ozone->theme->sidebar_bottom_gradient); + + //Tabs + //TODO Scroll + unsigned selection_y = 0; + unsigned selection_old_y = 0; + + //y offset computation + size_t y = ENTRIES_START_Y - 10; + for (int i = 0; i < OZONE_SYSTEM_TAB_LAST; i++) + { + if (i == ozone->categories_selection_ptr) + selection_y = y; + if (i == ozone->categories_active_idx_old) + selection_old_y = y; + y += 65; + } + + //Cursor + if (ozone->cursor_in_sidebar) + ozone_draw_cursor(ozone, video_info, ozone->sidebar_offset + 41, 408-81, selection_y-8, ozone->animations.cursor_alpha); + + if (ozone->cursor_in_sidebar_old && ozone->categories_selection_ptr != ozone->categories_active_idx_old) + ozone_draw_cursor(ozone, video_info, ozone->sidebar_offset + 41, 408-81, selection_old_y-8, 1-ozone->animations.cursor_alpha); + + //Icons + y = ENTRIES_START_Y - 10; + menu_display_blend_begin(video_info); + //TODO Cache all the tabs data + for (int i = 0; i < OZONE_SYSTEM_TAB_LAST; i++) + { + bool selected = (ozone->categories_selection_ptr == i); + unsigned icon = ozone_system_tabs_icons[i]; + + //Icon + ozone_draw_icon(video_info, 40, 40, ozone->tab_textures[icon], ozone->sidebar_offset + 41 + 10, y - 5, video_info->width, video_info->height, 0, 1, (selected ? ozone->theme->text_selected : ozone->theme->entries_icon)); + + enum msg_hash_enums value_idx = ozone_system_tabs_value[i]; + const char *title = msg_hash_to_str(value_idx); + + //Text + ozone_draw_text(video_info, ozone, title, ozone->sidebar_offset + 115 - 10, y + FONT_SIZE_SIDEBAR, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.sidebar, (selected ? ozone->theme->text_selected_rgba : ozone->theme->text_rgba)); + + y += 65; + } + menu_display_blend_end(video_info); + + font_driver_flush(video_info->width, video_info->height, ozone->fonts.sidebar, video_info); + + menu_display_scissor_end(video_info); +} + +static void ozone_draw_entry_value(ozone_handle_t *ozone, video_frame_info_t *video_info, char *value, unsigned x, unsigned y, uint32_t alpha_uint32) +{ + if (string_is_empty(value)) + return; + + bool switch_is_on = true; + bool do_draw_text = false; + enum msg_file_type hash_type = msg_hash_to_file_type(msg_hash_calculate(value)); + + /* set switch_is_on */ + if (string_is_equal(value, msg_hash_to_str(MENU_ENUM_LABEL_DISABLED)) || + (string_is_equal(value, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF)))) + { + switch_is_on = false; + do_draw_text = false; + } + else if (string_is_equal(value, msg_hash_to_str(MENU_ENUM_LABEL_ENABLED)) || + (string_is_equal(value, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ON)))) + { + switch_is_on = true; + do_draw_text = false; + } + else + { + switch (hash_type) + { + case FILE_TYPE_IN_CARCHIVE: + case FILE_TYPE_COMPRESSED: + case FILE_TYPE_MORE: + case FILE_TYPE_CORE: + case FILE_TYPE_DIRECT_LOAD: + case FILE_TYPE_RDB: + case FILE_TYPE_CURSOR: + case FILE_TYPE_PLAIN: + case FILE_TYPE_DIRECTORY: + case FILE_TYPE_MUSIC: + case FILE_TYPE_IMAGE: + case FILE_TYPE_MOVIE: + return; + default: + do_draw_text = true; + break; + } + } + + if (do_draw_text) + { + ozone_draw_text(video_info, ozone, value, x, y, TEXT_ALIGN_RIGHT, video_info->width, video_info->height, ozone->fonts.entries_label, (ozone->theme->text_selected_rgba & 0xFFFFFF00) | alpha_uint32); + } + else + { + ozone_draw_text(video_info, ozone, (switch_is_on ? "On" : "Off"), x, y, TEXT_ALIGN_RIGHT, video_info->width, video_info->height, ozone->fonts.entries_label, ((switch_is_on ? ozone->theme->text_selected_rgba : ozone->theme->text_sublabel_rgba) & 0xFFFFFF00) | alpha_uint32); + } +} + +static void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_info, + unsigned selection, unsigned selection_old, + file_list_t *selection_buf, float alpha, float scroll_y) +{ + size_t i; + menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i); + + size_t entries_end = file_list_get_size(selection_buf); + unsigned x_offset = 0; + + bool old_list = selection_buf == ozone->selection_buf_old; + + size_t y = ENTRIES_START_Y; + size_t selection_y = 0; + size_t old_selection_y = 0; + + float sidebar_offset = ozone->sidebar_offset/2.0f; + unsigned entry_width = video_info->width - 548; + + unsigned video_info_height; + video_driver_get_size(NULL, &video_info_height); + + float bottom_boundary = video_info_height - 87 - 78; + + float invert = (ozone->fade_direction) ? -1 : 1; + + float alpha_anim = old_list ? alpha : 1.0f - alpha; + + if (old_list) + alpha = 1.0f - alpha; + + if (alpha != 1.0f) + { + if (old_list) + x_offset = invert * -(alpha_anim * 120); //left + else + x_offset = invert * (alpha_anim * 120); //right + } + + x_offset += (unsigned) sidebar_offset; + + uint32_t alpha_uint32 = (uint32_t)(alpha*255.0f); + + //Borders layer + for (i = 0; i < entries_end; i++) + { + bool entry_selected = selection == i; + bool entry_old_selected = selection_old == i; + + if (entry_selected) + selection_y = y; + + if (entry_old_selected) + old_selection_y = y; + + ozone_node_t *node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i); + + if (!node) + continue; + + if (y + scroll_y + node->height + 20 < ENTRIES_START_Y) + goto text_iterate; + else if (y + scroll_y - node->height - 20 > bottom_boundary) + goto text_iterate; + + ozone_color_alpha(ozone->theme_dynamic.entries_border, alpha); + + //Borders + menu_display_draw_quad(video_info, x_offset + 456-3, y - 3 + scroll_y, entry_width + 10 - 3 -1, 1, video_info->width, video_info->height, ozone->theme_dynamic.entries_border); + menu_display_draw_quad(video_info, x_offset + 456-3, y - 5 + 70 + 10 - 10 - 10 - 3 - 3 + scroll_y, entry_width + 10 - 3-1, 1, video_info->width, video_info->height, ozone->theme_dynamic.entries_border); + +text_iterate: + y += node->height; + } + + //Cursor(s) layer + if (!ozone->cursor_in_sidebar) + ozone_draw_cursor(ozone, video_info, x_offset + 456, entry_width, selection_y + scroll_y, ozone->animations.cursor_alpha * alpha); + + if (!ozone->cursor_in_sidebar_old && ozone->selection != ozone->selection_old) + ozone_draw_cursor(ozone, video_info, x_offset + 456, entry_width, old_selection_y + scroll_y, 1-ozone->animations.cursor_alpha * alpha); + + //Icons + text + y = ENTRIES_START_Y; + for (i = 0; i < entries_end; i++) + { + menu_entry_t entry; + char entry_value[255]; + + entry_value[0] = '\0'; + + bool entry_selected = selection == i; + ozone_node_t *node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i); + + menu_entry_init(&entry); + menu_entry_get(&entry, 0, (unsigned)i, selection_buf, true); + menu_entry_get_value(&entry, entry_value, sizeof(entry_value)); + + if (!node) + continue; + + if (y + scroll_y + node->height + 20 < ENTRIES_START_Y) + goto icons_iterate; + else if (y + scroll_y - node->height - 20 > bottom_boundary) + goto icons_iterate; + + //Icon + unsigned icon = ozone_entries_icon_get_id(ozone, entry.enum_idx, entry.type, entry_selected); + + ozone_color_alpha(ozone->theme_dynamic.entries_icon, alpha); + + menu_display_blend_begin(video_info); + ozone_draw_icon(video_info, 46, 46, ozone->icons_textures[icon], x_offset + 451+5+10, y + scroll_y, video_info->width, video_info->height, 0, 1, ozone->theme_dynamic.entries_icon); + menu_display_blend_end(video_info); + + char *entry_rich_label = NULL; + char rich_label[255]; + + entry_rich_label = menu_entry_get_rich_label(&entry); + + menu_animation_ctx_ticker_t ticker; + + ticker.idx = ozone->frame_count / 20; + ticker.s = rich_label; + ticker.str = entry_rich_label; + ticker.selected = entry_selected && !ozone->cursor_in_sidebar; + ticker.len = (entry_width - 60) / ozone->entry_font_glyph_width; + + menu_animation_ticker(&ticker); + + //Text + ozone_draw_text(video_info, ozone, rich_label, x_offset + 521, y + FONT_SIZE_ENTRIES_LABEL + 8 - 1 + scroll_y, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.entries_label, (ozone->theme->text_rgba & 0xFFFFFF00) | alpha_uint32); + ozone_draw_text(video_info, ozone, entry.sublabel, x_offset + 470, y + FONT_SIZE_ENTRIES_SUBLABEL + 80 - 20 - 3 + scroll_y, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.entries_sublabel, (ozone->theme->text_sublabel_rgba & 0xFFFFFF00) | alpha_uint32); + + //Value + char entry_value_ticker[255]; + + ticker.idx = ozone->frame_count / 20; + ticker.s = entry_value_ticker; + ticker.str = entry_value; + ticker.selected = entry_selected && !ozone->cursor_in_sidebar; + ticker.len = (entry_width - 60 - ((int)utf8len(entry_rich_label) * ozone->entry_font_glyph_width)) / ozone->entry_font_glyph_width; + + menu_animation_ticker(&ticker); + ozone_draw_entry_value(ozone, video_info, entry_value_ticker, x_offset + 426 + entry_width, y + FONT_SIZE_ENTRIES_LABEL + 8 - 1 + scroll_y,alpha_uint32); + + free(entry_rich_label); + +icons_iterate: + y += node->height; + menu_entry_free(&entry); + } + + //Text layer + font_driver_flush(video_info->width, video_info->height, ozone->fonts.entries_label, video_info); + font_driver_flush(video_info->width, video_info->height, ozone->fonts.entries_sublabel, video_info); +} + +static void ozone_selection_changed(ozone_handle_t *ozone, bool allow_animation) +{ + file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); + menu_animation_ctx_tag tag = (uintptr_t) selection_buf; + + size_t new_selection = menu_navigation_get_selection(); + ozone_node_t *node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, new_selection); + + if (!node) + return; + + if (ozone->selection != new_selection) + { + ozone->selection_old = ozone->selection; + ozone->selection = new_selection; + + ozone->cursor_in_sidebar_old = ozone->cursor_in_sidebar; + + menu_animation_kill_by_tag(&tag); + + ozone_update_scroll(ozone, allow_animation, node); + } +} + +static void ozone_navigation_clear(void *data, bool pending_push) +{ + ozone_handle_t *ozone = (ozone_handle_t*)data; + if (!pending_push) + ozone_selection_changed(ozone, true); +} + +static void ozone_navigation_pointer_changed(void *data) +{ + ozone_handle_t *ozone = (ozone_handle_t*)data; + ozone_selection_changed(ozone, true); +} + +static void ozone_navigation_set(void *data, bool scroll) +{ + ozone_handle_t *ozone = (ozone_handle_t*)data; + ozone_selection_changed(ozone, true); +} + +static void ozone_navigation_alphabet(void *data, size_t *unused) +{ + ozone_handle_t *ozone = (ozone_handle_t*)data; + ozone_selection_changed(ozone, true); +} + +static void ozone_frame(void *data, video_frame_info_t *video_info) +{ + ozone_handle_t* ozone = (ozone_handle_t*) data; + + if (!ozone) + return; + + settings_t *settings = config_get_ptr(); + + ozone->frame_count++; + + menu_display_set_viewport(video_info->width, video_info->height); + + //Clear first layer of text + font_driver_bind_block(ozone->fonts.footer, &ozone->raster_blocks.footer); + font_driver_bind_block(ozone->fonts.title, &ozone->raster_blocks.title); + font_driver_bind_block(ozone->fonts.time, &ozone->raster_blocks.time); + font_driver_bind_block(ozone->fonts.entries_label, &ozone->raster_blocks.entries_label); + font_driver_bind_block(ozone->fonts.entries_sublabel, &ozone->raster_blocks.entries_sublabel); + font_driver_bind_block(ozone->fonts.sidebar, &ozone->raster_blocks.sidebar); + + ozone->raster_blocks.footer.carr.coords.vertices = 0; + ozone->raster_blocks.title.carr.coords.vertices = 0; + ozone->raster_blocks.time.carr.coords.vertices = 0; + ozone->raster_blocks.entries_label.carr.coords.vertices = 0; + ozone->raster_blocks.entries_sublabel.carr.coords.vertices = 0; + ozone->raster_blocks.sidebar.carr.coords.vertices = 0; + + //Background + menu_display_ctx_clearcolor_t clearcolor; + + clearcolor.r = ozone->theme->background_r; + clearcolor.g = ozone->theme->background_g; + clearcolor.b = ozone->theme->background_b; + clearcolor.a = 1.0f; + + menu_display_clear_color(&clearcolor, video_info); + + //Header, footer + ozone_draw_header(ozone, video_info); + ozone_draw_footer(ozone, video_info, settings); + + //Sidebar + ozone_draw_sidebar(ozone, video_info); + + //Menu entries + menu_display_scissor_begin(video_info, ozone->sidebar_offset + 408, 87, video_info->width - 408 + (-ozone->sidebar_offset), video_info->height - 87 - 78); + + //Current list + ozone_draw_entries(ozone, video_info, ozone->selection, ozone->selection_old, menu_entries_get_selection_buf_ptr(0), ozone->animations.list_alpha, ozone->animations.scroll_y); + + //Old list + if (ozone->draw_old_list) + ozone_draw_entries(ozone, video_info, ozone->selection_old_list, ozone->selection_old_list, ozone->selection_buf_old, ozone->animations.list_alpha, ozone->scroll_old); + + menu_display_scissor_end(video_info); + + //Flush first layer of text + font_driver_flush(video_info->width, video_info->height, ozone->fonts.footer, video_info); + font_driver_flush(video_info->width, video_info->height, ozone->fonts.title, video_info); + font_driver_flush(video_info->width, video_info->height, ozone->fonts.time, video_info); + + font_driver_bind_block(ozone->fonts.footer, NULL); + font_driver_bind_block(ozone->fonts.title, NULL); + font_driver_bind_block(ozone->fonts.time, NULL); + font_driver_bind_block(ozone->fonts.entries_label, NULL); + + menu_display_unset_viewport(video_info->width, video_info->height); +} + +static void ozone_set_header(ozone_handle_t *ozone) +{ + //TODO Set title of playlist if in a playlist + + menu_entries_get_title(ozone->title, sizeof(ozone->title)); +} + +static void ozone_animation_end(void *userdata) +{ + ozone_handle_t *ozone = (ozone_handle_t*) userdata; + ozone->draw_old_list = false; +} + +static void ozone_list_open(ozone_handle_t *ozone) +{ + if (!ozone->want_horizontal_animation) + { + ozone->want_horizontal_animation = true; + return; + } + ozone->draw_old_list = true; + + struct menu_animation_ctx_entry entry; + + //Left/right animation + ozone->animations.list_alpha = 0.0f; + + entry.cb = ozone_animation_end; + entry.duration = ANIMATION_PUSH_ENTRY_DURATION; + entry.easing_enum = EASING_OUT_QUAD; + entry.subject = &ozone->animations.list_alpha; + entry.tag = (uintptr_t) NULL; + entry.target_value = 1.0f; + entry.userdata = ozone; + + menu_animation_push(&entry); + + //Sidebar animation + if (ozone->depth == 1) + { + ozone->draw_sidebar = true; + + entry.cb = NULL; + entry.duration = ANIMATION_PUSH_ENTRY_DURATION; + entry.easing_enum = EASING_OUT_QUAD; + entry.subject = &ozone->sidebar_offset; + entry.tag = (uintptr_t) NULL; + entry.target_value = 0.0f; + entry.userdata = NULL; + + menu_animation_push(&entry); + } + else if (ozone->depth > 1) + { + struct menu_animation_ctx_entry entry; + + entry.cb = ozone_collapse_end; + entry.duration = ANIMATION_PUSH_ENTRY_DURATION; + entry.easing_enum = EASING_OUT_QUAD; + entry.subject = &ozone->sidebar_offset; + entry.tag = (uintptr_t) NULL; + entry.target_value = -408.0f; + entry.userdata = (void*) ozone; + + menu_animation_push(&entry); + } +} + +static void ozone_populate_entries(void *data, const char *path, const char *label, unsigned k) +{ + ozone_handle_t *ozone = (ozone_handle_t*) data; + + if (!ozone) + return; + + ozone_set_header(ozone); + + if (menu_driver_ctl(RARCH_MENU_CTL_IS_PREVENT_POPULATE, NULL)) + { + menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + //TODO Update thumbnails + ozone_selection_changed(ozone, false); + return; + } + + ozone->need_compute = true; + ozone->fade_direction = ozone->action == MENU_ACTION_CANCEL; + + ozone->depth = (int)ozone_list_get_size(ozone, MENU_LIST_PLAIN); + + if (ozone->categories_selection_ptr == ozone->categories_active_idx_old) + { + ozone_list_open(ozone); + } +} + +static void ozone_change_tab(ozone_handle_t *ozone, enum msg_hash_enums tab, enum menu_settings_type type) +{ + file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(0); + size_t stack_size; + menu_ctx_list_t list_info; + file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); + size_t selection = menu_navigation_get_selection(); + menu_file_list_cbs_t *cbs = selection_buf ? + (menu_file_list_cbs_t*)file_list_get_actiondata_at_offset(selection_buf, + selection) : NULL; + + list_info.type = MENU_LIST_HORIZONTAL; + list_info.action = MENU_ACTION_LEFT; + + stack_size = menu_stack->size; + + if (menu_stack->list[stack_size - 1].label) + free(menu_stack->list[stack_size - 1].label); + menu_stack->list[stack_size - 1].label = NULL; + + menu_stack->list[stack_size - 1].label = + strdup(msg_hash_to_str(tab)); + menu_stack->list[stack_size - 1].type = + type; + + menu_driver_list_cache(&list_info); + + if (cbs && cbs->action_content_list_switch) + cbs->action_content_list_switch(selection_buf, menu_stack, "", "", 0); +} + +static void ozone_go_to_sidebar(ozone_handle_t *ozone, uintptr_t tag) +{ + ozone->selection_old = ozone->selection; + ozone->cursor_in_sidebar_old = ozone->cursor_in_sidebar; + ozone->cursor_in_sidebar = true; + + //Cursor animation + ozone->animations.cursor_alpha = 0.0f; + + struct menu_animation_ctx_entry entry; + + entry.cb = NULL; + entry.duration = ANIMATION_CURSOR_DURATION; + entry.easing_enum = EASING_OUT_QUAD; + entry.subject = &ozone->animations.cursor_alpha; + entry.tag = tag; + entry.target_value = 1.0f; + entry.userdata = NULL; + + menu_animation_push(&entry); +} + +static void ozone_leave_sidebar(ozone_handle_t *ozone, uintptr_t tag) +{ + ozone->categories_active_idx_old = ozone->categories_selection_ptr; + ozone->cursor_in_sidebar_old = ozone->cursor_in_sidebar; + ozone->cursor_in_sidebar = false; + + //Cursor animation + ozone->animations.cursor_alpha = 0.0f; + + struct menu_animation_ctx_entry entry; + + entry.cb = NULL; + entry.duration = ANIMATION_CURSOR_DURATION; + entry.easing_enum = EASING_OUT_QUAD; + entry.subject = &ozone->animations.cursor_alpha; + entry.tag = tag; + entry.target_value = 1.0f; + entry.userdata = NULL; + + menu_animation_push(&entry); +} + +static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_action action) +{ + ozone_handle_t *ozone = (ozone_handle_t*) userdata; + + if (!ozone) + return generic_menu_iterate(menu, userdata, action); + + file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); + + menu_animation_ctx_tag tag = (uintptr_t)selection_buf; + int new_selection; + struct menu_animation_ctx_entry entry; + + enum menu_action new_action = action; + + //Inputs override + switch (action) + { + case MENU_ACTION_DOWN: + if (!ozone->cursor_in_sidebar) + break; + + tag = (uintptr_t)ozone; + + new_selection = (ozone->categories_selection_ptr + 1); + + if (new_selection >= ozone->system_tab_end + 2) //TODO Check against actual tabs count and not just system tabs + new_selection = 0; + + if (ozone->categories_selection_ptr != new_selection) + { + ozone->categories_active_idx_old = ozone->categories_selection_ptr; + ozone->categories_selection_ptr = new_selection; + + ozone->cursor_in_sidebar_old = ozone->cursor_in_sidebar; + + menu_animation_kill_by_tag(&tag); + } + + //Cursor animation + ozone->animations.cursor_alpha = 0.0f; + + entry.cb = NULL; + entry.duration = ANIMATION_CURSOR_DURATION; + entry.easing_enum = EASING_OUT_QUAD; + entry.subject = &ozone->animations.cursor_alpha; + entry.tag = tag; + entry.target_value = 1.0f; + entry.userdata = NULL; + + menu_animation_push(&entry); + + ozone_change_tab(ozone, ozone_system_tabs_idx[new_selection], ozone_system_tabs_type[new_selection]); + + new_action = MENU_ACTION_NOOP; + break; + case MENU_ACTION_UP: + if (!ozone->cursor_in_sidebar) + break; + + tag = (uintptr_t)ozone; + + new_selection = ozone->categories_selection_ptr - 1; + + if (new_selection < 0) + new_selection = ozone->system_tab_end + 1; //TODO Set this to actual tabs count and not just system tabs + + if (ozone->categories_selection_ptr != new_selection) + { + ozone->categories_active_idx_old = ozone->categories_selection_ptr; + ozone->categories_selection_ptr = new_selection; + + ozone->cursor_in_sidebar_old = ozone->cursor_in_sidebar; + + menu_animation_kill_by_tag(&tag); + } + + //Cursor animation + ozone->animations.cursor_alpha = 0.0f; + + entry.cb = NULL; + entry.duration = ANIMATION_CURSOR_DURATION; + entry.easing_enum = EASING_OUT_QUAD; + entry.subject = &ozone->animations.cursor_alpha; + entry.tag = tag; + entry.target_value = 1.0f; + entry.userdata = NULL; + + menu_animation_push(&entry); + + ozone_change_tab(ozone, ozone_system_tabs_idx[new_selection], ozone_system_tabs_type[new_selection]); + + new_action = MENU_ACTION_NOOP; + break; + case MENU_ACTION_LEFT: + if (ozone->cursor_in_sidebar) + { + new_action = MENU_ACTION_NOOP; + break; + } + else if (ozone->depth > 1) + { + break; + } + + + ozone_go_to_sidebar(ozone, tag); + + new_action = MENU_ACTION_NOOP; + break; + case MENU_ACTION_RIGHT: + if (!ozone->cursor_in_sidebar) + { + if (ozone->depth == 1) + new_action = MENU_ACTION_NOOP; + break; + } + + ozone_leave_sidebar(ozone, tag); + + new_action = MENU_ACTION_NOOP; + break; + case MENU_ACTION_OK: + if (ozone->cursor_in_sidebar) + { + ozone_leave_sidebar(ozone, tag); + new_action = MENU_ACTION_NOOP; + break; + } + + break; + case MENU_ACTION_CANCEL: + if (ozone->cursor_in_sidebar) + { + new_action = MENU_ACTION_NOOP; + break; + } + + if (menu_entries_get_stack_size(0) == 1) + { + ozone_go_to_sidebar(ozone, tag); + new_action = MENU_ACTION_NOOP; + } + break; + default: + break; + } + + ozone->action = new_action; + + return generic_menu_iterate(menu, userdata, new_action); +} + +//TODO Fancy toggle animation + +static void ozone_toggle(void *userdata, bool menu_on) +{ + ozone_handle_t *ozone = (ozone_handle_t*) userdata; + if (!menu_on) + { + menu_display_ctx_clearcolor_t clearcolor; + + clearcolor.r = 0.0f; + clearcolor.g = 0.0f; + clearcolor.b = 0.0f; + clearcolor.a = 1.0f; + + menu_display_clear_color(&clearcolor, NULL); + } + + bool tmp = !menu_entries_ctl(MENU_ENTRIES_CTL_NEEDS_REFRESH, NULL); + + if (tmp) + menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + else + menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + + if (ozone->depth == 1) + { + ozone->draw_sidebar = true; + ozone->sidebar_offset = 0.0f; + } +} + +static bool ozone_menu_init_list(void *data) +{ + menu_displaylist_info_t info; + + file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(0); + file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); + + menu_displaylist_info_init(&info); + + info.label = strdup( + msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU)); + info.exts = + strdup(file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT)); + info.type_default = FILE_TYPE_PLAIN; + info.enum_idx = MENU_ENUM_LABEL_MAIN_MENU; + + menu_entries_append_enum(menu_stack, info.path, + info.label, + MENU_ENUM_LABEL_MAIN_MENU, + info.type, info.flags, 0); + + info.list = selection_buf; + + if (!menu_displaylist_ctl(DISPLAYLIST_MAIN_MENU, &info)) + goto error; + + info.need_push = true; + + if (!menu_displaylist_process(&info)) + goto error; + + menu_displaylist_info_free(&info); + return true; + +error: + menu_displaylist_info_free(&info); + return false; +} + +static ozone_node_t *ozone_alloc_node() +{ + ozone_node_t *node = (ozone_node_t*)malloc(sizeof(*node)); + + node->height = 0; + node->position_y = 0; + + return node; +} + +static ozone_node_t *ozone_copy_node(const ozone_node_t *old_node) +{ + ozone_node_t *new_node = (ozone_node_t*)malloc(sizeof(*new_node)); + + *new_node = *old_node; + + return new_node; +} + +static void ozone_list_insert(void *userdata, + file_list_t *list, + const char *path, + const char *fullpath, + const char *label, + size_t list_size, + unsigned type) +{ + ozone_handle_t *ozone = (ozone_handle_t*) userdata; + ozone_node_t *node = NULL; + int i = (int)list_size; + + if (!ozone || !list) + return; + + ozone->need_compute = true; + + node = (ozone_node_t*)file_list_get_userdata_at_offset(list, i); + + if (!node) + node = ozone_alloc_node(); + + if (!node) + { + RARCH_ERR("ozone node could not be allocated.\n"); + return; + } + + file_list_set_userdata(list, i, node); +} + +static void ozone_list_deep_copy(const file_list_t *src, file_list_t *dst, + size_t first, size_t last) +{ + size_t i, j = 0; + menu_animation_ctx_tag tag = (uintptr_t)dst; + + menu_animation_kill_by_tag(&tag); + + /* use true here because file_list_copy() doesn't free actiondata */ + ozone_free_list_nodes(dst, true); + + file_list_clear(dst); + file_list_reserve(dst, (last + 1) - first); + + for (i = first; i <= last; ++i) + { + struct item_file *d = &dst->list[j]; + struct item_file *s = &src->list[i]; + + void *src_udata = s->userdata; + void *src_adata = s->actiondata; + + *d = *s; + d->alt = string_is_empty(d->alt) ? NULL : strdup(d->alt); + d->path = string_is_empty(d->path) ? NULL : strdup(d->path); + d->label = string_is_empty(d->label) ? NULL : strdup(d->label); + + if (src_udata) + file_list_set_userdata(dst, j, (void*)ozone_copy_node((const ozone_node_t*)src_udata)); + + if (src_adata) + { + void *data = malloc(sizeof(menu_file_list_cbs_t)); + memcpy(data, src_adata, sizeof(menu_file_list_cbs_t)); + file_list_set_actiondata(dst, j, data); + } + + ++j; + } + + dst->size = j; +} + +static void ozone_list_cache(void *data, + enum menu_list_type type, unsigned action) +{ + ozone_handle_t *ozone = (ozone_handle_t*)data; + + if (!ozone) + return; + + ozone->need_compute = true; + + ozone->selection_old_list = ozone->selection; + ozone->scroll_old = ozone->animations.scroll_y; + + //Deep copy visible elements + unsigned first = 0; + unsigned last = 0; + + unsigned video_info_height; + video_driver_get_size(NULL, &video_info_height); + size_t y = ENTRIES_START_Y; + int i; + size_t entries_end = menu_entries_get_size(); + file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); + float bottom_boundary = video_info_height - 87 - 78; + for (i = 0; i < entries_end; i++) + { + ozone_node_t *node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i); + + if (!node) + continue; + + if (y + ozone->animations.scroll_y + node->height + 20 < ENTRIES_START_Y) + { + first++; + goto text_iterate; + } + else if (y + ozone->animations.scroll_y - node->height - 20 > bottom_boundary) + { + goto text_iterate; + } + + last++; +text_iterate: + y += node->height; + } + + last -= 1; + + ozone_list_deep_copy(selection_buf, ozone->selection_buf_old, first, last); +} + +static void ozone_refresh_consoles_list(ozone_handle_t *ozone) +{ + menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + //TODO Refresh consoles list (= horizontal list) +} + +static int ozone_environ_cb(enum menu_environ_cb type, void *data, void *userdata) +{ + ozone_handle_t *ozone = (ozone_handle_t*) userdata; + + if (!ozone) + return -1; + + switch (type) + { + case MENU_ENVIRON_RESET_HORIZONTAL_LIST: + ozone_refresh_consoles_list(ozone); + break; + default: + return -1; + } + + return 0; +} + +menu_ctx_driver_t menu_ctx_ozone = { + NULL, //set_texture + NULL, //render_messagebox + ozone_menu_iterate, + ozone_render, + ozone_frame, + ozone_init, + ozone_free, + ozone_context_reset, + ozone_context_destroy, + ozone_populate_entries, + ozone_toggle, + ozone_navigation_clear, + ozone_navigation_pointer_changed, + ozone_navigation_pointer_changed, + ozone_navigation_set, + ozone_navigation_pointer_changed, + ozone_navigation_alphabet, + ozone_navigation_alphabet, + ozone_menu_init_list, + ozone_list_insert, + NULL, //list_prepend + ozone_list_free, + ozone_list_clear, + ozone_list_cache, + ozone_list_push, + ozone_list_get_selection, + ozone_list_get_size, + ozone_list_get_entry, + NULL, //list_set_selection, + NULL, //bind_init + NULL, //load_image + "ozone", + ozone_environ_cb, + NULL, //pointer_tap + NULL, //update_thumbnail_path + NULL, //update_thumbnail_image + NULL, //set_thumbnail_system + NULL, //set_thumbnail_content + menu_display_osk_ptr_at_pos, + NULL, //update_savestate_thumbnail_path + NULL //update_savestate_thumbnail_image +}; \ No newline at end of file diff --git a/menu/menu_animation.c b/menu/menu_animation.c index 8cd9d140f8..68c6260fbb 100644 --- a/menu/menu_animation.c +++ b/menu/menu_animation.c @@ -40,6 +40,7 @@ struct tween uintptr_t tag; easing_cb easing; tween_cb cb; + void *userdata; }; struct menu_animation @@ -326,6 +327,7 @@ bool menu_animation_push(menu_animation_ctx_entry_t *entry) t.subject = entry->subject; t.tag = entry->tag; t.cb = entry->cb; + t.userdata = entry->userdata; t.easing = NULL; switch (entry->easing_enum) @@ -519,7 +521,7 @@ bool menu_animation_update(float delta_time) anim.need_defrag = true; if (tween->cb) - tween->cb(); + tween->cb(tween->userdata); } if (tween->running_since < tween->duration) diff --git a/menu/menu_animation.h b/menu/menu_animation.h index 71f31e9c6d..6983237719 100644 --- a/menu/menu_animation.h +++ b/menu/menu_animation.h @@ -26,7 +26,7 @@ RETRO_BEGIN_DECLS typedef float (*easing_cb) (float, float, float, float); -typedef void (*tween_cb) (void); +typedef void (*tween_cb) (void*); enum menu_animation_ctl_state { @@ -106,6 +106,7 @@ typedef struct menu_animation_ctx_entry float target_value; float *subject; tween_cb cb; + void *userdata; } menu_animation_ctx_entry_t; typedef struct menu_animation_ctx_ticker diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 0ec43c8325..d8331f51a8 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -78,6 +78,9 @@ typedef struct menu_ctx_load_image /* Menu drivers */ static const menu_ctx_driver_t *menu_ctx_drivers[] = { +#if defined(HAVE_OZONE) + &menu_ctx_ozone, +#endif #if defined(HAVE_XUI) &menu_ctx_xui, #endif @@ -445,7 +448,6 @@ font_data_t *menu_display_font( bool is_threaded) { char fontpath[PATH_MAX_LENGTH]; - font_data_t *font_data = NULL; if (!menu_disp) return NULL; @@ -455,6 +457,16 @@ font_data_t *menu_display_font( fill_pathname_application_special( fontpath, sizeof(fontpath), type); + return menu_display_font_file(fontpath, font_size, is_threaded); +} + +font_data_t *menu_display_font_file(char* fontpath, float font_size, bool is_threaded) +{ + if (!menu_disp) + return NULL; + + font_data_t *font_data = NULL; + if (!menu_disp->font_init_first((void**)&font_data, video_driver_get_ptr(false), fontpath, font_size, is_threaded)) @@ -2626,3 +2638,11 @@ void menu_navigation_set_selection(size_t val) { menu_driver_selection_ptr = val; } + +void hex32_to_rgba_normalized(uint32_t hex, float* rgba, float alpha) +{ + rgba[0] = rgba[4] = rgba[8] = rgba[12] = ((hex >> 16) & 0xFF) * (1.0f / 255.0f); /* r */ + rgba[1] = rgba[5] = rgba[9] = rgba[13] = ((hex >> 8 ) & 0xFF) * (1.0f / 255.0f); /* g */ + rgba[2] = rgba[6] = rgba[10] = rgba[14] = ((hex >> 0 ) & 0xFF) * (1.0f / 255.0f); /* b */ + rgba[3] = rgba[7] = rgba[11] = rgba[15] = alpha; +} diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 0110f9ef21..917265740f 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -812,6 +812,8 @@ font_data_t *menu_display_font( float font_size, bool video_is_threaded); +font_data_t *menu_display_font_file(char* fontpath, float font_size, bool is_threaded); + void menu_display_reset_textures_list( const char *texture_path, const char *iconpath, @@ -826,6 +828,8 @@ bool menu_display_driver_exists(const char *s); void menu_driver_destroy(void); +void hex32_to_rgba_normalized(uint32_t hex, float* rgba, float alpha); + extern uintptr_t menu_display_white_texture; extern menu_display_ctx_driver_t menu_display_ctx_gl; @@ -846,6 +850,7 @@ extern menu_display_ctx_driver_t menu_display_ctx_switch; extern menu_display_ctx_driver_t menu_display_ctx_sixel; extern menu_display_ctx_driver_t menu_display_ctx_null; +extern menu_ctx_driver_t menu_ctx_ozone; extern menu_ctx_driver_t menu_ctx_xui; extern menu_ctx_driver_t menu_ctx_rgui; extern menu_ctx_driver_t menu_ctx_mui; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 59e5e4527f..5361a70302 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3530,7 +3530,7 @@ static bool setting_append_list( parent_group); } - if (string_is_not_equal(settings->arrays.menu_driver, "xmb")) + if (string_is_not_equal(settings->arrays.menu_driver, "xmb") && string_is_not_equal(settings->arrays.menu_driver, "ozone")) { CONFIG_ACTION( list, list_info, @@ -7616,7 +7616,7 @@ static bool setting_append_list( general_read_handler, SD_FLAG_NONE); - if (string_is_equal(settings->arrays.menu_driver, "xmb")) + if (string_is_equal(settings->arrays.menu_driver, "xmb") || string_is_equal(settings->arrays.menu_driver, "ozone")) { CONFIG_BOOL( list, list_info, @@ -8055,8 +8055,8 @@ static bool setting_append_list( SD_FLAG_NONE); #endif -#ifdef HAVE_XMB - if (string_is_equal(settings->arrays.menu_driver, "xmb")) +#if defined(HAVE_XMB) || defined(HAVE_OZONE) + if (string_is_equal(settings->arrays.menu_driver, "xmb") || string_is_equal(settings->arrays.menu_driver, "ozone")) { CONFIG_BOOL( list, list_info, @@ -8302,7 +8302,7 @@ static bool setting_append_list( general_read_handler, SD_FLAG_ADVANCED); - if (string_is_equal(settings->arrays.menu_driver, "xmb")) + if (string_is_equal(settings->arrays.menu_driver, "xmb") || string_is_equal(settings->arrays.menu_driver, "ozone")) { CONFIG_UINT( list, list_info, @@ -9040,7 +9040,7 @@ static bool setting_append_list( SD_FLAG_NONE ); - if (string_is_equal(settings->arrays.menu_driver, "xmb")) + if (string_is_equal(settings->arrays.menu_driver, "xmb") || string_is_equal(settings->arrays.menu_driver, "ozone")) CONFIG_BOOL( list, list_info, &settings->bools.cheevos_badges_enable, diff --git a/qb/config.libs.sh b/qb/config.libs.sh index d0d94da004..a679058d35 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -518,7 +518,8 @@ if [ "$HAVE_MATERIALUI" != 'no' ] || [ "$HAVE_XMB" != 'no' ] || [ "$HAVE_ZARCH" HAVE_XMB=no HAVE_STRIPES=no HAVE_ZARCH=no - die : 'Notice: RGUI not available, MaterialUI, XMB and ZARCH will also be disabled.' + HAVE_OZONE=no + die : 'Notice: RGUI not available, MaterialUI, XMB, Ozone and ZARCH will also be disabled.' elif [ "$HAVE_OPENGL" = 'no' ] && [ "$HAVE_OPENGLES" = 'no' ] && [ "$HAVE_VULKAN" = 'no' ]; then if [ "$OS" = 'Win32' ]; then HAVE_SHADERPIPELINE=no @@ -531,7 +532,8 @@ if [ "$HAVE_MATERIALUI" != 'no' ] || [ "$HAVE_XMB" != 'no' ] || [ "$HAVE_ZARCH" HAVE_XMB=no HAVE_STRIPES=no HAVE_ZARCH=no - die : 'Notice: Hardware rendering context not available, XMB, MaterialUI and ZARCH will also be disabled.' + HAVE_OZONE=no + die : 'Notice: Hardware rendering context not available, XMB, MaterialUI, Ozone and ZARCH will also be disabled.' fi fi fi diff --git a/qb/config.params.sh b/qb/config.params.sh index 1e097b8f0c..34a83081ca 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -10,6 +10,7 @@ HAVE_LIBRETRODB=yes # Libretrodb support HAVE_RGUI=yes # RGUI menu HAVE_MATERIALUI=auto # MaterialUI menu HAVE_XMB=auto # XMB menu +HAVE_OZONE=no # Ozone menu HAVE_STRIPES=no # Stripes menu HAVE_ZARCH=no # Zarch menu HAVE_NUKLEAR=no # Nuklear menu From a4d75e3dd8137048d1622edb47b059512e61a0dd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Oct 2018 02:57:50 +0200 Subject: [PATCH 113/304] C89 buildfix --- menu/menu_driver.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index d8331f51a8..9191323e0d 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -462,11 +462,10 @@ font_data_t *menu_display_font( font_data_t *menu_display_font_file(char* fontpath, float font_size, bool is_threaded) { + font_data_t *font_data = NULL; if (!menu_disp) return NULL; - font_data_t *font_data = NULL; - if (!menu_disp->font_init_first((void**)&font_data, video_driver_get_ptr(false), fontpath, font_size, is_threaded)) From 2fd2649eb87ea0b4fe116ecec5dc0d4882cb27ac Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Oct 2018 04:40:43 +0200 Subject: [PATCH 114/304] Fix ton of C89 warnings/errors --- intl/msg_hash_el.c | 90 ++++---- menu/drivers/ozone.c | 507 +++++++++++++++++++++---------------------- 2 files changed, 302 insertions(+), 295 deletions(-) diff --git a/intl/msg_hash_el.c b/intl/msg_hash_el.c index fe0dd74863..54e449bbc4 100644 --- a/intl/msg_hash_el.c +++ b/intl/msg_hash_el.c @@ -109,16 +109,22 @@ int menu_hash_get_help_el_enum(enum msg_hash_enums msg, char *s, size_t len) "Εναλλαγή λειτουργίας παιχνιδιού/παρακολούθησης Netplay."); break; case RARCH_ENABLE_HOTKEY: - snprintf(s, len, + { + /* Work around C89 limitations */ + const char *t = "Ενεργοποίηση άλλων πλήκτρων εντολών. \n" " \n" "Εάν αυτό το πλήκτρο είναι συνδεδεμένο είτε με\n" "ένα πληκτρολόγιο ή κάποιο κουμπί χειριστιερίου, \n" - "όλα τα υπόλοιπα κουμπιά εντολών θα ενεργοποιηθούν μόνο \n" + "όλα τα υπόλοιπα κουμπιά εντολών θα ενεργοποιηθούν μόνο \n"; + const char *u = "εάν και αυτό είναι πατημένο την ίδια στιγμή. \n" " \n" "Διαφορετικά, όλα τα κουμπιά εντολών πληκτρολογίου \n" - "μπορούν να απενεργοποιηθούν από τον χρήστη."); + "μπορούν να απενεργοποιηθούν από τον χρήστη."; + strlcpy(s, t, len); + strlcat(s, u, len); + } break; case RARCH_VOLUME_UP: snprintf(s, len, @@ -238,18 +244,25 @@ int menu_hash_get_help_el_enum(enum msg_hash_enums msg, char *s, size_t len) snprintf(s, len, "Κωδικός για τον λογαριασμό σας στο Retro Achievements."); break; case MENU_ENUM_LABEL_USER_LANGUAGE: - snprintf(s, len, "Τοπικοποίηση του μενού και όλων των μηνυμάτων \n" - "ανάλογα με την γλώσσα που έχετε επιλέξει \n" - "εδώ. \n" - " \n" - "Χρειάζεται επανεκκίνηση για να ενεργοποιηθούν \n" - "οι αλλαγές. \n" - " \n" - "Σημείωση: πιθανόν να μην έχουν εφαρμοστεί \n" - "όλες οι γλώσσες. \n" - " \n" - "Σε περίπτωση που μία γλώσσα δεν έχει εφαρμοστεί, \n" - "χρησιμοποιούμε τα Αγγλικά."); + { + /* Work around C89 limitations */ + const char *t = + "Τοπικοποίηση του μενού και όλων των μηνυμάτων \n" + "ανάλογα με την γλώσσα που έχετε επιλέξει \n" + "εδώ. \n" + " \n" + "Χρειάζεται επανεκκίνηση για να ενεργοποιηθούν \n" + "οι αλλαγές. \n"; + const char *u = + " \n" + "Σημείωση: πιθανόν να μην έχουν εφαρμοστεί \n" + "όλες οι γλώσσες. \n" + " \n" + "Σε περίπτωση που μία γλώσσα δεν έχει εφαρμοστεί, \n" + "χρησιμοποιούμε τα Αγγλικά."; + strlcpy(s, t, len); + strlcat(s, u, len); + } break; case MENU_ENUM_LABEL_VIDEO_FONT_PATH: snprintf(s, len, "Αλλαγή της γραμματοσειράς που χρησιμοποιείται \n" @@ -658,35 +671,36 @@ int menu_hash_get_help_el_enum(enum msg_hash_enums msg, char *s, size_t len) "Welcome to RetroArch\n" ); break; - case MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC: { - /* Work around C89 limitations */ - char u[501]; - const char *t = - "RetroArch relies on an unique form of\n" - "audio/video synchronization where it needs to be\n" - "calibrated against the refresh rate of your\n" - "display for best performance results.\n" - " \n" - "If you experience any audio crackling or video\n" - "tearing, usually it means that you need to\n" - "calibrate the settings. Some choices below:\n" - " \n"; - snprintf(u, sizeof(u), /* can't inline this due to the printf arguments */ + case MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC: + { + /* Work around C89 limitations */ + char u[501]; + const char *t = + "RetroArch relies on an unique form of\n" + "audio/video synchronization where it needs to be\n" + "calibrated against the refresh rate of your\n" + "display for best performance results.\n" + " \n" + "If you experience any audio crackling or video\n" + "tearing, usually it means that you need to\n" + "calibrate the settings. Some choices below:\n" + " \n"; + snprintf(u, sizeof(u), /* can't inline this due to the printf arguments */ "a) Go to '%s' -> '%s', and enable\n" - "'Threaded Video'. Refresh rate will not matter\n" - "in this mode, framerate will be higher,\n" - "but video might be less smooth.\n" - "b) Go to '%s' -> '%s', and look at\n" - "'%s'. Let it run for\n" - "2048 frames, then press 'OK'.", + "'Threaded Video'. Refresh rate will not matter\n" + "in this mode, framerate will be higher,\n" + "but video might be less smooth.\n" + "b) Go to '%s' -> '%s', and look at\n" + "'%s'. Let it run for\n" + "2048 frames, then press 'OK'.", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO)); - strlcpy(s, t, len); - strlcat(s, u, len); - } + strlcpy(s, t, len); + strlcat(s, u, len); + } break; case MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC: snprintf(s, len, diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index a148d73112..719c737621 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -2,8 +2,8 @@ * Copyright (C) 2011-2017 - Daniel De Matteis * Copyright (C) 2014-2017 - Jean-André Santoni * Copyright (C) 2016-2017 - Brad Parker - * Copyright (C) 2018 - Alfredo Monclús - * Copyright (C) 2018 - natinusala + * Copyright (C) 2018 - Alfredo Monclús + * Copyright (C) 2018 - natinusala * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- @@ -37,7 +37,7 @@ #include "../../retroarch.h" #include "../../verbosity.h" -//TODO Handle translation for hardcoded strings (footer...) +/* TODO Handle translation for hardcoded strings (footer...) */ #define FONT_SIZE_FOOTER 18 #define FONT_SIZE_TITLE 36 @@ -304,7 +304,7 @@ static unsigned ozone_system_tabs_icons[OZONE_SYSTEM_TAB_LAST] = { HEX_R(hex), HEX_G(hex), HEX_B(hex), alpha \ } -#define COLOR_BACKGROUND(hex) hex, HEX_R(hex), HEX_G(hex), HEX_B(hex) +#define OZONE_COLOR_BACKGROUND(hex) hex, HEX_R(hex), HEX_G(hex), HEX_B(hex) static float ozone_sidebar_background_light[16] = { 0.94, 0.94, 0.94, 1.00, @@ -350,13 +350,13 @@ static float ozone_sidebar_gradient_bottom_dark[16] = { typedef struct ozone_theme { - //Background color + /* Background color */ uint32_t background_rgb; float background_r; float background_g; float background_b; - //Float colors for quads and icons + /* Float colors for quads and icons */ float header_footer_separator[16]; float text[16]; float selection[16]; @@ -365,12 +365,12 @@ typedef struct ozone_theme float entries_icon[16]; float text_selected[16]; - //RGBA colors for text + /* RGBA colors for text */ uint32_t text_rgba; uint32_t text_selected_rgba; uint32_t text_sublabel_rgba; - //Sidebar color + /* Sidebar color */ float *sidebar_background; float *sidebar_top_gradient; float *sidebar_bottom_gradient; @@ -379,7 +379,7 @@ typedef struct ozone_theme } ozone_theme_t; ozone_theme_t ozone_theme_light = { - COLOR_BACKGROUND(0xEBEBEB), + OZONE_COLOR_BACKGROUND(0xEBEBEB), COLOR_HEX_TO_FLOAT(0x2B2B2B, 1.00), COLOR_HEX_TO_FLOAT(0x333333, 1.00), @@ -401,7 +401,7 @@ ozone_theme_t ozone_theme_light = { }; ozone_theme_t ozone_theme_dark = { - COLOR_BACKGROUND(0x2D2D2D), + OZONE_COLOR_BACKGROUND(0x2D2D2D), COLOR_HEX_TO_FLOAT(0xFFFFFF, 1.00), COLOR_HEX_TO_FLOAT(0xFFFFFF, 1.00), @@ -464,7 +464,7 @@ typedef struct ozone_handle uint8_t system_tab_end; uint8_t tabs[OZONE_SYSTEM_TAB_LAST]; - size_t categories_selection_ptr; //active tab id + size_t categories_selection_ptr; /* active tab id */ size_t categories_active_idx_old; bool cursor_in_sidebar; @@ -478,10 +478,10 @@ typedef struct ozone_handle float list_alpha; } animations; - bool fade_direction; //false = left to right, true = right to left + bool fade_direction; /* false = left to right, true = right to left */ - size_t selection; //currently selected entry - size_t selection_old; //previously selected entry (for fancy animation) + size_t selection; /* currently selected entry */ + size_t selection_old; /* previously selected entry (for fancy animation) */ size_t selection_old_list; unsigned entries_height; @@ -525,7 +525,8 @@ typedef struct ozone_node static const char *ozone_entries_icon_texture_path(ozone_handle_t *ozone, unsigned id) { - char *icon_name; + char icon_fullpath[255]; + char *icon_name = NULL; switch (id) { @@ -782,7 +783,6 @@ static const char *ozone_entries_icon_texture_path(ozone_handle_t *ozone, unsign break; } - char icon_fullpath[255]; fill_pathname_join( icon_fullpath, @@ -1118,9 +1118,13 @@ static void ozone_set_theme(ozone_handle_t *ozone, ozone_theme_t *theme) static void *ozone_init(void **userdata, bool video_is_threaded) { unsigned width, height; +#ifdef HAVE_LIBNX + Result rc; + ColorSetId theme; +#endif ozone_handle_t *ozone = NULL; - settings_t *settings = config_get_ptr(); - menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); + settings_t *settings = config_get_ptr(); + menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); if (!menu) goto error; @@ -1173,12 +1177,10 @@ static void *ozone_init(void **userdata, bool video_is_threaded) menu_display_allocate_white_texture(); - //Theme - //TODO Add theme override in settings + /* Theme */ + /* TODO Add theme override in settings */ #ifdef HAVE_LIBNX - ColorSetId theme; - Result rc = setsysInitialize(); - + rc = setsysInitialize(); if (R_SUCCEEDED(rc)) { setsysGetColorSetId(&theme); @@ -1196,7 +1198,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded) ozone->need_compute = false; ozone->animations.scroll_y = 0.0f; - //Assets path + /* Assets path */ fill_pathname_join( ozone->assets_path, settings->paths.directory_assets, @@ -1204,7 +1206,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded) sizeof(ozone->assets_path) ); - //PNG path + /* PNG path */ fill_pathname_join( ozone->png_path, ozone->assets_path, @@ -1212,7 +1214,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded) sizeof(ozone->png_path) ); - //Icons path + /* Icons path */ fill_pathname_join( ozone->icons_path, ozone->png_path, @@ -1220,7 +1222,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded) sizeof(ozone->icons_path) ); - //Sidebar path + /* Sidebar path */ fill_pathname_join( ozone->tab_path, ozone->png_path, @@ -1228,7 +1230,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded) sizeof(ozone->tab_path) ); - //Theme path + /* Theme path */ fill_pathname_join( ozone->theme_path, ozone->png_path, @@ -1298,7 +1300,8 @@ static void ozone_context_reset(void *data, bool is_threaded) if (ozone) { - //Fonts init + /* Fonts init */ + unsigned i; char font_path[PATH_MAX_LENGTH]; fill_pathname_join(font_path, ozone->assets_path, "Inter-UI-Regular.ttf", sizeof(font_path)); @@ -1314,8 +1317,8 @@ static void ozone_context_reset(void *data, bool is_threaded) ozone->title_font_glyph_width = font_driver_get_message_width(ozone->fonts.title, "a", 1, 1); ozone->entry_font_glyph_width = font_driver_get_message_width(ozone->fonts.entries_label, "a", 1, 1); - //Textures init - for (int i = 0; i < OZONE_TEXTURE_LAST; i++) + /* Textures init */ + for (i = 0; i < OZONE_TEXTURE_LAST; i++) { char filename[PATH_MAX_LENGTH]; strcpy(filename, OZONE_TEXTURES_FILES[i]); @@ -1324,8 +1327,8 @@ static void ozone_context_reset(void *data, bool is_threaded) menu_display_reset_textures_list(filename, ozone->png_path, &ozone->textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); } - //Sidebar textures - for (int i = 0; i < OZONE_TAB_TEXTURE_LAST; i++) + /* Sidebar textures */ + for (i = 0; i < OZONE_TAB_TEXTURE_LAST; i++) { char filename[PATH_MAX_LENGTH]; strcpy(filename, OZONE_TAB_TEXTURES_FILES[i]); @@ -1334,8 +1337,8 @@ static void ozone_context_reset(void *data, bool is_threaded) menu_display_reset_textures_list(filename, ozone->tab_path, &ozone->tab_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); } - //Theme textures - for (int i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) + /* Theme textures */ + for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) { char filename[PATH_MAX_LENGTH]; strcpy(filename, OZONE_THEME_TEXTURES_FILES[i]); @@ -1344,15 +1347,13 @@ static void ozone_context_reset(void *data, bool is_threaded) menu_display_reset_textures_list(filename, ozone->theme_path, &ozone->theme_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); } - //Icons textures init - for (int i = 0; i < OZONE_ENTRIES_ICONS_TEXTURE_LAST; i++) - { + /* Icons textures init */ + for (i = 0; i < OZONE_ENTRIES_ICONS_TEXTURE_LAST; i++) menu_display_reset_textures_list(ozone_entries_icon_texture_path(ozone, i), ozone->icons_path, &ozone->icons_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); - } menu_display_allocate_white_texture(); - //State reset + /* State reset */ ozone->frame_count = 0; ozone->fade_direction = false; ozone->cursor_in_sidebar = false; @@ -1361,7 +1362,7 @@ static void ozone_context_reset(void *data, bool is_threaded) ozone->sidebar_offset = 0; ozone->draw_old_list = false; - //Animations + /* Animations */ ozone->animations.cursor_alpha = 1.0f; ozone->animations.scroll_y = 0.0f; ozone->animations.list_alpha = 1.0f; @@ -1376,34 +1377,27 @@ static void ozone_collapse_end(void *userdata) static void ozone_context_destroy(void *data) { + unsigned i; ozone_handle_t *ozone = (ozone_handle_t*) data; if (!ozone) return; - //Theme - for (int i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) - { + /* Theme */ + for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) video_driver_texture_unload(&ozone->theme_textures[i]); - } - //Icons - for (int i = 0; i < OZONE_ENTRIES_ICONS_TEXTURE_LAST; i++) - { + /* Icons */ + for (i = 0; i < OZONE_ENTRIES_ICONS_TEXTURE_LAST; i++) video_driver_texture_unload(&ozone->icons_textures[i]); - } - //Textures - for (int i = 0; i < OZONE_TEXTURE_LAST; i++) - { + /* Textures */ + for (i = 0; i < OZONE_TEXTURE_LAST; i++) video_driver_texture_unload(&ozone->textures[i]); - } - //Icons - for (int i = 0; i < OZONE_TAB_TEXTURE_LAST; i++) - { + /* Icons */ + for (i = 0; i < OZONE_TAB_TEXTURE_LAST; i++) video_driver_texture_unload(&ozone->tab_textures[i]); - } video_driver_texture_unload(&menu_display_white_texture); @@ -1438,7 +1432,7 @@ static void *ozone_list_get_entry(void *data, } break; case MENU_LIST_HORIZONTAL: - //TODO Sidebar + /* TODO Sidebar */ break; default: break; @@ -1447,14 +1441,14 @@ static void *ozone_list_get_entry(void *data, return NULL; } +#if 0 static unsigned ozone_get_system_tab(ozone_handle_t *ozone, unsigned i) { if (i <= ozone->system_tab_end) - { return ozone->tabs[i]; - } return UINT_MAX; } +#endif static size_t ozone_list_get_size(void *data, enum menu_list_type type) { @@ -1468,7 +1462,7 @@ static size_t ozone_list_get_size(void *data, enum menu_list_type type) case MENU_LIST_PLAIN: return menu_entries_get_stack_size(0); case MENU_LIST_HORIZONTAL: - //TODO Return horizontal list size + /* TODO Return horizontal list size */ return 0; case MENU_LIST_TABS: return ozone->system_tab_end; @@ -1739,9 +1733,6 @@ static void ozone_list_clear(file_list_t *list) menu_animation_ctx_tag tag = (uintptr_t)list; menu_animation_kill_by_tag(&tag); - size_t i; - size_t size = list ? list->size : 0; - ozone_free_list_nodes(list, false); } @@ -1760,19 +1751,18 @@ static void ozone_update_scroll(ozone_handle_t *ozone, bool allow_animation, ozo file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); menu_animation_ctx_tag tag = (uintptr_t) selection_buf; menu_animation_ctx_entry_t entry; - float new_scroll = 0; - + float new_scroll = 0, entries_middle; + float bottom_boundary, current_selection_middle_onscreen; unsigned video_info_height; + video_driver_get_size(NULL, &video_info_height); - float currentSelectionMiddleOnScreen = ENTRIES_START_Y + ozone->animations.scroll_y + node->position_y + node->height/2; - float bottom_boundary = video_info_height - 87 - 78; - float entries_middle = video_info_height/2; + current_selection_middle_onscreen = ENTRIES_START_Y + ozone->animations.scroll_y + node->position_y + node->height / 2; + bottom_boundary = video_info_height - 87 - 78; + entries_middle = video_info_height/2; - if (currentSelectionMiddleOnScreen != entries_middle) - { - new_scroll = ozone->animations.scroll_y - (currentSelectionMiddleOnScreen - entries_middle); - } + if (current_selection_middle_onscreen != entries_middle) + new_scroll = ozone->animations.scroll_y - (current_selection_middle_onscreen - entries_middle); if (new_scroll + ozone->entries_height < bottom_boundary) new_scroll = -(78 + ozone->entries_height - bottom_boundary); @@ -1782,7 +1772,7 @@ static void ozone_update_scroll(ozone_handle_t *ozone, bool allow_animation, ozo if (allow_animation) { - //Cursor animation + /* Cursor animation */ ozone->animations.cursor_alpha = 0.0f; entry.cb = NULL; @@ -1795,7 +1785,7 @@ static void ozone_update_scroll(ozone_handle_t *ozone, bool allow_animation, ozo menu_animation_push(&entry); - //Scroll animation + /* Scroll animation */ entry.cb = NULL; entry.duration = ANIMATION_CURSOR_DURATION; entry.easing_enum = EASING_OUT_QUAD; @@ -1816,23 +1806,26 @@ static void ozone_update_scroll(ozone_handle_t *ozone, bool allow_animation, ozo static void ozone_compute_entries_position(ozone_handle_t *ozone) { - //Compute entries height and adjust scrolling if needed - size_t i; + unsigned video_info_height; + /* Compute entries height and adjust scrolling if needed */ + size_t i, entries_end; + file_list_t *selection_buf = NULL; + menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i); - size_t entries_end = menu_entries_get_size(); - file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); + entries_end = menu_entries_get_size(); + selection_buf = menu_entries_get_selection_buf_ptr(0); - unsigned video_info_height; video_driver_get_size(NULL, &video_info_height); ozone->entries_height = 0; for (i = 0; i < entries_end; i++) { - //Entry + /* Entry */ menu_entry_t entry; char entry_value[255]; + ozone_node_t *node = NULL; entry_value[0] = '\0'; @@ -1840,8 +1833,8 @@ static void ozone_compute_entries_position(ozone_handle_t *ozone) menu_entry_get(&entry, 0, (unsigned)i, NULL, true); menu_entry_get_value(&entry, entry_value, sizeof(entry_value)); - //Cache node - ozone_node_t *node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i); + /* Cache node */ + node = (ozone_node_t*)file_list_get_userdata_at_offset(selection_buf, i); if (!node) continue; @@ -1854,7 +1847,7 @@ static void ozone_compute_entries_position(ozone_handle_t *ozone) menu_entry_free(&entry); } - //Update scrolling + /* Update scrolling */ ozone->selection = menu_navigation_get_selection(); ozone_update_scroll(ozone, false, (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, ozone->selection)); } @@ -1862,14 +1855,12 @@ static void ozone_compute_entries_position(ozone_handle_t *ozone) static void ozone_render(void *data, bool is_idle) { size_t i; - unsigned end = (unsigned)menu_entries_get_size(); menu_animation_ctx_delta_t delta; - + unsigned end = (unsigned)menu_entries_get_size(); + ozone_handle_t *ozone = (ozone_handle_t*)data; if (!data) return; - ozone_handle_t *ozone = (ozone_handle_t*) data; - if (ozone->need_compute) { ozone_compute_entries_position(ozone); @@ -1883,7 +1874,7 @@ static void ozone_render(void *data, bool is_idle) if (menu_animation_get_ideal_delta_time(&delta)) menu_animation_update(delta.ideal); - //TODO Handle pointer & mouse + /* TODO Handle pointer & mouse */ menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i); @@ -1943,14 +1934,13 @@ static void ozone_draw_icon( static void ozone_draw_header(ozone_handle_t *ozone, video_frame_info_t *video_info) { - //Separator - menu_display_draw_quad(video_info, 30, 87, video_info->width - 60, 1, video_info->width, video_info->height, ozone->theme->header_footer_separator); - - //Title char title[255]; - menu_animation_ctx_ticker_t ticker; + /* Separator */ + menu_display_draw_quad(video_info, 30, 87, video_info->width - 60, 1, video_info->width, video_info->height, ozone->theme->header_footer_separator); + + /* Title */ ticker.s = title; ticker.len = (video_info->width - 128 - 47 - 130) / ozone->title_font_glyph_width; ticker.idx = ozone->frame_count / 20; @@ -1961,12 +1951,12 @@ static void ozone_draw_header(ozone_handle_t *ozone, video_frame_info_t *video_i ozone_draw_text(video_info, ozone, title, 128, 20 + FONT_SIZE_TITLE, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.title, ozone->theme->text_rgba); - //Icon + /* Icon */ menu_display_blend_begin(video_info); ozone_draw_icon(video_info, 60, 60, ozone->textures[OZONE_TEXTURE_RETROARCH], 47, 14, video_info->width, video_info->height, 0, 1, ozone->theme->entries_icon); menu_display_blend_end(video_info); - //Timedate + /* Timedate */ if (video_info->timedate_enable) { menu_display_ctx_datetime_t datetime; @@ -1991,21 +1981,17 @@ static void ozone_color_alpha(float *color, float alpha) static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_info, settings_t *settings) { - //Separator + char core_title[255]; + /* Separator */ menu_display_draw_quad(video_info, 23, video_info->height - 78, video_info->width - 60, 1, video_info->width, video_info->height, ozone->theme->header_footer_separator); - //Core title or Switch icon - char core_title[255]; + /* Core title or Switch icon */ if (settings->bools.menu_core_enable && menu_entries_get_core_title(core_title, sizeof(core_title)) == 0) - { ozone_draw_text(video_info, ozone, core_title, 59, video_info->height - 49 + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); - } else - { ozone_draw_icon(video_info, 69, 30, ozone->theme_textures[OZONE_THEME_TEXTURE_SWITCH], 59, video_info->height - 52, video_info->width,video_info->height, 0, 1, NULL); - } - //Buttons + /* Buttons */ menu_display_blend_begin(video_info); ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 251, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 133, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); @@ -2017,17 +2003,17 @@ static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_i menu_display_blend_end(video_info); } -//TODO Reduce sidebar width ? +/* TODO Reduce sidebar width ? */ static void ozone_draw_cursor(ozone_handle_t *ozone, video_frame_info_t *video_info, unsigned x_offset, unsigned entry_width, size_t y, float alpha) { ozone_color_alpha(ozone->theme_dynamic.selection_border, alpha); ozone_color_alpha(ozone->theme_dynamic.selection, alpha); - //Fill + /* Fill */ menu_display_draw_quad(video_info, x_offset, y, entry_width, 70 - 10 - 10 - 3, video_info->width, video_info->height, ozone->theme_dynamic.selection); - //Borders (can't do one single quad because of alpha) + /* Borders (can't do one single quad because of alpha) */ menu_display_draw_quad(video_info, x_offset -3, y - 3, entry_width + 6, 3, video_info->width, video_info->height, ozone->theme_dynamic.selection_border); menu_display_draw_quad(video_info, x_offset -3, y + 70 - 10 - 10 - 3, entry_width + 6, 3, video_info->width, video_info->height, ozone->theme_dynamic.selection_border); menu_display_draw_quad(video_info, x_offset -3, y, 3, 70 - 10 - 3 - 6 - 4, video_info->width, video_info->height, ozone->theme_dynamic.selection_border); @@ -2036,26 +2022,29 @@ static void ozone_draw_cursor(ozone_handle_t *ozone, video_frame_info_t *video_i static void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_info) { + size_t y; + unsigned i, sidebar_height; + unsigned selection_y = 0; + unsigned selection_old_y = 0; + if (!ozone->draw_sidebar) return; menu_display_scissor_begin(video_info, 0, 87, 408, video_info->height - 87 - 78); - //Background - unsigned sidebar_height = video_info->height - 87 - 55 - 78; + /* Background */ + sidebar_height = video_info->height - 87 - 55 - 78; menu_display_draw_quad(video_info, ozone->sidebar_offset, 88, 408, 55/2, video_info->width, video_info->height, ozone->theme->sidebar_top_gradient); menu_display_draw_quad(video_info, ozone->sidebar_offset, 88 + 55/2, 408, sidebar_height, video_info->width, video_info->height, ozone->theme->sidebar_background); menu_display_draw_quad(video_info, ozone->sidebar_offset, 55*2 + sidebar_height, 408, 55/2 + 1, video_info->width, video_info->height, ozone->theme->sidebar_bottom_gradient); - //Tabs - //TODO Scroll - unsigned selection_y = 0; - unsigned selection_old_y = 0; + /* Tabs */ + /* TODO Scroll */ - //y offset computation - size_t y = ENTRIES_START_Y - 10; - for (int i = 0; i < OZONE_SYSTEM_TAB_LAST; i++) + /* y offset computation */ + y = ENTRIES_START_Y - 10; + for (i = 0; i < OZONE_SYSTEM_TAB_LAST; i++) { if (i == ozone->categories_selection_ptr) selection_y = y; @@ -2064,29 +2053,32 @@ static void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_ y += 65; } - //Cursor + /* Cursor */ if (ozone->cursor_in_sidebar) ozone_draw_cursor(ozone, video_info, ozone->sidebar_offset + 41, 408-81, selection_y-8, ozone->animations.cursor_alpha); if (ozone->cursor_in_sidebar_old && ozone->categories_selection_ptr != ozone->categories_active_idx_old) ozone_draw_cursor(ozone, video_info, ozone->sidebar_offset + 41, 408-81, selection_old_y-8, 1-ozone->animations.cursor_alpha); - //Icons + /* Icons */ y = ENTRIES_START_Y - 10; menu_display_blend_begin(video_info); - //TODO Cache all the tabs data - for (int i = 0; i < OZONE_SYSTEM_TAB_LAST; i++) - { - bool selected = (ozone->categories_selection_ptr == i); - unsigned icon = ozone_system_tabs_icons[i]; + /* TODO Cache all the tabs data */ - //Icon + for (i = 0; i < OZONE_SYSTEM_TAB_LAST; i++) + { + enum msg_hash_enums value_idx; + const char *title = NULL; + bool selected = (ozone->categories_selection_ptr == i); + unsigned icon = ozone_system_tabs_icons[i]; + + /* Icon */ ozone_draw_icon(video_info, 40, 40, ozone->tab_textures[icon], ozone->sidebar_offset + 41 + 10, y - 5, video_info->width, video_info->height, 0, 1, (selected ? ozone->theme->text_selected : ozone->theme->entries_icon)); - enum msg_hash_enums value_idx = ozone_system_tabs_value[i]; - const char *title = msg_hash_to_str(value_idx); + value_idx = ozone_system_tabs_value[i]; + title = msg_hash_to_str(value_idx); - //Text + /* Text */ ozone_draw_text(video_info, ozone, title, ozone->sidebar_offset + 115 - 10, y + FONT_SIZE_SIDEBAR, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.sidebar, (selected ? ozone->theme->text_selected_rgba : ozone->theme->text_rgba)); y += 65; @@ -2100,12 +2092,14 @@ static void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_ static void ozone_draw_entry_value(ozone_handle_t *ozone, video_frame_info_t *video_info, char *value, unsigned x, unsigned y, uint32_t alpha_uint32) { + enum msg_file_type hash_type; + bool switch_is_on = true; + bool do_draw_text = false; + if (string_is_empty(value)) return; - bool switch_is_on = true; - bool do_draw_text = false; - enum msg_file_type hash_type = msg_hash_to_file_type(msg_hash_calculate(value)); + hash_type = msg_hash_to_file_type(msg_hash_calculate(value)); /* set switch_is_on */ if (string_is_equal(value, msg_hash_to_str(MENU_ENUM_LABEL_DISABLED)) || @@ -2157,29 +2151,28 @@ static void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_ unsigned selection, unsigned selection_old, file_list_t *selection_buf, float alpha, float scroll_y) { - size_t i; - menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i); - - size_t entries_end = file_list_get_size(selection_buf); - unsigned x_offset = 0; - - bool old_list = selection_buf == ozone->selection_buf_old; - - size_t y = ENTRIES_START_Y; - size_t selection_y = 0; + bool old_list; + uint32_t alpha_uint32; + size_t i, y, entries_end; + float sidebar_offset, bottom_boundary, invert, alpha_anim; + unsigned video_info_height, entry_width; + unsigned x_offset = 0; + size_t selection_y = 0; size_t old_selection_y = 0; - float sidebar_offset = ozone->sidebar_offset/2.0f; - unsigned entry_width = video_info->width - 548; + menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i); + + entries_end = file_list_get_size(selection_buf); + old_list = selection_buf == ozone->selection_buf_old; + y = ENTRIES_START_Y; + sidebar_offset = ozone->sidebar_offset / 2.0f; + entry_width = video_info->width - 548; - unsigned video_info_height; video_driver_get_size(NULL, &video_info_height); - float bottom_boundary = video_info_height - 87 - 78; - - float invert = (ozone->fade_direction) ? -1 : 1; - - float alpha_anim = old_list ? alpha : 1.0f - alpha; + bottom_boundary = video_info_height - 87 - 78; + invert = (ozone->fade_direction) ? -1 : 1; + alpha_anim = old_list ? alpha : 1.0f - alpha; if (old_list) alpha = 1.0f - alpha; @@ -2187,28 +2180,27 @@ static void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_ if (alpha != 1.0f) { if (old_list) - x_offset = invert * -(alpha_anim * 120); //left + x_offset = invert * -(alpha_anim * 120); /* left */ else - x_offset = invert * (alpha_anim * 120); //right + x_offset = invert * (alpha_anim * 120); /* right */ } - x_offset += (unsigned) sidebar_offset; + x_offset += (unsigned) sidebar_offset; + alpha_uint32 = (uint32_t)(alpha*255.0f); - uint32_t alpha_uint32 = (uint32_t)(alpha*255.0f); - - //Borders layer + /* Borders layer */ for (i = 0; i < entries_end; i++) { - bool entry_selected = selection == i; + bool entry_selected = selection == i; bool entry_old_selected = selection_old == i; - + ozone_node_t *node = NULL; if (entry_selected) selection_y = y; if (entry_old_selected) old_selection_y = y; - ozone_node_t *node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i); + node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i); if (!node) continue; @@ -2220,7 +2212,7 @@ static void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_ ozone_color_alpha(ozone->theme_dynamic.entries_border, alpha); - //Borders + /* Borders */ menu_display_draw_quad(video_info, x_offset + 456-3, y - 3 + scroll_y, entry_width + 10 - 3 -1, 1, video_info->width, video_info->height, ozone->theme_dynamic.entries_border); menu_display_draw_quad(video_info, x_offset + 456-3, y - 5 + 70 + 10 - 10 - 10 - 3 - 3 + scroll_y, entry_width + 10 - 3-1, 1, video_info->width, video_info->height, ozone->theme_dynamic.entries_border); @@ -2228,24 +2220,30 @@ text_iterate: y += node->height; } - //Cursor(s) layer + /* Cursor(s) layer */ if (!ozone->cursor_in_sidebar) ozone_draw_cursor(ozone, video_info, x_offset + 456, entry_width, selection_y + scroll_y, ozone->animations.cursor_alpha * alpha); if (!ozone->cursor_in_sidebar_old && ozone->selection != ozone->selection_old) ozone_draw_cursor(ozone, video_info, x_offset + 456, entry_width, old_selection_y + scroll_y, 1-ozone->animations.cursor_alpha * alpha); - //Icons + text + /* Icons + text */ y = ENTRIES_START_Y; for (i = 0; i < entries_end; i++) { + unsigned icon; menu_entry_t entry; + menu_animation_ctx_ticker_t ticker; char entry_value[255]; + char rich_label[255]; + char entry_value_ticker[255]; + ozone_node_t *node = NULL; + char *entry_rich_label = NULL; + bool entry_selected = false; - entry_value[0] = '\0'; - - bool entry_selected = selection == i; - ozone_node_t *node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i); + entry_value[0] = '\0'; + entry_selected = selection == i; + node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i); menu_entry_init(&entry); menu_entry_get(&entry, 0, (unsigned)i, selection_buf, true); @@ -2259,8 +2257,8 @@ text_iterate: else if (y + scroll_y - node->height - 20 > bottom_boundary) goto icons_iterate; - //Icon - unsigned icon = ozone_entries_icon_get_id(ozone, entry.enum_idx, entry.type, entry_selected); + /* Icon */ + icon = ozone_entries_icon_get_id(ozone, entry.enum_idx, entry.type, entry_selected); ozone_color_alpha(ozone->theme_dynamic.entries_icon, alpha); @@ -2268,12 +2266,9 @@ text_iterate: ozone_draw_icon(video_info, 46, 46, ozone->icons_textures[icon], x_offset + 451+5+10, y + scroll_y, video_info->width, video_info->height, 0, 1, ozone->theme_dynamic.entries_icon); menu_display_blend_end(video_info); - char *entry_rich_label = NULL; - char rich_label[255]; entry_rich_label = menu_entry_get_rich_label(&entry); - menu_animation_ctx_ticker_t ticker; ticker.idx = ozone->frame_count / 20; ticker.s = rich_label; @@ -2283,12 +2278,11 @@ text_iterate: menu_animation_ticker(&ticker); - //Text + /* Text */ ozone_draw_text(video_info, ozone, rich_label, x_offset + 521, y + FONT_SIZE_ENTRIES_LABEL + 8 - 1 + scroll_y, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.entries_label, (ozone->theme->text_rgba & 0xFFFFFF00) | alpha_uint32); ozone_draw_text(video_info, ozone, entry.sublabel, x_offset + 470, y + FONT_SIZE_ENTRIES_SUBLABEL + 80 - 20 - 3 + scroll_y, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.entries_sublabel, (ozone->theme->text_sublabel_rgba & 0xFFFFFF00) | alpha_uint32); - //Value - char entry_value_ticker[255]; + /* Value */ ticker.idx = ozone->frame_count / 20; ticker.s = entry_value_ticker; @@ -2306,7 +2300,7 @@ icons_iterate: menu_entry_free(&entry); } - //Text layer + /* Text layer */ font_driver_flush(video_info->width, video_info->height, ozone->fonts.entries_label, video_info); font_driver_flush(video_info->width, video_info->height, ozone->fonts.entries_sublabel, video_info); } @@ -2362,18 +2356,18 @@ static void ozone_navigation_alphabet(void *data, size_t *unused) static void ozone_frame(void *data, video_frame_info_t *video_info) { + menu_display_ctx_clearcolor_t clearcolor; ozone_handle_t* ozone = (ozone_handle_t*) data; + settings_t *settings = config_get_ptr(); if (!ozone) return; - settings_t *settings = config_get_ptr(); - ozone->frame_count++; menu_display_set_viewport(video_info->width, video_info->height); - //Clear first layer of text + /* Clear first layer of text */ font_driver_bind_block(ozone->fonts.footer, &ozone->raster_blocks.footer); font_driver_bind_block(ozone->fonts.title, &ozone->raster_blocks.title); font_driver_bind_block(ozone->fonts.time, &ozone->raster_blocks.time); @@ -2388,8 +2382,7 @@ static void ozone_frame(void *data, video_frame_info_t *video_info) ozone->raster_blocks.entries_sublabel.carr.coords.vertices = 0; ozone->raster_blocks.sidebar.carr.coords.vertices = 0; - //Background - menu_display_ctx_clearcolor_t clearcolor; + /* Background */ clearcolor.r = ozone->theme->background_r; clearcolor.g = ozone->theme->background_g; @@ -2398,26 +2391,26 @@ static void ozone_frame(void *data, video_frame_info_t *video_info) menu_display_clear_color(&clearcolor, video_info); - //Header, footer + /* Header, footer */ ozone_draw_header(ozone, video_info); ozone_draw_footer(ozone, video_info, settings); - //Sidebar + /* Sidebar */ ozone_draw_sidebar(ozone, video_info); - //Menu entries + /* Menu entries */ menu_display_scissor_begin(video_info, ozone->sidebar_offset + 408, 87, video_info->width - 408 + (-ozone->sidebar_offset), video_info->height - 87 - 78); - //Current list + /* Current list */ ozone_draw_entries(ozone, video_info, ozone->selection, ozone->selection_old, menu_entries_get_selection_buf_ptr(0), ozone->animations.list_alpha, ozone->animations.scroll_y); - //Old list + /* Old list */ if (ozone->draw_old_list) ozone_draw_entries(ozone, video_info, ozone->selection_old_list, ozone->selection_old_list, ozone->selection_buf_old, ozone->animations.list_alpha, ozone->scroll_old); menu_display_scissor_end(video_info); - //Flush first layer of text + /* Flush first layer of text */ font_driver_flush(video_info->width, video_info->height, ozone->fonts.footer, video_info); font_driver_flush(video_info->width, video_info->height, ozone->fonts.title, video_info); font_driver_flush(video_info->width, video_info->height, ozone->fonts.time, video_info); @@ -2432,7 +2425,7 @@ static void ozone_frame(void *data, video_frame_info_t *video_info) static void ozone_set_header(ozone_handle_t *ozone) { - //TODO Set title of playlist if in a playlist + /* TODO Set title of playlist if in a playlist */ menu_entries_get_title(ozone->title, sizeof(ozone->title)); } @@ -2445,16 +2438,17 @@ static void ozone_animation_end(void *userdata) static void ozone_list_open(ozone_handle_t *ozone) { + struct menu_animation_ctx_entry entry; + if (!ozone->want_horizontal_animation) { ozone->want_horizontal_animation = true; return; } + ozone->draw_old_list = true; - struct menu_animation_ctx_entry entry; - - //Left/right animation + /* Left/right animation */ ozone->animations.list_alpha = 0.0f; entry.cb = ozone_animation_end; @@ -2467,7 +2461,7 @@ static void ozone_list_open(ozone_handle_t *ozone) menu_animation_push(&entry); - //Sidebar animation + /* Sidebar animation */ if (ozone->depth == 1) { ozone->draw_sidebar = true; @@ -2510,7 +2504,8 @@ static void ozone_populate_entries(void *data, const char *path, const char *lab if (menu_driver_ctl(RARCH_MENU_CTL_IS_PREVENT_POPULATE, NULL)) { menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); - //TODO Update thumbnails + + /* TODO Update thumbnails */ ozone_selection_changed(ozone, false); return; } @@ -2559,15 +2554,15 @@ static void ozone_change_tab(ozone_handle_t *ozone, enum msg_hash_enums tab, enu static void ozone_go_to_sidebar(ozone_handle_t *ozone, uintptr_t tag) { - ozone->selection_old = ozone->selection; - ozone->cursor_in_sidebar_old = ozone->cursor_in_sidebar; - ozone->cursor_in_sidebar = true; - - //Cursor animation - ozone->animations.cursor_alpha = 0.0f; - struct menu_animation_ctx_entry entry; + ozone->selection_old = ozone->selection; + ozone->cursor_in_sidebar_old = ozone->cursor_in_sidebar; + ozone->cursor_in_sidebar = true; + + /* Cursor animation */ + ozone->animations.cursor_alpha = 0.0f; + entry.cb = NULL; entry.duration = ANIMATION_CURSOR_DURATION; entry.easing_enum = EASING_OUT_QUAD; @@ -2581,15 +2576,15 @@ static void ozone_go_to_sidebar(ozone_handle_t *ozone, uintptr_t tag) static void ozone_leave_sidebar(ozone_handle_t *ozone, uintptr_t tag) { - ozone->categories_active_idx_old = ozone->categories_selection_ptr; - ozone->cursor_in_sidebar_old = ozone->cursor_in_sidebar; - ozone->cursor_in_sidebar = false; - - //Cursor animation - ozone->animations.cursor_alpha = 0.0f; - struct menu_animation_ctx_entry entry; + ozone->categories_active_idx_old = ozone->categories_selection_ptr; + ozone->cursor_in_sidebar_old = ozone->cursor_in_sidebar; + ozone->cursor_in_sidebar = false; + + /* Cursor animation */ + ozone->animations.cursor_alpha = 0.0f; + entry.cb = NULL; entry.duration = ANIMATION_CURSOR_DURATION; entry.easing_enum = EASING_OUT_QUAD; @@ -2603,20 +2598,21 @@ static void ozone_leave_sidebar(ozone_handle_t *ozone, uintptr_t tag) static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_action action) { - ozone_handle_t *ozone = (ozone_handle_t*) userdata; + int new_selection; + struct menu_animation_ctx_entry entry; + enum menu_action new_action; + menu_animation_ctx_tag tag; + file_list_t *selection_buf = NULL; + ozone_handle_t *ozone = (ozone_handle_t*) userdata; if (!ozone) return generic_menu_iterate(menu, userdata, action); - file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); + selection_buf = menu_entries_get_selection_buf_ptr(0); + tag = (uintptr_t)selection_buf; + new_action = action; - menu_animation_ctx_tag tag = (uintptr_t)selection_buf; - int new_selection; - struct menu_animation_ctx_entry entry; - - enum menu_action new_action = action; - - //Inputs override + /* Inputs override */ switch (action) { case MENU_ACTION_DOWN: @@ -2627,7 +2623,7 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act new_selection = (ozone->categories_selection_ptr + 1); - if (new_selection >= ozone->system_tab_end + 2) //TODO Check against actual tabs count and not just system tabs + if (new_selection >= ozone->system_tab_end + 2) /* TODO Check against actual tabs count and not just system tabs */ new_selection = 0; if (ozone->categories_selection_ptr != new_selection) @@ -2640,7 +2636,7 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act menu_animation_kill_by_tag(&tag); } - //Cursor animation + /* Cursor animation */ ozone->animations.cursor_alpha = 0.0f; entry.cb = NULL; @@ -2666,7 +2662,7 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act new_selection = ozone->categories_selection_ptr - 1; if (new_selection < 0) - new_selection = ozone->system_tab_end + 1; //TODO Set this to actual tabs count and not just system tabs + new_selection = ozone->system_tab_end + 1; /* TODO Set this to actual tabs count and not just system tabs */ if (ozone->categories_selection_ptr != new_selection) { @@ -2678,7 +2674,7 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act menu_animation_kill_by_tag(&tag); } - //Cursor animation + /* Cursor animation */ ozone->animations.cursor_alpha = 0.0f; entry.cb = NULL; @@ -2702,10 +2698,7 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act break; } else if (ozone->depth > 1) - { break; - } - ozone_go_to_sidebar(ozone, tag); @@ -2754,10 +2747,11 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act return generic_menu_iterate(menu, userdata, new_action); } -//TODO Fancy toggle animation +/* TODO Fancy toggle animation */ static void ozone_toggle(void *userdata, bool menu_on) { + bool tmp = false; ozone_handle_t *ozone = (ozone_handle_t*) userdata; if (!menu_on) { @@ -2771,7 +2765,7 @@ static void ozone_toggle(void *userdata, bool menu_on) menu_display_clear_color(&clearcolor, NULL); } - bool tmp = !menu_entries_ctl(MENU_ENTRIES_CTL_NEEDS_REFRESH, NULL); + tmp = !menu_entries_ctl(MENU_ENTRIES_CTL_NEEDS_REFRESH, NULL); if (tmp) menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); @@ -2892,9 +2886,8 @@ static void ozone_list_deep_copy(const file_list_t *src, file_list_t *dst, { struct item_file *d = &dst->list[j]; struct item_file *s = &src->list[i]; - - void *src_udata = s->userdata; - void *src_adata = s->actiondata; + void *src_udata = s->userdata; + void *src_adata = s->actiondata; *d = *s; d->alt = string_is_empty(d->alt) ? NULL : strdup(d->alt); @@ -2920,27 +2913,29 @@ static void ozone_list_deep_copy(const file_list_t *src, file_list_t *dst, static void ozone_list_cache(void *data, enum menu_list_type type, unsigned action) { - ozone_handle_t *ozone = (ozone_handle_t*)data; + size_t y, entries_end; + unsigned i; + unsigned video_info_height; + float bottom_boundary; + unsigned first = 0; + unsigned last = 0; + file_list_t *selection_buf = NULL; + ozone_handle_t *ozone = (ozone_handle_t*)data; if (!ozone) return; - ozone->need_compute = true; + ozone->need_compute = true; + ozone->selection_old_list = ozone->selection; + ozone->scroll_old = ozone->animations.scroll_y; - ozone->selection_old_list = ozone->selection; - ozone->scroll_old = ozone->animations.scroll_y; - - //Deep copy visible elements - unsigned first = 0; - unsigned last = 0; - - unsigned video_info_height; + /* Deep copy visible elements */ video_driver_get_size(NULL, &video_info_height); - size_t y = ENTRIES_START_Y; - int i; - size_t entries_end = menu_entries_get_size(); - file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); - float bottom_boundary = video_info_height - 87 - 78; + y = ENTRIES_START_Y; + entries_end = menu_entries_get_size(); + selection_buf = menu_entries_get_selection_buf_ptr(0); + bottom_boundary = video_info_height - 87 - 78; + for (i = 0; i < entries_end; i++) { ozone_node_t *node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i); @@ -2954,9 +2949,7 @@ static void ozone_list_cache(void *data, goto text_iterate; } else if (y + ozone->animations.scroll_y - node->height - 20 > bottom_boundary) - { goto text_iterate; - } last++; text_iterate: @@ -2971,7 +2964,7 @@ text_iterate: static void ozone_refresh_consoles_list(ozone_handle_t *ozone) { menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - //TODO Refresh consoles list (= horizontal list) + /* TODO Refresh consoles list (= horizontal list) */ } static int ozone_environ_cb(enum menu_environ_cb type, void *data, void *userdata) @@ -2994,8 +2987,8 @@ static int ozone_environ_cb(enum menu_environ_cb type, void *data, void *userdat } menu_ctx_driver_t menu_ctx_ozone = { - NULL, //set_texture - NULL, //render_messagebox + NULL, /* set_texture */ + NULL, /* render_messagebox */ ozone_menu_iterate, ozone_render, ozone_frame, @@ -3014,7 +3007,7 @@ menu_ctx_driver_t menu_ctx_ozone = { ozone_navigation_alphabet, ozone_menu_init_list, ozone_list_insert, - NULL, //list_prepend + NULL, /* list_prepend */ ozone_list_free, ozone_list_clear, ozone_list_cache, @@ -3022,17 +3015,17 @@ menu_ctx_driver_t menu_ctx_ozone = { ozone_list_get_selection, ozone_list_get_size, ozone_list_get_entry, - NULL, //list_set_selection, - NULL, //bind_init - NULL, //load_image + NULL, /* list_set_selection */ + NULL, /* bind_init */ + NULL, /* load_image */ "ozone", ozone_environ_cb, - NULL, //pointer_tap - NULL, //update_thumbnail_path - NULL, //update_thumbnail_image - NULL, //set_thumbnail_system - NULL, //set_thumbnail_content + NULL, /* pointer_tap */ + NULL, /* update_thumbnail_path */ + NULL, /* update_thumbnail_image */ + NULL, /* set_thumbnail_system */ + NULL, /* set_thumbnail_content */ menu_display_osk_ptr_at_pos, - NULL, //update_savestate_thumbnail_path - NULL //update_savestate_thumbnail_image -}; \ No newline at end of file + NULL, /* update_savestate_thumbnail_path */ + NULL /* update_savestate_thumbnail_image */ +}; From 199bc744b3e3bdd78e79a8944575481d54caf7da Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Oct 2018 04:47:12 +0200 Subject: [PATCH 115/304] (Ozone) Use strlcpy/strlcat --- menu/drivers/ozone.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index 719c737621..5aa6a1859f 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -79,7 +79,7 @@ enum OZONE_THEME_TEXTURES { static char* OZONE_THEME_TEXTURES_FILES[OZONE_THEME_TEXTURE_LAST] = { "button_a", "button_b", - "switch", + "switch" }; enum OZONE_TAB_TEXTURES { @@ -1321,8 +1321,8 @@ static void ozone_context_reset(void *data, bool is_threaded) for (i = 0; i < OZONE_TEXTURE_LAST; i++) { char filename[PATH_MAX_LENGTH]; - strcpy(filename, OZONE_TEXTURES_FILES[i]); - strcat(filename, ".png"); + strlcpy(filename, OZONE_TEXTURES_FILES[i], sizeof(filename)); + strlcat(filename, ".png", sizeof(filename)); menu_display_reset_textures_list(filename, ozone->png_path, &ozone->textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); } @@ -1331,8 +1331,8 @@ static void ozone_context_reset(void *data, bool is_threaded) for (i = 0; i < OZONE_TAB_TEXTURE_LAST; i++) { char filename[PATH_MAX_LENGTH]; - strcpy(filename, OZONE_TAB_TEXTURES_FILES[i]); - strcat(filename, ".png"); + strlcpy(filename, OZONE_TAB_TEXTURES_FILES[i], sizeof(filename)); + strlcat(filename, ".png", sizeof(filename)); menu_display_reset_textures_list(filename, ozone->tab_path, &ozone->tab_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); } @@ -1341,8 +1341,8 @@ static void ozone_context_reset(void *data, bool is_threaded) for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) { char filename[PATH_MAX_LENGTH]; - strcpy(filename, OZONE_THEME_TEXTURES_FILES[i]); - strcat(filename, ".png"); + strlcpy(filename, OZONE_THEME_TEXTURES_FILES[i], sizeof(filename)); + strlcat(filename, ".png", sizeof(filename)); menu_display_reset_textures_list(filename, ozone->theme_path, &ozone->theme_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); } From 9b72a3337c85572b7c0d8bb8a2760755a179093d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Oct 2018 05:29:28 +0200 Subject: [PATCH 116/304] (Dutch) Update Dutch translation (Ozone) Update hardcoded label --- intl/msg_hash_nl.h | 20 ++++++++++++++++---- menu/drivers/ozone.c | 4 +++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index 2c42e03c06..8bbd21ab6e 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -527,6 +527,10 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_FALSE, "Niet waar") MSG_HASH(MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO, "Maximale afspeelsnelheid") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FAVORITES_TAB, + "Favorieten" + ) MSG_HASH(MENU_ENUM_LABEL_VALUE_FPS_SHOW, "Framerate weergeven") MSG_HASH(MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_ENABLE, @@ -1174,6 +1178,14 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_RGUI_SHOW_START_SCREEN, "Start Scherm Weergeven") MSG_HASH(MENU_ENUM_LABEL_VALUE_RIGHT_ANALOG, "Rechtse Analog Stick") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES, + "Toevoegen aan Favorieten" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES_PLAYLIST, + "Toevoegen aan Favorieten" + ) MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN, "Run") MSG_HASH(MENU_ENUM_LABEL_VALUE_SAMBA_ENABLE, @@ -1533,7 +1545,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX, MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_POST_FILTER_RECORD, "Post Filter Opname Activeren") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE, - "Vertical Refresh Rate") + "Verticale Refresh Rate") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO, "Geschatte Scherm Framerate") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_POLLED, @@ -1589,9 +1601,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN, "Windowed Fullscreen Mode") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH, - "Window Width") + "Window Breedte") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT, - "Window Height") + "Window Hoogte") MSG_HASH(MENU_ENUM_LABEL_VALUE_WIFI_DRIVER, "Wi-Fi Driver") MSG_HASH(MENU_ENUM_LABEL_VALUE_WIFI_SETTINGS, @@ -3105,7 +3117,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, MSG_HASH(MSG_SCANNING_OF_FILE_FINISHED, "Scanning of file finished") MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, - "Audio Resampler Quality") + "Audio Resampler Kwaliteit") MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_RESAMPLER_QUALITY, "Lower this value to favor performance/lower latency over audio quality, increase if you want better audio quality at the expense of performance/lower latency.") MSG_HASH(MENU_ENUM_LABEL_VALUE_STATISTICS_SHOW, diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index 5aa6a1859f..c42d387e90 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -2143,7 +2143,9 @@ static void ozone_draw_entry_value(ozone_handle_t *ozone, video_frame_info_t *vi } else { - ozone_draw_text(video_info, ozone, (switch_is_on ? "On" : "Off"), x, y, TEXT_ALIGN_RIGHT, video_info->width, video_info->height, ozone->fonts.entries_label, ((switch_is_on ? ozone->theme->text_selected_rgba : ozone->theme->text_sublabel_rgba) & 0xFFFFFF00) | alpha_uint32); + ozone_draw_text(video_info, ozone, (switch_is_on ? msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ON) : msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF)), + x, y, TEXT_ALIGN_RIGHT, video_info->width, video_info->height, ozone->fonts.entries_label, + ((switch_is_on ? ozone->theme->text_selected_rgba : ozone->theme->text_sublabel_rgba) & 0xFFFFFF00) | alpha_uint32); } } From 622bef1f7a8c22b2f25fa02938b4557ce161ec43 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Oct 2018 05:48:44 +0200 Subject: [PATCH 117/304] Dehardcode some more strings --- intl/msg_hash_ar.h | 4 ++++ intl/msg_hash_chs.h | 4 ++++ intl/msg_hash_cht.h | 4 ++++ intl/msg_hash_de.h | 4 ++++ intl/msg_hash_el.h | 6 +++++- intl/msg_hash_eo.h | 4 ++++ intl/msg_hash_es.h | 4 ++++ intl/msg_hash_fr.h | 4 ++++ intl/msg_hash_it.h | 4 ++++ intl/msg_hash_ja.h | 4 ++++ intl/msg_hash_ko.h | 4 ++++ intl/msg_hash_nl.h | 4 ++++ intl/msg_hash_pl.h | 4 ++++ intl/msg_hash_pt_br.h | 4 ++++ intl/msg_hash_pt_pt.h | 4 ++++ intl/msg_hash_ru.h | 4 ++++ intl/msg_hash_us.h | 4 ++++ intl/msg_hash_vn.h | 4 ++++ menu/drivers/ozone.c | 4 ++-- msg_hash.h | 1 + 20 files changed, 76 insertions(+), 3 deletions(-) diff --git a/intl/msg_hash_ar.h b/intl/msg_hash_ar.h index e47f4ba0c0..079ffd8eff 100644 --- a/intl/msg_hash_ar.h +++ b/intl/msg_hash_ar.h @@ -3674,3 +3674,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reset the current configuration to default values." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_chs.h b/intl/msg_hash_chs.h index 70ab24efab..23e1fda66c 100644 --- a/intl/msg_hash_chs.h +++ b/intl/msg_hash_chs.h @@ -4693,3 +4693,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "将当前配置文件的所有设置恢复为默认。" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_cht.h b/intl/msg_hash_cht.h index 41a56ad911..5ab5d0ffd8 100644 --- a/intl/msg_hash_cht.h +++ b/intl/msg_hash_cht.h @@ -3450,3 +3450,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reset the current configuration to default values." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_de.h b/intl/msg_hash_de.h index a9eccfa635..a89fc2a391 100644 --- a/intl/msg_hash_de.h +++ b/intl/msg_hash_de.h @@ -3586,3 +3586,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Setzt die momentane Konfiguration auf die Standardwerte zurück." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h index 8343d39cda..ae135a288a 100644 --- a/intl/msg_hash_el.h +++ b/intl/msg_hash_el.h @@ -7674,4 +7674,8 @@ MSG_HASH( MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Επαναφορά της τρέχουσας διαμόρφωσης στις προεπιλεγμένες ρυθμίσεις." - ) \ No newline at end of file + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_eo.h b/intl/msg_hash_eo.h index 763b4cf48e..520a48c0e2 100644 --- a/intl/msg_hash_eo.h +++ b/intl/msg_hash_eo.h @@ -3325,3 +3325,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reset the current configuration to default values." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index 6c40ffa0c1..6c034d9292 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -7613,3 +7613,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reset the current configuration to default values." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index 772a6a0c57..9dbc67b5ae 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -3484,3 +3484,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reset the current configuration to default values." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_it.h b/intl/msg_hash_it.h index 6cad54ff30..b0f56210f9 100644 --- a/intl/msg_hash_it.h +++ b/intl/msg_hash_it.h @@ -3544,3 +3544,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reimposta la configurazione corrente ai valori predefiniti." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index 66f0aa5dc1..f84b29b3ab 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -3993,3 +3993,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "現在の設定をデフォルトの値に戻します。" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index dab570bc6b..18a66cbcd7 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -3445,3 +3445,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reset the current configuration to default values." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index 8bbd21ab6e..d82696f30c 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -3331,3 +3331,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reset de instellingen aar fabrieksinstellingen." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "Oke" + ) diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 6d529b1503..e566952638 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -3747,3 +3747,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Zresetuj bieżącą konfigurację do wartości domyślnych." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index cf21f460b4..a5ef3d98b4 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -7707,3 +7707,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Restaura a configuração atual para os valores padrão." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_pt_pt.h b/intl/msg_hash_pt_pt.h index 63b4a10704..823cd0252d 100644 --- a/intl/msg_hash_pt_pt.h +++ b/intl/msg_hash_pt_pt.h @@ -3411,3 +3411,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reset the current configuration to default values." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_ru.h b/intl/msg_hash_ru.h index 40e25890a3..1f5e2e6710 100644 --- a/intl/msg_hash_ru.h +++ b/intl/msg_hash_ru.h @@ -3614,3 +3614,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reset the current configuration to default values." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 6b4c968fcd..2dfb3ff14a 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -7707,3 +7707,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reset the current configuration to default values." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/intl/msg_hash_vn.h b/intl/msg_hash_vn.h index d03dd162d4..0cb6d32bce 100644 --- a/intl/msg_hash_vn.h +++ b/intl/msg_hash_vn.h @@ -3482,3 +3482,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, "Reset the current configuration to default values." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index c42d387e90..c0b6970b85 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -1997,8 +1997,8 @@ static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_i ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 133, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); menu_display_blend_end(video_info); - ozone_draw_text(video_info, ozone, "Back", video_info->width - 215, video_info->height - 49 + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); - ozone_draw_text(video_info, ozone, "OK", video_info->width - 96, video_info->height - 49 + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); + ozone_draw_text(video_info, ozone, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK), video_info->width - 215, video_info->height - 49 + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); + ozone_draw_text(video_info, ozone, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK), video_info->width - 96, video_info->height - 49 + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); menu_display_blend_end(video_info); } diff --git a/msg_hash.h b/msg_hash.h index 49a6ae1d41..84f87a94b8 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -909,6 +909,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_UP, MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_DOWN, MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_CONFIRM, + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK, MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_START, MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_INFO, From 75d36ebc1f672cee3197f6ec33a0b72f7f19a924 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Oct 2018 06:18:56 +0200 Subject: [PATCH 118/304] (Ozone) Button legend now responds to 'Menu Swap OK/Cancel' setting --- gfx/video_driver.c | 1 + gfx/video_driver.h | 1 + menu/drivers/ozone.c | 47 ++++++++++++++++++++++++++++++++++++++------ 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index c469a7d66f..42316c54c7 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -2748,6 +2748,7 @@ void video_driver_build_info(video_frame_info_t *video_info) video_info->scale_integer = settings->bools.video_scale_integer; video_info->aspect_ratio_idx = settings->uints.video_aspect_ratio_idx; video_info->post_filter_record = settings->bools.video_post_filter_record; + video_info->input_menu_swap_ok_cancel_buttons = settings->bools.input_menu_swap_ok_cancel_buttons; video_info->max_swapchain_images = settings->uints.video_max_swapchain_images; video_info->windowed_fullscreen = settings->bools.video_windowed_fullscreen; video_info->fullscreen = settings->bools.video_fullscreen || retroarch_is_forced_fullscreen(); diff --git a/gfx/video_driver.h b/gfx/video_driver.h index ee2a567501..de028e4900 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -404,6 +404,7 @@ typedef struct video_info typedef struct video_frame_info { + bool input_menu_swap_ok_cancel_buttons; bool input_driver_nonblock_state; bool shared_context; bool black_frame_insertion; diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index c0b6970b85..8fdc2d8c88 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -1992,13 +1992,48 @@ static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_i ozone_draw_icon(video_info, 69, 30, ozone->theme_textures[OZONE_THEME_TEXTURE_SWITCH], 59, video_info->height - 52, video_info->width,video_info->height, 0, 1, NULL); /* Buttons */ - menu_display_blend_begin(video_info); - ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 251, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); - ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 133, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); - menu_display_blend_end(video_info); - ozone_draw_text(video_info, ozone, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK), video_info->width - 215, video_info->height - 49 + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); - ozone_draw_text(video_info, ozone, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK), video_info->width - 96, video_info->height - 49 + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); + { + unsigned back_width = 215; + unsigned back_height = 49; + unsigned ok_width = 96; + unsigned ok_height = 49; + bool do_swap = video_info->input_menu_swap_ok_cancel_buttons; + + if (do_swap) + { + back_width = 96; + back_height = 49; + ok_width = 215; + ok_height = 49; + } + + menu_display_blend_begin(video_info); + + if (do_swap) + { + ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 133, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); + ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 251, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); + } + else + { + ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 251, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); + ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 133, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); + } + + menu_display_blend_end(video_info); + + ozone_draw_text(video_info, ozone, + do_swap ? + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK) : + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK), + video_info->width - back_width, video_info->height - back_height + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); + ozone_draw_text(video_info, ozone, + do_swap ? + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK) : + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK), + video_info->width - ok_width, video_info->height - ok_height + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); + } menu_display_blend_end(video_info); } From b1c9b4919a2edfd569356c5a592151ca985e68e2 Mon Sep 17 00:00:00 2001 From: LamboLighting Date: Sat, 27 Oct 2018 11:41:56 +0300 Subject: [PATCH 119/304] Update Greek Translation More updates. Most of the basic menu has been translated. --- intl/msg_hash_el.h | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h index 8343d39cda..f2a5ba4e20 100644 --- a/intl/msg_hash_el.h +++ b/intl/msg_hash_el.h @@ -1184,27 +1184,27 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, - "Cheat index -" + "Κατάλογος απάτης -" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, - "Cheat index +" + "Κατάλογος απάτης +" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, - "Cheat toggle" + "Απάτες" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, - "Disk eject toggle" + "Εξαγωγή δίσκου" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, - "Disk next" + "Επόμενος δίσκος" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, - "Disk prev" + "Προηγούμενος δίσκος" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, @@ -1212,11 +1212,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY, - "Fast forward hold" + "Παύση γρήγορης κίνησης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, - "Fast forward toggle" + "Γρήγορη κίνηση" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, @@ -1228,19 +1228,19 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, - "Grab mouse toggle" + "Κλείδωμα ποντικιού" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, - "Game focus toggle" + "Εστίαση παιχνιδιού" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_UI_COMPANION_TOGGLE, - "Desktop menu toggle" + "Μενού επιφάνειας" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, - "Load state" + "Φόρτωση κατάστασης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, @@ -1256,7 +1256,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, - "Netplay toggle play/spectate mode" + "Εναλλαγή κατάστασης παιχνιδιού/θεατή Netplay" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, @@ -1264,7 +1264,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, - "Overlay next" + "Επόμενο επικάλλυμα" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, @@ -1276,7 +1276,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, - "Reset game" + "Επαναφορά παιχνιδιού" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, @@ -1292,7 +1292,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, - "Save state" + "Αποθήκευση κατάστασης" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, @@ -1316,11 +1316,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, - "Savestate slot -" + "Θέση κατάστασης αποθήκευσης -" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, - "Savestate slot +" + "Θέση κατάστασης αποθήκευσης +" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, @@ -4404,7 +4404,7 @@ MSG_HASH( ) MSG_HASH( MSG_FAST_FORWARD, - "Fast forward." + "Γρήγορη κίνηση." ) MSG_HASH( MSG_SLOW_MOTION_REWIND, @@ -4520,7 +4520,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_POLL_TYPE_BEHAVIOR, - "Influence how input polling is done inside RetroArch. Setting it to 'Early' or 'Late' can result in less latency, depending on your configuration." + "Επιρροή του πως γίνεται η συγκέντρωση εισόδου μέσα στο RetroArch. Ο ορισμός σε 'Νωρίς' ή 'Αργά' μπορεί να έχει ως αποτέλεσμα μικρότερη καθυστέρηση με τις ρυθμίσεις σας." ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_ALL_USERS_CONTROL_MENU, From f50b18414928200e8b13a2872bbc9c425698d854 Mon Sep 17 00:00:00 2001 From: natinusala Date: Sat, 27 Oct 2018 14:31:26 +0200 Subject: [PATCH 120/304] ozone: build it for libnx platform, don't set it as default yet --- Makefile.libnx | 2 +- configuration.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.libnx b/Makefile.libnx index 709f03364c..22fc9ccc76 100644 --- a/Makefile.libnx +++ b/Makefile.libnx @@ -58,7 +58,7 @@ ifeq ($(HAVE_OPENGL), 1) HAVE_ZARCH = 0 HAVE_XMB = 1 - HAVE_OZONE = 0 + HAVE_OZONE = 1 HAVE_STRIPES = 0 HAVE_OVERLAY = 1 diff --git a/configuration.c b/configuration.c index 7dfa178c30..1ab4bb23fe 100644 --- a/configuration.c +++ b/configuration.c @@ -535,8 +535,8 @@ static enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_NULL; static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_XUI; #elif defined(HAVE_MATERIALUI) && defined(RARCH_MOBILE) static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_MATERIALUI; -#elif defined(HAVE_OZONE) && defined(HAVE_LIBNX) -static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_OZONE; +/* #elif defined(HAVE_OZONE) && defined(HAVE_LIBNX) +static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_OZONE; */ #elif defined(HAVE_XMB) && !defined(_XBOX) static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_XMB; #elif defined(HAVE_RGUI) From 8e37ad858aedcf05278fd42439b4f677d5e167cb Mon Sep 17 00:00:00 2001 From: natinusala Date: Sat, 27 Oct 2018 14:42:47 +0200 Subject: [PATCH 121/304] ozone: fix horizontal animation on libnx --- menu/drivers/ozone.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index 8fdc2d8c88..cee9c6058e 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -2040,7 +2040,7 @@ static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_i /* TODO Reduce sidebar width ? */ -static void ozone_draw_cursor(ozone_handle_t *ozone, video_frame_info_t *video_info, unsigned x_offset, unsigned entry_width, size_t y, float alpha) +static void ozone_draw_cursor(ozone_handle_t *ozone, video_frame_info_t *video_info, int x_offset, unsigned entry_width, size_t y, float alpha) { ozone_color_alpha(ozone->theme_dynamic.selection_border, alpha); ozone_color_alpha(ozone->theme_dynamic.selection, alpha); @@ -2193,7 +2193,7 @@ static void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_ size_t i, y, entries_end; float sidebar_offset, bottom_boundary, invert, alpha_anim; unsigned video_info_height, entry_width; - unsigned x_offset = 0; + int x_offset = 0; size_t selection_y = 0; size_t old_selection_y = 0; @@ -2222,7 +2222,7 @@ static void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_ x_offset = invert * (alpha_anim * 120); /* right */ } - x_offset += (unsigned) sidebar_offset; + x_offset += (int) sidebar_offset; alpha_uint32 = (uint32_t)(alpha*255.0f); /* Borders layer */ From 52ab4a58a215e83640343007e358fe73896a2d6c Mon Sep 17 00:00:00 2001 From: natinusala Date: Sat, 27 Oct 2018 14:51:19 +0200 Subject: [PATCH 122/304] ozone: fix tabs wrapping --- menu/drivers/ozone.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index cee9c6058e..fd77e559f9 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -2660,7 +2660,7 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act new_selection = (ozone->categories_selection_ptr + 1); - if (new_selection >= ozone->system_tab_end + 2) /* TODO Check against actual tabs count and not just system tabs */ + if (new_selection > ozone->system_tab_end) /* TODO Check against actual tabs count and not just system tabs */ new_selection = 0; if (ozone->categories_selection_ptr != new_selection) @@ -2699,7 +2699,7 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act new_selection = ozone->categories_selection_ptr - 1; if (new_selection < 0) - new_selection = ozone->system_tab_end + 1; /* TODO Set this to actual tabs count and not just system tabs */ + new_selection = ozone->system_tab_end; /* TODO Set this to actual tabs count and not just system tabs */ if (ozone->categories_selection_ptr != new_selection) { From 624698d2d9b47fde24a0e275cea5a5a04d07fa29 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Oct 2018 16:50:48 +0200 Subject: [PATCH 123/304] (Ozone) Add menu color theme --- configuration.c | 3 +++ configuration.h | 1 + gfx/video_driver.c | 1 + gfx/video_driver.h | 1 + intl/msg_hash_ar.h | 14 ++++++++++ intl/msg_hash_chs.h | 14 ++++++++++ intl/msg_hash_cht.h | 14 ++++++++++ intl/msg_hash_de.h | 14 ++++++++++ intl/msg_hash_el.h | 16 ++++++++++++ intl/msg_hash_eo.h | 14 ++++++++++ intl/msg_hash_es.h | 16 ++++++++++++ intl/msg_hash_fr.h | 14 ++++++++++ intl/msg_hash_it.h | 14 ++++++++++ intl/msg_hash_ja.h | 14 ++++++++++ intl/msg_hash_ko.h | 14 ++++++++++ intl/msg_hash_lbl.h | 2 ++ intl/msg_hash_nl.h | 14 ++++++++++ intl/msg_hash_pl.h | 14 ++++++++++ intl/msg_hash_pt_br.h | 16 ++++++++++++ intl/msg_hash_pt_pt.h | 14 ++++++++++ intl/msg_hash_ru.h | 14 ++++++++++ intl/msg_hash_us.h | 16 ++++++++++++ intl/msg_hash_vn.h | 16 ++++++++++++ menu/cbs/menu_cbs_sublabel.c | 4 +++ menu/drivers/ozone.c | 46 ++++++++++++++++++++++++--------- menu/menu_displaylist.c | 4 +++ menu/menu_setting.c | 50 ++++++++++++++++++++++++++++++++++++ msg_hash.h | 6 ++++- 28 files changed, 367 insertions(+), 13 deletions(-) diff --git a/configuration.c b/configuration.c index 1ab4bb23fe..4b391bcd2a 100644 --- a/configuration.c +++ b/configuration.c @@ -1603,6 +1603,9 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, #endif SETTING_UINT("materialui_menu_color_theme", &settings->uints.menu_materialui_color_theme, true, MATERIALUI_THEME_BLUE, false); SETTING_UINT("menu_shader_pipeline", &settings->uints.menu_xmb_shader_pipeline, true, menu_shader_pipeline, false); +#ifdef HAVE_OZONE + SETTING_UINT("ozone_menu_color_theme", &settings->uints.menu_ozone_color_theme, true, 0, false); +#endif #endif SETTING_UINT("audio_out_rate", &settings->uints.audio_out_rate, true, out_rate, false); SETTING_UINT("custom_viewport_width", &settings->video_viewport_custom.width, false, 0 /* TODO */, false); diff --git a/configuration.h b/configuration.h index ec4dc7dce4..be17dcdbd3 100644 --- a/configuration.h +++ b/configuration.h @@ -407,6 +407,7 @@ typedef struct settings unsigned menu_xmb_theme; unsigned menu_xmb_color_theme; unsigned menu_materialui_color_theme; + unsigned menu_ozone_color_theme; unsigned menu_font_color_red; unsigned menu_font_color_green; unsigned menu_font_color_blue; diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 42316c54c7..d7824f6429 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -2786,6 +2786,7 @@ void video_driver_build_info(video_frame_info_t *video_info) video_info->menu_footer_opacity = settings->floats.menu_footer_opacity; video_info->menu_header_opacity = settings->floats.menu_header_opacity; video_info->materialui_color_theme = settings->uints.menu_materialui_color_theme; + video_info->ozone_color_theme = settings->uints.menu_ozone_color_theme; video_info->menu_shader_pipeline = settings->uints.menu_xmb_shader_pipeline; video_info->xmb_theme = settings->uints.menu_xmb_theme; video_info->xmb_color_theme = settings->uints.menu_xmb_color_theme; diff --git a/gfx/video_driver.h b/gfx/video_driver.h index de028e4900..4c151afbbb 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -445,6 +445,7 @@ typedef struct video_frame_info unsigned xmb_color_theme; unsigned menu_shader_pipeline; unsigned materialui_color_theme; + unsigned ozone_color_theme; unsigned custom_vp_width; unsigned custom_vp_height; unsigned custom_vp_full_width; diff --git a/intl/msg_hash_ar.h b/intl/msg_hash_ar.h index 079ffd8eff..735fc4b348 100644 --- a/intl/msg_hash_ar.h +++ b/intl/msg_hash_ar.h @@ -3678,3 +3678,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Menu Color Theme") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_chs.h b/intl/msg_hash_chs.h index 23e1fda66c..372b064faa 100644 --- a/intl/msg_hash_chs.h +++ b/intl/msg_hash_chs.h @@ -4697,3 +4697,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "菜单颜色主题") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_cht.h b/intl/msg_hash_cht.h index 5ab5d0ffd8..823e6ef5d7 100644 --- a/intl/msg_hash_cht.h +++ b/intl/msg_hash_cht.h @@ -3454,3 +3454,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "選單顏色主題") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_de.h b/intl/msg_hash_de.h index a89fc2a391..83af071a0f 100644 --- a/intl/msg_hash_de.h +++ b/intl/msg_hash_de.h @@ -3590,3 +3590,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Menü-Farbschema") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h index bd005db366..90c17e6578 100644 --- a/intl/msg_hash_el.h +++ b/intl/msg_hash_el.h @@ -7679,3 +7679,19 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Χρώμα Θέματος Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_eo.h b/intl/msg_hash_eo.h index 520a48c0e2..e5bd3a414f 100644 --- a/intl/msg_hash_eo.h +++ b/intl/msg_hash_eo.h @@ -3329,3 +3329,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Menu Color Theme") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index 6c034d9292..eee1deba98 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -7617,3 +7617,19 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Tema de color del menú" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index 9dbc67b5ae..d4ac5377df 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -3488,3 +3488,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Couleur du thème du menu") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_it.h b/intl/msg_hash_it.h index b0f56210f9..22cd3dea9c 100644 --- a/intl/msg_hash_it.h +++ b/intl/msg_hash_it.h @@ -3548,3 +3548,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Colore del tema di Menu ") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index f84b29b3ab..c055952a4e 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -3997,3 +3997,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "メニューの色テーマ") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index 18a66cbcd7..799a1ee190 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -3449,3 +3449,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "메뉴 테마 색상") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 1be69e735f..3e5b127709 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -643,6 +643,8 @@ MSG_HASH(MENU_ENUM_LABEL_MAIN_MENU, "main_menu") MSG_HASH(MENU_ENUM_LABEL_MANAGEMENT, "database_settings") +MSG_HASH(MENU_ENUM_LABEL_OZONE_MENU_COLOR_THEME, + "ozone_menu_color_theme") MSG_HASH(MENU_ENUM_LABEL_MATERIALUI_MENU_COLOR_THEME, "materialui_menu_color_theme") MSG_HASH(MENU_ENUM_LABEL_MATERIALUI_MENU_FOOTER_OPACITY, diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index d82696f30c..0fa9f7584c 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -3335,3 +3335,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "Oke" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Menu Kleur Thema") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index e566952638..76598fcfec 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -3751,3 +3751,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Kolor menu") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index a5ef3d98b4..c7dd694772 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -7711,3 +7711,19 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Tema de Cor do Menu" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_pt_pt.h b/intl/msg_hash_pt_pt.h index 823cd0252d..eb15d1330e 100644 --- a/intl/msg_hash_pt_pt.h +++ b/intl/msg_hash_pt_pt.h @@ -3415,3 +3415,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Tema da cor do menu") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_ru.h b/intl/msg_hash_ru.h index 1f5e2e6710..c597017496 100644 --- a/intl/msg_hash_ru.h +++ b/intl/msg_hash_ru.h @@ -3618,3 +3618,17 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Цветовая тема меню") +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 2dfb3ff14a..7978149985 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -7711,3 +7711,19 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Menu Color Theme" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/intl/msg_hash_vn.h b/intl/msg_hash_vn.h index 0cb6d32bce..0adedcd8be 100644 --- a/intl/msg_hash_vn.h +++ b/intl/msg_hash_vn.h @@ -3486,3 +3486,19 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, "OK" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Menu Color Theme" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 8953602cbd..214dd3fbe2 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -374,6 +374,7 @@ default_sublabel_macro(action_bind_sublabel_xmb_icon_theme, default_sublabel_macro(action_bind_sublabel_xmb_shadows_enable, MENU_ENUM_SUBLABEL_XMB_SHADOWS_ENABLE) default_sublabel_macro(action_bind_sublabel_xmb_vertical_thumbnails, MENU_ENUM_SUBLABEL_XMB_VERTICAL_THUMBNAILS) default_sublabel_macro(action_bind_sublabel_menu_color_theme, MENU_ENUM_SUBLABEL_MATERIALUI_MENU_COLOR_THEME) +default_sublabel_macro(action_bind_sublabel_ozone_menu_color_theme, MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME) default_sublabel_macro(action_bind_sublabel_menu_wallpaper_opacity, MENU_ENUM_SUBLABEL_MENU_WALLPAPER_OPACITY) default_sublabel_macro(action_bind_sublabel_menu_framebuffer_opacity, MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY) default_sublabel_macro(action_bind_sublabel_menu_ribbon_enable, MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE) @@ -1075,6 +1076,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_MENU_WALLPAPER_OPACITY: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_wallpaper_opacity); break; + case MENU_ENUM_LABEL_OZONE_MENU_COLOR_THEME: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_ozone_menu_color_theme); + break; case MENU_ENUM_LABEL_MATERIALUI_MENU_COLOR_THEME: case MENU_ENUM_LABEL_XMB_MENU_COLOR_THEME: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_color_theme); diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index fd77e559f9..a403750cf5 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -422,6 +422,7 @@ ozone_theme_t ozone_theme_dark = { "dark" }; +static unsigned last_color_theme = 0; static ozone_theme_t *ozone_default_theme = &ozone_theme_light; typedef struct ozone_handle @@ -1105,26 +1106,43 @@ static void ozone_draw_text( 1.0); } -static void ozone_set_theme(ozone_handle_t *ozone, ozone_theme_t *theme) +static void ozone_set_color_theme(ozone_handle_t *ozone, unsigned color_theme) { + ozone_theme_t *theme = ozone_default_theme; + + if (!ozone) + return; + + switch (color_theme) + { + case 1: + theme = &ozone_theme_dark; + break; + case 0: + default: + break; + } + ozone->theme = theme; memcpy(ozone->theme_dynamic.selection_border, ozone->theme->selection_border, sizeof(ozone->theme_dynamic.selection_border)); memcpy(ozone->theme_dynamic.selection, ozone->theme->selection, sizeof(ozone->theme_dynamic.selection)); memcpy(ozone->theme_dynamic.entries_border, ozone->theme->entries_border, sizeof(ozone->theme_dynamic.entries_border)); memcpy(ozone->theme_dynamic.entries_icon, ozone->theme->entries_icon, sizeof(ozone->theme_dynamic.entries_icon)); + + last_color_theme = color_theme; } static void *ozone_init(void **userdata, bool video_is_threaded) { - unsigned width, height; #ifdef HAVE_LIBNX Result rc; ColorSetId theme; #endif - ozone_handle_t *ozone = NULL; - settings_t *settings = config_get_ptr(); - menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); + unsigned width, height, color_theme = 0; + ozone_handle_t *ozone = NULL; + settings_t *settings = config_get_ptr(); + menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); if (!menu) goto error; @@ -1183,19 +1201,19 @@ static void *ozone_init(void **userdata, bool video_is_threaded) rc = setsysInitialize(); if (R_SUCCEEDED(rc)) { + color_theme = (theme == ColorSetId_Dark) ? 1 : 0; setsysGetColorSetId(&theme); - ozone_set_theme(ozone, theme == ColorSetId_Dark ? &ozone_theme_dark : &ozone_theme_light); + ozone_set_color_theme(ozone, color_theme); setsysExit(); } else - { - ozone_set_theme(ozone, ozone_default_theme); - } -#else - ozone_set_theme(ozone, ozone_default_theme); #endif + { + color_theme = settings->uints.menu_ozone_color_theme; + ozone_set_color_theme(ozone, color_theme); + } - ozone->need_compute = false; + ozone->need_compute = false; ozone->animations.scroll_y = 0.0f; /* Assets path */ @@ -2396,10 +2414,14 @@ static void ozone_frame(void *data, video_frame_info_t *video_info) menu_display_ctx_clearcolor_t clearcolor; ozone_handle_t* ozone = (ozone_handle_t*) data; settings_t *settings = config_get_ptr(); + unsigned color_theme = video_info->ozone_color_theme; if (!ozone) return; + if (color_theme != last_color_theme) + ozone_set_color_theme(ozone, color_theme); + ozone->frame_count++; menu_display_set_viewport(video_info->width, video_info->height); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index f7b00d07dc..b4c3d6c3a0 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -5968,6 +5968,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist MENU_ENUM_LABEL_XMB_MENU_COLOR_THEME, PARSE_ONLY_UINT, false) == 0) count++; + if (menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_OZONE_MENU_COLOR_THEME, + PARSE_ONLY_UINT, false) == 0) + count++; if (menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_MATERIALUI_ICONS_ENABLE, PARSE_ONLY_BOOL, false) == 0) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 5361a70302..88f8e3d739 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -683,6 +683,7 @@ static void setting_get_string_representation_uint_materialui_menu_color_theme( } #endif +#ifdef HAVE_XMB static void setting_get_string_representation_uint_xmb_menu_color_theme( rarch_setting_t *setting, char *s, size_t len) @@ -766,6 +767,34 @@ static void setting_get_string_representation_uint_xmb_menu_color_theme( break; } } +#endif + + + +#ifdef HAVE_OZONE +static void setting_get_string_representation_uint_ozone_menu_color_theme( + rarch_setting_t *setting, + char *s, size_t len) +{ + if (!setting) + return; + + switch (*setting->value.target.unsigned_integer) + { + case 1: + strlcpy(s, + msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK), len); + break; + case 0: + default: + strlcpy(s, + msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE), len); + break; + } +} +#endif #ifdef HAVE_SHADERPIPELINE static void setting_get_string_representation_uint_xmb_shader_pipeline( @@ -8287,6 +8316,27 @@ static bool setting_append_list( } #endif +#ifdef HAVE_OZONE + if (string_is_equal(settings->arrays.menu_driver, "ozone")) + { + CONFIG_UINT( + list, list_info, + &settings->uints.menu_ozone_color_theme, + MENU_ENUM_LABEL_OZONE_MENU_COLOR_THEME, + MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + 0, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_uint_ozone_menu_color_theme; + menu_settings_list_current_add_range(list, list_info, 0, 1, 1, true, true); + } +#endif + CONFIG_BOOL( list, list_info, &settings->bools.menu_show_start_screen, diff --git a/msg_hash.h b/msg_hash.h index 84f87a94b8..7a6f2722bd 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -467,6 +467,9 @@ enum msg_hash_enums MENU_LABEL(MATERIALUI_ICONS_ENABLE), + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME, MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME_INVERTED, MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_FLATUI, @@ -813,7 +816,6 @@ enum msg_hash_enums MENU_LABEL(XMB_LAYOUT), MENU_LABEL(XMB_THEME), MENU_LABEL(XMB_MAIN_MENU_ENABLE_SETTINGS), - MENU_LABEL(XMB_MENU_COLOR_THEME), MENU_LABEL(XMB_SHADOWS_ENABLE), MENU_LABEL(CONTENT_SHOW_REWIND), MENU_LABEL(CONTENT_SHOW_LATENCY), @@ -835,6 +837,8 @@ enum msg_hash_enums MENU_LABEL(TIMEDATE_ENABLE), MENU_LABEL(TIMEDATE_STYLE), MENU_LABEL(BATTERY_LEVEL_ENABLE), + MENU_LABEL(XMB_MENU_COLOR_THEME), + MENU_LABEL(OZONE_MENU_COLOR_THEME), MENU_LABEL(MATERIALUI_MENU_COLOR_THEME), MENU_LABEL(QUICK_MENU_OVERRIDE_OPTIONS), MENU_LABEL(QUICK_MENU_SHOW_TAKE_SCREENSHOT), From 689e612af83ebd92d25f2e813dec993188d09a60 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Oct 2018 17:10:53 +0200 Subject: [PATCH 124/304] (Ozone) Add 'Use System Preferred Color Theme' (enabled for Switch) --- config.def.h | 6 ++++++ configuration.c | 1 + configuration.h | 2 ++ intl/msg_hash_ar.h | 4 ++++ intl/msg_hash_chs.h | 4 ++++ intl/msg_hash_cht.h | 4 ++++ intl/msg_hash_de.h | 4 ++++ intl/msg_hash_el.h | 4 ++++ intl/msg_hash_eo.h | 4 ++++ intl/msg_hash_es.h | 4 ++++ intl/msg_hash_fr.h | 4 ++++ intl/msg_hash_it.h | 4 ++++ intl/msg_hash_ja.h | 4 ++++ intl/msg_hash_ko.h | 4 ++++ intl/msg_hash_lbl.h | 2 ++ intl/msg_hash_nl.h | 4 ++++ intl/msg_hash_pl.h | 4 ++++ intl/msg_hash_pt_br.h | 4 ++++ intl/msg_hash_pt_pt.h | 4 ++++ intl/msg_hash_ru.h | 4 ++++ intl/msg_hash_us.h | 4 ++++ intl/msg_hash_vn.h | 4 ++++ menu/cbs/menu_cbs_sublabel.c | 4 ++++ menu/drivers/ozone.c | 33 +++++++++++++++++++-------------- menu/menu_displaylist.c | 4 ++++ menu/menu_setting.c | 22 ++++++++++++++++++++++ msg_hash.h | 1 + 27 files changed, 133 insertions(+), 14 deletions(-) diff --git a/config.def.h b/config.def.h index a656c49fe6..80a10a7f61 100644 --- a/config.def.h +++ b/config.def.h @@ -266,6 +266,12 @@ static const float default_input_overlay_opacity = 0.7f; static bool default_block_config_read = true; +#ifdef HAVE_LIBNX +static bool menu_use_preferred_system_color_theme = true; +#else +static bool menu_use_preferred_system_color_theme = false; +#endif + static bool quick_menu_show_take_screenshot = true; static bool quick_menu_show_save_load_state = true; static bool quick_menu_show_undo_save_load_state = true; diff --git a/configuration.c b/configuration.c index 4b391bcd2a..a9b64bc8cc 100644 --- a/configuration.c +++ b/configuration.c @@ -1387,6 +1387,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("quick_menu_show_save_content_dir_overrides", &settings->bools.quick_menu_show_save_content_dir_overrides, true, quick_menu_show_save_content_dir_overrides, false); SETTING_BOOL("quick_menu_show_information", &settings->bools.quick_menu_show_information, true, quick_menu_show_information, false); SETTING_BOOL("kiosk_mode_enable", &settings->bools.kiosk_mode_enable, true, kiosk_mode_enable, false); + SETTING_BOOL("menu_use_preferred_system_color_theme", &settings->bools.menu_use_preferred_system_color_theme, true, menu_use_preferred_system_color_theme, false); SETTING_BOOL("content_show_settings", &settings->bools.menu_content_show_settings, true, content_show_settings, false); SETTING_BOOL("content_show_favorites", &settings->bools.menu_content_show_favorites, true, content_show_favorites, false); #ifdef HAVE_IMAGEVIEWER diff --git a/configuration.h b/configuration.h index be17dcdbd3..eae90fc0b8 100644 --- a/configuration.h +++ b/configuration.h @@ -175,6 +175,8 @@ typedef struct settings bool menu_content_show_history; bool menu_content_show_add; bool menu_content_show_playlists; + bool menu_use_preferred_system_color_theme; + bool menu_preferred_system_color_theme_set; bool menu_unified_controls; bool quick_menu_show_take_screenshot; bool quick_menu_show_save_load_state; diff --git a/intl/msg_hash_ar.h b/intl/msg_hash_ar.h index 735fc4b348..04343e17f2 100644 --- a/intl/msg_hash_ar.h +++ b/intl/msg_hash_ar.h @@ -3692,3 +3692,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_chs.h b/intl/msg_hash_chs.h index 372b064faa..ba01b8d8fc 100644 --- a/intl/msg_hash_chs.h +++ b/intl/msg_hash_chs.h @@ -4711,3 +4711,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_cht.h b/intl/msg_hash_cht.h index 823e6ef5d7..b7b82260ce 100644 --- a/intl/msg_hash_cht.h +++ b/intl/msg_hash_cht.h @@ -3468,3 +3468,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_de.h b/intl/msg_hash_de.h index 83af071a0f..3c7745ff02 100644 --- a/intl/msg_hash_de.h +++ b/intl/msg_hash_de.h @@ -3604,3 +3604,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h index 90c17e6578..a028ad0c3c 100644 --- a/intl/msg_hash_el.h +++ b/intl/msg_hash_el.h @@ -7695,3 +7695,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_eo.h b/intl/msg_hash_eo.h index e5bd3a414f..efe536b4ae 100644 --- a/intl/msg_hash_eo.h +++ b/intl/msg_hash_eo.h @@ -3343,3 +3343,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index eee1deba98..3b76bc16d4 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -7633,3 +7633,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index d4ac5377df..a5725ffe38 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -3502,3 +3502,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_it.h b/intl/msg_hash_it.h index 22cd3dea9c..ef28f825b8 100644 --- a/intl/msg_hash_it.h +++ b/intl/msg_hash_it.h @@ -3562,3 +3562,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index c055952a4e..11abb76f1a 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -4011,3 +4011,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index 799a1ee190..0ca5f38017 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -3463,3 +3463,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 3e5b127709..fdd436f410 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -1725,3 +1725,5 @@ MSG_HASH(MENU_ENUM_LABEL_STREAMING_TITLE, "streaming_title") MSG_HASH(MENU_ENUM_LABEL_RESET_TO_DEFAULT_CONFIG, "reset_to_default_config") +MSG_HASH(MENU_ENUM_LABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "menu_use_preferred_system_color_theme") diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index 0fa9f7584c..117ed1478a 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -3349,3 +3349,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 76598fcfec..ce60cab76a 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -3765,3 +3765,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index c7dd694772..29df5966e6 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -7727,3 +7727,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_pt_pt.h b/intl/msg_hash_pt_pt.h index eb15d1330e..82959c4f57 100644 --- a/intl/msg_hash_pt_pt.h +++ b/intl/msg_hash_pt_pt.h @@ -3429,3 +3429,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_ru.h b/intl/msg_hash_ru.h index c597017496..8df4fd9f6e 100644 --- a/intl/msg_hash_ru.h +++ b/intl/msg_hash_ru.h @@ -3632,3 +3632,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 7978149985..98f684f272 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -7727,3 +7727,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/intl/msg_hash_vn.h b/intl/msg_hash_vn.h index 0adedcd8be..7546e1f6a4 100644 --- a/intl/msg_hash_vn.h +++ b/intl/msg_hash_vn.h @@ -3502,3 +3502,7 @@ MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, "Select a different color theme." ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 214dd3fbe2..c4ff5f6cf5 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -375,6 +375,7 @@ default_sublabel_macro(action_bind_sublabel_xmb_shadows_enable, default_sublabel_macro(action_bind_sublabel_xmb_vertical_thumbnails, MENU_ENUM_SUBLABEL_XMB_VERTICAL_THUMBNAILS) default_sublabel_macro(action_bind_sublabel_menu_color_theme, MENU_ENUM_SUBLABEL_MATERIALUI_MENU_COLOR_THEME) default_sublabel_macro(action_bind_sublabel_ozone_menu_color_theme, MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME) +default_sublabel_macro(action_bind_sublabel_menu_use_preferred_system_color_theme, MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME) default_sublabel_macro(action_bind_sublabel_menu_wallpaper_opacity, MENU_ENUM_SUBLABEL_MENU_WALLPAPER_OPACITY) default_sublabel_macro(action_bind_sublabel_menu_framebuffer_opacity, MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY) default_sublabel_macro(action_bind_sublabel_menu_ribbon_enable, MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE) @@ -1076,6 +1077,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_MENU_WALLPAPER_OPACITY: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_wallpaper_opacity); break; + case MENU_ENUM_LABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_use_preferred_system_color_theme); + break; case MENU_ENUM_LABEL_OZONE_MENU_COLOR_THEME: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_ozone_menu_color_theme); break; diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index a403750cf5..e25d2606bb 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -1135,17 +1135,14 @@ static void ozone_set_color_theme(ozone_handle_t *ozone, unsigned color_theme) static void *ozone_init(void **userdata, bool video_is_threaded) { -#ifdef HAVE_LIBNX - Result rc; - ColorSetId theme; -#endif + bool fallback_color_theme = false; unsigned width, height, color_theme = 0; ozone_handle_t *ozone = NULL; settings_t *settings = config_get_ptr(); menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); if (!menu) - goto error; + return false; if (!menu_display_init_first_driver(video_is_threaded)) goto error; @@ -1196,18 +1193,26 @@ static void *ozone_init(void **userdata, bool video_is_threaded) menu_display_allocate_white_texture(); /* Theme */ - /* TODO Add theme override in settings */ -#ifdef HAVE_LIBNX - rc = setsysInitialize(); - if (R_SUCCEEDED(rc)) + if (settings->bools.menu_use_preferred_system_color_theme) { - color_theme = (theme == ColorSetId_Dark) ? 1 : 0; - setsysGetColorSetId(&theme); - ozone_set_color_theme(ozone, color_theme); - setsysExit(); +#ifdef HAVE_LIBNX + if (R_SUCCEEDED(setsysInitialize())) + { + ColorSetId theme; + setsysGetColorSetId(&theme); + color_theme = (theme == ColorSetId_Dark) ? 1 : 0; + ozone_set_color_theme(ozone, color_theme); + settings->bools.menu_preferred_system_color_theme_set = true; + setsysExit(); + } + else + fallback_color_theme = true; +#endif } else -#endif + fallback_color_theme = true; + + if (fallback_color_theme) { color_theme = settings->uints.menu_ozone_color_theme; ozone_set_color_theme(ozone, color_theme); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index b4c3d6c3a0..e6bf685225 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -5988,6 +5988,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist MENU_ENUM_LABEL_MATERIALUI_MENU_FOOTER_OPACITY, PARSE_ONLY_FLOAT, false) == 0) count++; + if (menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + PARSE_ONLY_BOOL, false) == 0) + count++; if (menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_THUMBNAILS, PARSE_ONLY_UINT, false) == 0) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 88f8e3d739..35fcd92743 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -776,9 +776,13 @@ static void setting_get_string_representation_uint_ozone_menu_color_theme( rarch_setting_t *setting, char *s, size_t len) { + settings_t *settings = config_get_ptr(); if (!setting) return; + if (settings->bools.menu_preferred_system_color_theme_set) + strlcpy(s, "System default", len); + switch (*setting->value.target.unsigned_integer) { case 1: @@ -7916,6 +7920,24 @@ static bool setting_append_list( menu_settings_list_current_add_range(list, list_info, 0, XMB_THEME_LAST-1, 1, true, true); } #endif + if (string_is_equal(settings->arrays.menu_driver, "ozone")) + { + CONFIG_BOOL( + list, list_info, + &settings->bools.menu_use_preferred_system_color_theme, + MENU_ENUM_LABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + menu_show_load_core, + 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.menu_show_load_core, diff --git a/msg_hash.h b/msg_hash.h index 7a6f2722bd..0642ca9abe 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -460,6 +460,7 @@ enum msg_hash_enums MENU_LABEL(MENU_WALLPAPER_OPACITY), MENU_LABEL(MENU_FRAMEBUFFER_OPACITY), + MENU_LABEL(MENU_USE_PREFERRED_SYSTEM_COLOR_THEME), MENU_ENUM_LABEL_VALUE_CONFIG, MENU_ENUM_LABEL_VALUE_OVERLAY, From c00d3e809aa7f9ac085906f31aa8c01581426405 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 27 Oct 2018 17:11:43 +0200 Subject: [PATCH 125/304] (Ozone) Fix default value for 'Use Preferred System Color Theme' --- menu/menu_setting.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 35fcd92743..fd23fdcc53 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -7927,7 +7927,7 @@ static bool setting_append_list( &settings->bools.menu_use_preferred_system_color_theme, MENU_ENUM_LABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - menu_show_load_core, + menu_use_preferred_system_color_theme, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, From d7be8c4cf22abfea3f7184c9773ad179e47268fe Mon Sep 17 00:00:00 2001 From: natinusala Date: Sat, 27 Oct 2018 17:25:13 +0200 Subject: [PATCH 126/304] ozone: fix tabs wrapping, again --- menu/drivers/ozone.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index e25d2606bb..52366b3214 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -2687,7 +2687,7 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act new_selection = (ozone->categories_selection_ptr + 1); - if (new_selection > ozone->system_tab_end) /* TODO Check against actual tabs count and not just system tabs */ + if (new_selection >= OZONE_SYSTEM_TAB_LAST) /* TODO Check against actual tabs count and not just system tabs */ new_selection = 0; if (ozone->categories_selection_ptr != new_selection) @@ -2726,7 +2726,7 @@ static int ozone_menu_iterate(menu_handle_t *menu, void *userdata, enum menu_act new_selection = ozone->categories_selection_ptr - 1; if (new_selection < 0) - new_selection = ozone->system_tab_end; /* TODO Set this to actual tabs count and not just system tabs */ + new_selection = OZONE_SYSTEM_TAB_LAST-1; /* TODO Set this to actual tabs count and not just system tabs */ if (ozone->categories_selection_ptr != new_selection) { From 4c5c2170b65a9e84e6d41118212f630875db4228 Mon Sep 17 00:00:00 2001 From: p-sam Date: Tue, 9 Oct 2018 21:39:48 +0000 Subject: [PATCH 127/304] libnx: call retroarch_main_quit on exit --- frontend/drivers/platform_switch.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/frontend/drivers/platform_switch.c b/frontend/drivers/platform_switch.c index 166640ee21..603f9ba13d 100644 --- a/frontend/drivers/platform_switch.c +++ b/frontend/drivers/platform_switch.c @@ -62,10 +62,19 @@ static uint32_t *splashData = NULL; static bool psmInitialized = false; +static AppletHookCookie applet_hook_cookie; + #ifdef NXLINK extern bool nxlink_connected; #endif +static void on_applet_hook(AppletHookType hook, void* param) { + if(hook == AppletHookType_OnExitRequest) { + RARCH_LOG("Got AppletHook OnExitRequest, exiting.\n"); + retroarch_main_quit(); + } +} + #endif /* HAVE_LIBNX */ static void get_first_valid_core(char *path_return) @@ -209,6 +218,7 @@ static void frontend_switch_deinit(void *data) #ifndef HAVE_OPENGL gfxExit(); #endif + appletUnlockExit(); #endif } @@ -609,6 +619,8 @@ static void frontend_switch_init(void *data) #ifdef HAVE_LIBNX nifmInitialize(); + appletLockExit(); + appletHook(&applet_hook_cookie, on_applet_hook, NULL); #ifndef HAVE_OPENGL /* Init Resolution before initDefault */ gfxInitResolution(1280, 720); From b56da6919ca704b58dbc233fd9a2b0c171da6f39 Mon Sep 17 00:00:00 2001 From: natinusala Date: Sat, 27 Oct 2018 19:13:18 +0200 Subject: [PATCH 128/304] Convert msg_hash_el.h to LF --- intl/msg_hash_el.h | 15403 ++++++++++++++++++++++--------------------- 1 file changed, 7702 insertions(+), 7701 deletions(-) diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h index a028ad0c3c..ede7afaa57 100644 --- a/intl/msg_hash_el.h +++ b/intl/msg_hash_el.h @@ -1,7701 +1,7702 @@ -MSG_HASH( - MSG_COMPILER, - "Μεταγλωττιστής" - ) -MSG_HASH( - MSG_UNKNOWN_COMPILER, - "Άγνωστος Μεταγλωττιστής" - ) -MSG_HASH( - MSG_NATIVE, - "Ντόπιος" - ) -MSG_HASH( - MSG_DEVICE_DISCONNECTED_FROM_PORT, - "Η συσκευή αποσυνδέθηκε από την θύρα" - ) -MSG_HASH( - MSG_UNKNOWN_NETPLAY_COMMAND_RECEIVED, - "Λήφθηκε άγνωστη εντολή netplay" - ) -MSG_HASH( - MSG_FILE_ALREADY_EXISTS_SAVING_TO_BACKUP_BUFFER, - "Το αρχείο υπάρχει ήδη. Αποθήκευση σε εφεδρική ενδιάμεση μνήμη." - ) -MSG_HASH( - MSG_GOT_CONNECTION_FROM, - "Λήφθηκε σύνδεση από: \"%s\"" - ) -MSG_HASH( - MSG_GOT_CONNECTION_FROM_NAME, - "Λήφθηκε σύνδεση από: \"%s (%s)\"" - ) -MSG_HASH( - MSG_PUBLIC_ADDRESS, - "Δημόσια διεύθυνση" - ) -MSG_HASH( - MSG_NO_ARGUMENTS_SUPPLIED_AND_NO_MENU_BUILTIN, - "Δεν παρασχέθηκε διαφωνία και δεν υπάρχει ενσωματωμένο μενού, εμφάνιση βοήθειας..." - ) -MSG_HASH( - MSG_SETTING_DISK_IN_TRAY, - "Τοποθέτηση δίσκου στην μονάδα δίσκου" - ) -MSG_HASH( - MSG_WAITING_FOR_CLIENT, - "Αναμονή για πελάτη ..." - ) -MSG_HASH( - MSG_NETPLAY_YOU_HAVE_LEFT_THE_GAME, - "Αποσυνδεθήκατε από το παιχνίδι" - ) -MSG_HASH( - MSG_NETPLAY_YOU_HAVE_JOINED_AS_PLAYER_N, - "Έχετε συνδεθεί ως παίκτης %u" - ) -MSG_HASH( - MSG_NETPLAY_YOU_HAVE_JOINED_WITH_INPUT_DEVICES_S, - "Έχετε συνδεθεί με συσκευές εισόδου %.*s" - ) -MSG_HASH( - MSG_NETPLAY_PLAYER_S_LEFT, - "Ο παίκτης %.*s αποσυνδέθηκε από το παιχνίδι" - ) -MSG_HASH( - MSG_NETPLAY_S_HAS_JOINED_AS_PLAYER_N, - "%.*s συνδέθηκε ως παίκτης %u" - ) -MSG_HASH( - MSG_NETPLAY_S_HAS_JOINED_WITH_INPUT_DEVICES_S, - "%.*s συνδέθηκε με συσκευές εισόδου %.*s" - ) -MSG_HASH( - MSG_NETPLAY_NOT_RETROARCH, - "Η προσπάθεια σύνδεσης netplay απέτυχε επειδή ο συμπέκτης δεν χρησιμοποιεί το RetroArch ή χρησιμοποιεί πιο παλιά έκδοση." - ) -MSG_HASH( - MSG_NETPLAY_OUT_OF_DATE, - "Ο συμπαίκτης χρησιμοποιεί πιο παλιά έκδοση RetroArch. Αδύνατη η σύνδεση." - ) -MSG_HASH( - MSG_NETPLAY_DIFFERENT_VERSIONS, - "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ο συμπαίκτης netplay χρησιμοποιεί διαφορετική έκδοση του RetroArch. Εάν προκύψουν προβλήματα χρησιμοποιήστε την ίδια έκδοση." - ) -MSG_HASH( - MSG_NETPLAY_DIFFERENT_CORES, - "Ο συμπαίκτης netplay χρησιμοποιεί διαφορειτκό πυρήνα. Αδύνατη η σύνδεση." - ) -MSG_HASH( - MSG_NETPLAY_DIFFERENT_CORE_VERSIONS, - "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ο συμπαίκτης netplay χρησιμοποιεί διαφορετική έκδοση του πυρήνα. Εάν προκύψουν προβλήματα χρησιμοποιήστε την ίδια έκδοση." - ) -MSG_HASH( - MSG_NETPLAY_ENDIAN_DEPENDENT, - "Αυτός ο πυρήνας δεν υποστηρίζει σύνδεση διαφορετικών πλατφόρμων για netplay ανάμεσα σε αυτά τα συστήματα" - ) -MSG_HASH( - MSG_NETPLAY_PLATFORM_DEPENDENT, - "Αυτός ο πυρήνας δεν υποστηρίζει σύνδεση διαφορετικών πλατφόρμων για netplay" - ) -MSG_HASH( - MSG_NETPLAY_ENTER_PASSWORD, - "Εισάγετε κωδικό διακομιστή netplay:" - ) -MSG_HASH( - MSG_NETPLAY_INCORRECT_PASSWORD, - "Λάθος κωδικός" - ) -MSG_HASH( - MSG_NETPLAY_SERVER_NAMED_HANGUP, - "\"%s\" αποσυνδέθηκε" - ) -MSG_HASH( - MSG_NETPLAY_SERVER_HANGUP, - "Ένας πελάτης netplay έχει αποσυνδεθεί" - ) -MSG_HASH( - MSG_NETPLAY_CLIENT_HANGUP, - "Αποσύνδεση netplay" - ) -MSG_HASH( - MSG_NETPLAY_CANNOT_PLAY_UNPRIVILEGED, - "Δεν έχετε άδεια για να παίξετε" - ) -MSG_HASH( - MSG_NETPLAY_CANNOT_PLAY_NO_SLOTS, - "Δεν υπάρχουν κενές θέσεις παικτών" - ) -MSG_HASH( - MSG_NETPLAY_CANNOT_PLAY_NOT_AVAILABLE, - "Οι συσκευές εισόδου που ζητήθηκαν δεν είναι διαθέσιμες" - ) -MSG_HASH( - MSG_NETPLAY_CANNOT_PLAY, - "Δεν μπορεί να γίνει αλλαγή σε κατάσταση παιχνιδιού" - ) -MSG_HASH( - MSG_NETPLAY_PEER_PAUSED, - "Ο συμπαίκτης netplay \"%s\" έκανε παύση" - ) -MSG_HASH( - MSG_NETPLAY_CHANGED_NICK, - "Το ψευδώνυμο σας άλλαξε σε \"%s\"" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SHARED_CONTEXT, - "Give hardware-rendered cores their own private context. Avoids having to assume hardware state changes inbetween frames." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_SETTINGS, - "Προσαρμόζει τις εμφανισιακές ρυθμίσεις της οθόνης του μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_HARD_SYNC, - "Σκληρός συγχρονισμός επεξεργαστή και κάρτας γραφικών. Μειώνει την καθυστέρηση με τίμημα την επίδοση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_THREADED, - "Βελτιώνει την επίδοση με τίμημα την καθυστέρηση και περισσότερα κολλήματα στο βίντεο. Χρησιμοποιείστε μόνο εάν δεν μπορείτε να αποκτήσετε πλήρη ταχύτητα με άλλον τρόπο." - ) -MSG_HASH( - MSG_AUDIO_VOLUME, - "Ένταση ήχου" - ) -MSG_HASH( - MSG_AUTODETECT, - "Αυτόματη ανίχνευση" - ) -MSG_HASH( - MSG_AUTOLOADING_SAVESTATE_FROM, - "Αυτόματη φόρτωση κατάστασης αποθήκευσης από" - ) -MSG_HASH( - MSG_CAPABILITIES, - "Ικανότητες" - ) -MSG_HASH( - MSG_CONNECTING_TO_NETPLAY_HOST, - "Σύνδεση με εξυπηρετητή netplay" - ) -MSG_HASH( - MSG_CONNECTING_TO_PORT, - "Σύνδεση στην θύρα" - ) -MSG_HASH( - MSG_CONNECTION_SLOT, - "Θέση σύνδεσης" - ) -MSG_HASH( - MSG_SORRY_UNIMPLEMENTED_CORES_DONT_DEMAND_CONTENT_NETPLAY, - "Συγγνώμη, μη εφαρμοσμένο: πυρήνες που δεν απαιτούν περιεχόμενο δεν μπορούν να συμμετέχουν στο netplay." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_PASSWORD, - "Κωδικός" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_SETTINGS, - "Επιτεύγματα Λογαριασμού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_USERNAME, - "Όνομα Χρήστη" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST, - "Λογαριασμοί" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST_END, - "Accounts List Endpoint" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS, - "RetroAchievements" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST, - "Επιτεύγματα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_PAUSE, - "Παύση Σκληροπυρηνικής Λειτουργίας Επιτευγμάτων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_RESUME, - "Συνέχιση Σκληροπυρηνικής Λειτουργίας Επιτευγμάτων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST_HARDCORE, - "Επιτεύγματα (Σκληροπυρηνικά)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST, - "Σάρωση Περιεχομένου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONFIGURATIONS_LIST, - "Διαμορφώσεις" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ADD_TAB, - "Εισαγωγή περιεχομένου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_TAB, - "Δωμάτια Netplay" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ASK_ARCHIVE, - "Ερώτηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ASSETS_DIRECTORY, - "Εργαλεία" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_BLOCK_FRAMES, - "Φραγή Καρέ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_DEVICE, - "Συσκευή Ήχου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_DRIVER, - "Οδηγός Ήχου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_DSP_PLUGIN, - "Πρόσθετο Ήχου DSP" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE, - "Ενεργοποίηση Ήχου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_FILTER_DIR, - "Φίλτρα Ήχου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TURBO_DEADZONE_LIST, - "Turbo/Νεκρή Ζώνη" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_LATENCY, - "Καθυστέρηση Ήχου (ms)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW, - "Μέγιστη Χρονική Διαστρέβλωση Ήχου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_MUTE, - "Σίγαση Ήχου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE, - "Συχνότητα Εξόδου Ήχου (Hz)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA, - "Δυναμικός Έλεγχος Βαθμού Ήχου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER, - "Οδηγός Επαναδειγματολήπτη Ήχου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS, - "Ήχος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_SYNC, - "Συγχρονισμός Ήχου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, - "Ένταση Ήχου (dB)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_EXCLUSIVE_MODE, - "Αποκλειστική Λειτουργία WASAPI" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_FLOAT_FORMAT, - "Ασταθής Μορφή WASAPI" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_SH_BUFFER_LENGTH, - "Μήκος Κοινόχρηστης Ενδιάμεσης Μνήμης WASAPI" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTOSAVE_INTERVAL, - "Διάστημα Αυτόματης Αποθήκευσης SaveRAM" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTO_OVERRIDES_ENABLE, - "Φόρτωση Αρχείων Παράκαμψης Αυτόματα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTO_REMAPS_ENABLE, - "Φόρτωση Αρχείων Αναδιοργάνωσης Πλήτρκων Αυτόματα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTO_SHADERS_ENABLE, - "Φόρτωση Προεπιλογών Σκιάσεων Αυτόματα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK, - "Πίσω" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_CONFIRM, - "Επιβεβαίωση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_INFO, - "Πληροφορίες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_QUIT, - "Έξοδος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_DOWN, - "Μετακίνηση Προς Τα Κάτω" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_UP, - "Μετακίνηση Προς Τα Πάνω" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_START, - "Εκκίνηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_KEYBOARD, - "Ενεργοποίηση/Απενεργοποίηση Πληκτρολογίου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_MENU, - "Ενεργοποίηση/Απενεργοποίηση Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS, - "Βασικός χειρισμός μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_CONFIRM, - "Επιβεβαίωση/ΟΚ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_INFO, - "Πληροφορίες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_QUIT, - "Έξοδος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_SCROLL_UP, - "Μετακίνηση Προς Τα Πάνω" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_START, - "Προεπιλογές" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_KEYBOARD, - "Ενεργοποίηση/Απενεργοποίηση Πληκτρολογίου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_MENU, - "Ενεργοποίηση/Απενεργοποίηση Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BLOCK_SRAM_OVERWRITE, - "Απενεργοποίηση αντικατάστασης SaveRAM κατά την φάση φόρτωσης κατάστασης αποθήκευσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BLUETOOTH_ENABLE, - "Ενεργοποίηση Bluetooth" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BUILDBOT_ASSETS_URL, - "Σύνδεσμος Εργαλείων του Buildbot" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CACHE_DIRECTORY, - "Κρυφή Μνήμη" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CAMERA_ALLOW, - "Επίτρεψη Κάμερας" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CAMERA_DRIVER, - "Οδηγός Κάμερας" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT, - "Απάτη" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_CHANGES, - "Εφαρμογή Αλλαγών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_START_SEARCH, - "Έναρξη Αναζήτησης Για Νέους Κωδικούς Απάτης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_CONTINUE_SEARCH, - "Συνέχιση Αναζήτησης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_DATABASE_PATH, - "Αρχεία Απάτης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_FILE, - "Αρχείο Απάτης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_FILE_LOAD, - "Φόρτωση Αρχείου Απάτης (Αντικατάσταση)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_FILE_LOAD_APPEND, - "Φόρτωση Αρχείου Απάτης (Προσάρτηση)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_FILE_SAVE_AS, - "Αποθήκευση Αρχείου Απάτης Ως" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_NUM_PASSES, - "Φορές Περάσματος Απάτης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_DESCRIPTION, - "Περιγραφή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE, - "Σκληροπυρηνική Λειτουργία" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_LEADERBOARDS_ENABLE, - "Κατατάξεις" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_BADGES_ENABLE, - "Εμβλήματα Επιτευγμάτων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_LOCKED_ACHIEVEMENTS, - "Κλειδωμένα Επιτεύγματα:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_LOCKED_ENTRY, - "Κλειδωμένο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_SETTINGS, - "RetroAchievements" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL, - "Δοκιμή Ανεπίσημων Επιτευγμάτων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ACHIEVEMENTS, - "Ξεκλειδωμένα Επιτεύγματα:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY, - "Ξεκλείδωτο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY_HARDCORE, - "Σκληροπυρηνικό" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_VERBOSE_ENABLE, - "Βερμπαλιστική Λειτουργία" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_AUTO_SCREENSHOT, - "Αυτόματο Στιγμιότυπο Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, - "Κλείσιμο Περιεχομένου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONFIG, - "Διαμόρφωση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONFIGURATIONS, - "Φόρτωση Διαμορφώσεων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONFIGURATION_SETTINGS, - "Διαμόρφωση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONFIG_SAVE_ON_EXIT, - "Απόθηκευση Διαμόρφωσης στην Έξοδο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST, - "Συλλογές" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY, - "Βάσεις Δεδομένων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_DIR, - "Περιεχόμενο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_SIZE, - "Μέγεθος Λίστας Ιστορικού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE, - "Επίτρεψη αφαίρεσης καταχωρήσεων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SETTINGS, - "Γρήγορο Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIR, - "Λήψεις" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIRECTORY, - "Λήψεις" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, - "Απάτες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_COUNTERS, - "Μετρητές Πυρήνων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_ENABLE, - "Εμφάνιση ονόματος πυρήνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INFORMATION, - "Πληροφορίες πυρήνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INFO_AUTHORS, - "Δημιουργοί" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INFO_CATEGORIES, - "Κατηγορίες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_LABEL, - "Επιγραφή πυρήνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_NAME, - "Όνομα πυρήνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INFO_FIRMWARE, - "Firmware(s)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INFO_LICENSES, - "Άδεια(ες)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INFO_PERMISSIONS, - "Άδειες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS, - "Υποστηριζόμενες επεκτάσεις" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER, - "Κατασκευαστής συστήματος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_NAME, - "Όνομα συστήματος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, - "Χειρισμοί" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_LIST, - "Φόρτωση Πυρήνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, - "Επιλογές" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_SETTINGS, - "Πυρήνας" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE, - "Αυτόματη Έναρξη Πυρήνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE, - "Αυτόματη εξαγωγή ληφθέντος συμπιεσμένου αρχείου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL, - "Σύνδεσμος Buildbot Πυρήνων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST, - "Ενημέρωση Πυρήνων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_UPDATER_SETTINGS, - "Ενημερωτής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CPU_ARCHITECTURE, - "Αρχιτεκτονική Επεξεργαστή:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CPU_CORES, - "Πυρήνες Επεξεργαστή:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CURSOR_DIRECTORY, - "Δρομείς" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CURSOR_MANAGER, - "Διαχειριστής Δρομέα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CUSTOM_RATIO, - "Προτιμώμενη Αναλογία" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER, - "Διαχειριστής Βάσης Δεδομένων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION, - "Επιλογή Βάσης Δεδομένων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, - "Κατάργηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_FAVORITES, - "Ευρετήριο έναρξης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, - "<Ευρετήριο περιεχομένων>" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, - "<Προκαθορισμένο>" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DIRECTORY_NONE, - "<Κανένα>" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, - "Το ευρετήριο δεν βρέθηκε." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, - "Ευρετήρια" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, - "Disk Cycle Tray Status" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, - "Disk Image Append" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_INDEX, - "Disk Index" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, - "Disk Control" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DONT_CARE, - "Don't care" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST, - "Λήψεις" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE, - "Λήψη Πυρήνα..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE_CONTENT, - "Λήψη Περιεχομένου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_ENABLE, - "DPI Override Enable" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_VALUE, - "DPI Override" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS, - "Οδηγοί" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN, - "Φόρτωση Dummy στο Κλείσιμο Πυρήνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHECK_FOR_MISSING_FIRMWARE, - "Έλεγχος για απών Firmware Πριν την Φόρτωση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, - "Δυναμικό Φόντο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY, - "Δυναμικά Φόντα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEEVOS_ENABLE, - "Ενεργοποίηση Επιτευγμάτων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ENTRY_HOVER_COLOR, - "Χρώμα καταχώρησης μενού όταν το ποντίκι βρίσκεται από πάνω" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ENTRY_NORMAL_COLOR, - "Χρώμα καταχώρησης μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_FALSE, - "Ψευδές" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO, - "Μέγιστη Ταχύτητα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_FAVORITES_TAB, - "Αγαπημένα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_FPS_SHOW, - "Προβολή Ρυθμού Καρέ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_ENABLE, - "Περιορισμός Μέγιστης Ταχύτητας Αναπαραγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VRR_RUNLOOP_ENABLE, - "Συγχρονισμός με τον Ακριβή Ρυθμό Καρέ του Περιεχομένου (G-Sync, FreeSync)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_SETTINGS, - "Περιορισμός Καρέ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_FRONTEND_COUNTERS, - "Frontend Counters" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS, - "Φόρτωση Επιλογών Πυρήνα Βάση Συγκεκριμένου Περιεχομένου Αυτόματα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_CREATE, - "Δημιουργία αρχείου επιλογών παιχνιδιού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_IN_USE, - "Αποθήκευση αρχείου επιλογών παιχνιδιού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP, - "Βοήθεια" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING, - "Αντιμετώπιση Προβλημάτων Ήχου/Βίντεο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD, - "Αλλαγή Επικαλύμματος Εικονικού Χειριστηρίου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_CONTROLS, - "Βασικός Χειρισμός Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_LIST, - "Βοήθεια" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_LOADING_CONTENT, - "Φόρτωση Περιεχομένου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT, - "Σάρωση Για Περιεχόμενο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HELP_WHAT_IS_A_CORE, - "Τι Είναι Ο Πυρήνας;" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HISTORY_LIST_ENABLE, - "Ενεργοποίηση Λίστας Ιστορικού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HISTORY_TAB, - "Ιστορικό" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_HORIZONTAL_MENU, - "Οριζόντιο Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_IMAGES_TAB, - "Εικόνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INFORMATION, - "Πληροφορίες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INFORMATION_LIST, - "Πληροφορίες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ADC_TYPE, - "Τύπος Αναλογικού Σε Ψηφιακό" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ALL_USERS_CONTROL_MENU, - "Όλοι Οι Χρήστες Χειρίζονται Το Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X, - "Αριστερό Αναλογικό X" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, - "Αριστερό Αναλογικό X- (αριστερά)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, - "Αριστερό Αναλογικό X+ (δεξιά)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y, - "Αριστερό Αναλογικό Y" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, - "Αριστερό Αναλογικό Y- (πάνω)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, - "Αριστερό Αναλογικό Y+ (κάτω)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X, - "Δεξί Αναλογικό X" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, - "Δεξί Αναλογικό X- (αριστερά)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, - "Δεξί Αναλογικό X+ (δεξιά)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y, - "Δεξί Αναλογικό Y" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, - "Δεξί Αναλογικό Y- (πάνω)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, - "Δεξί Αναλογικό Y+ (κάτω)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_TRIGGER, - "Σκανδάλη Όπλου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_RELOAD, - "Γέμισμα Όπλου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_A, - "Όπλο Aux A" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_B, - "Όπλο Aux B" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_C, - "Όπλο Aux C" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_START, - "Όπλο Start" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_SELECT, - "Όπλο Select" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_UP, - "Όπλο D-pad Πάνω" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_DOWN, - "Όπλο D-pad Κάτω" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_LEFT, - "Όπλο D-pad Αριστερά" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_RIGHT, - "Όπλο D-pad Δεξιά" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_AUTODETECT_ENABLE, - "Ενεργοποίηση Αυτόματης Διαμόρφωσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_AXIS_THRESHOLD, - "Νεκρή Ζώνη Αναλογικού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_INPUT_SWAP_OK_CANCEL, - "Εναλλαγή Κουμπιών Επιβεβαίωσης & Ακύρωσης Στο Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_BIND_ALL, - "Σύνδεση Όλων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_BIND_DEFAULT_ALL, - "Επαναφορά Συνδέσεων Όλων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_BIND_TIMEOUT, - "Λήξη Χρόνου Σύνδεσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_BIND_HOLD, - "Κράτημα Σύνδεσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND, - "Hide Unbound Core Input Descriptors" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW, - "Display Input Descriptor Labels" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_INDEX, - "Κατάλογος Συσκευών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_TYPE, - "Τύπος Συσκευής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_INDEX, - "Κατάλογος Ποντικιού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_DRIVER, - "Οδηγός Εισαγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_DUTY_CYCLE, - "Duty Cycle" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_BINDS, - "Σύνδεση Πλήκτρων Εντολών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_ICADE_ENABLE, - "Keyboard Gamepad Mapping Enable" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, - "Κουμπί A (δεξιά)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, - "Κουμπί B (κάτω)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, - "D-pad κάτω" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, - "Κουμπί L2 (σκανδάλι)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, - "Κουμπί L3 (αντίχειρας)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, - "Κουμπί L (πίσω)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, - "D-pad αριστερό" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, - "Κουμπί R2 (σκανδάλι)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, - "Κουμπί R3 (αντίχειρας)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, - "Κουμπί R (πίσω)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, - "D-pad δεξί" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, - "Κουμπί Select" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, - "Κουμπί Start" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, - "D-pad πάνω" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, - "Κουμπί X (πάνω)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, - "Κουμπί Y (αριστερό)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_KEY, - "(Κουμπί: %s)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_LEFT, - "Ποντίκι 1" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_RIGHT, - "Ποντίκι 2" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_MIDDLE, - "Ποντίκι 3" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_BUTTON4, - "Ποντίκι 4" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_BUTTON5, - "Ποντίκι 5" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_WHEEL_UP, - "Ροδέλα Πάνω" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_WHEEL_DOWN, - "Ροδέλα Κάτω" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_HORIZ_WHEEL_UP, - "Ροδέλα Αριστερά" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_HORIZ_WHEEL_DOWN, - "Ροδέλα Δεξιά" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE, - "Keyboard Gamepad Mapping Type" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MAX_USERS, - "Μέγιστοι Χρήστες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO, - "Συνδιασμός Πλήκτρων Χειριστηρίου για Άνοιγμα Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, - "Κατάλογος απάτης -" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, - "Κατάλογος απάτης +" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, - "Απάτες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, - "Εξαγωγή δίσκου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, - "Επόμενος δίσκος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, - "Προηγούμενος δίσκος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, - "Ενεργοποίηση πλήκτρων εντολών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY, - "Παύση γρήγορης κίνησης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, - "Γρήγορη κίνηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, - "Frameadvance" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY, - "Πλήρης οθόνη" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, - "Κλείδωμα ποντικιού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, - "Εστίαση παιχνιδιού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_UI_COMPANION_TOGGLE, - "Μενού επιφάνειας" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, - "Φόρτωση κατάστασης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, - "Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_BSV_RECORD_TOGGLE, - "Input replay movie record toggle" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, - "Σίγαση Ήχου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, - "Εναλλαγή κατάστασης παιχνιδιού/θεατή Netplay" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, - "Πληκτρολόγιο οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, - "Επόμενο επικάλλυμα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, - "Παύση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, - "Έξοδος από το RetroArch" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, - "Επαναφορά παιχνιδιού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, - "Επιστροφή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_DETAILS, - "Λεπτομέρειες Απάτης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_SEARCH, - "Start or Continue Cheat Search" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, - "Αποθήκευση κατάστασης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, - "Λήψη Στιγμιότυπου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, - "Επόμενη σκίαση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, - "Προηγούμενη σκίαση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_HOLD_KEY, - "Παύση αργής κίνησης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_KEY, - "Αργή κίνηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, - "Θέση κατάστασης αποθήκευσης -" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, - "Θέση κατάστασης αποθήκευσης +" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, - "Ένταση -" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, - "Ένταση +" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_ENABLE, - "Εμφάνιση Επικαλύμματος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU, - "Απόκρυψη Επικαλύμματος Στο Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, - "Εμφάνιση Εισαγωγών Στο Επικάλλυμα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, - "Εμφάνιση Θύρας Εισαγωγών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR, - "Τύπος Συμπεριφοράς Συγκέντρωσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_EARLY, - "Νωρίς" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_LATE, - "Αργά" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_NORMAL, - "Φυσιολογικά" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_PREFER_FRONT_TOUCH, - "Prefer Front Touch" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY, - "Input Remapping" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE, - "Remap Binds Enable" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_SAVE_AUTOCONFIG, - "Αποθήκευση Αυτόματης Διαμόρφωσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS, - "Εισαγωγή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE, - "Ενεργοποίηση Μικρού Πληκτρολογίου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_TOUCH_ENABLE, - "Ενεργοποίηση Αφής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, - "Ενεργοποίηση Turbo" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_TURBO_PERIOD, - "Turbo Period" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_USER_BINDS, - "Σύνδεση Πλήκτρων Εισόδου Χρήστη %u" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LATENCY_SETTINGS, - "Καθυστέρηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INTERNAL_STORAGE_STATUS, - "Internal storage status" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR, - "Input Autoconfig" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_JOYPAD_DRIVER, - "Οδηγός Joypad" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LAKKA_SERVICES, - "Υπηρεσίες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_CHINESE_SIMPLIFIED, - "Chinese (Simplified)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_CHINESE_TRADITIONAL, - "Chinese (Traditional)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_DUTCH, - "Dutch" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_ENGLISH, - "English" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_ESPERANTO, - "Esperanto" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_FRENCH, - "French" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_GERMAN, - "German" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_ITALIAN, - "Italian" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_JAPANESE, - "Japanese" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_KOREAN, - "Korean" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_POLISH, - "Polish" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE_BRAZIL, - "Portuguese (Brazil)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE_PORTUGAL, - "Portuguese (Portugal)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_RUSSIAN, - "Russian" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_SPANISH, - "Spanish" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_VIETNAMESE, - "Vietnamese" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_ARABIC, - "Arabic" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LANG_GREEK, - "Ελληνικά" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_ANALOG, - "Αριστερό Αναλογικό" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH, - "Πυρήνας" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LIBRETRO_INFO_PATH, - "Πληροφορίες Πυρήνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LIBRETRO_LOG_LEVEL, - "Core Logging Level" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LINEAR, - "Γραμμικός" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, - "Φόρτωση Αρχείου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, - "Φόρτωση Πρόσφατου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, - "Φόρτωση Περιεχομένου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LOAD_STATE, - "Φόρτωση Κατάστασης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LOCATION_ALLOW, - "Επίτρεψη Τοποθεσίας" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LOCATION_DRIVER, - "Οδηγός Τοποθεσίας" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS, - "Αρχείο Καταγραφής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY, - "Logging Verbosity" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MAIN_MENU, - "Κεντρικό Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MANAGEMENT, - "Ρυθμίσεις Βάσης Δεδομένων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME, - "Χρώμα Θέματος Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE, - "Μπλε" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE_GREY, - "Μπλε Γκρι" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_DARK_BLUE, - "Σκούρο Μπλε" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_GREEN, - "Πράσινο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_NVIDIA_SHIELD, - "Shield" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_RED, - "Κόκκινο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_YELLOW, - "Κίτρινο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_FOOTER_OPACITY, - "Footer Opacity" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_HEADER_OPACITY, - "Header Opacity" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_DRIVER, - "Οδηγός Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_ENUM_THROTTLE_FRAMERATE, - "Throttle Menu Framerate" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS, - "Ρυθμίσεις" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_LINEAR_FILTER, - "Menu Linear Filter" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_HORIZONTAL_ANIMATION, - "Horizontal Animation" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_SETTINGS, - "Εμφάνιση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER, - "Φόντο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER_OPACITY, - "Background opacity" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MISSING, - "Λείπει" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MORE, - "..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE, - "Υποστήριξη Ποντικιού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MULTIMEDIA_SETTINGS, - "Πολυμέσα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MUSIC_TAB, - "Μουσική" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, - "Φιλτράρισμα άγνωστων επεκτάσεων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NAVIGATION_WRAPAROUND, - "Navigation Wrap-Around" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NEAREST, - "Κοντινότερο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY, - "Netplay" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_ALLOW_SLAVES, - "Allow Slave-Mode Clients" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_CHECK_FRAMES, - "Netplay Check Frames" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_INPUT_LATENCY_FRAMES_MIN, - "Input Latency Frames" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, - "Input Latency Frames Range" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_DELAY_FRAMES, - "Netplay Delay Frames" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_DISCONNECT, - "Disconnect from netplay host" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE, - "Ενεργοποίηση Netplay" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_CLIENT, - "Σύνδεση σε οικοδεσπότη netplay" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_HOST, - "Έναρξη netplay ως οικοδεσπότης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_DISABLE_HOST, - "Λήξη netplay ως οικοδεσπότης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_IP_ADDRESS, - "Διέυθυνση Διακομιστή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_LAN_SCAN_SETTINGS, - "Σάρωση τοπικού δικτύου Scan local network" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_MODE, - "Netplay Client Enable" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_NICKNAME, - "Όνομα Χρήστη" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_PASSWORD, - "Κωδικός Διακομιστή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_PUBLIC_ANNOUNCE, - "Δημόσια Ανακοίνωση Netplay" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_REQUEST_DEVICE_I, - "Request Device %u" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_REQUIRE_SLAVES, - "Disallow Non-Slave-Mode Clients" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SETTINGS, - "Ρυθμίσεις Netplay" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG, - "Analog Input Sharing" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG_MAX, - "Μέγιστο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG_AVERAGE, - "Μέσος Όρος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL, - "Digital Input Sharing" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_OR, - "Κοινοποίηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_XOR, - "Grapple" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_VOTE, - "Ψήφος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_NONE, - "Κανείς" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_NO_PREFERENCE, - "Καμία προτίμηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_START_AS_SPECTATOR, - "Netplay Spectator Mode" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_STATELESS_MODE, - "Netplay Stateless Mode" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATE_PASSWORD, - "Server Spectate-Only Password" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE, - "Netplay Spectator Enable" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_TCP_UDP_PORT, - "Netplay TCP Port" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_NAT_TRAVERSAL, - "Netplay NAT Traversal" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETWORK_CMD_ENABLE, - "Network Commands" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETWORK_CMD_PORT, - "Network Command Port" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETWORK_INFORMATION, - "Πληροφορίες Δικτύου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_ENABLE, - "Χειριστήριο Δικτύου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_PORT, - "Network Remote Base Port" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETWORK_SETTINGS, - "Δίκτυο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO, - "Όχι" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NONE, - "Τίποτα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE, - "Μ/Δ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_ACHIEVEMENTS_TO_DISPLAY, - "Δεν υπάρχουν επιτεύγματα προς προβολή." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_CORE, - "Κανένας Πυρήνας" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_CORES_AVAILABLE, - "Δεν υπάρχουν διαθέσιμοι πυρήνες." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_CORE_INFORMATION_AVAILABLE, - "Δεν υπάρχουν διαθέσιμες πληροφορίες πυρήνα." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_CORE_OPTIONS_AVAILABLE, - "Δεν υπάρχουν διαθέσιμες επιλογές πυρήνα." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_ENTRIES_TO_DISPLAY, - "Δεν υπάρχουν καταχωρήσεις προς εμφάνιση." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_HISTORY_AVAILABLE, - "Δεν υπάρχει διαθέσιμο ιστορικό." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE, - "Δεν υπάρχουν διαθέσιμες πληροφορίες." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_ITEMS, - "Δεν υπάρχουν αντικείμενα." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_NETPLAY_HOSTS_FOUND, - "Δεν βρέθηκαν εξυπηρετητές netplay." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_NETWORKS_FOUND, - "Δεν βρέθηκαν δίκτυα." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_PERFORMANCE_COUNTERS, - "No performance counters." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_PLAYLISTS, - "Δεν βρέθηκαν λίστες αναπαραγωγής." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE, - "Δεν υπάρχουν διαθέσιμες καταχωρήσεις στην λίστα αναπαραγωγής." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND, - "Δεν βρέθηκαν ρυθμίσεις." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NO_SHADER_PARAMETERS, - "Δεν βρέθηκαν παράμετροι σκίασης." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OFF, - "OFF" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ON, - "ON" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ONLINE, - "Online" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER, - "Διαδικτυακός Ενημερωτής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS, - "Οθόνη Απεικόνισης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ONSCREEN_OVERLAY_SETTINGS, - "Επικάλλυμα Οθόνης" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ONSCREEN_OVERLAY_SETTINGS, - "Προσαρμογή Προσόψεων και Χειρισμών Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ONSCREEN_NOTIFICATIONS_SETTINGS, - "Ειδοποιήσεις Οθόνης Απεικόνισης" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ONSCREEN_NOTIFICATIONS_SETTINGS, - "Προσαρμόστε τις Ειδοποιήσεις Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OPEN_ARCHIVE, - "Περιήγηση Αρχείου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OPTIONAL, - "Προεραιτικό" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OVERLAY, - "Επικάλλυμα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED, - "Αυτόματη Φόρτωση Προτιμώμενου Επικαλύμματος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OVERLAY_DIRECTORY, - "Επικάλλυμα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OVERLAY_OPACITY, - "Διαφάνεια Επικαλύμματος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OVERLAY_PRESET, - "Προκαθορισμένο Επικάλλυμα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OVERLAY_SCALE, - "Κλίμακα Επικαλύμματος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS, - "Επικάλλυμα Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PAL60_ENABLE, - "Χρήση Λειτουργίας PAL60" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PARENT_DIRECTORY, - "Προηγούμενο ευρετήριο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, - "Παύση όταν ενεργοποιείται το μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE, - "Μην εκτελείτε στο παρασκήνιο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PERFCNT_ENABLE, - "Performance Counters" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PLAYLISTS_TAB, - "Λίστες Αναπαραγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, - "Λίστα Αναπαραγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS, - "Λίστες Αναπαραγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_POINTER_ENABLE, - "Υποστήριξη Αφής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PORT, - "Θύρα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PRESENT, - "Present" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PRIVACY_SETTINGS, - "Ιδιωτικότητα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MIDI_SETTINGS, - "MIDI" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH, - "Έξοδος από RetroArch" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ANALOG, - "Analog supported" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_BBFC_RATING, - "BBFC Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_CERO_RATING, - "CERO Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_COOP, - "Co-op supported" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_CRC32, - "CRC32" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DESCRIPTION, - "Description" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DEVELOPER, - "Developer" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_ISSUE, - "Edge Magazine Issue" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_RATING, - "Edge Magazine Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_REVIEW, - "Edge Magazine Review" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ELSPA_RATING, - "ELSPA Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ENHANCEMENT_HW, - "Enhancement Hardware" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ESRB_RATING, - "ESRB Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_FAMITSU_MAGAZINE_RATING, - "Famitsu Magazine Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_FRANCHISE, - "Franchise" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_GENRE, - "Genre" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_MD5, - "MD5" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_NAME, - "Όνομα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ORIGIN, - "Origin" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_PEGI_RATING, - "PEGI Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_PUBLISHER, - "Publisher" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_MONTH, - "Releasedate Month" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_YEAR, - "Releasedate Year" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RUMBLE, - "Rumble supported" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SERIAL, - "Serial" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SHA1, - "SHA1" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_START_CONTENT, - "Έναρξη Περιεχομένου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RDB_ENTRY_TGDB_RATING, - "TGDB Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REBOOT, - "Επανεκκίνηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY, - "Recording Config" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY, - "Recording Output" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RECORDING_SETTINGS, - "Εγγραφή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RECORD_CONFIG, - "Custom Record Config" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_STREAM_CONFIG, - "Custom Stream Config" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RECORD_DRIVER, - "Οδηγός Εγγραφής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MIDI_DRIVER, - "Οδηγός MIDI" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RECORD_ENABLE, - "Ενεργοποίηση Εγγραφής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RECORD_PATH, - "Αποθήκευση Εγγραφής Ως..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY, - "Αποθήκευση Εγγραφών στο Ευρετήριο Εξαγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REMAP_FILE, - "Remap File" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REMAP_FILE_LOAD, - "Load Remap File" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_CORE, - "Save Core Remap File" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_CONTENT_DIR, - "Save Content Directory Remap File" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_GAME, - "Save Game Remap File" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_CORE, - "Delete Core Remap File" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_GAME, - "Delete Game Remap File" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_CONTENT_DIR, - "Delete Game Content Directory Remap File" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REQUIRED, - "Απαραίτητο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, - "Επανεκκίνηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH, - "Επανεκκίνηση RetroArch" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME, - "Συνέχιση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, - "Συνέχιση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RETROKEYBOARD, - "RetroKeyboard" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RETROPAD, - "RetroPad" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RETROPAD_WITH_ANALOG, - "RetroPad με Αναλογικό" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RETRO_ACHIEVEMENTS_SETTINGS, - "Επιτεύγματα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REWIND_ENABLE, - "Ενεργοποίηση Επιστροφής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_TOGGLE, - "Εφαρμογή Μετά Την Ενεργοποίηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_LOAD, - "Αυτόματη Εφαρμογή Απατών Κατά την Φόρτωση Παιχνιδιού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY, - "Βαθμός Λεπτομέρειας Επιστροφής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE, - "Μέγεθος Ενδιάμεσης Μνήμης Επιστροφής (MB)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP, - "Βήμα Μεγέθους Ενδιάμεσης Μνήμης Επιστροφής (MB)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_REWIND_SETTINGS, - "Επιστροφή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_SETTINGS, - "Ρυθμίσεις Απάτης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_DETAILS_SETTINGS, - "Λεπτομέρειες Απάτης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_SETTINGS, - "Έναρξη ή Συνέχιση Αναζήτησης Απάτης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, - "Περιηγητής Αρχείων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, - "Config" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RGUI_SHOW_START_SCREEN, - "Εμφάνιση Αρχικής Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RIGHT_ANALOG, - "Δεξί Αναλογικό" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES, - "Προσθήκη στα Αγαπημένα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES_PLAYLIST, - "Προσθήκη στα Αγαπημένα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESET_CORE_ASSOCIATION, - "Επαναφορά Συσχέτισης Πυρήνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN, - "Εκκίνηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_MUSIC, - "Εκκίνηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAMBA_ENABLE, - "Ενεργοποίηση SAMBA" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVEFILE_DIRECTORY, - "Αρχείο Αποθήκευσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_INDEX, - "Save State Auto Index" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_LOAD, - "Auto Load State" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_SAVE, - "Auto Save State" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVESTATE_DIRECTORY, - "Savestate" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVESTATE_THUMBNAIL_ENABLE, - "Savestate Thumbnails" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG, - "Αποθήκευση Τρέχουσας Διαμόρφωσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, - "Save Core Overrides" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR, - "Save Content Directory Overrides" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, - "Save Game Overrides" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVE_NEW_CONFIG, - "Αποθήκευση Νέας Διαμόρφωσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVE_STATE, - "ποθήκευση Κατάστασης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS, - "Αποθήκευση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY, - "Σάρωση Ευρετηρίου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCAN_FILE, - "Σάρωση αρχείου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCAN_THIS_DIRECTORY, - "<Σάρωση Αυτού Του Ευρετηρίου>" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCREENSHOT_DIRECTORY, - "Στιγμιότυπο Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION, - "Ανάλυση Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SEARCH, - "Αναζήτηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SECONDS, - "δευτερόλεπτα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SETTINGS, - "Ρυθμίσεις" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SETTINGS_TAB, - "Ρυθμίσεις" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHADER, - "Σκίαση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHADER_APPLY_CHANGES, - "Εφαμοργή Αλλαγών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHADER_OPTIONS, - "Σκιάσεις" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON, - "Κορδέλλα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED, - "Κορδέλλα (απλοποιημένη)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SIMPLE_SNOW, - "Απλό Χιόνι" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW, - "Χιόνι" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS, - "Εμφάνιση Ρυθμίσεων Για Προχωρημένους" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHOW_HIDDEN_FILES, - "Εμφάνιση Κρυφών Αρχείων και Φακέλων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHUTDOWN, - "Τερματισμός" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO, - "Slow-Motion Ratio" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Run-Ahead to Reduce Latency" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, - "Number of Frames to Run Ahead" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "RunAhead Use Second Instance" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, - "RunAhead Hide Warnings" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SORT_SAVEFILES_ENABLE, - "Sort Saves In Folders" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SORT_SAVESTATES_ENABLE, - "Sort Savestates In Folders" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVESTATES_IN_CONTENT_DIR_ENABLE, - "Write Savestates to Content Dir" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SAVEFILES_IN_CONTENT_DIR_ENABLE, - "Write Saves to Content Dir" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEMFILES_IN_CONTENT_DIR_ENABLE, - "System Files are in Content Dir" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCREENSHOTS_IN_CONTENT_DIR_ENABLE, - "Write Screenshots to Content Dir" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SSH_ENABLE, - "Ενεργοποίηση SSH" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_START_CORE, - "Έναρξη Πυρήνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_START_NET_RETROPAD, - "Έναρξη Απομακρυσμένου RetroPad" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_START_VIDEO_PROCESSOR, - "Έναρξη Επεξεργαστή Βίντεο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_STATE_SLOT, - "Θέση Κατάστασης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_STATUS, - "Κατάσταση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_STDIN_CMD_ENABLE, - "Εντολές stdin" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SUPPORTED_CORES, - "Προτεινόμενοι πυρήνες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE, - "Αναστολή Προφύλαξης Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_BGM_ENABLE, - "System BGM Enable" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_DIRECTORY, - "Σύστημα/BIOS" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFORMATION, - "Πληροφορίες Συστήματος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT, - "Υποστήριξη 7zip" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT, - "Υποστήριξη ALSA" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE, - "Ημερομηνία Κατασκευής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT, - "Υποστήριξη Cg" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT, - "Υποστήριξη Cocoa" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT, - "Υποστήριξη Γραμμής Εντολών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT, - "Υποστήριξη CoreText" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES, - "Χαρακτηριστικά Επεξεργαστή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI, - "DPI Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT, - "Ύψος Οθόνης (mm)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH, - "Πλάτος Οθόνης (mm)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT, - "Υποστήριξη DirectSound" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_WASAPI_SUPPORT, - "Υποστήριξη WASAPI" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT, - "Υποστήριξη δυναμικής βιβλιοθήκης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYNAMIC_SUPPORT, - "Δυναμική φόρτωση κατά την εκτέλεση της βιβλιοθήκης libretro" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT, - "Υποστήριξη EGL" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT, - "Υποστήριξη OpenGL/Direct3D render-to-texture (multi-pass shaders)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT, - "Υποστήριξη FFmpeg" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT, - "Υποστήριξη FreeType" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_STB_TRUETYPE_SUPPORT, - "Υποστήριξη STB TrueType" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER, - "Αναγνωριστικό λειτουργικού συστήματος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME, - "Όνομα λειτουργικού συστήματος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS, - "Λειτουργικό Σύστημα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION, - "Έκδοση Git" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT, - "Υποστήριξη GLSL" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT, - "Υποστήριξη HLSL" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT, - "Υποστήριξη JACK" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT, - "Υποστήριξη KMS/EGL" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LAKKA_VERSION, - "Έκδοση Lakka" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT, - "Υποστήριξη LibretroDB" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT, - "Υποστήριξη Libusb" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT, - "Υποστήριξη ανάλυσης libxml2 XML" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT, - "Υποστήριξη Netplay (peer-to-peer)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT, - "Υποστήριξη Γραμμής Εντολών Δικτύου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_REMOTE_SUPPORT, - "Υποστήριξη Χειριστηρίου Δικτύου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT, - "Υποστήριξη OpenAL" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT, - "Υποστήριξη OpenGL ES" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT, - "Υποστήριξη OpenGL" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT, - "Υποστήριξη OpenSL" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT, - "Υποστήριξη OpenVG" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT, - "Υποστήριξη OSS" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT, - "Υποστήριξη Επικαλλυμάτων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE, - "Πηγή ρεύματος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED, - "Φορτισμένο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING, - "Φορτίζει" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING, - "Ξεφορτίζει" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE, - "Καμία πηγή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT, - "Υποστήριξη PulseAudio" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT, - "Υποστήριξη Python (υποστήριξη script στις σκιάσεις)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RBMP_SUPPORT, - "Υποστήριξη BMP (RBMP)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL, - "Επίπεδο RetroRating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RJPEG_SUPPORT, - "Υποστήριξη JPEG (RJPEG)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT, - "Υποστήριξη RoarAudio" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT, - "Υποστήριξη PNG (RPNG)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT, - "Υποστήριξη RSound" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RTGA_SUPPORT, - "Υποστήριξη TGA (RTGA)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT, - "Υποστήριξη SDL2" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT, - "Υποστήριξη Εικόνων SDL" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT, - "Υποστήριξη SDL1.2" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SLANG_SUPPORT, - "Υποστήριξη Slang" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT, - "Υποστήριξη Threading" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT, - "Υποστήριξη Udev" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT, - "Υποστήριξη Video4Linux2" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER, - "Οδηγός video context" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VULKAN_SUPPORT, - "Υποστήριξη Vulkan" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_METAL_SUPPORT, - "Υποστήριξη Metal" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT, - "Υποστήριξη Wayland" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT, - "Υποστήριξη X11" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT, - "Υποστήριξη XAudio2" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT, - "Υποστήριξη XVideo" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT, - "Υποστήριξη Zlib" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, - "Λήψη Στιγμιότυπου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE, - "Threaded tasks" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_THUMBNAILS, - "Σκίτσα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS, - "Σκίτσα Αριστερά" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_VERTICAL_THUMBNAILS, - "Thumbnails Vertical Disposition" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_THUMBNAILS_DIRECTORY, - "Σκίτσα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST, - "Ενημερωτής Σκίτσων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_BOXARTS, - "Εξώφυλλα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS, - "Στιγμιότυπα Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS, - "Οθόνες Τίτλων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TIMEDATE_ENABLE, - "Εμφάνιση ημερομηνίας / ώρας" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE, - "Στυλ ημερομηνίας / ώρας" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_TIMEDATE_STYLE, - "Αλλάζει το στυλ της τρέχουσας ημερομηνίας ή και ώρας που φαίνεται μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_YMD_HMS, - "ΧΧΧΧ-ΜΜ-ΗΗ ΩΩ:ΛΛ:ΔΔ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_YMD_HM, - "ΧΧΧΧ-ΜΜ-ΗΗ ΩΩ:ΛΛ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_MDYYYY, - "ΜΜ-ΗΗ-ΧΧΧΧ ΩΩ:ΛΛ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_HMS, - "ΩΩ:ΛΛ:ΔΔ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_HM, - "ΩΩ:ΛΛ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_DM_HM, - "ΗΗ/ΜΜ ΩΩ:ΛΛ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_MD_HM, - "ΜΜ/ΗΗ ΩΩ:ΛΛ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_AM_PM, - "ΩΩ:ΛΛ:ΔΔ (ΠΜ/ΜΜ)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TITLE_COLOR, - "Χρώμα τίτλου μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TRUE, - "Αληθές" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UI_COMPANION_ENABLE, - "UI Companion Enable" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UI_COMPANION_START_ON_BOOT, - "UI Companion Start On Boot" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UI_COMPANION_TOGGLE, - "Εμφάνιση μενού επιφάνειας εργασίας κατά την εκκίνηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DESKTOP_MENU_ENABLE, - "Ενεργοποίηση μενού επιφάνειας εργασίας (επανεκκίνηση)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UI_MENUBAR_ENABLE, - "Γραμμή Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE, - "Αδυναμία ανάγνωσης συμπιεσμένου αρχείου." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UNDO_LOAD_STATE, - "Αναίρεση Φόρτωσης Κατάστασης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UNDO_SAVE_STATE, - "Αναίρεση Αποθήκευσης Κατάστασης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UNKNOWN, - "Άγνωστο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UPDATER_SETTINGS, - "Ενημερωτής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UPDATE_ASSETS, - "Ενημέρωση Βασικών Στοιχείων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES, - "Ενημέρωση Προφίλ Joypad" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UPDATE_CG_SHADERS, - "Ενημέρωση των Σκιάσεων Cg" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UPDATE_CHEATS, - "Ενημέρωση Απατών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UPDATE_CORE_INFO_FILES, - "Ενημέρωση Αρχείων Πληροφοριών Πυρήνων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UPDATE_DATABASES, - "Ενημέρωση Βάσεων Δεδομένων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UPDATE_GLSL_SHADERS, - "Ενημέρωση Σκιάσεων GLSL" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UPDATE_LAKKA, - "Ενημέρωση Lakka" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UPDATE_OVERLAYS, - "Ενημέρωση Επικαλλυμάτων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UPDATE_SLANG_SHADERS, - "Ενημέρωση Σκιάσεων Slang" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USER, - "Χρήστης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_KEYBOARD, - "Kbd" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USER_INTERFACE_SETTINGS, - "Διεπαφή Χρήστη" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USER_LANGUAGE, - "Γλώσσα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USER_SETTINGS, - "Χρήστης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, - "Χρήση Ενσωματωμένου Προβολέα Εικόνων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, - "Χρήση Ενσωματωμένου Αναπαραγωγέα Πολυμέσων Use Builtin Media Player" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_USE_THIS_DIRECTORY, - "<Χρήση αυτού του ευρετηρίου>" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_ALLOW_ROTATE, - "Επίτρεψη περιστροφής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO, - "Διαμόρφωση Αναλογίας Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_AUTO, - "Αυτόματη Αναλογία Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX, - "Αναλογία Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION, - "Εισαγωγή Μαύρων Καρέ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_CROP_OVERSCAN, - "Περικοπή Υπερσάρωσης (Επαναφόρτωση)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION, - "Disable Desktop Composition" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_DRIVER, - "Οδηγός Βίντεο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FILTER, - "Φίλτρο Βίντεο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_DIR, - "Φίλτρο Βίντεο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_FLICKER, - "Flicker filter" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FONT_ENABLE, - "Ενεργοποίηση Ειδοποιήσεων Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FONT_PATH, - "Γραμματοσειρά Ειδοποιήσεων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FONT_SIZE, - "Μέγεθος Γραμματοσειράς" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_ASPECT, - "Εξαναγκασμένη αναλογία απεικόνισης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE, - "Εξαναγκασμένη απενεργοποίηση sRGB FBO" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY, - "Καθυστέρηση Καρέ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN, - "Έναρξη σε Κατάσταση Πλήρης Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_GAMMA, - "Gamma Βίντεο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_GPU_RECORD, - "Χρήση Εγγραφής Κάρτας Γραφικών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_GPU_SCREENSHOT, - "Ενεργοποίηση Στιγμιότυπου Οθόνης Κάρτας Γραφικών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC, - "Σκληρός Συγχρονισμός Κάρτας Γραφικών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES, - "Σκληρός Συγχρονισμός Καρέ Κάρτας Γραφικών" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, - "Μέγιστες εικόνες swapchain" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_X, - "Θέση Ειδοποιήσης X" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_Y, - "Θέση Ειδοποιήσης Y" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX, - "Ένδειξη Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_POST_FILTER_RECORD, - "Use Post Filter Recording" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE, - "Κάθετος Ρυθμός Ανανέωσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO, - "Εκτιμόμενος Ρυθμός Καρέ Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_POLLED, - "Ορισμός Ρυθμού Ανανέωσης Βάση Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION, - "Περιστροφή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SCALE, - "Κλίμακα Παραθύρου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, - "Ακέραια Κλίμακα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS, - "Βίντεο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_DIR, - "Σκίαση Βίντεο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_NUM_PASSES, - "Shader Passes" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PARAMETERS, - "Shader Parameters" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET, - "Load Shader Preset" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS, - "Save Shader Preset As" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_CORE, - "Save Core Preset" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_PARENT, - "Save Content Directory Preset" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_GAME, - "Save Game Preset" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SHARED_CONTEXT, - "Enable Hardware Shared Context" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SMOOTH, - "Διγραμμικό Φιλτράρισμα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SOFT_FILTER, - "Ενεργοποίηση Απαλού Φίλτρου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_SWAP_INTERVAL, - "Διάστημα Εναλλαγής Κάθετου Συγχρονισμόυ (Vsync)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_TAB, - "Βίντεο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_THREADED, - "Threaded Video" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_VFILTER, - "Deflicker" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_HEIGHT, - "Προτιμώμενο Ύψος Αναλογίας Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH, - "Προτιμώμενο Πλάτος Αναλογίας Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_X, - "Προτιμώμενη Θέση Άξωνα X Αναλογίας Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y, - "Προτιμώμενη Θέση Άξωνα Y Αναλογίας Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH, - "Ορισμός Πλάτους Οθόνης VI" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, - "Vertical Sync (Vsync)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN, - "Παράθυρο Πλήρης Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH, - "Πλάτος Παραθύρου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT, - "Ύψος Παραθύρου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_X, - "Πλάτος Πλήρης Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_Y, - "Ύψος Πλήρης Οθόνης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_WIFI_DRIVER, - "Οδηγός Wi-Fi" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_WIFI_SETTINGS, - "Wi-Fi" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ALPHA_FACTOR, - "Menu Alpha Factor" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_RED, - "Γραμματοσειρά Μενού Κόκκινο Χρώμα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_GREEN, - "Γραμματοσειρά Μενού Πράσινο Χρώμα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_BLUE, - "Γραμματοσειρά Μενού Μπλε Χρώμα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_FONT, - "Γραμματοσειρά Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_CUSTOM, - "Custom" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_FLATUI, - "FlatUI" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME, - "Μονόχρωμο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME_INVERTED, - "Μονόχρωμο Ανεστραμμένο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_SYSTEMATIC, - "Systematic" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_NEOACTIVE, - "NeoActive" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_PIXEL, - "Pixel" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_RETROACTIVE, - "RetroActive" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_RETROSYSTEM, - "Retrosystem" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_DOTART, - "Dot-Art" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_AUTOMATIC, - "Automatic" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME, - "Χρώμα Θέματος Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_APPLE_GREEN, - "Πράσινο Μήλο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_DARK, - "Σκούρο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_LIGHT, - "Φωτεινό" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MORNING_BLUE, - "Πρωινό Μπλε" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_DARK_PURPLE, - "Σκούρο Μωβ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ELECTRIC_BLUE, - "Μπλε Ηλεκτρίκ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GOLDEN, - "Χρυσαφί" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_LEGACY_RED, - "Legacy Κόκκινο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MIDNIGHT_BLUE, - "Μεσωνύκτιο Μπλε" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_PLAIN, - "Απλό" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_UNDERSEA, - "Κάτω Από Την Θάλασσα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_VOLCANIC_RED, - "Ηφαιστιακό Κόκκινο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_RIBBON_ENABLE, - "Menu Shader Pipeline" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_SCALE_FACTOR, - "Menu Scale Factor" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_SHADOWS_ENABLE, - "Ενεργοποίηση Σκιών Εικονιδίων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_HISTORY, - "Προβολή Καρτέλας Ιστορικού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD, - "Προβολή Καρτέλας Εισαγωγής Περιεχομένου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS, - "Προβολή Καρτέλας Λίστας Αναπαραγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_FAVORITES, - "Προβολή Καρτέλας Αγαπημένων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_IMAGES, - "Προβολή Καρτέλας Εικόνων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_MUSIC, - "Προβολή Καρτέλας Μουσικής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS, - "Προβολή Καρτέλας Ρυθμίσεων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_VIDEO, - "Προβολή Καρτέλας Βίντεο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_NETPLAY, - "Προβολή Καρτέλας Netplay" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_LAYOUT, - "Διάταξη Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_THEME, - "Θέμα Εικόνων Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_YES, - "Ναι" - ) -MSG_HASH( - MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_TWO, - "Shader Preset" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEEVOS_ENABLE, - "Ενεργοποίηση ή απενεργοποίηση επιτευγμάτων. Για περισσότερες πληροφορίες επισκεφθείτε http://retroachievements.org" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEEVOS_TEST_UNOFFICIAL, - "Enable or disable unofficial achievements and/or beta features for testing purposes." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEEVOS_HARDCORE_MODE_ENABLE, - "Enable or disable savestates, cheats, rewind, pause, and slow-motion for all games." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEEVOS_LEADERBOARDS_ENABLE, - "Enable or disable in-game leaderboards. Has no effect if Hardcore Mode is disabled." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEEVOS_BADGES_ENABLE, - "Enable or disable badge display in the Achievement List." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEEVOS_VERBOSE_ENABLE, - "Enable or disable OSD verbosity for achievements." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEEVOS_AUTO_SCREENSHOT, - "Automatically take a screenshot when an achievement is triggered." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DRIVER_SETTINGS, - "Αλλαγή οδηγών που χρησιμοποιούνται από το σύστημα." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RETRO_ACHIEVEMENTS_SETTINGS, - "Αλλαγή ρυθμίσεων επιτευγμάτων." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_SETTINGS, - "Αλλαγή ρυθμίσεων πυρήνα." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RECORDING_SETTINGS, - "Αλλαγή ρυθμίσεων εγγραφής." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ONSCREEN_DISPLAY_SETTINGS, - "Αλλαγή επικάλλυψης οθόνης και επικάλλυψης πληκτρολογίου και ρυθμίσεις ειδοποιήσεων οθόνης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_FRAME_THROTTLE_SETTINGS, - "Αλλαγή ρυθμίσεων επιστροφής, γρήγορης κίνησης και αργής κίνησης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAVING_SETTINGS, - "Αλλαγή ρυθμίσεων αποθήκευσης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LOGGING_SETTINGS, - "Αλλαγή ρυθμίσεων αρχείου καταγραφής." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_USER_INTERFACE_SETTINGS, - "Αλλαγή ρυθμίσεων περιβάλλοντος χρήστη." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_USER_SETTINGS, - "Αλλαγή ρυθμίσεων λογαριασμού, ονόματος χρήστη και γλώσσας." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PRIVACY_SETTINGS, - "Αλλαγή ρυθμίσεων ιδιοτηκότητας." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MIDI_SETTINGS, - "Αλλαγή ρυθμίσεων MIDI." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DIRECTORY_SETTINGS, - "Αλλαγή προκαθορισμένων ευρετηρίων όπου βρίσκονται τα αρχεία." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PLAYLIST_SETTINGS, - "Αλλαγή ρυθμίσεων λιστών αναπαραγωγής." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETWORK_SETTINGS, - "Αλλαγή ρυθμίσεων εξυπηρετητή και δικτύου." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ADD_CONTENT_LIST, - "Σάρωση περιεχομένου και προσθήκη στην βάση δεδομένων." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_SETTINGS, - "Αλλαγή ρυθμίσεων εξόδου ήχου." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_BLUETOOTH_ENABLE, - "Ενεργοποίηση ή απενεργοποίηση bluetooth." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONFIG_SAVE_ON_EXIT, - "Αποθήκευση αλλαγών στο αρχείο διαμόρφωσης κατά την έξοδο." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONFIGURATION_SETTINGS, - "Αλλαγή προκαθορισμένων ρυθμίσεων των αρχείων διαμόρφωσης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONFIGURATIONS_LIST, - "Διαχειρισμός και δημιουργία αρχείων διαμόρφωσης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CPU_CORES, - "Αριθμός πυρήνων που έχει ο επεξεργαστής." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_FPS_SHOW, - "Εμφανίζει τον τρέχων ρυθμό καρέ ανά δευτερόλεπτο στην οθόνη." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_HOTKEY_BINDS, - "Διαμόρφωση ρυθμίσεων πλήκτρων εντολών." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO, - "Συνδιασμός κουμπιών χειριστηρίου για την εμφάνιση του μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_SETTINGS, - "Αλλαγή ρυθμίσεων χειριστηρίου, πληκτρολογίου και ποντικιού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_USER_BINDS, - "Διαμόρφωση χειρισμών για αυτόν τον χρήστη." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LATENCY_SETTINGS, - "Αλλαγή ρυθμίσεων συσχετιζόμενες με το βίντεο, τον ήχο και την καθυστέρηση εισαγωγής." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LOG_VERBOSITY, - "Ενεργοποίηση ή απενεργοποίηση αρχείων καταγραφής στο τερματικό." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY, - "Συμμετοχή ή δημιουργία μίας συνεδρίας netplay." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_LAN_SCAN_SETTINGS, - "Αναζήτηση για και σύνδεση με οικοδεσπότη netplay στο τοπικό δίκτυο." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INFORMATION_LIST_LIST, - "Εμφάνιση πληροφοριών συστήματος." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ONLINE_UPDATER, - "Κατεβάστε πρόσθετα, στοιχεία και περιεχόμενο για το RetroArch." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAMBA_ENABLE, - "Enable or disable network sharing of your folders." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SERVICES_SETTINGS, - "Manage operating system level services." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SHOW_HIDDEN_FILES, - "Show hidden files/directories inside the file browser." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SSH_ENABLE, - "Enable or disable remote command line access." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SUSPEND_SCREENSAVER_ENABLE, - "Αποτρέπει την προφύλαξη οθόνης του συστήματος από το να ενεργοποιηθεί." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_WINDOW_SCALE, - "Ορισμός μεγέθους παραθύρου σε σχέση με το μέγεθος της οπτικής γωνίας του πυρήνα. Διαφορετικά, παρακάτω μπορείτε να ορίσετε το πλάτος και το ύψος του παραθύρου σε σταθερό μέγεθος." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_USER_LANGUAGE, - "Ορίζει την γλώσσα του περιβάλλοντος." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_BLACK_FRAME_INSERTION, - "Εισάγει ένα μαύρο καρέ ανάμεσα στα καρέ. Χρήσιμο για χρήστες με οθόνες 120Hz που θέλουν να παίξουν περιεχόμενο στα 60Hz χωρίς 'φαντάσματα' στην εικόνα." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_FRAME_DELAY, - "Μειώνει την καθυστέρηση με μεγαλύτερο κίνδυνο για κολλήματα στο βίντεο. Προσθέτει μία επιβράδυνση μετά το V-Sync (σε ms)." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_HARD_SYNC_FRAMES, - "Ορίζει πόσα καρέ μπορεί ο επεξεργαστής να βρίσκεται μπροστά από την κάρτα γραφικών όταν χρησιμοποιείται τον 'Σκληρό Συγχρονισμό Κάρτα Γραφικών'." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, - "Tells the video driver to explicitly use a specified buffering mode." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_MONITOR_INDEX, - "Επιλέγει ποιά οθόνη θα χρησιμοποιηθεί." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_AUTO, - "Ο ακριβής εκτιμόμενος ρυθμός ανανέωσης της οθόνης σε Hz." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_POLLED, - "Ο ρυθμός ανανέωσης όπως αναφέρεται από τον οδηγό οθόνης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SETTINGS, - "Αλλαγή ρυθμίσεων εξόδου βίντεο." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_WIFI_SETTINGS, - "Σαρώνει για ασύρματα δίκτυα και δημιουργεί σύνδεση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_HELP_LIST, - "Μάθετε περισσότερα για το πως λειτουργεί το πρόγραμμα." - ) -MSG_HASH( - MSG_ADDED_TO_FAVORITES, - "Προστέθηκε στα αγαπημένα" - ) -MSG_HASH( - MSG_RESET_CORE_ASSOCIATION, - "Ο σύνδεση με πυρήνα της λίστας αναπαραγωγής έχει επαναφερθεί." - ) -MSG_HASH( - MSG_APPENDED_DISK, - "Appended disk" - ) -MSG_HASH( - MSG_APPLICATION_DIR, - "Application Dir" - ) -MSG_HASH( - MSG_APPLYING_CHEAT, - "Applying cheat changes." - ) -MSG_HASH( - MSG_APPLYING_SHADER, - "Applying shader" - ) -MSG_HASH( - MSG_AUDIO_MUTED, - "Ο ήχος απενεργοποιήθηκε." - ) -MSG_HASH( - MSG_AUDIO_UNMUTED, - "Ο ήχος ενεργοποιήθηκε." - ) -MSG_HASH( - MSG_AUTOCONFIG_FILE_ERROR_SAVING, - "Error saving autoconf file." - ) -MSG_HASH( - MSG_AUTOCONFIG_FILE_SAVED_SUCCESSFULLY, - "Autoconfig file saved successfully." - ) -MSG_HASH( - MSG_AUTOSAVE_FAILED, - "Could not initialize autosave." - ) -MSG_HASH( - MSG_AUTO_SAVE_STATE_TO, - "Auto save state to" - ) -MSG_HASH( - MSG_BLOCKING_SRAM_OVERWRITE, - "Blocking SRAM Overwrite" - ) -MSG_HASH( - MSG_BRINGING_UP_COMMAND_INTERFACE_ON_PORT, - "Bringing up command interface on port" - ) -MSG_HASH( - MSG_BYTES, - "bytes" - ) -MSG_HASH( - MSG_CANNOT_INFER_NEW_CONFIG_PATH, - "Cannot infer new config path. Use current time." - ) -MSG_HASH( - MSG_CHEEVOS_HARDCORE_MODE_ENABLE, - "Achievements Hardcore Mode Enabled, savestate & rewind were disabled." - ) -MSG_HASH( - MSG_COMPARING_WITH_KNOWN_MAGIC_NUMBERS, - "Comparing with known magic numbers..." - ) -MSG_HASH( - MSG_COMPILED_AGAINST_API, - "Compiled against API" - ) -MSG_HASH( - MSG_CONFIG_DIRECTORY_NOT_SET, - "Config directory not set. Cannot save new config." - ) -MSG_HASH( - MSG_CONNECTED_TO, - "Συνδέθηκε με" - ) -MSG_HASH( - MSG_CONTENT_CRC32S_DIFFER, - "Content CRC32s differ. Cannot use different games." - ) -MSG_HASH( - MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT, - "Content loading skipped. Implementation will load it on its own." - ) -MSG_HASH( - MSG_CORE_DOES_NOT_SUPPORT_SAVESTATES, - "Core does not support save states." - ) -MSG_HASH( - MSG_CORE_OPTIONS_FILE_CREATED_SUCCESSFULLY, - "Core options file created successfully." - ) -MSG_HASH( - MSG_COULD_NOT_FIND_ANY_NEXT_DRIVER, - "Could not find any next driver" - ) -MSG_HASH( - MSG_COULD_NOT_FIND_COMPATIBLE_SYSTEM, - "Could not find compatible system." - ) -MSG_HASH( - MSG_COULD_NOT_FIND_VALID_DATA_TRACK, - "Could not find valid data track" - ) -MSG_HASH( - MSG_COULD_NOT_OPEN_DATA_TRACK, - "could not open data track" - ) -MSG_HASH( - MSG_COULD_NOT_READ_CONTENT_FILE, - "Could not read content file" - ) -MSG_HASH( - MSG_COULD_NOT_READ_MOVIE_HEADER, - "Could not read movie header." - ) -MSG_HASH( - MSG_COULD_NOT_READ_STATE_FROM_MOVIE, - "Could not read state from movie." - ) -MSG_HASH( - MSG_CRC32_CHECKSUM_MISMATCH, - "CRC32 checksum mismatch between content file and saved content checksum in replay file header. Replay highly likely to desync on playback." - ) -MSG_HASH( - MSG_CUSTOM_TIMING_GIVEN, - "Custom timing given" - ) -MSG_HASH( - MSG_DECOMPRESSION_ALREADY_IN_PROGRESS, - "Decompression already in progress." - ) -MSG_HASH( - MSG_DECOMPRESSION_FAILED, - "Decompression failed." - ) -MSG_HASH( - MSG_DETECTED_VIEWPORT_OF, - "Detected viewport of" - ) -MSG_HASH( - MSG_DID_NOT_FIND_A_VALID_CONTENT_PATCH, - "Did not find a valid content patch." - ) -MSG_HASH( - MSG_DISCONNECT_DEVICE_FROM_A_VALID_PORT, - "Disconnect device from a valid port." - ) -MSG_HASH( - MSG_DISK_CLOSED, - "Closed" - ) -MSG_HASH( - MSG_DISK_EJECTED, - "Ejected" - ) -MSG_HASH( - MSG_DOWNLOADING, - "Γίνεται λήψη" - ) -MSG_HASH( - MSG_INDEX_FILE, - "ευρετηρίου" - ) -MSG_HASH( - MSG_DOWNLOAD_FAILED, - "Η λήψη απέτυχε" - ) -MSG_HASH( - MSG_ERROR, - "Πρόβλημα" - ) -MSG_HASH( - MSG_ERROR_LIBRETRO_CORE_REQUIRES_CONTENT, - "Libretro core requires content, but nothing was provided." - ) -MSG_HASH( - MSG_ERROR_LIBRETRO_CORE_REQUIRES_SPECIAL_CONTENT, - "Libretro core requires special content, but none were provided." - ) -MSG_HASH( - MSG_ERROR_PARSING_ARGUMENTS, - "Error parsing arguments." - ) -MSG_HASH( - MSG_ERROR_SAVING_CORE_OPTIONS_FILE, - "Error saving core options file." - ) -MSG_HASH( - MSG_ERROR_SAVING_REMAP_FILE, - "Error saving remap file." - ) -MSG_HASH( - MSG_ERROR_REMOVING_REMAP_FILE, - "Error removing remap file." - ) -MSG_HASH( - MSG_ERROR_SAVING_SHADER_PRESET, - "Error saving shader preset." - ) -MSG_HASH( - MSG_EXTERNAL_APPLICATION_DIR, - "External Application Dir" - ) -MSG_HASH( - MSG_EXTRACTING, - "Γίνεται εξαγωγή" - ) -MSG_HASH( - MSG_EXTRACTING_FILE, - "Γίνεται εξαγωγή αρχείου" - ) -MSG_HASH( - MSG_FAILED_SAVING_CONFIG_TO, - "Failed saving config to" - ) -MSG_HASH( - MSG_FAILED_TO, - "Failed to" - ) -MSG_HASH( - MSG_FAILED_TO_ACCEPT_INCOMING_SPECTATOR, - "Failed to accept incoming spectator." - ) -MSG_HASH( - MSG_FAILED_TO_ALLOCATE_MEMORY_FOR_PATCHED_CONTENT, - "Failed to allocate memory for patched content..." - ) -MSG_HASH( - MSG_FAILED_TO_APPLY_SHADER, - "Failed to apply shader." - ) -MSG_HASH( - MSG_FAILED_TO_BIND_SOCKET, - "Failed to bind socket." - ) -MSG_HASH( - MSG_FAILED_TO_CREATE_THE_DIRECTORY, - "Failed to create the directory." - ) -MSG_HASH( - MSG_FAILED_TO_EXTRACT_CONTENT_FROM_COMPRESSED_FILE, - "Failed to extract content from compressed file" - ) -MSG_HASH( - MSG_FAILED_TO_GET_NICKNAME_FROM_CLIENT, - "Failed to get nickname from client." - ) -MSG_HASH( - MSG_FAILED_TO_LOAD, - "Failed to load" - ) -MSG_HASH( - MSG_FAILED_TO_LOAD_CONTENT, - "Failed to load content" - ) -MSG_HASH( - MSG_FAILED_TO_LOAD_MOVIE_FILE, - "Failed to load movie file" - ) -MSG_HASH( - MSG_FAILED_TO_LOAD_OVERLAY, - "Αποτυχία φόρτωσης επικαλλύματος." - ) -MSG_HASH( - MSG_FAILED_TO_LOAD_STATE, - "Failed to load state from" - ) -MSG_HASH( - MSG_FAILED_TO_OPEN_LIBRETRO_CORE, - "Failed to open libretro core" - ) -MSG_HASH( - MSG_FAILED_TO_PATCH, - "Failed to patch" - ) -MSG_HASH( - MSG_FAILED_TO_RECEIVE_HEADER_FROM_CLIENT, - "Failed to receive header from client." - ) -MSG_HASH( - MSG_FAILED_TO_RECEIVE_NICKNAME, - "Failed to receive nickname." - ) -MSG_HASH( - MSG_FAILED_TO_RECEIVE_NICKNAME_FROM_HOST, - "Failed to receive nickname from host." - ) -MSG_HASH( - MSG_FAILED_TO_RECEIVE_NICKNAME_SIZE_FROM_HOST, - "Failed to receive nickname size from host." - ) -MSG_HASH( - MSG_FAILED_TO_RECEIVE_SRAM_DATA_FROM_HOST, - "Failed to receive SRAM data from host." - ) -MSG_HASH( - MSG_FAILED_TO_REMOVE_DISK_FROM_TRAY, - "Failed to remove disk from tray." - ) -MSG_HASH( - MSG_FAILED_TO_REMOVE_TEMPORARY_FILE, - "Failed to remove temporary file" - ) -MSG_HASH( - MSG_FAILED_TO_SAVE_SRAM, - "Failed to save SRAM" - ) -MSG_HASH( - MSG_FAILED_TO_SAVE_STATE_TO, - "Failed to save state to" - ) -MSG_HASH( - MSG_FAILED_TO_SEND_NICKNAME, - "Failed to send nickname." - ) -MSG_HASH( - MSG_FAILED_TO_SEND_NICKNAME_SIZE, - "Failed to send nickname size." - ) -MSG_HASH( - MSG_FAILED_TO_SEND_NICKNAME_TO_CLIENT, - "Failed to send nickname to client." - ) -MSG_HASH( - MSG_FAILED_TO_SEND_NICKNAME_TO_HOST, - "Failed to send nickname to host." - ) -MSG_HASH( - MSG_FAILED_TO_SEND_SRAM_DATA_TO_CLIENT, - "Failed to send SRAM data to client." - ) -MSG_HASH( - MSG_FAILED_TO_START_AUDIO_DRIVER, - "Failed to start audio driver. Will continue without audio." - ) -MSG_HASH( - MSG_FAILED_TO_START_MOVIE_RECORD, - "Failed to start movie record." - ) -MSG_HASH( - MSG_FAILED_TO_START_RECORDING, - "Failed to start recording." - ) -MSG_HASH( - MSG_FAILED_TO_TAKE_SCREENSHOT, - "Failed to take screenshot." - ) -MSG_HASH( - MSG_FAILED_TO_UNDO_LOAD_STATE, - "Failed to undo load state." - ) -MSG_HASH( - MSG_FAILED_TO_UNDO_SAVE_STATE, - "Failed to undo save state." - ) -MSG_HASH( - MSG_FAILED_TO_UNMUTE_AUDIO, - "Failed to unmute audio." - ) -MSG_HASH( - MSG_FATAL_ERROR_RECEIVED_IN, - "Fatal error received in" - ) -MSG_HASH( - MSG_FILE_NOT_FOUND, - "Το αρχείο δεν βρέθηκε" - ) -MSG_HASH( - MSG_FOUND_AUTO_SAVESTATE_IN, - "Found auto savestate in" - ) -MSG_HASH( - MSG_FOUND_DISK_LABEL, - "Found disk label" - ) -MSG_HASH( - MSG_FOUND_FIRST_DATA_TRACK_ON_FILE, - "Found first data track on file" - ) -MSG_HASH( - MSG_FOUND_LAST_STATE_SLOT, - "Found last state slot" - ) -MSG_HASH( - MSG_FOUND_SHADER, - "Found shader" - ) -MSG_HASH( - MSG_FRAMES, - "Καρέ" - ) -MSG_HASH( - MSG_GAME_SPECIFIC_CORE_OPTIONS_FOUND_AT, - "Per-Game Options: game-specific core options found at" - ) -MSG_HASH( - MSG_GOT_INVALID_DISK_INDEX, - "Got invalid disk index." - ) -MSG_HASH( - MSG_GRAB_MOUSE_STATE, - "Grab mouse state" - ) -MSG_HASH( - MSG_GAME_FOCUS_ON, - "Game focus on" - ) -MSG_HASH( - MSG_GAME_FOCUS_OFF, - "Game focus off" - ) -MSG_HASH( - MSG_HW_RENDERED_MUST_USE_POSTSHADED_RECORDING, - "Libretro core is hardware rendered. Must use post-shaded recording as well." - ) -MSG_HASH( - MSG_INFLATED_CHECKSUM_DID_NOT_MATCH_CRC32, - "Inflated checksum did not match CRC32." - ) -MSG_HASH( - MSG_INPUT_CHEAT, - "Εισαγωγή Απάτης" - ) -MSG_HASH( - MSG_INPUT_CHEAT_FILENAME, - "Input Cheat Filename" - ) -MSG_HASH( - MSG_INPUT_PRESET_FILENAME, - "Input Preset Filename" - ) -MSG_HASH( - MSG_INPUT_RENAME_ENTRY, - "Rename Title" - ) -MSG_HASH( - MSG_INTERFACE, - "Αντάπτορας Δικτύου" - ) -MSG_HASH( - MSG_INTERNAL_STORAGE, - "Εσωτερική Μνήμη Αποθήκευσης" - ) -MSG_HASH( - MSG_REMOVABLE_STORAGE, - "Αφαιρούμενο Μέσο Αποθήκευσης" - ) -MSG_HASH( - MSG_INVALID_NICKNAME_SIZE, - "Μη έγκυρο μέγεθος ψευδώνυμου." - ) -MSG_HASH( - MSG_IN_BYTES, - "σε bytes" - ) -MSG_HASH( - MSG_IN_GIGABYTES, - "σε gigabytes" - ) -MSG_HASH( - MSG_IN_MEGABYTES, - "σε megabytes" - ) -MSG_HASH( - MSG_LIBRETRO_ABI_BREAK, - "is compiled against a different version of libretro than this libretro implementation." - ) -MSG_HASH( - MSG_LIBRETRO_FRONTEND, - "Frontend for libretro" - ) -MSG_HASH( - MSG_LOADED_STATE_FROM_SLOT, - "Loaded state from slot #%d." - ) -MSG_HASH( - MSG_LOADED_STATE_FROM_SLOT_AUTO, - "Loaded state from slot #-1 (auto)." - ) -MSG_HASH( - MSG_LOADING, - "Γίνεται φόρτωση" - ) -MSG_HASH( - MSG_FIRMWARE, - "One or more firmware files are missing" - ) -MSG_HASH( - MSG_LOADING_CONTENT_FILE, - "Loading content file" - ) -MSG_HASH( - MSG_LOADING_HISTORY_FILE, - "Loading history file" - ) -MSG_HASH( - MSG_LOADING_STATE, - "Loading state" - ) -MSG_HASH( - MSG_MEMORY, - "Μνήμη" - ) -MSG_HASH( - MSG_MOVIE_FILE_IS_NOT_A_VALID_BSV1_FILE, - "Input replay movie file is not a valid BSV1 file." - ) -MSG_HASH( - MSG_MOVIE_FORMAT_DIFFERENT_SERIALIZER_VERSION, - "Input replay movie format seems to have a different serializer version. Will most likely fail." - ) -MSG_HASH( - MSG_MOVIE_PLAYBACK_ENDED, - "Input replay movie playback ended." - ) -MSG_HASH( - MSG_MOVIE_RECORD_STOPPED, - "Stopping movie record." - ) -MSG_HASH( - MSG_NETPLAY_FAILED, - "Failed to initialize netplay." - ) -MSG_HASH( - MSG_NO_CONTENT_STARTING_DUMMY_CORE, - "No content, starting dummy core." - ) -MSG_HASH( - MSG_NO_SAVE_STATE_HAS_BEEN_OVERWRITTEN_YET, - "No save state has been overwritten yet." - ) -MSG_HASH( - MSG_NO_STATE_HAS_BEEN_LOADED_YET, - "No state has been loaded yet." - ) -MSG_HASH( - MSG_OVERRIDES_ERROR_SAVING, - "Error saving overrides." - ) -MSG_HASH( - MSG_OVERRIDES_SAVED_SUCCESSFULLY, - "Overrides saved successfully." - ) -MSG_HASH( - MSG_PAUSED, - "Παύση." - ) -MSG_HASH( - MSG_PROGRAM, - "RetroArch" - ) -MSG_HASH( - MSG_READING_FIRST_DATA_TRACK, - "Reading first data track..." - ) -MSG_HASH( - MSG_RECEIVED, - "ελήφθη" - ) -MSG_HASH( - MSG_RECORDING_TERMINATED_DUE_TO_RESIZE, - "Recording terminated due to resize." - ) -MSG_HASH( - MSG_RECORDING_TO, - "Εγγραφή σε" - ) -MSG_HASH( - MSG_REDIRECTING_CHEATFILE_TO, - "Redirecting cheat file to" - ) -MSG_HASH( - MSG_REDIRECTING_SAVEFILE_TO, - "Redirecting save file to" - ) -MSG_HASH( - MSG_REDIRECTING_SAVESTATE_TO, - "Redirecting savestate to" - ) -MSG_HASH( - MSG_REMAP_FILE_SAVED_SUCCESSFULLY, - "Remap file saved successfully." - ) -MSG_HASH( - MSG_REMAP_FILE_REMOVED_SUCCESSFULLY, - "Remap file removed successfully." - ) -MSG_HASH( - MSG_REMOVED_DISK_FROM_TRAY, - "Removed disk from tray." - ) -MSG_HASH( - MSG_REMOVING_TEMPORARY_CONTENT_FILE, - "Removing temporary content file" - ) -MSG_HASH( - MSG_RESET, - "Reset" - ) -MSG_HASH( - MSG_RESTARTING_RECORDING_DUE_TO_DRIVER_REINIT, - "Restarting recording due to driver reinit." - ) -MSG_HASH( - MSG_RESTORED_OLD_SAVE_STATE, - "Restored old save state." - ) -MSG_HASH( - MSG_RESTORING_DEFAULT_SHADER_PRESET_TO, - "Shaders: restoring default shader preset to" - ) -MSG_HASH( - MSG_REVERTING_SAVEFILE_DIRECTORY_TO, - "Reverting savefile directory to" - ) -MSG_HASH( - MSG_REVERTING_SAVESTATE_DIRECTORY_TO, - "Reverting savestate directory to" - ) -MSG_HASH( - MSG_REWINDING, - "Rewinding." - ) -MSG_HASH( - MSG_REWIND_INIT, - "Initializing rewind buffer with size" - ) -MSG_HASH( - MSG_REWIND_INIT_FAILED, - "Failed to initialize rewind buffer. Rewinding will be disabled." - ) -MSG_HASH( - MSG_REWIND_INIT_FAILED_THREADED_AUDIO, - "Implementation uses threaded audio. Cannot use rewind." - ) -MSG_HASH( - MSG_REWIND_REACHED_END, - "Reached end of rewind buffer." - ) -MSG_HASH( - MSG_SAVED_NEW_CONFIG_TO, - "Saved new config to" - ) -MSG_HASH( - MSG_SAVED_STATE_TO_SLOT, - "Saved state to slot #%d." - ) -MSG_HASH( - MSG_SAVED_STATE_TO_SLOT_AUTO, - "Saved state to slot #-1 (auto)." - ) -MSG_HASH( - MSG_SAVED_SUCCESSFULLY_TO, - "Saved successfully to" - ) -MSG_HASH( - MSG_SAVING_RAM_TYPE, - "Saving RAM type" - ) -MSG_HASH( - MSG_SAVING_STATE, - "Saving state" - ) -MSG_HASH( - MSG_SCANNING, - "Σάρωση" - ) -MSG_HASH( - MSG_SCANNING_OF_DIRECTORY_FINISHED, - "Η σάρωση του ευρετηρίου ολοκληρώθηκε" - ) -MSG_HASH( - MSG_SENDING_COMMAND, - "Αποστολή εντολής" - ) -MSG_HASH( - MSG_SEVERAL_PATCHES_ARE_EXPLICITLY_DEFINED, - "Several patches are explicitly defined, ignoring all..." - ) -MSG_HASH( - MSG_SHADER, - "Σκίαση" - ) -MSG_HASH( - MSG_SHADER_PRESET_SAVED_SUCCESSFULLY, - "Shader preset saved successfully." - ) -MSG_HASH( - MSG_SKIPPING_SRAM_LOAD, - "Skipping SRAM load." - ) -MSG_HASH( - MSG_SLOW_MOTION, - "Αργή κίνηση." - ) -MSG_HASH( - MSG_FAST_FORWARD, - "Γρήγορη κίνηση." - ) -MSG_HASH( - MSG_SLOW_MOTION_REWIND, - "Slow motion rewind." - ) -MSG_HASH( - MSG_SRAM_WILL_NOT_BE_SAVED, - "SRAM will not be saved." - ) -MSG_HASH( - MSG_STARTING_MOVIE_PLAYBACK, - "Starting movie playback." - ) -MSG_HASH( - MSG_STARTING_MOVIE_RECORD_TO, - "Starting movie record to" - ) -MSG_HASH( - MSG_STATE_SIZE, - "State size" - ) -MSG_HASH( - MSG_STATE_SLOT, - "State slot" - ) -MSG_HASH( - MSG_TAKING_SCREENSHOT, - "Taking screenshot." - ) -MSG_HASH( - MSG_TO, - "to" - ) -MSG_HASH( - MSG_UNDID_LOAD_STATE, - "Undid load state." - ) -MSG_HASH( - MSG_UNDOING_SAVE_STATE, - "Undoing save state" - ) -MSG_HASH( - MSG_UNKNOWN, - "Άγνωστο" - ) -MSG_HASH( - MSG_UNPAUSED, - "Unpaused." - ) -MSG_HASH( - MSG_UNRECOGNIZED_COMMAND, - "Unrecognized command" - ) -MSG_HASH( - MSG_USING_CORE_NAME_FOR_NEW_CONFIG, - "Using core name for new config." - ) -MSG_HASH( - MSG_USING_LIBRETRO_DUMMY_CORE_RECORDING_SKIPPED, - "Using libretro dummy core. Skipping recording." - ) -MSG_HASH( - MSG_VALUE_CONNECT_DEVICE_FROM_A_VALID_PORT, - "Connect device from a valid port." - ) -MSG_HASH( - MSG_VALUE_DISCONNECTING_DEVICE_FROM_PORT, - "Disconnecting device from port" - ) -MSG_HASH( - MSG_VALUE_REBOOTING, - "Επανεκκίνηση..." - ) -MSG_HASH( - MSG_VALUE_SHUTTING_DOWN, - "Τερματισμός λειτουργίας..." - ) -MSG_HASH( - MSG_VERSION_OF_LIBRETRO_API, - "Έκδοση του libretro API" - ) -MSG_HASH( - MSG_VIEWPORT_SIZE_CALCULATION_FAILED, - "Viewport size calculation failed! Will continue using raw data. This will probably not work right ..." - ) -MSG_HASH( - MSG_VIRTUAL_DISK_TRAY, - "virtual disk tray." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_LATENCY, - "Επιθυμητή καθυστέρηση ήχου σε milliseconds. Ίσως να μην τηρηθεί εάν ο οδηγός ήχου δεν μπορεί να παρέχει την επιλεγμένη καθυστέρηση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_MUTE, - "Σίγαση/κατάργηση σίγασης ήχου." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_RATE_CONTROL_DELTA, - "Helps smooth out imperfections in timing when synchronizing audio and video. Be aware that if disabled, proper synchronization is nearly impossible to obtain." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CAMERA_ALLOW, - "Allow or disallow camera access by cores." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LOCATION_ALLOW, - "Allow or disallow location services access by cores." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_MAX_USERS, - "Μέγιστος αριθμός χρηστών που υποστηρίζεται από το RetroArch." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_POLL_TYPE_BEHAVIOR, - "Επιρροή του πως γίνεται η συγκέντρωση εισόδου μέσα στο RetroArch. Ο ορισμός σε 'Νωρίς' ή 'Αργά' μπορεί να έχει ως αποτέλεσμα μικρότερη καθυστέρηση με τις ρυθμίσεις σας." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_ALL_USERS_CONTROL_MENU, - "Επιτρέπει σε οποιονδήποτε χρήστη να χειριστεί το μενού. Εάν απενεργοποιηθεί, μόνο ο Χρήστης 1 μπορεί να χειριστει το μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_VOLUME, - "Ένταση ήχου (σε dB). Το 0 είναι η φυσιολογική ένταση και δεν εφαρμόζεται gain." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_WASAPI_EXCLUSIVE_MODE, - "Allow the WASAPI driver to take exclusive control of the audio device. If disabled, it will use shared mode instead." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_WASAPI_FLOAT_FORMAT, - "Use float format for the WASAPI driver, if supported by your audio device." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_WASAPI_SH_BUFFER_LENGTH, - "The intermediate buffer length (in frames) when using the WASAPI driver in shared mode." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_SYNC, - "Συγχρονισμός ήχου. Προτείνεται." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_AXIS_THRESHOLD, - "Πόσο μακριά ένας άξωνας πρέπει να γείρει ώστε να οδηγήσει σε πάτημα κουμπιού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_BIND_TIMEOUT, - "Χρόνος αναμονής σε δευτερόλεπτα μέχρι την συνέχιση στην επόμενη σύνδεση πλήκτρων." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_BIND_HOLD, - "Δευτερόλεπτα τα οποία χρειάζεται να κρατήσετε πατημένο κάποιο κουμπί μέχρι την σύνδεση του." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_TURBO_PERIOD, - "Describes the period when turbo-enabled buttons are toggled. Numbers are described in frames." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_DUTY_CYCLE, - "Describes how long the period of a turbo-enabled button should be. Numbers are described in frames." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_VSYNC, - "Συγχρονίζει την έξοδο βίντεο της κάρτας γραφικών με τον ρυθμό ανανέωσης της οθόνης. Προτείνεται." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_ALLOW_ROTATE, - "Allow cores to set rotation. When disabled, rotation requests are ignored. Useful for setups where one manually rotates the screen." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DUMMY_ON_CORE_SHUTDOWN, - "Some cores might have a shutdown feature. If enabled, it will prevent the core from shutting RetroArch down. Instead, it loads a dummy core." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHECK_FOR_MISSING_FIRMWARE, - "Check if all the required firmware is present before attempting to load content." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE, - "Ο κάθετος ρυθμός ανανέωσης της οθόνης. Χρησιμοποιείται για τον υπολογισμό του κατάλληλου ρυθμού εισαγωγής ήχου.\n" - "ΣΗΜΕΙΩΣΗ: Αυτή η επιλογή αγνοείται εάν έχετε ενεργοποιήσει το 'Threaded Video'." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_ENABLE, - "Ενεργοποίηση εξόδου ήχου." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_MAX_TIMING_SKEW, - "The maximum change in audio input rate. Increasing this enables very large changes in timing at the cost of an inaccurate audio pitch (e.g., running PAL cores on NTSC displays)." - ) -MSG_HASH( - MSG_FAILED, - "failed" - ) -MSG_HASH( - MSG_SUCCEEDED, - "succeeded" - ) -MSG_HASH( - MSG_DEVICE_NOT_CONFIGURED, - "not configured" - ) -MSG_HASH( - MSG_DEVICE_NOT_CONFIGURED_FALLBACK, - "not configured, using fallback" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST, - "Database Cursor List" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DEVELOPER, - "Database - Filter : Developer" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_PUBLISHER, - "Database - Filter : Publisher" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISABLED, - "Disabled" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ENABLED, - "Enabled" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_PATH, - "Content History Path" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_ORIGIN, - "Database - Filter : Origin" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_FRANCHISE, - "Database - Filter : Franchise" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_ESRB_RATING, - "Database - Filter : ESRB Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_ELSPA_RATING, - "Database - Filter : ELSPA Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_PEGI_RATING, - "Database - Filter : PEGI Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_CERO_RATING, - "Database - Filter : CERO Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_BBFC_RATING, - "Database - Filter : BBFC Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_MAX_USERS, - "Database - Filter : Max Users" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_RELEASEDATE_BY_MONTH, - "Database - Filter : Releasedate By Month" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_RELEASEDATE_BY_YEAR, - "Database - Filter : Releasedate By Year" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_ISSUE, - "Database - Filter : Edge Magazine Issue" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_RATING, - "Database - Filter : Edge Magazine Rating" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DATABASE_INFO, - "Πληροφορίες Βάσης Δεδομένων" - ) -MSG_HASH( - MSG_WIFI_SCAN_COMPLETE, - "Η σάρωση του Wi-Fi ολοκληρώθηκε." - ) -MSG_HASH( - MSG_SCANNING_WIRELESS_NETWORKS, - "Σάρωση ασύρματων δικτύων..." - ) -MSG_HASH( - MSG_NETPLAY_LAN_SCAN_COMPLETE, - "Οκληρώθηκε η σάρωση Netplay." - ) -MSG_HASH( - MSG_NETPLAY_LAN_SCANNING, - "Σάρωση για οικοδεσπότες netplay..." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_NONACTIVE, - "Παύση παιχνιδιού όταν το RetroArch δεν είναι το ενεργό παράθυρο." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_DISABLE_COMPOSITION, - "Enable or disable composition." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_HISTORY_LIST_ENABLE, - "Ενεργοποίηση ή απενεργοποίηση λίστας πρόσφατων για παιχνίδια, εικόνες, μουσική και βίντεο." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_HISTORY_SIZE, - "Περιορισμός καταχωρήσεων στην λίστα πρόσφατων για παιχνίδια, εικόνες, μουσική και βίντεο." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_UNIFIED_MENU_CONTROLS, - "Ενοποιημένος Χειρισμός Μενού" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_UNIFIED_MENU_CONTROLS, - "Χρήση του ίδιου χειρισμού για το μενού και το παιχνίδι. Εφαρμόζεται στο πληκτρολόγιο." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_FONT_ENABLE, - "Εμφάνιση μηνυμάτων οθόνης." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETWORK_USER_REMOTE_ENABLE, - "User %d Remote Enable" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BATTERY_LEVEL_ENABLE, - "Εμφάνιση επιπέδου μπαταρίας" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SELECT_FILE, - "Επιλογή Αρχείου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SELECT_FROM_COLLECTION, - "Επιλογή Από Συλλογή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_FILTER, - "Φίλτρα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SCALE, - "Κλίμακα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_START_WHEN_LOADED, - "Netplay will start when content is loaded." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_LOAD_CONTENT_MANUALLY, - "Couldn't find a suitable core or content file, load manually." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BROWSE_URL_LIST, - "Browse URL" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BROWSE_URL, - "URL Path" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BROWSE_START, - "Έναρξη" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_BOKEH, - "Bokeh" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOWFLAKE, - "Χιονονιφάδα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_REFRESH_ROOMS, - "Ανανέωση Λίστας Δωματίων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME, - "Ψευδώνυμο: %s" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME_LAN, - "Ψευδώνυμο (lan): %s" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND, - "Βρέθηκε συμβατό περιεχόμενο" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_CROP_OVERSCAN, - "Αφαιρεί μερικά pixel γύρω από την εικόνα όπου εθιμικά οι προγραμματιστές άφηναν κενά ή και που περιέχουν άχρηστα pixel." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SMOOTH, - "Προσθέτει μία μικρή θολούρα στην εικόνα ώστε να αφαιρέσει τις σκληρές γωνίες των pixel. Αυτή η επιλογή έχει πολύ μικρή επιρροή στην επίδοση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_FILTER, - "Εφαρμόστε ένα φίλτρο βίντεο που λειτουργεί με τον επεξεργαστή.\n" - "ΣΗΜΕΙΩΣΗ: Μπορεί να έχει μεγάλο κόστος στην επίδοση. Μερικά φίλτρα βίντεο μπορεί να δουλεύουν μόνο με πυρήνες που χρησιμοποιούν 32bit ή 16bit χρώμα." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEEVOS_USERNAME, - "Εισάγεται το όνομα χρήστη του λογαριασμού σας στο RetroAchievements." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEEVOS_PASSWORD, - "Εισάγεται τον κωδικό πρόσβασης του λογαριασμού σας στο RetroAchievements." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_NICKNAME, - "Εισάγεται το όνομα χρήστη σας εδώ. Αυτό θα χρησιμοποιηθεί για συνεδρίες netplay ανάμεσα σε άλλα πράγματα." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_POST_FILTER_RECORD, - "Capture the image after filters (but not shaders) are applied. Your video will look as fancy as what you see on your screen." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_LIST, - "Επιλέξτε ποιον πυρήνα θα χρησιμοποιήστε." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LOAD_CONTENT_LIST, - "Επιλέξτε ποιο περιεχόμενο θα ξεκινήσετε." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETWORK_INFORMATION, - "Εμφάνιση ανταπτόρων δικτύου και τις συσχετιζόμενες διευθύνσεις IP." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SYSTEM_INFORMATION, - "Εμφάνιση πληροφοριών για την συγκεκριμένη συσκευή." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUIT_RETROARCH, - "Έξοδος από το πρόγραμμα." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_WINDOW_WIDTH, - "Ορίστε το προτιμώμενο πλάτος του παραθύρου απεικόνισης. Αφήνοντας το στο 0 θα επιχειρηθεί η κλίμακα του παραθύρου να είναι όσο το δυνατόν μεγαλύτερη." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_WINDOW_HEIGHT, - "Ορίστε το προτιμώμενο ύψος του παραθύρου απεικόνισης. Αφήνοντας το στο 0 θα επιχειρηθεί η κλίμακα του παραθύρου να είναι όσο το δυνατόν μεγαλύτερη." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_X, - "Set the custom width size for the non-windowed fullscreen mode. Leaving it at 0 will use the desktop resolution." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_Y, - "Set the custom height size for the non-windowed fullscreen mode. Leaving it at 0 will use the desktop resolution" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_X, - "Specify custom X axis position for onscreen text." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_Y, - "Specify custom Y axis position for onscreen text." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_FONT_SIZE, - "Specify the font size in points." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_OVERLAY_HIDE_IN_MENU, - "Απόκρυψη του επικαλλύματος μέσα στο μενού και εμφάνιση του ξανά με την έξοδο από το μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, - "Εμφάνιση εισαγωγών πληκτρολογίου/χειριστηρίου στο επικάλλυμα οθόνης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, - "Επιλογή της θύρας για όταν είναι ενεργοποιημένη η επιλογή 'Εμφάνιση Εισαγωγών Στην Οθόνη'" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_COLLECTION_LIST, - "Το σαρωμένο περιεχόμενο θα εμφανίζεται εδώ." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER, - "Αλλαγή κλίμακας βίντεο σε ακέραια βήματα. Το βασικό μέγεθος εξαρτάται από την γεωμετρία και την κλίμακα οθόνης του συστήματος. Εάν η 'Εξαναγκασμένη Κλίμακα' δεν έχει οριστεί, οι άξωνες X/Y θα αλλάζουν κλίμακα ξεχωριστά." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_GPU_SCREENSHOT, - "Screenshots output of GPU shaded material if available." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_ROTATION, - "Forces a certain rotation of the screen. The rotation is added to rotations which the core sets." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_FORCE_SRGB_DISABLE, - "Forcibly disable sRGB FBO support. Some Intel OpenGL drivers on Windows have video problems with sRGB FBO support if this is enabled. Enabling this can work around it." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN, - "Έναρξη σε πλήρη οθόνη. Μπορεί να αλλάξει κατά την εκτέλεση. Μπορεί να παρακαμπτεί από έναν διακόπτη γραμμής τερματικού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_WINDOWED_FULLSCREEN, - "Εάν χρησιμοποιηθεί πλήρης οθόνη προτιμήστε την κατάσταση παραθύρου πλήρης οθόνης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_GPU_RECORD, - "Records output of GPU shaded material if available." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAVESTATE_AUTO_INDEX, - "When making a savestate, save state index is automatically increased before it is saved. When loading content, the index will be set to the highest existing index." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_BLOCK_SRAM_OVERWRITE, - "Block Save RAM from being overwritten when loading save states. Might potentially lead to buggy games." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_FASTFORWARD_RATIO, - "The maximum rate at which content will be run when using fast forward (e.g., 5.0x for 60 fps content = 300 fps cap). If set to 0.0x, fastforward ratio is unlimited (no FPS cap)." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SLOWMOTION_RATIO, - "When in slow motion, content will slow down by the factor specified/set." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Run core logic one or more frames ahead then load the state back to reduce perceived input lag." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, - "The number of frames to run ahead. Causes gameplay issues such as jitter if you exceed the number of lag frames internal to the game." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Use a second instance of the RetroArch core to run ahead. Prevents audio problems due to loading state." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, - "Hides the warning message that appears when using RunAhead and the core does not support savestates." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_REWIND_ENABLE, - "Ενεργοποίηση επιστροφής. Η επίδοση θα πέσει κατά το παιχνίδι." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_APPLY_AFTER_TOGGLE, - "Apply cheat immediately after toggling." -) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_APPLY_AFTER_LOAD, - "Auto-apply cheats when game loads." -) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_REPEAT_COUNT, - "The number of times the cheat will be applied. Use with the other two Iteration options to affect large areas of memory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_REPEAT_ADD_TO_ADDRESS, - "After each 'Number of Iterations' the Memory Address will be increased by this number times the 'Memory Search Size'." -) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_REPEAT_ADD_TO_VALUE, - "After each 'Number of Iterations' the Value will be increased by this amount." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_REWIND_GRANULARITY, - "When rewinding a defined number of frames, you can rewind several frames at a time, increasing the rewind speed." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_REWIND_BUFFER_SIZE, - "The amount of memory (in MB) to reserve for the rewind buffer. Increasing this will increase the amount of rewind history." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_REWIND_BUFFER_SIZE_STEP, - "Each time you increase or decrease the rewind buffer size value via this UI it will change by this amount" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_IDX, - "Index position in list." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_ADDRESS_BIT_POSITION, - "Address bitmask when Memory Search Size < 8-bit." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_MATCH_IDX, - "Select the match to view." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_START_OR_CONT, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_START_OR_RESTART, - "Αριστερά/Δεξιά για αλλαγή μεγέθους bit" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EXACT, - "Αριστερά/Δεξιά για αλλαγή τιμής" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_SEARCH_LT, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_SEARCH_GT, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_SEARCH_LTE, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_SEARCH_GTE, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EQ, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_SEARCH_NEQ, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EQPLUS, - "Αριστερά/Δεξιά για αλλαγή τιμής" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EQMINUS, - "Αριστερά/Δεξιά για αλλαγή τιμής" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_ADD_MATCHES, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_VIEW_MATCHES, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_CREATE_OPTION, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_DELETE_OPTION, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_ADD_NEW_TOP, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_ADD_NEW_BOTTOM, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_DELETE_ALL, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_RELOAD_CHEATS, - "" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_BIG_ENDIAN, - "Big endian : 258 = 0x0102,\n" - "Little endian : 258 = 0x0201" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LIBRETRO_LOG_LEVEL, - "Sets log level for cores. If a log level issued by a core is below this value, it is ignored." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PERFCNT_ENABLE, - "Enable performance counters for RetroArch (and cores)." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAVESTATE_AUTO_SAVE, - "Automatically makes a savestate at the end of RetroArch's runtime. RetroArch will automatically load this savestate if 'Auto Load State' is enabled." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAVESTATE_AUTO_LOAD, - "Automatically load the auto save state on startup." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAVESTATE_THUMBNAIL_ENABLE, - "Show thumbnails of save states inside the menu." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUTOSAVE_INTERVAL, - "Autosaves the non-volatile Save RAM at a regular interval. This is disabled by default unless set otherwise. The interval is measured in seconds. A value of 0 disables autosave." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_REMAP_BINDS_ENABLE, - "If enabled, overrides the input binds with the remapped binds set for the current core." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_AUTODETECT_ENABLE, - "Enable input auto-detection. Will attempt to autoconfigure joypads, Plug-and-Play style." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_INPUT_SWAP_OK_CANCEL, - "Εναλλαγή πλήτρκων για Επιβεβαίωση/Ακύρωση. Απενεργοποιημένο είναι ο Ιαπωνικός προσανατολισμός, ενεργοποιημένος είναι ο δυτικός προσανατολισμός." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, - "Εάν απενεργοποιηθεί το περιεχόμενο θα συνεχίσει να τρέχει στο παρασκήνιο όταν το μενού του RetroArch είναι ανοικτό." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_DRIVER, - "Οδηγός βίντεο προς χρήση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_DRIVER, - "Οδηγός ήχου προς χρήση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_DRIVER, - "Οδηγός Εισόδου προς χρήση. Ανάλογα με τον οδηγό βίντεο, ίσως αλλάξει αναγκαστικά ο οδηγός εισαγωγής." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_JOYPAD_DRIVER, - "Οδηγός Joypad προς χρήση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_RESAMPLER_DRIVER, - "Οδηγός Επαναδειγματολήπτη Ήχου προς χρήση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CAMERA_DRIVER, - "Οδηγός Κάμερας προς χρήση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LOCATION_DRIVER, - "Οδηγός Τοποθεσίας προς χρήση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_DRIVER, - "Οδηγός Μενού προς χρήση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RECORD_DRIVER, - "Οδηγός Εγγραφής προς χρήση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MIDI_DRIVER, - "Οδηγός MIDI προς χρήση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_WIFI_DRIVER, - "Οδηγός Wi-Fi προς χρήση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, - "Filter files being shown in filebrowser by supported extensions." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_WALLPAPER, - "Select an image to set as menu wallpaper." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DYNAMIC_WALLPAPER, - "Dynamically load a new wallpaper depending on context." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_DEVICE, - "Παράκαμψη της προκαθορισμένης συσκευής ήχου που χρησιμοποιεί ο οδηγός ήχου. Αυτή η επιλογή εξαρτάται από τον οδηγό." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_DSP_PLUGIN, - "Πρόσθετο ήχου DSP που επεξεργάζεται τον ήχο πριν αποσταλεί στον οδηγό." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_OUTPUT_RATE, - "Audio output sample rate." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OVERLAY_OPACITY, - "Διαφάνεια όλων των στοιχείων του επικαλλύματος." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OVERLAY_SCALE, - "Κλίμακα όλων των στοιχείων του επικαλλύματος." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_OVERLAY_ENABLE, - "Ενεργοποίηση του επικαλλύματος." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OVERLAY_PRESET, - "Επιλογή ενός επικαλλύματος από τον περιηγητή αρχείων." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_IP_ADDRESS, - "The address of the host to connect to." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_TCP_UDP_PORT, - "The port of the host IP address. Can be either a TCP or UDP port." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_PASSWORD, - "The password for connecting to the netplay host. Used only in host mode." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_PUBLIC_ANNOUNCE, - "Whether to announce netplay games publicly. If unset, clients must manually connect rather than using the public lobby." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_SPECTATE_PASSWORD, - "The password for connecting to the netplay host with only spectator privileges. Used only in host mode." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_START_AS_SPECTATOR, - "Whether to start netplay in spectator mode." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_ALLOW_SLAVES, - "Whether to allow connections in slave mode. Slave-mode clients require very little processing power on either side, but will suffer significantly from network latency." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_REQUIRE_SLAVES, - "Whether to disallow connections not in slave mode. Not recommended except for very fast networks with very weak machines." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_STATELESS_MODE, - "Whether to run netplay in a mode not requiring save states. If set to true, a very fast network is required, but no rewinding is performed, so there will be no netplay jitter." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_CHECK_FRAMES, - "The frequency in frames with which netplay will verify that the host and client are in sync." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_NAT_TRAVERSAL, - "When hosting, attempt to listen for connections from the public Internet, using UPnP or similar technologies to escape LANs." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STDIN_CMD_ENABLE, - "Enable stdin command interface." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MOUSE_ENABLE, - "Enable mouse controls inside the menu." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_POINTER_ENABLE, - "Enable touch controls inside the menu." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_THUMBNAILS, - "Type of thumbnail to display." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, - "Type of thumbnail to display at the left." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_XMB_VERTICAL_THUMBNAILS, - "Display the left thumbnail under the right one, on the right side of the screen." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_TIMEDATE_ENABLE, - "Εμφάνιση τρέχουσας ημερομηνίας ή και ώρας μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_BATTERY_LEVEL_ENABLE, - "Εμφάνιση τρέχουσας μπαταρίας μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NAVIGATION_WRAPAROUND, - "Wrap-around to beginning and/or end if boundary of list is reached horizontally or vertically." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_ENABLE_HOST, - "Ενεργοποιεί το netplay ως οικοδεσπότης (εξυπηρετητής)." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_ENABLE_CLIENT, - "Ενεργοποιεί το netplay ως πελάτης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_DISCONNECT, - "Αποσυνδέει μία ενεργή σύνδεση Netplay." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SCAN_DIRECTORY, - "Σαρώνει ένα ευρετήριο για συμβατά αρχεία και τα προσθέτει στην συλλογή." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SCAN_FILE, - "Σαρώνει ένα συμβατό αρχείο και το προσθέτει στην συλλογή." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SWAP_INTERVAL, - "Χρησιμοποιεί ένα προτιμώμενο διάστημα αλλαγής για το Vsync. Ορίστε αυτό ώστε να μειώσεται στο μισό τον ρυθμό ανανέωσης της οθόνης αποτελεσματικά." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SORT_SAVEFILES_ENABLE, - "Sort save files in folders named after the core used." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SORT_SAVESTATES_ENABLE, - "Sort save states in folders named after the core used." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_REQUEST_DEVICE_I, - "Request to play with the given input device." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_UPDATER_BUILDBOT_URL, - "URL to core updater directory on the Libretro buildbot." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_BUILDBOT_ASSETS_URL, - "URL to assets updater directory on the Libretro buildbot." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE, - "After downloading, automatically extract files contained in the downloaded archives." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_REFRESH_ROOMS, - "Σάρωση για νέα δωμάτια." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DELETE_ENTRY, - "Κατάργηση αυτής της καταχώρησης από την συλλογή." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INFORMATION, - "View more information about the content." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES, - "Προσθήκη καταχώρησης στα αγαπημένα." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST, - "Προσθήκη καταχώρησης στα αγαπημένα." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN, - "Έναρξη περιεχομένου." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_FILE_BROWSER_SETTINGS, - "Προσαρμογή ρυθμίσεων εξερευνητή αρχείου." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUTO_REMAPS_ENABLE, - "Enable customized controls by default at startup." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUTO_OVERRIDES_ENABLE, - "Enable customized configuration by default at startup." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_GAME_SPECIFIC_OPTIONS, - "Enable customized core options by default at startup." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_ENABLE, - "Εμφανίζει το όνομα του τρέχων πυρήνα μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DATABASE_MANAGER, - "Προβολή βάσεων δεδομένων." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CURSOR_MANAGER, - "Προβολή προηγούμενων αναζητήσεων." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_TAKE_SCREENSHOT, - "Καταγράφει μία εικόνα της οθόνης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOSE_CONTENT, - "Κλείνει το τρέχον περιεχόμενο. Οποιεσδήποτε μη αποθηκευμένες αλλαγές μπορεί να χαθούν." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LOAD_STATE, - "Φόρτωση μίας κατάστασης από την τρέχουσα θέση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAVE_STATE, - "Αποθήκευση μίας κατάστασης στην τρέχουσα θέση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME, - "Συνέχιση εκτέλεσης του τρέχοντος περιεχομένου και έξοδος από το Γρήγορο Μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESUME_CONTENT, - "Συνέχιση εκτέλεσης του τρέχοντος περιεχομένου και έξοδος από το Γρήγορο Μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STATE_SLOT, - "Αλλάζει την τρέχουσα επιλεγμένη θέση κατάστασης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_UNDO_LOAD_STATE, - "Εάν μία κατάσταση φορτώθηκε, το περιεχόμενο θα επιστρέψει στην κατάσταση πριν την φόρτωση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_UNDO_SAVE_STATE, - "Εάν μία κατάσταση αντικαταστάθηκε, το περιεχόμενο θα επιστρέψει στην προηγούμενη κατάσταση αποθήκευσης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ACCOUNTS_RETRO_ACHIEVEMENTS, - "Υπηρεσία RetroAchievements. Για περισσότερες πληροφορίες επισκεφθείτε το http://retroachievements.org" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ACCOUNTS_LIST, - "Διαχειρίζεται τους τρέχοντες διαμορφωμένους λογαριασμούς." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_REWIND, - "Διαχειρίζεται τις ρυθμίσεις επαναφοράς." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_CHEAT_DETAILS, - "Manages cheat details settings." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_META_CHEAT_SEARCH, - "Start or continue a cheat code search." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESTART_CONTENT, - "Επανεκκινεί το περιεχόμενο από την αρχή." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, - "Saves an override configuration file which will apply for all content loaded with this core. Will take precedence over the main configuration." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR, - "Saves an override configuration file which will apply for all content loaded from the same directory as the current file. Will take precedence over the main configuration." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, - "Saves an override configuration file which will apply for the current content only. Will take precedence over the main configuration." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_CHEAT_OPTIONS, - "Στήσιμο κωδικών απάτης." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SHADER_OPTIONS, - "Στήσιμο σκιάσεων για την οπτική βελτίωση της εικόνας." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, - "Αλλαγή χειρισμών για το τρέχον εκτελούμενο περιεχόμενο." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_OPTIONS, - "Αλλαγή επιλογών για το τρέχον εκτελούμενο περιεχόμενο." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SHOW_ADVANCED_SETTINGS, - "Show advanced settings for power users (hidden by default)." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_THREADED_DATA_RUNLOOP_ENABLE, - "Perform tasks on a separate thread." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_REMOVE, - "Επιτρέψτε στον χρήστη να καταργεί τις καταχωρήσεις από την συλλογή." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SYSTEM_DIRECTORY, - "Sets the System directory. Cores can query for this directory to load BIOSes, system-specific configs, etc." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, - "Sets start directory for the filebrowser." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_DIR, - "Usually set by developers who bundle libretro/RetroArch apps to point to assets." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DYNAMIC_WALLPAPERS_DIRECTORY, - "Directory to store wallpapers dynamically loaded by the menu depending on context." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_THUMBNAILS_DIRECTORY, - "Supplementary thumbnails (boxarts/misc. images, etc.) are stored here." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RGUI_CONFIG_DIRECTORY, - "Sets start directory for menu configuration browser." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN, - "The number of frames of input latency for netplay to use to hide network latency. Reduces jitter and makes netplay less CPU-intensive, at the expense of noticeable input lag." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, - "The range of frames of input latency that may be used to hide network latency. Reduces jitter and makes netplay less CPU-intensive, at the expense of unpredictable input lag." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, - "Cycle the current disk. If the disk is inserted, it will eject the disk. If the disk has not been inserted, it will be inserted. " - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_INDEX, - "Change the disk index." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_OPTIONS, - "Disk image management." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, - "Select a disk image to insert." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, - "Makes sure the framerate is capped while inside the menu." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VRR_RUNLOOP_ENABLE, - "No deviation from core requested timing. Use for Variable Refresh Rate screens, G-Sync, FreeSync." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_XMB_LAYOUT, - "Select a different layout for the XMB interface." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_XMB_THEME, - "Select a different theme for the icon. Changes will take effect after you restart the program." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_XMB_SHADOWS_ENABLE, - "Enable drop shadows for all icons. This will have a minor performance hit." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MATERIALUI_MENU_COLOR_THEME, - "Select a different background color gradient theme." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_WALLPAPER_OPACITY, - "Modify the opacity of the background wallpaper." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_XMB_MENU_COLOR_THEME, - "Select a different background color gradient theme." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE, - "Select an animated background effect. Can be GPU-intensive depending on the effect. If performance is unsatisfactory, either turn this off or revert to a simpler effect." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_XMB_FONT, - "Select a different main font to be used by the menu." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_FAVORITES, - "Προβολή καρτέλας αγαπημένων μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_IMAGES, - "Προβολή καρτέλας εικόνων μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_MUSIC, - "Προβολή καρτέλας μουσικής μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_VIDEO, - "Προβολή καρτέλας βίντεο μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_NETPLAY, - "Προβολή καρτέλας netplay μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS, - "Προβολή καρτέλας ρυθμίσεων μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_HISTORY, - "Προβολή καρτέλας πρόσφατου ιστορικού μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_ADD, - "Προβολή καρτέλας εισαγωγής περιεχομένου μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, - "Προβολή καρτέλας λίστας αναπαραγωγής μέσα στο μενού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RGUI_SHOW_START_SCREEN, - "Προβολή οθόνης εκκίνησης στο μενού. Τίθεται αυτόματα σε αρνητικό μετά την πρώτη εκκίνηση του προγράμματος." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MATERIALUI_MENU_HEADER_OPACITY, - "Modify the opacity of the header graphic." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MATERIALUI_MENU_FOOTER_OPACITY, - "Modify the opacity of the footer graphic." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DPI_OVERRIDE_ENABLE, - "The menu normally scales itself dynamically. If you want to set a specific scaling size instead, enable this." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DPI_OVERRIDE_VALUE, - "Set the custom scaling size here.\n" - "NOTE: You have to enable 'DPI Override' for this scaling size to take effect." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_ASSETS_DIRECTORY, - "Save all downloaded files to this directory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_INPUT_REMAPPING_DIRECTORY, - "Save all remapped controls to this directory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LIBRETRO_DIR_PATH, - "Directory where the program searches for content/cores." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_LIBRETRO_INFO_PATH, - "Application/core information files are stored here." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_JOYPAD_AUTOCONFIG_DIR, - "If a joypad is plugged in, that joypad will be autoconfigured if a config file corresponding to it is present inside this directory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PLAYLIST_DIRECTORY, - "Save all collections to this directory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CACHE_DIRECTORY, - "If set to a directory, content which is temporarily extracted (e.g. from archives) will be extracted to this directory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CURSOR_DIRECTORY, - "Saved queries are stored to this directory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_DATABASE_DIRECTORY, - "Databases are stored to this directory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ASSETS_DIRECTORY, - "This location is queried by default when menu interfaces try to look for loadable assets, etc." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAVEFILE_DIRECTORY, - "Save all save files to this directory. If not set, will try to save inside the content file's working directory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SAVESTATE_DIRECTORY, - "Save all save states to this directory. If not set, will try to save inside the content file's working directory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SCREENSHOT_DIRECTORY, - "Directory to dump screenshots to." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OVERLAY_DIRECTORY, - "Ορίζει ένα ευρετήριο όπου τα επικαλλύματα αποθηκεύονται για εύκολη πρόσβαση." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_DATABASE_PATH, - "Τα αρχεία απάτης αποθηκεύονται εδώ." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_FILTER_DIR, - "Directory where audio DSP filter files are kept." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_FILTER_DIR, - "Directory where CPU-based video filter files are kept." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SHADER_DIR, - "Defines a directory where GPU-based video shader files are kept for easy access." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RECORDING_OUTPUT_DIRECTORY, - "Recordings will be dumped to this directory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RECORDING_CONFIG_DIRECTORY, - "Recording configurations will be kept here." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_FONT_PATH, - "Select a different font for onscreen notifications." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SHADER_APPLY_CHANGES, - "Changes to the shader configuration will take effect immediately. Use this if you changed the amount of shader passes, filtering, FBO scale, etc." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SHADER_NUM_PASSES, - "Increase or decrease the amount of shader pipeline passes. You can bind a separate shader to each pipeline pass and configure its scale and filtering." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET, - "Load a shader preset. The shader pipeline will be automatically set-up." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_AS, - "Save the current shader settings as a new shader preset." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_CORE, - "Save the current shader settings as the default settings for this application/core." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_PARENT, - "Save the current shader settings as the default settings for all files in the current content directory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_GAME, - "Save the current shader settings as the default settings for the content." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SHADER_PARAMETERS, - "Modifies the current shader directly. Changes will not be saved to the preset file." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_PARAMETERS, - "Modifies the shader preset itself currently used in the menu." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_NUM_PASSES, - "Increase or decrease the amount of cheats." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_APPLY_CHANGES, - "Cheat changes will take effect immediately." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_START_SEARCH, - "Start search for a new cheat. Number of bits can be changed." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_CONTINUE_SEARCH, - "Continue search for a new cheat." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_FILE_LOAD, - "Load a cheat file and replace existing cheats." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_FILE_LOAD_APPEND, - "Load a cheat file and append to existing cheats." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CHEAT_FILE_SAVE_AS, - "Save current cheats as a save file." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SETTINGS, - "Γρήγορα πρόσβαση σε όλες τις σχετικές ρυθμίσεις παιχνιδιού." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_INFORMATION, - "View information pertaining to the application/core." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_ASPECT_RATIO, - "Floating point value for video aspect ratio (width / height), used if the Aspect Ratio is set to 'Config'." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_HEIGHT, - "Προτιμώμενο ύψος οπτικής γωνίας το οποίο χρησιμοποιείται εάν η Αναλογία Οθόνης είναι ορισμένη ως 'Προτιμώμενη'." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_WIDTH, - "Προτιμώμενο πλάτος οπτικής γωνίας το οποίο χρησιμοποιείται εάν η Αναλογία Οθόνης είναι ορισμένη ως 'Προτιμώμενη'." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_X, - "Προτιμώμενη απόκλειση οπτικής γωνίας για τον ορισμό της θέσης του άξωνα X της οπτικής γωνίας. Αυτό αγνοείται εάν έχεται ενεργοποιήσει την 'Ακέραια Κλίμακα'. Τότε θα κεντραριστεί αυτόματα." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y, - "Προτιμώμενη απόκλειση οπτικής γωνίας για τον ορισμό της θέσης του άξωνα Y της οπτικής γωνίας. Αυτό αγνοείται εάν έχεται ενεργοποιήσει την 'Ακέραια Κλίμακα'. Τότε θα κεντραριστεί αυτόματα." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_USE_MITM_SERVER, - "Χρήση Εξυπηρετητή Αναμετάδοσης" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER, - "Forward netplay connections through a man-in-the-middle server. Useful if the host is behind a firewall or has NAT/UPnP problems." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_NETPLAY_MITM_SERVER, - "Τοποθεσία Εξυπηρετητή Αναμετάδοσης" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_NETPLAY_MITM_SERVER, - "Choose a specific relay server to use. Geographically closer locations tend to have lower latency." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER, - "Προσθήκη στον μίκτη" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY, - "Προσθήκη στον μίκτη και αναπαραγωγή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION, - "Προσθήκη στον μίκτη" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY, - "Προσθήκη στον μίκτη και αναπαραγωγή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, - "Φιλτράρισμα με βάση τον τρέχων πυρήνα" - ) -MSG_HASH( - MSG_AUDIO_MIXER_VOLUME, - "Γενική ένταση μίκτη ήχου" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_MIXER_VOLUME, - "Γενική ένταση μίκτη ήχου (σε dB). Το 0 είναι η φυσιολογική ένταση και δεν εφαρμόζεται gain." /*Need a good translation for gain if there's any*/ - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_VOLUME, - "Επίπεδο Έντασης Μίκτη Ήχου (dB)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_MUTE, - "Σίγαση Μίκτη Ήχου" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE, - "Σίγαση/κατάργηση σίγασης μίκτη ήχου." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_SHOW_ONLINE_UPDATER, - "Προβολή Διαδικτυακού Ενημερωτή" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_SHOW_ONLINE_UPDATER, - "Εμφάνιση/απόκρυψη της επιλογής 'Διαδικτυακού Ενημερωτή'." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_VIEWS_SETTINGS, - "Προβολές" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_VIEWS_SETTINGS, - "Προβολή ή απόκρυψη στοιχείων στην οθόνη του μενού." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_SHOW_CORE_UPDATER, - "Προβολή Ενημερωτή Πυρήνων" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_UPDATER, - "Εμφάνιση/απόκρυψη της ικανότητας ενημέρωσης πυρήνων (και πληροφοριακών αρχείων πυρήνων)." - ) -MSG_HASH( - MSG_PREPARING_FOR_CONTENT_SCAN, - "Προετοιμασία για σάρωση περιεχομένου..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CORE_DELETE, - "Διαγραφή πυρήνα" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CORE_DELETE, - "Κατάργηση αυτού του πυρήνα από τον δίσκο." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY, - "Framebuffer Opacity" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY, - "Modify the opacity of the framebuffer." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES, - "Αγαπημένα" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_GOTO_FAVORITES, - "Περιεχόμενο που έχετε προσθέσει στα 'Αγαπημένα' θα εμφανίζεται εδώ." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_GOTO_MUSIC, - "Μουσική" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_GOTO_MUSIC, - "Μουσική που έχει προηγουμένως αναπαραχθεί θα εμφανίζονται εδώ." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_GOTO_IMAGES, - "Εικόνα" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_GOTO_IMAGES, - "Εικόνες που έχουν προηγουμένως προβληθεί θα εμφανίζονται εδώ." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_GOTO_VIDEO, - "Βίντεο" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_GOTO_VIDEO, - "Βίντεο που έχουν προηγουμένως αναπαραχθεί θα εμφανίζονται εδώ." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE, - "Εικονίδια Μενού" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE, - "Ενεργοποίηση/Απενεργοποίηση των εικονιδίων που εμφανίζονται στα αριστερά των καταχωρήσεων του μενού." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_XMB_MAIN_MENU_ENABLE_SETTINGS, - "Ενεργοποίηση Καρτέλας Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS_PASSWORD, - "Ορισμός Κωδικού Για Την Ενεργοποίηση Της Καρτέλας Ρυθμίσεων" - ) -MSG_HASH( - MSG_INPUT_ENABLE_SETTINGS_PASSWORD, - "Εισαγωγή Κωδικού" - ) -MSG_HASH( - MSG_INPUT_ENABLE_SETTINGS_PASSWORD_OK, - "Σωστός κωδικός." - ) -MSG_HASH( - MSG_INPUT_ENABLE_SETTINGS_PASSWORD_NOK, - "Λανθασμένος κωδικός." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_XMB_MAIN_MENU_ENABLE_SETTINGS, - "Ενεργοποιεί την καρτέλα Ρυθμίσεις. Χρειάζεται επανεκκίνηση για να εμφανιστεί η καρτέλα." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS_PASSWORD, - "Supplying a password when hiding the settings tab makes it possible to later restore it from the menu, by going to the Main Menu tab, selecting Enable Settings Tab and entering the password." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME, - "Επιτρέψτε στον χρήστη να μετονομάζει τις καταχωρήσεις στην συλλογή." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME, - "Επίτρεψη μετονομασίας καταχωρήσεων" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RENAME_ENTRY, - "Μετονομασία του τίτλου αυτής της καταχώρησης." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RENAME_ENTRY, - "Μετονομασία" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE, - "Προβολή Φόρτωσης Πυρήνα" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE, - "Εμφάνιση/απόκρυψη της επιλογής 'Φόρτωση Πυρήνα'." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT, - "Προβολή Φόρτωσης Περιεχομένου" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT, - "Εμφάνιση/απόκρυψη της επιλογής 'Φόρτωση Περιεχομένου'." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION, - "Προβολή Πληροφοριών" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION, - "Εμφάνιση/απόκρυψη της επιλογής 'Πληροφορίες'." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS, - "Προβολή Διαμορφώσεων" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS, - "Εμφάνιση/απόκρυψη της επιλογής 'Διαμορφώσεις'." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP, - "Προβολή Βοήθειας" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_SHOW_HELP, - "Εμφάνιση/απόκρυψη της επιλογής 'Βοήθεια'." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH, - "Προβολή Εξόδου RetroArch" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH, - "Εμφάνιση/απόκρυψη της επιλογής 'Έξοδος από RetroArch'." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT, - "Προβολή Επανεκκίνησης" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT, - "Εμφάνιση/απόκρυψη της επιλογής 'Επανεκκίνηση'." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_SHOW_SHUTDOWN, - "Show Shutdown" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_SHOW_SHUTDOWN, - "Show/hide the 'Shutdown' option." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS, - "Γρήγορο Μενού" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS, - "Show or hide elements on the Quick Menu screen." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_TAKE_SCREENSHOT, - "Show Take Screenshot" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_TAKE_SCREENSHOT, - "Show/hide the 'Take Screenshot' option." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SAVE_LOAD_STATE, - "Show Save/Load State" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVE_LOAD_STATE, - "Show/hide the options for saving/loading state." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE, - "Show Undo Save/Load State" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE, - "Show/hide the options for undoing save/load state." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_FAVORITES, - "Show Add to Favorites" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES, - "Show/hide the 'Add to Favorites' option." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_OPTIONS, - "Show Options" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_OPTIONS, - "Show/hide the 'Options' option." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_CONTROLS, - "Show Controls" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_CONTROLS, - "Show/hide the 'Controls' option." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_CHEATS, - "Show Cheats" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_CHEATS, - "Show/hide the 'Cheats' option." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SHADERS, - "Show Shaders" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SHADERS, - "Show/hide the 'Shaders' option." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SAVE_CORE_OVERRIDES, - "Show Save Core Overrides" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVE_CORE_OVERRIDES, - "Show/hide the 'Save Core Overrides' option." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SAVE_GAME_OVERRIDES, - "Show Save Game Overrides" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVE_GAME_OVERRIDES, - "Show/hide the 'Save Game Overrides' option." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_INFORMATION, - "Show Information" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_INFORMATION, - "Show/hide the 'Information' option." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_ENABLE, - "Notification Background Enable" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_RED, - "Notification Background Red Color" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_GREEN, - "Notification Background Green Color" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_BLUE, - "Notification Background Blue Color" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_OPACITY, - "Notification Background Opacity" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_DISABLE_KIOSK_MODE, - "Disable Kiosk Mode" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_DISABLE_KIOSK_MODE, - "Disables kiosk mode. A restart is required for the change to take full effect." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_ENABLE_KIOSK_MODE, - "Ενεργοποίηση Λειτουργίας Κιόσκι" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_ENABLE_KIOSK_MODE, - "Protects the setup by hiding all configuration related settings." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_KIOSK_MODE_PASSWORD, - "Set Password For Disabling Kiosk Mode" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MENU_KIOSK_MODE_PASSWORD, - "Supplying a password when enabling kiosk mode makes it possible to later disable it from the menu, by going to the Main Menu, selecting Disable Kiosk Mode and entering the password." - ) -MSG_HASH( - MSG_INPUT_KIOSK_MODE_PASSWORD, - "Εισαγωγή Κωδικού" - ) -MSG_HASH( - MSG_INPUT_KIOSK_MODE_PASSWORD_OK, - "Σωστός κωδικός." - ) -MSG_HASH( - MSG_INPUT_KIOSK_MODE_PASSWORD_NOK, - "Λανθασμένος κωδικός." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_RED, - "Notification Red Color" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_GREEN, - "Notification Green Color" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_BLUE, - "Notification Blue Color" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW, - "Show frame count on FPS display" - ) -MSG_HASH( - MSG_CONFIG_OVERRIDE_LOADED, - "Configuration override loaded." - ) -MSG_HASH( - MSG_GAME_REMAP_FILE_LOADED, - "Game remap file loaded." - ) -MSG_HASH( - MSG_CORE_REMAP_FILE_LOADED, - "Core remap file loaded." - ) -MSG_HASH( - MSG_RUNAHEAD_CORE_DOES_NOT_SUPPORT_SAVESTATES, - "RunAhead has been disabled because this core does not support save states." - ) -MSG_HASH( - MSG_RUNAHEAD_FAILED_TO_SAVE_STATE, - "Failed to save state. RunAhead has been disabled." - ) -MSG_HASH( - MSG_RUNAHEAD_FAILED_TO_LOAD_STATE, - "Failed to load state. RunAhead has been disabled." - ) -MSG_HASH( - MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE, - "Failed to create second instance. RunAhead will now use only one instance." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Automatically add content to playlist" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, - "Automatically scans loaded content so they appear inside playlists." - ) -MSG_HASH( - MSG_SCANNING_OF_FILE_FINISHED, - "Scanning of file finished" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_OPACITY, - "Διαφάνεια Παραθύρου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, - "Ποιότητα Επαναδειγματολήπτη Ήχου" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_RESAMPLER_QUALITY, - "Ελαττώστε αυτή την τιμή για καλύτερη επίδοση/χαμηλότερη καθυστέρηση αντί ποιότητας ήχου, αυξήστε εάν θέλετε καλύτερη ποιότητα με κόστος στην επίδοση/χαμηλότερη καθυστέρηση." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHADER_WATCH_FOR_CHANGES, - "Watch shader files for changes" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SHADER_WATCH_FOR_CHANGES, - "Auto-apply changes made to shader files on disk." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SHOW_DECORATIONS, - "Εμφάνιση Διακοσμητικών Παραθύρου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_STATISTICS_SHOW, - "Εμφάνιση Στατιστικών" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_STATISTICS_SHOW, - "Εμφάνιση τεχνικών στατιστικών στην οθόνη." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_RGUI_BORDER_FILLER_ENABLE, - "Enable border filler" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_RGUI_BORDER_FILLER_THICKNESS_ENABLE, - "Enable border filler thickness" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MENU_RGUI_BACKGROUND_FILLER_THICKNESS_ENABLE, - "Enable background filler thickness" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION, - "Για οθόνες CRT μόνο. Προσπαθεί να χρησιμοποιήσει την ακριβή ανάλυση πυρήνα/παιχνιδιού και ρυθμού ανανέωσης." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION, - "CRT SwitchRes" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_SUPER, - "Switch among native and ultrawide super resolutions." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_SUPER, - "Σούπερ Ανάλυση CRT" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_REWIND, - "Προβολή Ρυθμίσεων Επιστροφής" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_REWIND, - "Εμφάνιση/απόκρυψη επιλογών Επιστροφής." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_LATENCY, - "Εμφάνιση/απόκρυψη επιλογών Καθυστέρησης." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_LATENCY, - "Προβολή Ρυθμίσεων Καθυστέρησης" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CONTENT_SHOW_OVERLAYS, - "Εμφάνιση/απόκρυψη επιλογών Επικαλλυμάτων." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_OVERLAYS, - "Προβολή Ρυθμίσεων Επικαλλυμάτων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE_MENU, - "Ενεργοποίηση ήχου μενού" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_ENABLE_MENU, - "Ενεργοποίηση ή απενεργοποίηση ήχου μενού." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS, - "Ρυθμίσεις Μίκτη" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS, - "Εμφάνιση και/ή επεξεργασία ρυθμίσεων μίκτη." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_INFO, - "Πληροφορίες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_FILE, - "&File" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_LOAD_CORE, - "&Load Core..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_UNLOAD_CORE, - "&Unload Core" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_EXIT, - "E&xit" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT, - "&Edit" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT_SEARCH, - "&Search" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW, - "&View" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_CLOSED_DOCKS, - "Closed Docks" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_SHADER_PARAMS, - "Shader Parameters" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS, - "&Options..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_DOCK_POSITIONS, - "Remember dock positions:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_GEOMETRY, - "Remember window geometry:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_LAST_TAB, - "Remember last content browser tab:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME, - "Θέμα:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_SYSTEM_DEFAULT, - "" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_DARK, - "Σκούρο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_CUSTOM, - "Custom..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_TITLE, - "Επιλογές" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_TOOLS, - "&Tools" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_HELP, - "&Help" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_ABOUT, - "Σχετικά με το RetroArch" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_DOCUMENTATION, - "Εγχειρίδιο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_LOAD_CUSTOM_CORE, - "Load Custom Core..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_LOAD_CORE, - "Φόρτωση Πυρήνα΄" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_LOADING_CORE, - "Φόρτωση Πυρήνα..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_NAME, - "Όνομα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_CORE_VERSION, - "Έκδοση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_TAB_PLAYLISTS, - "Λίστες Αναπαραγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER, - "File Browser" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER_TOP, - "Top" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER_UP, - "Up" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_DOCK_CONTENT_BROWSER, - "Content Browser" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_BOXART, - "Boxart" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_SCREENSHOT, - "Screenshot" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_TITLE_SCREEN, - "Title Screen" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_ALL_PLAYLISTS, - "All Playlists" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_CORE, - "Core" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_CORE_INFO, - "Core Info" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_CORE_SELECTION_ASK, - "" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_INFORMATION, - "Information" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_WARNING, - "Warning" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_ERROR, - "Error" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_NETWORK_ERROR, - "Network Error" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_RESTART_TO_TAKE_EFFECT, - "Please restart the program for the changes to take effect." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_LOG, - "Log" - ) -#ifdef HAVE_QT -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_SCAN_FINISHED, - "Scan Finished.

    \n" - "In order for content to be correctly scanned, you must:\n" - "
    • have a compatible core already downloaded
    • \n" - "
    • have \"Core Info Files\" updated via Online Updater
    • \n" - "
    • have \"Databases\" updated via Online Updater
    • \n" - "
    • restart RetroArch if any of the above was just done
    \n" - "Finally, the content must match existing databases from here. If it is still not working, consider submitting a bug report." - ) -#endif -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SHOW_WIMP, - "Εμφάνιση Μενού Επιφάνεις Εργασίας" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_SHOW_WIMP, - "Opens the desktop menu if closed." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_DONT_SHOW_AGAIN, - "Don't show this again" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_STOP, - "Στοπ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_ASSOCIATE_CORE, - "Associate Core" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_HIDDEN_PLAYLISTS, - "Hidden Playlists" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_HIDE, - "Hide" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_HIGHLIGHT_COLOR, - "Highlight color:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_CHOOSE, - "&Choose..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_SELECT_COLOR, - "Select Color" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_SELECT_THEME, - "Select Theme" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_CUSTOM_THEME, - "Custom Theme" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_FILE_PATH_IS_BLANK, - "File path is blank." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_FILE_IS_EMPTY, - "File is empty." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_FILE_READ_OPEN_FAILED, - "Could not open file for reading." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_FILE_WRITE_OPEN_FAILED, - "Could not open file for writing." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_FILE_DOES_NOT_EXIST, - "File does not exist." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SUGGEST_LOADED_CORE_FIRST, - "Suggest loaded core first:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_ZOOM, - "Zoom" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_VIEW, - "View" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_VIEW_TYPE_ICONS, - "Icons" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_VIEW_TYPE_LIST, - "List" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS, - "Overrides" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS, - "Options for overriding the global configuration." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY, - "Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED, - "Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL, - "Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP, - "This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE, - "This will stop playback of the audio stream and remove it entirely from memory." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME, - "Adjust the volume of the audio stream." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ADD_TO_MIXER, - "Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY, - "Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY, - "Αναπαραγωγή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED, - "Αναπαραγωγή (Looped)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL, - "Αναπαραγωγή (Sequential)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP, - "Στοπ" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE, - "Κατάργηση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME, - "Ένταση" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE, - "Τρέχων πυρήνας" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR, - "Clear" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ACHIEVEMENT_PAUSE, - "Pause achievements for current session (This action will enable savestates, cheats, rewind, pause, and slow-motion)." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_ACHIEVEMENT_RESUME, - "Resume achievements for current session (This action will disable savestates, cheats, rewind, pause, and slow-motion and reset the current game)." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISCORD_IN_MENU, - "In-Menu" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISCORD_IN_GAME, - "In-Game" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISCORD_IN_GAME_PAUSED, - "In-Game (Paused)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISCORD_STATUS_PLAYING, - "Playing" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISCORD_STATUS_PAUSED, - "Paused" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_DISCORD_ALLOW, - "Ενεργοποίηση Discord Rich Presence" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_DISCORD_ALLOW, - "Ενεργοποίηση ή απενεργοποίηση υποστήριξης Discord Rich Presence.\n" - "ΣΗΜΕΙΩΣΗ: Δεν θα δουλέψει με την έκδοση του περιηγητή, μόνο με την τοπικά εγκατεστημένη." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MIDI_INPUT, - "Είσοδος" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MIDI_INPUT, - "Επιλογή συσκευής εισόδου." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MIDI_OUTPUT, - "Έξοδος" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MIDI_OUTPUT, - "Επιλογή συσκευής εξόδου." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_MIDI_VOLUME, - "Ένταση" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_MIDI_VOLUME, - "Ορισμός έντασης εξόδου (%)." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_POWER_MANAGEMENT_SETTINGS, - "Διαχείριση Ενέργειας" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_POWER_MANAGEMENT_SETTINGS, - "Αλλαγή ρυθμίσεων διαχείρισης ενέργειας." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SUSTAINED_PERFORMANCE_MODE, - "Κατάσταση Συνεχούς Επίδοσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_MPV_SUPPORT, - "Υποστήριξη mpv" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_IDX, - "Index" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_MATCH_IDX, - "View Match #" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_MATCH, - "Match Address: %08X Mask: %02X" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_COPY_MATCH, - "Create Code Match #" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_DELETE_MATCH, - "Delete Match #" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_BROWSE_MEMORY, - "Browse Address: %08X" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_DESC, - "Πληροφορίες" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_STATE, - "Ενεργοποιημένο" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_CODE, - "Κωδικός" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_HANDLER, - "Handler" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_MEMORY_SEARCH_SIZE, - "Memory Search Size" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_TYPE, - "Τύπος" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_VALUE, - "Τιμή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_ADDRESS, - "Memory Address" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_ADDRESS_BIT_POSITION, - "Memory Address Mask" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_TYPE, - "Rumble When Memory" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_VALUE, - "Rumble Value" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_PORT, - "Rumble Port" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_PRIMARY_STRENGTH, - "Rumble Primary Strength" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_PRIMARY_DURATION, - "Rumble Primary Duration (ms)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_SECONDARY_STRENGTH, - "Rumble Secondary Strength" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_SECONDARY_DURATION, - "Rumble Secondary Duration (ms)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_COUNT, - "Number of Iterations" -) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_ADD_TO_VALUE, - "Value Increase Each Iteration" -) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_ADD_TO_ADDRESS, - "Address Increase Each Iteration" -) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_AFTER, - "Add New Cheat After This One" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_BEFORE, - "Add New Cheat Before This One" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_COPY_AFTER, - "Copy This Cheat After" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_COPY_BEFORE, - "Copy This Cheat Before" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_DELETE, - "Delete This Cheat" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_HANDLER_TYPE_EMU, - "Emulator" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_HANDLER_TYPE_RETRO, - "RetroArch" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_TYPE_DISABLED, - "" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_TYPE_SET_TO_VALUE, - "Set To Value" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_TYPE_INCREASE_VALUE, - "Increase By Value" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_TYPE_DECREASE_VALUE, - "Decrease By Value" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_EQ, - "Run next cheat if value = memory" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_NEQ, - "Run next cheat if value != memory" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_LT, - "Run next cheat if value < memory" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_GT, - "Run next cheat if value > memory" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_TYPE_DISABLED, - "" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_TYPE_CHANGES, - "Changes" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_TYPE_DOES_NOT_CHANGE, - "Does Not Change" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_TYPE_INCREASE, - "Increases" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_TYPE_DECREASE, - "Decreases" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_TYPE_EQ_VALUE, - "= Rumble Value" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_TYPE_NEQ_VALUE, - "!= Rumble Value" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_TYPE_LT_VALUE, - "< Rumble Value" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_TYPE_GT_VALUE, - "> Rumble Value" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_TYPE_INCREASE_BY_VALUE, - "Increases by Rumble Value" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_TYPE_DECREASE_BY_VALUE, - "Decreases by Rumble Value" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_1, - "1-bit, max value = 0x01" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_2, - "2-bit, max value = 0x03" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_4, - "4-bit, max value = 0x0F" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_8, - "8-bit, max value = 0xFF" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_16, - "16-bit, max value = 0xFFFF" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_32, - "32-bit, max value = 0xFFFFFFFF" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_0, - "1" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_1, - "2" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_2, - "3" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_3, - "4" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_4, - "5" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_5, - "6" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_6, - "7" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_7, - "8" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_8, - "9" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_9, - "10" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_10, - "11" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_11, - "12" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_12, - "13" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_13, - "14" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_14, - "15" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_15, - "16" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUMBLE_PORT_16, - "All" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_START_OR_CONT, - "Start or Continue Cheat Search" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_START_OR_RESTART, - "Start or Restart Cheat Search" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EXACT, - "Search Memory For Values" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_LT, - "Search Memory For Values" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_GT, - "Search Memory For Values" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EQ, - "Search Memory For Values" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_GTE, - "Search Memory For Values" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_LTE, - "Search Memory For Values" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_NEQ, - "Search Memory For Values" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EQPLUS, - "Search Memory For Values" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EQMINUS, - "Search Memory For Values" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_ADD_MATCHES, - "Add the %u Matches to Your List" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, - "View the List of %u Matches" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_CREATE_OPTION, - "Create Code From This Match" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_DELETE_OPTION, - "Delete This Match" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_TOP, - "Add New Code to Top" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_BOTTOM, - "Add New Code to Bottom" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_DELETE_ALL, - "Delete All Codes" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_RELOAD_CHEATS, - "Reload Game-Specific Cheats" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_SEARCH_EXACT_VAL, - "Equal to %u (%X)" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_SEARCH_LT_VAL, - "Less Than Before" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_SEARCH_GT_VAL, - "Greater Than Before" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_SEARCH_LTE_VAL, - "Less Than or Equal To Before" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_SEARCH_GTE_VAL, - "Greater Than or Equal To Before" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_SEARCH_EQ_VAL, - "Equal to Before" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_SEARCH_NEQ_VAL, - "Not Equal to Before" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_SEARCH_EQPLUS_VAL, - "Equal to Before+%u (%X)" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_SEARCH_EQMINUS_VAL, - "Equal to Before-%u (%X)" - ) -MSG_HASH( - MENU_ENUM_LABEL_CHEAT_SEARCH_SETTINGS, - "Start or Continue Cheat Search" - ) -MSG_HASH( - MSG_CHEAT_INIT_SUCCESS, - "Successfully started cheat search" - ) -MSG_HASH( - MSG_CHEAT_INIT_FAIL, - "Failed to start cheat search" - ) -MSG_HASH( - MSG_CHEAT_SEARCH_NOT_INITIALIZED, - "Searching has not been initialized/started" - ) -MSG_HASH( - MSG_CHEAT_SEARCH_FOUND_MATCHES, - "New match count = %u" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CHEAT_BIG_ENDIAN, - "Big Endian" - ) -MSG_HASH( - MSG_CHEAT_SEARCH_ADDED_MATCHES_SUCCESS, - "Added %u matches" - ) -MSG_HASH( - MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL, - "Failed to add matches" - ) -MSG_HASH( - MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS, - "Created code from match" - ) -MSG_HASH( - MSG_CHEAT_SEARCH_ADD_MATCH_FAIL, - "Failed to create code" - ) -MSG_HASH( - MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS, - "Deleted match" - ) -MSG_HASH( - MSG_CHEAT_SEARCH_ADDED_MATCHES_TOO_MANY, - "Not enough room. The total number of cheats you can have is 100." - ) -MSG_HASH( - MSG_CHEAT_ADD_TOP_SUCCESS, - "New cheat added to top of list." - ) -MSG_HASH( - MSG_CHEAT_ADD_BOTTOM_SUCCESS, - "New cheat added to bottom of list." - ) -MSG_HASH( - MSG_CHEAT_DELETE_ALL_INSTRUCTIONS, - "Press right five times to delete all cheats." - ) -MSG_HASH( - MSG_CHEAT_DELETE_ALL_SUCCESS, - "All cheats deleted." - ) -MSG_HASH( - MSG_CHEAT_ADD_BEFORE_SUCCESS, - "New cheat added before this one." - ) -MSG_HASH( - MSG_CHEAT_ADD_AFTER_SUCCESS, - "New cheat added after this one." - ) -MSG_HASH( - MSG_CHEAT_COPY_BEFORE_SUCCESS, - "Cheat copied before this one." - ) -MSG_HASH( - MSG_CHEAT_COPY_AFTER_SUCCESS, - "Cheat copied after this one." - ) -MSG_HASH( - MSG_CHEAT_DELETE_SUCCESS, - "Cheat deleted." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_PROGRESS, - "Progress:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_ALL_PLAYLISTS_LIST_MAX_COUNT, - "\"All Playlists\" max list entries:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_ALL_PLAYLISTS_GRID_MAX_COUNT, - "\"All Playlists\" max grid entries:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SHOW_HIDDEN_FILES, - "Εμφάνιση κρυφών αρχείων και φακέλων:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_NEW_PLAYLIST, - "Νέα Λίστα Αναπαραγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_ENTER_NEW_PLAYLIST_NAME, - "Please enter the new playlist name:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_DELETE_PLAYLIST, - "Διαγραφή Λίστας Αναπαραγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_RENAME_PLAYLIST, - "Μετονομασία Λίστας Αναπαραγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_CONFIRM_DELETE_PLAYLIST, - "Are you sure you want to delete the playlist \"%1\"?" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_QUESTION, - "Question" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_DELETE_FILE, - "Could not delete file." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_RENAME_FILE, - "Could not rename file." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_GATHERING_LIST_OF_FILES, - "Gathering list of files..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_ADDING_FILES_TO_PLAYLIST, - "Adding files to playlist..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY, - "Playlist Entry" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_NAME, - "Όνομα:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_PATH, - "Path:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_CORE, - "Πυρήνας:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_DATABASE, - "Database:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_EXTENSIONS, - "Extensions:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_EXTENSIONS_PLACEHOLDER, - "(space-separated; includes all by default)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_FILTER_INSIDE_ARCHIVES, - "Filter inside archives" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_FOR_THUMBNAILS, - "(used to find thumbnails)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_CONFIRM_DELETE_PLAYLIST_ITEM, - "Are you sure you want to delete the item \"%1\"?" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_CANNOT_ADD_TO_ALL_PLAYLISTS, - "Please choose a single playlist first." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_DELETE, - "Delete" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_ADD_ENTRY, - "Add Entry..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_ADD_FILES, - "Add File(s)..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_ADD_FOLDER, - "Add Folder..." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_EDIT, - "Edit" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_SELECT_FILES, - "Select Files" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_SELECT_FOLDER, - "Select Folder" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_FIELD_MULTIPLE, - "" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_UPDATE_PLAYLIST_ENTRY, - "Error updating playlist entry." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_PLEASE_FILL_OUT_REQUIRED_FIELDS, - "Please fill out all required fields." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_NIGHTLY, - "Update RetroArch (nightly)" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_FINISHED, - "RetroArch updated successfully. Please restart the application for the changes to take effect." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_FAILED, - "Update failed." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_ABOUT_CONTRIBUTORS, - "Contributors" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_CURRENT_SHADER, - "Current shader" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MOVE_DOWN, - "Move Down" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MOVE_UP, - "Move Up" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_LOAD, - "Load" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_SAVE, - "Save" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_REMOVE, - "Remove" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_APPLY, - "Apply" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_SHADER_ADD_PASS, - "Add Pass" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_SHADER_CLEAR_ALL_PASSES, - "Clear All Passes" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_SHADER_NO_PASSES, - "No shader passes." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_RESET_PASS, - "Reset Pass" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_RESET_ALL_PASSES, - "Reset All Passes" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_RESET_PARAMETER, - "Reset Parameter" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_THUMBNAIL, - "Download thumbnail" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALREADY_IN_PROGRESS, - "A download is already in progress." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_STARTUP_PLAYLIST, - "Start on playlist:" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALL_THUMBNAILS, - "Λήψη Όλων των Σκίτσων" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALL_THUMBNAILS_ENTIRE_SYSTEM, - "Όλο το Σύστημα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALL_THUMBNAILS_THIS_PLAYLIST, - "Αυτή η Λίστα Αναπαραγωγής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_PACK_DOWNLOADED_SUCCESSFULLY, - "Επιτυχής λήψη σκίτσων." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_PLAYLIST_THUMBNAIL_PROGRESS, - "Πέτυχαν: %1 Απέτυχαν: %2" - ) -MSG_HASH( - MSG_DEVICE_CONFIGURED_IN_PORT, - "Διαμορφώθηκε στην θύρα:" - ) -MSG_HASH( - MSG_FAILED_TO_SET_DISK, - "Αποτυχία ορισμού δίσκου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QT_CORE_OPTIONS, - "Επιλογές Πυρήνα" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_ADAPTIVE_VSYNC, - "Προσαρμοστικό Vsync" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_VIDEO_ADAPTIVE_VSYNC, - "Το V-Sync είναι ενεργοποιημένο μέχρι η επίδοση να πέσει κάτω από τον στόχο ρυθμού ανανέωσης. Μπορεί να μειώσει τα κολλήματα όταν η επίδοση πέφτει χαμηλότερα από τον κανονικό χρόνο και μπορεί να είναι πιο αποδοτικό ενεργειακά." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CRT_SWITCHRES_SETTINGS, - "CRT SwitchRes" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CRT_SWITCHRES_SETTINGS, - "Εξαγωγή ντόπιων, χαμηλής ανάλυσης σημάτων για χρήση με οθόνες CRT." - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CRT_SWITCH_X_AXIS_CENTERING, - "Εναλλάξτε μεταξύ αυτών των επιλογών εάν η εικόνα δεν είναι σωστά κεντραρισμένη στην οθόνη." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CRT_SWITCH_X_AXIS_CENTERING, - "Κεντράρισμα Άξωνα Χ" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, - "Χρήση προσαρμοσμένου ρυθμού ανανέωσης προσδιορισμένου στο αρχείο διαμόρφωσης εάν χρειάζεται." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, - "Χρήση Προσαρμοσμένου Ρυθμού Ανανέωσης" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, - "Επιλέξτε την θύρα εξόδου που είναι συνδεδεμένη με την οθόνη CRT." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, - "ID Οθόνης Εξόδου" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_RECORDING, - "Έναρξη Εγγραφής" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_START_RECORDING, - "Ξεκινάει την εγγραφή." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_STOP_RECORDING, - "Τέλος Εγγραφής" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_RECORDING, - "Σταματάει την εγγραφή." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_STREAMING, - "Έναρξη Απευθείας Μετάδοσης" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_START_STREAMING, - "Ξεκινάει την απευθείας μετάδοση." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_QUICK_MENU_STOP_STREAMING, - "Τέλος Απευθείας Μετάδοσης" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_STREAMING, - "Σταματάει την απευθείας μετάδοση." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_RECORDING_TOGGLE, - "Εγγραφή" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_META_STREAMING_TOGGLE, - "Απευθείας Μετάδοση" - ) -MSG_HASH( - MSG_CHEEVOS_HARDCORE_MODE_DISABLED, - "A savestate was loaded, Achievements Hardcore Mode disabled for the current session. Restart to enable hardcore mode." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_RECORD_QUALITY, - "Ποιότητα Εγγραφής" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_VIDEO_STREAM_QUALITY, - "Ποιότητα Απευθείας Μετάδοσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_STREAMING_URL, - "Σύνδεσμος Απευθείας Μετάδοσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_UDP_STREAM_PORT, - "Θύρα UDP Απευθείας Μετάδοσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACCOUNTS_TWITCH, - "Twitch" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_ACCOUNTS_YOUTUBE, - "YouTube" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_TWITCH_STREAM_KEY, - "Κλειδί Απευθείας Μετάδοσης Twitch" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_YOUTUBE_STREAM_KEY, - "Κλειδί Απευθείας Μετάδοσης YouTube" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_STREAMING_MODE, - "Μέσο Απευθείας Μετάδοσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_STREAMING_TITLE, - "Τίτλος Απευθείας Μετάδοσης" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_INPUT_SPLIT_JOYCON, - "Χωριστά Joy-Con" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG, - "Επαναφορά Προεπιλογών" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, - "Επαναφορά της τρέχουσας διαμόρφωσης στις προεπιλεγμένες ρυθμίσεις." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, - "OK" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, - "Χρώμα Θέματος Μενού" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, - "Basic White" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, - "Basic Black" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, - "Select a different color theme." - ) -MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use preferred system color theme") -MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") +MSG_HASH( + MSG_COMPILER, + "Μεταγλωττιστής" + ) +MSG_HASH( + MSG_UNKNOWN_COMPILER, + "Άγνωστος Μεταγλωττιστής" + ) +MSG_HASH( + MSG_NATIVE, + "Ντόπιος" + ) +MSG_HASH( + MSG_DEVICE_DISCONNECTED_FROM_PORT, + "Η συσκευή αποσυνδέθηκε από την θύρα" + ) +MSG_HASH( + MSG_UNKNOWN_NETPLAY_COMMAND_RECEIVED, + "Λήφθηκε άγνωστη εντολή netplay" + ) +MSG_HASH( + MSG_FILE_ALREADY_EXISTS_SAVING_TO_BACKUP_BUFFER, + "Το αρχείο υπάρχει ήδη. Αποθήκευση σε εφεδρική ενδιάμεση μνήμη." + ) +MSG_HASH( + MSG_GOT_CONNECTION_FROM, + "Λήφθηκε σύνδεση από: \"%s\"" + ) +MSG_HASH( + MSG_GOT_CONNECTION_FROM_NAME, + "Λήφθηκε σύνδεση από: \"%s (%s)\"" + ) +MSG_HASH( + MSG_PUBLIC_ADDRESS, + "Δημόσια διεύθυνση" + ) +MSG_HASH( + MSG_NO_ARGUMENTS_SUPPLIED_AND_NO_MENU_BUILTIN, + "Δεν παρασχέθηκε διαφωνία και δεν υπάρχει ενσωματωμένο μενού, εμφάνιση βοήθειας..." + ) +MSG_HASH( + MSG_SETTING_DISK_IN_TRAY, + "Τοποθέτηση δίσκου στην μονάδα δίσκου" + ) +MSG_HASH( + MSG_WAITING_FOR_CLIENT, + "Αναμονή για πελάτη ..." + ) +MSG_HASH( + MSG_NETPLAY_YOU_HAVE_LEFT_THE_GAME, + "Αποσυνδεθήκατε από το παιχνίδι" + ) +MSG_HASH( + MSG_NETPLAY_YOU_HAVE_JOINED_AS_PLAYER_N, + "Έχετε συνδεθεί ως παίκτης %u" + ) +MSG_HASH( + MSG_NETPLAY_YOU_HAVE_JOINED_WITH_INPUT_DEVICES_S, + "Έχετε συνδεθεί με συσκευές εισόδου %.*s" + ) +MSG_HASH( + MSG_NETPLAY_PLAYER_S_LEFT, + "Ο παίκτης %.*s αποσυνδέθηκε από το παιχνίδι" + ) +MSG_HASH( + MSG_NETPLAY_S_HAS_JOINED_AS_PLAYER_N, + "%.*s συνδέθηκε ως παίκτης %u" + ) +MSG_HASH( + MSG_NETPLAY_S_HAS_JOINED_WITH_INPUT_DEVICES_S, + "%.*s συνδέθηκε με συσκευές εισόδου %.*s" + ) +MSG_HASH( + MSG_NETPLAY_NOT_RETROARCH, + "Η προσπάθεια σύνδεσης netplay απέτυχε επειδή ο συμπέκτης δεν χρησιμοποιεί το RetroArch ή χρησιμοποιεί πιο παλιά έκδοση." + ) +MSG_HASH( + MSG_NETPLAY_OUT_OF_DATE, + "Ο συμπαίκτης χρησιμοποιεί πιο παλιά έκδοση RetroArch. Αδύνατη η σύνδεση." + ) +MSG_HASH( + MSG_NETPLAY_DIFFERENT_VERSIONS, + "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ο συμπαίκτης netplay χρησιμοποιεί διαφορετική έκδοση του RetroArch. Εάν προκύψουν προβλήματα χρησιμοποιήστε την ίδια έκδοση." + ) +MSG_HASH( + MSG_NETPLAY_DIFFERENT_CORES, + "Ο συμπαίκτης netplay χρησιμοποιεί διαφορειτκό πυρήνα. Αδύνατη η σύνδεση." + ) +MSG_HASH( + MSG_NETPLAY_DIFFERENT_CORE_VERSIONS, + "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ο συμπαίκτης netplay χρησιμοποιεί διαφορετική έκδοση του πυρήνα. Εάν προκύψουν προβλήματα χρησιμοποιήστε την ίδια έκδοση." + ) +MSG_HASH( + MSG_NETPLAY_ENDIAN_DEPENDENT, + "Αυτός ο πυρήνας δεν υποστηρίζει σύνδεση διαφορετικών πλατφόρμων για netplay ανάμεσα σε αυτά τα συστήματα" + ) +MSG_HASH( + MSG_NETPLAY_PLATFORM_DEPENDENT, + "Αυτός ο πυρήνας δεν υποστηρίζει σύνδεση διαφορετικών πλατφόρμων για netplay" + ) +MSG_HASH( + MSG_NETPLAY_ENTER_PASSWORD, + "Εισάγετε κωδικό διακομιστή netplay:" + ) +MSG_HASH( + MSG_NETPLAY_INCORRECT_PASSWORD, + "Λάθος κωδικός" + ) +MSG_HASH( + MSG_NETPLAY_SERVER_NAMED_HANGUP, + "\"%s\" αποσυνδέθηκε" + ) +MSG_HASH( + MSG_NETPLAY_SERVER_HANGUP, + "Ένας πελάτης netplay έχει αποσυνδεθεί" + ) +MSG_HASH( + MSG_NETPLAY_CLIENT_HANGUP, + "Αποσύνδεση netplay" + ) +MSG_HASH( + MSG_NETPLAY_CANNOT_PLAY_UNPRIVILEGED, + "Δεν έχετε άδεια για να παίξετε" + ) +MSG_HASH( + MSG_NETPLAY_CANNOT_PLAY_NO_SLOTS, + "Δεν υπάρχουν κενές θέσεις παικτών" + ) +MSG_HASH( + MSG_NETPLAY_CANNOT_PLAY_NOT_AVAILABLE, + "Οι συσκευές εισόδου που ζητήθηκαν δεν είναι διαθέσιμες" + ) +MSG_HASH( + MSG_NETPLAY_CANNOT_PLAY, + "Δεν μπορεί να γίνει αλλαγή σε κατάσταση παιχνιδιού" + ) +MSG_HASH( + MSG_NETPLAY_PEER_PAUSED, + "Ο συμπαίκτης netplay \"%s\" έκανε παύση" + ) +MSG_HASH( + MSG_NETPLAY_CHANGED_NICK, + "Το ψευδώνυμο σας άλλαξε σε \"%s\"" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHARED_CONTEXT, + "Give hardware-rendered cores their own private context. Avoids having to assume hardware state changes inbetween frames." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SETTINGS, + "Προσαρμόζει τις εμφανισιακές ρυθμίσεις της οθόνης του μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_HARD_SYNC, + "Σκληρός συγχρονισμός επεξεργαστή και κάρτας γραφικών. Μειώνει την καθυστέρηση με τίμημα την επίδοση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_THREADED, + "Βελτιώνει την επίδοση με τίμημα την καθυστέρηση και περισσότερα κολλήματα στο βίντεο. Χρησιμοποιείστε μόνο εάν δεν μπορείτε να αποκτήσετε πλήρη ταχύτητα με άλλον τρόπο." + ) +MSG_HASH( + MSG_AUDIO_VOLUME, + "Ένταση ήχου" + ) +MSG_HASH( + MSG_AUTODETECT, + "Αυτόματη ανίχνευση" + ) +MSG_HASH( + MSG_AUTOLOADING_SAVESTATE_FROM, + "Αυτόματη φόρτωση κατάστασης αποθήκευσης από" + ) +MSG_HASH( + MSG_CAPABILITIES, + "Ικανότητες" + ) +MSG_HASH( + MSG_CONNECTING_TO_NETPLAY_HOST, + "Σύνδεση με εξυπηρετητή netplay" + ) +MSG_HASH( + MSG_CONNECTING_TO_PORT, + "Σύνδεση στην θύρα" + ) +MSG_HASH( + MSG_CONNECTION_SLOT, + "Θέση σύνδεσης" + ) +MSG_HASH( + MSG_SORRY_UNIMPLEMENTED_CORES_DONT_DEMAND_CONTENT_NETPLAY, + "Συγγνώμη, μη εφαρμοσμένο: πυρήνες που δεν απαιτούν περιεχόμενο δεν μπορούν να συμμετέχουν στο netplay." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_PASSWORD, + "Κωδικός" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_SETTINGS, + "Επιτεύγματα Λογαριασμού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_USERNAME, + "Όνομα Χρήστη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST, + "Λογαριασμοί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST_END, + "Accounts List Endpoint" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS, + "RetroAchievements" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST, + "Επιτεύγματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_PAUSE, + "Παύση Σκληροπυρηνικής Λειτουργίας Επιτευγμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_RESUME, + "Συνέχιση Σκληροπυρηνικής Λειτουργίας Επιτευγμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST_HARDCORE, + "Επιτεύγματα (Σκληροπυρηνικά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST, + "Σάρωση Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONFIGURATIONS_LIST, + "Διαμορφώσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TAB, + "Εισαγωγή περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_TAB, + "Δωμάτια Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ASK_ARCHIVE, + "Ερώτηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ASSETS_DIRECTORY, + "Εργαλεία" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_BLOCK_FRAMES, + "Φραγή Καρέ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_DEVICE, + "Συσκευή Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_DRIVER, + "Οδηγός Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_DSP_PLUGIN, + "Πρόσθετο Ήχου DSP" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE, + "Ενεργοποίηση Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_FILTER_DIR, + "Φίλτρα Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TURBO_DEADZONE_LIST, + "Turbo/Νεκρή Ζώνη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_LATENCY, + "Καθυστέρηση Ήχου (ms)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW, + "Μέγιστη Χρονική Διαστρέβλωση Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_MUTE, + "Σίγαση Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE, + "Συχνότητα Εξόδου Ήχου (Hz)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA, + "Δυναμικός Έλεγχος Βαθμού Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER, + "Οδηγός Επαναδειγματολήπτη Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS, + "Ήχος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_SYNC, + "Συγχρονισμός Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, + "Ένταση Ήχου (dB)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_EXCLUSIVE_MODE, + "Αποκλειστική Λειτουργία WASAPI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_FLOAT_FORMAT, + "Ασταθής Μορφή WASAPI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_SH_BUFFER_LENGTH, + "Μήκος Κοινόχρηστης Ενδιάμεσης Μνήμης WASAPI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUTOSAVE_INTERVAL, + "Διάστημα Αυτόματης Αποθήκευσης SaveRAM" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUTO_OVERRIDES_ENABLE, + "Φόρτωση Αρχείων Παράκαμψης Αυτόματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUTO_REMAPS_ENABLE, + "Φόρτωση Αρχείων Αναδιοργάνωσης Πλήτρκων Αυτόματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUTO_SHADERS_ENABLE, + "Φόρτωση Προεπιλογών Σκιάσεων Αυτόματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK, + "Πίσω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_CONFIRM, + "Επιβεβαίωση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_INFO, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_QUIT, + "Έξοδος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_DOWN, + "Μετακίνηση Προς Τα Κάτω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_UP, + "Μετακίνηση Προς Τα Πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_START, + "Εκκίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_KEYBOARD, + "Ενεργοποίηση/Απενεργοποίηση Πληκτρολογίου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_MENU, + "Ενεργοποίηση/Απενεργοποίηση Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS, + "Βασικός χειρισμός μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_CONFIRM, + "Επιβεβαίωση/ΟΚ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_INFO, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_QUIT, + "Έξοδος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_SCROLL_UP, + "Μετακίνηση Προς Τα Πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_START, + "Προεπιλογές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_KEYBOARD, + "Ενεργοποίηση/Απενεργοποίηση Πληκτρολογίου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_MENU, + "Ενεργοποίηση/Απενεργοποίηση Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BLOCK_SRAM_OVERWRITE, + "Απενεργοποίηση αντικατάστασης SaveRAM κατά την φάση φόρτωσης κατάστασης αποθήκευσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BLUETOOTH_ENABLE, + "Ενεργοποίηση Bluetooth" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BUILDBOT_ASSETS_URL, + "Σύνδεσμος Εργαλείων του Buildbot" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CACHE_DIRECTORY, + "Κρυφή Μνήμη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CAMERA_ALLOW, + "Επίτρεψη Κάμερας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CAMERA_DRIVER, + "Οδηγός Κάμερας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT, + "Απάτη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_CHANGES, + "Εφαρμογή Αλλαγών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_START_SEARCH, + "Έναρξη Αναζήτησης Για Νέους Κωδικούς Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_CONTINUE_SEARCH, + "Συνέχιση Αναζήτησης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DATABASE_PATH, + "Αρχεία Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_FILE, + "Αρχείο Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_FILE_LOAD, + "Φόρτωση Αρχείου Απάτης (Αντικατάσταση)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_FILE_LOAD_APPEND, + "Φόρτωση Αρχείου Απάτης (Προσάρτηση)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_FILE_SAVE_AS, + "Αποθήκευση Αρχείου Απάτης Ως" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_NUM_PASSES, + "Φορές Περάσματος Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_DESCRIPTION, + "Περιγραφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE, + "Σκληροπυρηνική Λειτουργία" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_LEADERBOARDS_ENABLE, + "Κατατάξεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_BADGES_ENABLE, + "Εμβλήματα Επιτευγμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_LOCKED_ACHIEVEMENTS, + "Κλειδωμένα Επιτεύγματα:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_LOCKED_ENTRY, + "Κλειδωμένο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_SETTINGS, + "RetroAchievements" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL, + "Δοκιμή Ανεπίσημων Επιτευγμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ACHIEVEMENTS, + "Ξεκλειδωμένα Επιτεύγματα:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY, + "Ξεκλείδωτο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY_HARDCORE, + "Σκληροπυρηνικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_VERBOSE_ENABLE, + "Βερμπαλιστική Λειτουργία" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_AUTO_SCREENSHOT, + "Αυτόματο Στιγμιότυπο Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT, + "Κλείσιμο Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONFIG, + "Διαμόρφωση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONFIGURATIONS, + "Φόρτωση Διαμορφώσεων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONFIGURATION_SETTINGS, + "Διαμόρφωση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONFIG_SAVE_ON_EXIT, + "Απόθηκευση Διαμόρφωσης στην Έξοδο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST, + "Συλλογές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY, + "Βάσεις Δεδομένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_DIR, + "Περιεχόμενο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_SIZE, + "Μέγεθος Λίστας Ιστορικού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE, + "Επίτρεψη αφαίρεσης καταχωρήσεων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SETTINGS, + "Γρήγορο Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIR, + "Λήψεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIRECTORY, + "Λήψεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS, + "Απάτες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_COUNTERS, + "Μετρητές Πυρήνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_ENABLE, + "Εμφάνιση ονόματος πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFORMATION, + "Πληροφορίες πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_AUTHORS, + "Δημιουργοί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_CATEGORIES, + "Κατηγορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_LABEL, + "Επιγραφή πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_NAME, + "Όνομα πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_FIRMWARE, + "Firmware(s)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_LICENSES, + "Άδεια(ες)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_PERMISSIONS, + "Άδειες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS, + "Υποστηριζόμενες επεκτάσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER, + "Κατασκευαστής συστήματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_NAME, + "Όνομα συστήματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS, + "Χειρισμοί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_LIST, + "Φόρτωση Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_OPTIONS, + "Επιλογές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_SETTINGS, + "Πυρήνας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE, + "Αυτόματη Έναρξη Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE, + "Αυτόματη εξαγωγή ληφθέντος συμπιεσμένου αρχείου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL, + "Σύνδεσμος Buildbot Πυρήνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST, + "Ενημέρωση Πυρήνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_UPDATER_SETTINGS, + "Ενημερωτής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CPU_ARCHITECTURE, + "Αρχιτεκτονική Επεξεργαστή:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CPU_CORES, + "Πυρήνες Επεξεργαστή:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CURSOR_DIRECTORY, + "Δρομείς" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CURSOR_MANAGER, + "Διαχειριστής Δρομέα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CUSTOM_RATIO, + "Προτιμώμενη Αναλογία" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER, + "Διαχειριστής Βάσης Δεδομένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION, + "Επιλογή Βάσης Δεδομένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, + "Κατάργηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FAVORITES, + "Ευρετήριο έναρξης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, + "<Ευρετήριο περιεχομένων>" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, + "<Προκαθορισμένο>" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DIRECTORY_NONE, + "<Κανένα>" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, + "Το ευρετήριο δεν βρέθηκε." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, + "Ευρετήρια" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, + "Disk Cycle Tray Status" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, + "Disk Image Append" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISK_INDEX, + "Disk Index" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISK_OPTIONS, + "Disk Control" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DONT_CARE, + "Don't care" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST, + "Λήψεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE, + "Λήψη Πυρήνα..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE_CONTENT, + "Λήψη Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_ENABLE, + "DPI Override Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_VALUE, + "DPI Override" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS, + "Οδηγοί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN, + "Φόρτωση Dummy στο Κλείσιμο Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHECK_FOR_MISSING_FIRMWARE, + "Έλεγχος για απών Firmware Πριν την Φόρτωση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, + "Δυναμικό Φόντο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY, + "Δυναμικά Φόντα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEEVOS_ENABLE, + "Ενεργοποίηση Επιτευγμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ENTRY_HOVER_COLOR, + "Χρώμα καταχώρησης μενού όταν το ποντίκι βρίσκεται από πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ENTRY_NORMAL_COLOR, + "Χρώμα καταχώρησης μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FALSE, + "Ψευδές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO, + "Μέγιστη Ταχύτητα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FAVORITES_TAB, + "Αγαπημένα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FPS_SHOW, + "Προβολή Ρυθμού Καρέ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_ENABLE, + "Περιορισμός Μέγιστης Ταχύτητας Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VRR_RUNLOOP_ENABLE, + "Συγχρονισμός με τον Ακριβή Ρυθμό Καρέ του Περιεχομένου (G-Sync, FreeSync)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_SETTINGS, + "Περιορισμός Καρέ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FRONTEND_COUNTERS, + "Frontend Counters" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS, + "Φόρτωση Επιλογών Πυρήνα Βάση Συγκεκριμένου Περιεχομένου Αυτόματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_CREATE, + "Δημιουργία αρχείου επιλογών παιχνιδιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_IN_USE, + "Αποθήκευση αρχείου επιλογών παιχνιδιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP, + "Βοήθεια" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING, + "Αντιμετώπιση Προβλημάτων Ήχου/Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD, + "Αλλαγή Επικαλύμματος Εικονικού Χειριστηρίου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_CONTROLS, + "Βασικός Χειρισμός Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_LIST, + "Βοήθεια" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_LOADING_CONTENT, + "Φόρτωση Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT, + "Σάρωση Για Περιεχόμενο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HELP_WHAT_IS_A_CORE, + "Τι Είναι Ο Πυρήνας;" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HISTORY_LIST_ENABLE, + "Ενεργοποίηση Λίστας Ιστορικού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HISTORY_TAB, + "Ιστορικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_HORIZONTAL_MENU, + "Οριζόντιο Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_IMAGES_TAB, + "Εικόνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INFORMATION, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INFORMATION_LIST, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ADC_TYPE, + "Τύπος Αναλογικού Σε Ψηφιακό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ALL_USERS_CONTROL_MENU, + "Όλοι Οι Χρήστες Χειρίζονται Το Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X, + "Αριστερό Αναλογικό X" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, + "Αριστερό Αναλογικό X- (αριστερά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, + "Αριστερό Αναλογικό X+ (δεξιά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y, + "Αριστερό Αναλογικό Y" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, + "Αριστερό Αναλογικό Y- (πάνω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, + "Αριστερό Αναλογικό Y+ (κάτω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X, + "Δεξί Αναλογικό X" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, + "Δεξί Αναλογικό X- (αριστερά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, + "Δεξί Αναλογικό X+ (δεξιά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y, + "Δεξί Αναλογικό Y" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, + "Δεξί Αναλογικό Y- (πάνω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, + "Δεξί Αναλογικό Y+ (κάτω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_TRIGGER, + "Σκανδάλη Όπλου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_RELOAD, + "Γέμισμα Όπλου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_A, + "Όπλο Aux A" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_B, + "Όπλο Aux B" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_C, + "Όπλο Aux C" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_START, + "Όπλο Start" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_SELECT, + "Όπλο Select" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_UP, + "Όπλο D-pad Πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_DOWN, + "Όπλο D-pad Κάτω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_LEFT, + "Όπλο D-pad Αριστερά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_RIGHT, + "Όπλο D-pad Δεξιά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_AUTODETECT_ENABLE, + "Ενεργοποίηση Αυτόματης Διαμόρφωσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_AXIS_THRESHOLD, + "Νεκρή Ζώνη Αναλογικού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_INPUT_SWAP_OK_CANCEL, + "Εναλλαγή Κουμπιών Επιβεβαίωσης & Ακύρωσης Στο Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_BIND_ALL, + "Σύνδεση Όλων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_BIND_DEFAULT_ALL, + "Επαναφορά Συνδέσεων Όλων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_BIND_TIMEOUT, + "Λήξη Χρόνου Σύνδεσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_BIND_HOLD, + "Κράτημα Σύνδεσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND, + "Hide Unbound Core Input Descriptors" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW, + "Display Input Descriptor Labels" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_INDEX, + "Κατάλογος Συσκευών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_TYPE, + "Τύπος Συσκευής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_INDEX, + "Κατάλογος Ποντικιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DRIVER, + "Οδηγός Εισαγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_DUTY_CYCLE, + "Duty Cycle" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_BINDS, + "Σύνδεση Πλήκτρων Εντολών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_ICADE_ENABLE, + "Keyboard Gamepad Mapping Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, + "Κουμπί A (δεξιά)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, + "Κουμπί B (κάτω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, + "D-pad κάτω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, + "Κουμπί L2 (σκανδάλι)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, + "Κουμπί L3 (αντίχειρας)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, + "Κουμπί L (πίσω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, + "D-pad αριστερό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, + "Κουμπί R2 (σκανδάλι)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, + "Κουμπί R3 (αντίχειρας)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, + "Κουμπί R (πίσω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, + "D-pad δεξί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, + "Κουμπί Select" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, + "Κουμπί Start" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, + "D-pad πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, + "Κουμπί X (πάνω)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, + "Κουμπί Y (αριστερό)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_KEY, + "(Κουμπί: %s)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_LEFT, + "Ποντίκι 1" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_RIGHT, + "Ποντίκι 2" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_MIDDLE, + "Ποντίκι 3" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_BUTTON4, + "Ποντίκι 4" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_BUTTON5, + "Ποντίκι 5" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_WHEEL_UP, + "Ροδέλα Πάνω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_WHEEL_DOWN, + "Ροδέλα Κάτω" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_HORIZ_WHEEL_UP, + "Ροδέλα Αριστερά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_HORIZ_WHEEL_DOWN, + "Ροδέλα Δεξιά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE, + "Keyboard Gamepad Mapping Type" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MAX_USERS, + "Μέγιστοι Χρήστες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO, + "Συνδιασμός Πλήκτρων Χειριστηρίου για Άνοιγμα Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, + "Κατάλογος απάτης -" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, + "Κατάλογος απάτης +" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, + "Απάτες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, + "Εξαγωγή δίσκου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, + "Επόμενος δίσκος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, + "Προηγούμενος δίσκος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, + "Ενεργοποίηση πλήκτρων εντολών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY, + "Παύση γρήγορης κίνησης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, + "Γρήγορη κίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, + "Frameadvance" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY, + "Πλήρης οθόνη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, + "Κλείδωμα ποντικιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, + "Εστίαση παιχνιδιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_UI_COMPANION_TOGGLE, + "Μενού επιφάνειας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, + "Φόρτωση κατάστασης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, + "Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_BSV_RECORD_TOGGLE, + "Input replay movie record toggle" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, + "Σίγαση Ήχου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, + "Εναλλαγή κατάστασης παιχνιδιού/θεατή Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, + "Πληκτρολόγιο οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, + "Επόμενο επικάλλυμα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, + "Παύση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, + "Έξοδος από το RetroArch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, + "Επαναφορά παιχνιδιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, + "Επιστροφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_DETAILS, + "Λεπτομέρειες Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_SEARCH, + "Start or Continue Cheat Search" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, + "Αποθήκευση κατάστασης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, + "Λήψη Στιγμιότυπου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, + "Επόμενη σκίαση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, + "Προηγούμενη σκίαση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_HOLD_KEY, + "Παύση αργής κίνησης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_KEY, + "Αργή κίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, + "Θέση κατάστασης αποθήκευσης -" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, + "Θέση κατάστασης αποθήκευσης +" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, + "Ένταση -" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, + "Ένταση +" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_ENABLE, + "Εμφάνιση Επικαλύμματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU, + "Απόκρυψη Επικαλύμματος Στο Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, + "Εμφάνιση Εισαγωγών Στο Επικάλλυμα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, + "Εμφάνιση Θύρας Εισαγωγών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR, + "Τύπος Συμπεριφοράς Συγκέντρωσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_EARLY, + "Νωρίς" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_LATE, + "Αργά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_NORMAL, + "Φυσιολογικά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_PREFER_FRONT_TOUCH, + "Prefer Front Touch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY, + "Input Remapping" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE, + "Remap Binds Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_SAVE_AUTOCONFIG, + "Αποθήκευση Αυτόματης Διαμόρφωσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS, + "Εισαγωγή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE, + "Ενεργοποίηση Μικρού Πληκτρολογίου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_TOUCH_ENABLE, + "Ενεργοποίηση Αφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, + "Ενεργοποίηση Turbo" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_TURBO_PERIOD, + "Turbo Period" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_USER_BINDS, + "Σύνδεση Πλήκτρων Εισόδου Χρήστη %u" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LATENCY_SETTINGS, + "Καθυστέρηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INTERNAL_STORAGE_STATUS, + "Internal storage status" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR, + "Input Autoconfig" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_JOYPAD_DRIVER, + "Οδηγός Joypad" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LAKKA_SERVICES, + "Υπηρεσίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_CHINESE_SIMPLIFIED, + "Chinese (Simplified)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_CHINESE_TRADITIONAL, + "Chinese (Traditional)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_DUTCH, + "Dutch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_ENGLISH, + "English" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_ESPERANTO, + "Esperanto" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_FRENCH, + "French" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_GERMAN, + "German" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_ITALIAN, + "Italian" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_JAPANESE, + "Japanese" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_KOREAN, + "Korean" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_POLISH, + "Polish" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE_BRAZIL, + "Portuguese (Brazil)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE_PORTUGAL, + "Portuguese (Portugal)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_RUSSIAN, + "Russian" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_SPANISH, + "Spanish" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_VIETNAMESE, + "Vietnamese" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_ARABIC, + "Arabic" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LANG_GREEK, + "Ελληνικά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_ANALOG, + "Αριστερό Αναλογικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH, + "Πυρήνας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LIBRETRO_INFO_PATH, + "Πληροφορίες Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LIBRETRO_LOG_LEVEL, + "Core Logging Level" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LINEAR, + "Γραμμικός" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, + "Φόρτωση Αρχείου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, + "Φόρτωση Πρόσφατου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, + "Φόρτωση Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOAD_STATE, + "Φόρτωση Κατάστασης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOCATION_ALLOW, + "Επίτρεψη Τοποθεσίας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOCATION_DRIVER, + "Οδηγός Τοποθεσίας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS, + "Αρχείο Καταγραφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY, + "Logging Verbosity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MAIN_MENU, + "Κεντρικό Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MANAGEMENT, + "Ρυθμίσεις Βάσης Δεδομένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME, + "Χρώμα Θέματος Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE, + "Μπλε" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE_GREY, + "Μπλε Γκρι" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_DARK_BLUE, + "Σκούρο Μπλε" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_GREEN, + "Πράσινο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_NVIDIA_SHIELD, + "Shield" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_RED, + "Κόκκινο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_YELLOW, + "Κίτρινο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_FOOTER_OPACITY, + "Footer Opacity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_HEADER_OPACITY, + "Header Opacity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_DRIVER, + "Οδηγός Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_ENUM_THROTTLE_FRAMERATE, + "Throttle Menu Framerate" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS, + "Ρυθμίσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_LINEAR_FILTER, + "Menu Linear Filter" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_HORIZONTAL_ANIMATION, + "Horizontal Animation" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SETTINGS, + "Εμφάνιση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER, + "Φόντο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER_OPACITY, + "Background opacity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MISSING, + "Λείπει" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MORE, + "..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE, + "Υποστήριξη Ποντικιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MULTIMEDIA_SETTINGS, + "Πολυμέσα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MUSIC_TAB, + "Μουσική" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, + "Φιλτράρισμα άγνωστων επεκτάσεων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NAVIGATION_WRAPAROUND, + "Navigation Wrap-Around" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NEAREST, + "Κοντινότερο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY, + "Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ALLOW_SLAVES, + "Allow Slave-Mode Clients" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_CHECK_FRAMES, + "Netplay Check Frames" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_INPUT_LATENCY_FRAMES_MIN, + "Input Latency Frames" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, + "Input Latency Frames Range" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_DELAY_FRAMES, + "Netplay Delay Frames" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_DISCONNECT, + "Disconnect from netplay host" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE, + "Ενεργοποίηση Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_CLIENT, + "Σύνδεση σε οικοδεσπότη netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_HOST, + "Έναρξη netplay ως οικοδεσπότης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_DISABLE_HOST, + "Λήξη netplay ως οικοδεσπότης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_IP_ADDRESS, + "Διέυθυνση Διακομιστή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_LAN_SCAN_SETTINGS, + "Σάρωση τοπικού δικτύου Scan local network" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_MODE, + "Netplay Client Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_NICKNAME, + "Όνομα Χρήστη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_PASSWORD, + "Κωδικός Διακομιστή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_PUBLIC_ANNOUNCE, + "Δημόσια Ανακοίνωση Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_REQUEST_DEVICE_I, + "Request Device %u" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_REQUIRE_SLAVES, + "Disallow Non-Slave-Mode Clients" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SETTINGS, + "Ρυθμίσεις Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG, + "Analog Input Sharing" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG_MAX, + "Μέγιστο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG_AVERAGE, + "Μέσος Όρος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL, + "Digital Input Sharing" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_OR, + "Κοινοποίηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_XOR, + "Grapple" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_VOTE, + "Ψήφος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_NONE, + "Κανείς" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_NO_PREFERENCE, + "Καμία προτίμηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_START_AS_SPECTATOR, + "Netplay Spectator Mode" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_STATELESS_MODE, + "Netplay Stateless Mode" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATE_PASSWORD, + "Server Spectate-Only Password" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE, + "Netplay Spectator Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_TCP_UDP_PORT, + "Netplay TCP Port" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_NAT_TRAVERSAL, + "Netplay NAT Traversal" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_CMD_ENABLE, + "Network Commands" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_CMD_PORT, + "Network Command Port" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_INFORMATION, + "Πληροφορίες Δικτύου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_ENABLE, + "Χειριστήριο Δικτύου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_PORT, + "Network Remote Base Port" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_SETTINGS, + "Δίκτυο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO, + "Όχι" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NONE, + "Τίποτα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE, + "Μ/Δ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_ACHIEVEMENTS_TO_DISPLAY, + "Δεν υπάρχουν επιτεύγματα προς προβολή." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_CORE, + "Κανένας Πυρήνας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_CORES_AVAILABLE, + "Δεν υπάρχουν διαθέσιμοι πυρήνες." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_CORE_INFORMATION_AVAILABLE, + "Δεν υπάρχουν διαθέσιμες πληροφορίες πυρήνα." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_CORE_OPTIONS_AVAILABLE, + "Δεν υπάρχουν διαθέσιμες επιλογές πυρήνα." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_ENTRIES_TO_DISPLAY, + "Δεν υπάρχουν καταχωρήσεις προς εμφάνιση." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_HISTORY_AVAILABLE, + "Δεν υπάρχει διαθέσιμο ιστορικό." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE, + "Δεν υπάρχουν διαθέσιμες πληροφορίες." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_ITEMS, + "Δεν υπάρχουν αντικείμενα." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_NETPLAY_HOSTS_FOUND, + "Δεν βρέθηκαν εξυπηρετητές netplay." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_NETWORKS_FOUND, + "Δεν βρέθηκαν δίκτυα." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_PERFORMANCE_COUNTERS, + "No performance counters." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_PLAYLISTS, + "Δεν βρέθηκαν λίστες αναπαραγωγής." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE, + "Δεν υπάρχουν διαθέσιμες καταχωρήσεις στην λίστα αναπαραγωγής." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND, + "Δεν βρέθηκαν ρυθμίσεις." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NO_SHADER_PARAMETERS, + "Δεν βρέθηκαν παράμετροι σκίασης." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OFF, + "OFF" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ON, + "ON" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ONLINE, + "Online" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER, + "Διαδικτυακός Ενημερωτής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS, + "Οθόνη Απεικόνισης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ONSCREEN_OVERLAY_SETTINGS, + "Επικάλλυμα Οθόνης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ONSCREEN_OVERLAY_SETTINGS, + "Προσαρμογή Προσόψεων και Χειρισμών Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ONSCREEN_NOTIFICATIONS_SETTINGS, + "Ειδοποιήσεις Οθόνης Απεικόνισης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ONSCREEN_NOTIFICATIONS_SETTINGS, + "Προσαρμόστε τις Ειδοποιήσεις Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OPEN_ARCHIVE, + "Περιήγηση Αρχείου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OPTIONAL, + "Προεραιτικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY, + "Επικάλλυμα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED, + "Αυτόματη Φόρτωση Προτιμώμενου Επικαλύμματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_DIRECTORY, + "Επικάλλυμα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_OPACITY, + "Διαφάνεια Επικαλύμματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_PRESET, + "Προκαθορισμένο Επικάλλυμα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_SCALE, + "Κλίμακα Επικαλύμματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS, + "Επικάλλυμα Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PAL60_ENABLE, + "Χρήση Λειτουργίας PAL60" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PARENT_DIRECTORY, + "Προηγούμενο ευρετήριο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO, + "Παύση όταν ενεργοποιείται το μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE, + "Μην εκτελείτε στο παρασκήνιο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PERFCNT_ENABLE, + "Performance Counters" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLISTS_TAB, + "Λίστες Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY, + "Λίστα Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS, + "Λίστες Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_POINTER_ENABLE, + "Υποστήριξη Αφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PORT, + "Θύρα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PRESENT, + "Present" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PRIVACY_SETTINGS, + "Ιδιωτικότητα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIDI_SETTINGS, + "MIDI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH, + "Έξοδος από RetroArch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ANALOG, + "Analog supported" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_BBFC_RATING, + "BBFC Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_CERO_RATING, + "CERO Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_COOP, + "Co-op supported" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_CRC32, + "CRC32" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DESCRIPTION, + "Description" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DEVELOPER, + "Developer" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_ISSUE, + "Edge Magazine Issue" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_RATING, + "Edge Magazine Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_REVIEW, + "Edge Magazine Review" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ELSPA_RATING, + "ELSPA Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ENHANCEMENT_HW, + "Enhancement Hardware" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ESRB_RATING, + "ESRB Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_FAMITSU_MAGAZINE_RATING, + "Famitsu Magazine Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_FRANCHISE, + "Franchise" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_GENRE, + "Genre" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_MD5, + "MD5" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_NAME, + "Όνομα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ORIGIN, + "Origin" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_PEGI_RATING, + "PEGI Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_PUBLISHER, + "Publisher" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_MONTH, + "Releasedate Month" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_YEAR, + "Releasedate Year" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RUMBLE, + "Rumble supported" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SERIAL, + "Serial" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SHA1, + "SHA1" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_START_CONTENT, + "Έναρξη Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RDB_ENTRY_TGDB_RATING, + "TGDB Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REBOOT, + "Επανεκκίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY, + "Recording Config" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY, + "Recording Output" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORDING_SETTINGS, + "Εγγραφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORD_CONFIG, + "Custom Record Config" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STREAM_CONFIG, + "Custom Stream Config" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORD_DRIVER, + "Οδηγός Εγγραφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIDI_DRIVER, + "Οδηγός MIDI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORD_ENABLE, + "Ενεργοποίηση Εγγραφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORD_PATH, + "Αποθήκευση Εγγραφής Ως..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY, + "Αποθήκευση Εγγραφών στο Ευρετήριο Εξαγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE, + "Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_LOAD, + "Load Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_CORE, + "Save Core Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_CONTENT_DIR, + "Save Content Directory Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_GAME, + "Save Game Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_CORE, + "Delete Core Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_GAME, + "Delete Game Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_CONTENT_DIR, + "Delete Game Content Directory Remap File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REQUIRED, + "Απαραίτητο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, + "Επανεκκίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH, + "Επανεκκίνηση RetroArch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESUME, + "Συνέχιση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESUME_CONTENT, + "Συνέχιση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RETROKEYBOARD, + "RetroKeyboard" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RETROPAD, + "RetroPad" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RETROPAD_WITH_ANALOG, + "RetroPad με Αναλογικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RETRO_ACHIEVEMENTS_SETTINGS, + "Επιτεύγματα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REWIND_ENABLE, + "Ενεργοποίηση Επιστροφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_TOGGLE, + "Εφαρμογή Μετά Την Ενεργοποίηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_LOAD, + "Αυτόματη Εφαρμογή Απατών Κατά την Φόρτωση Παιχνιδιού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY, + "Βαθμός Λεπτομέρειας Επιστροφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE, + "Μέγεθος Ενδιάμεσης Μνήμης Επιστροφής (MB)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP, + "Βήμα Μεγέθους Ενδιάμεσης Μνήμης Επιστροφής (MB)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_REWIND_SETTINGS, + "Επιστροφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SETTINGS, + "Ρυθμίσεις Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DETAILS_SETTINGS, + "Λεπτομέρειες Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_SETTINGS, + "Έναρξη ή Συνέχιση Αναζήτησης Απάτης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY, + "Περιηγητής Αρχείων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, + "Config" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RGUI_SHOW_START_SCREEN, + "Εμφάνιση Αρχικής Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RIGHT_ANALOG, + "Δεξί Αναλογικό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES, + "Προσθήκη στα Αγαπημένα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES_PLAYLIST, + "Προσθήκη στα Αγαπημένα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESET_CORE_ASSOCIATION, + "Επαναφορά Συσχέτισης Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN, + "Εκκίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN_MUSIC, + "Εκκίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAMBA_ENABLE, + "Ενεργοποίηση SAMBA" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVEFILE_DIRECTORY, + "Αρχείο Αποθήκευσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_INDEX, + "Save State Auto Index" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_LOAD, + "Auto Load State" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_SAVE, + "Auto Save State" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATE_DIRECTORY, + "Savestate" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATE_THUMBNAIL_ENABLE, + "Savestate Thumbnails" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG, + "Αποθήκευση Τρέχουσας Διαμόρφωσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, + "Save Core Overrides" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR, + "Save Content Directory Overrides" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, + "Save Game Overrides" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_NEW_CONFIG, + "Αποθήκευση Νέας Διαμόρφωσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVE_STATE, + "ποθήκευση Κατάστασης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS, + "Αποθήκευση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY, + "Σάρωση Ευρετηρίου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCAN_FILE, + "Σάρωση αρχείου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCAN_THIS_DIRECTORY, + "<Σάρωση Αυτού Του Ευρετηρίου>" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCREENSHOT_DIRECTORY, + "Στιγμιότυπο Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION, + "Ανάλυση Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SEARCH, + "Αναζήτηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SECONDS, + "δευτερόλεπτα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SETTINGS, + "Ρυθμίσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SETTINGS_TAB, + "Ρυθμίσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER, + "Σκίαση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_APPLY_CHANGES, + "Εφαμοργή Αλλαγών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_OPTIONS, + "Σκιάσεις" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON, + "Κορδέλλα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED, + "Κορδέλλα (απλοποιημένη)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SIMPLE_SNOW, + "Απλό Χιόνι" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW, + "Χιόνι" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS, + "Εμφάνιση Ρυθμίσεων Για Προχωρημένους" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHOW_HIDDEN_FILES, + "Εμφάνιση Κρυφών Αρχείων και Φακέλων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHUTDOWN, + "Τερματισμός" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO, + "Slow-Motion Ratio" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, + "Run-Ahead to Reduce Latency" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, + "Number of Frames to Run Ahead" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, + "RunAhead Use Second Instance" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, + "RunAhead Hide Warnings" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SORT_SAVEFILES_ENABLE, + "Sort Saves In Folders" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SORT_SAVESTATES_ENABLE, + "Sort Savestates In Folders" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVESTATES_IN_CONTENT_DIR_ENABLE, + "Write Savestates to Content Dir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SAVEFILES_IN_CONTENT_DIR_ENABLE, + "Write Saves to Content Dir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEMFILES_IN_CONTENT_DIR_ENABLE, + "System Files are in Content Dir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCREENSHOTS_IN_CONTENT_DIR_ENABLE, + "Write Screenshots to Content Dir" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SSH_ENABLE, + "Ενεργοποίηση SSH" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_START_CORE, + "Έναρξη Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_START_NET_RETROPAD, + "Έναρξη Απομακρυσμένου RetroPad" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_START_VIDEO_PROCESSOR, + "Έναρξη Επεξεργαστή Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STATE_SLOT, + "Θέση Κατάστασης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STATUS, + "Κατάσταση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STDIN_CMD_ENABLE, + "Εντολές stdin" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SUPPORTED_CORES, + "Προτεινόμενοι πυρήνες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE, + "Αναστολή Προφύλαξης Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_BGM_ENABLE, + "System BGM Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_DIRECTORY, + "Σύστημα/BIOS" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFORMATION, + "Πληροφορίες Συστήματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT, + "Υποστήριξη 7zip" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT, + "Υποστήριξη ALSA" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE, + "Ημερομηνία Κατασκευής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT, + "Υποστήριξη Cg" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT, + "Υποστήριξη Cocoa" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT, + "Υποστήριξη Γραμμής Εντολών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT, + "Υποστήριξη CoreText" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES, + "Χαρακτηριστικά Επεξεργαστή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI, + "DPI Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT, + "Ύψος Οθόνης (mm)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH, + "Πλάτος Οθόνης (mm)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT, + "Υποστήριξη DirectSound" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_WASAPI_SUPPORT, + "Υποστήριξη WASAPI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT, + "Υποστήριξη δυναμικής βιβλιοθήκης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYNAMIC_SUPPORT, + "Δυναμική φόρτωση κατά την εκτέλεση της βιβλιοθήκης libretro" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT, + "Υποστήριξη EGL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT, + "Υποστήριξη OpenGL/Direct3D render-to-texture (multi-pass shaders)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT, + "Υποστήριξη FFmpeg" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT, + "Υποστήριξη FreeType" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_STB_TRUETYPE_SUPPORT, + "Υποστήριξη STB TrueType" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER, + "Αναγνωριστικό λειτουργικού συστήματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME, + "Όνομα λειτουργικού συστήματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS, + "Λειτουργικό Σύστημα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION, + "Έκδοση Git" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT, + "Υποστήριξη GLSL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT, + "Υποστήριξη HLSL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT, + "Υποστήριξη JACK" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT, + "Υποστήριξη KMS/EGL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LAKKA_VERSION, + "Έκδοση Lakka" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT, + "Υποστήριξη LibretroDB" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT, + "Υποστήριξη Libusb" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT, + "Υποστήριξη ανάλυσης libxml2 XML" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT, + "Υποστήριξη Netplay (peer-to-peer)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT, + "Υποστήριξη Γραμμής Εντολών Δικτύου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_REMOTE_SUPPORT, + "Υποστήριξη Χειριστηρίου Δικτύου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT, + "Υποστήριξη OpenAL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT, + "Υποστήριξη OpenGL ES" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT, + "Υποστήριξη OpenGL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT, + "Υποστήριξη OpenSL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT, + "Υποστήριξη OpenVG" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT, + "Υποστήριξη OSS" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT, + "Υποστήριξη Επικαλλυμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE, + "Πηγή ρεύματος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED, + "Φορτισμένο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING, + "Φορτίζει" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING, + "Ξεφορτίζει" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE, + "Καμία πηγή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT, + "Υποστήριξη PulseAudio" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT, + "Υποστήριξη Python (υποστήριξη script στις σκιάσεις)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RBMP_SUPPORT, + "Υποστήριξη BMP (RBMP)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL, + "Επίπεδο RetroRating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RJPEG_SUPPORT, + "Υποστήριξη JPEG (RJPEG)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT, + "Υποστήριξη RoarAudio" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT, + "Υποστήριξη PNG (RPNG)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT, + "Υποστήριξη RSound" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RTGA_SUPPORT, + "Υποστήριξη TGA (RTGA)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT, + "Υποστήριξη SDL2" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT, + "Υποστήριξη Εικόνων SDL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT, + "Υποστήριξη SDL1.2" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SLANG_SUPPORT, + "Υποστήριξη Slang" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT, + "Υποστήριξη Threading" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT, + "Υποστήριξη Udev" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT, + "Υποστήριξη Video4Linux2" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER, + "Οδηγός video context" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VULKAN_SUPPORT, + "Υποστήριξη Vulkan" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_METAL_SUPPORT, + "Υποστήριξη Metal" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT, + "Υποστήριξη Wayland" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT, + "Υποστήριξη X11" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT, + "Υποστήριξη XAudio2" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT, + "Υποστήριξη XVideo" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT, + "Υποστήριξη Zlib" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT, + "Λήψη Στιγμιότυπου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE, + "Threaded tasks" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAILS, + "Σκίτσα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS, + "Σκίτσα Αριστερά" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_VERTICAL_THUMBNAILS, + "Thumbnails Vertical Disposition" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAILS_DIRECTORY, + "Σκίτσα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST, + "Ενημερωτής Σκίτσων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_BOXARTS, + "Εξώφυλλα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS, + "Στιγμιότυπα Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS, + "Οθόνες Τίτλων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_ENABLE, + "Εμφάνιση ημερομηνίας / ώρας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE, + "Στυλ ημερομηνίας / ώρας" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_TIMEDATE_STYLE, + "Αλλάζει το στυλ της τρέχουσας ημερομηνίας ή και ώρας που φαίνεται μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_YMD_HMS, + "ΧΧΧΧ-ΜΜ-ΗΗ ΩΩ:ΛΛ:ΔΔ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_YMD_HM, + "ΧΧΧΧ-ΜΜ-ΗΗ ΩΩ:ΛΛ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_MDYYYY, + "ΜΜ-ΗΗ-ΧΧΧΧ ΩΩ:ΛΛ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_HMS, + "ΩΩ:ΛΛ:ΔΔ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_HM, + "ΩΩ:ΛΛ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_DM_HM, + "ΗΗ/ΜΜ ΩΩ:ΛΛ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_MD_HM, + "ΜΜ/ΗΗ ΩΩ:ΛΛ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TIMEDATE_STYLE_AM_PM, + "ΩΩ:ΛΛ:ΔΔ (ΠΜ/ΜΜ)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TITLE_COLOR, + "Χρώμα τίτλου μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TRUE, + "Αληθές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UI_COMPANION_ENABLE, + "UI Companion Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UI_COMPANION_START_ON_BOOT, + "UI Companion Start On Boot" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UI_COMPANION_TOGGLE, + "Εμφάνιση μενού επιφάνειας εργασίας κατά την εκκίνηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DESKTOP_MENU_ENABLE, + "Ενεργοποίηση μενού επιφάνειας εργασίας (επανεκκίνηση)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UI_MENUBAR_ENABLE, + "Γραμμή Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE, + "Αδυναμία ανάγνωσης συμπιεσμένου αρχείου." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UNDO_LOAD_STATE, + "Αναίρεση Φόρτωσης Κατάστασης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UNDO_SAVE_STATE, + "Αναίρεση Αποθήκευσης Κατάστασης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UNKNOWN, + "Άγνωστο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATER_SETTINGS, + "Ενημερωτής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_ASSETS, + "Ενημέρωση Βασικών Στοιχείων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES, + "Ενημέρωση Προφίλ Joypad" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_CG_SHADERS, + "Ενημέρωση των Σκιάσεων Cg" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_CHEATS, + "Ενημέρωση Απατών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_CORE_INFO_FILES, + "Ενημέρωση Αρχείων Πληροφοριών Πυρήνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_DATABASES, + "Ενημέρωση Βάσεων Δεδομένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_GLSL_SHADERS, + "Ενημέρωση Σκιάσεων GLSL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_LAKKA, + "Ενημέρωση Lakka" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_OVERLAYS, + "Ενημέρωση Επικαλλυμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UPDATE_SLANG_SHADERS, + "Ενημέρωση Σκιάσεων Slang" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USER, + "Χρήστης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_KEYBOARD, + "Kbd" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USER_INTERFACE_SETTINGS, + "Διεπαφή Χρήστη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USER_LANGUAGE, + "Γλώσσα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USER_SETTINGS, + "Χρήστης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER, + "Χρήση Ενσωματωμένου Προβολέα Εικόνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER, + "Χρήση Ενσωματωμένου Αναπαραγωγέα Πολυμέσων Use Builtin Media Player" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_USE_THIS_DIRECTORY, + "<Χρήση αυτού του ευρετηρίου>" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ALLOW_ROTATE, + "Επίτρεψη περιστροφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO, + "Διαμόρφωση Αναλογίας Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_AUTO, + "Αυτόματη Αναλογία Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX, + "Αναλογία Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION, + "Εισαγωγή Μαύρων Καρέ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_CROP_OVERSCAN, + "Περικοπή Υπερσάρωσης (Επαναφόρτωση)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION, + "Disable Desktop Composition" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_DRIVER, + "Οδηγός Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FILTER, + "Φίλτρο Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_DIR, + "Φίλτρο Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FILTER_FLICKER, + "Flicker filter" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FONT_ENABLE, + "Ενεργοποίηση Ειδοποιήσεων Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FONT_PATH, + "Γραμματοσειρά Ειδοποιήσεων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FONT_SIZE, + "Μέγεθος Γραμματοσειράς" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_ASPECT, + "Εξαναγκασμένη αναλογία απεικόνισης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE, + "Εξαναγκασμένη απενεργοποίηση sRGB FBO" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY, + "Καθυστέρηση Καρέ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN, + "Έναρξη σε Κατάσταση Πλήρης Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_GAMMA, + "Gamma Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_GPU_RECORD, + "Χρήση Εγγραφής Κάρτας Γραφικών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_GPU_SCREENSHOT, + "Ενεργοποίηση Στιγμιότυπου Οθόνης Κάρτας Γραφικών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC, + "Σκληρός Συγχρονισμός Κάρτας Γραφικών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES, + "Σκληρός Συγχρονισμός Καρέ Κάρτας Γραφικών" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, + "Μέγιστες εικόνες swapchain" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_X, + "Θέση Ειδοποιήσης X" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_POS_Y, + "Θέση Ειδοποιήσης Y" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX, + "Ένδειξη Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_POST_FILTER_RECORD, + "Use Post Filter Recording" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE, + "Κάθετος Ρυθμός Ανανέωσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO, + "Εκτιμόμενος Ρυθμός Καρέ Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_POLLED, + "Ορισμός Ρυθμού Ανανέωσης Βάση Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION, + "Περιστροφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SCALE, + "Κλίμακα Παραθύρου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, + "Ακέραια Κλίμακα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS, + "Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_DIR, + "Σκίαση Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_NUM_PASSES, + "Shader Passes" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PARAMETERS, + "Shader Parameters" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET, + "Load Shader Preset" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS, + "Save Shader Preset As" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_CORE, + "Save Core Preset" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_PARENT, + "Save Content Directory Preset" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_GAME, + "Save Game Preset" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SHARED_CONTEXT, + "Enable Hardware Shared Context" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SMOOTH, + "Διγραμμικό Φιλτράρισμα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SOFT_FILTER, + "Ενεργοποίηση Απαλού Φίλτρου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_SWAP_INTERVAL, + "Διάστημα Εναλλαγής Κάθετου Συγχρονισμόυ (Vsync)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_TAB, + "Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_THREADED, + "Threaded Video" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VFILTER, + "Deflicker" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_HEIGHT, + "Προτιμώμενο Ύψος Αναλογίας Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH, + "Προτιμώμενο Πλάτος Αναλογίας Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_X, + "Προτιμώμενη Θέση Άξωνα X Αναλογίας Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y, + "Προτιμώμενη Θέση Άξωνα Y Αναλογίας Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH, + "Ορισμός Πλάτους Οθόνης VI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, + "Vertical Sync (Vsync)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN, + "Παράθυρο Πλήρης Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH, + "Πλάτος Παραθύρου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT, + "Ύψος Παραθύρου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_X, + "Πλάτος Πλήρης Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_Y, + "Ύψος Πλήρης Οθόνης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_WIFI_DRIVER, + "Οδηγός Wi-Fi" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_WIFI_SETTINGS, + "Wi-Fi" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ALPHA_FACTOR, + "Menu Alpha Factor" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_RED, + "Γραμματοσειρά Μενού Κόκκινο Χρώμα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_GREEN, + "Γραμματοσειρά Μενού Πράσινο Χρώμα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_BLUE, + "Γραμματοσειρά Μενού Μπλε Χρώμα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_FONT, + "Γραμματοσειρά Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_CUSTOM, + "Custom" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_FLATUI, + "FlatUI" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME, + "Μονόχρωμο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME_INVERTED, + "Μονόχρωμο Ανεστραμμένο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_SYSTEMATIC, + "Systematic" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_NEOACTIVE, + "NeoActive" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_PIXEL, + "Pixel" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_RETROACTIVE, + "RetroActive" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_RETROSYSTEM, + "Retrosystem" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_DOTART, + "Dot-Art" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_AUTOMATIC, + "Automatic" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME, + "Χρώμα Θέματος Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_APPLE_GREEN, + "Πράσινο Μήλο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_DARK, + "Σκούρο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_LIGHT, + "Φωτεινό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MORNING_BLUE, + "Πρωινό Μπλε" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_DARK_PURPLE, + "Σκούρο Μωβ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_ELECTRIC_BLUE, + "Μπλε Ηλεκτρίκ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_GOLDEN, + "Χρυσαφί" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_LEGACY_RED, + "Legacy Κόκκινο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_MIDNIGHT_BLUE, + "Μεσωνύκτιο Μπλε" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_PLAIN, + "Απλό" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_UNDERSEA, + "Κάτω Από Την Θάλασσα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME_VOLCANIC_RED, + "Ηφαιστιακό Κόκκινο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_RIBBON_ENABLE, + "Menu Shader Pipeline" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_SCALE_FACTOR, + "Menu Scale Factor" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_SHADOWS_ENABLE, + "Ενεργοποίηση Σκιών Εικονιδίων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_HISTORY, + "Προβολή Καρτέλας Ιστορικού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD, + "Προβολή Καρτέλας Εισαγωγής Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS, + "Προβολή Καρτέλας Λίστας Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_FAVORITES, + "Προβολή Καρτέλας Αγαπημένων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_IMAGES, + "Προβολή Καρτέλας Εικόνων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_MUSIC, + "Προβολή Καρτέλας Μουσικής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS, + "Προβολή Καρτέλας Ρυθμίσεων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_VIDEO, + "Προβολή Καρτέλας Βίντεο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_NETPLAY, + "Προβολή Καρτέλας Netplay" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_LAYOUT, + "Διάταξη Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_THEME, + "Θέμα Εικόνων Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_YES, + "Ναι" + ) +MSG_HASH( + MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_TWO, + "Shader Preset" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_ENABLE, + "Ενεργοποίηση ή απενεργοποίηση επιτευγμάτων. Για περισσότερες πληροφορίες επισκεφθείτε http://retroachievements.org" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_TEST_UNOFFICIAL, + "Enable or disable unofficial achievements and/or beta features for testing purposes." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_HARDCORE_MODE_ENABLE, + "Enable or disable savestates, cheats, rewind, pause, and slow-motion for all games." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_LEADERBOARDS_ENABLE, + "Enable or disable in-game leaderboards. Has no effect if Hardcore Mode is disabled." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_BADGES_ENABLE, + "Enable or disable badge display in the Achievement List." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_VERBOSE_ENABLE, + "Enable or disable OSD verbosity for achievements." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_AUTO_SCREENSHOT, + "Automatically take a screenshot when an achievement is triggered." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DRIVER_SETTINGS, + "Αλλαγή οδηγών που χρησιμοποιούνται από το σύστημα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RETRO_ACHIEVEMENTS_SETTINGS, + "Αλλαγή ρυθμίσεων επιτευγμάτων." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_SETTINGS, + "Αλλαγή ρυθμίσεων πυρήνα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RECORDING_SETTINGS, + "Αλλαγή ρυθμίσεων εγγραφής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ONSCREEN_DISPLAY_SETTINGS, + "Αλλαγή επικάλλυψης οθόνης και επικάλλυψης πληκτρολογίου και ρυθμίσεις ειδοποιήσεων οθόνης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FRAME_THROTTLE_SETTINGS, + "Αλλαγή ρυθμίσεων επιστροφής, γρήγορης κίνησης και αργής κίνησης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVING_SETTINGS, + "Αλλαγή ρυθμίσεων αποθήκευσης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOGGING_SETTINGS, + "Αλλαγή ρυθμίσεων αρχείου καταγραφής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_USER_INTERFACE_SETTINGS, + "Αλλαγή ρυθμίσεων περιβάλλοντος χρήστη." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_USER_SETTINGS, + "Αλλαγή ρυθμίσεων λογαριασμού, ονόματος χρήστη και γλώσσας." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PRIVACY_SETTINGS, + "Αλλαγή ρυθμίσεων ιδιοτηκότητας." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIDI_SETTINGS, + "Αλλαγή ρυθμίσεων MIDI." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DIRECTORY_SETTINGS, + "Αλλαγή προκαθορισμένων ευρετηρίων όπου βρίσκονται τα αρχεία." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_SETTINGS, + "Αλλαγή ρυθμίσεων λιστών αναπαραγωγής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETWORK_SETTINGS, + "Αλλαγή ρυθμίσεων εξυπηρετητή και δικτύου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ADD_CONTENT_LIST, + "Σάρωση περιεχομένου και προσθήκη στην βάση δεδομένων." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_SETTINGS, + "Αλλαγή ρυθμίσεων εξόδου ήχου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_BLUETOOTH_ENABLE, + "Ενεργοποίηση ή απενεργοποίηση bluetooth." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONFIG_SAVE_ON_EXIT, + "Αποθήκευση αλλαγών στο αρχείο διαμόρφωσης κατά την έξοδο." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONFIGURATION_SETTINGS, + "Αλλαγή προκαθορισμένων ρυθμίσεων των αρχείων διαμόρφωσης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONFIGURATIONS_LIST, + "Διαχειρισμός και δημιουργία αρχείων διαμόρφωσης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CPU_CORES, + "Αριθμός πυρήνων που έχει ο επεξεργαστής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FPS_SHOW, + "Εμφανίζει τον τρέχων ρυθμό καρέ ανά δευτερόλεπτο στην οθόνη." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_HOTKEY_BINDS, + "Διαμόρφωση ρυθμίσεων πλήκτρων εντολών." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO, + "Συνδιασμός κουμπιών χειριστηρίου για την εμφάνιση του μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_SETTINGS, + "Αλλαγή ρυθμίσεων χειριστηρίου, πληκτρολογίου και ποντικιού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_USER_BINDS, + "Διαμόρφωση χειρισμών για αυτόν τον χρήστη." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LATENCY_SETTINGS, + "Αλλαγή ρυθμίσεων συσχετιζόμενες με το βίντεο, τον ήχο και την καθυστέρηση εισαγωγής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOG_VERBOSITY, + "Ενεργοποίηση ή απενεργοποίηση αρχείων καταγραφής στο τερματικό." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY, + "Συμμετοχή ή δημιουργία μίας συνεδρίας netplay." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_LAN_SCAN_SETTINGS, + "Αναζήτηση για και σύνδεση με οικοδεσπότη netplay στο τοπικό δίκτυο." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INFORMATION_LIST_LIST, + "Εμφάνιση πληροφοριών συστήματος." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ONLINE_UPDATER, + "Κατεβάστε πρόσθετα, στοιχεία και περιεχόμενο για το RetroArch." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAMBA_ENABLE, + "Enable or disable network sharing of your folders." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SERVICES_SETTINGS, + "Manage operating system level services." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHOW_HIDDEN_FILES, + "Show hidden files/directories inside the file browser." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SSH_ENABLE, + "Enable or disable remote command line access." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SUSPEND_SCREENSAVER_ENABLE, + "Αποτρέπει την προφύλαξη οθόνης του συστήματος από το να ενεργοποιηθεί." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_WINDOW_SCALE, + "Ορισμός μεγέθους παραθύρου σε σχέση με το μέγεθος της οπτικής γωνίας του πυρήνα. Διαφορετικά, παρακάτω μπορείτε να ορίσετε το πλάτος και το ύψος του παραθύρου σε σταθερό μέγεθος." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_USER_LANGUAGE, + "Ορίζει την γλώσσα του περιβάλλοντος." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_BLACK_FRAME_INSERTION, + "Εισάγει ένα μαύρο καρέ ανάμεσα στα καρέ. Χρήσιμο για χρήστες με οθόνες 120Hz που θέλουν να παίξουν περιεχόμενο στα 60Hz χωρίς 'φαντάσματα' στην εικόνα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FRAME_DELAY, + "Μειώνει την καθυστέρηση με μεγαλύτερο κίνδυνο για κολλήματα στο βίντεο. Προσθέτει μία επιβράδυνση μετά το V-Sync (σε ms)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_HARD_SYNC_FRAMES, + "Ορίζει πόσα καρέ μπορεί ο επεξεργαστής να βρίσκεται μπροστά από την κάρτα γραφικών όταν χρησιμοποιείται τον 'Σκληρό Συγχρονισμό Κάρτα Γραφικών'." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, + "Tells the video driver to explicitly use a specified buffering mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_MONITOR_INDEX, + "Επιλέγει ποιά οθόνη θα χρησιμοποιηθεί." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_AUTO, + "Ο ακριβής εκτιμόμενος ρυθμός ανανέωσης της οθόνης σε Hz." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_POLLED, + "Ο ρυθμός ανανέωσης όπως αναφέρεται από τον οδηγό οθόνης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SETTINGS, + "Αλλαγή ρυθμίσεων εξόδου βίντεο." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_WIFI_SETTINGS, + "Σαρώνει για ασύρματα δίκτυα και δημιουργεί σύνδεση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_HELP_LIST, + "Μάθετε περισσότερα για το πως λειτουργεί το πρόγραμμα." + ) +MSG_HASH( + MSG_ADDED_TO_FAVORITES, + "Προστέθηκε στα αγαπημένα" + ) +MSG_HASH( + MSG_RESET_CORE_ASSOCIATION, + "Ο σύνδεση με πυρήνα της λίστας αναπαραγωγής έχει επαναφερθεί." + ) +MSG_HASH( + MSG_APPENDED_DISK, + "Appended disk" + ) +MSG_HASH( + MSG_APPLICATION_DIR, + "Application Dir" + ) +MSG_HASH( + MSG_APPLYING_CHEAT, + "Applying cheat changes." + ) +MSG_HASH( + MSG_APPLYING_SHADER, + "Applying shader" + ) +MSG_HASH( + MSG_AUDIO_MUTED, + "Ο ήχος απενεργοποιήθηκε." + ) +MSG_HASH( + MSG_AUDIO_UNMUTED, + "Ο ήχος ενεργοποιήθηκε." + ) +MSG_HASH( + MSG_AUTOCONFIG_FILE_ERROR_SAVING, + "Error saving autoconf file." + ) +MSG_HASH( + MSG_AUTOCONFIG_FILE_SAVED_SUCCESSFULLY, + "Autoconfig file saved successfully." + ) +MSG_HASH( + MSG_AUTOSAVE_FAILED, + "Could not initialize autosave." + ) +MSG_HASH( + MSG_AUTO_SAVE_STATE_TO, + "Auto save state to" + ) +MSG_HASH( + MSG_BLOCKING_SRAM_OVERWRITE, + "Blocking SRAM Overwrite" + ) +MSG_HASH( + MSG_BRINGING_UP_COMMAND_INTERFACE_ON_PORT, + "Bringing up command interface on port" + ) +MSG_HASH( + MSG_BYTES, + "bytes" + ) +MSG_HASH( + MSG_CANNOT_INFER_NEW_CONFIG_PATH, + "Cannot infer new config path. Use current time." + ) +MSG_HASH( + MSG_CHEEVOS_HARDCORE_MODE_ENABLE, + "Achievements Hardcore Mode Enabled, savestate & rewind were disabled." + ) +MSG_HASH( + MSG_COMPARING_WITH_KNOWN_MAGIC_NUMBERS, + "Comparing with known magic numbers..." + ) +MSG_HASH( + MSG_COMPILED_AGAINST_API, + "Compiled against API" + ) +MSG_HASH( + MSG_CONFIG_DIRECTORY_NOT_SET, + "Config directory not set. Cannot save new config." + ) +MSG_HASH( + MSG_CONNECTED_TO, + "Συνδέθηκε με" + ) +MSG_HASH( + MSG_CONTENT_CRC32S_DIFFER, + "Content CRC32s differ. Cannot use different games." + ) +MSG_HASH( + MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT, + "Content loading skipped. Implementation will load it on its own." + ) +MSG_HASH( + MSG_CORE_DOES_NOT_SUPPORT_SAVESTATES, + "Core does not support save states." + ) +MSG_HASH( + MSG_CORE_OPTIONS_FILE_CREATED_SUCCESSFULLY, + "Core options file created successfully." + ) +MSG_HASH( + MSG_COULD_NOT_FIND_ANY_NEXT_DRIVER, + "Could not find any next driver" + ) +MSG_HASH( + MSG_COULD_NOT_FIND_COMPATIBLE_SYSTEM, + "Could not find compatible system." + ) +MSG_HASH( + MSG_COULD_NOT_FIND_VALID_DATA_TRACK, + "Could not find valid data track" + ) +MSG_HASH( + MSG_COULD_NOT_OPEN_DATA_TRACK, + "could not open data track" + ) +MSG_HASH( + MSG_COULD_NOT_READ_CONTENT_FILE, + "Could not read content file" + ) +MSG_HASH( + MSG_COULD_NOT_READ_MOVIE_HEADER, + "Could not read movie header." + ) +MSG_HASH( + MSG_COULD_NOT_READ_STATE_FROM_MOVIE, + "Could not read state from movie." + ) +MSG_HASH( + MSG_CRC32_CHECKSUM_MISMATCH, + "CRC32 checksum mismatch between content file and saved content checksum in replay file header. Replay highly likely to desync on playback." + ) +MSG_HASH( + MSG_CUSTOM_TIMING_GIVEN, + "Custom timing given" + ) +MSG_HASH( + MSG_DECOMPRESSION_ALREADY_IN_PROGRESS, + "Decompression already in progress." + ) +MSG_HASH( + MSG_DECOMPRESSION_FAILED, + "Decompression failed." + ) +MSG_HASH( + MSG_DETECTED_VIEWPORT_OF, + "Detected viewport of" + ) +MSG_HASH( + MSG_DID_NOT_FIND_A_VALID_CONTENT_PATCH, + "Did not find a valid content patch." + ) +MSG_HASH( + MSG_DISCONNECT_DEVICE_FROM_A_VALID_PORT, + "Disconnect device from a valid port." + ) +MSG_HASH( + MSG_DISK_CLOSED, + "Closed" + ) +MSG_HASH( + MSG_DISK_EJECTED, + "Ejected" + ) +MSG_HASH( + MSG_DOWNLOADING, + "Γίνεται λήψη" + ) +MSG_HASH( + MSG_INDEX_FILE, + "ευρετηρίου" + ) +MSG_HASH( + MSG_DOWNLOAD_FAILED, + "Η λήψη απέτυχε" + ) +MSG_HASH( + MSG_ERROR, + "Πρόβλημα" + ) +MSG_HASH( + MSG_ERROR_LIBRETRO_CORE_REQUIRES_CONTENT, + "Libretro core requires content, but nothing was provided." + ) +MSG_HASH( + MSG_ERROR_LIBRETRO_CORE_REQUIRES_SPECIAL_CONTENT, + "Libretro core requires special content, but none were provided." + ) +MSG_HASH( + MSG_ERROR_PARSING_ARGUMENTS, + "Error parsing arguments." + ) +MSG_HASH( + MSG_ERROR_SAVING_CORE_OPTIONS_FILE, + "Error saving core options file." + ) +MSG_HASH( + MSG_ERROR_SAVING_REMAP_FILE, + "Error saving remap file." + ) +MSG_HASH( + MSG_ERROR_REMOVING_REMAP_FILE, + "Error removing remap file." + ) +MSG_HASH( + MSG_ERROR_SAVING_SHADER_PRESET, + "Error saving shader preset." + ) +MSG_HASH( + MSG_EXTERNAL_APPLICATION_DIR, + "External Application Dir" + ) +MSG_HASH( + MSG_EXTRACTING, + "Γίνεται εξαγωγή" + ) +MSG_HASH( + MSG_EXTRACTING_FILE, + "Γίνεται εξαγωγή αρχείου" + ) +MSG_HASH( + MSG_FAILED_SAVING_CONFIG_TO, + "Failed saving config to" + ) +MSG_HASH( + MSG_FAILED_TO, + "Failed to" + ) +MSG_HASH( + MSG_FAILED_TO_ACCEPT_INCOMING_SPECTATOR, + "Failed to accept incoming spectator." + ) +MSG_HASH( + MSG_FAILED_TO_ALLOCATE_MEMORY_FOR_PATCHED_CONTENT, + "Failed to allocate memory for patched content..." + ) +MSG_HASH( + MSG_FAILED_TO_APPLY_SHADER, + "Failed to apply shader." + ) +MSG_HASH( + MSG_FAILED_TO_BIND_SOCKET, + "Failed to bind socket." + ) +MSG_HASH( + MSG_FAILED_TO_CREATE_THE_DIRECTORY, + "Failed to create the directory." + ) +MSG_HASH( + MSG_FAILED_TO_EXTRACT_CONTENT_FROM_COMPRESSED_FILE, + "Failed to extract content from compressed file" + ) +MSG_HASH( + MSG_FAILED_TO_GET_NICKNAME_FROM_CLIENT, + "Failed to get nickname from client." + ) +MSG_HASH( + MSG_FAILED_TO_LOAD, + "Failed to load" + ) +MSG_HASH( + MSG_FAILED_TO_LOAD_CONTENT, + "Failed to load content" + ) +MSG_HASH( + MSG_FAILED_TO_LOAD_MOVIE_FILE, + "Failed to load movie file" + ) +MSG_HASH( + MSG_FAILED_TO_LOAD_OVERLAY, + "Αποτυχία φόρτωσης επικαλλύματος." + ) +MSG_HASH( + MSG_FAILED_TO_LOAD_STATE, + "Failed to load state from" + ) +MSG_HASH( + MSG_FAILED_TO_OPEN_LIBRETRO_CORE, + "Failed to open libretro core" + ) +MSG_HASH( + MSG_FAILED_TO_PATCH, + "Failed to patch" + ) +MSG_HASH( + MSG_FAILED_TO_RECEIVE_HEADER_FROM_CLIENT, + "Failed to receive header from client." + ) +MSG_HASH( + MSG_FAILED_TO_RECEIVE_NICKNAME, + "Failed to receive nickname." + ) +MSG_HASH( + MSG_FAILED_TO_RECEIVE_NICKNAME_FROM_HOST, + "Failed to receive nickname from host." + ) +MSG_HASH( + MSG_FAILED_TO_RECEIVE_NICKNAME_SIZE_FROM_HOST, + "Failed to receive nickname size from host." + ) +MSG_HASH( + MSG_FAILED_TO_RECEIVE_SRAM_DATA_FROM_HOST, + "Failed to receive SRAM data from host." + ) +MSG_HASH( + MSG_FAILED_TO_REMOVE_DISK_FROM_TRAY, + "Failed to remove disk from tray." + ) +MSG_HASH( + MSG_FAILED_TO_REMOVE_TEMPORARY_FILE, + "Failed to remove temporary file" + ) +MSG_HASH( + MSG_FAILED_TO_SAVE_SRAM, + "Failed to save SRAM" + ) +MSG_HASH( + MSG_FAILED_TO_SAVE_STATE_TO, + "Failed to save state to" + ) +MSG_HASH( + MSG_FAILED_TO_SEND_NICKNAME, + "Failed to send nickname." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_NICKNAME_SIZE, + "Failed to send nickname size." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_NICKNAME_TO_CLIENT, + "Failed to send nickname to client." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_NICKNAME_TO_HOST, + "Failed to send nickname to host." + ) +MSG_HASH( + MSG_FAILED_TO_SEND_SRAM_DATA_TO_CLIENT, + "Failed to send SRAM data to client." + ) +MSG_HASH( + MSG_FAILED_TO_START_AUDIO_DRIVER, + "Failed to start audio driver. Will continue without audio." + ) +MSG_HASH( + MSG_FAILED_TO_START_MOVIE_RECORD, + "Failed to start movie record." + ) +MSG_HASH( + MSG_FAILED_TO_START_RECORDING, + "Failed to start recording." + ) +MSG_HASH( + MSG_FAILED_TO_TAKE_SCREENSHOT, + "Failed to take screenshot." + ) +MSG_HASH( + MSG_FAILED_TO_UNDO_LOAD_STATE, + "Failed to undo load state." + ) +MSG_HASH( + MSG_FAILED_TO_UNDO_SAVE_STATE, + "Failed to undo save state." + ) +MSG_HASH( + MSG_FAILED_TO_UNMUTE_AUDIO, + "Failed to unmute audio." + ) +MSG_HASH( + MSG_FATAL_ERROR_RECEIVED_IN, + "Fatal error received in" + ) +MSG_HASH( + MSG_FILE_NOT_FOUND, + "Το αρχείο δεν βρέθηκε" + ) +MSG_HASH( + MSG_FOUND_AUTO_SAVESTATE_IN, + "Found auto savestate in" + ) +MSG_HASH( + MSG_FOUND_DISK_LABEL, + "Found disk label" + ) +MSG_HASH( + MSG_FOUND_FIRST_DATA_TRACK_ON_FILE, + "Found first data track on file" + ) +MSG_HASH( + MSG_FOUND_LAST_STATE_SLOT, + "Found last state slot" + ) +MSG_HASH( + MSG_FOUND_SHADER, + "Found shader" + ) +MSG_HASH( + MSG_FRAMES, + "Καρέ" + ) +MSG_HASH( + MSG_GAME_SPECIFIC_CORE_OPTIONS_FOUND_AT, + "Per-Game Options: game-specific core options found at" + ) +MSG_HASH( + MSG_GOT_INVALID_DISK_INDEX, + "Got invalid disk index." + ) +MSG_HASH( + MSG_GRAB_MOUSE_STATE, + "Grab mouse state" + ) +MSG_HASH( + MSG_GAME_FOCUS_ON, + "Game focus on" + ) +MSG_HASH( + MSG_GAME_FOCUS_OFF, + "Game focus off" + ) +MSG_HASH( + MSG_HW_RENDERED_MUST_USE_POSTSHADED_RECORDING, + "Libretro core is hardware rendered. Must use post-shaded recording as well." + ) +MSG_HASH( + MSG_INFLATED_CHECKSUM_DID_NOT_MATCH_CRC32, + "Inflated checksum did not match CRC32." + ) +MSG_HASH( + MSG_INPUT_CHEAT, + "Εισαγωγή Απάτης" + ) +MSG_HASH( + MSG_INPUT_CHEAT_FILENAME, + "Input Cheat Filename" + ) +MSG_HASH( + MSG_INPUT_PRESET_FILENAME, + "Input Preset Filename" + ) +MSG_HASH( + MSG_INPUT_RENAME_ENTRY, + "Rename Title" + ) +MSG_HASH( + MSG_INTERFACE, + "Αντάπτορας Δικτύου" + ) +MSG_HASH( + MSG_INTERNAL_STORAGE, + "Εσωτερική Μνήμη Αποθήκευσης" + ) +MSG_HASH( + MSG_REMOVABLE_STORAGE, + "Αφαιρούμενο Μέσο Αποθήκευσης" + ) +MSG_HASH( + MSG_INVALID_NICKNAME_SIZE, + "Μη έγκυρο μέγεθος ψευδώνυμου." + ) +MSG_HASH( + MSG_IN_BYTES, + "σε bytes" + ) +MSG_HASH( + MSG_IN_GIGABYTES, + "σε gigabytes" + ) +MSG_HASH( + MSG_IN_MEGABYTES, + "σε megabytes" + ) +MSG_HASH( + MSG_LIBRETRO_ABI_BREAK, + "is compiled against a different version of libretro than this libretro implementation." + ) +MSG_HASH( + MSG_LIBRETRO_FRONTEND, + "Frontend for libretro" + ) +MSG_HASH( + MSG_LOADED_STATE_FROM_SLOT, + "Loaded state from slot #%d." + ) +MSG_HASH( + MSG_LOADED_STATE_FROM_SLOT_AUTO, + "Loaded state from slot #-1 (auto)." + ) +MSG_HASH( + MSG_LOADING, + "Γίνεται φόρτωση" + ) +MSG_HASH( + MSG_FIRMWARE, + "One or more firmware files are missing" + ) +MSG_HASH( + MSG_LOADING_CONTENT_FILE, + "Loading content file" + ) +MSG_HASH( + MSG_LOADING_HISTORY_FILE, + "Loading history file" + ) +MSG_HASH( + MSG_LOADING_STATE, + "Loading state" + ) +MSG_HASH( + MSG_MEMORY, + "Μνήμη" + ) +MSG_HASH( + MSG_MOVIE_FILE_IS_NOT_A_VALID_BSV1_FILE, + "Input replay movie file is not a valid BSV1 file." + ) +MSG_HASH( + MSG_MOVIE_FORMAT_DIFFERENT_SERIALIZER_VERSION, + "Input replay movie format seems to have a different serializer version. Will most likely fail." + ) +MSG_HASH( + MSG_MOVIE_PLAYBACK_ENDED, + "Input replay movie playback ended." + ) +MSG_HASH( + MSG_MOVIE_RECORD_STOPPED, + "Stopping movie record." + ) +MSG_HASH( + MSG_NETPLAY_FAILED, + "Failed to initialize netplay." + ) +MSG_HASH( + MSG_NO_CONTENT_STARTING_DUMMY_CORE, + "No content, starting dummy core." + ) +MSG_HASH( + MSG_NO_SAVE_STATE_HAS_BEEN_OVERWRITTEN_YET, + "No save state has been overwritten yet." + ) +MSG_HASH( + MSG_NO_STATE_HAS_BEEN_LOADED_YET, + "No state has been loaded yet." + ) +MSG_HASH( + MSG_OVERRIDES_ERROR_SAVING, + "Error saving overrides." + ) +MSG_HASH( + MSG_OVERRIDES_SAVED_SUCCESSFULLY, + "Overrides saved successfully." + ) +MSG_HASH( + MSG_PAUSED, + "Παύση." + ) +MSG_HASH( + MSG_PROGRAM, + "RetroArch" + ) +MSG_HASH( + MSG_READING_FIRST_DATA_TRACK, + "Reading first data track..." + ) +MSG_HASH( + MSG_RECEIVED, + "ελήφθη" + ) +MSG_HASH( + MSG_RECORDING_TERMINATED_DUE_TO_RESIZE, + "Recording terminated due to resize." + ) +MSG_HASH( + MSG_RECORDING_TO, + "Εγγραφή σε" + ) +MSG_HASH( + MSG_REDIRECTING_CHEATFILE_TO, + "Redirecting cheat file to" + ) +MSG_HASH( + MSG_REDIRECTING_SAVEFILE_TO, + "Redirecting save file to" + ) +MSG_HASH( + MSG_REDIRECTING_SAVESTATE_TO, + "Redirecting savestate to" + ) +MSG_HASH( + MSG_REMAP_FILE_SAVED_SUCCESSFULLY, + "Remap file saved successfully." + ) +MSG_HASH( + MSG_REMAP_FILE_REMOVED_SUCCESSFULLY, + "Remap file removed successfully." + ) +MSG_HASH( + MSG_REMOVED_DISK_FROM_TRAY, + "Removed disk from tray." + ) +MSG_HASH( + MSG_REMOVING_TEMPORARY_CONTENT_FILE, + "Removing temporary content file" + ) +MSG_HASH( + MSG_RESET, + "Reset" + ) +MSG_HASH( + MSG_RESTARTING_RECORDING_DUE_TO_DRIVER_REINIT, + "Restarting recording due to driver reinit." + ) +MSG_HASH( + MSG_RESTORED_OLD_SAVE_STATE, + "Restored old save state." + ) +MSG_HASH( + MSG_RESTORING_DEFAULT_SHADER_PRESET_TO, + "Shaders: restoring default shader preset to" + ) +MSG_HASH( + MSG_REVERTING_SAVEFILE_DIRECTORY_TO, + "Reverting savefile directory to" + ) +MSG_HASH( + MSG_REVERTING_SAVESTATE_DIRECTORY_TO, + "Reverting savestate directory to" + ) +MSG_HASH( + MSG_REWINDING, + "Rewinding." + ) +MSG_HASH( + MSG_REWIND_INIT, + "Initializing rewind buffer with size" + ) +MSG_HASH( + MSG_REWIND_INIT_FAILED, + "Failed to initialize rewind buffer. Rewinding will be disabled." + ) +MSG_HASH( + MSG_REWIND_INIT_FAILED_THREADED_AUDIO, + "Implementation uses threaded audio. Cannot use rewind." + ) +MSG_HASH( + MSG_REWIND_REACHED_END, + "Reached end of rewind buffer." + ) +MSG_HASH( + MSG_SAVED_NEW_CONFIG_TO, + "Saved new config to" + ) +MSG_HASH( + MSG_SAVED_STATE_TO_SLOT, + "Saved state to slot #%d." + ) +MSG_HASH( + MSG_SAVED_STATE_TO_SLOT_AUTO, + "Saved state to slot #-1 (auto)." + ) +MSG_HASH( + MSG_SAVED_SUCCESSFULLY_TO, + "Saved successfully to" + ) +MSG_HASH( + MSG_SAVING_RAM_TYPE, + "Saving RAM type" + ) +MSG_HASH( + MSG_SAVING_STATE, + "Saving state" + ) +MSG_HASH( + MSG_SCANNING, + "Σάρωση" + ) +MSG_HASH( + MSG_SCANNING_OF_DIRECTORY_FINISHED, + "Η σάρωση του ευρετηρίου ολοκληρώθηκε" + ) +MSG_HASH( + MSG_SENDING_COMMAND, + "Αποστολή εντολής" + ) +MSG_HASH( + MSG_SEVERAL_PATCHES_ARE_EXPLICITLY_DEFINED, + "Several patches are explicitly defined, ignoring all..." + ) +MSG_HASH( + MSG_SHADER, + "Σκίαση" + ) +MSG_HASH( + MSG_SHADER_PRESET_SAVED_SUCCESSFULLY, + "Shader preset saved successfully." + ) +MSG_HASH( + MSG_SKIPPING_SRAM_LOAD, + "Skipping SRAM load." + ) +MSG_HASH( + MSG_SLOW_MOTION, + "Αργή κίνηση." + ) +MSG_HASH( + MSG_FAST_FORWARD, + "Γρήγορη κίνηση." + ) +MSG_HASH( + MSG_SLOW_MOTION_REWIND, + "Slow motion rewind." + ) +MSG_HASH( + MSG_SRAM_WILL_NOT_BE_SAVED, + "SRAM will not be saved." + ) +MSG_HASH( + MSG_STARTING_MOVIE_PLAYBACK, + "Starting movie playback." + ) +MSG_HASH( + MSG_STARTING_MOVIE_RECORD_TO, + "Starting movie record to" + ) +MSG_HASH( + MSG_STATE_SIZE, + "State size" + ) +MSG_HASH( + MSG_STATE_SLOT, + "State slot" + ) +MSG_HASH( + MSG_TAKING_SCREENSHOT, + "Taking screenshot." + ) +MSG_HASH( + MSG_TO, + "to" + ) +MSG_HASH( + MSG_UNDID_LOAD_STATE, + "Undid load state." + ) +MSG_HASH( + MSG_UNDOING_SAVE_STATE, + "Undoing save state" + ) +MSG_HASH( + MSG_UNKNOWN, + "Άγνωστο" + ) +MSG_HASH( + MSG_UNPAUSED, + "Unpaused." + ) +MSG_HASH( + MSG_UNRECOGNIZED_COMMAND, + "Unrecognized command" + ) +MSG_HASH( + MSG_USING_CORE_NAME_FOR_NEW_CONFIG, + "Using core name for new config." + ) +MSG_HASH( + MSG_USING_LIBRETRO_DUMMY_CORE_RECORDING_SKIPPED, + "Using libretro dummy core. Skipping recording." + ) +MSG_HASH( + MSG_VALUE_CONNECT_DEVICE_FROM_A_VALID_PORT, + "Connect device from a valid port." + ) +MSG_HASH( + MSG_VALUE_DISCONNECTING_DEVICE_FROM_PORT, + "Disconnecting device from port" + ) +MSG_HASH( + MSG_VALUE_REBOOTING, + "Επανεκκίνηση..." + ) +MSG_HASH( + MSG_VALUE_SHUTTING_DOWN, + "Τερματισμός λειτουργίας..." + ) +MSG_HASH( + MSG_VERSION_OF_LIBRETRO_API, + "Έκδοση του libretro API" + ) +MSG_HASH( + MSG_VIEWPORT_SIZE_CALCULATION_FAILED, + "Viewport size calculation failed! Will continue using raw data. This will probably not work right ..." + ) +MSG_HASH( + MSG_VIRTUAL_DISK_TRAY, + "virtual disk tray." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_LATENCY, + "Επιθυμητή καθυστέρηση ήχου σε milliseconds. Ίσως να μην τηρηθεί εάν ο οδηγός ήχου δεν μπορεί να παρέχει την επιλεγμένη καθυστέρηση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_MUTE, + "Σίγαση/κατάργηση σίγασης ήχου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_RATE_CONTROL_DELTA, + "Helps smooth out imperfections in timing when synchronizing audio and video. Be aware that if disabled, proper synchronization is nearly impossible to obtain." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CAMERA_ALLOW, + "Allow or disallow camera access by cores." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOCATION_ALLOW, + "Allow or disallow location services access by cores." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_MAX_USERS, + "Μέγιστος αριθμός χρηστών που υποστηρίζεται από το RetroArch." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_POLL_TYPE_BEHAVIOR, + "Επιρροή του πως γίνεται η συγκέντρωση εισόδου μέσα στο RetroArch. Ο ορισμός σε 'Νωρίς' ή 'Αργά' μπορεί να έχει ως αποτέλεσμα μικρότερη καθυστέρηση με τις ρυθμίσεις σας." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_ALL_USERS_CONTROL_MENU, + "Επιτρέπει σε οποιονδήποτε χρήστη να χειριστεί το μενού. Εάν απενεργοποιηθεί, μόνο ο Χρήστης 1 μπορεί να χειριστει το μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_VOLUME, + "Ένταση ήχου (σε dB). Το 0 είναι η φυσιολογική ένταση και δεν εφαρμόζεται gain." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_WASAPI_EXCLUSIVE_MODE, + "Allow the WASAPI driver to take exclusive control of the audio device. If disabled, it will use shared mode instead." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_WASAPI_FLOAT_FORMAT, + "Use float format for the WASAPI driver, if supported by your audio device." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_WASAPI_SH_BUFFER_LENGTH, + "The intermediate buffer length (in frames) when using the WASAPI driver in shared mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_SYNC, + "Συγχρονισμός ήχου. Προτείνεται." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_AXIS_THRESHOLD, + "Πόσο μακριά ένας άξωνας πρέπει να γείρει ώστε να οδηγήσει σε πάτημα κουμπιού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_BIND_TIMEOUT, + "Χρόνος αναμονής σε δευτερόλεπτα μέχρι την συνέχιση στην επόμενη σύνδεση πλήκτρων." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_BIND_HOLD, + "Δευτερόλεπτα τα οποία χρειάζεται να κρατήσετε πατημένο κάποιο κουμπί μέχρι την σύνδεση του." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_TURBO_PERIOD, + "Describes the period when turbo-enabled buttons are toggled. Numbers are described in frames." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_DUTY_CYCLE, + "Describes how long the period of a turbo-enabled button should be. Numbers are described in frames." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_VSYNC, + "Συγχρονίζει την έξοδο βίντεο της κάρτας γραφικών με τον ρυθμό ανανέωσης της οθόνης. Προτείνεται." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_ALLOW_ROTATE, + "Allow cores to set rotation. When disabled, rotation requests are ignored. Useful for setups where one manually rotates the screen." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DUMMY_ON_CORE_SHUTDOWN, + "Some cores might have a shutdown feature. If enabled, it will prevent the core from shutting RetroArch down. Instead, it loads a dummy core." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHECK_FOR_MISSING_FIRMWARE, + "Check if all the required firmware is present before attempting to load content." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE, + "Ο κάθετος ρυθμός ανανέωσης της οθόνης. Χρησιμοποιείται για τον υπολογισμό του κατάλληλου ρυθμού εισαγωγής ήχου.\n" + "ΣΗΜΕΙΩΣΗ: Αυτή η επιλογή αγνοείται εάν έχετε ενεργοποιήσει το 'Threaded Video'." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_ENABLE, + "Ενεργοποίηση εξόδου ήχου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_MAX_TIMING_SKEW, + "The maximum change in audio input rate. Increasing this enables very large changes in timing at the cost of an inaccurate audio pitch (e.g., running PAL cores on NTSC displays)." + ) +MSG_HASH( + MSG_FAILED, + "failed" + ) +MSG_HASH( + MSG_SUCCEEDED, + "succeeded" + ) +MSG_HASH( + MSG_DEVICE_NOT_CONFIGURED, + "not configured" + ) +MSG_HASH( + MSG_DEVICE_NOT_CONFIGURED_FALLBACK, + "not configured, using fallback" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST, + "Database Cursor List" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DEVELOPER, + "Database - Filter : Developer" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_PUBLISHER, + "Database - Filter : Publisher" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISABLED, + "Disabled" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ENABLED, + "Enabled" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_PATH, + "Content History Path" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_ORIGIN, + "Database - Filter : Origin" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_FRANCHISE, + "Database - Filter : Franchise" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_ESRB_RATING, + "Database - Filter : ESRB Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_ELSPA_RATING, + "Database - Filter : ELSPA Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_PEGI_RATING, + "Database - Filter : PEGI Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_CERO_RATING, + "Database - Filter : CERO Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_BBFC_RATING, + "Database - Filter : BBFC Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_MAX_USERS, + "Database - Filter : Max Users" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_RELEASEDATE_BY_MONTH, + "Database - Filter : Releasedate By Month" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_RELEASEDATE_BY_YEAR, + "Database - Filter : Releasedate By Year" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_ISSUE, + "Database - Filter : Edge Magazine Issue" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_RATING, + "Database - Filter : Edge Magazine Rating" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DATABASE_INFO, + "Πληροφορίες Βάσης Δεδομένων" + ) +MSG_HASH( + MSG_WIFI_SCAN_COMPLETE, + "Η σάρωση του Wi-Fi ολοκληρώθηκε." + ) +MSG_HASH( + MSG_SCANNING_WIRELESS_NETWORKS, + "Σάρωση ασύρματων δικτύων..." + ) +MSG_HASH( + MSG_NETPLAY_LAN_SCAN_COMPLETE, + "Οκληρώθηκε η σάρωση Netplay." + ) +MSG_HASH( + MSG_NETPLAY_LAN_SCANNING, + "Σάρωση για οικοδεσπότες netplay..." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PAUSE_NONACTIVE, + "Παύση παιχνιδιού όταν το RetroArch δεν είναι το ενεργό παράθυρο." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_DISABLE_COMPOSITION, + "Enable or disable composition." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_HISTORY_LIST_ENABLE, + "Ενεργοποίηση ή απενεργοποίηση λίστας πρόσφατων για παιχνίδια, εικόνες, μουσική και βίντεο." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_HISTORY_SIZE, + "Περιορισμός καταχωρήσεων στην λίστα πρόσφατων για παιχνίδια, εικόνες, μουσική και βίντεο." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_UNIFIED_MENU_CONTROLS, + "Ενοποιημένος Χειρισμός Μενού" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_UNIFIED_MENU_CONTROLS, + "Χρήση του ίδιου χειρισμού για το μενού και το παιχνίδι. Εφαρμόζεται στο πληκτρολόγιο." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FONT_ENABLE, + "Εμφάνιση μηνυμάτων οθόνης." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETWORK_USER_REMOTE_ENABLE, + "User %d Remote Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BATTERY_LEVEL_ENABLE, + "Εμφάνιση επιπέδου μπαταρίας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SELECT_FILE, + "Επιλογή Αρχείου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SELECT_FROM_COLLECTION, + "Επιλογή Από Συλλογή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FILTER, + "Φίλτρα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SCALE, + "Κλίμακα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_START_WHEN_LOADED, + "Netplay will start when content is loaded." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_LOAD_CONTENT_MANUALLY, + "Couldn't find a suitable core or content file, load manually." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BROWSE_URL_LIST, + "Browse URL" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BROWSE_URL, + "URL Path" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BROWSE_START, + "Έναρξη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_BOKEH, + "Bokeh" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOWFLAKE, + "Χιονονιφάδα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_REFRESH_ROOMS, + "Ανανέωση Λίστας Δωματίων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME, + "Ψευδώνυμο: %s" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME_LAN, + "Ψευδώνυμο (lan): %s" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_COMPAT_CONTENT_FOUND, + "Βρέθηκε συμβατό περιεχόμενο" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_CROP_OVERSCAN, + "Αφαιρεί μερικά pixel γύρω από την εικόνα όπου εθιμικά οι προγραμματιστές άφηναν κενά ή και που περιέχουν άχρηστα pixel." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SMOOTH, + "Προσθέτει μία μικρή θολούρα στην εικόνα ώστε να αφαιρέσει τις σκληρές γωνίες των pixel. Αυτή η επιλογή έχει πολύ μικρή επιρροή στην επίδοση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FILTER, + "Εφαρμόστε ένα φίλτρο βίντεο που λειτουργεί με τον επεξεργαστή.\n" + "ΣΗΜΕΙΩΣΗ: Μπορεί να έχει μεγάλο κόστος στην επίδοση. Μερικά φίλτρα βίντεο μπορεί να δουλεύουν μόνο με πυρήνες που χρησιμοποιούν 32bit ή 16bit χρώμα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_USERNAME, + "Εισάγεται το όνομα χρήστη του λογαριασμού σας στο RetroAchievements." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEEVOS_PASSWORD, + "Εισάγεται τον κωδικό πρόσβασης του λογαριασμού σας στο RetroAchievements." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_NICKNAME, + "Εισάγεται το όνομα χρήστη σας εδώ. Αυτό θα χρησιμοποιηθεί για συνεδρίες netplay ανάμεσα σε άλλα πράγματα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_POST_FILTER_RECORD, + "Capture the image after filters (but not shaders) are applied. Your video will look as fancy as what you see on your screen." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_LIST, + "Επιλέξτε ποιον πυρήνα θα χρησιμοποιήστε." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOAD_CONTENT_LIST, + "Επιλέξτε ποιο περιεχόμενο θα ξεκινήσετε." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETWORK_INFORMATION, + "Εμφάνιση ανταπτόρων δικτύου και τις συσχετιζόμενες διευθύνσεις IP." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SYSTEM_INFORMATION, + "Εμφάνιση πληροφοριών για την συγκεκριμένη συσκευή." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUIT_RETROARCH, + "Έξοδος από το πρόγραμμα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_WINDOW_WIDTH, + "Ορίστε το προτιμώμενο πλάτος του παραθύρου απεικόνισης. Αφήνοντας το στο 0 θα επιχειρηθεί η κλίμακα του παραθύρου να είναι όσο το δυνατόν μεγαλύτερη." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_WINDOW_HEIGHT, + "Ορίστε το προτιμώμενο ύψος του παραθύρου απεικόνισης. Αφήνοντας το στο 0 θα επιχειρηθεί η κλίμακα του παραθύρου να είναι όσο το δυνατόν μεγαλύτερη." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_X, + "Set the custom width size for the non-windowed fullscreen mode. Leaving it at 0 will use the desktop resolution." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN_Y, + "Set the custom height size for the non-windowed fullscreen mode. Leaving it at 0 will use the desktop resolution" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_X, + "Specify custom X axis position for onscreen text." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_Y, + "Specify custom Y axis position for onscreen text." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FONT_SIZE, + "Specify the font size in points." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_OVERLAY_HIDE_IN_MENU, + "Απόκρυψη του επικαλλύματος μέσα στο μενού και εμφάνιση του ξανά με την έξοδο από το μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, + "Εμφάνιση εισαγωγών πληκτρολογίου/χειριστηρίου στο επικάλλυμα οθόνης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, + "Επιλογή της θύρας για όταν είναι ενεργοποιημένη η επιλογή 'Εμφάνιση Εισαγωγών Στην Οθόνη'" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_COLLECTION_LIST, + "Το σαρωμένο περιεχόμενο θα εμφανίζεται εδώ." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER, + "Αλλαγή κλίμακας βίντεο σε ακέραια βήματα. Το βασικό μέγεθος εξαρτάται από την γεωμετρία και την κλίμακα οθόνης του συστήματος. Εάν η 'Εξαναγκασμένη Κλίμακα' δεν έχει οριστεί, οι άξωνες X/Y θα αλλάζουν κλίμακα ξεχωριστά." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_GPU_SCREENSHOT, + "Screenshots output of GPU shaded material if available." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_ROTATION, + "Forces a certain rotation of the screen. The rotation is added to rotations which the core sets." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FORCE_SRGB_DISABLE, + "Forcibly disable sRGB FBO support. Some Intel OpenGL drivers on Windows have video problems with sRGB FBO support if this is enabled. Enabling this can work around it." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FULLSCREEN, + "Έναρξη σε πλήρη οθόνη. Μπορεί να αλλάξει κατά την εκτέλεση. Μπορεί να παρακαμπτεί από έναν διακόπτη γραμμής τερματικού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_WINDOWED_FULLSCREEN, + "Εάν χρησιμοποιηθεί πλήρης οθόνη προτιμήστε την κατάσταση παραθύρου πλήρης οθόνης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_GPU_RECORD, + "Records output of GPU shaded material if available." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVESTATE_AUTO_INDEX, + "When making a savestate, save state index is automatically increased before it is saved. When loading content, the index will be set to the highest existing index." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_BLOCK_SRAM_OVERWRITE, + "Block Save RAM from being overwritten when loading save states. Might potentially lead to buggy games." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_FASTFORWARD_RATIO, + "The maximum rate at which content will be run when using fast forward (e.g., 5.0x for 60 fps content = 300 fps cap). If set to 0.0x, fastforward ratio is unlimited (no FPS cap)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SLOWMOTION_RATIO, + "When in slow motion, content will slow down by the factor specified/set." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, + "Run core logic one or more frames ahead then load the state back to reduce perceived input lag." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, + "The number of frames to run ahead. Causes gameplay issues such as jitter if you exceed the number of lag frames internal to the game." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, + "Use a second instance of the RetroArch core to run ahead. Prevents audio problems due to loading state." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, + "Hides the warning message that appears when using RunAhead and the core does not support savestates." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_REWIND_ENABLE, + "Ενεργοποίηση επιστροφής. Η επίδοση θα πέσει κατά το παιχνίδι." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_APPLY_AFTER_TOGGLE, + "Apply cheat immediately after toggling." +) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_APPLY_AFTER_LOAD, + "Auto-apply cheats when game loads." +) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_REPEAT_COUNT, + "The number of times the cheat will be applied. Use with the other two Iteration options to affect large areas of memory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_REPEAT_ADD_TO_ADDRESS, + "After each 'Number of Iterations' the Memory Address will be increased by this number times the 'Memory Search Size'." +) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_REPEAT_ADD_TO_VALUE, + "After each 'Number of Iterations' the Value will be increased by this amount." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_REWIND_GRANULARITY, + "When rewinding a defined number of frames, you can rewind several frames at a time, increasing the rewind speed." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_REWIND_BUFFER_SIZE, + "The amount of memory (in MB) to reserve for the rewind buffer. Increasing this will increase the amount of rewind history." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_REWIND_BUFFER_SIZE_STEP, + "Each time you increase or decrease the rewind buffer size value via this UI it will change by this amount" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_IDX, + "Index position in list." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_ADDRESS_BIT_POSITION, + "Address bitmask when Memory Search Size < 8-bit." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_MATCH_IDX, + "Select the match to view." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_START_OR_CONT, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_START_OR_RESTART, + "Αριστερά/Δεξιά για αλλαγή μεγέθους bit" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EXACT, + "Αριστερά/Δεξιά για αλλαγή τιμής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_LT, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_GT, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_LTE, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_GTE, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EQ, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_NEQ, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EQPLUS, + "Αριστερά/Δεξιά για αλλαγή τιμής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_SEARCH_EQMINUS, + "Αριστερά/Δεξιά για αλλαγή τιμής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_ADD_MATCHES, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_VIEW_MATCHES, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_CREATE_OPTION, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_DELETE_OPTION, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_ADD_NEW_TOP, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_ADD_NEW_BOTTOM, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_DELETE_ALL, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_RELOAD_CHEATS, + "" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_BIG_ENDIAN, + "Big endian : 258 = 0x0102,\n" + "Little endian : 258 = 0x0201" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LIBRETRO_LOG_LEVEL, + "Sets log level for cores. If a log level issued by a core is below this value, it is ignored." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PERFCNT_ENABLE, + "Enable performance counters for RetroArch (and cores)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVESTATE_AUTO_SAVE, + "Automatically makes a savestate at the end of RetroArch's runtime. RetroArch will automatically load this savestate if 'Auto Load State' is enabled." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVESTATE_AUTO_LOAD, + "Automatically load the auto save state on startup." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVESTATE_THUMBNAIL_ENABLE, + "Show thumbnails of save states inside the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUTOSAVE_INTERVAL, + "Autosaves the non-volatile Save RAM at a regular interval. This is disabled by default unless set otherwise. The interval is measured in seconds. A value of 0 disables autosave." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_REMAP_BINDS_ENABLE, + "If enabled, overrides the input binds with the remapped binds set for the current core." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_AUTODETECT_ENABLE, + "Enable input auto-detection. Will attempt to autoconfigure joypads, Plug-and-Play style." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_INPUT_SWAP_OK_CANCEL, + "Εναλλαγή πλήτρκων για Επιβεβαίωση/Ακύρωση. Απενεργοποιημένο είναι ο Ιαπωνικός προσανατολισμός, ενεργοποιημένος είναι ο δυτικός προσανατολισμός." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO, + "Εάν απενεργοποιηθεί το περιεχόμενο θα συνεχίσει να τρέχει στο παρασκήνιο όταν το μενού του RetroArch είναι ανοικτό." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_DRIVER, + "Οδηγός βίντεο προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_DRIVER, + "Οδηγός ήχου προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_DRIVER, + "Οδηγός Εισόδου προς χρήση. Ανάλογα με τον οδηγό βίντεο, ίσως αλλάξει αναγκαστικά ο οδηγός εισαγωγής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_JOYPAD_DRIVER, + "Οδηγός Joypad προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_RESAMPLER_DRIVER, + "Οδηγός Επαναδειγματολήπτη Ήχου προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CAMERA_DRIVER, + "Οδηγός Κάμερας προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOCATION_DRIVER, + "Οδηγός Τοποθεσίας προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_DRIVER, + "Οδηγός Μενού προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RECORD_DRIVER, + "Οδηγός Εγγραφής προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIDI_DRIVER, + "Οδηγός MIDI προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_WIFI_DRIVER, + "Οδηγός Wi-Fi προς χρήση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE, + "Filter files being shown in filebrowser by supported extensions." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_WALLPAPER, + "Select an image to set as menu wallpaper." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DYNAMIC_WALLPAPER, + "Dynamically load a new wallpaper depending on context." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_DEVICE, + "Παράκαμψη της προκαθορισμένης συσκευής ήχου που χρησιμοποιεί ο οδηγός ήχου. Αυτή η επιλογή εξαρτάται από τον οδηγό." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_DSP_PLUGIN, + "Πρόσθετο ήχου DSP που επεξεργάζεται τον ήχο πριν αποσταλεί στον οδηγό." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_OUTPUT_RATE, + "Audio output sample rate." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OVERLAY_OPACITY, + "Διαφάνεια όλων των στοιχείων του επικαλλύματος." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OVERLAY_SCALE, + "Κλίμακα όλων των στοιχείων του επικαλλύματος." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_OVERLAY_ENABLE, + "Ενεργοποίηση του επικαλλύματος." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OVERLAY_PRESET, + "Επιλογή ενός επικαλλύματος από τον περιηγητή αρχείων." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_IP_ADDRESS, + "The address of the host to connect to." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_TCP_UDP_PORT, + "The port of the host IP address. Can be either a TCP or UDP port." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_PASSWORD, + "The password for connecting to the netplay host. Used only in host mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_PUBLIC_ANNOUNCE, + "Whether to announce netplay games publicly. If unset, clients must manually connect rather than using the public lobby." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_SPECTATE_PASSWORD, + "The password for connecting to the netplay host with only spectator privileges. Used only in host mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_START_AS_SPECTATOR, + "Whether to start netplay in spectator mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_ALLOW_SLAVES, + "Whether to allow connections in slave mode. Slave-mode clients require very little processing power on either side, but will suffer significantly from network latency." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_REQUIRE_SLAVES, + "Whether to disallow connections not in slave mode. Not recommended except for very fast networks with very weak machines." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_STATELESS_MODE, + "Whether to run netplay in a mode not requiring save states. If set to true, a very fast network is required, but no rewinding is performed, so there will be no netplay jitter." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_CHECK_FRAMES, + "The frequency in frames with which netplay will verify that the host and client are in sync." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_NAT_TRAVERSAL, + "When hosting, attempt to listen for connections from the public Internet, using UPnP or similar technologies to escape LANs." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_STDIN_CMD_ENABLE, + "Enable stdin command interface." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MOUSE_ENABLE, + "Enable mouse controls inside the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_POINTER_ENABLE, + "Enable touch controls inside the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_THUMBNAILS, + "Type of thumbnail to display." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LEFT_THUMBNAILS, + "Type of thumbnail to display at the left." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_VERTICAL_THUMBNAILS, + "Display the left thumbnail under the right one, on the right side of the screen." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_TIMEDATE_ENABLE, + "Εμφάνιση τρέχουσας ημερομηνίας ή και ώρας μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_BATTERY_LEVEL_ENABLE, + "Εμφάνιση τρέχουσας μπαταρίας μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NAVIGATION_WRAPAROUND, + "Wrap-around to beginning and/or end if boundary of list is reached horizontally or vertically." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_ENABLE_HOST, + "Ενεργοποιεί το netplay ως οικοδεσπότης (εξυπηρετητής)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_ENABLE_CLIENT, + "Ενεργοποιεί το netplay ως πελάτης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_DISCONNECT, + "Αποσυνδέει μία ενεργή σύνδεση Netplay." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SCAN_DIRECTORY, + "Σαρώνει ένα ευρετήριο για συμβατά αρχεία και τα προσθέτει στην συλλογή." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SCAN_FILE, + "Σαρώνει ένα συμβατό αρχείο και το προσθέτει στην συλλογή." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SWAP_INTERVAL, + "Χρησιμοποιεί ένα προτιμώμενο διάστημα αλλαγής για το Vsync. Ορίστε αυτό ώστε να μειώσεται στο μισό τον ρυθμό ανανέωσης της οθόνης αποτελεσματικά." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SORT_SAVEFILES_ENABLE, + "Sort save files in folders named after the core used." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SORT_SAVESTATES_ENABLE, + "Sort save states in folders named after the core used." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_REQUEST_DEVICE_I, + "Request to play with the given input device." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_UPDATER_BUILDBOT_URL, + "URL to core updater directory on the Libretro buildbot." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_BUILDBOT_ASSETS_URL, + "URL to assets updater directory on the Libretro buildbot." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE, + "After downloading, automatically extract files contained in the downloaded archives." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_REFRESH_ROOMS, + "Σάρωση για νέα δωμάτια." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DELETE_ENTRY, + "Κατάργηση αυτής της καταχώρησης από την συλλογή." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INFORMATION, + "View more information about the content." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES, + "Προσθήκη καταχώρησης στα αγαπημένα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST, + "Προσθήκη καταχώρησης στα αγαπημένα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RUN, + "Έναρξη περιεχομένου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_FILE_BROWSER_SETTINGS, + "Προσαρμογή ρυθμίσεων εξερευνητή αρχείου." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUTO_REMAPS_ENABLE, + "Enable customized controls by default at startup." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUTO_OVERRIDES_ENABLE, + "Enable customized configuration by default at startup." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GAME_SPECIFIC_OPTIONS, + "Enable customized core options by default at startup." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_ENABLE, + "Εμφανίζει το όνομα του τρέχων πυρήνα μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DATABASE_MANAGER, + "Προβολή βάσεων δεδομένων." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CURSOR_MANAGER, + "Προβολή προηγούμενων αναζητήσεων." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_TAKE_SCREENSHOT, + "Καταγράφει μία εικόνα της οθόνης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOSE_CONTENT, + "Κλείνει το τρέχον περιεχόμενο. Οποιεσδήποτε μη αποθηκευμένες αλλαγές μπορεί να χαθούν." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LOAD_STATE, + "Φόρτωση μίας κατάστασης από την τρέχουσα θέση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_STATE, + "Αποθήκευση μίας κατάστασης στην τρέχουσα θέση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RESUME, + "Συνέχιση εκτέλεσης του τρέχοντος περιεχομένου και έξοδος από το Γρήγορο Μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RESUME_CONTENT, + "Συνέχιση εκτέλεσης του τρέχοντος περιεχομένου και έξοδος από το Γρήγορο Μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_STATE_SLOT, + "Αλλάζει την τρέχουσα επιλεγμένη θέση κατάστασης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_UNDO_LOAD_STATE, + "Εάν μία κατάσταση φορτώθηκε, το περιεχόμενο θα επιστρέψει στην κατάσταση πριν την φόρτωση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_UNDO_SAVE_STATE, + "Εάν μία κατάσταση αντικαταστάθηκε, το περιεχόμενο θα επιστρέψει στην προηγούμενη κατάσταση αποθήκευσης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACCOUNTS_RETRO_ACHIEVEMENTS, + "Υπηρεσία RetroAchievements. Για περισσότερες πληροφορίες επισκεφθείτε το http://retroachievements.org" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACCOUNTS_LIST, + "Διαχειρίζεται τους τρέχοντες διαμορφωμένους λογαριασμούς." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_META_REWIND, + "Διαχειρίζεται τις ρυθμίσεις επαναφοράς." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_META_CHEAT_DETAILS, + "Manages cheat details settings." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_META_CHEAT_SEARCH, + "Start or continue a cheat code search." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RESTART_CONTENT, + "Επανεκκινεί το περιεχόμενο από την αρχή." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, + "Saves an override configuration file which will apply for all content loaded with this core. Will take precedence over the main configuration." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CONTENT_DIR, + "Saves an override configuration file which will apply for all content loaded from the same directory as the current file. Will take precedence over the main configuration." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, + "Saves an override configuration file which will apply for the current content only. Will take precedence over the main configuration." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_CHEAT_OPTIONS, + "Στήσιμο κωδικών απάτης." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHADER_OPTIONS, + "Στήσιμο σκιάσεων για την οπτική βελτίωση της εικόνας." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_INPUT_REMAPPING_OPTIONS, + "Αλλαγή χειρισμών για το τρέχον εκτελούμενο περιεχόμενο." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_OPTIONS, + "Αλλαγή επιλογών για το τρέχον εκτελούμενο περιεχόμενο." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHOW_ADVANCED_SETTINGS, + "Show advanced settings for power users (hidden by default)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_THREADED_DATA_RUNLOOP_ENABLE, + "Perform tasks on a separate thread." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_REMOVE, + "Επιτρέψτε στον χρήστη να καταργεί τις καταχωρήσεις από την συλλογή." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SYSTEM_DIRECTORY, + "Sets the System directory. Cores can query for this directory to load BIOSes, system-specific configs, etc." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RGUI_BROWSER_DIRECTORY, + "Sets start directory for the filebrowser." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_DIR, + "Usually set by developers who bundle libretro/RetroArch apps to point to assets." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DYNAMIC_WALLPAPERS_DIRECTORY, + "Directory to store wallpapers dynamically loaded by the menu depending on context." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_THUMBNAILS_DIRECTORY, + "Supplementary thumbnails (boxarts/misc. images, etc.) are stored here." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RGUI_CONFIG_DIRECTORY, + "Sets start directory for menu configuration browser." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN, + "The number of frames of input latency for netplay to use to hide network latency. Reduces jitter and makes netplay less CPU-intensive, at the expense of noticeable input lag." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE, + "The range of frames of input latency that may be used to hide network latency. Reduces jitter and makes netplay less CPU-intensive, at the expense of unpredictable input lag." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISK_CYCLE_TRAY_STATUS, + "Cycle the current disk. If the disk is inserted, it will eject the disk. If the disk has not been inserted, it will be inserted. " + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISK_INDEX, + "Change the disk index." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISK_OPTIONS, + "Disk image management." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISK_IMAGE_APPEND, + "Select a disk image to insert." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE, + "Makes sure the framerate is capped while inside the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VRR_RUNLOOP_ENABLE, + "No deviation from core requested timing. Use for Variable Refresh Rate screens, G-Sync, FreeSync." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_LAYOUT, + "Select a different layout for the XMB interface." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_THEME, + "Select a different theme for the icon. Changes will take effect after you restart the program." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_SHADOWS_ENABLE, + "Enable drop shadows for all icons. This will have a minor performance hit." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MATERIALUI_MENU_COLOR_THEME, + "Select a different background color gradient theme." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_WALLPAPER_OPACITY, + "Modify the opacity of the background wallpaper." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_MENU_COLOR_THEME, + "Select a different background color gradient theme." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_RIBBON_ENABLE, + "Select an animated background effect. Can be GPU-intensive depending on the effect. If performance is unsatisfactory, either turn this off or revert to a simpler effect." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_FONT, + "Select a different main font to be used by the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_FAVORITES, + "Προβολή καρτέλας αγαπημένων μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_IMAGES, + "Προβολή καρτέλας εικόνων μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_MUSIC, + "Προβολή καρτέλας μουσικής μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_VIDEO, + "Προβολή καρτέλας βίντεο μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_NETPLAY, + "Προβολή καρτέλας netplay μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS, + "Προβολή καρτέλας ρυθμίσεων μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_HISTORY, + "Προβολή καρτέλας πρόσφατου ιστορικού μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_ADD, + "Προβολή καρτέλας εισαγωγής περιεχομένου μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS, + "Προβολή καρτέλας λίστας αναπαραγωγής μέσα στο μενού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RGUI_SHOW_START_SCREEN, + "Προβολή οθόνης εκκίνησης στο μενού. Τίθεται αυτόματα σε αρνητικό μετά την πρώτη εκκίνηση του προγράμματος." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MATERIALUI_MENU_HEADER_OPACITY, + "Modify the opacity of the header graphic." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MATERIALUI_MENU_FOOTER_OPACITY, + "Modify the opacity of the footer graphic." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DPI_OVERRIDE_ENABLE, + "The menu normally scales itself dynamically. If you want to set a specific scaling size instead, enable this." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DPI_OVERRIDE_VALUE, + "Set the custom scaling size here.\n" + "NOTE: You have to enable 'DPI Override' for this scaling size to take effect." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_ASSETS_DIRECTORY, + "Save all downloaded files to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_REMAPPING_DIRECTORY, + "Save all remapped controls to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LIBRETRO_DIR_PATH, + "Directory where the program searches for content/cores." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_LIBRETRO_INFO_PATH, + "Application/core information files are stored here." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_JOYPAD_AUTOCONFIG_DIR, + "If a joypad is plugged in, that joypad will be autoconfigured if a config file corresponding to it is present inside this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_DIRECTORY, + "Save all collections to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CACHE_DIRECTORY, + "If set to a directory, content which is temporarily extracted (e.g. from archives) will be extracted to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CURSOR_DIRECTORY, + "Saved queries are stored to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_DATABASE_DIRECTORY, + "Databases are stored to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ASSETS_DIRECTORY, + "This location is queried by default when menu interfaces try to look for loadable assets, etc." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVEFILE_DIRECTORY, + "Save all save files to this directory. If not set, will try to save inside the content file's working directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SAVESTATE_DIRECTORY, + "Save all save states to this directory. If not set, will try to save inside the content file's working directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SCREENSHOT_DIRECTORY, + "Directory to dump screenshots to." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OVERLAY_DIRECTORY, + "Ορίζει ένα ευρετήριο όπου τα επικαλλύματα αποθηκεύονται για εύκολη πρόσβαση." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_DATABASE_PATH, + "Τα αρχεία απάτης αποθηκεύονται εδώ." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_FILTER_DIR, + "Directory where audio DSP filter files are kept." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FILTER_DIR, + "Directory where CPU-based video filter files are kept." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_DIR, + "Defines a directory where GPU-based video shader files are kept for easy access." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RECORDING_OUTPUT_DIRECTORY, + "Recordings will be dumped to this directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RECORDING_CONFIG_DIRECTORY, + "Recording configurations will be kept here." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_FONT_PATH, + "Select a different font for onscreen notifications." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHADER_APPLY_CHANGES, + "Changes to the shader configuration will take effect immediately. Use this if you changed the amount of shader passes, filtering, FBO scale, etc." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_NUM_PASSES, + "Increase or decrease the amount of shader pipeline passes. You can bind a separate shader to each pipeline pass and configure its scale and filtering." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET, + "Load a shader preset. The shader pipeline will be automatically set-up." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_AS, + "Save the current shader settings as a new shader preset." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_CORE, + "Save the current shader settings as the default settings for this application/core." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_PARENT, + "Save the current shader settings as the default settings for all files in the current content directory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_GAME, + "Save the current shader settings as the default settings for the content." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PARAMETERS, + "Modifies the current shader directly. Changes will not be saved to the preset file." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_PARAMETERS, + "Modifies the shader preset itself currently used in the menu." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_NUM_PASSES, + "Increase or decrease the amount of cheats." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_APPLY_CHANGES, + "Cheat changes will take effect immediately." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_START_SEARCH, + "Start search for a new cheat. Number of bits can be changed." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_CONTINUE_SEARCH, + "Continue search for a new cheat." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_FILE_LOAD, + "Load a cheat file and replace existing cheats." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_FILE_LOAD_APPEND, + "Load a cheat file and append to existing cheats." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CHEAT_FILE_SAVE_AS, + "Save current cheats as a save file." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SETTINGS, + "Γρήγορα πρόσβαση σε όλες τις σχετικές ρυθμίσεις παιχνιδιού." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_INFORMATION, + "View information pertaining to the application/core." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_ASPECT_RATIO, + "Floating point value for video aspect ratio (width / height), used if the Aspect Ratio is set to 'Config'." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_HEIGHT, + "Προτιμώμενο ύψος οπτικής γωνίας το οποίο χρησιμοποιείται εάν η Αναλογία Οθόνης είναι ορισμένη ως 'Προτιμώμενη'." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_WIDTH, + "Προτιμώμενο πλάτος οπτικής γωνίας το οποίο χρησιμοποιείται εάν η Αναλογία Οθόνης είναι ορισμένη ως 'Προτιμώμενη'." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_X, + "Προτιμώμενη απόκλειση οπτικής γωνίας για τον ορισμό της θέσης του άξωνα X της οπτικής γωνίας. Αυτό αγνοείται εάν έχεται ενεργοποιήσει την 'Ακέραια Κλίμακα'. Τότε θα κεντραριστεί αυτόματα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y, + "Προτιμώμενη απόκλειση οπτικής γωνίας για τον ορισμό της θέσης του άξωνα Y της οπτικής γωνίας. Αυτό αγνοείται εάν έχεται ενεργοποιήσει την 'Ακέραια Κλίμακα'. Τότε θα κεντραριστεί αυτόματα." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_USE_MITM_SERVER, + "Χρήση Εξυπηρετητή Αναμετάδοσης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER, + "Forward netplay connections through a man-in-the-middle server. Useful if the host is behind a firewall or has NAT/UPnP problems." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_NETPLAY_MITM_SERVER, + "Τοποθεσία Εξυπηρετητή Αναμετάδοσης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_NETPLAY_MITM_SERVER, + "Choose a specific relay server to use. Geographically closer locations tend to have lower latency." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER, + "Προσθήκη στον μίκτη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_PLAY, + "Προσθήκη στον μίκτη και αναπαραγωγή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION, + "Προσθήκη στον μίκτη" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION_AND_PLAY, + "Προσθήκη στον μίκτη και αναπαραγωγή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE, + "Φιλτράρισμα με βάση τον τρέχων πυρήνα" + ) +MSG_HASH( + MSG_AUDIO_MIXER_VOLUME, + "Γενική ένταση μίκτη ήχου" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_MIXER_VOLUME, + "Γενική ένταση μίκτη ήχου (σε dB). Το 0 είναι η φυσιολογική ένταση και δεν εφαρμόζεται gain." /*Need a good translation for gain if there's any*/ + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_VOLUME, + "Επίπεδο Έντασης Μίκτη Ήχου (dB)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_MUTE, + "Σίγαση Μίκτη Ήχου" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_MIXER_MUTE, + "Σίγαση/κατάργηση σίγασης μίκτη ήχου." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_ONLINE_UPDATER, + "Προβολή Διαδικτυακού Ενημερωτή" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_ONLINE_UPDATER, + "Εμφάνιση/απόκρυψη της επιλογής 'Διαδικτυακού Ενημερωτή'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_VIEWS_SETTINGS, + "Προβολές" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_VIEWS_SETTINGS, + "Προβολή ή απόκρυψη στοιχείων στην οθόνη του μενού." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_CORE_UPDATER, + "Προβολή Ενημερωτή Πυρήνων" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_UPDATER, + "Εμφάνιση/απόκρυψη της ικανότητας ενημέρωσης πυρήνων (και πληροφοριακών αρχείων πυρήνων)." + ) +MSG_HASH( + MSG_PREPARING_FOR_CONTENT_SCAN, + "Προετοιμασία για σάρωση περιεχομένου..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CORE_DELETE, + "Διαγραφή πυρήνα" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CORE_DELETE, + "Κατάργηση αυτού του πυρήνα από τον δίσκο." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY, + "Framebuffer Opacity" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY, + "Modify the opacity of the framebuffer." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES, + "Αγαπημένα" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GOTO_FAVORITES, + "Περιεχόμενο που έχετε προσθέσει στα 'Αγαπημένα' θα εμφανίζεται εδώ." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GOTO_MUSIC, + "Μουσική" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GOTO_MUSIC, + "Μουσική που έχει προηγουμένως αναπαραχθεί θα εμφανίζονται εδώ." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GOTO_IMAGES, + "Εικόνα" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GOTO_IMAGES, + "Εικόνες που έχουν προηγουμένως προβληθεί θα εμφανίζονται εδώ." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_GOTO_VIDEO, + "Βίντεο" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_GOTO_VIDEO, + "Βίντεο που έχουν προηγουμένως αναπαραχθεί θα εμφανίζονται εδώ." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE, + "Εικονίδια Μενού" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE, + "Ενεργοποίηση/Απενεργοποίηση των εικονιδίων που εμφανίζονται στα αριστερά των καταχωρήσεων του μενού." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_XMB_MAIN_MENU_ENABLE_SETTINGS, + "Ενεργοποίηση Καρτέλας Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS_PASSWORD, + "Ορισμός Κωδικού Για Την Ενεργοποίηση Της Καρτέλας Ρυθμίσεων" + ) +MSG_HASH( + MSG_INPUT_ENABLE_SETTINGS_PASSWORD, + "Εισαγωγή Κωδικού" + ) +MSG_HASH( + MSG_INPUT_ENABLE_SETTINGS_PASSWORD_OK, + "Σωστός κωδικός." + ) +MSG_HASH( + MSG_INPUT_ENABLE_SETTINGS_PASSWORD_NOK, + "Λανθασμένος κωδικός." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_XMB_MAIN_MENU_ENABLE_SETTINGS, + "Ενεργοποιεί την καρτέλα Ρυθμίσεις. Χρειάζεται επανεκκίνηση για να εμφανιστεί η καρτέλα." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS_PASSWORD, + "Supplying a password when hiding the settings tab makes it possible to later restore it from the menu, by going to the Main Menu tab, selecting Enable Settings Tab and entering the password." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_RENAME, + "Επιτρέψτε στον χρήστη να μετονομάζει τις καταχωρήσεις στην συλλογή." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_RENAME, + "Επίτρεψη μετονομασίας καταχωρήσεων" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RENAME_ENTRY, + "Μετονομασία του τίτλου αυτής της καταχώρησης." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RENAME_ENTRY, + "Μετονομασία" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE, + "Προβολή Φόρτωσης Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE, + "Εμφάνιση/απόκρυψη της επιλογής 'Φόρτωση Πυρήνα'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT, + "Προβολή Φόρτωσης Περιεχομένου" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT, + "Εμφάνιση/απόκρυψη της επιλογής 'Φόρτωση Περιεχομένου'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_INFORMATION, + "Προβολή Πληροφοριών" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION, + "Εμφάνιση/απόκρυψη της επιλογής 'Πληροφορίες'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS, + "Προβολή Διαμορφώσεων" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS, + "Εμφάνιση/απόκρυψη της επιλογής 'Διαμορφώσεις'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP, + "Προβολή Βοήθειας" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_HELP, + "Εμφάνιση/απόκρυψη της επιλογής 'Βοήθεια'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH, + "Προβολή Εξόδου RetroArch" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH, + "Εμφάνιση/απόκρυψη της επιλογής 'Έξοδος από RetroArch'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_REBOOT, + "Προβολή Επανεκκίνησης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_REBOOT, + "Εμφάνιση/απόκρυψη της επιλογής 'Επανεκκίνηση'." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_SHOW_SHUTDOWN, + "Show Shutdown" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_SHOW_SHUTDOWN, + "Show/hide the 'Shutdown' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_VIEWS_SETTINGS, + "Γρήγορο Μενού" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_VIEWS_SETTINGS, + "Show or hide elements on the Quick Menu screen." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_TAKE_SCREENSHOT, + "Show Take Screenshot" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_TAKE_SCREENSHOT, + "Show/hide the 'Take Screenshot' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SAVE_LOAD_STATE, + "Show Save/Load State" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVE_LOAD_STATE, + "Show/hide the options for saving/loading state." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE, + "Show Undo Save/Load State" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE, + "Show/hide the options for undoing save/load state." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_FAVORITES, + "Show Add to Favorites" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES, + "Show/hide the 'Add to Favorites' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_OPTIONS, + "Show Options" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_OPTIONS, + "Show/hide the 'Options' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_CONTROLS, + "Show Controls" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_CONTROLS, + "Show/hide the 'Controls' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_CHEATS, + "Show Cheats" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_CHEATS, + "Show/hide the 'Cheats' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SHADERS, + "Show Shaders" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SHADERS, + "Show/hide the 'Shaders' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SAVE_CORE_OVERRIDES, + "Show Save Core Overrides" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVE_CORE_OVERRIDES, + "Show/hide the 'Save Core Overrides' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SAVE_GAME_OVERRIDES, + "Show Save Game Overrides" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVE_GAME_OVERRIDES, + "Show/hide the 'Save Game Overrides' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_INFORMATION, + "Show Information" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_INFORMATION, + "Show/hide the 'Information' option." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_ENABLE, + "Notification Background Enable" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_RED, + "Notification Background Red Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_GREEN, + "Notification Background Green Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_BLUE, + "Notification Background Blue Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_OPACITY, + "Notification Background Opacity" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_DISABLE_KIOSK_MODE, + "Disable Kiosk Mode" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_DISABLE_KIOSK_MODE, + "Disables kiosk mode. A restart is required for the change to take full effect." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_ENABLE_KIOSK_MODE, + "Ενεργοποίηση Λειτουργίας Κιόσκι" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_ENABLE_KIOSK_MODE, + "Protects the setup by hiding all configuration related settings." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_KIOSK_MODE_PASSWORD, + "Set Password For Disabling Kiosk Mode" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MENU_KIOSK_MODE_PASSWORD, + "Supplying a password when enabling kiosk mode makes it possible to later disable it from the menu, by going to the Main Menu, selecting Disable Kiosk Mode and entering the password." + ) +MSG_HASH( + MSG_INPUT_KIOSK_MODE_PASSWORD, + "Εισαγωγή Κωδικού" + ) +MSG_HASH( + MSG_INPUT_KIOSK_MODE_PASSWORD_OK, + "Σωστός κωδικός." + ) +MSG_HASH( + MSG_INPUT_KIOSK_MODE_PASSWORD_NOK, + "Λανθασμένος κωδικός." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_RED, + "Notification Red Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_GREEN, + "Notification Green Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_BLUE, + "Notification Blue Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW, + "Show frame count on FPS display" + ) +MSG_HASH( + MSG_CONFIG_OVERRIDE_LOADED, + "Configuration override loaded." + ) +MSG_HASH( + MSG_GAME_REMAP_FILE_LOADED, + "Game remap file loaded." + ) +MSG_HASH( + MSG_CORE_REMAP_FILE_LOADED, + "Core remap file loaded." + ) +MSG_HASH( + MSG_RUNAHEAD_CORE_DOES_NOT_SUPPORT_SAVESTATES, + "RunAhead has been disabled because this core does not support save states." + ) +MSG_HASH( + MSG_RUNAHEAD_FAILED_TO_SAVE_STATE, + "Failed to save state. RunAhead has been disabled." + ) +MSG_HASH( + MSG_RUNAHEAD_FAILED_TO_LOAD_STATE, + "Failed to load state. RunAhead has been disabled." + ) +MSG_HASH( + MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE, + "Failed to create second instance. RunAhead will now use only one instance." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, + "Automatically add content to playlist" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUTOMATICALLY_ADD_CONTENT_TO_PLAYLIST, + "Automatically scans loaded content so they appear inside playlists." + ) +MSG_HASH( + MSG_SCANNING_OF_FILE_FINISHED, + "Scanning of file finished" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_OPACITY, + "Διαφάνεια Παραθύρου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_QUALITY, + "Ποιότητα Επαναδειγματολήπτη Ήχου" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_RESAMPLER_QUALITY, + "Ελαττώστε αυτή την τιμή για καλύτερη επίδοση/χαμηλότερη καθυστέρηση αντί ποιότητας ήχου, αυξήστε εάν θέλετε καλύτερη ποιότητα με κόστος στην επίδοση/χαμηλότερη καθυστέρηση." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHADER_WATCH_FOR_CHANGES, + "Watch shader files for changes" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHADER_WATCH_FOR_CHANGES, + "Auto-apply changes made to shader files on disk." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SHOW_DECORATIONS, + "Εμφάνιση Διακοσμητικών Παραθύρου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STATISTICS_SHOW, + "Εμφάνιση Στατιστικών" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_STATISTICS_SHOW, + "Εμφάνιση τεχνικών στατιστικών στην οθόνη." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_RGUI_BORDER_FILLER_ENABLE, + "Enable border filler" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_RGUI_BORDER_FILLER_THICKNESS_ENABLE, + "Enable border filler thickness" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_RGUI_BACKGROUND_FILLER_THICKNESS_ENABLE, + "Enable background filler thickness" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION, + "Για οθόνες CRT μόνο. Προσπαθεί να χρησιμοποιήσει την ακριβή ανάλυση πυρήνα/παιχνιδιού και ρυθμού ανανέωσης." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION, + "CRT SwitchRes" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_SUPER, + "Switch among native and ultrawide super resolutions." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_SUPER, + "Σούπερ Ανάλυση CRT" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_REWIND, + "Προβολή Ρυθμίσεων Επιστροφής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_REWIND, + "Εμφάνιση/απόκρυψη επιλογών Επιστροφής." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_LATENCY, + "Εμφάνιση/απόκρυψη επιλογών Καθυστέρησης." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_LATENCY, + "Προβολή Ρυθμίσεων Καθυστέρησης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_OVERLAYS, + "Εμφάνιση/απόκρυψη επιλογών Επικαλλυμάτων." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_OVERLAYS, + "Προβολή Ρυθμίσεων Επικαλλυμάτων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE_MENU, + "Ενεργοποίηση ήχου μενού" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_ENABLE_MENU, + "Ενεργοποίηση ή απενεργοποίηση ήχου μενού." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS, + "Ρυθμίσεις Μίκτη" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS, + "Εμφάνιση και/ή επεξεργασία ρυθμίσεων μίκτη." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_INFO, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_FILE, + "&File" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_LOAD_CORE, + "&Load Core..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_UNLOAD_CORE, + "&Unload Core" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_FILE_EXIT, + "E&xit" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT, + "&Edit" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_EDIT_SEARCH, + "&Search" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW, + "&View" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_CLOSED_DOCKS, + "Closed Docks" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_SHADER_PARAMS, + "Shader Parameters" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS, + "&Options..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_DOCK_POSITIONS, + "Remember dock positions:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_GEOMETRY, + "Remember window geometry:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SAVE_LAST_TAB, + "Remember last content browser tab:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME, + "Θέμα:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_SYSTEM_DEFAULT, + "" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_DARK, + "Σκούρο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_THEME_CUSTOM, + "Custom..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_TITLE, + "Επιλογές" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_TOOLS, + "&Tools" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_HELP, + "&Help" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_ABOUT, + "Σχετικά με το RetroArch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_DOCUMENTATION, + "Εγχειρίδιο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_LOAD_CUSTOM_CORE, + "Load Custom Core..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_LOAD_CORE, + "Φόρτωση Πυρήνα΄" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_LOADING_CORE, + "Φόρτωση Πυρήνα..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_NAME, + "Όνομα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CORE_VERSION, + "Έκδοση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_TAB_PLAYLISTS, + "Λίστες Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER, + "File Browser" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER_TOP, + "Top" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_TAB_FILE_BROWSER_UP, + "Up" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_DOCK_CONTENT_BROWSER, + "Content Browser" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_BOXART, + "Boxart" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_SCREENSHOT, + "Screenshot" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_TITLE_SCREEN, + "Title Screen" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ALL_PLAYLISTS, + "All Playlists" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CORE, + "Core" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CORE_INFO, + "Core Info" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CORE_SELECTION_ASK, + "" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_INFORMATION, + "Information" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_WARNING, + "Warning" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ERROR, + "Error" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_NETWORK_ERROR, + "Network Error" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_RESTART_TO_TAKE_EFFECT, + "Please restart the program for the changes to take effect." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_LOG, + "Log" + ) +#ifdef HAVE_QT +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SCAN_FINISHED, + "Scan Finished.

    \n" + "In order for content to be correctly scanned, you must:\n" + "
    • have a compatible core already downloaded
    • \n" + "
    • have \"Core Info Files\" updated via Online Updater
    • \n" + "
    • have \"Databases\" updated via Online Updater
    • \n" + "
    • restart RetroArch if any of the above was just done
    \n" + "Finally, the content must match existing databases from here. If it is still not working, consider submitting a bug report." + ) +#endif +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SHOW_WIMP, + "Εμφάνιση Μενού Επιφάνεις Εργασίας" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_SHOW_WIMP, + "Opens the desktop menu if closed." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DONT_SHOW_AGAIN, + "Don't show this again" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_STOP, + "Στοπ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ASSOCIATE_CORE, + "Associate Core" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_HIDDEN_PLAYLISTS, + "Hidden Playlists" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_HIDE, + "Hide" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_HIGHLIGHT_COLOR, + "Highlight color:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CHOOSE, + "&Choose..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SELECT_COLOR, + "Select Color" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SELECT_THEME, + "Select Theme" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CUSTOM_THEME, + "Custom Theme" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FILE_PATH_IS_BLANK, + "File path is blank." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FILE_IS_EMPTY, + "File is empty." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FILE_READ_OPEN_FAILED, + "Could not open file for reading." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FILE_WRITE_OPEN_FAILED, + "Could not open file for writing." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FILE_DOES_NOT_EXIST, + "File does not exist." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SUGGEST_LOADED_CORE_FIRST, + "Suggest loaded core first:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ZOOM, + "Zoom" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_VIEW, + "View" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_VIEW_TYPE_ICONS, + "Icons" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_VIEW_TYPE_LIST, + "List" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS, + "Overrides" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_OVERRIDE_OPTIONS, + "Options for overriding the global configuration." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY, + "Will start playback of the audio stream. Once finished, it will remove the current audio stream from memory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_LOOPED, + "Will start playback of the audio stream. Once finished, it will loop and play the track again from the beginning." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY_SEQUENTIAL, + "Will start playback of the audio stream. Once finished, it will jump to the next audio stream in sequential order and repeat this behavior. Useful as an album playback mode." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP, + "This will stop playback of the audio stream, but not remove it from memory. You can start playing it again by selecting 'Play'." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE, + "This will stop playback of the audio stream and remove it entirely from memory." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME, + "Adjust the volume of the audio stream." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ADD_TO_MIXER, + "Add this audio track to an available audio stream slot. If no slots are currently available, it will be ignored." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY, + "Add this audio track to an available audio stream slot and play it. If no slots are currently available, it will be ignored." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY, + "Αναπαραγωγή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED, + "Αναπαραγωγή (Looped)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL, + "Αναπαραγωγή (Sequential)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP, + "Στοπ" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE, + "Κατάργηση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME, + "Ένταση" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE, + "Τρέχων πυρήνας" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_SEARCH_CLEAR, + "Clear" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACHIEVEMENT_PAUSE, + "Pause achievements for current session (This action will enable savestates, cheats, rewind, pause, and slow-motion)." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ACHIEVEMENT_RESUME, + "Resume achievements for current session (This action will disable savestates, cheats, rewind, pause, and slow-motion and reset the current game)." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_IN_MENU, + "In-Menu" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_IN_GAME, + "In-Game" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_IN_GAME_PAUSED, + "In-Game (Paused)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_STATUS_PLAYING, + "Playing" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_STATUS_PAUSED, + "Paused" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_DISCORD_ALLOW, + "Ενεργοποίηση Discord Rich Presence" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_DISCORD_ALLOW, + "Ενεργοποίηση ή απενεργοποίηση υποστήριξης Discord Rich Presence.\n" + "ΣΗΜΕΙΩΣΗ: Δεν θα δουλέψει με την έκδοση του περιηγητή, μόνο με την τοπικά εγκατεστημένη." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIDI_INPUT, + "Είσοδος" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIDI_INPUT, + "Επιλογή συσκευής εισόδου." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIDI_OUTPUT, + "Έξοδος" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIDI_OUTPUT, + "Επιλογή συσκευής εξόδου." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MIDI_VOLUME, + "Ένταση" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_MIDI_VOLUME, + "Ορισμός έντασης εξόδου (%)." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_POWER_MANAGEMENT_SETTINGS, + "Διαχείριση Ενέργειας" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_POWER_MANAGEMENT_SETTINGS, + "Αλλαγή ρυθμίσεων διαχείρισης ενέργειας." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SUSTAINED_PERFORMANCE_MODE, + "Κατάσταση Συνεχούς Επίδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_MPV_SUPPORT, + "Υποστήριξη mpv" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_IDX, + "Index" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_MATCH_IDX, + "View Match #" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_MATCH, + "Match Address: %08X Mask: %02X" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_COPY_MATCH, + "Create Code Match #" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DELETE_MATCH, + "Delete Match #" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_BROWSE_MEMORY, + "Browse Address: %08X" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DESC, + "Πληροφορίες" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_STATE, + "Ενεργοποιημένο" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_CODE, + "Κωδικός" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_HANDLER, + "Handler" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_MEMORY_SEARCH_SIZE, + "Memory Search Size" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_TYPE, + "Τύπος" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_VALUE, + "Τιμή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADDRESS, + "Memory Address" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADDRESS_BIT_POSITION, + "Memory Address Mask" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_TYPE, + "Rumble When Memory" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_VALUE, + "Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_PORT, + "Rumble Port" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_PRIMARY_STRENGTH, + "Rumble Primary Strength" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_PRIMARY_DURATION, + "Rumble Primary Duration (ms)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_SECONDARY_STRENGTH, + "Rumble Secondary Strength" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RUMBLE_SECONDARY_DURATION, + "Rumble Secondary Duration (ms)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_COUNT, + "Number of Iterations" +) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_ADD_TO_VALUE, + "Value Increase Each Iteration" +) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_REPEAT_ADD_TO_ADDRESS, + "Address Increase Each Iteration" +) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_AFTER, + "Add New Cheat After This One" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_BEFORE, + "Add New Cheat Before This One" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_COPY_AFTER, + "Copy This Cheat After" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_COPY_BEFORE, + "Copy This Cheat Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DELETE, + "Delete This Cheat" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_HANDLER_TYPE_EMU, + "Emulator" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_HANDLER_TYPE_RETRO, + "RetroArch" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_DISABLED, + "" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_SET_TO_VALUE, + "Set To Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_INCREASE_VALUE, + "Increase By Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_DECREASE_VALUE, + "Decrease By Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_EQ, + "Run next cheat if value = memory" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_NEQ, + "Run next cheat if value != memory" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_LT, + "Run next cheat if value < memory" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_TYPE_RUN_NEXT_IF_GT, + "Run next cheat if value > memory" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_DISABLED, + "" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_CHANGES, + "Changes" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_DOES_NOT_CHANGE, + "Does Not Change" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_INCREASE, + "Increases" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_DECREASE, + "Decreases" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_EQ_VALUE, + "= Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_NEQ_VALUE, + "!= Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_LT_VALUE, + "< Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_GT_VALUE, + "> Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_INCREASE_BY_VALUE, + "Increases by Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_TYPE_DECREASE_BY_VALUE, + "Decreases by Rumble Value" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_1, + "1-bit, max value = 0x01" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_2, + "2-bit, max value = 0x03" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_4, + "4-bit, max value = 0x0F" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_8, + "8-bit, max value = 0xFF" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_16, + "16-bit, max value = 0xFFFF" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_MEMORY_SIZE_32, + "32-bit, max value = 0xFFFFFFFF" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_0, + "1" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_1, + "2" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_2, + "3" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_3, + "4" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_4, + "5" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_5, + "6" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_6, + "7" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_7, + "8" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_8, + "9" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_9, + "10" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_10, + "11" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_11, + "12" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_12, + "13" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_13, + "14" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_14, + "15" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_15, + "16" + ) +MSG_HASH( + MENU_ENUM_LABEL_RUMBLE_PORT_16, + "All" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_START_OR_CONT, + "Start or Continue Cheat Search" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_START_OR_RESTART, + "Start or Restart Cheat Search" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EXACT, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_LT, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_GT, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EQ, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_GTE, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_LTE, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_NEQ, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EQPLUS, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_SEARCH_EQMINUS, + "Search Memory For Values" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADD_MATCHES, + "Add the %u Matches to Your List" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_VIEW_MATCHES, + "View the List of %u Matches" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_CREATE_OPTION, + "Create Code From This Match" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DELETE_OPTION, + "Delete This Match" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_TOP, + "Add New Code to Top" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_BOTTOM, + "Add New Code to Bottom" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_DELETE_ALL, + "Delete All Codes" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_RELOAD_CHEATS, + "Reload Game-Specific Cheats" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_EXACT_VAL, + "Equal to %u (%X)" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_LT_VAL, + "Less Than Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_GT_VAL, + "Greater Than Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_LTE_VAL, + "Less Than or Equal To Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_GTE_VAL, + "Greater Than or Equal To Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_EQ_VAL, + "Equal to Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_NEQ_VAL, + "Not Equal to Before" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_EQPLUS_VAL, + "Equal to Before+%u (%X)" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_EQMINUS_VAL, + "Equal to Before-%u (%X)" + ) +MSG_HASH( + MENU_ENUM_LABEL_CHEAT_SEARCH_SETTINGS, + "Start or Continue Cheat Search" + ) +MSG_HASH( + MSG_CHEAT_INIT_SUCCESS, + "Successfully started cheat search" + ) +MSG_HASH( + MSG_CHEAT_INIT_FAIL, + "Failed to start cheat search" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_NOT_INITIALIZED, + "Searching has not been initialized/started" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_FOUND_MATCHES, + "New match count = %u" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CHEAT_BIG_ENDIAN, + "Big Endian" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_ADDED_MATCHES_SUCCESS, + "Added %u matches" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL, + "Failed to add matches" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS, + "Created code from match" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_ADD_MATCH_FAIL, + "Failed to create code" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS, + "Deleted match" + ) +MSG_HASH( + MSG_CHEAT_SEARCH_ADDED_MATCHES_TOO_MANY, + "Not enough room. The total number of cheats you can have is 100." + ) +MSG_HASH( + MSG_CHEAT_ADD_TOP_SUCCESS, + "New cheat added to top of list." + ) +MSG_HASH( + MSG_CHEAT_ADD_BOTTOM_SUCCESS, + "New cheat added to bottom of list." + ) +MSG_HASH( + MSG_CHEAT_DELETE_ALL_INSTRUCTIONS, + "Press right five times to delete all cheats." + ) +MSG_HASH( + MSG_CHEAT_DELETE_ALL_SUCCESS, + "All cheats deleted." + ) +MSG_HASH( + MSG_CHEAT_ADD_BEFORE_SUCCESS, + "New cheat added before this one." + ) +MSG_HASH( + MSG_CHEAT_ADD_AFTER_SUCCESS, + "New cheat added after this one." + ) +MSG_HASH( + MSG_CHEAT_COPY_BEFORE_SUCCESS, + "Cheat copied before this one." + ) +MSG_HASH( + MSG_CHEAT_COPY_AFTER_SUCCESS, + "Cheat copied after this one." + ) +MSG_HASH( + MSG_CHEAT_DELETE_SUCCESS, + "Cheat deleted." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PROGRESS, + "Progress:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_ALL_PLAYLISTS_LIST_MAX_COUNT, + "\"All Playlists\" max list entries:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_ALL_PLAYLISTS_GRID_MAX_COUNT, + "\"All Playlists\" max grid entries:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_SHOW_HIDDEN_FILES, + "Εμφάνιση κρυφών αρχείων και φακέλων:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_NEW_PLAYLIST, + "Νέα Λίστα Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ENTER_NEW_PLAYLIST_NAME, + "Please enter the new playlist name:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DELETE_PLAYLIST, + "Διαγραφή Λίστας Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_RENAME_PLAYLIST, + "Μετονομασία Λίστας Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CONFIRM_DELETE_PLAYLIST, + "Are you sure you want to delete the playlist \"%1\"?" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_QUESTION, + "Question" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_DELETE_FILE, + "Could not delete file." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_RENAME_FILE, + "Could not rename file." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_GATHERING_LIST_OF_FILES, + "Gathering list of files..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ADDING_FILES_TO_PLAYLIST, + "Adding files to playlist..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY, + "Playlist Entry" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_NAME, + "Όνομα:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_PATH, + "Path:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_CORE, + "Πυρήνας:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_DATABASE, + "Database:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_EXTENSIONS, + "Extensions:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_EXTENSIONS_PLACEHOLDER, + "(space-separated; includes all by default)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLAYLIST_ENTRY_FILTER_INSIDE_ARCHIVES, + "Filter inside archives" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FOR_THUMBNAILS, + "(used to find thumbnails)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CONFIRM_DELETE_PLAYLIST_ITEM, + "Are you sure you want to delete the item \"%1\"?" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CANNOT_ADD_TO_ALL_PLAYLISTS, + "Please choose a single playlist first." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DELETE, + "Delete" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ADD_ENTRY, + "Add Entry..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ADD_FILES, + "Add File(s)..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_ADD_FOLDER, + "Add Folder..." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_EDIT, + "Edit" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SELECT_FILES, + "Select Files" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SELECT_FOLDER, + "Select Folder" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_FIELD_MULTIPLE, + "" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_UPDATE_PLAYLIST_ENTRY, + "Error updating playlist entry." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_PLEASE_FILL_OUT_REQUIRED_FIELDS, + "Please fill out all required fields." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_NIGHTLY, + "Update RetroArch (nightly)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_FINISHED, + "RetroArch updated successfully. Please restart the application for the changes to take effect." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_UPDATE_RETROARCH_FAILED, + "Update failed." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_HELP_ABOUT_CONTRIBUTORS, + "Contributors" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CURRENT_SHADER, + "Current shader" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MOVE_DOWN, + "Move Down" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MOVE_UP, + "Move Up" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_LOAD, + "Load" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SAVE, + "Save" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_REMOVE, + "Remove" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_APPLY, + "Apply" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SHADER_ADD_PASS, + "Add Pass" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SHADER_CLEAR_ALL_PASSES, + "Clear All Passes" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_SHADER_NO_PASSES, + "No shader passes." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_RESET_PASS, + "Reset Pass" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_RESET_ALL_PASSES, + "Reset All Passes" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_RESET_PARAMETER, + "Reset Parameter" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_THUMBNAIL, + "Download thumbnail" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALREADY_IN_PROGRESS, + "A download is already in progress." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_MENU_VIEW_OPTIONS_STARTUP_PLAYLIST, + "Start on playlist:" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALL_THUMBNAILS, + "Λήψη Όλων των Σκίτσων" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALL_THUMBNAILS_ENTIRE_SYSTEM, + "Όλο το Σύστημα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_ALL_THUMBNAILS_THIS_PLAYLIST, + "Αυτή η Λίστα Αναπαραγωγής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_THUMBNAIL_PACK_DOWNLOADED_SUCCESSFULLY, + "Επιτυχής λήψη σκίτσων." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_DOWNLOAD_PLAYLIST_THUMBNAIL_PROGRESS, + "Πέτυχαν: %1 Απέτυχαν: %2" + ) +MSG_HASH( + MSG_DEVICE_CONFIGURED_IN_PORT, + "Διαμορφώθηκε στην θύρα:" + ) +MSG_HASH( + MSG_FAILED_TO_SET_DISK, + "Αποτυχία ορισμού δίσκου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QT_CORE_OPTIONS, + "Επιλογές Πυρήνα" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ADAPTIVE_VSYNC, + "Προσαρμοστικό Vsync" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_ADAPTIVE_VSYNC, + "Το V-Sync είναι ενεργοποιημένο μέχρι η επίδοση να πέσει κάτω από τον στόχο ρυθμού ανανέωσης. Μπορεί να μειώσει τα κολλήματα όταν η επίδοση πέφτει χαμηλότερα από τον κανονικό χρόνο και μπορεί να είναι πιο αποδοτικό ενεργειακά." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCHRES_SETTINGS, + "CRT SwitchRes" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCHRES_SETTINGS, + "Εξαγωγή ντόπιων, χαμηλής ανάλυσης σημάτων για χρήση με οθόνες CRT." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCH_X_AXIS_CENTERING, + "Εναλλάξτε μεταξύ αυτών των επιλογών εάν η εικόνα δεν είναι σωστά κεντραρισμένη στην οθόνη." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_X_AXIS_CENTERING, + "Κεντράρισμα Άξωνα Χ" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, + "Χρήση προσαρμοσμένου ρυθμού ανανέωσης προσδιορισμένου στο αρχείο διαμόρφωσης εάν χρειάζεται." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, + "Χρήση Προσαρμοσμένου Ρυθμού Ανανέωσης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, + "Επιλέξτε την θύρα εξόδου που είναι συνδεδεμένη με την οθόνη CRT." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_OUTPUT_DISPLAY_ID, + "ID Οθόνης Εξόδου" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_RECORDING, + "Έναρξη Εγγραφής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_START_RECORDING, + "Ξεκινάει την εγγραφή." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_STOP_RECORDING, + "Τέλος Εγγραφής" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_RECORDING, + "Σταματάει την εγγραφή." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_START_STREAMING, + "Έναρξη Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_START_STREAMING, + "Ξεκινάει την απευθείας μετάδοση." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_QUICK_MENU_STOP_STREAMING, + "Τέλος Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_QUICK_MENU_STOP_STREAMING, + "Σταματάει την απευθείας μετάδοση." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_RECORDING_TOGGLE, + "Εγγραφή" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_META_STREAMING_TOGGLE, + "Απευθείας Μετάδοση" + ) +MSG_HASH( + MSG_CHEEVOS_HARDCORE_MODE_DISABLED, + "A savestate was loaded, Achievements Hardcore Mode disabled for the current session. Restart to enable hardcore mode." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_RECORD_QUALITY, + "Ποιότητα Εγγραφής" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_STREAM_QUALITY, + "Ποιότητα Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STREAMING_URL, + "Σύνδεσμος Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_UDP_STREAM_PORT, + "Θύρα UDP Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_TWITCH, + "Twitch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ACCOUNTS_YOUTUBE, + "YouTube" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_TWITCH_STREAM_KEY, + "Κλειδί Απευθείας Μετάδοσης Twitch" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_YOUTUBE_STREAM_KEY, + "Κλειδί Απευθείας Μετάδοσης YouTube" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STREAMING_MODE, + "Μέσο Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_STREAMING_TITLE, + "Τίτλος Απευθείας Μετάδοσης" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_SPLIT_JOYCON, + "Χωριστά Joy-Con" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESET_TO_DEFAULT_CONFIG, + "Επαναφορά Προεπιλογών" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_RESET_TO_DEFAULT_CONFIG, + "Επαναφορά της τρέχουσας διαμόρφωσης στις προεπιλεγμένες ρυθμίσεις." + ) + +MSG_HASH( + MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK, + "OK" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, + "Χρώμα Θέματος Μενού" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, + "Basic White" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, + "Basic Black" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, + "Select a different color theme." + ) +MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use preferred system color theme") +MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, + "Use your operating system's default color theme (if one is set).") From c9a5156e5d32c1580399cbcbdb6aa0ec7b04f1a6 Mon Sep 17 00:00:00 2001 From: natinusala Date: Sat, 27 Oct 2018 19:19:52 +0200 Subject: [PATCH 129/304] ozone: fix on the fly theme setting --- intl/msg_hash_ar.h | 2 +- intl/msg_hash_chs.h | 2 +- intl/msg_hash_cht.h | 2 +- intl/msg_hash_de.h | 2 +- intl/msg_hash_el.h | 2 +- intl/msg_hash_eo.h | 2 +- intl/msg_hash_es.h | 2 +- intl/msg_hash_fr.h | 2 +- intl/msg_hash_it.h | 2 +- intl/msg_hash_ja.h | 2 +- intl/msg_hash_ko.h | 2 +- intl/msg_hash_nl.h | 2 +- intl/msg_hash_pl.h | 2 +- intl/msg_hash_pt_br.h | 2 +- intl/msg_hash_pt_pt.h | 2 +- intl/msg_hash_ru.h | 2 +- intl/msg_hash_us.h | 2 +- intl/msg_hash_vn.h | 2 +- menu/drivers/ozone.c | 98 +++++++++++++++++++++++++++++++++---------- 19 files changed, 93 insertions(+), 41 deletions(-) diff --git a/intl/msg_hash_ar.h b/intl/msg_hash_ar.h index 04343e17f2..8b2c710329 100644 --- a/intl/msg_hash_ar.h +++ b/intl/msg_hash_ar.h @@ -3695,4 +3695,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_chs.h b/intl/msg_hash_chs.h index ba01b8d8fc..a02caeeaa6 100644 --- a/intl/msg_hash_chs.h +++ b/intl/msg_hash_chs.h @@ -4714,4 +4714,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_cht.h b/intl/msg_hash_cht.h index b7b82260ce..1fb9e5dba5 100644 --- a/intl/msg_hash_cht.h +++ b/intl/msg_hash_cht.h @@ -3471,4 +3471,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_de.h b/intl/msg_hash_de.h index 3c7745ff02..2637884ab6 100644 --- a/intl/msg_hash_de.h +++ b/intl/msg_hash_de.h @@ -3607,4 +3607,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h index ede7afaa57..d6277e1154 100644 --- a/intl/msg_hash_el.h +++ b/intl/msg_hash_el.h @@ -7699,4 +7699,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_eo.h b/intl/msg_hash_eo.h index efe536b4ae..e2f0ebe25b 100644 --- a/intl/msg_hash_eo.h +++ b/intl/msg_hash_eo.h @@ -3346,4 +3346,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index 3b76bc16d4..0dc0ecaff4 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -7636,4 +7636,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index a5725ffe38..748d6aee42 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -3505,4 +3505,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_it.h b/intl/msg_hash_it.h index ef28f825b8..028ca74cc1 100644 --- a/intl/msg_hash_it.h +++ b/intl/msg_hash_it.h @@ -3565,4 +3565,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index 11abb76f1a..49e80b63d2 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -4014,4 +4014,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index 0ca5f38017..0cae872621 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -3466,4 +3466,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index 117ed1478a..94093064a7 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -3352,4 +3352,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index ce60cab76a..1a278f4484 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -3768,4 +3768,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index 29df5966e6..41fe5e2788 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -7730,4 +7730,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_pt_pt.h b/intl/msg_hash_pt_pt.h index 82959c4f57..68626e9a45 100644 --- a/intl/msg_hash_pt_pt.h +++ b/intl/msg_hash_pt_pt.h @@ -3432,4 +3432,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_ru.h b/intl/msg_hash_ru.h index 8df4fd9f6e..36145db042 100644 --- a/intl/msg_hash_ru.h +++ b/intl/msg_hash_ru.h @@ -3635,4 +3635,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 98f684f272..9189992a5b 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -7730,4 +7730,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/intl/msg_hash_vn.h b/intl/msg_hash_vn.h index 7546e1f6a4..6f4a5c5cf3 100644 --- a/intl/msg_hash_vn.h +++ b/intl/msg_hash_vn.h @@ -3505,4 +3505,4 @@ MSG_HASH( MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's default color theme (if one is set).") + "Use your operating system's color theme (if any) - overrides theme settings.") diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index 52366b3214..5cfd2a35a1 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -422,8 +422,9 @@ ozone_theme_t ozone_theme_dark = { "dark" }; -static unsigned last_color_theme = 0; -static ozone_theme_t *ozone_default_theme = &ozone_theme_light; +static unsigned last_color_theme = 0; +static bool last_use_preferred_system_color_theme = false; +static ozone_theme_t *ozone_default_theme = &ozone_theme_light; typedef struct ozone_handle { @@ -1106,6 +1107,40 @@ static void ozone_draw_text( 1.0); } +static void ozone_set_theme_path(ozone_handle_t *ozone) +{ + fill_pathname_join( + ozone->theme_path, + ozone->png_path, + ozone->theme->name, + sizeof(ozone->theme_path) + ); +} + +static void ozone_unload_theme_textures(ozone_handle_t *ozone) +{ + int i; + + for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) + video_driver_texture_unload(&ozone->theme_textures[i]); +} + +static void ozone_reset_theme_textures(ozone_handle_t *ozone) +{ + int i; + + ozone_set_theme_path(ozone); + + for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) + { + char filename[PATH_MAX_LENGTH]; + strlcpy(filename, OZONE_THEME_TEXTURES_FILES[i], sizeof(filename)); + strlcat(filename, ".png", sizeof(filename)); + + menu_display_reset_textures_list(filename, ozone->theme_path, &ozone->theme_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); + } +} + static void ozone_set_color_theme(ozone_handle_t *ozone, unsigned color_theme) { ozone_theme_t *theme = ozone_default_theme; @@ -1130,6 +1165,9 @@ static void ozone_set_color_theme(ozone_handle_t *ozone, unsigned color_theme) memcpy(ozone->theme_dynamic.entries_border, ozone->theme->entries_border, sizeof(ozone->theme_dynamic.entries_border)); memcpy(ozone->theme_dynamic.entries_icon, ozone->theme->entries_icon, sizeof(ozone->theme_dynamic.entries_icon)); + ozone_unload_theme_textures(ozone); + ozone_reset_theme_textures(ozone); + last_color_theme = color_theme; } @@ -1202,6 +1240,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded) setsysGetColorSetId(&theme); color_theme = (theme == ColorSetId_Dark) ? 1 : 0; ozone_set_color_theme(ozone, color_theme); + settings->uints.menu_ozone_color_theme = color_theme; settings->bools.menu_preferred_system_color_theme_set = true; setsysExit(); } @@ -1253,13 +1292,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded) sizeof(ozone->tab_path) ); - /* Theme path */ - fill_pathname_join( - ozone->theme_path, - ozone->png_path, - ozone->theme->name, - sizeof(ozone->theme_path) - ); + last_use_preferred_system_color_theme = settings->bools.menu_use_preferred_system_color_theme; return menu; @@ -1361,14 +1394,7 @@ static void ozone_context_reset(void *data, bool is_threaded) } /* Theme textures */ - for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) - { - char filename[PATH_MAX_LENGTH]; - strlcpy(filename, OZONE_THEME_TEXTURES_FILES[i], sizeof(filename)); - strlcat(filename, ".png", sizeof(filename)); - - menu_display_reset_textures_list(filename, ozone->theme_path, &ozone->theme_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); - } + ozone_reset_theme_textures(ozone); /* Icons textures init */ for (i = 0; i < OZONE_ENTRIES_ICONS_TEXTURE_LAST; i++) @@ -1407,8 +1433,7 @@ static void ozone_context_destroy(void *data) return; /* Theme */ - for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) - video_driver_texture_unload(&ozone->theme_textures[i]); + ozone_unload_theme_textures(ozone); /* Icons */ for (i = 0; i < OZONE_ENTRIES_ICONS_TEXTURE_LAST; i++) @@ -2414,6 +2439,23 @@ static void ozone_navigation_alphabet(void *data, size_t *unused) ozone_selection_changed(ozone, true); } +static unsigned ozone_get_system_theme() +{ + unsigned ret = 0; +#ifdef HAVE_LIBNX + if (R_SUCCEEDED(setsysInitialize())) + { + ColorSetId theme; + setsysGetColorSetId(&theme); + ret = (theme == ColorSetId_Dark) ? 1 : 0; + setsysExit(); + } + + return ret; +#endif + return 0; +} + static void ozone_frame(void *data, video_frame_info_t *video_info) { menu_display_ctx_clearcolor_t clearcolor; @@ -2424,14 +2466,25 @@ static void ozone_frame(void *data, video_frame_info_t *video_info) if (!ozone) return; - if (color_theme != last_color_theme) - ozone_set_color_theme(ozone, color_theme); + /* Change theme on the fly */ + if (color_theme != last_color_theme || last_use_preferred_system_color_theme != settings->bools.menu_use_preferred_system_color_theme) + { + if (!settings->bools.menu_use_preferred_system_color_theme) + ozone_set_color_theme(ozone, color_theme); + else + { + video_info->ozone_color_theme = ozone_get_system_theme(); + ozone_set_color_theme(ozone, video_info->ozone_color_theme); + } + + last_use_preferred_system_color_theme = settings->bools.menu_use_preferred_system_color_theme; + } ozone->frame_count++; menu_display_set_viewport(video_info->width, video_info->height); - /* Clear first layer of text */ + /* Clear text */ font_driver_bind_block(ozone->fonts.footer, &ozone->raster_blocks.footer); font_driver_bind_block(ozone->fonts.title, &ozone->raster_blocks.title); font_driver_bind_block(ozone->fonts.time, &ozone->raster_blocks.time); @@ -2447,7 +2500,6 @@ static void ozone_frame(void *data, video_frame_info_t *video_info) ozone->raster_blocks.sidebar.carr.coords.vertices = 0; /* Background */ - clearcolor.r = ozone->theme->background_r; clearcolor.g = ozone->theme->background_g; clearcolor.b = ozone->theme->background_b; From efb71fc38ef1bd64b1441240d2bea7233cd511b7 Mon Sep 17 00:00:00 2001 From: M4xw Date: Sat, 27 Oct 2018 19:27:24 +0200 Subject: [PATCH 130/304] [LIBNX] Initialize HID anyway, might fix randomly having no controls --- input/drivers/switch_input.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/input/drivers/switch_input.c b/input/drivers/switch_input.c index 0176ed63bc..2c48642b2e 100644 --- a/input/drivers/switch_input.c +++ b/input/drivers/switch_input.c @@ -137,6 +137,10 @@ static void switch_input_free_input(void *data) sw->joypad->destroy(); free(sw); + +#ifdef HAVE_LIBNX + hidExit(); +#endif } static void* switch_input_init(const char *joypad_driver) @@ -145,6 +149,10 @@ static void* switch_input_init(const char *joypad_driver) if (!sw) return NULL; +#ifdef HAVE_LIBNX + hidInitialize(); +#endif + sw->joypad = input_joypad_init_driver(joypad_driver, sw); #ifdef HAVE_LIBNX From 67ed8d3986e3de505e8d0ff473147df5d30e9730 Mon Sep 17 00:00:00 2001 From: natinusala Date: Sat, 27 Oct 2018 19:24:19 +0200 Subject: [PATCH 131/304] ozone: fix entries centering --- menu/drivers/ozone.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index 5cfd2a35a1..ef945c1b9c 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -1120,7 +1120,7 @@ static void ozone_set_theme_path(ozone_handle_t *ozone) static void ozone_unload_theme_textures(ozone_handle_t *ozone) { int i; - + for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) video_driver_texture_unload(&ozone->theme_textures[i]); } @@ -2241,7 +2241,7 @@ static void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_ size_t i, y, entries_end; float sidebar_offset, bottom_boundary, invert, alpha_anim; unsigned video_info_height, entry_width; - int x_offset = 0; + int x_offset = 22; size_t selection_y = 0; size_t old_selection_y = 0; @@ -2265,9 +2265,9 @@ static void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_ if (alpha != 1.0f) { if (old_list) - x_offset = invert * -(alpha_anim * 120); /* left */ + x_offset += invert * -(alpha_anim * 120); /* left */ else - x_offset = invert * (alpha_anim * 120); /* right */ + x_offset += invert * (alpha_anim * 120); /* right */ } x_offset += (int) sidebar_offset; From 7d058e61b55aed3056e15e4303e0fb94d616a4cb Mon Sep 17 00:00:00 2001 From: natinusala Date: Sat, 27 Oct 2018 23:08:20 +0200 Subject: [PATCH 132/304] ozone: load textures for every theme (#7498 workaround) --- menu/drivers/ozone.c | 73 ++++++++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 29 deletions(-) diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index ef945c1b9c..63a001895c 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -375,6 +375,8 @@ typedef struct ozone_theme float *sidebar_top_gradient; float *sidebar_bottom_gradient; + menu_texture_item textures[OZONE_THEME_TEXTURE_LAST]; + const char *name; } ozone_theme_t; @@ -397,6 +399,8 @@ ozone_theme_t ozone_theme_light = { ozone_sidebar_gradient_top_light, ozone_sidebar_gradient_bottom_light, + {0}, + "light" }; @@ -419,9 +423,17 @@ ozone_theme_t ozone_theme_dark = { ozone_sidebar_gradient_top_dark, ozone_sidebar_gradient_bottom_dark, + {0}, + "dark" }; +ozone_theme_t *ozone_themes[] = { + &ozone_theme_light, + &ozone_theme_dark +}; + +static unsigned ozone_themes_count = sizeof(ozone_themes) / sizeof(ozone_themes[0]); static unsigned last_color_theme = 0; static bool last_use_preferred_system_color_theme = false; static ozone_theme_t *ozone_default_theme = &ozone_theme_light; @@ -451,7 +463,6 @@ typedef struct ozone_handle } raster_blocks; menu_texture_item textures[OZONE_THEME_TEXTURE_LAST]; - menu_texture_item theme_textures[OZONE_THEME_TEXTURE_LAST]; menu_texture_item icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_LAST]; menu_texture_item tab_textures[OZONE_TAB_TEXTURE_LAST]; @@ -461,7 +472,6 @@ typedef struct ozone_handle char png_path[PATH_MAX_LENGTH]; char icons_path[PATH_MAX_LENGTH]; char tab_path[PATH_MAX_LENGTH]; - char theme_path[PATH_MAX_LENGTH]; uint8_t system_tab_end; uint8_t tabs[OZONE_SYSTEM_TAB_LAST]; @@ -1107,38 +1117,46 @@ static void ozone_draw_text( 1.0); } -static void ozone_set_theme_path(ozone_handle_t *ozone) -{ - fill_pathname_join( - ozone->theme_path, - ozone->png_path, - ozone->theme->name, - sizeof(ozone->theme_path) - ); -} - static void ozone_unload_theme_textures(ozone_handle_t *ozone) { int i; + int j; - for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) - video_driver_texture_unload(&ozone->theme_textures[i]); + for (j = 0; j < ozone_themes_count; j++) + { + ozone_theme_t *theme = ozone_themes[j]; + for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) + video_driver_texture_unload(&theme->textures[i]); + } } static void ozone_reset_theme_textures(ozone_handle_t *ozone) { int i; + int j; + char theme_path[255]; - ozone_set_theme_path(ozone); - - for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) + for (j = 0; j < ozone_themes_count; j++) { - char filename[PATH_MAX_LENGTH]; - strlcpy(filename, OZONE_THEME_TEXTURES_FILES[i], sizeof(filename)); - strlcat(filename, ".png", sizeof(filename)); + ozone_theme_t *theme = ozone_themes[j]; - menu_display_reset_textures_list(filename, ozone->theme_path, &ozone->theme_textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); + fill_pathname_join( + theme_path, + ozone->png_path, + theme->name, + sizeof(theme_path) + ); + + for (i = 0; i < OZONE_THEME_TEXTURE_LAST; i++) + { + char filename[PATH_MAX_LENGTH]; + strlcpy(filename, OZONE_THEME_TEXTURES_FILES[i], sizeof(filename)); + strlcat(filename, ".png", sizeof(filename)); + + menu_display_reset_textures_list(filename, theme_path, &theme->textures[i], TEXTURE_FILTER_MIPMAP_LINEAR); + } } + } static void ozone_set_color_theme(ozone_handle_t *ozone, unsigned color_theme) @@ -1165,9 +1183,6 @@ static void ozone_set_color_theme(ozone_handle_t *ozone, unsigned color_theme) memcpy(ozone->theme_dynamic.entries_border, ozone->theme->entries_border, sizeof(ozone->theme_dynamic.entries_border)); memcpy(ozone->theme_dynamic.entries_icon, ozone->theme->entries_icon, sizeof(ozone->theme_dynamic.entries_icon)); - ozone_unload_theme_textures(ozone); - ozone_reset_theme_textures(ozone); - last_color_theme = color_theme; } @@ -2037,7 +2052,7 @@ static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_i if (settings->bools.menu_core_enable && menu_entries_get_core_title(core_title, sizeof(core_title)) == 0) ozone_draw_text(video_info, ozone, core_title, 59, video_info->height - 49 + FONT_SIZE_FOOTER, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba); else - ozone_draw_icon(video_info, 69, 30, ozone->theme_textures[OZONE_THEME_TEXTURE_SWITCH], 59, video_info->height - 52, video_info->width,video_info->height, 0, 1, NULL); + ozone_draw_icon(video_info, 69, 30, ozone->theme->textures[OZONE_THEME_TEXTURE_SWITCH], 59, video_info->height - 52, video_info->width,video_info->height, 0, 1, NULL); /* Buttons */ @@ -2060,13 +2075,13 @@ static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_i if (do_swap) { - ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 133, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); - ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 251, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); + ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 133, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); + ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 251, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); } else { - ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 251, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); - ozone_draw_icon(video_info, 25, 25, ozone->theme_textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 133, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); + ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 251, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); + ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 133, video_info->height - 49, video_info->width,video_info->height, 0, 1, NULL); } menu_display_blend_end(video_info); From 32766f00179ccb0397471af573ecbd1400b26790 Mon Sep 17 00:00:00 2001 From: radius Date: Thu, 25 Oct 2018 18:00:32 -0500 Subject: [PATCH 133/304] [content] CRC calculation for needs_fullpath should be within else block --- tasks/task_content.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tasks/task_content.c b/tasks/task_content.c index c366ab1673..8966aecf33 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -615,10 +615,11 @@ static bool content_file_load( error_string)) goto error; #endif + RARCH_LOG("%s\n", msg_hash_to_str(MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT)); + content_rom_crc = file_crc32(0, path); + RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); + } - RARCH_LOG("%s\n", msg_hash_to_str(MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT)); - content_rom_crc = file_crc32(0, path); - RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); } load_info.content = content; From 8f2b91d95e5ea373ff9202c93d57d7f9ab58e471 Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 28 Oct 2018 19:39:09 -0500 Subject: [PATCH 134/304] [cheevos] fix badges --- menu/drivers/xmb.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 9a8025b9d3..8f9bc09ec2 100755 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2531,9 +2531,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb, return xmb->textures.list[XMB_TEXTURE_ROOM_RELAY]; #endif case MENU_SETTING_ACTION: - if (xmb->depth <= 3) + if (xmb->depth == 3) return xmb->textures.list[XMB_TEXTURE_SETTING]; - default: return xmb->textures.list[XMB_TEXTURE_SUBSETTING]; } From e31c4f541a3224a088d6fffe57e2a2643abd91ab Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 29 Oct 2018 04:04:03 +0100 Subject: [PATCH 135/304] Simplify init_subsystem function --- tasks/task_content.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tasks/task_content.c b/tasks/task_content.c index 8966aecf33..76352399ea 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -658,7 +658,8 @@ error: static const struct retro_subsystem_info *content_file_init_subsystem( - content_information_ctx_t *content_ctx, + const struct retro_subsystem_info *subsystem_data, + size_t subsystem_size, char **error_string, bool *ret) { @@ -666,7 +667,7 @@ retro_subsystem_info *content_file_init_subsystem( char *msg = (char*)malloc(1024 * sizeof(char)); struct string_list *subsystem = path_get_subsystem_list(); const struct retro_subsystem_info *special = libretro_find_subsystem_info( - content_ctx->subsystem.data, content_ctx->subsystem.size, + subsystem_data, subsystem_size, path_get(RARCH_PATH_SUBSYSTEM)); msg[0] = '\0'; @@ -794,7 +795,8 @@ static bool content_file_init( ? true : false; const struct retro_subsystem_info *special = path_is_empty(RARCH_PATH_SUBSYSTEM) - ? NULL : content_file_init_subsystem(content_ctx, error_string, &ret); + ? NULL : content_file_init_subsystem(content_ctx->subsystem.data, + content_ctx->subsystem.size, error_string, &ret); if ( !ret || !content_file_init_set_attribs(content, special, content_ctx, error_string)) return false; From 305a07a3f31cb883f21b1c03fc0f17f76d80573b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 29 Oct 2018 04:43:05 +0100 Subject: [PATCH 136/304] Create some variables for size --- tasks/task_content.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tasks/task_content.c b/tasks/task_content.c index 76352399ea..8b7d8ebd12 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -423,9 +423,10 @@ static bool load_content_from_compressed_archive( if (!ret || new_path_len < 0) { - char *str = (char*)malloc(1024 * sizeof(char)); + size_t path_size = 1024 * sizeof(char); + char *str = (char*)malloc(path_size); snprintf(str, - 1024 * sizeof(char), + path_size, "%s \"%s\".\n", msg_hash_to_str(MSG_COULD_NOT_READ_CONTENT_FILE), path); @@ -501,9 +502,10 @@ static bool content_file_init_extract( PATH_MAX_LENGTH * sizeof(char) )) { - char *str = (char*)malloc(1024 * sizeof(char)); + size_t path_size = 1024 * sizeof(char); + char *str = (char*)malloc(path_size); - snprintf(str, 1024 * sizeof(char), + snprintf(str, path_size, "%s: %s.\n", msg_hash_to_str( MSG_FAILED_TO_EXTRACT_CONTENT_FROM_COMPRESSED_FILE), @@ -554,7 +556,7 @@ static bool content_file_load( unsigned i; retro_ctx_load_content_info_t load_info; size_t msg_size = 1024 * sizeof(char); - char *msg = (char*)malloc(1024 * sizeof(char)); + char *msg = (char*)malloc(msg_size); msg[0] = '\0'; @@ -664,7 +666,7 @@ retro_subsystem_info *content_file_init_subsystem( bool *ret) { size_t path_size = 1024 * sizeof(char); - char *msg = (char*)malloc(1024 * sizeof(char)); + char *msg = (char*)malloc(path_size); struct string_list *subsystem = path_get_subsystem_list(); const struct retro_subsystem_info *special = libretro_find_subsystem_info( subsystem_data, subsystem_size, From e6dfa35f9d109805ed3c1d2086f37a2a27cca1dc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 29 Oct 2018 04:48:22 +0100 Subject: [PATCH 137/304] (task_content.c) More cleanups --- tasks/task_content.c | 46 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/tasks/task_content.c b/tasks/task_content.c index 8b7d8ebd12..1945cd372a 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -386,9 +386,10 @@ static bool load_content_from_compressed_archive( { union string_list_elem_attr attributes; int64_t new_path_len = 0; - size_t path_size = PATH_MAX_LENGTH * sizeof(char); - char *new_basedir = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); - char *new_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + size_t new_basedir_size = PATH_MAX_LENGTH * sizeof(char); + size_t new_path_size = PATH_MAX_LENGTH * sizeof(char); + char *new_basedir = (char*)malloc(new_basedir_size); + char *new_path = (char*)malloc(new_path_size); bool ret = false; new_path[0] = '\0'; @@ -399,8 +400,7 @@ static bool load_content_from_compressed_archive( " Now extracting to temporary directory.\n"); if (!string_is_empty(content_ctx->directory_cache)) - strlcpy(new_basedir, content_ctx->directory_cache, - path_size); + strlcpy(new_basedir, content_ctx->directory_cache, new_basedir_size); if (string_is_empty(new_basedir) || !path_is_directory(new_basedir)) { @@ -408,15 +408,14 @@ static bool load_content_from_compressed_archive( "cache directory was not set or found. " "Setting cache directory to directory " "derived by basename...\n"); - fill_pathname_basedir(new_basedir, path, - path_size); + fill_pathname_basedir(new_basedir, path, new_basedir_size); } new_path[0] = '\0'; new_basedir[0] = '\0'; fill_pathname_join(new_path, new_basedir, - path_basename(path), path_size); + path_basename(path), new_path_size); ret = file_archive_compressed_read(path, NULL, new_path, &new_path_len); @@ -479,27 +478,28 @@ static bool content_file_init_extract( continue; { - char *temp_content = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); - const char *valid_ext = special ? + size_t temp_content_size = PATH_MAX_LENGTH * sizeof(char); + size_t new_path_size = PATH_MAX_LENGTH * sizeof(char); + char *temp_content = (char*)malloc(temp_content_size); + const char *valid_ext = special ? special->roms[i].valid_extensions : content_ctx->valid_extensions; - new_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + new_path = (char*)malloc(new_path_size); temp_content[0] = new_path[0] = '\0'; if (!string_is_empty(path)) - strlcpy(temp_content, path, - PATH_MAX_LENGTH * sizeof(char)); + strlcpy(temp_content, path, temp_content_size); if (!valid_ext || !file_archive_extract_file( temp_content, - PATH_MAX_LENGTH * sizeof(char), + temp_content_size, valid_ext, !string_is_empty(content_ctx->directory_cache) ? content_ctx->directory_cache : NULL, new_path, - PATH_MAX_LENGTH * sizeof(char) + new_path_size )) { size_t path_size = 1024 * sizeof(char); @@ -896,7 +896,8 @@ static bool task_load_content(content_ctx_info_t *content_info, /* Push entry to top of history playlist */ if (is_inited || contentless) { - char *tmp = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + size_t tmp_size = PATH_MAX_LENGTH * sizeof(char); + char *tmp = (char*)malloc(tmp_size); rarch_system_info_t *sys_info = runloop_get_system_info(); const char *path_content = path_get(RARCH_PATH_CONTENT); struct retro_system_info *info = sys_info ? &sys_info->info : NULL; @@ -904,15 +905,14 @@ static bool task_load_content(content_ctx_info_t *content_info, tmp[0] = '\0'; if (!string_is_empty(path_content)) - strlcpy(tmp, path_content, PATH_MAX_LENGTH * sizeof(char)); + strlcpy(tmp, path_content, tmp_size); if (!launched_from_menu) { /* Path can be relative here. * Ensure we're pushing absolute path. */ if (!string_is_empty(tmp)) - path_resolve_realpath(tmp, - PATH_MAX_LENGTH * sizeof(char)); + path_resolve_realpath(tmp, tmp_size); } #ifdef HAVE_MENU @@ -1024,7 +1024,7 @@ static bool firmware_update_status( bool set_missing_firmware = false; core_info_t *core_info = NULL; size_t s_size = PATH_MAX_LENGTH * sizeof(char); - char *s = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + char *s = (char*)malloc(s_size); core_info_get_current_core(&core_info); @@ -1802,10 +1802,10 @@ void content_set_subsystem(unsigned idx) /* Add a rom to the subsystem rom buffer */ void content_add_subsystem(const char* path) { - pending_subsystem_roms[pending_subsystem_rom_id] = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + size_t pending_size = PATH_MAX_LENGTH * sizeof(char); + pending_subsystem_roms[pending_subsystem_rom_id] = (char*)malloc(pending_size); - strlcpy(pending_subsystem_roms[pending_subsystem_rom_id], path, - PATH_MAX_LENGTH * sizeof(char)); + strlcpy(pending_subsystem_roms[pending_subsystem_rom_id], path, pending_size); RARCH_LOG("[subsystem] subsystem id: %d subsystem ident: %s rom id: %d, rom path: %s\n", pending_subsystem_id, pending_subsystem_ident, pending_subsystem_rom_id, pending_subsystem_roms[pending_subsystem_rom_id]); From 03dac742cb692f48e81ccad42ab9fa4c9c82c729 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 29 Oct 2018 04:59:54 +0100 Subject: [PATCH 138/304] (task_content.c) Some more cleanups --- tasks/task_content.c | 54 +++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/tasks/task_content.c b/tasks/task_content.c index 1945cd372a..b628075b36 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -452,12 +452,14 @@ error: return false; } +/* Try to extract all content we're going to load if appropriate. */ + static bool content_file_init_extract( struct string_list *content, content_information_ctx_t *content_ctx, const struct retro_subsystem_info *special, - union string_list_elem_attr *attr, - char **error_string + char **error_string, + union string_list_elem_attr *attr ) { unsigned i; @@ -725,16 +727,16 @@ error: return NULL; } -static bool content_file_init_set_attribs( +static void content_file_init_set_attribs( struct string_list *content, const struct retro_subsystem_info *special, content_information_ctx_t *content_ctx, - char **error_string) + char **error_string, + union string_list_elem_attr *attr) { - union string_list_elem_attr attr; struct string_list *subsystem = path_get_subsystem_list(); - attr.i = 0; + attr->i = 0; if (!path_is_empty(RARCH_PATH_SUBSYSTEM) && special) { @@ -742,11 +744,11 @@ static bool content_file_init_set_attribs( for (i = 0; i < subsystem->size; i++) { - attr.i = special->roms[i].block_extract; - attr.i |= special->roms[i].need_fullpath << 1; - attr.i |= special->roms[i].required << 2; + attr->i = special->roms[i].block_extract; + attr->i |= special->roms[i].need_fullpath << 1; + attr->i |= special->roms[i].required << 2; - string_list_append(content, subsystem->elems[i].data, attr); + string_list_append(content, subsystem->elems[i].data, *attr); } } else @@ -756,26 +758,20 @@ static bool content_file_init_set_attribs( content_get_status(&contentless, &is_inited); - attr.i = content_ctx->block_extract; - attr.i |= content_ctx->need_fullpath << 1; - attr.i |= (!contentless) << 2; + attr->i = content_ctx->block_extract; + attr->i |= content_ctx->need_fullpath << 1; + attr->i |= (!contentless) << 2; if (path_is_empty(RARCH_PATH_CONTENT) && contentless && content_ctx->set_supports_no_game_enable) - string_list_append(content, "", attr); + string_list_append(content, "", *attr); else { if (!path_is_empty(RARCH_PATH_CONTENT)) - string_list_append(content, path_get(RARCH_PATH_CONTENT), attr); + string_list_append(content, path_get(RARCH_PATH_CONTENT), *attr); } } - -#ifdef HAVE_COMPRESSION - /* Try to extract all content we're going to load if appropriate. */ - content_file_init_extract(content, content_ctx, special, &attr, error_string); -#endif - return true; } /** @@ -791,6 +787,7 @@ static bool content_file_init( struct string_list *content, char **error_string) { + union string_list_elem_attr attr; struct retro_game_info *info = NULL; bool ret = path_is_empty(RARCH_PATH_SUBSYSTEM) @@ -799,10 +796,15 @@ static bool content_file_init( path_is_empty(RARCH_PATH_SUBSYSTEM) ? NULL : content_file_init_subsystem(content_ctx->subsystem.data, content_ctx->subsystem.size, error_string, &ret); - if ( !ret || - !content_file_init_set_attribs(content, special, content_ctx, error_string)) + + if (!ret) return false; + content_file_init_set_attribs(content, special, content_ctx, error_string, &attr); +#ifdef HAVE_COMPRESSION + content_file_init_extract(content, content_ctx, special, error_string, &attr); +#endif + if (content->size > 0) info = (struct retro_game_info*) calloc(content->size, sizeof(*info)); @@ -821,7 +823,7 @@ static bool content_file_init( free(info); } - else if (special == NULL) + else if (!special) { *error_string = strdup(msg_hash_to_str(MSG_ERROR_LIBRETRO_CORE_REQUIRES_CONTENT)); ret = false; @@ -885,11 +887,7 @@ static bool task_load_content(content_ctx_info_t *content_info, bool is_inited = false; if (!content_load(content_info)) - { return false; - } - - content_get_status(&contentless, &is_inited); From 6c51c4458b5df4480786890077de86601356ec14 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 29 Oct 2018 07:38:26 +0100 Subject: [PATCH 139/304] Cleanups --- retroarch.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/retroarch.c b/retroarch.c index 4a286e30e7..a9aa568754 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1204,8 +1204,8 @@ bool retroarch_validate_game_options(char *s, size_t len, bool mkdir) if (string_is_empty(core_name) || string_is_empty(game_name)) return false; - core_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); - config_directory = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); + core_path = (char*)malloc(str_size); + config_directory = (char*)malloc(str_size); config_directory[0] = core_path[0] = '\0'; fill_pathname_application_special(config_directory, @@ -1479,8 +1479,8 @@ void rarch_menu_running_finished(void) **/ static bool rarch_game_specific_options(char **output) { - char *game_path = (char*)malloc(8192 * sizeof(char)); size_t game_path_size = 8192 * sizeof(char); + char *game_path = (char*)malloc(game_path_size); game_path[0] ='\0'; From 51430e9e5fff85b455eaa97448dd79b09e6cfff3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 30 Oct 2018 08:21:32 +0100 Subject: [PATCH 140/304] Add runloop_get_libretro_system_info --- menu/menu_entries.c | 22 ++++++++++------------ paths.c | 13 +++++++------ retroarch.c | 6 ++++++ retroarch.h | 2 ++ tasks/task_content.c | 3 +-- tasks/task_netplay_find_content.c | 9 +++++---- 6 files changed, 31 insertions(+), 24 deletions(-) diff --git a/menu/menu_entries.c b/menu/menu_entries.c index 4d28437d98..6cfd04c5b5 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -396,15 +396,14 @@ int menu_entries_get_title(char *s, size_t len) int menu_entries_get_core_name(char *s, size_t len) { - rarch_system_info_t *info = runloop_get_system_info(); - struct retro_system_info *system = &info->info; + struct retro_system_info *system = runloop_get_libretro_system_info(); const char *core_name = NULL; if (system) core_name = system->library_name; - if (string_is_empty(core_name) && info) - core_name = info->info.library_name; + if (string_is_empty(core_name) && system) + core_name = system->library_name; if (string_is_empty(core_name)) core_name = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE); @@ -417,10 +416,9 @@ int menu_entries_get_core_name(char *s, size_t len) * (shown at the top of the UI). */ int menu_entries_get_core_title(char *s, size_t len) { - const char *core_name = NULL; - const char *core_version = NULL; - rarch_system_info_t *info = runloop_get_system_info(); - struct retro_system_info *system = &info->info; + const char *core_name = NULL; + const char *core_version = NULL; + struct retro_system_info *system = runloop_get_libretro_system_info(); #if _MSC_VER == 1200 const char *extra_version = " msvc6"; #elif _MSC_VER == 1300 @@ -451,13 +449,13 @@ int menu_entries_get_core_title(char *s, size_t len) core_version = system->library_version; } - if (string_is_empty(core_name) && info) - core_name = info->info.library_name; + if (string_is_empty(core_name) && system) + core_name = system->library_name; if (string_is_empty(core_name)) core_name = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE); - if (!core_version && info) - core_version = info->info.library_version; + if (!core_version && system) + core_version = system->library_version; if (!core_version) core_version = ""; diff --git a/paths.c b/paths.c index 7ad604b80b..978ee0e5cf 100644 --- a/paths.c +++ b/paths.c @@ -67,6 +67,7 @@ void path_set_redirect(void) const char *old_savefile_dir = dir_get(RARCH_DIR_SAVEFILE); const char *old_savestate_dir = dir_get(RARCH_DIR_SAVESTATE); rarch_system_info_t *info = runloop_get_system_info(); + struct retro_system_info *system = runloop_get_libretro_system_info(); settings_t *settings = config_get_ptr(); new_savefile_dir[0] = new_savestate_dir[0] = '\0'; @@ -76,10 +77,10 @@ void path_set_redirect(void) strlcpy(new_savefile_dir, old_savefile_dir, path_size); strlcpy(new_savestate_dir, old_savestate_dir, path_size); - if (info && !string_is_empty(info->info.library_name)) + if (system && !string_is_empty(system->library_name)) { #ifdef HAVE_MENU - if (!string_is_equal(info->info.library_name, + if (!string_is_equal(system->library_name, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE))) #endif check_library_name = true; @@ -94,7 +95,7 @@ void path_set_redirect(void) fill_pathname_join( new_savefile_dir, old_savefile_dir, - info->info.library_name, + system->library_name, path_size); /* If path doesn't exist, try to create it, @@ -121,7 +122,7 @@ void path_set_redirect(void) fill_pathname_join( new_savestate_dir, old_savestate_dir, - info->info.library_name, + system->library_name, path_size); /* If path doesn't exist, try to create it. @@ -173,7 +174,7 @@ void path_set_redirect(void) { fill_pathname_dir(global->name.savefile, !string_is_empty(path_main_basename) ? path_main_basename : - info ? info->info.library_name : NULL, + system ? system->library_name : NULL, file_path_str(FILE_PATH_SRM_EXTENSION), sizeof(global->name.savefile)); RARCH_LOG("%s \"%s\".\n", @@ -185,7 +186,7 @@ void path_set_redirect(void) { fill_pathname_dir(global->name.savestate, !string_is_empty(path_main_basename) ? path_main_basename : - info ? info->info.library_name : NULL, + system ? system->library_name : NULL, file_path_str(FILE_PATH_STATE_EXTENSION), sizeof(global->name.savestate)); RARCH_LOG("%s \"%s\".\n", diff --git a/retroarch.c b/retroarch.c index a9aa568754..6b7dc50420 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3593,3 +3593,9 @@ rarch_system_info_t *runloop_get_system_info(void) { return &runloop_system; } + +struct retro_system_info *runloop_get_libretro_system_info(void) +{ + struct retro_system_info *system = &runloop_system.info; + return system; +} diff --git a/retroarch.h b/retroarch.h index 596dce7d54..a3667fde88 100644 --- a/retroarch.h +++ b/retroarch.h @@ -387,6 +387,8 @@ bool retroarch_is_on_main_thread(void); rarch_system_info_t *runloop_get_system_info(void); +struct retro_system_info *runloop_get_libretro_system_info(void); + #ifdef HAVE_THREADS void runloop_msg_queue_lock(void); diff --git a/tasks/task_content.c b/tasks/task_content.c index b628075b36..ed56c69771 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -896,9 +896,8 @@ static bool task_load_content(content_ctx_info_t *content_info, { size_t tmp_size = PATH_MAX_LENGTH * sizeof(char); char *tmp = (char*)malloc(tmp_size); - rarch_system_info_t *sys_info = runloop_get_system_info(); const char *path_content = path_get(RARCH_PATH_CONTENT); - struct retro_system_info *info = sys_info ? &sys_info->info : NULL; + struct retro_system_info *info = runloop_get_libretro_system_info(); tmp[0] = '\0'; diff --git a/tasks/task_netplay_find_content.c b/tasks/task_netplay_find_content.c index 142893f45d..1f53758d41 100644 --- a/tasks/task_netplay_find_content.c +++ b/tasks/task_netplay_find_content.c @@ -56,8 +56,6 @@ static void netplay_crc_scan_callback(void *task_data, { netplay_crc_handle_t *state = (netplay_crc_handle_t*)task_data; content_ctx_info_t content_info = {0}; - rarch_system_info_t *info = runloop_get_system_info(); - struct retro_system_info *system = &info->info; if (!state) return; @@ -69,6 +67,8 @@ static void netplay_crc_scan_callback(void *task_data, if (!string_is_empty(state->core_path) && !string_is_empty(state->content_path) && !state->contentless && !state->current) { + struct retro_system_info *system = runloop_get_libretro_system_info(); + RARCH_LOG("[lobby] loading core %s with content file %s\n", state->core_path, state->content_path); @@ -89,13 +89,14 @@ static void netplay_crc_scan_callback(void *task_data, if (!string_is_empty(state->core_path) && !string_is_empty(state->content_path) && state->contentless) { - content_ctx_info_t content_info = {0}; + content_ctx_info_t content_info = {0}; + struct retro_system_info *system = runloop_get_libretro_system_info(); RARCH_LOG("[lobby] loading contentless core %s\n", state->core_path); command_event(CMD_EVENT_NETPLAY_INIT_DIRECT_DEFERRED, state->hostname); - if (!string_is_equal(info->info.library_name, state->core_name)) + if (!string_is_equal(system->library_name, state->core_name)) task_push_load_new_core(state->core_path, NULL, &content_info, CORE_TYPE_PLAIN, NULL, NULL); From a662b62d192787543f504f4535da523991c906ba Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 30 Oct 2018 17:11:07 +0100 Subject: [PATCH 141/304] Use runloop_get_libretro_system_info in more places - clean some code up --- command.c | 17 ++-- menu/cbs/menu_cbs_deferred_push.c | 40 ++++---- menu/cbs/menu_cbs_get_value.c | 5 - menu/cbs/menu_cbs_ok.c | 18 ++-- menu/drivers/materialui.c | 16 +--- menu/menu_displaylist.c | 133 +++++++++++++-------------- menu/menu_entries.c | 15 +-- menu/widgets/menu_filebrowser.c | 3 +- network/netplay/netplay_discovery.c | 9 +- network/netplay/netplay_frontend.c | 22 ++--- network/netplay/netplay_handshake.c | 23 +++-- paths.c | 1 - tasks/task_content.c | 20 ++-- ui/drivers/qt/coreoptionsdialog.cpp | 3 +- ui/drivers/qt/shaderparamsdialog.cpp | 33 +++---- ui/drivers/qt/ui_qt_window.cpp | 18 ++-- ui/drivers/ui_cocoa.m | 16 +--- 17 files changed, 169 insertions(+), 223 deletions(-) diff --git a/command.c b/command.c index 5bee7d0d08..a87a52e1e4 100644 --- a/command.c +++ b/command.c @@ -2445,17 +2445,12 @@ TODO: Add a setting for these tweaks */ break; case CMD_EVENT_ADD_TO_FAVORITES: { - global_t *global = global_get_ptr(); - rarch_system_info_t *sys_info = runloop_get_system_info(); - const char *core_name = NULL; - const char *core_path = NULL; - const char *label = NULL; - - if (sys_info) - { - core_name = sys_info->info.library_name; - core_path = path_get(RARCH_PATH_CORE); - } + /* TODO/FIXME - does path_get(RARCH_PATH_CORE) depend on the system info struct? Investigate */ + global_t *global = global_get_ptr(); + struct retro_system_info *system = runloop_get_libretro_system_info(); + const char *label = NULL; + const char *core_path = system ? path_get(RARCH_PATH_CORE) : NULL; + const char *core_name = system ? system->library_name : NULL; if (!string_is_empty(global->name.label)) label = global->name.label; diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 656c995a8c..6d9e29574d 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -349,8 +349,6 @@ static int general_push(menu_displaylist_info_t *info, char *newstring2 = NULL; core_info_list_t *list = NULL; menu_handle_t *menu = NULL; - rarch_system_info_t *system = runloop_get_system_info(); - struct retro_system_info *system_menu = &system->info; if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return menu_cbs_exit(); @@ -406,32 +404,35 @@ static int general_push(menu_displaylist_info_t *info, switch (id) { case PUSH_ARCHIVE_OPEN: - - if (system_menu && system_menu->valid_extensions) { - if (*system_menu->valid_extensions) - strlcpy(newstring2, system_menu->valid_extensions, + struct retro_system_info *system = runloop_get_libretro_system_info(); + if (system && system->valid_extensions) + { + if (*system->valid_extensions) + strlcpy(newstring2, system->valid_extensions, + PATH_MAX_LENGTH * sizeof(char)); + } + else + { + strlcpy(newstring2, system->valid_extensions, PATH_MAX_LENGTH * sizeof(char)); - } - else - { - strlcpy(newstring2, system->valid_extensions, - PATH_MAX_LENGTH * sizeof(char)); + } } break; case PUSH_DEFAULT: { - bool new_exts_allocated = false; - char *new_exts = NULL; + bool new_exts_allocated = false; + char *new_exts = NULL; + struct retro_system_info *system = runloop_get_libretro_system_info(); if (menu_setting_get_browser_selection_type(info->setting) == ST_DIR) { } - else if (system_menu && system_menu->valid_extensions) + else if (system && system->valid_extensions) { - if (*system_menu->valid_extensions) + if (*system->valid_extensions) { - new_exts = strdup(system_menu->valid_extensions); + new_exts = strdup(system->valid_extensions); new_exts_allocated = true; } } @@ -478,16 +479,17 @@ static int general_push(menu_displaylist_info_t *info, size_t path_size = PATH_MAX_LENGTH * sizeof(char); char *newstring = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); struct string_list *str_list2 = string_list_new(); + struct retro_system_info *system = runloop_get_libretro_system_info(); newstring[0] = '\0'; attr.i = 0; - if (system_menu && system_menu->valid_extensions) + if (system && system->valid_extensions) { - if (!string_is_empty(system_menu->valid_extensions)) + if (!string_is_empty(system->valid_extensions)) { unsigned x; - struct string_list *str_list = string_split(system_menu->valid_extensions, "|"); + struct string_list *str_list = string_split(system->valid_extensions, "|"); for (x = 0; x < str_list->size; x++) { diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index 0795677572..a5ccd31733 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -1091,11 +1091,6 @@ static void menu_action_setting_disp_set_label_core_option_create( const char *path, char *s2, size_t len2) { - rarch_system_info_t *system = runloop_get_system_info(); - - if (!system) - return; - *s = '\0'; *w = 19; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 5d4c54541a..0bb2c2d503 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -2211,15 +2211,12 @@ static int generic_action_ok_shader_preset_save(const char *path, char directory[PATH_MAX_LENGTH]; char file[PATH_MAX_LENGTH]; char tmp[PATH_MAX_LENGTH]; - settings_t *settings = config_get_ptr(); - const char *core_name = NULL; - rarch_system_info_t *info = runloop_get_system_info(); + settings_t *settings = config_get_ptr(); + struct retro_system_info *system = runloop_get_libretro_system_info(); + const char *core_name = system ? system->library_name : NULL; directory[0] = file[0] = tmp[0] = '\0'; - if (info) - core_name = info->info.library_name; - if (!string_is_empty(core_name)) { fill_pathname_join( @@ -2296,15 +2293,12 @@ static int generic_action_ok_remap_file_operation(const char *path, char directory[PATH_MAX_LENGTH]; char file[PATH_MAX_LENGTH]; char content_dir[PATH_MAX_LENGTH]; - settings_t *settings = config_get_ptr(); - const char *core_name = NULL; - rarch_system_info_t *info = runloop_get_system_info(); + settings_t *settings = config_get_ptr(); + struct retro_system_info *system = runloop_get_libretro_system_info(); + const char *core_name = system ? system->library_name : NULL; directory[0] = file[0] = '\0'; - if (info) - core_name = info->info.library_name; - if (!string_is_empty(core_name)) fill_pathname_join( directory, diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 2c625ba881..7d1b6c5c49 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -1016,23 +1016,13 @@ static size_t materialui_list_get_size(void *data, enum menu_list_type type) static int materialui_get_core_title(char *s, size_t len) { settings_t *settings = config_get_ptr(); - rarch_system_info_t *info = runloop_get_system_info(); - struct retro_system_info *system = &info->info; - - const char *core_name = system->library_name; - const char *core_version = system->library_version; + struct retro_system_info *system = runloop_get_libretro_system_info(); + const char *core_name = system ? system->library_name : NULL; + const char *core_version = system ? system->library_version : NULL; if (!settings->bools.menu_core_enable) return -1; - if (info) - { - if (string_is_empty(core_name)) - core_name = info->info.library_name; - if (!core_version) - core_version = info->info.library_version; - } - if (string_is_empty(core_name)) core_name = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE); if (!core_version) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index e6bf685225..f141d903cc 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2936,14 +2936,14 @@ static int menu_displaylist_parse_horizontal_content_actions( static int menu_displaylist_parse_information_list( menu_displaylist_info_t *info) { - core_info_t *core_info = NULL; - rarch_system_info_t *system = runloop_get_system_info(); + core_info_t *core_info = NULL; + struct retro_system_info *system = runloop_get_libretro_system_info(); core_info_get_current_core(&core_info); if ( system && - (!string_is_empty(system->info.library_name) && - !string_is_equal(system->info.library_name, + (!string_is_empty(system->library_name) && + !string_is_equal(system->library_name, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE)) ) && core_info && core_info->config_data @@ -3293,8 +3293,9 @@ static int menu_displaylist_parse_options_remappings( menu_handle_t *menu, menu_displaylist_info_t *info) { + unsigned device; unsigned p, retro_id; - rarch_system_info_t *system = NULL; + settings_t *settings = config_get_ptr(); unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS)); for (p = 0; p < max_users; p++) @@ -3364,76 +3365,69 @@ static int menu_displaylist_parse_options_remappings( MENU_SETTING_ACTION, 0, 0); } - system = runloop_get_system_info(); - - if (system) + for (p = 0; p < max_users; p++) { - settings_t *settings = config_get_ptr(); - unsigned device; - for (p = 0; p < max_users; p++) + device = settings->uints.input_libretro_device[p]; + device &= RETRO_DEVICE_MASK; + + if (device == RETRO_DEVICE_JOYPAD || device == RETRO_DEVICE_ANALOG) { - device = settings->uints.input_libretro_device[p]; - device &= RETRO_DEVICE_MASK; - - if (device == RETRO_DEVICE_JOYPAD || device == RETRO_DEVICE_ANALOG) + for (retro_id = 0; retro_id < RARCH_FIRST_CUSTOM_BIND + 8; retro_id++) { - for (retro_id = 0; retro_id < RARCH_FIRST_CUSTOM_BIND + 8; retro_id++) - { - char desc_label[64]; - char descriptor[255]; - const struct retro_keybind *auto_bind = NULL; - const struct retro_keybind *keybind = NULL; + char desc_label[64]; + char descriptor[255]; + const struct retro_keybind *auto_bind = NULL; + const struct retro_keybind *keybind = NULL; - keybind = &input_config_binds[p][retro_id]; - auto_bind = (const struct retro_keybind*) - input_config_get_bind_auto(p, retro_id); + keybind = &input_config_binds[p][retro_id]; + auto_bind = (const struct retro_keybind*) + input_config_get_bind_auto(p, retro_id); - input_config_get_bind_string(descriptor, + input_config_get_bind_string(descriptor, keybind, auto_bind, sizeof(descriptor)); - if(!strstr(descriptor, "Auto")) - { - const struct retro_keybind *keyptr = - &input_config_binds[p][retro_id]; + if(!strstr(descriptor, "Auto")) + { + const struct retro_keybind *keyptr = + &input_config_binds[p][retro_id]; - snprintf(desc_label, sizeof(desc_label), "%s %s", msg_hash_to_str(keyptr->enum_idx), descriptor); - strlcpy(descriptor, desc_label, sizeof(descriptor)); - } - - menu_entries_append_enum(info->list, descriptor, "", - MSG_UNKNOWN, - MENU_SETTINGS_INPUT_DESC_BEGIN + - (p * (RARCH_FIRST_CUSTOM_BIND + 8)) + retro_id, 0, 0); + snprintf(desc_label, sizeof(desc_label), "%s %s", msg_hash_to_str(keyptr->enum_idx), descriptor); + strlcpy(descriptor, desc_label, sizeof(descriptor)); } + + menu_entries_append_enum(info->list, descriptor, "", + MSG_UNKNOWN, + MENU_SETTINGS_INPUT_DESC_BEGIN + + (p * (RARCH_FIRST_CUSTOM_BIND + 8)) + retro_id, 0, 0); } - else if (device == RETRO_DEVICE_KEYBOARD) + } + else if (device == RETRO_DEVICE_KEYBOARD) + { + for (retro_id = 0; retro_id < RARCH_FIRST_CUSTOM_BIND; retro_id++) { - for (retro_id = 0; retro_id < RARCH_FIRST_CUSTOM_BIND; retro_id++) - { - char descriptor[255]; - const struct retro_keybind *auto_bind = NULL; - const struct retro_keybind *keybind = NULL; + char descriptor[255]; + const struct retro_keybind *auto_bind = NULL; + const struct retro_keybind *keybind = NULL; - keybind = &input_config_binds[p][retro_id]; - auto_bind = (const struct retro_keybind*) - input_config_get_bind_auto(p, retro_id); + keybind = &input_config_binds[p][retro_id]; + auto_bind = (const struct retro_keybind*) + input_config_get_bind_auto(p, retro_id); - input_config_get_bind_string(descriptor, + input_config_get_bind_string(descriptor, keybind, auto_bind, sizeof(descriptor)); - if(!strstr(descriptor, "Auto")) - { - const struct retro_keybind *keyptr = - &input_config_binds[p][retro_id]; + if(!strstr(descriptor, "Auto")) + { + const struct retro_keybind *keyptr = + &input_config_binds[p][retro_id]; - strlcpy(descriptor, msg_hash_to_str(keyptr->enum_idx), sizeof(descriptor)); - } - - menu_entries_append_enum(info->list, descriptor, "", - MSG_UNKNOWN, - MENU_SETTINGS_INPUT_DESC_KBD_BEGIN + - (p * RARCH_FIRST_CUSTOM_BIND) + retro_id, 0, 0); + strlcpy(descriptor, msg_hash_to_str(keyptr->enum_idx), sizeof(descriptor)); } + + menu_entries_append_enum(info->list, descriptor, "", + MSG_UNKNOWN, + MENU_SETTINGS_INPUT_DESC_KBD_BEGIN + + (p * RARCH_FIRST_CUSTOM_BIND) + retro_id, 0, 0); } } } @@ -4893,8 +4887,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist if (cores_names_size == 0) { - rarch_system_info_t *system_info = runloop_get_system_info(); - struct retro_system_info *system = &system_info->info; + struct retro_system_info *system = runloop_get_libretro_system_info(); const char *core_name = system ? system->library_name : NULL; if (!path_is_empty(RARCH_PATH_CORE)) @@ -5008,12 +5001,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist 0); { - const char *core_name = NULL; - rarch_system_info_t *system_info = runloop_get_system_info(); - struct retro_system_info *system = &system_info->info; - - if (system) - core_name = system->library_name; + struct retro_system_info *system = runloop_get_libretro_system_info(); + const char *core_name = system ? system->library_name : NULL; if (!string_is_empty(core_name)) file_list_set_alt_at_offset(info->list, 0, @@ -7325,19 +7314,21 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); { settings_t *settings = config_get_ptr(); - rarch_system_info_t *system = runloop_get_system_info(); + rarch_system_info_t *sys_info = runloop_get_system_info(); - if (system) + if (sys_info) { - if (!string_is_empty(system->info.library_name) && - !string_is_equal(system->info.library_name, + struct retro_system_info *system = runloop_get_libretro_system_info(); + + if (!string_is_empty(system->library_name) && + !string_is_equal(system->library_name, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE))) if (!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_CONTENT_SETTINGS, PARSE_ACTION, false); - if (system->load_no_content) + if (sys_info->load_no_content) menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_START_CORE, PARSE_ACTION, false); } diff --git a/menu/menu_entries.c b/menu/menu_entries.c index 6cfd04c5b5..91f6723c80 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -416,9 +416,9 @@ int menu_entries_get_core_name(char *s, size_t len) * (shown at the top of the UI). */ int menu_entries_get_core_title(char *s, size_t len) { - const char *core_name = NULL; - const char *core_version = NULL; struct retro_system_info *system = runloop_get_libretro_system_info(); + const char *core_name = system ? system->library_name : NULL; + const char *core_version = system ? system->library_version : NULL; #if _MSC_VER == 1200 const char *extra_version = " msvc6"; #elif _MSC_VER == 1300 @@ -443,19 +443,8 @@ int menu_entries_get_core_title(char *s, size_t len) const char *extra_version = ""; #endif - if (system) - { - core_name = system->library_name; - core_version = system->library_version; - } - - if (string_is_empty(core_name) && system) - core_name = system->library_name; if (string_is_empty(core_name)) core_name = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE); - - if (!core_version && system) - core_version = system->library_version; if (!core_version) core_version = ""; diff --git a/menu/widgets/menu_filebrowser.c b/menu/widgets/menu_filebrowser.c index 635f527f2a..89fe44c091 100644 --- a/menu/widgets/menu_filebrowser.c +++ b/menu/widgets/menu_filebrowser.c @@ -65,7 +65,6 @@ void filebrowser_parse(menu_displaylist_info_t *info, unsigned type_data) unsigned files_count = 0; unsigned dirs_count = 0; settings_t *settings = config_get_ptr(); - rarch_system_info_t *system = runloop_get_system_info(); enum menu_displaylist_ctl_state type = (enum menu_displaylist_ctl_state) type_data; const char *path = info ? info->path : NULL; @@ -84,6 +83,7 @@ void filebrowser_parse(menu_displaylist_info_t *info, unsigned type_data) str_list = file_archive_get_file_list(path, info->exts); else { + rarch_system_info_t *system = runloop_get_system_info(); const struct retro_subsystem_info *subsystem = system->subsystem.data + content_get_subsystem(); if (subsystem) @@ -94,6 +94,7 @@ void filebrowser_parse(menu_displaylist_info_t *info, unsigned type_data) { if (filebrowser_types == FILEBROWSER_SELECT_FILE_SUBSYSTEM) { + rarch_system_info_t *system = runloop_get_system_info(); const struct retro_subsystem_info *subsystem = system->subsystem.data + content_get_subsystem(); diff --git a/network/netplay/netplay_discovery.c b/network/netplay/netplay_discovery.c index fa998ad9b6..0b347ca548 100644 --- a/network/netplay/netplay_discovery.c +++ b/network/netplay/netplay_discovery.c @@ -244,7 +244,6 @@ bool netplay_lan_ad_server(netplay_t *netplay) struct timeval tmp_tv = {0}; struct sockaddr their_addr; socklen_t addr_size; - rarch_system_info_t *info = NULL; unsigned k = 0; char reply_addr[NETPLAY_HOST_STR_LEN], port_str[6]; struct addrinfo *our_addr, hints = {0}; @@ -308,11 +307,11 @@ bool netplay_lan_ad_server(netplay_t *netplay) if (strstr(interfaces.entries[k].host, sub) && !strstr(interfaces.entries[k].host, "127.0.0.1")) { + struct retro_system_info *info = runloop_get_libretro_system_info(); + RARCH_LOG ("[discovery] query received on common interface: %s/%s (theirs / ours) \n", reply_addr, interfaces.entries[k].host); - info = runloop_get_system_info(); - /* Now build our response */ content_crc = content_get_crc(); @@ -335,9 +334,9 @@ bool netplay_lan_ad_server(netplay_t *netplay) if (info) { - strlcpy(ad_packet_buffer.core, info->info.library_name, + strlcpy(ad_packet_buffer.core, info->library_name, NETPLAY_HOST_STR_LEN); - strlcpy(ad_packet_buffer.core_version, info->info.library_version, + strlcpy(ad_packet_buffer.core_version, info->library_version, NETPLAY_HOST_STR_LEN); } diff --git a/network/netplay/netplay_frontend.c b/network/netplay/netplay_frontend.c index c0981d7067..6da9b1dee9 100644 --- a/network/netplay/netplay_frontend.c +++ b/network/netplay/netplay_frontend.c @@ -852,25 +852,25 @@ void netplay_get_architecture(char *frontend_architecture, size_t size) static void netplay_announce(void) { char buf [2048]; - char url [2048] = "http://lobby.libretro.com/add/"; - char *username = NULL; - char *corename = NULL; - char *gamename = NULL; - char *coreversion = NULL; - char *frontend_ident = NULL; - settings_t *settings = config_get_ptr(); - rarch_system_info_t *system = runloop_get_system_info(); - uint32_t content_crc = content_get_crc(); char frontend_architecture[PATH_MAX_LENGTH]; + char url [2048] = "http://lobby.libretro.com/add/"; + char *username = NULL; + char *corename = NULL; + char *gamename = NULL; + char *coreversion = NULL; + char *frontend_ident = NULL; + settings_t *settings = config_get_ptr(); + struct retro_system_info *system = runloop_get_libretro_system_info(); + uint32_t content_crc = content_get_crc(); netplay_get_architecture(frontend_architecture, sizeof(frontend_architecture)); net_http_urlencode(&username, settings->paths.username); - net_http_urlencode(&corename, system->info.library_name); + net_http_urlencode(&corename, system->library_name); net_http_urlencode(&gamename, !string_is_empty(path_basename(path_get(RARCH_PATH_BASENAME))) ? path_basename(path_get(RARCH_PATH_BASENAME)) : "N/A"); - net_http_urlencode(&coreversion, system->info.library_version); + net_http_urlencode(&coreversion, system->library_version); net_http_urlencode(&frontend_ident, frontend_architecture); buf[0] = '\0'; diff --git a/network/netplay/netplay_handshake.c b/network/netplay/netplay_handshake.c index 021b51d35c..7b52bbb9c9 100644 --- a/network/netplay/netplay_handshake.c +++ b/network/netplay/netplay_handshake.c @@ -500,20 +500,20 @@ bool netplay_handshake_info(netplay_t *netplay, struct netplay_connection *connection) { struct info_buf_s info_buf; - uint32_t content_crc = 0; - rarch_system_info_t *core_info = runloop_get_system_info(); + uint32_t content_crc = 0; + struct retro_system_info *system = runloop_get_libretro_system_info(); memset(&info_buf, 0, sizeof(info_buf)); info_buf.cmd[0] = htonl(NETPLAY_CMD_INFO); info_buf.cmd[1] = htonl(sizeof(info_buf) - 2*sizeof(uint32_t)); /* Get our core info */ - if (core_info) + if (system) { strlcpy(info_buf.core_name, - core_info->info.library_name, sizeof(info_buf.core_name)); + system->library_name, sizeof(info_buf.core_name)); strlcpy(info_buf.core_version, - core_info->info.library_version, sizeof(info_buf.core_version)); + system->library_version, sizeof(info_buf.core_version)); } else { @@ -836,9 +836,9 @@ bool netplay_handshake_pre_info(netplay_t *netplay, struct info_buf_s info_buf; uint32_t cmd_size; ssize_t recvd; - uint32_t content_crc = 0; - const char *dmsg = NULL; - rarch_system_info_t *core_info = runloop_get_system_info(); + uint32_t content_crc = 0; + const char *dmsg = NULL; + struct retro_system_info *system = runloop_get_libretro_system_info(); RECV(&info_buf, sizeof(info_buf.cmd)) {} @@ -876,11 +876,10 @@ bool netplay_handshake_pre_info(netplay_t *netplay, } /* Check the core info */ - - if (core_info) + if (system) { if (strncmp(info_buf.core_name, - core_info->info.library_name, sizeof(info_buf.core_name))) + system->library_name, sizeof(info_buf.core_name))) { /* Wrong core! */ dmsg = msg_hash_to_str(MSG_NETPLAY_DIFFERENT_CORES); @@ -890,7 +889,7 @@ bool netplay_handshake_pre_info(netplay_t *netplay, return false; } if (strncmp(info_buf.core_version, - core_info->info.library_version, sizeof(info_buf.core_version))) + system->library_version, sizeof(info_buf.core_version))) { dmsg = msg_hash_to_str(MSG_NETPLAY_DIFFERENT_CORE_VERSIONS); RARCH_WARN("%s\n", dmsg); diff --git a/paths.c b/paths.c index 978ee0e5cf..b956989638 100644 --- a/paths.c +++ b/paths.c @@ -66,7 +66,6 @@ void path_set_redirect(void) global_t *global = global_get_ptr(); const char *old_savefile_dir = dir_get(RARCH_DIR_SAVEFILE); const char *old_savestate_dir = dir_get(RARCH_DIR_SAVESTATE); - rarch_system_info_t *info = runloop_get_system_info(); struct retro_system_info *system = runloop_get_libretro_system_info(); settings_t *settings = config_get_ptr(); diff --git a/tasks/task_content.c b/tasks/task_content.c index ed56c69771..5747236df6 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -1526,6 +1526,8 @@ static bool task_load_content_callback(content_ctx_info_t *content_info, if (sys_info) { + struct retro_system_info *system = runloop_get_libretro_system_info(); + content_ctx.history_list_enable = settings->bools.history_list_enable; content_ctx.set_supports_no_game_enable = settings->bools.set_supports_no_game_enable; @@ -1533,11 +1535,11 @@ static bool task_load_content_callback(content_ctx_info_t *content_info, content_ctx.directory_system = strdup(settings->paths.directory_system); if (!string_is_empty(settings->paths.directory_cache)) content_ctx.directory_cache = strdup(settings->paths.directory_cache); - if (!string_is_empty(sys_info->info.valid_extensions)) - content_ctx.valid_extensions = strdup(sys_info->info.valid_extensions); + if (!string_is_empty(system->valid_extensions)) + content_ctx.valid_extensions = strdup(system->valid_extensions); - content_ctx.block_extract = sys_info->info.block_extract; - content_ctx.need_fullpath = sys_info->info.need_fullpath; + content_ctx.block_extract = system->block_extract; + content_ctx.need_fullpath = system->need_fullpath; content_ctx.subsystem.data = sys_info->subsystem.data; content_ctx.subsystem.size = sys_info->subsystem.size; @@ -1918,6 +1920,8 @@ bool content_init(void) if (sys_info) { + struct retro_system_info *system = runloop_get_libretro_system_info(); + content_ctx.history_list_enable = settings->bools.history_list_enable; content_ctx.set_supports_no_game_enable = settings->bools.set_supports_no_game_enable; @@ -1925,11 +1929,11 @@ bool content_init(void) content_ctx.directory_system = strdup(settings->paths.directory_system); if (!string_is_empty(settings->paths.directory_cache)) content_ctx.directory_cache = strdup(settings->paths.directory_cache); - if (!string_is_empty(sys_info->info.valid_extensions)) - content_ctx.valid_extensions = strdup(sys_info->info.valid_extensions); + if (!string_is_empty(system->valid_extensions)) + content_ctx.valid_extensions = strdup(system->valid_extensions); - content_ctx.block_extract = sys_info->info.block_extract; - content_ctx.need_fullpath = sys_info->info.need_fullpath; + content_ctx.block_extract = system->block_extract; + content_ctx.need_fullpath = system->need_fullpath; content_ctx.subsystem.data = sys_info->subsystem.data; content_ctx.subsystem.size = sys_info->subsystem.size; diff --git a/ui/drivers/qt/coreoptionsdialog.cpp b/ui/drivers/qt/coreoptionsdialog.cpp index d50adc84e9..8841cf05e5 100644 --- a/ui/drivers/qt/coreoptionsdialog.cpp +++ b/ui/drivers/qt/coreoptionsdialog.cpp @@ -222,10 +222,11 @@ void CoreOptionsDialog::buildLayout() if (settings->bools.game_specific_options) { - rarch_system_info_t *system = runloop_get_system_info(); QString contentLabel; QString label; + rarch_system_info_t *system = runloop_get_system_info(); + /* TODO/FIXME - why have this check here? system is not used */ if (system) contentLabel = QFileInfo(path_get(RARCH_PATH_BASENAME)).completeBaseName(); diff --git a/ui/drivers/qt/shaderparamsdialog.cpp b/ui/drivers/qt/shaderparamsdialog.cpp index 65dba88c28..332fbe64b5 100644 --- a/ui/drivers/qt/shaderparamsdialog.cpp +++ b/ui/drivers/qt/shaderparamsdialog.cpp @@ -724,15 +724,12 @@ void ShaderParamsDialog::saveShaderPreset(const char *path, unsigned action_type char directory[PATH_MAX_LENGTH]; char file[PATH_MAX_LENGTH]; char tmp[PATH_MAX_LENGTH]; - settings_t *settings = config_get_ptr(); - const char *core_name = NULL; - rarch_system_info_t *info = runloop_get_system_info(); + settings_t *settings = config_get_ptr(); + struct retro_system_info *system = runloop_get_libretro_system_info(); + const char *core_name = system ? system->library_name : NULL; directory[0] = file[0] = tmp[0] = '\0'; - if (info) - core_name = info->info.library_name; - if (!string_is_empty(core_name)) { fill_pathname_join( @@ -757,17 +754,15 @@ void ShaderParamsDialog::saveShaderPreset(const char *path, unsigned action_type fill_pathname_join(file, directory, core_name, sizeof(file)); break; case SHADER_PRESET_SAVE_GAME: - { - const char *game_name = path_basename(path_get(RARCH_PATH_BASENAME)); - fill_pathname_join(file, directory, game_name, sizeof(file)); - break; - } + { + const char *game_name = path_basename(path_get(RARCH_PATH_BASENAME)); + fill_pathname_join(file, directory, game_name, sizeof(file)); + break; + } case SHADER_PRESET_SAVE_PARENT: - { fill_pathname_parent_dir_name(tmp, path_get(RARCH_PATH_BASENAME), sizeof(tmp)); fill_pathname_join(file, directory, tmp, sizeof(file)); break; - } case SHADER_PRESET_SAVE_NORMAL: default: if (!string_is_empty(path)) @@ -821,13 +816,13 @@ void ShaderParamsDialog::onShaderClearAllPassesClicked() void ShaderParamsDialog::onShaderRemovePassClicked() { #ifdef HAVE_MENU - QAction *action = qobject_cast(sender()); - QVariant passVariant; - struct video_shader *menu_shader = NULL; - struct video_shader *video_shader = NULL; - int pass = 0; int i; - bool ok = false; + QVariant passVariant; + QAction *action = qobject_cast(sender()); + struct video_shader *menu_shader = NULL; + struct video_shader *video_shader = NULL; + int pass = 0; + bool ok = false; getShaders(&menu_shader, &video_shader); diff --git a/ui/drivers/qt/ui_qt_window.cpp b/ui/drivers/qt/ui_qt_window.cpp index c85a89d76d..712137f68d 100644 --- a/ui/drivers/qt/ui_qt_window.cpp +++ b/ui/drivers/qt/ui_qt_window.cpp @@ -1,6 +1,6 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2011-2017 - Daniel De Matteis - * Copyright (C) 2018 - Brad Parker + * Copyright (C) 2018 - Brad Parker * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- @@ -1297,7 +1297,7 @@ QVector > MainWindow::getCoreInfo() { QHash hash; - hash["key"] = QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_NAME)) + ":"; + hash["key"] = QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_NAME)) + ":"; hash["value"] = core_info->systemname; infoList.append(hash); @@ -1307,7 +1307,7 @@ QVector > MainWindow::getCoreInfo() { QHash hash; - hash["key"] = QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER)) + ":"; + hash["key"] = QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER)) + ":"; hash["value"] = core_info->system_manufacturer; infoList.append(hash); @@ -2778,10 +2778,10 @@ void MainWindow::onStopClicked() void MainWindow::setCurrentCoreLabel() { - rarch_system_info_t *system = runloop_get_system_info(); - bool update = false; - QString libraryName = system->info.library_name; - const char *no_core_str = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE); + bool update = false; + struct retro_system_info *system = runloop_get_libretro_system_info(); + QString libraryName = system->library_name; + const char *no_core_str = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE); if (m_statusLabel->text().isEmpty() || (m_currentCore != no_core_str && libraryName.isEmpty())) { @@ -2793,8 +2793,8 @@ void MainWindow::setCurrentCoreLabel() { if (m_currentCore != libraryName && !libraryName.isEmpty()) { - m_currentCore = system->info.library_name; - m_currentCoreVersion = (string_is_empty(system->info.library_version) ? "" : system->info.library_version); + m_currentCore = system->library_name; + m_currentCoreVersion = (string_is_empty(system->library_version) ? "" : system->library_version); update = true; } } diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 7d5330f2d6..a709ae1223 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -480,13 +480,9 @@ static char** waiting_argv; { if (filenames.count == 1 && [filenames objectAtIndex:0]) { - rarch_system_info_t *info = runloop_get_system_info(); - struct retro_system_info *system = &info->info; + struct retro_system_info *system = runloop_get_libretro_system_info(); NSString *__core = [filenames objectAtIndex:0]; - const char *core_name = NULL; - - if (system) - core_name = system->library_name; + const char *core_name = system ? system->library_name : NULL; if (core_name) { @@ -556,12 +552,8 @@ static void open_document_handler(ui_browser_window_state_t *state, bool result) if (!result) return; - rarch_system_info_t *info = runloop_get_system_info(); - struct retro_system_info *system = &info->info; - const char *core_name = NULL; - - if (system) - core_name = system->library_name; + struct retro_system_info *system = runloop_get_libretro_system_info(); + const char *core_name = system ? system->library_name : NULL; path_set(RARCH_PATH_CONTENT, state->result); From e2888aa5a26db20d4ccd978fafffe5c204cc8a13 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 30 Oct 2018 17:25:28 +0100 Subject: [PATCH 142/304] Apply madmonkeys' diff --- dynamic.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/dynamic.c b/dynamic.c index e1bd95e018..5663445c31 100644 --- a/dynamic.c +++ b/dynamic.c @@ -374,14 +374,6 @@ bool libretro_get_system_info(const char *path, memcpy(info, &dummy_info, sizeof(*info)); - if (!string_is_empty(dummy_info.library_name)) - info->library_name = strdup(dummy_info.library_name); - if (!string_is_empty(dummy_info.library_version)) - info->library_version = strdup(dummy_info.library_version); - - if (dummy_info.valid_extensions) - info->valid_extensions = strdup(dummy_info.valid_extensions); - #ifdef HAVE_DYNAMIC dylib_close(lib); #endif @@ -709,10 +701,6 @@ static bool load_symbols(enum rarch_core_type type, struct retro_core_t *current **/ bool init_libretro_sym(enum rarch_core_type type, struct retro_core_t *current_core) { - /* Guarantee that we can do "dirty" casting. - * Every OS that this program supports should pass this. */ - retro_assert(sizeof(void*) == sizeof(void (*)(void))); - if (!load_symbols(type, current_core)) return false; @@ -1381,8 +1369,13 @@ bool rarch_environment_cb(unsigned cmd, void *data) /* Old ABI. Don't copy garbage. */ if (cmd & RETRO_ENVIRONMENT_EXPERIMENTAL) + { memcpy(hwr, cb, offsetof(struct retro_hw_render_callback, stencil)); + memset(hwr + offsetof(struct retro_hw_render_callback, stencil), + 0, sizeof(*cb) - offsetof(struct retro_hw_render_callback, stencil)); + + } else memcpy(hwr, cb, sizeof(*cb)); break; @@ -1581,9 +1574,10 @@ bool rarch_environment_cb(unsigned cmd, void *data) struct retro_subsystem_info *info_ptr = NULL; free(system->subsystem.data); system->subsystem.data = NULL; + system->subsystem.size = 0; info_ptr = (struct retro_subsystem_info*) - calloc(i, sizeof(*info_ptr)); + malloc(i * sizeof(*info_ptr)); if (!info_ptr) return false; @@ -1619,6 +1613,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) free(system->ports.data); system->ports.data = NULL; + system->ports.size = 0; info_ptr = (struct retro_controller_info*)calloc(i, sizeof(*info_ptr)); if (!info_ptr) @@ -1643,6 +1638,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) RARCH_LOG("Environ SET_MEMORY_MAPS.\n"); free((void*)system->mmaps.descriptors); + system->mmaps.descriptors = 0; system->mmaps.num_descriptors = 0; descriptors = (rarch_memory_descriptor_t*) calloc(mmaps->num_descriptors, From 6cec123fc366c525541c9cf47bf7a8e2f52f4826 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 30 Oct 2018 18:24:37 +0100 Subject: [PATCH 143/304] Try this instead --- dynamic.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/dynamic.c b/dynamic.c index 5663445c31..bf2136e9dc 100644 --- a/dynamic.c +++ b/dynamic.c @@ -318,6 +318,10 @@ static dylib_t libretro_get_system_info_lib(const char *path, } #endif +static char current_library_name[1024]; +static char current_library_version[1024]; +static char current_valid_extensions[1024]; + /** * libretro_get_system_info: * @path : Path to libretro library. @@ -374,6 +378,24 @@ bool libretro_get_system_info(const char *path, memcpy(info, &dummy_info, sizeof(*info)); + current_library_name[0] = '\0'; + current_library_version[0] = '\0'; + current_valid_extensions[0] = '\0'; + + if (!string_is_empty(dummy_info.library_name)) + strlcpy(current_library_name, + dummy_info.library_name, sizeof(current_library_name)); + if (!string_is_empty(dummy_info.library_version)) + strlcpy(current_library_version, + dummy_info.library_version, sizeof(current_library_version)); + if (dummy_info.valid_extensions) + strlcpy(current_valid_extensions, + dummy_info.valid_extensions, sizeof(current_valid_extensions)); + + info->library_name = current_library_name; + info->library_version = current_library_name; + info->valid_extensions = current_valid_extensions; + #ifdef HAVE_DYNAMIC dylib_close(lib); #endif From 7c93a0934e897a98a3053495cc313605094c2ddf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 30 Oct 2018 19:32:52 +0100 Subject: [PATCH 144/304] (Cocoa) Dehardcode some strings --- ui/drivers/ui_cocoa.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index a709ae1223..bf917f53cf 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -505,7 +505,7 @@ static char** waiting_argv; { ui_msg_window_state msg_window_state; msg_window_state.text = strdup("Cannot open multiple files"); - msg_window_state.title = strdup("RetroArch"); + msg_window_state.title = strdup(msg_hash_to_str(MSG_PROGRAM)); msg_window->information(&msg_window_state); free(msg_window_state.text); @@ -577,8 +577,8 @@ static void open_document_handler(ui_browser_window_state_t *state, bool result) settings_t *settings = config_get_ptr(); browser_state.filters = strdup("dylib"); - browser_state.filters_title = strdup("Core"); - browser_state.title = strdup("Load Core"); + browser_state.filters_title = strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_SETTINGS)); + browser_state.title = strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_LIST)); browser_state.startdir = strdup(settings->paths.directory_libretro); bool result = browser->open(&browser_state); @@ -604,7 +604,7 @@ static void open_document_handler(ui_browser_window_state_t *state, bool result) if (!startdir.length) startdir = BOXSTRING("/"); - browser_state.title = strdup("Load Content"); + browser_state.title = strdup(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST)); browser_state.startdir = strdup([startdir UTF8String]); bool result = browser->open(&browser_state); From a552f26f76e622a952d33bb565b7a1edb9864fa9 Mon Sep 17 00:00:00 2001 From: natinusala Date: Wed, 31 Oct 2018 12:02:24 +0100 Subject: [PATCH 145/304] Don't link WIP menu drivers by default --- Makefile.common | 28 ++++++++++++++-------------- Makefile.libnx | 2 -- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/Makefile.common b/Makefile.common index 73836d6fd1..f7017a98bc 100644 --- a/Makefile.common +++ b/Makefile.common @@ -658,9 +658,9 @@ endif # XMB and MaterialUI are always enabled if supported and not explicitly disabled ifeq ($(HW_CONTEXT_MENU_DRIVERS), 1) - ifeq ($(HAVE_ZARCH),) - HAVE_ZARCH = 1 - endif + #ifeq ($(HAVE_ZARCH),) + #HAVE_ZARCH = 1 + #endif ifeq ($(HAVE_MATERIALUI),) HAVE_MATERIALUI = 1 @@ -674,20 +674,20 @@ ifeq ($(HW_CONTEXT_MENU_DRIVERS), 1) HAVE_XMB = 1 endif - ifeq ($(HAVE_STRIPES),) - HAVE_STRIPES = 1 - endif + #ifeq ($(HAVE_STRIPES),) + #HAVE_STRIPES = 1 + #endif - ifeq ($(HAVE_OZONE),) - HAVE_OZONE = 1 - endif + #ifeq ($(HAVE_OZONE),) + #HAVE_OZONE = 1 + #endif else - HAVE_ZARCH ?= 0 + HAVE_ZARCH ?= 0 HAVE_MATERIALUI ?= 0 - #HAVE_NUKLEAR ?= 0 - HAVE_XMB ?= 0 - HAVE_STRIPES ?= 0 - HAVE_OZONE ?= 0 + HAVE_NUKLEAR ?= 0 + HAVE_XMB ?= 0 + HAVE_STRIPES ?= 0 + HAVE_OZONE ?= 0 endif ifeq ($(HAVE_RGUI), 1) diff --git a/Makefile.libnx b/Makefile.libnx index 22fc9ccc76..689d8f6d47 100644 --- a/Makefile.libnx +++ b/Makefile.libnx @@ -56,10 +56,8 @@ ifeq ($(HAVE_OPENGL), 1) HAVE_RGUI = 1 HAVE_MATERIALUI = 1 - HAVE_ZARCH = 0 HAVE_XMB = 1 HAVE_OZONE = 1 - HAVE_STRIPES = 0 HAVE_OVERLAY = 1 else From 49082a8c806c9eac4977396a2879dbad7cb76dc8 Mon Sep 17 00:00:00 2001 From: natinusala Date: Thu, 1 Nov 2018 01:55:05 +0100 Subject: [PATCH 146/304] libnx: enable video recording --- frontend/drivers/platform_switch.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/drivers/platform_switch.c b/frontend/drivers/platform_switch.c index 603f9ba13d..756c9b8151 100644 --- a/frontend/drivers/platform_switch.c +++ b/frontend/drivers/platform_switch.c @@ -630,6 +630,9 @@ static void frontend_switch_init(void *data) gfxConfigureTransform(0); #endif /* HAVE_OPENGL */ + + appletInitializeGamePlayRecording(); + #ifdef NXLINK socketInitializeDefault(); nxlink_connected = nxlinkStdio() != -1; From 01864b4f6e8d4e1ac599f762c9ba17d8f5801d2f Mon Sep 17 00:00:00 2001 From: theheroGAC Date: Thu, 1 Nov 2018 09:25:36 +0100 Subject: [PATCH 147/304] Update msg_hash_it.h --- intl/msg_hash_it.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/intl/msg_hash_it.h b/intl/msg_hash_it.h index 028ca74cc1..3b428891f5 100644 --- a/intl/msg_hash_it.h +++ b/intl/msg_hash_it.h @@ -3552,17 +3552,17 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Colore del tema di Menu ") MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, - "Basic White" + "Bianco Basic " ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, - "Basic Black" + "Nero Basic" ) MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, - "Select a different color theme." + "Seleziona un tema con colorazione diversa." ) MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use preferred system color theme") + "Usa la colorazione preferita di sistema") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's color theme (if any) - overrides theme settings.") + "Utilizza la colorazione dei temi del sistema operativo (se presente) - impostazioni del tema di override.") From f92f5366b13af7c56c0df63ab5cb8a01bee6aad1 Mon Sep 17 00:00:00 2001 From: DEX357 Date: Thu, 1 Nov 2018 13:54:14 +0100 Subject: [PATCH 148/304] Update msg_hash_pl.h --- intl/msg_hash_pl.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 1a278f4484..7aeab8ae6e 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -3755,17 +3755,17 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Kolor menu") MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, - "Basic White" + "podstawowy odcień bieli" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, - "Basic Black" + "podstawowy odcień czerni" ) MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, - "Select a different color theme." + "Wybierz inny motyw koloru." ) MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use preferred system color theme") + "Użyj preferowanego motywu kolorystycznego systemu") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, - "Use your operating system's color theme (if any) - overrides theme settings.") + "Użyj motywu kolorystycznego systemu operacyjnego (jeśli jest dostępny) - zastępuje ustawienia kompozycji.") From 62cf1d6c37687629ec45a1e712bffcdb80d7af30 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 2 Nov 2018 11:18:54 +0100 Subject: [PATCH 149/304] (NL) Update Dutch --- intl/msg_hash_nl.h | 50 +++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index 94093064a7..7e9d5c85e7 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -940,9 +940,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE, MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_CLIENT, "Connect to Netplay host") MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_HOST, - "Begin hosting") + "Begin met hosten") MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_DISABLE_HOST, - "Eindig netplay host") + "Stop met hosten") MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_IP_ADDRESS, "Server Adres") MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_MODE, @@ -2350,7 +2350,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_BOKEH, MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOWFLAKE, "Sneeuwvlok") MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_REFRESH_ROOMS, - "Refresh Room List") + "Room Lijst Vernieuwen") MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME, "Nickname: %s") MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ROOM_NICKNAME_LAN, @@ -2368,7 +2368,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_USERNAME, MSG_HASH(MENU_ENUM_SUBLABEL_CHEEVOS_PASSWORD, "Input the password of your Retro Achievements account.") MSG_HASH(MENU_ENUM_SUBLABEL_NETPLAY_NICKNAME, - "Input your user name here. This will be used for netplay sessions, among other things.") + "Voer hier je gebruikersnaam in. Dit zal o.a. gebruikt worden voor netplay sessies.") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_POST_FILTER_RECORD, "Capture the image after filters (but not shaders) are applied. Your video will look as fancy as what you see on your screen.") MSG_HASH(MENU_ENUM_SUBLABEL_CORE_LIST, @@ -2378,7 +2378,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_LOAD_CONTENT_LIST, MSG_HASH(MENU_ENUM_SUBLABEL_NETWORK_INFORMATION, "Show network interface(s) and associated IP addresses.") MSG_HASH(MENU_ENUM_SUBLABEL_SYSTEM_INFORMATION, - "Show information specific to the device.") + "Laat apparaat-specifieke informatie zien.") MSG_HASH(MENU_ENUM_SUBLABEL_QUIT_RETROARCH, "Sluit het programma af.") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_WINDOW_WIDTH, @@ -2399,7 +2399,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_INPUT_OVERLAY_HIDE_IN_MENU, "Hide the overlay while inside the menu, and show it again when exiting the menu.") MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_COLLECTION_LIST, - "Scanned content will appear here." + "Gescande inhoud zal hier getoond worden." ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER, @@ -2559,19 +2559,19 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_OVERLAY_OPACITY, - "Opacity of all UI elements of the overlay." + "Doorzichtigheid van alle UI elementen van de overlay." ) MSG_HASH( MENU_ENUM_SUBLABEL_OVERLAY_SCALE, - "Scale of all UI elements of the overlay." + "Schalering van alle UI elements van de overlay." ) MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_OVERLAY_ENABLE, - "Enable the overlay." + "Activeer de overlay." ) MSG_HASH( MENU_ENUM_SUBLABEL_OVERLAY_PRESET, - "Select an overlay from the file browser." + "Selecteer een overlay d.m.v. bestands beheerder." ) MSG_HASH( MENU_ENUM_SUBLABEL_NETPLAY_IP_ADDRESS, @@ -2900,7 +2900,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_CHEAT_APPLY_CHANGES, "Cheat changes will take effect immediately.") MSG_HASH( MENU_ENUM_SUBLABEL_CHEAT_FILE_LOAD, - "Load a cheat file." + "Laad een cheat bestand." ) MSG_HASH( MENU_ENUM_SUBLABEL_CHEAT_FILE_SAVE_AS, @@ -2944,7 +2944,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_VOLUME, - "Audio Mixer Volume Level (dB)" + "Audio Mixer Volume Niveau (dB)" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_MUTE, @@ -2965,13 +2965,13 @@ MSG_HASH(MSG_PREPARING_FOR_CONTENT_SCAN, MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_DELETE, "Verwijder core") MSG_HASH(MENU_ENUM_SUBLABEL_CORE_DELETE, - "Remove this core from disk.") + "Verwijder deze core permanent.") MSG_HASH(MENU_ENUM_LABEL_VALUE_RENAME_ENTRY, "Rename the title of the entry.") MSG_HASH(MENU_ENUM_LABEL_RENAME_ENTRY, "Rename") MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FRAMEBUFFER_OPACITY, - "Framebuffer Opacity") + "Framebuffer Doorzichtigheid") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_FRAMEBUFFER_OPACITY, "Modify the opacity of the framebuffer.") MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_FAVORITES, @@ -2991,7 +2991,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_GOTO_VIDEO, MSG_HASH(MENU_ENUM_SUBLABEL_GOTO_VIDEO, "Videos which have been previously played will appear here.") MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE, - "Menu Icons") + "Menu Iconen") MSG_HASH(MENU_ENUM_SUBLABEL_MATERIALUI_ICONS_ENABLE, "Enable/disable the menu icons shown at the lefthand side of the menu entries.") MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_MAIN_MENU_ENABLE_SETTINGS, @@ -3105,7 +3105,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_KIOSK_MODE_PASSWORD, MSG_HASH(MENU_ENUM_SUBLABEL_MENU_KIOSK_MODE_PASSWORD, "Supplying a password when enabling kiosk mode makes it possible to later disable it from the menu, by going to the Main Menu, selecting Disable Kiosk Mode and entering the password.") MSG_HASH(MSG_INPUT_KIOSK_MODE_PASSWORD, - "Enter Password") + "Voer Wachtwoord In") MSG_HASH(MSG_INPUT_KIOSK_MODE_PASSWORD_OK, "Wachtwoord correct.") MSG_HASH(MSG_INPUT_KIOSK_MODE_PASSWORD_NOK, @@ -3180,13 +3180,13 @@ MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY, MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY, "Play") MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED, - "Play (Looped)") + "Afspelen (Loop)") MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_SEQUENTIAL, - "Play (Sequential)") + "Afspelen (Sequentieel)") MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_STOP, "Stop") MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE, - "Remove") + "Verwijderen") MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME, "Volume") MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE, @@ -3198,11 +3198,11 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DISCORD_IN_MENU, MSG_HASH(MENU_ENUM_LABEL_VALUE_DISCORD_IN_GAME, "In-Game") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISCORD_IN_GAME_PAUSED, - "In-Game (Paused)") + "In-Game (Gepauzeerd)") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISCORD_STATUS_PLAYING, - "Playing") + "Afspelen") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISCORD_STATUS_PAUSED, - "Paused") + "Gepauzeerd") MSG_HASH( MENU_ENUM_LABEL_VALUE_DISCORD_ALLOW, "Discord Inschakelen" @@ -3212,7 +3212,7 @@ MSG_HASH( "Enable or disable Discord support. Will not work with the browser version, only native desktop client." ) MSG_HASH(MENU_ENUM_LABEL_VALUE_POWER_MANAGEMENT_SETTINGS, - "Power Management") + "Energiebeheer") MSG_HASH(MENU_ENUM_SUBLABEL_POWER_MANAGEMENT_SETTINGS, "Change power management settings.") MSG_HASH(MENU_ENUM_LABEL_VALUE_SUSTAINED_PERFORMANCE_MODE, @@ -3339,11 +3339,11 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_OZONE_MENU_COLOR_THEME, "Menu Kleur Thema") MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_WHITE, - "Basic White" + "Wit" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_OZONE_COLOR_THEME_BASIC_BLACK, - "Basic Black" + "Zwart" ) MSG_HASH( MENU_ENUM_SUBLABEL_OZONE_MENU_COLOR_THEME, From ad6f89129064d17c4e3c4080e3df82911cbb7b3f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 2 Nov 2018 15:18:29 +0100 Subject: [PATCH 150/304] Hide MIDI settings if driver is set to null --- intl/msg_hash_nl.h | 54 ++++++++++++++++++++++----------------------- menu/menu_setting.c | 19 +++++++++------- 2 files changed, 38 insertions(+), 35 deletions(-) diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index 7e9d5c85e7..86ab943faa 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -486,9 +486,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NONE, "") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND, - "Directory niet gevonden.") + "Map niet gevonden.") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS, - "Directory") + "Map") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS, "Disk Cycle Tray Status") MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND, @@ -708,7 +708,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_HORIZ_WHEEL_DOWN, MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE, "Keyboard Gamepad Mapping Type") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MAX_USERS, - "Maximaal Aantal Gebruikers") + "Maximum Aantal Gebruikers") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO, "Menu Schakelaar Gamepad Combo") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, @@ -754,15 +754,15 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, "Reset game") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, - "Rewind") + "Terugspoelen") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, "Save state") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, - "Take screenshot") + "Schermafdruk maken") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, - "Next shader") + "Volgende shader") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, - "Previous shader") + "Vorige shader") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION_HOLD_KEY, "Slow motion") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, @@ -778,7 +778,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_ENABLE, MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU, "Verberg Overlay In Menu") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR, - "Poll Type Behavior") + "Poll Type Gedrag") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_EARLY, "Vroeg") MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_LATE, @@ -848,7 +848,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_VIETNAMESE, MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_ARABIC, "Arabic") MSG_HASH(MENU_ENUM_LABEL_VALUE_LEFT_ANALOG, - "Linkse Analoog Stick") + "Linkse Analoge Stick") MSG_HASH(MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH, "Core") MSG_HASH(MENU_ENUM_LABEL_VALUE_LIBRETRO_INFO_PATH, @@ -994,7 +994,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_ITEMS, MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_PERFORMANCE_COUNTERS, "Geen prestatie tellers.") MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_PLAYLISTS, - "No playlists.") + "Geen afspeellijsten.") MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE, "Geen afspeellijst items beschikbaar.") MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND, @@ -1058,9 +1058,9 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_PRESENT, MSG_HASH(MENU_ENUM_LABEL_VALUE_PRIVACY_SETTINGS, "Privacy") MSG_HASH(MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH, - "Sluit RetroArch") + "RetroArch Afsluiten") MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ANALOG, - "Analog supported") + "Analoge besturing ondersteund") MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_BBFC_RATING, "BBFC Rating") MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_CERO_RATING, @@ -1177,7 +1177,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY, MSG_HASH(MENU_ENUM_LABEL_VALUE_RGUI_SHOW_START_SCREEN, "Start Scherm Weergeven") MSG_HASH(MENU_ENUM_LABEL_VALUE_RIGHT_ANALOG, - "Rechtse Analog Stick") + "Rechtse Analoge Stick") MSG_HASH( MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES, "Toevoegen aan Favorieten" @@ -1611,11 +1611,11 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_WIFI_SETTINGS, MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_ALPHA_FACTOR, "Menu Alpha Factor") MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_RED, - "Menu Font Red Color") + "Menu Font Rode Kleur") MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_GREEN, - "Menu Font Green Color") + "Menu Font Groene Kleur") MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FONT_COLOR_BLUE, - "Menu Font Blue Color") + "Menu Font Blauwe Kleur") MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_FONT, "Menu Font") MSG_HASH(MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_CUSTOM, @@ -1821,13 +1821,13 @@ MSG_HASH(MSG_COMPILED_AGAINST_API, MSG_HASH(MSG_CONFIG_DIRECTORY_NOT_SET, "Config directory not set. Cannot save new config.") MSG_HASH(MSG_CONNECTED_TO, - "Connected to") + "Verbonden met") MSG_HASH(MSG_CONTENT_CRC32S_DIFFER, "Content CRC32s differ. Cannot use different games.") MSG_HASH(MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT, "Content loading skipped. Implementation will load it on its own.") MSG_HASH(MSG_CORE_DOES_NOT_SUPPORT_SAVESTATES, - "Core does not support save states.") + "Core heeft geen save state ondersteuning.") MSG_HASH(MSG_CORE_OPTIONS_FILE_CREATED_SUCCESSFULLY, "Core options file created successfully.") MSG_HASH(MSG_COULD_NOT_FIND_ANY_NEXT_DRIVER, @@ -1859,7 +1859,7 @@ MSG_HASH(MSG_DID_NOT_FIND_A_VALID_CONTENT_PATCH, MSG_HASH(MSG_DISCONNECT_DEVICE_FROM_A_VALID_PORT, "Disconnect device from a valid port.") MSG_HASH(MSG_DISK_CLOSED, - "Closed") + "Gesloten") MSG_HASH(MSG_DISK_EJECTED, "Ejected") MSG_HASH(MSG_DOWNLOADING, @@ -1867,15 +1867,15 @@ MSG_HASH(MSG_DOWNLOADING, MSG_HASH(MSG_DOWNLOAD_FAILED, "Download mislukt") MSG_HASH(MSG_ERROR, - "Error") + "Fout") MSG_HASH(MSG_ERROR_LIBRETRO_CORE_REQUIRES_CONTENT, "Libretro core heeft inhoud nodig, maar dat werd niet gegeven.") MSG_HASH(MSG_ERROR_LIBRETRO_CORE_REQUIRES_SPECIAL_CONTENT, "Libretro core heeft speciaal inhoud nodig, maar dat werd niet gegeven.") MSG_HASH(MSG_ERROR_PARSING_ARGUMENTS, - "Error parsing arguments.") + "Fout opgetreden tijdens het verwerken van de argumenten.") MSG_HASH(MSG_ERROR_SAVING_CORE_OPTIONS_FILE, - "Error saving core options file.") + "Fout opgetreden tijdens het opslaan van core opties bestand.") MSG_HASH(MSG_ERROR_SAVING_REMAP_FILE, "Fout is opgetreden tijdens het opslaan van remap bestand.") MSG_HASH(MSG_ERROR_SAVING_SHADER_PRESET, @@ -1887,7 +1887,7 @@ MSG_HASH(MSG_EXTRACTING, MSG_HASH(MSG_EXTRACTING_FILE, "Uitpakken van bestand") MSG_HASH(MSG_FAILED_SAVING_CONFIG_TO, - "Fout is opgetrijdens tijdens het opslaan van configuratie naar ") + "Fout is opgetreden tijdens het opslaan van configuratie naar ") MSG_HASH(MSG_FAILED_TO, "Failed to") MSG_HASH(MSG_FAILED_TO_ACCEPT_INCOMING_SPECTATOR, @@ -1973,7 +1973,7 @@ MSG_HASH(MSG_FOUND_FIRST_DATA_TRACK_ON_FILE, MSG_HASH(MSG_FOUND_LAST_STATE_SLOT, "Found last state slot") MSG_HASH(MSG_FOUND_SHADER, - "Found shader") + "Shader gevonden") MSG_HASH(MSG_FRAMES, "Frames") MSG_HASH(MSG_GAME_SPECIFIC_CORE_OPTIONS_FOUND_AT, @@ -2085,7 +2085,7 @@ MSG_HASH(MSG_REVERTING_SAVEFILE_DIRECTORY_TO, MSG_HASH(MSG_REVERTING_SAVESTATE_DIRECTORY_TO, "Reverting savestate directory to") MSG_HASH(MSG_REWINDING, - "Rewinding.") + "Terugspoelen.") MSG_HASH(MSG_REWIND_INIT, "Initializing rewind buffer with size") MSG_HASH(MSG_REWIND_INIT_FAILED, @@ -2093,7 +2093,7 @@ MSG_HASH(MSG_REWIND_INIT_FAILED, MSG_HASH(MSG_REWIND_INIT_FAILED_THREADED_AUDIO, "Implementation uses threaded audio. Cannot use rewind.") MSG_HASH(MSG_REWIND_REACHED_END, - "Reached end of rewind buffer.") + "Einde bereikt van terugspoel buffer.") MSG_HASH(MSG_SAVED_NEW_CONFIG_TO, "Saved new config to") MSG_HASH(MSG_SAVED_STATE_TO_SLOT, @@ -3154,7 +3154,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE_MENU, MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_ENABLE_MENU, "Enable or disable menu sound.") MSG_HASH(MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_SETTINGS, - "Mixer Settings") + "Mixer Instellingen") MSG_HASH(MENU_ENUM_SUBLABEL_AUDIO_MIXER_SETTINGS, "View and/or modify audio mixer settings.") MSG_HASH(MENU_ENUM_LABEL_VALUE_QUICK_MENU_OVERRIDE_OPTIONS, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index fd23fdcc53..a18666d49f 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4074,14 +4074,17 @@ static bool setting_append_list( &subgroup_info, parent_group); - CONFIG_ACTION( - list, list_info, - MENU_ENUM_LABEL_MIDI_SETTINGS, - MENU_ENUM_LABEL_VALUE_MIDI_SETTINGS, - &group_info, - &subgroup_info, - parent_group); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_LAKKA_ADVANCED); + if (string_is_not_equal(settings->arrays.midi_driver, "null")) + { + CONFIG_ACTION( + list, list_info, + MENU_ENUM_LABEL_MIDI_SETTINGS, + MENU_ENUM_LABEL_VALUE_MIDI_SETTINGS, + &group_info, + &subgroup_info, + parent_group); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_LAKKA_ADVANCED); + } for (user = 0; user < MAX_USERS; user++) setting_append_list_input_player_options(list, list_info, parent_group, user); From 1aded41b338ca1a606e2c111bf9019197c78c95b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 2 Nov 2018 15:29:29 +0100 Subject: [PATCH 151/304] Add more localized strings --- intl/msg_hash_ar.h | 10 ++++++++++ intl/msg_hash_chs.h | 10 ++++++++++ intl/msg_hash_cht.h | 10 ++++++++++ intl/msg_hash_de.h | 10 ++++++++++ intl/msg_hash_el.h | 10 ++++++++++ intl/msg_hash_eo.h | 10 ++++++++++ intl/msg_hash_es.h | 10 ++++++++++ intl/msg_hash_fr.h | 10 ++++++++++ intl/msg_hash_it.h | 10 ++++++++++ intl/msg_hash_ja.h | 10 ++++++++++ intl/msg_hash_ko.h | 10 ++++++++++ intl/msg_hash_nl.h | 10 ++++++++++ intl/msg_hash_pl.h | 10 ++++++++++ intl/msg_hash_pt_br.h | 10 ++++++++++ intl/msg_hash_pt_pt.h | 10 ++++++++++ intl/msg_hash_ru.h | 10 ++++++++++ intl/msg_hash_us.h | 10 ++++++++++ intl/msg_hash_vn.h | 10 ++++++++++ menu/menu_setting.c | 10 +++++----- msg_hash.h | 5 +++++ 20 files changed, 190 insertions(+), 5 deletions(-) diff --git a/intl/msg_hash_ar.h b/intl/msg_hash_ar.h index 8b2c710329..c041df1055 100644 --- a/intl/msg_hash_ar.h +++ b/intl/msg_hash_ar.h @@ -3696,3 +3696,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_chs.h b/intl/msg_hash_chs.h index a02caeeaa6..f2ca0cd115 100644 --- a/intl/msg_hash_chs.h +++ b/intl/msg_hash_chs.h @@ -4715,3 +4715,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_cht.h b/intl/msg_hash_cht.h index 1fb9e5dba5..01b032fcc1 100644 --- a/intl/msg_hash_cht.h +++ b/intl/msg_hash_cht.h @@ -3472,3 +3472,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_de.h b/intl/msg_hash_de.h index 2637884ab6..01e5e205ea 100644 --- a/intl/msg_hash_de.h +++ b/intl/msg_hash_de.h @@ -3608,3 +3608,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h index d6277e1154..17ff133ff0 100644 --- a/intl/msg_hash_el.h +++ b/intl/msg_hash_el.h @@ -7700,3 +7700,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_eo.h b/intl/msg_hash_eo.h index e2f0ebe25b..a2172786ad 100644 --- a/intl/msg_hash_eo.h +++ b/intl/msg_hash_eo.h @@ -3347,3 +3347,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index 0dc0ecaff4..dd588eee85 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -7637,3 +7637,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index 748d6aee42..e0295b0c35 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -3506,3 +3506,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_it.h b/intl/msg_hash_it.h index 3b428891f5..ba5f992d91 100644 --- a/intl/msg_hash_it.h +++ b/intl/msg_hash_it.h @@ -3566,3 +3566,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Usa la colorazione preferita di sistema") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Utilizza la colorazione dei temi del sistema operativo (se presente) - impostazioni del tema di override.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index 49e80b63d2..133b22d2c2 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -4015,3 +4015,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index 0cae872621..22f613879a 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -3467,3 +3467,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index 86ab943faa..c82cf6d559 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -3353,3 +3353,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Laagst") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lager") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normaal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Hoger") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Hoogst") diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 7aeab8ae6e..9ca0b84ee1 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -3769,3 +3769,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Użyj preferowanego motywu kolorystycznego systemu") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Użyj motywu kolorystycznego systemu operacyjnego (jeśli jest dostępny) - zastępuje ustawienia kompozycji.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index 41fe5e2788..a58aa4e2cd 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -7731,3 +7731,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_pt_pt.h b/intl/msg_hash_pt_pt.h index 68626e9a45..6e1c6df6d9 100644 --- a/intl/msg_hash_pt_pt.h +++ b/intl/msg_hash_pt_pt.h @@ -3433,3 +3433,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_ru.h b/intl/msg_hash_ru.h index 36145db042..419bbd3c85 100644 --- a/intl/msg_hash_ru.h +++ b/intl/msg_hash_ru.h @@ -3636,3 +3636,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 9189992a5b..f1bbb0d370 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -7731,3 +7731,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/intl/msg_hash_vn.h b/intl/msg_hash_vn.h index 6f4a5c5cf3..b3376cbe61 100644 --- a/intl/msg_hash_vn.h +++ b/intl/msg_hash_vn.h @@ -3506,3 +3506,13 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use preferred system color theme") MSG_HASH(MENU_ENUM_SUBLABEL_MENU_USE_PREFERRED_SYSTEM_COLOR_THEME, "Use your operating system's color theme (if any) - overrides theme settings.") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWEST, + "Lowest") +MSG_HASH(MSG_RESAMPLER_QUALITY_LOWER, + "Lower") +MSG_HASH(MSG_RESAMPLER_QUALITY_NORMAL, + "Normal") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHER, + "Higher") +MSG_HASH(MSG_RESAMPLER_QUALITY_HIGHEST, + "Highest") diff --git a/menu/menu_setting.c b/menu/menu_setting.c index a18666d49f..f5b91328c8 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1656,23 +1656,23 @@ static void setting_get_string_representation_uint_audio_resampler_quality( len); break; case RESAMPLER_QUALITY_LOWEST: - strlcpy(s, "Lowest", + strlcpy(s, msg_hash_to_str(MSG_RESAMPLER_QUALITY_LOWEST), len); break; case RESAMPLER_QUALITY_LOWER: - strlcpy(s, "Lower", + strlcpy(s, msg_hash_to_str(MSG_RESAMPLER_QUALITY_LOWER), len); break; case RESAMPLER_QUALITY_HIGHER: - strlcpy(s, "Higher", + strlcpy(s, msg_hash_to_str(MSG_RESAMPLER_QUALITY_HIGHER), len); break; case RESAMPLER_QUALITY_HIGHEST: - strlcpy(s, "Highest", + strlcpy(s, msg_hash_to_str(MSG_RESAMPLER_QUALITY_HIGHEST), len); break; case RESAMPLER_QUALITY_NORMAL: - strlcpy(s, "Normal", + strlcpy(s, msg_hash_to_str(MSG_RESAMPLER_QUALITY_NORMAL), len); break; } diff --git a/msg_hash.h b/msg_hash.h index 0642ca9abe..9e7b7b0433 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -184,6 +184,11 @@ enum msg_hash_enums MSG_NETPLAY_CANNOT_PLAY, MSG_NETPLAY_PEER_PAUSED, MSG_NETPLAY_CHANGED_NICK, + MSG_RESAMPLER_QUALITY_LOWEST, + MSG_RESAMPLER_QUALITY_LOWER, + MSG_RESAMPLER_QUALITY_NORMAL, + MSG_RESAMPLER_QUALITY_HIGHER, + MSG_RESAMPLER_QUALITY_HIGHEST, MSG_ADDED_TO_FAVORITES, MSG_RESET_CORE_ASSOCIATION, MSG_CORE_ASSOCIATION_RESET, From 7be48c80348a1c0d2afe931d1f57304f1c9247b0 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Fri, 2 Nov 2018 14:30:26 +0000 Subject: [PATCH 152/304] Add Normal2x CPU filter --- Makefile.common | 5 +- gfx/video_filter.c | 2 + gfx/video_filters/Makefile | 2 +- gfx/video_filters/Normal2x.filt | 1 + gfx/video_filters/normal2x.c | 218 ++++++++++++++++++++++++++++++++ griffin/griffin.c | 1 + 6 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 gfx/video_filters/Normal2x.filt create mode 100644 gfx/video_filters/normal2x.c diff --git a/Makefile.common b/Makefile.common index f7017a98bc..f6995db9ed 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1806,7 +1806,8 @@ OBJ += gfx/video_filters/2xsai.o \ gfx/video_filters/scale2x.o \ gfx/video_filters/blargg_ntsc_snes.o \ gfx/video_filters/lq2x.o \ - gfx/video_filters/phosphor2x.o + gfx/video_filters/phosphor2x.o \ + gfx/video_filters/normal2x.o endif ifeq ($(WANT_IOSUHAX), 1) @@ -1881,4 +1882,4 @@ endif ifeq ($(HAVE_HAKCHI), 1) CFLAGS += -DHAVE_HAKCHI endif -################################## \ No newline at end of file +################################## diff --git a/gfx/video_filter.c b/gfx/video_filter.c index 935c435e7a..bb76dbcba5 100644 --- a/gfx/video_filter.c +++ b/gfx/video_filter.c @@ -333,6 +333,7 @@ extern const struct softfilter_implementation *supertwoxsai_get_implementation(s extern const struct softfilter_implementation *twoxbr_get_implementation(softfilter_simd_mask_t simd); extern const struct softfilter_implementation *darken_get_implementation(softfilter_simd_mask_t simd); extern const struct softfilter_implementation *scale2x_get_implementation(softfilter_simd_mask_t simd); +extern const struct softfilter_implementation *normal2x_get_implementation(softfilter_simd_mask_t simd); static const softfilter_get_implementation_t soft_plugs_builtin[] = { blargg_ntsc_snes_get_implementation, @@ -345,6 +346,7 @@ static const softfilter_get_implementation_t soft_plugs_builtin[] = { supereagle_get_implementation, epx_get_implementation, scale2x_get_implementation, + normal2x_get_implementation, }; static bool append_softfilter_plugs(rarch_softfilter_t *filt, diff --git a/gfx/video_filters/Makefile b/gfx/video_filters/Makefile index 81c04b8f82..3a1a3e6b8f 100644 --- a/gfx/video_filters/Makefile +++ b/gfx/video_filters/Makefile @@ -70,7 +70,7 @@ ASMFLAGS := -INEON/asm asflags += -mfpu=neon endif -objects += blargg_ntsc_snes.$(DYLIB) phosphor2x.$(DYLIB) epx.$(DYLIB) lq2x.$(DYLIB) 2xsai.$(DYLIB) super2xsai.$(DYLIB) supereagle.$(DYLIB) 2xbr.$(DYLIB) darken.$(DYLIB) scale2x.$(DYLIB) +objects += blargg_ntsc_snes.$(DYLIB) phosphor2x.$(DYLIB) epx.$(DYLIB) lq2x.$(DYLIB) 2xsai.$(DYLIB) super2xsai.$(DYLIB) supereagle.$(DYLIB) 2xbr.$(DYLIB) darken.$(DYLIB) scale2x.$(DYLIB) normal2x.$(DYLIB) all: build; diff --git a/gfx/video_filters/Normal2x.filt b/gfx/video_filters/Normal2x.filt new file mode 100644 index 0000000000..500574af11 --- /dev/null +++ b/gfx/video_filters/Normal2x.filt @@ -0,0 +1 @@ +filter = normal2x diff --git a/gfx/video_filters/normal2x.c b/gfx/video_filters/normal2x.c new file mode 100644 index 0000000000..d39159b436 --- /dev/null +++ b/gfx/video_filters/normal2x.c @@ -0,0 +1,218 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2018 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +/* Compile: gcc -o normal2x.so -shared normal2x.c -std=c99 -O3 -Wall -pedantic -fPIC */ + +#include "softfilter.h" +#include + +#ifdef RARCH_INTERNAL +#define softfilter_get_implementation normal2x_get_implementation +#define softfilter_thread_data normal2x_softfilter_thread_data +#define filter_data normal2x_filter_data +#endif + +struct softfilter_thread_data +{ + void *out_data; + const void *in_data; + size_t out_pitch; + size_t in_pitch; + unsigned colfmt; + unsigned width; + unsigned height; + int first; + int last; +}; + +struct filter_data +{ + unsigned threads; + struct softfilter_thread_data *workers; + unsigned in_fmt; +}; + +static unsigned normal2x_generic_input_fmts(void) +{ + return SOFTFILTER_FMT_XRGB8888 | SOFTFILTER_FMT_RGB565; +} + +static unsigned normal2x_generic_output_fmts(unsigned input_fmts) +{ + return input_fmts; +} + +static unsigned normal2x_generic_threads(void *data) +{ + struct filter_data *filt = (struct filter_data*)data; + return filt->threads; +} + +static void *normal2x_generic_create(const struct softfilter_config *config, + unsigned in_fmt, unsigned out_fmt, + unsigned max_width, unsigned max_height, + unsigned threads, softfilter_simd_mask_t simd, void *userdata) +{ + struct filter_data *filt = (struct filter_data*)calloc(1, sizeof(*filt)); + (void)simd; + (void)config; + (void)userdata; + + if (!filt) { + return NULL; + } + /* Apparently the code is not thread-safe, + * so force single threaded operation... */ + filt->workers = (struct softfilter_thread_data*)calloc(1, sizeof(struct softfilter_thread_data)); + filt->threads = 1; + filt->in_fmt = in_fmt; + if (!filt->workers) { + free(filt); + return NULL; + } + return filt; +} + +static void normal2x_generic_output(void *data, + unsigned *out_width, unsigned *out_height, + unsigned width, unsigned height) +{ + *out_width = width << 1; + *out_height = height << 1; +} + +static void normal2x_generic_destroy(void *data) +{ + struct filter_data *filt = (struct filter_data*)data; + if (!filt) { + return; + } + free(filt->workers); + free(filt); +} + +static void normal2x_work_cb_xrgb8888(void *data, void *thread_data) +{ + struct softfilter_thread_data *thr = (struct softfilter_thread_data*)thread_data; + const uint32_t *input = (const uint32_t*)thr->in_data; + uint32_t *output = (uint32_t*)thr->out_data; + unsigned in_stride = (unsigned)(thr->in_pitch >> 2); + unsigned out_stride = (unsigned)(thr->out_pitch >> 2); + unsigned x, y; + + for (y = 0; y < thr->height; ++y) + { + uint32_t *out_ptr = output; + for (x = 0; x < thr->width; ++x) + { + uint64_t colour = (uint64_t)*(input + x); + colour |= colour << 32; + + *(uint64_t *)(out_ptr) = colour; + *(uint64_t *)(out_ptr + out_stride) = colour; + + out_ptr += 2; + } + + input += in_stride; + output += out_stride << 1; + } +} + +static void normal2x_work_cb_rgb565(void *data, void *thread_data) +{ + struct softfilter_thread_data *thr = (struct softfilter_thread_data*)thread_data; + const uint16_t *input = (const uint16_t*)thr->in_data; + uint16_t *output = (uint16_t*)thr->out_data; + unsigned in_stride = (unsigned)(thr->in_pitch >> 1); + unsigned out_stride = (unsigned)(thr->out_pitch >> 1); + unsigned x, y; + + for (y = 0; y < thr->height; ++y) + { + uint16_t * out_ptr = output; + for (x = 0; x < thr->width; ++x) + { + uint32_t colour = (uint32_t)*(input + x); + colour |= colour << 16; + + *(uint32_t *)(out_ptr) = colour; + *(uint32_t *)(out_ptr + out_stride) = colour; + + out_ptr += 2; + } + + input += in_stride; + output += out_stride << 1; + } +} + +static void normal2x_generic_packets(void *data, + struct softfilter_work_packet *packets, + void *output, size_t output_stride, + const void *input, unsigned width, unsigned height, size_t input_stride) +{ + /* We are guaranteed single threaded operation + * (filt->threads = 1) so we don't need to loop + * over threads and can cull some code. This only + * makes the tiniest performance difference, but + * every little helps when running on an o3DS... */ + struct filter_data *filt = (struct filter_data*)data; + struct softfilter_thread_data *thr = (struct softfilter_thread_data*)&filt->workers[0]; + + thr->out_data = (uint8_t*)output; + thr->in_data = (const uint8_t*)input; + thr->out_pitch = output_stride; + thr->in_pitch = input_stride; + thr->width = width; + thr->height = height; + + if (filt->in_fmt == SOFTFILTER_FMT_XRGB8888) { + packets[0].work = normal2x_work_cb_xrgb8888; + } else if (filt->in_fmt == SOFTFILTER_FMT_RGB565) { + packets[0].work = normal2x_work_cb_rgb565; + } + packets[0].thread_data = thr; +} + +static const struct softfilter_implementation normal2x_generic = { + normal2x_generic_input_fmts, + normal2x_generic_output_fmts, + + normal2x_generic_create, + normal2x_generic_destroy, + + normal2x_generic_threads, + normal2x_generic_output, + normal2x_generic_packets, + + SOFTFILTER_API_VERSION, + "Normal2x", + "normal2x", +}; + +const struct softfilter_implementation *softfilter_get_implementation( + softfilter_simd_mask_t simd) +{ + (void)simd; + return &normal2x_generic; +} + +#ifdef RARCH_INTERNAL +#undef softfilter_get_implementation +#undef softfilter_thread_data +#undef filter_data +#endif diff --git a/griffin/griffin.c b/griffin/griffin.c index 237ce3a9c5..e063951f5c 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -860,6 +860,7 @@ FILTERS #include "../gfx/video_filters/blargg_ntsc_snes.c" #include "../gfx/video_filters/lq2x.c" #include "../gfx/video_filters/phosphor2x.c" +#include "../gfx/video_filters/normal2x.c" #include "../libretro-common/audio/dsp_filters/echo.c" #include "../libretro-common/audio/dsp_filters/eq.c" From e374061f90a0c8d11aa0e989116ad202c8ae6d66 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 2 Nov 2018 16:30:52 +0100 Subject: [PATCH 153/304] Cleanups --- dynamic.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/dynamic.c b/dynamic.c index bf2136e9dc..b957db5943 100644 --- a/dynamic.c +++ b/dynamic.c @@ -54,7 +54,6 @@ #include "camera/camera_driver.h" #include "location/location_driver.h" #include "record/record_driver.h" -#include "core.h" #include "driver.h" #include "performance_counters.h" #include "gfx/video_driver.h" @@ -62,13 +61,11 @@ #include "midi/midi_driver.h" #include "cores/internal_cores.h" -#include "frontend/frontend_driver.h" #include "content.h" #include "dirs.h" #include "paths.h" #include "retroarch.h" #include "configuration.h" -#include "msg_hash.h" #include "verbosity.h" #include "tasks/tasks_internal.h" From 7ec627d41df14d782419999a010ab0e6aae21d1a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 2 Nov 2018 16:32:32 +0100 Subject: [PATCH 154/304] Cleanups --- driver.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/driver.c b/driver.c index 68f5b314d7..a282df040c 100644 --- a/driver.c +++ b/driver.c @@ -18,8 +18,6 @@ #include #include -#include