#include "save.h" // // Save data. // static Metadata metadata = {0}; void sram_read(u8 *dst, u16 pos, u16 n_bytes) { for (size_t i = 0; i < n_bytes; ++i) { dst[i] = SRAM[pos + i]; } } void sram_write(u8 *src, u16 pos, u16 n_bytes) { for (size_t i = 0; i < n_bytes; ++i) { SRAM[pos + i] = src[i]; } } void save_bank(int i) { sram_write(&patterns, sizeof(Metadata) + i * sizeof(patterns), sizeof(patterns)); sram_write(&chain, sizeof(Metadata) + 6 * sizeof(patterns) + i * sizeof(chain), sizeof(chain)); } void load_bank(int i) { sram_read(&patterns, sizeof(Metadata) + i * sizeof(patterns), sizeof(patterns)); sram_read(&chain, sizeof(Metadata) + 6 * sizeof(patterns) + i * sizeof(chain), sizeof(chain)); } void save_metadata(void) { metadata.settings = settings; sram_write(&metadata, 0, sizeof(Metadata)); }