Added docs for save game
authorLukas Krickl <lukas@krickl.dev>
Fri, 27 Dec 2024 09:27:38 +0000 (10:27 +0100)
committerLukas Krickl <lukas@krickl.dev>
Fri, 27 Dec 2024 09:27:38 +0000 (10:27 +0100)
src/wram.s

index 68f691804062561a33f8c4d20eb1f325f6ce1a30..c582f6d772bd5fcab78e7451e1130cbdb84feb3f 100644 (file)
@@ -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