; rooms are always in the order specified here:
; room_struct, tiles, flags, actor_table, exit_table
+ ; room body including all tiles, flags, actors
+ ; and exits
+.se 0
+.de roomb_header, room_size
+.de roomb_tiles, ROOM_TILES_SIZE
+.de roomb_flags, ROOM_FLAGS_SIZE
+.de roomb_actors, ACTOR_TABLE_SIZE
+.de roomb_exits, ROOM_EXIT_TABLE_SIZE
+.de roomb_size, 0
+
; save game struct
.se 0
; checksum of save game
; 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_rooms, roomb_size * ROOMS_TOTAL
.de save_game_player, player_size
; this is a canary value to detect out of bounds reads in sram
; if this value is not SRAM_MAGIC then the save game is corrupted