diff --git a/database_info.c b/database_info.c index cba0b2b07e..91a281c3f1 100644 --- a/database_info.c +++ b/database_info.c @@ -50,6 +50,7 @@ #define DB_CURSOR_ROM_NAME 0x16bbcf13U #define DB_CURSOR_NAME 0x7c9b0c46U #define DB_CURSOR_DESCRIPTION 0x91b0c789U +#define DB_CURSOR_GENRE 0x0f802156U #define DB_CURSOR_PUBLISHER 0x5e099013U #define DB_CURSOR_DEVELOPER 0x1783d2abU #define DB_CURSOR_ORIGIN 0x1315e3edU @@ -267,6 +268,9 @@ static int database_cursor_iterate(libretrodb_cursor_t *cur, case DB_CURSOR_DESCRIPTION: db_info->description = strdup(val->val.string.buff); break; + case DB_CURSOR_GENRE: + db_info->genre = strdup(val->val.string.buff); + break; case DB_CURSOR_PUBLISHER: db_info->publisher = strdup(val->val.string.buff); break; diff --git a/database_info.h b/database_info.h index b511fedc17..2a6c3ec539 100644 --- a/database_info.h +++ b/database_info.h @@ -64,6 +64,7 @@ typedef struct char *rom_name; char *serial; char *description; + char *genre; char *publisher; struct string_list *developer; char *origin; diff --git a/libretro-db/c_converter.c b/libretro-db/c_converter.c index 61213505cf..f660d11463 100644 --- a/libretro-db/c_converter.c +++ b/libretro-db/c_converter.c @@ -557,6 +557,7 @@ dat_converter_rdb_mappings_t rdb_mappings[] = { {"name", "name", DAT_CONVERTER_RDB_TYPE_STRING}, {"description", "description", DAT_CONVERTER_RDB_TYPE_STRING}, + {"genre", "genre", DAT_CONVERTER_RDB_TYPE_STRING}, {"rom.name", "rom_name", DAT_CONVERTER_RDB_TYPE_STRING}, {"rom.size", "size", DAT_CONVERTER_RDB_TYPE_UINT}, {"users", "users", DAT_CONVERTER_RDB_TYPE_UINT}, diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index d896415021..f99800eac0 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -476,6 +476,8 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) return "video_shader_num_passes"; case MENU_LABEL_RDB_ENTRY_DESCRIPTION: return "rdb_entry_description"; + case MENU_LABEL_RDB_ENTRY_GENRE: + return "rdb_entry_genre"; case MENU_LABEL_RDB_ENTRY_ORIGIN: return "rdb_entry_origin"; case MENU_LABEL_RDB_ENTRY_PUBLISHER: @@ -1554,6 +1556,8 @@ const char *menu_hash_to_str_us(uint32_t hash) return "Publisher"; case MENU_LABEL_VALUE_RDB_ENTRY_DESCRIPTION: return "Description"; + case MENU_LABEL_VALUE_RDB_ENTRY_GENRE: + return "Genre"; case MENU_LABEL_VALUE_RDB_ENTRY_NAME: return "Name"; case MENU_LABEL_VALUE_RDB_ENTRY_ORIGIN: diff --git a/menu/intl/menu_hash_uspseudo.c b/menu/intl/menu_hash_uspseudo.c index 6c06d553bc..ac8b27ee5e 100644 --- a/menu/intl/menu_hash_uspseudo.c +++ b/menu/intl/menu_hash_uspseudo.c @@ -411,6 +411,8 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) return "video_shader_num_passes"; case MENU_LABEL_RDB_ENTRY_DESCRIPTION: return "rdb_entry_description"; + case MENU_LABEL_RDB_ENTRY_GENRE: + return "rdb_entry_genre"; case MENU_LABEL_RDB_ENTRY_ORIGIN: return "rdb_entry_origin"; case MENU_LABEL_RDB_ENTRY_PUBLISHER: @@ -1421,6 +1423,8 @@ const char *menu_hash_to_str_us(uint32_t hash) return "Püblìsher"; case MENU_LABEL_VALUE_RDB_ENTRY_DESCRIPTION: return "Ðéscrîptioñ"; + case MENU_LABEL_VALUE_RDB_ENTRY_GENRE: + return "Génre"; case MENU_LABEL_VALUE_RDB_ENTRY_NAME: return "Name"; case MENU_LABEL_VALUE_RDB_ENTRY_ORIGIN: diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 4125f57ede..8f7f8f49a0 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1254,6 +1254,17 @@ static int menu_displaylist_parse_database_entry(menu_displaylist_info_t *info) menu_hash_to_str(MENU_LABEL_RDB_ENTRY_DESCRIPTION), 0, 0, 0); } + if (db_info_entry->genre) + { + strlcpy(tmp, + menu_hash_to_str(MENU_LABEL_VALUE_RDB_ENTRY_GENRE), + sizeof(tmp)); + strlcat(tmp, ": ", sizeof(tmp)); + strlcat(tmp, db_info_entry->genre, sizeof(tmp)); + menu_entries_push(info->list, tmp, + menu_hash_to_str(MENU_LABEL_RDB_ENTRY_GENRE), + 0, 0, 0); + } if (db_info_entry->publisher) { if (create_string_list_rdb_entry_string( diff --git a/menu/menu_hash.h b/menu/menu_hash.h index 2593fcd558..ab14c6ed67 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -557,7 +557,9 @@ extern "C" { #define MENU_LABEL_RDB_ENTRY_COOP 0x7c953ff6U #define MENU_LABEL_RDB_ENTRY_START_CONTENT 0x95025a55U #define MENU_LABEL_RDB_ENTRY_DESCRIPTION 0x26aa1f71U +#define MENU_LABEL_RDB_ENTRY_GENRE 0x9fefab3eU #define MENU_LABEL_VALUE_RDB_ENTRY_DESCRIPTION 0xe61a1f69U +#define MENU_LABEL_VALUE_RDB_ENTRY_GENRE 0x0d3d1136U #define MENU_LABEL_RDB_ENTRY_NAME 0xc6ccf92eU #define MENU_LABEL_VALUE_RDB_ENTRY_NAME 0x7c898026U #define MENU_LABEL_RDB_ENTRY_PUBLISHER 0x4d7bcdfbU