mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-08-15 08:27:41 +00:00
split: one tree moving
This commit is contained in:
@@ -9,7 +9,7 @@ int main(int argc, char **argv) {
|
|||||||
// desired=5196;
|
// desired=5196;
|
||||||
// desired=4547;
|
// desired=4547;
|
||||||
// desired=9685;
|
// desired=9685;
|
||||||
desired=2331;
|
desired=1673;
|
||||||
|
|
||||||
|
|
||||||
printf("You want %d cycles\n",desired);
|
printf("You want %d cycles\n",desired);
|
||||||
|
@@ -3,6 +3,9 @@
|
|||||||
H2 = $2C
|
H2 = $2C
|
||||||
; V2 = $2D
|
; V2 = $2D
|
||||||
; TEMPY = $FB
|
; TEMPY = $FB
|
||||||
|
FRAME = $60
|
||||||
|
TREE1X = $61
|
||||||
|
TREE2X = $62
|
||||||
|
|
||||||
HGR = $F3E2
|
HGR = $F3E2
|
||||||
HPLOT0 = $F457
|
HPLOT0 = $F457
|
||||||
@@ -16,6 +19,14 @@
|
|||||||
jsr TEXT
|
jsr TEXT
|
||||||
jsr HOME
|
jsr HOME
|
||||||
|
|
||||||
|
|
||||||
|
; Init vars
|
||||||
|
lda #28
|
||||||
|
sta TREE1X
|
||||||
|
lda #37
|
||||||
|
sta TREE2X
|
||||||
|
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta DISP_PAGE
|
sta DISP_PAGE
|
||||||
lda #0
|
lda #0
|
||||||
@@ -276,27 +287,59 @@ loop6:
|
|||||||
|
|
||||||
; vertical blank
|
; vertical blank
|
||||||
|
|
||||||
; want 4550-3 = 4547 cycles
|
; want 4550 cycles
|
||||||
; Try X=13 Y=64 cycles=4545 R2
|
; Try X=13 Y=64 cycles=4545 R2
|
||||||
|
|
||||||
; lda #0 ; 2
|
|
||||||
; ldy #64 ; 2
|
|
||||||
loopE:
|
|
||||||
; ldx #13 ; 2
|
|
||||||
loopF:
|
|
||||||
; dex ; 2
|
|
||||||
; bne loopF ; 2nt/3
|
|
||||||
; dey ; 2
|
|
||||||
; bne loopE ; 2nt/3
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;=========================================================================
|
;=========================================================================
|
||||||
|
|
||||||
; DRAW SPRITES
|
; DRAW SPRITES
|
||||||
; do this during blanking interval
|
; do this during blanking interval
|
||||||
|
|
||||||
|
; color_equals(4);
|
||||||
|
; for(i=28;i<48;i++) {
|
||||||
|
; basic_hlin(0,39,i);
|
||||||
|
; }
|
||||||
|
|
||||||
|
;================
|
||||||
|
; Draw Small Tree
|
||||||
|
|
||||||
|
lda #>small_tree ; 2
|
||||||
|
sta INH ; 3
|
||||||
|
lda #<small_tree ; 2
|
||||||
|
sta INL ; 3
|
||||||
|
|
||||||
|
lda TREE2X ; 3
|
||||||
|
sta XPOS ; 3
|
||||||
|
lda #28 ; 2
|
||||||
|
sta YPOS ; 3
|
||||||
|
|
||||||
|
jsr put_sprite ; 6
|
||||||
|
;=========
|
||||||
|
; 27
|
||||||
|
; + 576
|
||||||
|
;========
|
||||||
|
; 603
|
||||||
|
|
||||||
|
; grsim_put_sprite_page(PAGE0,
|
||||||
|
; small_tree,
|
||||||
|
; tree1_x,tree1_y);
|
||||||
|
; grsim_put_sprite_page(PAGE0,
|
||||||
|
; big_tree,
|
||||||
|
; tree2_x,tree2_y);
|
||||||
|
|
||||||
|
; if (frame%8>4) {
|
||||||
|
; grsim_put_sprite_page(PAGE0,
|
||||||
|
; bird_rider_stand_right,
|
||||||
|
; 17,30);
|
||||||
|
; }
|
||||||
|
; else {
|
||||||
|
; grsim_put_sprite_page(PAGE0,
|
||||||
|
; bird_rider_walk_right,
|
||||||
|
; 17,30);
|
||||||
|
; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lda #>bird_rider_stand_right ; 2
|
lda #>bird_rider_stand_right ; 2
|
||||||
sta INH ; 3
|
sta INH ; 3
|
||||||
lda #<bird_rider_stand_right ; 2
|
lda #<bird_rider_stand_right ; 2
|
||||||
@@ -314,25 +357,101 @@ loopF:
|
|||||||
; + 2190
|
; + 2190
|
||||||
;========
|
;========
|
||||||
; 2216
|
; 2216
|
||||||
|
; Blanking time: 4550
|
||||||
|
; Tree1 Sprite -603
|
||||||
|
; Sprite -2216
|
||||||
|
; Frame Update -13
|
||||||
|
; Tree1 Update -21
|
||||||
|
; Tree2 Update -21
|
||||||
|
; JMP at end -3
|
||||||
|
|
||||||
; 4547 - 2216
|
; 1673 is new number
|
||||||
; 2331 is new number
|
; Try X=1 Y=152 cycles=1673
|
||||||
; Try X=92 Y=5 cycles=2331
|
|
||||||
|
|
||||||
|
|
||||||
; lda #0 ; 2
|
; lda #0 ; 2
|
||||||
; lda #0 ; 2
|
; lda #0 ; 2
|
||||||
ldy #5 ; 2
|
ldy #152 ; 2
|
||||||
loop7:
|
loop7:
|
||||||
ldx #92 ; 2
|
ldx #1 ; 2
|
||||||
loop8:
|
loop8:
|
||||||
dex ; 2
|
dex ; 2
|
||||||
bne loop8 ; 2nt/3
|
bne loop8 ; 2nt/3
|
||||||
dey ; 2
|
dey ; 2
|
||||||
bne loop7 ; 2nt/3
|
bne loop7 ; 2nt/3
|
||||||
|
|
||||||
|
;==========================
|
||||||
|
; Update frame = 13 cycles
|
||||||
|
|
||||||
|
|
||||||
|
inc FRAME ; frame++ ; 5
|
||||||
|
lda FRAME ; 3
|
||||||
|
and #$1f ; roll over after 31 ; 2
|
||||||
|
sta FRAME ; 3
|
||||||
|
|
||||||
|
;===========
|
||||||
|
; 13
|
||||||
|
|
||||||
|
;===========================
|
||||||
|
; Update tree2 = 21 cycles
|
||||||
|
and #3 ; if (frame%4==0) ; 2
|
||||||
|
beq dec_tree2
|
||||||
|
; 2
|
||||||
|
; need to do 19-5 cycles of nonsense
|
||||||
|
inc TREE2X ; 5
|
||||||
|
dec TREE2X ; 5
|
||||||
|
lda #0 ; 2
|
||||||
|
lda #0 ; 2
|
||||||
|
|
||||||
|
jmp done_tree2 ; 3
|
||||||
|
|
||||||
|
dec_tree2:
|
||||||
|
; 3
|
||||||
|
dec TREE2X ; tree2_x-- ; 5
|
||||||
|
lda TREE2X ; 3
|
||||||
|
bmi tree2_neg
|
||||||
|
; 2
|
||||||
|
ldx TREE2X ; 3
|
||||||
|
jmp done_tree2 ; 3
|
||||||
|
tree2_neg:
|
||||||
|
; incoming br 3
|
||||||
|
ldx #37 ; 2
|
||||||
|
stx TREE2X ; 3
|
||||||
|
done_tree2:
|
||||||
|
|
||||||
|
;===========================
|
||||||
|
; Update tree1 = 21 cycles
|
||||||
|
and #$f ; if (frame%16==0) ; 2
|
||||||
|
beq dec_tree1
|
||||||
|
; 2
|
||||||
|
; need to do 19-5 cycles of nonsense
|
||||||
|
inc TREE1X ; 5
|
||||||
|
dec TREE1X ; 5
|
||||||
|
lda #0 ; 2
|
||||||
|
lda #0 ; 2
|
||||||
|
|
||||||
|
jmp done_tree1 ; 3
|
||||||
|
|
||||||
|
dec_tree1:
|
||||||
|
; 3
|
||||||
|
dec TREE1X ; tree1_x-- ; 5
|
||||||
|
lda TREE1X ; 3
|
||||||
|
bmi tree1_neg
|
||||||
|
; 2
|
||||||
|
ldx TREE1X ; 3
|
||||||
|
jmp done_tree1 ; 3
|
||||||
|
tree1_neg:
|
||||||
|
; incoming br 3
|
||||||
|
ldx #37 ; 2
|
||||||
|
stx TREE1X ; 3
|
||||||
|
done_tree1:
|
||||||
|
|
||||||
jmp display_loop ; 3
|
jmp display_loop ; 3
|
||||||
|
|
||||||
|
;===========================================================
|
||||||
|
;===========================================================
|
||||||
|
;===========================================================
|
||||||
|
|
||||||
wait_until_keypressed:
|
wait_until_keypressed:
|
||||||
lda KEYPRESS ; check if keypressed
|
lda KEYPRESS ; check if keypressed
|
||||||
bpl wait_until_keypressed ; if not, loop
|
bpl wait_until_keypressed ; if not, loop
|
||||||
@@ -364,9 +483,9 @@ wait_until_keypressed:
|
|||||||
; 18 (-1 for last)
|
; 18 (-1 for last)
|
||||||
; 6 return
|
; 6 return
|
||||||
|
|
||||||
; so cost = 28 + Y*(34+18)+ (INNER-X) -1 + 6
|
; so cost = 28 + Y*(34+18)+ (INNER-Y) -1 + 6
|
||||||
; = 33 + Y*(52)+(INNER-X)
|
; = 33 + Y*(52)+(INNER-Y)
|
||||||
; = 33 + Y*(52)+ [30A + 64B + 69C + 54D]-X
|
; = 33 + Y*(52)+ [30A + 64B + 69C + 54D]-Y
|
||||||
|
|
||||||
put_sprite:
|
put_sprite:
|
||||||
|
|
||||||
|
@@ -22,6 +22,9 @@ bird_rider_walk_right:
|
|||||||
.byte $00,$00,$00,$99,$00,$00
|
.byte $00,$00,$00,$99,$00,$00
|
||||||
.byte $00,$00,$99,$00,$99,$00
|
.byte $00,$00,$99,$00,$99,$00
|
||||||
; 00=22 0X=3 X0=1 XX=16
|
; 00=22 0X=3 X0=1 XX=16
|
||||||
|
; = 33 + Y*(52)+ [30A + 64B + 69C + 54D]-Y
|
||||||
|
; = 33 + 7*52 + 30*22 + 64*3 + 69*1 + 54*16 - 7
|
||||||
|
; = 2175
|
||||||
|
|
||||||
small_tree:
|
small_tree:
|
||||||
.byte $3,$3
|
.byte $3,$3
|
||||||
@@ -29,8 +32,8 @@ small_tree:
|
|||||||
.byte $CC,$CC,$CC
|
.byte $CC,$CC,$CC
|
||||||
.byte $00,$88,$00
|
.byte $00,$88,$00
|
||||||
; 00=4 0X=0 X0=0 XX=5
|
; 00=4 0X=0 X0=0 XX=5
|
||||||
; = 33 + Y*(52)+ [30A + 64B + 69C + 54D]-X
|
; = 33 + Y*(52)+ [30A + 64B + 69C + 54D]-Y
|
||||||
; = 33 + 3*52 + [30*4 + 54*5]-3 = 576 ++ works
|
; = 33 + 3*52 + [30*4 + 54*5]-3 = 576
|
||||||
|
|
||||||
big_tree:
|
big_tree:
|
||||||
.byte $5,$5
|
.byte $5,$5
|
||||||
@@ -40,5 +43,5 @@ big_tree:
|
|||||||
.byte $c0,$CC,$CC,$CC,$c0
|
.byte $c0,$CC,$CC,$CC,$c0
|
||||||
.byte $00,$00,$88,$00,$00
|
.byte $00,$00,$88,$00,$00
|
||||||
; 00=12 0X=0 X0=4 XX=9
|
; 00=12 0X=0 X0=4 XX=9
|
||||||
; = 33 + Y*(52)+ [30A + 64B + 69C + 54D]-X
|
; = 33 + Y*(52)+ [30A + 64B + 69C + 54D]-Y
|
||||||
; = 33 + 5*52 + 30*12 + 69*4 + 54*9 - 5 = 1410 ++ works
|
; = 33 + 5*52 + 30*12 + 69*4 + 54*9 - 5 = 1410
|
||||||
|
Reference in New Issue
Block a user