From 74e387ade4c10703bcc88de991b07332c8a72ebc Mon Sep 17 00:00:00 2001 From: franchioping Date: Wed, 5 Jun 2024 22:41:29 +0100 Subject: [PATCH] revert 5451101f7551973566fd57339bd14c11dff903ca revert save state to file in C attempt --- .vscode/settings.json | 3 +-- source/main.S | 6 ++---- source/save_state.c | 23 +++++++++-------------- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index a938144..ea35c0b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,6 @@ "makefile.makefilePath": "", "files.associations": { "platform-nspire.h": "c", - "*.inc": "c", - "stdint.h": "c" + "*.inc": "c" } } \ No newline at end of file diff --git a/source/main.S b/source/main.S index 7d44a35..5a74c13 100644 --- a/source/main.S +++ b/source/main.S @@ -396,10 +396,8 @@ save_state: - ldr r0, =saved_state_cpu_status - ldr r1, =saved_state_cpu_cpsr - sub r2, r9, #s_SIZE - + mov r0, saved_state_cpu_status + str r1, saved_state_cpu_cpsr bl write_save_state ldr lr, saved_state_cpu_status+56 // subroutine return diff --git a/source/save_state.c b/source/save_state.c index 8eecc57..d76b361 100644 --- a/source/save_state.c +++ b/source/save_state.c @@ -4,27 +4,22 @@ #include -#define s_SIZE 0x4600 +#define s_SIZE 0x4600; -const size_t cpu_status_size = (15 * sizeof(uint16_t)); +void write_save_state(uint32_t saved_state_cpu_status_addr, uint32_t saved_state_cpu_cpsr); -void write_save_state(uint8_t* saved_state_cpu_status_addr, uint8_t* saved_state_cpu_cpsr, void* state_ds_addr); +void write_save_state(uint32_t saved_state_cpu_status_addr, uint32_t saved_state_cpu_cpsr){ + size_t lenght = s_SIZE; -void write_save_state(uint8_t* saved_state_cpu_status_addr, uint8_t* saved_state_cpu_cpsr, void* state_ds_addr){ - size_t data_size = cpu_status_size + sizeof(uint8_t) + s_SIZE; - uint8_t *data = malloc(data_size); - uint8_t *data_start = data; + size_t data_size = s_SIZE + sizeof(uint32_t); + uint32_t *data = malloc(data_size); - memcpy(data, state_ds_addr, s_SIZE); - data += s_SIZE; + memcpy(data, saved_state_cpu_status_addr, lenght); - memcpy(data, saved_state_cpu_status_addr, cpu_status_size); - data += cpu_status_size; - - memcpy(data, saved_state_cpu_cpsr, 1); + data[data_size-1] = saved_state_cpu_cpsr; FILE* savefile = fopen("/documents/ndless/test.tns", "wb"); - fwrite(data_start, data_size, 1, savefile); + fwrite(data, data_size, 1, savefile); fclose(savefile); } \ No newline at end of file