@draw_cursor:
; draw cursor
+ ld a, [scroll_y]
+ ld b, a ; b = scroll_y
+ ld a, [scroll_x]
+ ld c, a ; c = scroll_x
; 8x8 small cursor
ld hl, PLAYER_SPRITE1
ld a, [cursor_y]
add a, OBJ_OFF_Y
+ sub a, b
ld [hl+], a
ld a, [cursor_x]
add a, OBJ_OFF_X
+ sub a, c
ld [hl+], a
ld a, CURSOR_TILE
ld [cursor_move_timer], a
ld a, CURSOR_MOVE_SPEED
ld [cursor_move_y], a
+
+
+ ; adjust scroll
+ ld a, [scroll_move_y]
+ add a, 1
+ ld [scroll_move_y], a
+
ret
@notdown:
ld [cursor_move_timer], a
ld a, CURSOR_MOVE_SPEED * NEGATE
ld [cursor_move_y], a
+
+ ; adjust scroll
+ ld a, [scroll_move_y]
+ sub a, 1
+ ld [scroll_move_y], a
+
ret
@notup:
ld [cursor_move_timer], a
ld a, CURSOR_MOVE_SPEED * NEGATE
ld [cursor_move_x], a
+
+ ; adjust scroll
+ ld a, [scroll_move_x]
+ sub a, 1
+ ld [scroll_move_x], a
+
ret
@notleft:
ld [cursor_move_timer], a
ld a, CURSOR_MOVE_SPEED
ld [cursor_move_x], a
+
+ ; adjust scroll
+ ld a, [scroll_move_x]
+ add a, 1
+ ld [scroll_move_x], a
+
@notright:
ret
call poll_inputs
call ui_draw
+ call scroll_update
+
ld a, 1
ld [frame_ready], a
ret
+ ; updates scroll based on scroll_move_y/x
+scroll_update:
+
+ ld a, [scroll_move_y]
+ cp a, 0x12
+ jr nz, @no_scroll_down REL
+
+ ; move-1
+ sub a, 1
+ ld [scroll_move_y], a
+
+ ld b, TILE_SIZE
+ ld a, [scroll_y]
+ add a, b
+ ld [scroll_y], a
+ jr @done REL
+@no_scroll_down:
+
+
+ cp a, 0xFF
+ jr nz, @no_scroll_up REL
+
+ ; move+1
+ add a, 1
+ ld [scroll_move_y], a
+
+ ld b, TILE_SIZE
+ ld a, [scroll_y]
+ sub a, b
+ ld [scroll_y], a
+ jr @done REL
+@no_scroll_up:
+
+
+ ld a, [scroll_move_x]
+ cp a, 0x14
+ jr nz, @no_scroll_right REL
+
+ sub a, 1
+ ld [scroll_move_x], a
+
+ ld b, TILE_SIZE
+ ld a, [scroll_x]
+ add a, b
+ ld [scroll_x], a
+ jr @done REL
+@no_scroll_right:
+
+ cp a, 0xFF
+ jr nz, @no_scroll_left REL
+
+ add a, 1
+ ld [scroll_move_x], a
+
+ ld b, TILE_SIZE
+ ld a, [scroll_x]
+ sub a, b
+ ld [scroll_x], a
+@no_scroll_left:
+@done:
+ ld a, [scroll_y]
+ ld [RSCY], a
+
+ ld a, [scroll_x]
+ ld [RSCX], a
+
+ ret
+
; wait for next vblank
vblank_wait:
ld a, [RLY]
cursor_move_y: .adv 1
cursor_move_x: .adv 1
+ ; +/-1 for each time the cursor moves
+ ; allows us to move scroll when needed
+scroll_move_y: .adv 1
+scroll_move_x: .adv 1
+
+ ; scroll location
+scroll_y: .adv 1
+scroll_x: .adv 1
+
money: .adv 3
debt: .adv 3
demand_house: .adv 1