gravity: gravity now peaks jump if it is being applied
; sets act_direction to DOWN
; inputs:
; de: actor
+ ; returns:
+ ; a: != 0 no gravity
+ ; a: 0 gravity
act_apply_gravity:
ld a, [col_direction]
and a, DIRUP
ld a, [hl]
inc a
ld [hl], a
+
+ xor a, a
ret
; stores current position in col_prev_pos
; sets up the player actor
player_init:
- xor a, a
+ ld a, 0x5A
ld [player+act_pos_y], a
+ ld a, 0x47
ld [player+act_pos_x], a
ret
; top left point
ld a, b
+ add a, 2
ld [col_point_tl], a
ld a, c
+ add a, 2
ld [col_point_tl+1], a
; top right point
ld a, b
+ add a, 2
ld [col_point_tr], a
ld a, c
- add a, 16
+ add a, 12
ld [col_point_tr+1], a
; bottom left point
ld a, b
- add a, 16
+ add a, 14
ld [col_point_bl], a
ld a, c
+ add a, 2
ld [col_point_bl+1], a
; bottom right points
ld a, b
- add a, 16
+ add a, 14
ld [col_point_br], a
ld a, c
- add a, 16
+ add a, 14
ld [col_point_br+1], a
; center point
pop de
push de
call act_apply_gravity
+ cp a, 0
+ jr nz, @no_gravity REL
+ ld a, 1
+ ld [player_jump_peak], a
+@no_gravity:
pop de
call act_test_tile_collision