mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-09-10 08:54:51 +00:00
firework: launching works!
This commit is contained in:
parent
12957e97da
commit
5813747080
117
fireworks/fw.s
117
fireworks/fw.s
@ -84,6 +84,8 @@ done_fireworks:
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
.align $100
|
||||||
|
|
||||||
;===========================
|
;===========================
|
||||||
; LAUNCH_FIREWORK
|
; LAUNCH_FIREWORK
|
||||||
;===========================
|
;===========================
|
||||||
@ -196,10 +198,12 @@ done_hill:
|
|||||||
; 11
|
; 11
|
||||||
|
|
||||||
|
|
||||||
|
.align $100
|
||||||
|
|
||||||
;==========================================================================
|
;==========================================================================
|
||||||
; Move rocket
|
; Move rocket
|
||||||
;==========================================================================
|
;==========================================================================
|
||||||
; cycles=24+11+20+18+14+53 = 140+11 = 151
|
; cycles=24+11+20+18+14+53 = 140+1096 = 1236
|
||||||
|
|
||||||
move_rocket:
|
move_rocket:
|
||||||
|
|
||||||
@ -363,45 +367,46 @@ done_moving:
|
|||||||
done_bounds_checking:
|
done_bounds_checking:
|
||||||
|
|
||||||
|
|
||||||
lda #STATE_LAUNCH_ROCKET ; 2
|
|
||||||
sta STATE ; 3
|
|
||||||
rts ; 6
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;=======================================================================
|
;=======================================================================
|
||||||
; draw rocket
|
; draw rocket
|
||||||
;=======================================================================
|
;=======================================================================
|
||||||
;
|
;
|
||||||
|
; cs!=mx 9+15+258+258+3+10+258+258+9+7+11 = 1096
|
||||||
|
; cs==mx 9+ + + + +10+258+258+9+7+11 = 562 (need 534)
|
||||||
draw_rocket:
|
draw_rocket:
|
||||||
|
|
||||||
lda CURRENT_STEP ; 3
|
lda CURRENT_STEP ; 3
|
||||||
cmp MAX_STEPS ; 3
|
cmp MAX_STEPS ; 3
|
||||||
beq erase_rocket ; ?
|
beq skip_drawing_rocket ; 3
|
||||||
|
;===========
|
||||||
|
; 9
|
||||||
|
|
||||||
; set hcolor to proper white (3 or 7)
|
; set hcolor to proper white (3 or 7)
|
||||||
|
;-1
|
||||||
clc ; 2
|
clc ; 2
|
||||||
lda COLOR_GROUP ; 3
|
lda COLOR_GROUP ; 3
|
||||||
adc #3 ; 2
|
adc #3 ; 2
|
||||||
tax ; 2
|
tax ; 2
|
||||||
lda colortbl,X ; get color from table ; 4+
|
lda colortbl,X ; get color from table ; 4+
|
||||||
sta HGR_COLOR ; 3
|
sta HGR_COLOR ; 3
|
||||||
|
;============
|
||||||
|
; 15
|
||||||
; HPLOT X,Y: X= (y,x), Y=a
|
; HPLOT X,Y: X= (y,x), Y=a
|
||||||
|
|
||||||
ldx X_OLD ; 3
|
ldx X_OLD ; 3
|
||||||
lda Y_OLD ; 3
|
lda Y_OLD ; 3
|
||||||
ldy #0 ; 2
|
ldy #0 ; 2
|
||||||
jsr hplot0 ; hplot(x_old,y_old); ;6+244
|
jsr hplot0 ; hplot(x_old,y_old); ;6+244
|
||||||
|
;=============
|
||||||
|
; 258
|
||||||
|
|
||||||
; HPLOT TO X,Y X=(x,a), y=Y
|
; HPLOT TO X,Y X=(x,a), y=Y
|
||||||
ldx XPOS_L
|
ldx XPOS_L ; 3
|
||||||
ldy #0
|
ldy #0 ; 2
|
||||||
lda YPOS_H
|
lda YPOS_H ; 3
|
||||||
jsr hplot0
|
jsr hplot0 ;6+244
|
||||||
|
;=============
|
||||||
|
; 258
|
||||||
|
|
||||||
; lda XPOS_L ; 3
|
; lda XPOS_L ; 3
|
||||||
; ldx #0 ; 2
|
; ldx #0 ; 2
|
||||||
@ -409,27 +414,42 @@ draw_rocket:
|
|||||||
; jsr hglin ; hplot_to(xpos_l,ypos_h); ;?????
|
; jsr hglin ; hplot_to(xpos_l,ypos_h); ;?????
|
||||||
|
|
||||||
|
|
||||||
|
jmp erase_rocket ; 3
|
||||||
|
|
||||||
|
skip_drawing_rocket:
|
||||||
|
; Try X=7 Y=13 cycles=534
|
||||||
|
ldy #13 ; 2
|
||||||
|
sdloop1:ldx #7 ; 2
|
||||||
|
sdloop2:dex ; 2
|
||||||
|
bne sdloop2 ; 2nt/3
|
||||||
|
dey ; 2
|
||||||
|
bne sdloop1 ; 2nt/3
|
||||||
|
|
||||||
erase_rocket:
|
erase_rocket:
|
||||||
; erase with proper color black (0 or 4)
|
; erase with proper color black (0 or 4)
|
||||||
|
|
||||||
ldx COLOR_GROUP
|
ldx COLOR_GROUP ; 3
|
||||||
lda colortbl,X ; get color from table
|
lda colortbl,X ; get color from table ; 4+
|
||||||
sta HGR_COLOR
|
sta HGR_COLOR ; 3
|
||||||
|
;===========
|
||||||
|
; 10
|
||||||
; HPLOT X,Y: X= (y,x), Y=a
|
; HPLOT X,Y: X= (y,x), Y=a
|
||||||
|
|
||||||
ldx X_OLDER
|
ldx X_OLDER ; 3
|
||||||
lda Y_OLDER
|
lda Y_OLDER ; 3
|
||||||
ldy #0
|
ldy #0 ; 2
|
||||||
jsr hplot0 ; hplot(x_old,y_old);
|
jsr hplot0 ; hplot(x_old,y_old); ; 6+244
|
||||||
|
;============
|
||||||
|
; 258
|
||||||
|
|
||||||
; HPLOT TO X,Y X=(x,a), y=Y
|
; HPLOT TO X,Y X=(x,a), y=Y
|
||||||
|
|
||||||
ldx X_OLD
|
ldx X_OLD ; 3
|
||||||
ldy #0
|
ldy #0 ; 2
|
||||||
lda Y_OLD
|
lda Y_OLD ; 3
|
||||||
jsr hplot0
|
jsr hplot0 ;6+244
|
||||||
|
;=============
|
||||||
|
; 258
|
||||||
; lda X_OLD
|
; lda X_OLD
|
||||||
; ldx #0
|
; ldx #0
|
||||||
; ldy Y_OLD
|
; ldy Y_OLD
|
||||||
@ -437,25 +457,36 @@ erase_rocket:
|
|||||||
|
|
||||||
done_with_loop:
|
done_with_loop:
|
||||||
|
|
||||||
lda CURRENT_STEP
|
lda CURRENT_STEP ; 3
|
||||||
cmp MAX_STEPS
|
cmp MAX_STEPS ; 3
|
||||||
bne not_done_with_launch
|
bne not_done_with_launch ; 3
|
||||||
|
;=============
|
||||||
|
; 9
|
||||||
|
|
||||||
|
;-1
|
||||||
; lda #STATE_START_EXPLOSION
|
; lda #STATE_START_EXPLOSION
|
||||||
lda #STATE_LAUNCH_ROCKET
|
lda #STATE_LAUNCH_ROCKET ; 2
|
||||||
sta STATE
|
sta STATE ; 3
|
||||||
|
jmp not_done_with_launch2 ; 3
|
||||||
|
;==========
|
||||||
|
; 7
|
||||||
|
|
||||||
not_done_with_launch:
|
not_done_with_launch:
|
||||||
|
lda STATE ; nop ; 3
|
||||||
|
nop ; 2
|
||||||
|
nop ; 2
|
||||||
|
;==========
|
||||||
|
; 7
|
||||||
|
; lda #$c0
|
||||||
|
; jsr WAIT
|
||||||
|
not_done_with_launch2:
|
||||||
|
|
||||||
lda #$c0
|
inc CURRENT_STEP ; 5
|
||||||
jsr WAIT
|
rts ; 6
|
||||||
|
;===========
|
||||||
inc CURRENT_STEP
|
; 11
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
|
.align $100
|
||||||
|
|
||||||
;======================================================================
|
;======================================================================
|
||||||
; Start explosion near x_old, y_old
|
; Start explosion near x_old, y_old
|
||||||
@ -627,6 +658,8 @@ explosion_done:
|
|||||||
; 62
|
; 62
|
||||||
|
|
||||||
|
|
||||||
|
.align $100
|
||||||
|
|
||||||
;===============================
|
;===============================
|
||||||
; Draw explosion rays
|
; Draw explosion rays
|
||||||
;===============================
|
;===============================
|
||||||
|
@ -484,6 +484,7 @@ hplot_to:
|
|||||||
rts22:
|
rts22:
|
||||||
rts ; 6
|
rts ; 6
|
||||||
|
|
||||||
|
.align $100
|
||||||
|
|
||||||
;=============================
|
;=============================
|
||||||
; HCOLOR_EQUALS
|
; HCOLOR_EQUALS
|
||||||
|
@ -40,19 +40,19 @@ Xloop2: dex ; 2
|
|||||||
;=================================
|
;=================================
|
||||||
; and take 4504 cycles to do it
|
; and take 4504 cycles to do it
|
||||||
|
|
||||||
; we take 160 so waste 4344
|
; we take 1245 so waste 3259
|
||||||
action_move_rocket:
|
action_move_rocket:
|
||||||
|
|
||||||
; Try X=19 Y=43 cycles=4344
|
; Try X=35 Y=18 cycles=3259
|
||||||
|
|
||||||
ldy #43 ; 2
|
ldy #18 ; 2
|
||||||
Yloop1: ldx #19 ; 2
|
Yloop1: ldx #35 ; 2
|
||||||
Yloop2: dex ; 2
|
Yloop2: dex ; 2
|
||||||
bne Yloop2 ; 2nt/3
|
bne Yloop2 ; 2nt/3
|
||||||
dey ; 2
|
dey ; 2
|
||||||
bne Yloop1 ; 2nt/3
|
bne Yloop1 ; 2nt/3
|
||||||
|
|
||||||
jsr move_rocket ; 6+151 = 157
|
jsr move_rocket ; 6+1236 = 1242
|
||||||
|
|
||||||
jmp check_keyboard ; 3
|
jmp check_keyboard ; 3
|
||||||
|
|
||||||
|
@ -1,16 +1,13 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
|
||||||
int x,y,cycles,desired,range=10;
|
int x,y,cycles,desired,range=10;
|
||||||
|
|
||||||
// desired=3116;
|
desired=3116;
|
||||||
// desired=4152;
|
|
||||||
// desired=5196;
|
|
||||||
// desired=4547;
|
|
||||||
// desired=9685;
|
|
||||||
desired=4680;
|
|
||||||
|
|
||||||
|
if (argc>1) desired=atoi(argv[1]);
|
||||||
|
|
||||||
printf("You want %d cycles\n",desired);
|
printf("You want %d cycles\n",desired);
|
||||||
for(x=0;x<255;x++) {
|
for(x=0;x<255;x++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user