RetroAchievements / rcheevos

Library to parse and evaluate achievements and leaderboards for RetroAchievements
MIT License
90 stars 34 forks source link

perform rc_client hash resolution locally, then pass hash to external interface #359

Closed Jamiras closed 3 months ago

Jamiras commented 3 months ago

Alternate solution to #358.

Allows hash generation to occur in the local environment, and then automatically calls the external methods that accept a hash instead of a buffer. This way, any client-specific hashing logic (such as CHD support) doesn't have to be accessible from the external implementation.

For example, instead of rc_client_begin_identify_and_load_game calling through to external_client->begin_identify_and_load_game, it generates the hash locally and calls external_client->begin_load_game. This change also affects rc_client_begin_change_media

Since these changes are all done internally to the rc_client functions, no additional work is required in the calling code.

https://discord.com/channels/476211979464343552/757767535293890682/1265528322943881306