mirror of
https://github.com/libretro/RetroArch.git
synced 2024-11-24 00:20:01 +00:00
Move some command functions over from retroarch.c to command.c - the
other ones have some dependencies on static locals in retroarch.c so can't be easily transferred over for now
This commit is contained in:
parent
cd126f0236
commit
2f14d2e4e2
72
command.c
72
command.c
@ -28,6 +28,10 @@
|
|||||||
#include "verbosity.h"
|
#include "verbosity.h"
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_CHEEVOS
|
||||||
|
#include "cheevos/cheevos.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define CMD_BUF_SIZE 4096
|
#define CMD_BUF_SIZE 4096
|
||||||
|
|
||||||
#if defined(HAVE_COMMAND)
|
#if defined(HAVE_COMMAND)
|
||||||
@ -532,4 +536,72 @@ bool command_network_send(const char *cmd_)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
bool command_show_osd_msg(command_t *cmd, const char* arg)
|
||||||
|
{
|
||||||
|
runloop_msg_queue_push(arg, 1, 180, false, NULL,
|
||||||
|
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(HAVE_CHEEVOS)
|
||||||
|
bool command_read_ram(command_t *cmd, const char *arg)
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
char *reply = NULL;
|
||||||
|
const uint8_t *data = NULL;
|
||||||
|
char *reply_at = NULL;
|
||||||
|
unsigned int nbytes = 0;
|
||||||
|
unsigned int alloc_size = 0;
|
||||||
|
unsigned int addr = -1;
|
||||||
|
unsigned int len = 0;
|
||||||
|
|
||||||
|
if (sscanf(arg, "%x %u", &addr, &nbytes) != 2)
|
||||||
|
return true;
|
||||||
|
/* We allocate more than needed, saving 20 bytes is not really relevant */
|
||||||
|
alloc_size = 40 + nbytes * 3;
|
||||||
|
reply = (char*)malloc(alloc_size);
|
||||||
|
reply[0] = '\0';
|
||||||
|
reply_at = reply + snprintf(
|
||||||
|
reply, alloc_size - 1, "READ_CORE_RAM" " %x", addr);
|
||||||
|
|
||||||
|
if ((data = rcheevos_patch_address(addr)))
|
||||||
|
{
|
||||||
|
for (i = 0; i < nbytes; i++)
|
||||||
|
snprintf(reply_at + 3 * i, 4, " %.2X", data[i]);
|
||||||
|
reply_at[3 * nbytes] = '\n';
|
||||||
|
len = reply_at + 3 * nbytes + 1 - reply;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strlcpy(reply_at, " -1\n", sizeof(reply) - strlen(reply));
|
||||||
|
len = reply_at + STRLEN_CONST(" -1\n") - reply;
|
||||||
|
}
|
||||||
|
cmd->replier(cmd, reply, len);
|
||||||
|
free(reply);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool command_write_ram(command_t *cmd, const char *arg)
|
||||||
|
{
|
||||||
|
unsigned int addr = (unsigned int)strtoul(arg, (char**)&arg, 16);
|
||||||
|
uint8_t *data = (uint8_t *)rcheevos_patch_address(addr);
|
||||||
|
|
||||||
|
if (!data)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (rcheevos_hardcore_active())
|
||||||
|
{
|
||||||
|
RARCH_LOG("Achievements hardcore mode disabled by WRITE_CORE_RAM\n");
|
||||||
|
rcheevos_pause_hardcore();
|
||||||
|
}
|
||||||
|
|
||||||
|
while (*arg)
|
||||||
|
{
|
||||||
|
*data = strtoul(arg, (char**)&arg, 16);
|
||||||
|
data++;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
69
retroarch.c
69
retroarch.c
@ -10485,7 +10485,6 @@ static void retroarch_autosave_deinit(struct rarch_state *p_rarch)
|
|||||||
/* COMMAND */
|
/* COMMAND */
|
||||||
|
|
||||||
#ifdef HAVE_COMMAND
|
#ifdef HAVE_COMMAND
|
||||||
|
|
||||||
bool command_version(command_t *cmd, const char* arg)
|
bool command_version(command_t *cmd, const char* arg)
|
||||||
{
|
{
|
||||||
char reply[256] = {0};
|
char reply[256] = {0};
|
||||||
@ -10532,13 +10531,6 @@ bool command_get_status(command_t *cmd, const char* arg)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool command_show_osd_msg(command_t *cmd, const char* arg)
|
|
||||||
{
|
|
||||||
runloop_msg_queue_push(arg, 1, 180, false, NULL,
|
|
||||||
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool command_get_config_param(command_t *cmd, const char* arg)
|
bool command_get_config_param(command_t *cmd, const char* arg)
|
||||||
{
|
{
|
||||||
char reply[8192] = {0};
|
char reply[8192] = {0};
|
||||||
@ -10580,67 +10572,6 @@ bool command_get_config_param(command_t *cmd, const char* arg)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HAVE_CHEEVOS)
|
|
||||||
bool command_read_ram(command_t *cmd, const char *arg)
|
|
||||||
{
|
|
||||||
unsigned i;
|
|
||||||
char *reply = NULL;
|
|
||||||
const uint8_t *data = NULL;
|
|
||||||
char *reply_at = NULL;
|
|
||||||
unsigned int nbytes = 0;
|
|
||||||
unsigned int alloc_size = 0;
|
|
||||||
unsigned int addr = -1;
|
|
||||||
unsigned int len = 0;
|
|
||||||
|
|
||||||
if (sscanf(arg, "%x %u", &addr, &nbytes) != 2)
|
|
||||||
return true;
|
|
||||||
/* We allocate more than needed, saving 20 bytes is not really relevant */
|
|
||||||
alloc_size = 40 + nbytes * 3;
|
|
||||||
reply = (char*)malloc(alloc_size);
|
|
||||||
reply[0] = '\0';
|
|
||||||
reply_at = reply + snprintf(
|
|
||||||
reply, alloc_size - 1, "READ_CORE_RAM" " %x", addr);
|
|
||||||
|
|
||||||
if ((data = rcheevos_patch_address(addr)))
|
|
||||||
{
|
|
||||||
for (i = 0; i < nbytes; i++)
|
|
||||||
snprintf(reply_at + 3 * i, 4, " %.2X", data[i]);
|
|
||||||
reply_at[3 * nbytes] = '\n';
|
|
||||||
len = reply_at + 3 * nbytes + 1 - reply;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
strlcpy(reply_at, " -1\n", sizeof(reply) - strlen(reply));
|
|
||||||
len = reply_at + STRLEN_CONST(" -1\n") - reply;
|
|
||||||
}
|
|
||||||
cmd->replier(cmd, reply, len);
|
|
||||||
free(reply);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool command_write_ram(command_t *cmd, const char *arg)
|
|
||||||
{
|
|
||||||
unsigned int addr = (unsigned int)strtoul(arg, (char**)&arg, 16);
|
|
||||||
uint8_t *data = (uint8_t *)rcheevos_patch_address(addr);
|
|
||||||
|
|
||||||
if (!data)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (rcheevos_hardcore_active())
|
|
||||||
{
|
|
||||||
RARCH_LOG("Achievements hardcore mode disabled by WRITE_CORE_RAM\n");
|
|
||||||
rcheevos_pause_hardcore();
|
|
||||||
}
|
|
||||||
|
|
||||||
while (*arg)
|
|
||||||
{
|
|
||||||
*data = strtoul(arg, (char**)&arg, 16);
|
|
||||||
data++;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const rarch_memory_descriptor_t* command_memory_get_descriptor(const rarch_memory_map_t* mmap, unsigned address)
|
static const rarch_memory_descriptor_t* command_memory_get_descriptor(const rarch_memory_map_t* mmap, unsigned address)
|
||||||
{
|
{
|
||||||
const rarch_memory_descriptor_t* desc = mmap->descriptors;
|
const rarch_memory_descriptor_t* desc = mmap->descriptors;
|
||||||
|
Loading…
Reference in New Issue
Block a user