mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-08-15 08:27:41 +00:00
tfv: flying at speed more or less works
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|
||||||
;====================
|
;====================
|
||||||
|
Reference in New Issue
Block a user