dep/rcheevos: Bump to a34895b

This commit is contained in:
Stenzek 2023-09-22 23:04:09 +10:00
parent b678fcd874
commit 2067b660f6
4 changed files with 31 additions and 11 deletions

View file

@ -514,10 +514,11 @@ typedef struct rc_client_leaderboard_scoreboard_entry_t {
/* The user associated to the entry */
const char* username;
/* The rank of the entry */
unsigned rank;
uint32_t rank;
/* The value of the entry */
char score[RC_CLIENT_LEADERBOARD_DISPLAY_SIZE];
} rc_client_leaderboard_scoreboard_entry_t;
typedef struct rc_client_leaderboard_scoreboard_t {
/* The ID of the leaderboard which was submitted */
uint32_t leaderboard_id;
@ -526,14 +527,14 @@ typedef struct rc_client_leaderboard_scoreboard_t {
/* The player's best submitted value */
char best_score[RC_CLIENT_LEADERBOARD_DISPLAY_SIZE];
/* The player's new rank within the leaderboard */
unsigned new_rank;
uint32_t new_rank;
/* The total number of entries in the leaderboard */
unsigned num_entries;
uint32_t num_entries;
/* An array of the top entries for the leaderboard */
rc_client_leaderboard_scoreboard_entry_t* top_entries;
/* The number of items in the top_entries array */
unsigned num_top_entries;
uint32_t num_top_entries;
} rc_client_leaderboard_scoreboard_t;
/*****************************************************************************\
@ -569,7 +570,7 @@ enum {
RC_CLIENT_EVENT_LEADERBOARD_TRACKER_SHOW = 10, /* [leaderboard_tracker] should be shown */
RC_CLIENT_EVENT_LEADERBOARD_TRACKER_HIDE = 11, /* [leaderboard_tracker] should be hidden */
RC_CLIENT_EVENT_LEADERBOARD_TRACKER_UPDATE = 12, /* [leaderboard_tracker] updated */
RC_CLIENT_EVENT_LEADERBOARD_SCOREBOARD = 13, /* [leaderboard_scoreboard] possibly-new ranking received */
RC_CLIENT_EVENT_LEADERBOARD_SCOREBOARD = 13, /* [leaderboard_scoreboard] possibly-new ranking received for [leaderboard] */
RC_CLIENT_EVENT_RESET = 14, /* emulated system should be reset (as the result of enabling hardcore) */
RC_CLIENT_EVENT_GAME_COMPLETED = 15, /* all achievements for the game have been earned */
RC_CLIENT_EVENT_SERVER_ERROR = 16, /* an API response returned a [server_error] and will not be retried */

View file

@ -389,6 +389,7 @@ int rc_json_get_required_unum_array(unsigned** entries, unsigned* num_entries, r
rc_json_field_t value;
unsigned* entry;
memset(&array, 0, sizeof(array));
if (!rc_json_get_required_array(num_entries, &array, response, field, field_name))
return RC_MISSING_VALUE;

View file

@ -444,11 +444,13 @@ static const rc_memory_regions_t rc_memory_regions_gameboy = { _rc_memory_region
static const rc_memory_regions_t rc_memory_regions_gameboy_color = { _rc_memory_regions_gameboy, 17 };
/* ===== GameBoy Advance ===== */
/* http://problemkaputt.de/gbatek-gba-memory-map.htm */
static const rc_memory_region_t _rc_memory_regions_gameboy_advance[] = {
{ 0x000000U, 0x007FFFU, 0x03000000U, RC_MEMORY_TYPE_SAVE_RAM, "Cartridge RAM" },
{ 0x008000U, 0x047FFFU, 0x02000000U, RC_MEMORY_TYPE_SYSTEM_RAM, "System RAM" }
{ 0x000000U, 0x007FFFU, 0x03000000U, RC_MEMORY_TYPE_SYSTEM_RAM, "System RAM" }, /* 32KB Internal Work RAM */
{ 0x008000U, 0x047FFFU, 0x02000000U, RC_MEMORY_TYPE_SYSTEM_RAM, "System RAM" }, /* 256KB External Work RAM */
{ 0x048000U, 0x057FFFU, 0x0E000000U, RC_MEMORY_TYPE_SAVE_RAM, "Save RAM" } /* 64KB Game Pak SRAM */
};
static const rc_memory_regions_t rc_memory_regions_gameboy_advance = { _rc_memory_regions_gameboy_advance, 2 };
static const rc_memory_regions_t rc_memory_regions_gameboy_advance = { _rc_memory_regions_gameboy_advance, 3 };
/* ===== GameCube ===== */
/* https://wiibrew.org/wiki/Memory_map */

View file

@ -1942,7 +1942,7 @@ static rc_client_async_handle_t* rc_client_load_game(rc_client_load_state_t* loa
rc_client_begin_fetch_game_data(load_state);
}
return &load_state->async_handle;
return (client->state.load == load_state) ? &load_state->async_handle : NULL;
}
rc_hash_iterator_t* rc_client_get_load_state_hash_iterator(rc_client_t* client)
@ -2526,7 +2526,21 @@ static int rc_client_compare_achievement_unlock_times(const void* a, const void*
{
const rc_client_achievement_t* unlock_a = *(const rc_client_achievement_t**)a;
const rc_client_achievement_t* unlock_b = *(const rc_client_achievement_t**)b;
return (int)(unlock_b->unlock_time - unlock_a->unlock_time);
if (unlock_b->unlock_time == unlock_a->unlock_time)
return 0;
return (unlock_b->unlock_time < unlock_a->unlock_time) ? -1 : 1;
}
static int rc_client_compare_achievement_progress(const void* a, const void* b)
{
const rc_client_achievement_t* unlock_a = *(const rc_client_achievement_t**)a;
const rc_client_achievement_t* unlock_b = *(const rc_client_achievement_t**)b;
if (unlock_b->measured_percent == unlock_a->measured_percent) {
if (unlock_a->id == unlock_b->id)
return 0;
return (unlock_a->id < unlock_b->id) ? -1 : 1;
}
return (unlock_b->measured_percent < unlock_a->measured_percent) ? -1 : 1;
}
static uint8_t rc_client_map_bucket(uint8_t bucket, int grouping)
@ -2678,6 +2692,8 @@ rc_client_achievement_list_t* rc_client_create_achievement_list(rc_client_t* cli
if (bucket_type == RC_CLIENT_ACHIEVEMENT_BUCKET_RECENTLY_UNLOCKED)
qsort(bucket_ptr->achievements, bucket_ptr->num_achievements, sizeof(rc_client_achievement_t*), rc_client_compare_achievement_unlock_times);
else if (bucket_type == RC_CLIENT_ACHIEVEMENT_BUCKET_ALMOST_THERE)
qsort(bucket_ptr->achievements, bucket_ptr->num_achievements, sizeof(rc_client_achievement_t*), rc_client_compare_achievement_progress);
++bucket_ptr;
}
@ -3845,7 +3861,7 @@ int rc_client_has_rich_presence(rc_client_t* client)
if (!client || !client->game)
return 0;
if (!client->game->runtime.richpresence || !client->game->runtime.richpresence)
if (!client->game->runtime.richpresence || !client->game->runtime.richpresence->richpresence)
return 0;
return 1;