#ifndef MIRROR_H #define MIRROR_H #include #include "rom_data.h" #define SAVE_A_OFFSET 0x00000000 // Offset of Game Save A #define SAVE_B_OFFSET 0x0000E000 // Offset of Game Save B #define SECTION_ID_OFFSET 0x00000FF4 #define SAVE_INDEX_OFFSET 0x00000FFC extern vu32 newest_save_offset; extern vu32 memory_section_array[]; extern char mem_name; extern u8 global_memory_buffer[0x1000]; extern rom_data curr_GBA_rom; /** * @brief Given that the save sections within a save slot are not saved in a fixed order, * This function will walk through the save slot to fill the memory_section_array map. * * After calling this, memory_section_array will point to the save offset by each section ID. * So memory_section_array[0] will point to the save offset of section 0, etc. */ void initialize_memory_locations(); void print_mem_section(); //bool insert_pokemon(Pokemon party_array[], int num); void reverse_endian(u8 *data, size_t size); /** * @brief This function will update the checksum in global_memory_buffer. * It assumes that global_memory_buffer contains one of the save data sections. * * @param hall_of_fame This is needed to indicate if you're trying to save the hall of fame section. The checksum offset is slightly different there. */ void update_memory_buffer_checksum(bool hall_of_fame); bool read_flag(u16 flag_id); bool compare_map_and_npc_data(int map_bank, int map_id, int npc_id); #endif