SHIPY EQU $E4 ; FIXME, sort out available ZP page space TURNING EQU $60 SCREEN_X EQU $61 SCREEN_Y EQU $62 ANGLE EQU $63 HORIZ_SCALE_I EQU $64 HORIZ_SCALE_F EQU $65 FACTOR_I EQU $66 FACTOR_F EQU $67 DX_I EQU $68 DX_F EQU $69 SPACEX_I EQU $6A SPACEX_F EQU $6B CX_I EQU $6C CX_F EQU $6D DY_I EQU $6E DY_F EQU $6F SPACEY_I EQU $70 SPACEY_F EQU $71 CY_I EQU $72 CY_F EQU $73 TEMP_I EQU $74 TEMP_F EQU $75 DISTANCE_I EQU $76 DISTANCE_F EQU $77 SPACEZ_I EQU $78 SPACEZ_F EQU $79 ;=========== ; CONSTANTS ;=========== SHIPX EQU 15 TILE_W EQU 64 TILE_H EQU 64 MAP_MASK EQU (TILE_W - 1) LOWRES_W EQU 40 LOWRES_H EQU 40 flying_start: ; Clear screen/pages jsr set_gr_page0 ; Init Variables lda #20 sta SHIPY lda #0 sta TURNING sta ANGLE sta SPACEX_I sta SPACEY_I lda #4 sta SPACEZ_I lda #$80 sta SPACEZ_F flying_loop: jsr wait_until_keypressed lda LASTKEY cmp #('Q') bne skipskip rts skipskip: cmp #('I') bne check_down lda SHIPY cmp #16 bcc check_down ; bgt dec SHIPY dec SHIPY inc SPACEZ_I check_down: cmp #('M') bne check_left lda SHIPY cmp #28 bcs check_left ; ble inc SHIPY inc SHIPY dec SPACEZ_I check_left: cmp #('J') bne check_right inc TURNING inc ANGLE check_right: cmp #('K') bne check_done dec TURNING dec ANGLE check_done: lda ANGLE and #$f sta ANGLE ;==================== ; Draw the background ;==================== jsr draw_background_mode7 ;============== ; Draw the ship ;============== clv lda TURNING bmi draw_ship_right bne draw_ship_left draw_ship_forward: lda #>ship_forward sta INH lda #ship_right sta INH lda #ship_left sta INH lda #