2024-05-20 23:42:37 +01:00
|
|
|
#include <stdint.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <libndls.h>
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
|
|
|
2024-05-21 21:33:41 +01:00
|
|
|
#define s_SIZE 0x4600
|
2024-05-20 23:42:37 +01:00
|
|
|
|
2024-05-21 21:33:41 +01:00
|
|
|
const size_t cpu_status_size = (15 * sizeof(uint16_t));
|
2024-05-20 23:42:37 +01:00
|
|
|
|
2024-05-21 21:33:41 +01:00
|
|
|
void write_save_state(uint8_t* saved_state_cpu_status_addr, uint8_t* saved_state_cpu_cpsr, void* state_ds_addr);
|
2024-05-20 23:42:37 +01:00
|
|
|
|
2024-05-21 21:33:41 +01:00
|
|
|
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;
|
2024-05-20 23:42:37 +01:00
|
|
|
|
|
|
|
|
|
2024-05-21 21:33:41 +01:00
|
|
|
memcpy(data, state_ds_addr, s_SIZE);
|
|
|
|
|
data += s_SIZE;
|
2024-05-20 23:42:37 +01:00
|
|
|
|
2024-05-21 21:33:41 +01:00
|
|
|
memcpy(data, saved_state_cpu_status_addr, cpu_status_size);
|
|
|
|
|
data += cpu_status_size;
|
|
|
|
|
|
|
|
|
|
memcpy(data, saved_state_cpu_cpsr, 1);
|
2024-05-20 23:42:37 +01:00
|
|
|
|
|
|
|
|
FILE* savefile = fopen("/documents/ndless/test.tns", "wb");
|
2024-05-21 21:33:41 +01:00
|
|
|
fwrite(data_start, data_size, 1, savefile);
|
2024-05-20 23:42:37 +01:00
|
|
|
fclose(savefile);
|
|
|
|
|
}
|