mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-21 21:35:38 +00:00
dep/rcheevos: Bump to a34895b
This commit is contained in:
parent
b678fcd874
commit
2067b660f6
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue