revert save state to file in C attempt
This commit is contained in:
franchioping 2024-06-05 22:41:29 +01:00
parent 5451101f75
commit 74e387ade4
3 changed files with 12 additions and 20 deletions

View File

@ -2,7 +2,6 @@
"makefile.makefilePath": "", "makefile.makefilePath": "",
"files.associations": { "files.associations": {
"platform-nspire.h": "c", "platform-nspire.h": "c",
"*.inc": "c", "*.inc": "c"
"stdint.h": "c"
} }
} }

View File

@ -396,10 +396,8 @@ save_state:
ldr r0, =saved_state_cpu_status mov r0, saved_state_cpu_status
ldr r1, =saved_state_cpu_cpsr str r1, saved_state_cpu_cpsr
sub r2, r9, #s_SIZE
bl write_save_state bl write_save_state
ldr lr, saved_state_cpu_status+56 // subroutine return ldr lr, saved_state_cpu_status+56 // subroutine return

View File

@ -4,27 +4,22 @@
#include <stdio.h> #include <stdio.h>
#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 = s_SIZE + sizeof(uint32_t);
size_t data_size = cpu_status_size + sizeof(uint8_t) + s_SIZE; uint32_t *data = malloc(data_size);
uint8_t *data = malloc(data_size);
uint8_t *data_start = data;
memcpy(data, state_ds_addr, s_SIZE); memcpy(data, saved_state_cpu_status_addr, lenght);
data += s_SIZE;
memcpy(data, saved_state_cpu_status_addr, cpu_status_size); data[data_size-1] = saved_state_cpu_cpsr;
data += cpu_status_size;
memcpy(data, saved_state_cpu_cpsr, 1);
FILE* savefile = fopen("/documents/ndless/test.tns", "wb"); FILE* savefile = fopen("/documents/ndless/test.tns", "wb");
fwrite(data_start, data_size, 1, savefile); fwrite(data, data_size, 1, savefile);
fclose(savefile); fclose(savefile);
} }