From edacf67e7545af5e2edce63efc16e6cd8c4b10c2 Mon Sep 17 00:00:00 2001 From: Nathan Strong Date: Thu, 18 Oct 2018 11:07:47 -0700 Subject: [PATCH 001/979] 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 002/979] 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 d03c0be71d4ec1920c9edb4f2f3b0fcab0fcc430 Mon Sep 17 00:00:00 2001 From: Nathan Strong Date: Thu, 18 Oct 2018 16:38:02 -0700 Subject: [PATCH 003/979] 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 004/979] 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 005/979] 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 006/979] 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 007/979] 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 008/979] 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 009/979] 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 010/979] 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 011/979] 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 012/979] 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 013/979] 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 014/979] 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 015/979] 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 016/979] 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 017/979] 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 018/979] 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 019/979] 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 020/979] 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 021/979] 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 022/979] 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 023/979] 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 024/979] 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 025/979] 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 026/979] 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 027/979] 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 028/979] 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 029/979] 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 030/979] 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 031/979] 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 032/979] 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 033/979] 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 034/979] 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 035/979] 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 036/979] 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 037/979] 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 038/979] (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 039/979] (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 040/979] 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 041/979] (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 042/979] 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 043/979] 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 044/979] 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 045/979] 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 046/979] (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 047/979] (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 048/979] (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 049/979] 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 050/979] 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 051/979] 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 052/979] 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 053/979] [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 054/979] 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 055/979] 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 056/979] [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 057/979] [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 058/979] 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 059/979] 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 060/979] (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 061/979] (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 062/979] 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 063/979] 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 064/979] 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 065/979] 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 066/979] 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 067/979] (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 068/979] 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 069/979] 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 070/979] 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 071/979] 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 072/979] (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 073/979] 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 074/979] 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 075/979] 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 076/979] 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 077/979] 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