aboutsummaryrefslogtreecommitdiffstats
path: root/src/save.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-04-23 15:48:59 +0200
committerBad Diode <bd@badd10de.dev>2023-04-23 15:48:59 +0200
commitff6e784e7c5ebe223666c6c631305397ad358289 (patch)
tree0f87823d48366a6beb8d36d7eea5dc33663d7abd /src/save.c
parentdeb9c48fbd3dc5854de4ae3a04dc999029c10ae0 (diff)
downloadstepper-ff6e784e7c5ebe223666c6c631305397ad358289.tar.gz
stepper-ff6e784e7c5ebe223666c6c631305397ad358289.zip
Start decoupling of rendering from update passes
Diffstat (limited to 'src/save.c')
-rw-r--r--src/save.c37
1 files changed, 37 insertions, 0 deletions
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 @@
1//
2// Save data.
3//
4
5typedef struct Metadata {
6 u8 blank;
7 u32 magic;
8 int current_bank;
9 int current_pattern;
10} Metadata;
11
12static Metadata metadata = {0};
13
14void
15sram_read(u8 *dst, u16 pos, u16 n_bytes) {
16 for (size_t i = 0; i < n_bytes; ++i) {
17 dst[i] = SRAM[pos + i];
18 }
19}
20
21void
22sram_write(u8 *src, u16 pos, u16 n_bytes) {
23 for (size_t i = 0; i < n_bytes; ++i) {
24 SRAM[pos + i] = src[i];
25 }
26}
27
28void
29save_bank(int i) {
30 sram_write(&patterns, sizeof(Metadata) + i * sizeof(patterns), sizeof(patterns));
31}
32
33void
34load_bank(int i) {
35 sram_read(&patterns, sizeof(Metadata) + i * sizeof(patterns), sizeof(patterns));
36}
37