aa0180571e
Renames savefile_t to saveslot_t and folds last session's standalone settings.h/.c module back in as savemeta_t, so there's one save system (SAVE.slots[] + SAVE.meta) instead of two parallel ones - while letting each platform pick its own physical format for the two concepts: - Linux now writes human-editable JSON (slot0.json, settings.json, ...) via yyjson's mutable writer API, so players can hand-fix a bad setting. - PSP folds meta into the same sceUtilitySavedata binary payload as its one save slot (SAVE_SLOT_COUNT_MAX=1 there - a future save picker will let players manage multiple named saves via the OS's own browser). - GameCube consolidates the 3 per-slot memory card files and the separate settings file into one combined card file. Also fixes two bugs surfaced while building this: the CRC finalize step seeked to a hardcoded offset (only safe for one section per file, breaks once meta+slots share a buffer), and save.c's async/sync dispatch left an unconditional fallback call that doesn't exist on PSP-only platforms. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
26 lines
745 B
C
26 lines
745 B
C
/**
|
|
* Copyright (c) 2026 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#include "globalitemstore.h"
|
|
#include "assert/assert.h"
|
|
|
|
bool_t globalItemStoreIsCollected(
|
|
const saveslot_t *file, const entityglobalid_t id
|
|
) {
|
|
assertNotNull(file, "Save slot cannot be NULL");
|
|
assertTrue(id < SAVE_GLOBAL_ITEM_COUNT_MAX, "Global item ID out of range");
|
|
return file->globalItemCollected[id];
|
|
}
|
|
|
|
void globalItemStoreSetCollected(
|
|
saveslot_t *file, const entityglobalid_t id, const bool_t collected
|
|
) {
|
|
assertNotNull(file, "Save slot cannot be NULL");
|
|
assertTrue(id < SAVE_GLOBAL_ITEM_COUNT_MAX, "Global item ID out of range");
|
|
file->globalItemCollected[id] = collected;
|
|
}
|