Skip to content

Commit 1b9f8a5

Browse files
committed
Connect message parts.
1 parent 55ff975 commit 1b9f8a5

File tree

7 files changed

+69
-14
lines changed

7 files changed

+69
-14
lines changed

cores/libretro-net-retropad/net_retropad_core.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1447,9 +1447,23 @@ bool NETRETROPAD_CORE_PREFIX(retro_load_game_special)(unsigned type,
14471447
const struct retro_game_info *info, size_t num) { return false; }
14481448
size_t NETRETROPAD_CORE_PREFIX(retro_serialize_size)(void) { return 0; }
14491449
bool NETRETROPAD_CORE_PREFIX(retro_serialize)(void *data,
1450-
size_t len) { return false; }
1450+
size_t len)
1451+
{
1452+
struct retro_error_message e;
1453+
e.code = RETROE_UNSUPPORTED_ACTION_SERIALIZE;
1454+
e.message = NULL;
1455+
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_ERROR_CODE, &e);
1456+
return false;
1457+
}
14511458
bool NETRETROPAD_CORE_PREFIX(retro_unserialize)(const void *data,
1452-
size_t len) { return false; }
1459+
size_t len)
1460+
{
1461+
struct retro_error_message e;
1462+
e.code = RETROE_UNSUPPORTED_ACTION_UNSERIALIZE;
1463+
e.message = NULL;
1464+
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_ERROR_CODE, &e);
1465+
return false;
1466+
}
14531467
size_t NETRETROPAD_CORE_PREFIX(retro_get_memory_size)(
14541468
unsigned id) { return 0; }
14551469
void NETRETROPAD_CORE_PREFIX(retro_cheat_reset)(void) { }

intl/msg_hash_us.c

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -513,14 +513,14 @@ int msg_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len)
513513

514514
#define ERROR_CODE_CASE(CODE) \
515515
case CODE :\
516-
strlcpy(s, msg_hash_to_str(MSG_##CODE), len);\
516+
return strlcpy(s, msg_hash_to_str(MSG_##CODE), len);\
517517
break;
518518

519519
int msg_hash_get_error_msg_us_enum(enum retro_error err, char *s, size_t len)
520520
{
521521
settings_t *settings = config_get_ptr();
522522

523-
switch (err)
523+
switch (err & RETROE_MASK_FRONTEND)
524524
{
525525
ERROR_CODE_CASE(RETROE_UNSUPPORTED_CONTENT)
526526
ERROR_CODE_CASE(RETROE_UNSUPPORTED_CONTENT_ISO_FORMAT_ERROR)
@@ -534,7 +534,12 @@ int msg_hash_get_error_msg_us_enum(enum retro_error err, char *s, size_t len)
534534
ERROR_CODE_CASE(RETROE_MISSING_BIOS_REGION_PAL)
535535
ERROR_CODE_CASE(RETROE_MISSING_BIOS_REGION_NTSC)
536536
ERROR_CODE_CASE(RETROE_MISSING_BIOS_REGION_WORLD)
537+
ERROR_CODE_CASE(RETROE_MISSING_BIOS_REGION_USA)
538+
ERROR_CODE_CASE(RETROE_MISSING_BIOS_REGION_JAPAN)
539+
ERROR_CODE_CASE(RETROE_MISSING_BIOS_REGION_EUROPE)
540+
ERROR_CODE_CASE(RETROE_MISSING_BIOS_REGION_BRAZIL)
537541
ERROR_CODE_CASE(RETROE_MISSING_BIOS_REGION_COUNTRY)
542+
ERROR_CODE_CASE(RETROE_MISSING_SYSTEM_FILES)
538543
ERROR_CODE_CASE(RETROE_HARDWARE_RENDERING)
539544
ERROR_CODE_CASE(RETROE_HARDWARE_RENDERING_VULKAN_NOT_AVAILABLE)
540545
ERROR_CODE_CASE(RETROE_HARDWARE_RENDERING_VULKAN_VERSION_ERROR)
@@ -551,7 +556,20 @@ int msg_hash_get_error_msg_us_enum(enum retro_error err, char *s, size_t len)
551556
ERROR_CODE_CASE(RETROE_UNSUPPORTED_ACTION_CORE_OPTION_COMBI)
552557

553558
default:
554-
return -1;
559+
if ( err > RETROE_UNSUPPORTED_CONTENT &&
560+
err < RETROE_UNSUPPORTED_CONTENT_RANGE_END)
561+
return strlcpy(s, msg_hash_to_str(MSG_RETROE_UNSUPPORTED_CONTENT), len);
562+
else if ( err > RETROE_MISSING_BIOS &&
563+
err < RETROE_MISSING_BIOS_RANGE_END)
564+
return strlcpy(s, msg_hash_to_str(MSG_RETROE_MISSING_BIOS), len);
565+
else if ( err > RETROE_HARDWARE_RENDERING &&
566+
err < RETROE_HARDWARE_RENDERING_RANGE_END)
567+
return strlcpy(s, msg_hash_to_str(MSG_RETROE_HARDWARE_RENDERING), len);
568+
else if ( err > RETROE_UNSUPPORTED_ACTION &&
569+
err < RETROE_UNSUPPORTED_ACTION_RANGE_END)
570+
return strlcpy(s, msg_hash_to_str(MSG_RETROE_UNSUPPORTED_ACTION), len);
571+
else
572+
return strlcpy(s, msg_hash_to_str(MSG_RETROE_UNKNOWN), len);
555573
}
556574
return 0;
557575
}

intl/msg_hash_us.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16707,6 +16707,10 @@ MSG_HASH(
1670716707
MSG_AI_SERVICE_STOPPED,
1670816708
"stopped."
1670916709
)
16710+
MSG_HASH(
16711+
MSG_RETROE_UNKNOWN,
16712+
"Unknown error code received from core."
16713+
)
1671016714
MSG_HASH(
1671116715
MSG_RETROE_UNSUPPORTED_CONTENT,
1671216716
"This core does not support this kind of content."
@@ -16789,15 +16793,15 @@ MSG_HASH(
1678916793
)
1679016794
MSG_HASH(
1679116795
MSG_RETROE_HARDWARE_RENDERING_VULKAN_VERSION_ERROR,
16792-
"This core would require Vulkan rendering version that is not available."
16796+
"This core would require a Vulkan rendering version that is not available."
1679316797
)
1679416798
MSG_HASH(
1679516799
MSG_RETROE_HARDWARE_RENDERING_OPENGL_NOT_AVAILABLE,
1679616800
"This core would require OpenGL rendering that is not available."
1679716801
)
1679816802
MSG_HASH(
1679916803
MSG_RETROE_HARDWARE_RENDERING_OPENGL_VERSION_ERROR,
16800-
"This core would require OpenGL rendering version that is not available."
16804+
"This core would require an OpenGL rendering version that is not available."
1680116805
)
1680216806
MSG_HASH(
1680316807
MSG_RETROE_HARDWARE_RENDERING_DX11_NOT_AVAILABLE,

libretro-common/include/libretro.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,8 @@ enum retro_error
754754
/* Content would need system files from online updater */
755755
RETROE_MISSING_SYSTEM_FILES = 0x02300000,
756756
RETROE_MISSING_BIOS_RANGE_END = 0x02FFFFFF,
757-
/* A problem with the available display rendering from the frontend */
757+
/* A problem with the available display rendering from the frontend,
758+
* not covered by more specific codes. */
758759
RETROE_HARDWARE_RENDERING = 0x03000000,
759760
/* Specific API not available in general or with the required version */
760761
RETROE_HARDWARE_RENDERING_VULKAN_NOT_AVAILABLE = 0x03010000,

msg_hash.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ int msg_hash_get_help_enum(enum msg_hash_enums msg, char *s, size_t len)
5454
return ret;
5555
}
5656

57+
int msg_hash_get_error_msg_enum(enum retro_error err, char *s, size_t len)
58+
{
59+
return msg_hash_get_error_msg_us_enum(err, s, len);
60+
}
61+
5762
const char *get_user_language_iso639_1(bool limit)
5863
{
5964
switch (uint_user_language)

msg_hash.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <limits.h>
2424
#include <boolean.h>
2525
#include <retro_common_api.h>
26+
#include <libretro.h>
2627

2728
#include "input/input_defines.h"
2829

@@ -4294,6 +4295,7 @@ enum msg_hash_enums
42944295
MSG_3DS_BOTTOM_MENU_SAVE_STATE,
42954296
MSG_3DS_BOTTOM_MENU_LOAD_STATE,
42964297

4298+
MSG_RETROE_UNKNOWN,
42974299
MSG_RETROE_UNSUPPORTED_CONTENT,
42984300
MSG_RETROE_UNSUPPORTED_CONTENT_ISO_FORMAT_ERROR,
42994301
MSG_RETROE_UNSUPPORTED_CONTENT_CHD_FORMAT_ERROR,
@@ -4345,11 +4347,13 @@ enum msg_hash_enums
43454347
/* Callback strings */
43464348

43474349
const char *msg_hash_to_str(enum msg_hash_enums msg);
4348-
43494350
const char *msg_hash_to_str_us(enum msg_hash_enums msg);
4350-
int msg_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len);
43514351

43524352
int msg_hash_get_help_enum(enum msg_hash_enums msg, char *s, size_t len);
4353+
int msg_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len);
4354+
4355+
int msg_hash_get_error_msg_enum(enum retro_error err, char *s, size_t len);
4356+
int msg_hash_get_error_msg_us_enum(enum retro_error err, char *s, size_t len);
43534357

43544358
enum msg_file_type msg_hash_to_file_type(uint32_t hash);
43554359

runloop.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -452,8 +452,13 @@ static void runloop_display_error_code(const char *err, const char *func)
452452
_len = snprintf(msg + _len, sizeof(msg) - _len, "%04X-%04x: ",
453453
(runloop_st->last_error_code & RETROE_MASK_FRONTEND) >> 16,
454454
runloop_st->last_error_code & RETROE_MASK_CORE);
455-
_len += strlcpy(msg + _len, runloop_st->last_error_message,
456-
sizeof(msg) - _len);
455+
456+
if (runloop_st->last_error_message[0] != '\0')
457+
_len += strlcpy(msg + _len, runloop_st->last_error_message,
458+
sizeof(msg) - _len);
459+
else
460+
_len += msg_hash_get_error_msg_enum(runloop_st->last_error_code,
461+
msg + _len, sizeof(msg) - _len);
457462

458463
runloop_msg_queue_push(msg, _len,
459464
2, 180, false, NULL, MESSAGE_QUEUE_ICON_DEFAULT, cat);
@@ -3617,7 +3622,8 @@ bool runloop_environment_cb(unsigned cmd, void *data)
36173622
{
36183623
struct retro_error_message *msg = (struct retro_error_message *)data;
36193624
runloop_st->last_error_code = msg->code;
3620-
strlcpy(runloop_st->last_error_message,msg->message,sizeof(runloop_st->last_error_message));
3625+
if (msg->message)
3626+
strlcpy(runloop_st->last_error_message,msg->message,sizeof(runloop_st->last_error_message));
36213627
runloop_display_error_code("DBG", "retro_environment_set");
36223628
}
36233629
}
@@ -7769,11 +7775,14 @@ bool core_unserialize(retro_ctx_serialize_info_t *info)
77697775
if (!info || !runloop_st->current_core.retro_unserialize(info->data_const, info->size))
77707776
{
77717777
if (runloop_st->last_error_code)
7772-
runloop_display_error_code("LOG", "core_unserialize");
7778+
runloop_display_error_code("ERR", "core_unserialize");
77737779

77747780
return false;
77757781
}
77767782

7783+
if (runloop_st->last_error_code)
7784+
runloop_display_error_code("LOG", "core_unserialize");
7785+
77777786
#ifdef HAVE_NETWORKING
77787787
netplay_driver_ctl(RARCH_NETPLAY_CTL_LOAD_SAVESTATE, info);
77797788
#endif

0 commit comments

Comments
 (0)