#define ACTS_MAX 32
#define MAP_OBJ_MAX 32
+#define RECT_MAX 32
#define STACK_BEGIN 0xDFFF
.de mo_row, 1
.de mo_dat, 2
.de mo_size, 0
+
+ ; rectangle collision flags
+.se 1
+ ; collides with player
+.de RF_PLAYER, 1
+ ; is a generic wall
+.de RF_WALL, 2
+ ; collides with enemy
+.de RF_ENEMY, 4
+
+ ; rectangle struct
+.se 0
+ ; if flags == 0 the rectangle is free
+.de r_flags, 1
+.de r_pos_y, 1
+.de r_pos_y_hi, 1
+.de r_pos_x, 1
+.de r_h, 1
+.de r_w, 1
+.de r_size, 0
xor a, a
@done:
.endscope
+#endmacro
+
+ ; defines a rectangle
+ ; inputs:
+ ; $1: collision flags
+ ; $2: y
+ ; $3: y hi
+ ; $4: x
+ ; $5: h
+ ; $6: w
+#macro recdef
+ .db $1, $2, $3, $4, $5, $6
#endmacro
player: .adv act_size
actors: .adv act_size * ACTS_MAX
map_objs: .adv mo_size * MAP_OBJ_MAX
+rectangles: .adv r_size * RECT_MAX
; current row that is being drawn
map_curr_row: .adv 1