Left game ready!

This commit is contained in:
Pecusx
2024-08-12 15:20:21 +02:00
parent 1a65fc27d5
commit 16e5be960f
2 changed files with 275 additions and 2 deletions
+275 -2
View File
@@ -12,6 +12,7 @@ swap_table=$0600 ; table for swap bytes in left characters :)
; Zpage variables ; Zpage variables
.zpvar temp_w .word = $80 .zpvar temp_w .word = $80
.zpvar temp_b .byte .zpvar temp_b .byte
.zpvar temp_b2 .byte
.zpvar DinoWalkPhase .byte .zpvar DinoWalkPhase .byte
.zpvar DinoState .byte ; 0/1 - walk, 2/3 - crouch, 4... - jump .zpvar DinoState .byte ; 0/1 - walk, 2/3 - crouch, 4... - jump
.zpvar JumpPhase .byte .zpvar JumpPhase .byte
@@ -85,15 +86,19 @@ FirstSTART
jsr FadeColors jsr FadeColors
NewGame NewGame
jsr SetStart jsr SetStart
EndLoop
jsr GameR jsr GameR
key key
jsr HiScoreR jsr HiScoreR
jsr SetStart
jsr GameL
key
jsr HiScoreL
jmp NewGame jmp NewGame
rts rts
;----------------------------------------------- ;-----------------------------------------------
.proc GameR .proc GameR
EndLoopR
;lda #$32 ;lda #$32
;sta COLBAK ;sta COLBAK
jsr WorldToScreen jsr WorldToScreen
@@ -117,11 +122,41 @@ EndLoop
mva #>font1 chbas mva #>font1 chbas
waitRTC ; or waitRTC ? waitRTC ; or waitRTC ?
mva #4 hscrol mva #4 hscrol
jmp EndLoop jmp EndLoopR
EndGame EndGame
rts rts
.endp .endp
;----------------------------------------------- ;-----------------------------------------------
.proc GameL
EndLoopL
;lda #$32
;sta COLBAK
jsr WorldToScreenL
jsr ShowDinoL
lda Hit
bne EndGameL
;lda #$5f
;sta COLBAK
jsr CheckJoy
mva #>font2l chbas
waitRTC ; or waitRTC ?
mva #2 hscrol
mva #>font3l chbas
waitRTC ; or waitRTC ?
mva #3 hscrol
jsr WorldShift ; better place (flickering)
mva #>font4l chbas
waitRTC ; or waitRTC ?
mva #4 hscrol
jsr Animate
mva #>font1l chbas
waitRTC ; or waitRTC ?
mva #1 hscrol
jmp EndLoopL
EndGameL
rts
.endp
;-----------------------------------------------
; Generation of character sets 2,3 and 4 of 1 ; Generation of character sets 2,3 and 4 of 1
; By copying and horizontal shift dino ; By copying and horizontal shift dino
;----------------------------------------------- ;-----------------------------------------------
@@ -256,6 +291,27 @@ NothingToDraw
rts rts
.endp .endp
;----------------------------------------------- ;-----------------------------------------------
.proc WorldToScreenL
jsr ClearScreen
ldx #0 ; start position (world)
stx temp_b
lda #40 ; start position (screen)
sta temp_b2
ToScreenLoop
lda WorldTable,x
bmi NothingToDraw
tay
ldx temp_b2
jsr ShowObjectL
NothingToDraw
dec temp_b2
inc temp_b
ldx temp_b
cpx #WORLD_LENGTH
bne ToScreenLoop
rts
.endp
;-----------------------------------------------
.proc WorldShift .proc WorldShift
jsr ScoreUp jsr ScoreUp
ldy #0 ldy #0
@@ -402,6 +458,39 @@ ObjectLoop
rts rts
.endp .endp
;----------------------------------------------- ;-----------------------------------------------
; Show Object on screen (left)
; X - y position
; Y - shape nr
;-----------------------------------------------
.proc ShowObjectL
lda ShapesTableL,y
sta temp_w
lda ShapesTableH,y
sta temp_w+1
ldy #1 ; object widrh-1
ObjectLoop
lda (temp_w),y
bmi @+
sta screen+$400,x
@ adw temp_w #2
lda (temp_w),y
bmi @+
sta screen+$500,x
@ adw temp_w #2
lda (temp_w),y
bmi @+
sta screen+$600,x
@ adw temp_w #2
lda (temp_w),y
bmi @+
sta screen+$700,x
@ sbw temp_w #6
inx
dey
bpl ObjectLoop
rts
.endp
;-----------------------------------------------
; Show Dino on screen and check collisions ; Show Dino on screen and check collisions
;----------------------------------------------- ;-----------------------------------------------
.proc ShowDino .proc ShowDino
@@ -591,6 +680,190 @@ DinoLoop4
rts rts
.endp .endp
;----------------------------------------------- ;-----------------------------------------------
; Show Dino (left) on screen and check collisions
;-----------------------------------------------
.proc ShowDinoL
ldx #36 ; 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 #4 ;dino width-1
DinoLoop
lda (temp_w),y
bmi @+
lda screen+$500,x
beq NotHit0b
lda #$5b ; hit mark
sta Hit
bne Hit0b
NotHit0b
lda (temp_w),y
Hit0b
sta screen+$500,x
@ adw temp_w #5
lda (temp_w),y
bmi @+
lda screen+$600,x
beq NotHit0c
lda #$5b ; hit mark
sta Hit
bne Hit0c
NotHit0c
lda (temp_w),y
Hit0c
sta screen+$600,x
@ adw temp_w #5
lda (temp_w),y
bmi @+
sta screen+$700,x
@ sbw temp_w #10
inx
dey
bpl DinoLoop
rts
Jump
ldy JumpPhase
lda DinoJumpTr,y
cmp #2
jeq jPhase2
cmp #3
jeq jPhase3
cmp #4
jeq jPhase4
jPhase1
ldy #4 ; dinowidth-1
DinoLoop1
lda (temp_w),y
bmi @+
lda screen+$400,x ; check obstacle
beq NotHit1a
lda #$5b ; make hit mark
sta Hit
bne Hit1a
NotHit1a
lda (temp_w),y
Hit1a
sta screen+$400,x
@ adw temp_w #5
lda (temp_w),y
bmi @+
lda screen+$500,x ; check obstacle
beq NotHit1b
lda #$5b ; make hit mark
sta Hit
bne Hit1b
NotHit1b
lda (temp_w),y
Hit1b
sta screen+$500,x
@ adw temp_w #5
lda (temp_w),y
bmi @+
lda screen+$600,x ; check obstacle
beq NotHit1c
lda #$5b ; make hit mark
sta Hit
bne Hit1c
NotHit1c
lda (temp_w),y
Hit1c
sta screen+$600,x
@ sbw temp_w #10
inx
dey
bpl DinoLoop1
rts
jPhase2
ldy #4 ; dino width-1
DinoLoop2
lda (temp_w),y
bmi @+
sta screen+$300,x
@ adw temp_w #5
lda (temp_w),y
bmi @+
lda screen+$400,x ; check obstacle
beq NotHit2a
lda #$5b ; make hit mark
sta Hit
bne Hit2a
NotHit2a
lda (temp_w),y
Hit2a
sta screen+$400,x
@ adw temp_w #5
lda (temp_w),y
bmi @+
lda screen+$500,x ; check obstacle
beq NotHit2b
lda #$5b ; make hit mark
sta Hit
bne Hit2b
NotHit2b
lda (temp_w),y
Hit2b
sta screen+$500,x
@ sbw temp_w #10
inx
dey
bpl DinoLoop2
rts
jPhase3
ldy #4 ; dinowidth-1
DinoLoop3
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 @+
lda screen+$400,x ; check obstacle
beq NotHit3a
lda #$5b ; make hit mark
sta Hit
bne Hit3a
NotHit3a
lda (temp_w),y
Hit3a
sta screen+$400,x
@ sbw temp_w #10
inx
dey
bpl DinoLoop3
rts
jPhase4
ldy #4 ; dino width-1
DinoLoop4
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
@ sbw temp_w #10
inx
dey
bpl DinoLoop4
rts
.endp
;-----------------------------------------------
.proc CheckJoy .proc CheckJoy
lda DinoState lda DinoState
cmp #4 ; jump state cmp #4 ; jump state
BIN
View File
Binary file not shown.