duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

CHANGELOG.md (17116B)


      1 # v11.5.0
      2 * add total_entries to rc_api_fetch_leaderboard_info_response_t
      3 * add RC_CLIENT_RAINTEGRATION_EVENT_MENU_CHANGED event
      4 * modify rc_client_begin_identify_and_load_game and rc_client_begin_change_media to use locally
      5   registered filereader/cdreader for hash resolution when using rc_client_raintegration
      6 * add support for ISO-8601 timestamps in JSON responses
      7 * update RC_CONSOLE_MS_DOS hash logic to support parent archives
      8 * fix infinite loop that sometimes occurs when resetting while progress tracker is onscreen
      9 
     10 # v11.4.0
     11 * add RC_CONDITION_REMEMBER and RC_OPERAND_RECALL
     12 * add RC_OPERATOR_ADD and RC_OPERATOR_SUB
     13 * add scratch pad memory to PSX memory map
     14 * add Super Game Module memory to Colecovision memory map
     15 * add rapi function fetch_game_titles
     16 * modify progress functions to return RC_NO_GAME_LOADED when "Unknown Game" is loaded
     17 * update subsystem list for arcade hash
     18 * fix exception if server sends null as achievement.author
     19 
     20 # v11.3.0
     21 * add RC_OPERATOR_MOD
     22 * add cartridge RAM to Game Gear and Master System memory maps
     23 * add extended cartridge RAM to Gameboy and Gameboy Color memory maps
     24 * add rc_client_is_game_loaded helper function
     25 * add rc_client_raintegration_set_console_id to specify console in case game resolution fails
     26 * add rc_client_raintegration_get_achievement_state to detect local unlocks
     27 * report validation errors on multi-condition logic
     28 * hash whole file for PSP homebrew files (eboot.pbp)
     29 * call DrawMenuBar in rc_client_raintegration_rebuild_submenu if menu changes
     30 * fix file sharing issue using default filereader on Windows
     31 * fix exception calling rc_client_get_game_summary with an unidentified game loaded
     32 
     33 # v11.2.0
     34 * add alternate methods for state serialization/deserialization that accept a buffer_size parameter
     35 * add RC_CLIENT_SUPPORTS_HASH compile flag
     36   - allows rc_client code to build without the rhash files (except md5.c)
     37   - must be explicitly defined to use rc_client_begin_identify_and_load_game
     38 * add rc_client_get_load_game_state
     39 * add rc_client_raintegration_set_get_game_name_function
     40 * add RC_MEMSIZE_DOUBLE32 and RC_MEMSIZE_DOUBLE32_BE
     41 * exclude directory records from ZIP hash algorithm
     42 * fix media host when explicitly setting host to production server
     43 * fix potential out-of-bounds read looking for error message in non-JSON response
     44 
     45 # v11.1.0
     46 * add rc_client_get_user_agent_clause to generate substring to include in client User-Agents
     47 * add rc_client_can_pause function to control pause spam
     48 * add achievement type and rarity to rc_api_fetch_game_data_response_t and rc_client_achievement_t
     49 * add RC_CLIENT_ACHIEVEMENT_BUCKET_UNSYNCED for achievements that have been unlocked locally but not synced to the server
     50 * add RC_CONSOLE_NEO_GEO_CD to supported consoles for chd file extension
     51 * add hash logic for RC_CONSOLE_NINTENDO_3DS (note: added new file rhash/aes.c to support this)
     52 * add hash logic for RC_CONSOLE_MS_DOS
     53 * add game_hash and hardcore fields to rc_api_start_session_request_t and rc_api_ping_request_t
     54 * add RC_FORMAT_FIXED1/2/3, RC_FORMAT_TENS, RC_FORMAT_HUNDREDS, RC_FORMAT_THOUSANDS, and RC_FORMAT_UNSIGNED_VALUE
     55 * add RC_CONSOLE_STANDALONE
     56 * add extern "C" and __cdecl attributes to public functions
     57 * add __declspec(dllexport/dllimport) attributes to public functions via #define enablement
     58 * add rc_version and rc_version_string functions for accessing version from external linkage
     59 * add unicode path support to default filereader (Windows builds)
     60 * add rc_mutex support for GEKKO (libogc)
     61 * fix async_handle being returned when rc_client_begin_login is aborted synchronously
     62 * fix logic error hashing CD files smaller than one sector
     63 * fix read across region boundary in rc_libretro_memory_read
     64 * fix RC_CLIENT_EVENT_ACHIEVEMENT_CHALLENGE_INDICATOR_SHOW event not being raised if achievement is reset in the same frame that it's primed
     65 * moved rc_util.h from src/ to include/
     66 * initial (incomplete) support for rc_client_external_t and rc_client_raintegration_t
     67 
     68 # v11.0.0
     69 * add rc_client_t and related functions
     70 * add RC_MEMSIZE_FLOAT_BE
     71 * add Game Pak SRAM to GBA memory map
     72 * add hash method for Super Cassettevision
     73 * add PSP to potential consoles for chd iterator
     74 * add content_type to rc_api_request_t for client to pass to server
     75 * add rc_api_process_X_server_response methods to pass status_code and body_length to response processing functions
     76 * add additional error codes to rc_api_process_login_response: RC_INVALID_CREDENTIALS, RC_EXPIRED_TOKEN, RC_ACCESS_DENIED
     77 * rc_api_start_session now also returns unlocks without having to explicitly call rc_api_fetch_user_unlocks separately
     78 * add validation warning for using hit target of 1 on ResetIf condition
     79 * move compat.c up a directory and rename to rc_compat.c as it's shared by all subfolders
     80 * move rc_libretro.c up a directory as it uses files from all subfolders
     81 * convert loosely sized types to strongly sized types (unsigned -> uint32t, unsigned char -> uint8_t, etc)
     82 
     83 # v10.7.1
     84 * add rc_runtime_alloc
     85 * add rc_libretro_memory_find_avail
     86 * extract nginx errors from HTML returned for JSON endpoints
     87 * fix real address for 32X extension RAM
     88 * fix crash attempting to calculate gamecube hash for non-existent file
     89 
     90 # v10.7.0
     91 * add hash method and memory map for Gamecube
     92 * add console enum, hash method, and memory map for DSi
     93 * add console enum, hash method, and memory map for TI-83
     94 * add console enum, hash method, and memory map for Uzebox
     95 * add constant for rcheevos version; include in start session server API call
     96 * fix SubSource calculations using float values
     97 * fix game identification for homebrew Jaguar CD games
     98 * fix game identification for CD with many files at root directory
     99 * address _CRT_SECURE_NO_WARNINGS warnings
    100 
    101 # v10.6.0
    102 * add RC_RUNTIME_EVENT_ACHIEVEMENT_PROGRESS_UPDATED
    103 * use optimized comparators for most common condition logic
    104 * fix game identification of psx ISOs that have extra slashes in their boot path
    105 * fix game identification of ndd files
    106 
    107 # v10.5.0
    108 * add RC_MEMSIZE_MBF32_LE
    109 * add RC_OPERATOR_XOR
    110 * add RC_CONSOLE_ATARI_JAGUAR_CD and hash/memory map for Atari Jaguar CD
    111 * add RC_CONSOLE_ARCADIA_2001 and hash/memory map for Arcadia 2001
    112 * add RC_CONSOLE_INTERTON_VC_4000 and hash/memory map for Interton VC 4000
    113 * add RC_CONSOLE_ELEKTOR_TV_GAMES_COMPUTER and hash/memory map for Elektor TV Games Computer
    114 * split RC_CONSOLE_PC_ENGINE_CD off of RC_CONSOLE_PC_ENGINE
    115 * add hash/memory map for RC_CONSOLE_NEO_GEO_CD
    116 * add additional 256KB of RAM to memory map for RC_CONSOLE_SEGA_32X
    117 * validation: don't report redundancy between trigger and non-trigger conditions
    118 * validation: don't report range validation errors for float comparisons
    119 * change default image host to media.retroachievements.org
    120 * fix decoding of denormalized floats
    121 * fix full line comments in the middle of Display: section causing RC_MISSING_DISPLAY_STRING
    122 
    123 # v10.4.0
    124 * add rc_libretro_hash_set_t with support for #SAVEDISK: m3u extension
    125 * add rc_libretro_is_system_allowed for finer-grain control over core support
    126 * fix measured value from hitcount not resetting while paused
    127 * add RC_CONSOLE_WASM and hash/memory map for WASM-4
    128 * add scratchpad memory to RC_CONSOLE_PLAYSTATION_2 memory map
    129 * add hash/memory map for RC_CONSOLE_FAIRCHILD_CHANNEL_F
    130 * add hash/memory map for RC_CONSOLE_COMMODORE_64
    131 * add memory map for RC_CONSOLE_AMIGA
    132 
    133 # v10.3.3
    134 * add RC_CONSOLE_ARDUBOY and hash/memory map for Arduboy
    135 * add display_name to rc_api_login_response_t
    136 * detect logical conflicts and redundancies in validator
    137 * fix tab sequences in JSON responses being turned into t
    138 * fix overflow when float value has more than 9 digits after the decimal
    139 * fix libretro memory mapping when disconnect mask breaks a region into multiple blocks
    140 * fix non-virtualized file system call when reading some iso files
    141 
    142 # v10.3.2
    143 * fix RC_OPERAND_PRIOR for bit sizes other than RC_MEMSIZE_BIT_0
    144 * add memory map and hash for Amstrad CPC
    145 * fix an issue where fetch_game_data and fetch_user_unlocks could return RC_MISSING_VALUE instead of acknowledging a server error
    146 
    147 # v10.3.1
    148 * allow empty description in rc_api_init_update_leaderboard_request
    149 * fix buffered n64 hash when no filereader is registered
    150 * add memory map and hash for Mega Duck
    151 
    152 # v10.3.0
    153 * support for floating point memory sizes and logic
    154 * add built-in macros for rich presence: @Number, @Score, @Centisecs, @Seconds, @Minutes, @ASCIIChar, @UnicodeChar
    155 * add rapi functions for fetch_code_notes, update_code_note, upload_achievement, update_leaderboard, fetch_badge_range, and add_game_hash
    156 * add lower_is_better and hidden flags to leaderboards in rc_api_fetch_game_data_response_t
    157 * add achievements_remaining to rc_api_award_achievement_response_t
    158 * add console enums for PC6000, PICO, MEGADUCK and ZEEBO
    159 * add memory map for Dreamcast
    160 * capture leaderboard/rich presence state in rc_runtime_progress data
    161 * support for hashing Dreamcast bin/cues
    162 * support for hashing buffered NDS ROMs
    163 * fix prior for sizes smaller than a byte sometimes returning current value
    164 
    165 # v10.2.0
    166 
    167 * add RC_MEMSIZE_16_BITS_BE, RC_MEMSIZE_24_BITS_BE, and RC_MEMSIZE_32_BITS_BE
    168 * add secondary flag for RC_CONDITION_MEASURED that tells the UI when to show progress as raw vs. as a percentage
    169 * add rapi calls for fetch_leaderboard_info, fetch_achievement_info and fetch_game_list
    170 * add hash support for RC_CONSOLE_PSP
    171 * add RCHEEVOS_URL_SSL compile flag to use https in rurl functions
    172 * add space to "PC Engine" label
    173 * update RC_CONSOLE_INTELLIVISION memory map to acknowledge non-8-bit addresses
    174 * standardize to z64 format when hashing RC_CONSOLE_N64
    175 * prevent generating hash for PSX disc when requesting RC_CONSOLE_PLAYSTATION2
    176 * fix wrong error message being returned when a leaderboard was only slightly malformed
    177 
    178 # v10.1.0
    179 
    180 * add RC_RUNTIME_EVENT_ACHIEVEMENT_UNPRIMED
    181 * add rc_runtime_validate_addresses
    182 * add external memory to memory map for Magnavox Odyssey 2
    183 * fix memory map base address for NeoGeo Pocket
    184 * fix bitcount always returning 0 when used in rich presence
    185 
    186 # v10.0.0
    187 
    188 * add rapi sublibrary for communicating with server (eliminates need for client-side JSON parsing; client must still
    189   provide HTTP functionality). rurl is now deprecated
    190 * renamed 'rhash.h' to 'rc_hash.h' to eliminate conflict with system headers, renamed 'rconsoles.h' and 'rurl.h' for 
    191   consistency
    192 * split non-runtime functions out of 'rcheevos.h' as they're not needed by most clients
    193 * allow ranges in rich presence lookups
    194 * add rc_richpresence_size_lines function to fetch line associated to error when processing rich presence script
    195 * add rc_runtime_invalidate_address function to disable achievements when an unknown address is queried
    196 * add RC_CONDITION_RESET_NEXT_IF
    197 * add RC_CONDITION_SUB_HITS
    198 * support MAXOF operator ($) for leaderboard values using trigger syntax
    199 * allow RC_CONDITION_PAUSE_IF and RC_CONDITION_RESET_IF in leaderboard value expression
    200 * changed track parameter of rc_hash_cdreader_open_track_handler to support three virtual tracks:
    201   RC_HASH_CDTRACK_FIRST_DATA, RC_HASH_CDTRACK_LAST and RC_HASH_CDTRACK_LARGEST.
    202 * changed offset parameter of rc_hash_filereader_seek_handler and return value of rc_hash_filereader_tell_handler
    203   from size_t to int64_t to support files larger than 2GB when compiling in 32-bit mode.
    204 * reset to default cd reader if NULL is passed to rc_hash_init_custom_cdreader
    205 * add hash support for RC_CONSOLE_DREAMCAST, RC_CONSOLE_PLAYSTATION_2, RC_CONSOLE_SUPERVISION, and RC_CONSOLE_TIC80
    206 * ignore headers when generating hashs for RC_CONSOLE_PC_ENGINE and RC_CONSOLE_ATARI_7800
    207 * require unique identifier when hashing RC_CONSOLE_SEGA_CD and RC_CONSOLE_SATURN discs
    208 * add expansion memory to RC_CONSOLE_SG1000 memory map
    209 * rename RC_CONSOLE_MAGNAVOX_ODYSSEY -> RC_CONSOLE_MAGNAVOX_ODYSSEY2
    210 * rename RC_CONSOLE_AMIGA_ST -> RC_CONSOLE_ATARI_ST
    211 * add RC_CONSOLE_SUPERVISION, RC_CONSOLE_SHARPX1, RC_CONSOLE_TIC80, RC_CONSOLE_THOMSONTO8
    212 * fix error identifying largest track when track has multiple bins
    213 * fix memory corruption error when cue track has more than 6 INDEXs
    214 * several improvements to data storage for conditions (rc_memref_t and rc_memref_value_t structures have been modified)
    215 
    216 # v9.2.0
    217 
    218 * fix issue identifying some PC-FX titles where the boot code is not in the first data track
    219 * add enums and labels for RC_CONSOLE_MAGNAVOX_ODYSSEY, RC_CONSOLE_SUPER_CASSETTEVISION, RC_CONSOLE_NEO_GEO_CD,
    220   RC_CONSOLE_FAIRCHILD_CHANNEL_F, RC_CONSOLE_FM_TOWNS, RC_CONSOLE_ZX_SPECTRUM, RC_CONSOLE_GAME_AND_WATCH,
    221   RC_CONSOLE_NOKIA_NGAGE, RC_CONSOLE_NINTENDO_3DS
    222 
    223 # v9.1.0
    224 
    225 * add hash support and memory map for RC_CONSOLE_MSX
    226 * add hash support and memory map for RC_CONSOLE_PCFX
    227 * include parent directory when hashing non-arcade titles in arcade mode
    228 * support absolute paths in m3u
    229 * make cue scanning case-insensitive
    230 * expand SRAM mapping for RC_CONSOLE_WONDERSWAN
    231 * fix display of measured value when another group has an unmeasured hit count
    232 * fix memory read error when hashing file with no extension
    233 * fix possible divide by zero when using RC_CONDITION_ADD_SOURCE/RC_CONDITION_SUB_SOURCE
    234 * fix classification of secondary RC_CONSOLE_SATURN memory region
    235 
    236 # v9.0.0
    237 
    238 * new size: RC_MEMSIZE_BITCOUNT
    239 * new flag: RC_CONDITION_OR_NEXT
    240 * new flag: RC_CONDITION_TRIGGER
    241 * new flag: RC_CONDITION_MEASURED_IF
    242 * new operators: RC_OPERATOR_MULT / RC_OPERATOR_DIV
    243 * is_bcd removed from memref - now part of RC_MEMSIZE
    244 * add rc_runtime_t and associated functions
    245 * add rc_hash_ functions
    246 * add rc_error_str function
    247 * add game_hash parameter to rc_url_award_cheevo
    248 * remove hash parameter from rc_url_submit_lboard
    249 * add rc_url_ping function
    250 * add rc_console_ functions
    251 
    252 # v8.1.0
    253 
    254 * new flag: RC_CONDITION_MEASURED
    255 * new flag: RC_CONDITION_ADD_ADDRESS
    256 * add rc_evaluate_trigger - extended version of rc_test_trigger with more granular return codes
    257 * make rc_evaluate_value return a signed int (was unsigned int)
    258 * new formats: RC_FORMAT_MINUTES and RC_FORMAT_SECONDS_AS_MINUTES
    259 * removed " Points" text from RC_FORMAT_SCORE format
    260 * removed RC_FORMAT_OTHER format. "OTHER" format now parses to RC_FORMAT_SCORE
    261 * bugfix: AddHits will now honor AndNext on previous condition
    262 
    263 # v8.0.1
    264 
    265 * bugfix: prevent null reference exception if rich presence contains condition without display string
    266 * bugfix: 24-bit read from memory should only read 24-bits
    267 
    268 # v8.0.0
    269 
    270 * support for prior operand type
    271 * support for AndNext condition flag
    272 * support for rich presence
    273 * bugfix: update delta/prior memory values while group is paused
    274 * bugfix: allow floating point number without leading 0
    275 * bugfix: support empty alt groups
    276 
    277 # v7.1.1
    278 
    279 * Address signed/unsigned mismatch warnings
    280 
    281 # v7.1.0
    282 
    283 * Added the RC_DISABLE_LUA macro to compile rcheevos without Lua support
    284 
    285 # v7.0.2
    286 
    287 * Make sure the code is C89-compliant
    288 * Use 32-bit types in Lua
    289 * Only evaluate Lua operands when the Lua state is not `NULL`
    290 
    291 # v7.0.1
    292 
    293 * Fix the alignment of memory allocations
    294 
    295 # v7.0.0
    296 
    297 * Removed **rjson**
    298 
    299 # v6.5.0
    300 
    301 * Added a schema for errors returned by the server
    302 
    303 # v6.4.0
    304 
    305 * Added an enumeration with the console identifiers used in RetroAchievements
    306 
    307 # v6.3.1
    308 
    309 * Pass the peek function and the user data to the Lua functions used in operands.
    310 
    311 # v6.3.0
    312 
    313 * Added **rurl**, an API to build URLs to access RetroAchievements web services.
    314 
    315 # v6.2.0
    316 
    317 * Added **rjson**, an API to easily decode RetroAchievements JSON files into C structures.
    318 
    319 # v6.1.0
    320 
    321 * Added support for 24-bit operands with the `'W'` prefix (`RC_OPERAND_24_BITS`)
    322 
    323 # v6.0.2
    324 
    325 * Only define RC_ALIGNMENT if it has not been already defined
    326 
    327 # v6.0.1
    328 
    329 * Use `sizeof(void*)` as a better default for `RC_ALIGNMENT`
    330 
    331 # v6.0.0
    332 
    333 * Simplified API: separate functions to get the buffer size and to parse `memaddr` into the provided buffer
    334 * Fixed crash trying to call `rc_update_condition_pause` during a dry-run
    335 * The callers are now responsible to pass down a scratch buffer to avoid accesses to out-of-scope memory
    336 
    337 # v5.0.0
    338 
    339 * Pre-compute if a condition has a pause condition in its group
    340 * Added a pre-computed flag that tells if the condition set has at least one pause condition
    341 * Removed the link to the previous condition in a condition set chain
    342 
    343 # v4.0.0
    344 
    345 * Fixed `ret` not being properly initialized in `rc_parse_trigger`
    346 * Build the unit tests with optimizations and `-Wall` to help catch more issues
    347 * Added `extern "C"` around the inclusion of the Lua headers so that **rcheevos** can be compiled cleanly as C++
    348 * Exposed `rc_parse_value` and `rc_evaluate_value` to be used with rich presence
    349 * Removed the `reset` and `dirty` flags from the external API
    350 
    351 # v3.2.0
    352 
    353 * Added the ability to reset triggers and leaderboards
    354 * Add a function to parse a format string and return the format enum, and some unit tests for it
    355 
    356 # v3.1.0
    357 
    358 * Added `rc_format_value` to the API
    359 
    360 # v3.0.1
    361 
    362 * Fixed wrong 32-bit value on 64-bit platforms
    363 
    364 # v3.0.0
    365 
    366 * Removed function rc_evaluate_value from the API
    367 
    368 # v2.0.0
    369 
    370 * Removed leaderboard callbacks in favor of a simpler scheme
    371 
    372 # v1.1.2
    373 
    374 * Fixed NULL pointer deference when there's an error during the parse
    375 
    376 # v1.1.1
    377 
    378 * Removed unwanted garbage
    379 * Should be v1.0.1 :/
    380 
    381 # v1.0.0
    382 
    383 * First version