diff --git a/eg/game.60p b/eg/game.60p index 4ebb98c..70f5cc5 100644 --- a/eg/game.60p +++ b/eg/game.60p @@ -30,8 +30,9 @@ reserve byte[16] actor_pos_hi reserve byte[16] actor_pos_lo reserve vector dispatch_state +reserve vector dispatch_logic -reserve byte[18] press_fire_msg: "PRESS FIRE TO PLAY" +reserve byte[18] press_fire_msg: "PRESS`FIRE`TO`PLAY" routine calculate_new_position outputs (new_position) { clc @@ -142,6 +143,9 @@ routine init_game { lda #$04 sta actor_pos_hi, y tya + clc + asl .a + asl .a sta actor_pos_lo, y iny cpy #8 @@ -167,6 +171,43 @@ routine state_title_screen { jmp (save_cinv) } +routine logic_player { + jsr read_stick + jsr calculate_new_position + jsr check_new_position_in_bounds + if bcs { + lda #32 + ldy #0 + sta (position), y + copy new_position position + lda #81 + ldy #0 + sta (position), y + } else { } +} + +routine logic_obstacle { + lda #0 + sta >delta + lda #1 + sta position