This was an off-by-one error due to the placement of the start label
which included the table length itself.
#include "base_room4.s"
; count of all pointers in base room table
-#define F1_ROOM_TABLE_LEN ((f1_room_table_end - f1_room_table) / 2)
+#define F1_ROOM_TABLE_LEN ((f1_room_table_end - f1_room_table_start) / 2)
; the first byte of the table is the length of the table
; a table of all base room ptrs
; length must be divisible by 2
f1_room_table:
.db F1_ROOM_TABLE_LEN
+f1_room_table_start:
dw base_room_header
dw base_room2_header
dw base_room3_header