diff options
author | Bad Diode <bd@badd10de.dev> | 2023-05-28 11:06:04 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2023-05-28 11:06:04 +0200 |
commit | 5024c6631ab583c0b375f0002e2ad6d6373d84ee (patch) | |
tree | 69c11c0f2562ceb740545d2c506a335f3935339f /src/sequencer.c | |
parent | a3b2141540d74456689ddfaac44c4f83f995c6a7 (diff) | |
download | stepper-5024c6631ab583c0b375f0002e2ad6d6373d84ee.tar.gz stepper-5024c6631ab583c0b375f0002e2ad6d6373d84ee.zip |
Fix save data corruption if no save existed
Diffstat (limited to 'src/sequencer.c')
-rw-r--r-- | src/sequencer.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/sequencer.c b/src/sequencer.c index 6aa8eea..867e686 100644 --- a/src/sequencer.c +++ b/src/sequencer.c | |||
@@ -957,8 +957,12 @@ void | |||
957 | sequencer_init(void) { | 957 | sequencer_init(void) { |
958 | // Load the previous bank from SRAM or initialize it if needed. | 958 | // Load the previous bank from SRAM or initialize it if needed. |
959 | sram_read(&metadata, 0, sizeof(Metadata)); | 959 | sram_read(&metadata, 0, sizeof(Metadata)); |
960 | if (metadata.magic != 0xbadd10de) { | 960 | if (metadata.initialized != SAVE_INIT_MAGIC) { |
961 | metadata.magic = 0xbadd10de; | 961 | for (size_t i = 0; i < KB(64) / 8; ++i) { |
962 | SRAM[i] = 0x00; | ||
963 | } | ||
964 | dma_fill(&metadata, 0, sizeof(Metadata), 3); | ||
965 | metadata.initialized = SAVE_INIT_MAGIC; | ||
962 | sram_write(&metadata, 0, sizeof(Metadata)); | 966 | sram_write(&metadata, 0, sizeof(Metadata)); |
963 | save_bank(0); | 967 | save_bank(0); |
964 | save_bank(1); | 968 | save_bank(1); |