From ff6e784e7c5ebe223666c6c631305397ad358289 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Sun, 23 Apr 2023 15:48:59 +0200 Subject: Start decoupling of rendering from update passes --- src/save.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/save.c (limited to 'src/save.c') diff --git a/src/save.c b/src/save.c new file mode 100644 index 0000000..45a099d --- /dev/null +++ b/src/save.c @@ -0,0 +1,37 @@ +// +// Save data. +// + +typedef struct Metadata { + u8 blank; + u32 magic; + int current_bank; + int current_pattern; +} Metadata; + +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)); +} + +void +load_bank(int i) { + sram_read(&patterns, sizeof(Metadata) + i * sizeof(patterns), sizeof(patterns)); +} + -- cgit v1.2.1