From d161663e67df27fedf2fe52de0537c37120326ed Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Fri, 27 Dec 2024 10:27:38 +0100 Subject: [PATCH] Added docs for save game --- src/wram.s | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/wram.s b/src/wram.s index 68f6918..c582f6d 100644 --- a/src/wram.s +++ b/src/wram.s @@ -140,7 +140,6 @@ curr_room_exits: .adv 2 ; tiles, flags, actors and exits ; rooms are always in the order specified here: ; room_struct, tiles, flags, actor_table, exit_table -#define ROOM_SIZE_TOTAL room_size + ROOM_TILES_SIZE + ROOM_FLAGS_SIZE + ACTOR_TABLE_SIZE + ROOM_EXIT_TABLE_SIZE ; save game struct .se 0 @@ -149,8 +148,15 @@ curr_room_exits: .adv 2 .de save_game_chksm, 1 ; saving rng seed .de save_game_seed, 1 - ; saving all rooms -.de save_game_rooms, ROOM_SIZE_TOTAL * ROOMS_TOTAL + ; saving all room headers + ; it is important to ensure + ; that the rooms are loaded back in their intended memory space + ; to not corrupt room header pointers +.de save_game_rooms, room_size * ROOMS_TOTAL +.de save_game_room_tiles, ROOM_TILES_SIZE * ROOMS_TOTAL +.de save_game_room_flags, ROOM_FLAGS_SIZE * ROOMS_TOTAL +.de save_game_room_actors, ACTOR_TABLE_SIZE * ROOMS_TOTAL +.de save_game_room_exits, ROOM_EXIT_TABLE_SIZE * ROOMS_TOTAL ; saving player state .de save_game_player, player_size ; this is a canary value to detect out of bounds reads in sram -- 2.30.2