#include "save_data.h" #include "constants.h" // Bit flags for level completion. // Expect 30 levels. // Could use a 32bit integer though. // Using array to allow arbitrary length of flags. #define NUMBER_OF_BYTES 4 static uint8_t completion_flags[NUMBER_OF_BYTES] = {0}; int load_savedata(uint8_t* bytes, size_t len) { return 0; } int writeout_savedata(uint8_t* bytes, size_t len) { return 0; } bool is_level_completed(uint32_t level_num) { // 0-indexed uint32_t byte_num = level_num >> 3; if (byte_num >= NUMBER_OF_BYTES) return false; uint32_t bit_num = level_num % 8; return ((completion_flags[byte_num] >> bit_num) & 1) > 0; } void set_level_completed(uint32_t level_num, bool complete) { uint32_t byte_num = level_num >> 3; if (byte_num >= NUMBER_OF_BYTES) return; uint32_t bit_num = level_num % 8; if (complete) { completion_flags[byte_num] |= (1 <