mirror of
https://github.com/Pecusx/dino-game.git
synced 2026-05-21 06:39:38 +02:00
Jump!
This commit is contained in:
+3
-2
@@ -34,12 +34,14 @@ DinoShapesTableL
|
||||
.by <dino_crouch_1
|
||||
.by <dino_crouch_2
|
||||
.by <dino_run_0 ; jump
|
||||
.by <dino_run_0 ; jump
|
||||
DinoShapesTableH
|
||||
.by >dino_run_1
|
||||
.by >dino_run_2
|
||||
.by >dino_crouch_1
|
||||
.by >dino_crouch_2
|
||||
.by >dino_run_0 ; jump
|
||||
.by >dino_run_0 ; jump
|
||||
; other objects
|
||||
ground_0
|
||||
.by $ff, $ff ; '..'
|
||||
@@ -106,6 +108,5 @@ diff_object_gap ; min distance between obstacles by difficulty level
|
||||
:DIFF_LEVELS .by 20-#
|
||||
;----------vars----------
|
||||
diff_level .ds 1
|
||||
|
||||
|
||||
DinoJumpTr .by 1,2,3,3,2,1
|
||||
.endif ; .IF *>0
|
||||
|
||||
@@ -12,6 +12,7 @@ DIFF_LEVELS = 16
|
||||
.zpvar temp_b .byte
|
||||
.zpvar DinoWalkPhase .byte
|
||||
.zpvar DinoState .byte ; 0/1 - walk, 2/3 - crouch, 4... - jump
|
||||
.zpvar JumpPhase .byte
|
||||
;---------------------------------------------------
|
||||
icl 'lib/ATARISYS.ASM'
|
||||
icl 'lib/MACRO.ASM'
|
||||
@@ -93,10 +94,6 @@ EndLoop
|
||||
jsr WorldShift
|
||||
jsr WorldToScreen
|
||||
jsr CheckJoy
|
||||
ldx #5 ; position
|
||||
lda DinoState
|
||||
ora DinoWalkPhase ; shape
|
||||
tay
|
||||
jsr ShowDino
|
||||
waitRTC ; or waitRTC ?
|
||||
;key
|
||||
@@ -115,7 +112,7 @@ EndLoop
|
||||
mva #1 hscrol
|
||||
waitRTC ; or waitRTC ?
|
||||
;key
|
||||
jsr AnimateBirds
|
||||
jsr Animate
|
||||
mva #>font1 chbas
|
||||
waitRTC ; or waitRTC ?
|
||||
mva #4 hscrol
|
||||
@@ -231,7 +228,7 @@ noInsert
|
||||
rts
|
||||
.endp
|
||||
;-----------------------------------------------
|
||||
.proc AnimateBirds
|
||||
.proc Animate
|
||||
ldy #WORLD_LENGTH
|
||||
@ lda WorldTable,y
|
||||
tax
|
||||
@@ -246,9 +243,24 @@ noInsert
|
||||
NoBird
|
||||
dey
|
||||
bpl @-
|
||||
; animate Dino
|
||||
lda DinoWalkPhase
|
||||
eor #%00000001
|
||||
sta DinoWalkPhase
|
||||
; jump
|
||||
lda DinoState
|
||||
cmp #4 ; jump state
|
||||
bne NoJump
|
||||
lda JumpPhase
|
||||
cmp #6 ; max jump phase
|
||||
beq EndJump
|
||||
inc JumpPhase
|
||||
rts
|
||||
EndJump
|
||||
lda #0
|
||||
sta JumpPhase
|
||||
sta DinoState
|
||||
NoJump
|
||||
rts
|
||||
.endp
|
||||
;-----------------------------------------------
|
||||
@@ -287,14 +299,20 @@ ObjectLoop
|
||||
.endp
|
||||
;-----------------------------------------------
|
||||
; Show Dino on screen (test)
|
||||
; X - y position
|
||||
; Y - shape nr
|
||||
;-----------------------------------------------
|
||||
.proc ShowDino
|
||||
ldx #5 ; position
|
||||
lda DinoState
|
||||
ora DinoWalkPhase ; shape
|
||||
tay
|
||||
lda DinoShapesTableL,y
|
||||
sta temp_w
|
||||
lda DinoShapesTableH,y
|
||||
sta temp_w+1
|
||||
cpy #4 ; jump
|
||||
beq Jump
|
||||
cpy #5 ; jump
|
||||
beq Jump
|
||||
ldy #0
|
||||
DinoLoop
|
||||
lda (temp_w),y
|
||||
@@ -318,9 +336,91 @@ DinoLoop
|
||||
cpy #5 ; dino width
|
||||
bne DinoLoop
|
||||
rts
|
||||
Jump
|
||||
ldy JumpPhase
|
||||
lda DinoJumpTr,y
|
||||
cmp #2
|
||||
beq jPhase2
|
||||
cmp #3
|
||||
jeq jPhase3
|
||||
jPhase1
|
||||
ldy #0
|
||||
DinoLoop1
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$300,x
|
||||
@ adw temp_w #5
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$400,x
|
||||
@ adw temp_w #5
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$500,x
|
||||
@ adw temp_w #5
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$600,x
|
||||
@ sbw temp_w #15
|
||||
inx
|
||||
iny
|
||||
cpy #5 ; dino width
|
||||
bne DinoLoop1
|
||||
rts
|
||||
jPhase2
|
||||
ldy #0
|
||||
DinoLoop2
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$200,x
|
||||
@ adw temp_w #5
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$300,x
|
||||
@ adw temp_w #5
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$400,x
|
||||
@ adw temp_w #5
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$500,x
|
||||
@ sbw temp_w #15
|
||||
inx
|
||||
iny
|
||||
cpy #5 ; dino width
|
||||
bne DinoLoop2
|
||||
rts
|
||||
jPhase3
|
||||
ldy #0
|
||||
DinoLoop3
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$100,x
|
||||
@ adw temp_w #5
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$200,x
|
||||
@ adw temp_w #5
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$300,x
|
||||
@ adw temp_w #5
|
||||
lda (temp_w),y
|
||||
bmi @+
|
||||
sta screen+$400,x
|
||||
@ sbw temp_w #15
|
||||
inx
|
||||
iny
|
||||
cpy #5 ; dino width
|
||||
bne DinoLoop3
|
||||
rts
|
||||
.endp
|
||||
;-----------------------------------------------
|
||||
.proc CheckJoy
|
||||
lda DinoState
|
||||
cmp #4 ; jump state
|
||||
beq NoChange
|
||||
lda STICK0
|
||||
and #%00000010 ; down
|
||||
beq Down
|
||||
@@ -330,9 +430,12 @@ DinoLoop
|
||||
; no change state (temporary set to 0)
|
||||
lda #0
|
||||
sta DinoState
|
||||
NoChange
|
||||
rts
|
||||
Up lda #4
|
||||
sta DinoState
|
||||
lda #0
|
||||
sta JumpPhase
|
||||
rts
|
||||
Down
|
||||
lda #2
|
||||
|
||||
@@ -580,6 +580,7 @@ FFFD 0000 @KBCODE
|
||||
00 0082 TEMP_B
|
||||
00 0083 DINOWALKPHASE
|
||||
00 0084 DINOSTATE
|
||||
00 0085 JUMPPHASE
|
||||
00 2000 FONT1
|
||||
00 2400 FONT2
|
||||
00 2800 FONT3
|
||||
@@ -597,56 +598,79 @@ FFFD 0000 @KBCODE
|
||||
00 3825 WORLDTABLE
|
||||
00 3865 FIRSTSTART
|
||||
00 38AA ENDLOOP
|
||||
00 3927 GENERATECHARSETS
|
||||
00 3929 GENERATECHARSETS.COPYLOOP
|
||||
00 3951 CLEARWORLD
|
||||
00 3955 CLEARWORLD.0@
|
||||
00 395C CLEARSCREEN
|
||||
00 3960 CLEARSCREEN.CLEARLOOP
|
||||
00 3973 WORLDTOSCREEN
|
||||
00 397A WORLDTOSCREEN.TOSCREENLOOP
|
||||
00 3983 WORLDTOSCREEN.NOTHINGTODRAW
|
||||
00 398C WORLDSHIFT
|
||||
00 398E WORLDSHIFT.SHIFT
|
||||
00 39A8 WORLDSHIFT.1@
|
||||
00 39B2 WORLDSHIFT.INSERTOBJECT
|
||||
00 39C6 WORLDSHIFT.NOINSERT
|
||||
00 39C7 ANIMATEBIRDS
|
||||
00 39C9 ANIMATEBIRDS.2@
|
||||
00 39DB ANIMATEBIRDS.NOBIRD
|
||||
00 39E5 SHOWOBJECT
|
||||
00 39F1 SHOWOBJECT.OBJECTLOOP
|
||||
00 39F8 SHOWOBJECT.3@
|
||||
00 3A0A SHOWOBJECT.4@
|
||||
00 3A1C SHOWOBJECT.5@
|
||||
00 3A2E SHOWOBJECT.6@
|
||||
00 3A40 SHOWDINO
|
||||
00 3A4C SHOWDINO.DINOLOOP
|
||||
00 3A53 SHOWDINO.7@
|
||||
00 3A65 SHOWDINO.8@
|
||||
00 3A77 SHOWDINO.9@
|
||||
00 3A89 SHOWDINO.10@
|
||||
00 3A9B CHECKJOY
|
||||
00 3AAE CHECKJOY.UP
|
||||
00 3AB3 CHECKJOY.DOWN
|
||||
00 3AB8 SETSTART
|
||||
00 3AC4 SETGAMESCREEN
|
||||
00 3AD9 DINO_RUN_0
|
||||
00 3AED DINO_RUN_1
|
||||
00 3B01 DINO_RUN_2
|
||||
00 3B15 DINO_CROUCH_1
|
||||
00 3B29 DINO_CROUCH_2
|
||||
00 3B3D DINOSHAPESTABLEL
|
||||
00 3B42 DINOSHAPESTABLEH
|
||||
00 3B47 GROUND_0
|
||||
00 3B4F BIRD_0
|
||||
00 3B57 BIRD_1
|
||||
00 3B5F BIRD_2
|
||||
00 3B67 BIRD_0A
|
||||
00 3B6F BIRD_1A
|
||||
00 3B77 BIRD_2A
|
||||
00 3B7F CACTUS_0
|
||||
00 3B87 SHAPESTABLEL
|
||||
00 3B90 SHAPESTABLEH
|
||||
00 3B99 DIFF_OBJECT_GAP
|
||||
00 3BA9 DIFF_LEVEL
|
||||
00 3920 GENERATECHARSETS
|
||||
00 3922 GENERATECHARSETS.COPYLOOP
|
||||
00 394A CLEARWORLD
|
||||
00 394E CLEARWORLD.0@
|
||||
00 3955 CLEARSCREEN
|
||||
00 3959 CLEARSCREEN.CLEARLOOP
|
||||
00 396C WORLDTOSCREEN
|
||||
00 3973 WORLDTOSCREEN.TOSCREENLOOP
|
||||
00 397C WORLDTOSCREEN.NOTHINGTODRAW
|
||||
00 3985 WORLDSHIFT
|
||||
00 3987 WORLDSHIFT.SHIFT
|
||||
00 39A1 WORLDSHIFT.1@
|
||||
00 39AB WORLDSHIFT.INSERTOBJECT
|
||||
00 39BF WORLDSHIFT.NOINSERT
|
||||
00 39C0 ANIMATE
|
||||
00 39C2 ANIMATE.2@
|
||||
00 39D4 ANIMATE.NOBIRD
|
||||
00 39EC ANIMATE.ENDJUMP
|
||||
00 39F2 ANIMATE.NOJUMP
|
||||
00 39F3 SHOWOBJECT
|
||||
00 39FF SHOWOBJECT.OBJECTLOOP
|
||||
00 3A06 SHOWOBJECT.3@
|
||||
00 3A18 SHOWOBJECT.4@
|
||||
00 3A2A SHOWOBJECT.5@
|
||||
00 3A3C SHOWOBJECT.6@
|
||||
00 3A4E SHOWDINO
|
||||
00 3A69 SHOWDINO.DINOLOOP
|
||||
00 3A70 SHOWDINO.7@
|
||||
00 3A82 SHOWDINO.8@
|
||||
00 3A94 SHOWDINO.9@
|
||||
00 3AA6 SHOWDINO.10@
|
||||
00 3AB8 SHOWDINO.JUMP
|
||||
00 3AC8 SHOWDINO.JPHASE1
|
||||
00 3ACA SHOWDINO.DINOLOOP1
|
||||
00 3AD1 SHOWDINO.11@
|
||||
00 3AE3 SHOWDINO.12@
|
||||
00 3AF5 SHOWDINO.13@
|
||||
00 3B07 SHOWDINO.14@
|
||||
00 3B19 SHOWDINO.JPHASE2
|
||||
00 3B1B SHOWDINO.DINOLOOP2
|
||||
00 3B22 SHOWDINO.15@
|
||||
00 3B34 SHOWDINO.16@
|
||||
00 3B46 SHOWDINO.17@
|
||||
00 3B58 SHOWDINO.18@
|
||||
00 3B6A SHOWDINO.JPHASE3
|
||||
00 3B6C SHOWDINO.DINOLOOP3
|
||||
00 3B73 SHOWDINO.19@
|
||||
00 3B85 SHOWDINO.20@
|
||||
00 3B97 SHOWDINO.21@
|
||||
00 3BA9 SHOWDINO.22@
|
||||
00 3BBB CHECKJOY
|
||||
00 3BD3 CHECKJOY.NOCHANGE
|
||||
00 3BD4 CHECKJOY.UP
|
||||
00 3BDD CHECKJOY.DOWN
|
||||
00 3BE2 SETSTART
|
||||
00 3BEE SETGAMESCREEN
|
||||
00 3C03 DINO_RUN_0
|
||||
00 3C17 DINO_RUN_1
|
||||
00 3C2B DINO_RUN_2
|
||||
00 3C3F DINO_CROUCH_1
|
||||
00 3C53 DINO_CROUCH_2
|
||||
00 3C67 DINOSHAPESTABLEL
|
||||
00 3C6D DINOSHAPESTABLEH
|
||||
00 3C73 GROUND_0
|
||||
00 3C7B BIRD_0
|
||||
00 3C83 BIRD_1
|
||||
00 3C8B BIRD_2
|
||||
00 3C93 BIRD_0A
|
||||
00 3C9B BIRD_1A
|
||||
00 3CA3 BIRD_2A
|
||||
00 3CAB CACTUS_0
|
||||
00 3CB3 SHAPESTABLEL
|
||||
00 3CBC SHAPESTABLEH
|
||||
00 3CC5 DIFF_OBJECT_GAP
|
||||
00 3CD5 DIFF_LEVEL
|
||||
00 3CD6 DINOJUMPTR
|
||||
|
||||
Reference in New Issue
Block a user