tfv: flying at speed more or less works

This commit is contained in:
Vince Weaver
2017-09-11 15:28:56 -04:00
parent a3b2fd9108
commit 6f1ece4a0e

View File

@@ -153,27 +153,27 @@ check_speedup:
;========= ;=========
lda #$3 lda #$3
cmp SPEED cmp SPEED
bne check_speeddown beq check_speeddown
inc SPEED inc SPEED
check_speeddown: check_speeddown:
cmp #('X') cmp #('X')
bne check_done bne check_brake
;=========== ;===========
; SPEED DOWN ; SPEED DOWN
;=========== ;===========
lda SPEED lda SPEED
beq check_break beq check_brake
dec SPEED dec SPEED
check_break: check_brake:
cmp #(' ') cmp #(' '+128)
bne check_land bne check_land
;============ ;============
; BREAK ; BRAKE
;============ ;============
lda #$0 lda #$0
sta SPEED sta SPEED
@@ -210,23 +210,52 @@ check_done:
; Handle Movement ; Handle Movement
;================ ;================
speed_loop: speed_move:
ldx SPEED ldx SPEED
beq draw_background beq draw_background
;; int ii; lda ANGLE ; dx.i=fixed_sin[(angle+4)&0xf].i; // cos()
clc
adc #4
and #$f
asl
tay
lda fixed_sin_scale,Y
sta DX_I
iny ; dx.f=fixed_sin[(angle+4)&0xf].f; // cos()
lda fixed_sin_scale,Y
sta DX_F
;; dx.i = fixed_sin_scale[(angle+4)&0xf].i; // cos lda ANGLE ; dy.i=fixed_sin[angle&0xf].i; // sin()
;; dx.f = fixed_sin_scale[(angle+4)&0xf].f; // cos and #$f
;; dy.i = fixed_sin_scale[angle&0xf].i; // sin asl
;; dy.f = fixed_sin_scale[angle&0xf].f; // sin tay
lda fixed_sin_scale,Y
sta DY_I
iny ; dx.f=fixed_sin[angle&0xf].f; // sin()
lda fixed_sin_scale,Y
sta DY_F
speed_loop:
clc ; fixed_add(&cx,&dx,&cx);
lda CX_F
adc DX_F
sta CX_F
lda CX_I
adc DX_I
sta CX_I
clc ; fixed_add(&cy,&dy,&cy);
lda CY_F
adc DY_F
sta CY_F
lda CY_I
adc DY_I
sta CY_I
;; for(ii=0;ii<speed;ii++) {
;; fixed_add(&cx,&dx,&cx);
;; fixed_add(&cy,&dy,&cy);
;; }
dex dex
jmp speed_loop bne speed_loop
;==================== ;====================