mirror of
https://github.com/Pecusx/dino-game.git
synced 2026-05-20 22:33:23 +02:00
We make world!
This commit is contained in:
Binary file not shown.
Binary file not shown.
+61
-22
@@ -4,41 +4,80 @@
|
||||
|
||||
; dno run
|
||||
dino_run_0 ; anly '0' jumps
|
||||
.by $ff, $23, $27, $2b, $ff ; '. '
|
||||
.by $20, $24, $28, $2c, $ff ; ' ## '
|
||||
.by $21, $25, $29, $ff, $ff ; '## .'
|
||||
.by $22, $26, $2a, $ff, $ff ; '## .'
|
||||
.by $ff, $23, $27, $2b, $ff ; '. .'
|
||||
.by $20, $24, $28, $2c, $ff ; ' ## .'
|
||||
.by $21, $25, $29, $ff, $ff ; '## ..'
|
||||
.by $22, $26, $2a, $ff, $ff ; '## ..'
|
||||
dino_run_1
|
||||
.by $ff, $23, $27, $2b, $ff ; '. '
|
||||
.by $20, $24, $28, $2c, $ff ; ' ## '
|
||||
.by $21, $25, $29, $ff, $ff ; '## .'
|
||||
.by $2d, $2e, $2f, $ff, $ff ; '## .'
|
||||
.by $ff, $23, $27, $2b, $ff ; '. .'
|
||||
.by $20, $24, $28, $2c, $ff ; ' ## .'
|
||||
.by $21, $25, $29, $ff, $ff ; '## ..'
|
||||
.by $2d, $2e, $2f, $ff, $ff ; '## ..'
|
||||
dino_run_2
|
||||
.by $ff, $23, $27, $2b, $ff ; '. '
|
||||
.by $20, $24, $28, $2c, $ff ; ' ## '
|
||||
.by $21, $25, $29, $ff, $ff ; '## .'
|
||||
.by $30, $31, $32, $ff, $ff ; '## .'
|
||||
.by $ff, $23, $27, $2b, $ff ; '. .'
|
||||
.by $20, $24, $28, $2c, $ff ; ' ## .'
|
||||
.by $21, $25, $29, $ff, $ff ; '## ..'
|
||||
.by $30, $31, $32, $ff, $ff ; '## ..'
|
||||
dino_crouch_1
|
||||
.by $ff, $ff, $ff, $ff, $ff
|
||||
.by $ff, $ff, $ff, $ff, $ff
|
||||
.by $33, $34, $35, $36, $37 ; '#### '
|
||||
.by $38, $39, $3a, $3b, $3c ; '#### '
|
||||
.by $ff, $ff, $ff, $ff, $ff ; '.....'
|
||||
.by $ff, $ff, $ff, $ff, $ff ; '.....'
|
||||
.by $33, $34, $35, $36, $37 ; '#### '
|
||||
.by $38, $39, $3a, $3b, $3c ; '#### '
|
||||
dino_crouch_2
|
||||
.by $ff, $ff, $ff, $ff, $ff
|
||||
.by $ff, $ff, $ff, $ff, $ff
|
||||
.by $33, $34, $35, $36, $37 ; '#### '
|
||||
.by $3d, $3e, $3f, $3b, $3c ; '#### '
|
||||
ShapesTableL
|
||||
.by $ff, $ff, $ff, $ff, $ff ; '.....'
|
||||
.by $ff, $ff, $ff, $ff, $ff ; '.....'
|
||||
.by $33, $34, $35, $36, $37 ; '#### '
|
||||
.by $3d, $3e, $3f, $3b, $3c ; '#### '
|
||||
DinoShapesTableL
|
||||
.by <dino_run_0
|
||||
.by <dino_run_1
|
||||
.by <dino_run_2
|
||||
.by <dino_crouch_1
|
||||
.by <dino_crouch_2
|
||||
ShapesTableH
|
||||
DinoShapesTableH
|
||||
.by >dino_run_0
|
||||
.by >dino_run_1
|
||||
.by >dino_run_2
|
||||
.by >dino_crouch_1
|
||||
.by >dino_crouch_2
|
||||
; other objects
|
||||
ground_0
|
||||
.by $ff, $ff ; '..'
|
||||
.by $ff, $ff ; '..'
|
||||
.by $ff, $ff ; '..'
|
||||
.by $52, $ff ; '#.'
|
||||
bird_0
|
||||
.by $ff, $ff ; '..'
|
||||
.by $ff, $ff ; '..'
|
||||
.by $48, $ff ; '#.'
|
||||
.by $52, $ff ; '#.'
|
||||
bird_1
|
||||
.by $ff, $ff ; '..'
|
||||
.by $48, $ff ; '#.'
|
||||
.by $ff, $ff ; '..'
|
||||
.by $52, $ff ; '#.'
|
||||
bird_2
|
||||
.by $48, $ff ; '#.'
|
||||
.by $ff, $ff ; '..'
|
||||
.by $ff, $ff ; ''.'
|
||||
.by $52, $ff ; '#.'
|
||||
cactus_0
|
||||
.by $ff, $ff ; '..'
|
||||
.by $54, $54 ; '##'
|
||||
.by $54, $54 ; '##'
|
||||
.by $52, $52 ; '##'
|
||||
|
||||
ShapesTableL
|
||||
.by <ground_0
|
||||
.by <bird_0
|
||||
.by <bird_1
|
||||
.by <bird_2
|
||||
.by <cactus_0
|
||||
ShapesTableH
|
||||
.by >ground_0
|
||||
.by >bird_0
|
||||
.by >bird_1
|
||||
.by >bird_2
|
||||
.by >cactus_0
|
||||
|
||||
.endif ; .IF *>0
|
||||
|
||||
@@ -6,7 +6,8 @@ SCR_HEIGHT = 8
|
||||
|
||||
;---------------------------------------------------
|
||||
; Zpage variables
|
||||
.zpvar temp_w .word = $80
|
||||
.zpvar temp_w .word = $80
|
||||
.zpvar temp_b .byte
|
||||
;---------------------------------------------------
|
||||
icl 'lib/ATARISYS.ASM'
|
||||
icl 'lib/MACRO.ASM'
|
||||
@@ -49,10 +50,22 @@ line:1_addr
|
||||
.endr
|
||||
.byte JVB
|
||||
.word GameDL
|
||||
|
||||
;---------------------------------------------------
|
||||
; World table without dino
|
||||
WorldTable
|
||||
:64 .byte 0 ; ground
|
||||
;---------------------------------------------------
|
||||
FirstSTART
|
||||
;jsr GenerateCharsets
|
||||
jsr GenerateCharsets
|
||||
jsr ClearWorld
|
||||
; test only (some object in the world)
|
||||
lda #1 ;bird0
|
||||
sta WorldTable+10
|
||||
lda #4 ;cactus
|
||||
sta WorldTable+20
|
||||
lda #4+$80 ; cactus (second char)
|
||||
sta WorldTable+21
|
||||
;
|
||||
jsr SetGameScreen
|
||||
ldx #5 ; position
|
||||
ldy #0 ; shape
|
||||
@@ -71,6 +84,11 @@ FirstSTART
|
||||
jsr ShowDino
|
||||
mva #$50 screen+$700+32
|
||||
EndLoop
|
||||
jsr WorldShift
|
||||
jsr WorldToScreen
|
||||
ldx #5 ; position
|
||||
ldy #0 ; shape
|
||||
jsr ShowDino
|
||||
wait ; or waitRTC ?
|
||||
key
|
||||
mva #>font2 chbas
|
||||
@@ -100,17 +118,13 @@ EndLoop
|
||||
; By copying and horizontal shift dino
|
||||
;-----------------------------------------------
|
||||
.proc GenerateCharsets
|
||||
; copy charset 1 to 2,3 and 4
|
||||
; copy charset 1 to 2,3 and 4 (but not dino chars)
|
||||
ldy #0
|
||||
CopyLoop
|
||||
lda font1,y
|
||||
sta font2,y
|
||||
sta font3,y
|
||||
sta font4,y
|
||||
lda font1+$100,y
|
||||
sta font2+$100,y
|
||||
sta font3+$100,y
|
||||
sta font4+$100,y
|
||||
lda font1+$200,y
|
||||
sta font2+$200,y
|
||||
sta font3+$200,y
|
||||
@@ -121,20 +135,106 @@ CopyLoop
|
||||
sta font4+$300,y
|
||||
iny
|
||||
bne CopyLoop
|
||||
; and shifting dino shape
|
||||
|
||||
rts
|
||||
.endp
|
||||
;-----------------------------------------------
|
||||
.proc ClearWorld
|
||||
ldy #63 ; world size
|
||||
lda #0 ; ground
|
||||
@ sta WorldTable,y
|
||||
dey
|
||||
bpl @-
|
||||
rts
|
||||
.endp
|
||||
.proc ClearScreen
|
||||
ldy #64
|
||||
lda #0
|
||||
ClearLoop
|
||||
sta screen+$700,y
|
||||
sta screen+$600,y
|
||||
sta screen+$500,y
|
||||
sta screen+$400,y
|
||||
sta screen+$300,y
|
||||
dey
|
||||
bpl ClearLoop
|
||||
rts
|
||||
.endp
|
||||
;-----------------------------------------------
|
||||
.proc WorldToScreen
|
||||
jsr ClearScreen
|
||||
ldx #0 ; start position
|
||||
stx temp_b
|
||||
ToScreenLoop
|
||||
lda WorldTable,x
|
||||
bmi NothingToDraw
|
||||
tay
|
||||
jsr ShowObject
|
||||
NothingToDraw
|
||||
inc temp_b
|
||||
ldx temp_b
|
||||
cpx #64
|
||||
bne ToScreenLoop
|
||||
rts
|
||||
.endp
|
||||
;-----------------------------------------------
|
||||
.proc WorldShift
|
||||
ldy #0
|
||||
Shift
|
||||
lda WorldTable+1,y
|
||||
sta WorldTable,y
|
||||
iny
|
||||
cpy #63
|
||||
bne Shift
|
||||
lda #0 ;ground
|
||||
sta WorldTable,y
|
||||
; now we can insert random object to world end
|
||||
|
||||
rts
|
||||
.endp
|
||||
;-----------------------------------------------
|
||||
; Show Object on screen (test)
|
||||
; X - y position
|
||||
; Y - shape nr
|
||||
;-----------------------------------------------
|
||||
.proc ShowObject
|
||||
lda ShapesTableL,y
|
||||
sta temp_w
|
||||
lda ShapesTableH,y
|
||||
sta temp_w+1
|
||||
ldy #0
|
||||
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
|
||||
iny
|
||||
cpy #2 ; object width
|
||||
bne ObjectLoop
|
||||
rts
|
||||
.endp
|
||||
;-----------------------------------------------
|
||||
; Show Dino on screen (test)
|
||||
; X - y position
|
||||
; Y - shape nr
|
||||
;-----------------------------------------------
|
||||
.proc ShowDino
|
||||
lda ShapesTableL,y
|
||||
lda DinoShapesTableL,y
|
||||
sta temp_w
|
||||
lda ShapesTableH,y
|
||||
lda DinoShapesTableH,y
|
||||
sta temp_w+1
|
||||
ldy #0
|
||||
DinoLoop
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
mads 2.1.7 build 3 (13 Sep 23)
|
||||
Label table:
|
||||
00 0008 SCR_HEIGHT
|
||||
00 E400 EDITRV
|
||||
00 E410 SCRENV
|
||||
00 E420 KEYBDV
|
||||
@@ -574,35 +575,59 @@ FFFD 0000 @KBCODE
|
||||
00 0021 @KBCODE._SPACE
|
||||
00 009B EOL
|
||||
00 0080 TEMP_W
|
||||
00 0082 TEMP_B
|
||||
00 2000 FONT1
|
||||
00 2400 FONT2
|
||||
00 2800 FONT3
|
||||
00 2C00 FONT4
|
||||
00 3000 SCREEN
|
||||
00 3800 GAMEDL
|
||||
00 3806 LINE1_ADDR
|
||||
00 3809 LINE2_ADDR
|
||||
00 380C LINE3_ADDR
|
||||
00 380F LINE4_ADDR
|
||||
00 3812 LINE5_ADDR
|
||||
00 3815 LINE6_ADDR
|
||||
00 3818 LINE7_ADDR
|
||||
00 381B LINE8_ADDR
|
||||
00 3820 FIRSTSTART
|
||||
00 384B ENDLOOP
|
||||
00 3926 GENERATECHARSETS
|
||||
00 3928 GENERATECHARSETS.COPYLOOP
|
||||
00 395C SHOWDINO
|
||||
00 3968 SHOWDINO.DINOLOOP
|
||||
00 396F SHOWDINO.0@
|
||||
00 3981 SHOWDINO.1@
|
||||
00 3993 SHOWDINO.2@
|
||||
00 39A5 SHOWDINO.3@
|
||||
00 39B7 SETGAMESCREEN
|
||||
00 39CC DINO_RUN_0
|
||||
00 39E0 DINO_RUN_1
|
||||
00 39F4 DINO_RUN_2
|
||||
00 3A08 DINO_CROUCH_1
|
||||
00 3A1C DINO_CROUCH_2
|
||||
00 3A30 SHAPESTABLEL
|
||||
00 3A35 SHAPESTABLEH
|
||||
00 3806 LINE0_ADDR
|
||||
00 3809 LINE1_ADDR
|
||||
00 380C LINE2_ADDR
|
||||
00 380F LINE3_ADDR
|
||||
00 3812 LINE4_ADDR
|
||||
00 3815 LINE5_ADDR
|
||||
00 3818 LINE6_ADDR
|
||||
00 381B LINE7_ADDR
|
||||
00 3820 WORLDTABLE
|
||||
00 3860 FIRSTSTART
|
||||
00 38A0 ENDLOOP
|
||||
00 3988 GENERATECHARSETS
|
||||
00 398A GENERATECHARSETS.COPYLOOP
|
||||
00 39B2 CLEARWORLD
|
||||
00 39B6 CLEARWORLD.0@
|
||||
00 39BD CLEARSCREEN
|
||||
00 39C1 CLEARSCREEN.CLEARLOOP
|
||||
00 39D4 WORLDTOSCREEN
|
||||
00 39DB WORLDTOSCREEN.TOSCREENLOOP
|
||||
00 39E4 WORLDTOSCREEN.NOTHINGTODRAW
|
||||
00 39ED WORLDSHIFT
|
||||
00 39EF WORLDSHIFT.SHIFT
|
||||
00 3A00 SHOWOBJECT
|
||||
00 3A0C SHOWOBJECT.OBJECTLOOP
|
||||
00 3A13 SHOWOBJECT.1@
|
||||
00 3A25 SHOWOBJECT.2@
|
||||
00 3A37 SHOWOBJECT.3@
|
||||
00 3A49 SHOWOBJECT.4@
|
||||
00 3A5B SHOWDINO
|
||||
00 3A67 SHOWDINO.DINOLOOP
|
||||
00 3A6E SHOWDINO.5@
|
||||
00 3A80 SHOWDINO.6@
|
||||
00 3A92 SHOWDINO.7@
|
||||
00 3AA4 SHOWDINO.8@
|
||||
00 3AB6 SETGAMESCREEN
|
||||
00 3ACB DINO_RUN_0
|
||||
00 3ADF DINO_RUN_1
|
||||
00 3AF3 DINO_RUN_2
|
||||
00 3B07 DINO_CROUCH_1
|
||||
00 3B1B DINO_CROUCH_2
|
||||
00 3B2F DINOSHAPESTABLEL
|
||||
00 3B34 DINOSHAPESTABLEH
|
||||
00 3B39 GROUND_0
|
||||
00 3B41 BIRD_0
|
||||
00 3B49 BIRD_1
|
||||
00 3B51 BIRD_2
|
||||
00 3B59 CACTUS_0
|
||||
00 3B61 SHAPESTABLEL
|
||||
00 3B66 SHAPESTABLEH
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
mads 2.1.7 build 3 (13 Sep 23)
|
||||
Source: dino.asm
|
||||
1
|
||||
2 ; No internet
|
||||
3 ;---------------------------------------------------
|
||||
4 OPT r+
|
||||
5
|
||||
6 ;---------------------------------------------------
|
||||
7 ; Zpage variables
|
||||
8 .zpvar temp_w .word = $80
|
||||
9 ;---------------------------------------------------
|
||||
10 icl 'lib/ATARISYS.ASM'
|
||||
1 = 0008 SCR_HEIGHT = 8
|
||||
2
|
||||
3 ; No internet
|
||||
4 ;---------------------------------------------------
|
||||
5 OPT r+
|
||||
6
|
||||
7 ;---------------------------------------------------
|
||||
8 ; Zpage variables
|
||||
9 .zpvar temp_w .word = $80
|
||||
10 .zpvar temp_b .byte
|
||||
11 ;---------------------------------------------------
|
||||
12 icl 'lib/ATARISYS.ASM'
|
||||
Source: ATARISYS.ASM
|
||||
1 ;****************************************************************************
|
||||
2 ;* ATARI PERSONAL COMPUTER *
|
||||
@@ -736,7 +738,8 @@ Source: ATARISYS.ASM
|
||||
723 .ende
|
||||
724 = 009B EOL = $9b
|
||||
724 = 0080 TEMP_W
|
||||
11 icl 'lib/MACRO.ASM'
|
||||
724 = 0082 TEMP_B
|
||||
13 icl 'lib/MACRO.ASM'
|
||||
Source: MACRO.ASM
|
||||
1 ;-------------------------------------
|
||||
2 .MACRO ROLW
|
||||
@@ -920,13 +923,13 @@ Source: MACRO.ASM
|
||||
180 bne ?PAUSELOOP
|
||||
181 .ENDM
|
||||
182
|
||||
12 ;---------------------------------------------------
|
||||
13 ; dark screean and BASIC off
|
||||
14 ORG $2000
|
||||
15 FFFF> 2000-2024> A9 00 + mva #0 dmactls ; dark screen
|
||||
16 2005 A9 FF 8D 01 D3 mva #$ff portb
|
||||
17 ; and wait one frame :)
|
||||
18 200A F0 13200C wait
|
||||
14 ;---------------------------------------------------
|
||||
15 ; dark screean and BASIC off
|
||||
16 ORG $2000
|
||||
17 FFFF> 2000-2024> A9 00 + mva #0 dmactls ; dark screen
|
||||
18 2005 A9 FF 8D 01 D3 mva #$ff portb
|
||||
19 ; and wait one frame :)
|
||||
20 200A F0 13200C wait
|
||||
Macro: WAIT [Source: MACRO.ASM]
|
||||
3 200C AD 0B D4 ?ze LDA VCOUNT
|
||||
4 200F C9 10 cmp #16 ; if line<16 then wait for line>15 (long VBI protection)
|
||||
@@ -938,332 +941,478 @@ Macro: WAIT [Source: MACRO.ASM]
|
||||
10 201D B0 FB bcs ?wf
|
||||
Source: dino.asm
|
||||
seq:wait ; or waitRTC ?
|
||||
19 201F A9 FF 8D 01 D3 mva #$ff portb ; BASIC off
|
||||
20 2024 60 rts
|
||||
21 02E2-02E3> 00 20 ini $2000
|
||||
22 ;---------------------------------------------------
|
||||
23
|
||||
24 org $2000
|
||||
25 ;---------------------------------------------------
|
||||
26 ; 4 charsets for fine scroll
|
||||
27 2000 font1
|
||||
28 2000-2FFF> 00 00 00 00 + ins 'artwork/dino1.fnt' ; 1 charset
|
||||
29 = 2400 font2 = font1+$400
|
||||
30 2400 00 00 00 00 00 00 + ins 'artwork/dino2.fnt' ; 2 charset
|
||||
31 = 2800 font3 = font2+$400
|
||||
32 2800 00 00 00 00 00 00 + ins 'artwork/dino3.fnt' ; 3 charset
|
||||
33 = 2C00 font4 = font3+$400
|
||||
34 2C00 00 00 00 00 00 00 + ins 'artwork/dino4.fnt' ; 4 charset
|
||||
35 org font4+$400
|
||||
36 ; screen data
|
||||
37 ; 8 lines 256bytes each
|
||||
38 3000 screen
|
||||
39 org screen+($100*8)
|
||||
40 ; display list
|
||||
41 3800 GameDL
|
||||
42 3800-3A39> 70 70 70 70 + .byte $70,$70,$70,$70,$70 ; empty lines
|
||||
43 3805 52 .byte $02+$40+$10 ; gr.0+LMS+HSCRL
|
||||
44 3806 line1_addr
|
||||
45 3806 00 30 .word screen
|
||||
46 3808 52 .byte $02+$40+$10 ; gr.0+LMS+HSCRL
|
||||
47 3809 line2_addr
|
||||
48 3809 00 31 .word screen+$100
|
||||
49 380B 52 .byte $02+$40+$10 ; gr.0+LMS+HSCRL
|
||||
50 380C line3_addr
|
||||
51 380C 00 32 .word screen+$200
|
||||
52 380E 52 .byte $02+$40+$10 ; gr.0+LMS+HSCRL
|
||||
53 380F line4_addr
|
||||
54 380F 00 33 .word screen+$300
|
||||
55 3811 52 .byte $02+$40+$10 ; gr.0+LMS+HSCRL
|
||||
56 3812 line5_addr
|
||||
57 3812 00 34 .word screen+$400
|
||||
58 3814 52 .byte $02+$40+$10 ; gr.0+LMS+HSCRL
|
||||
59 3815 line6_addr
|
||||
60 3815 00 35 .word screen+$500
|
||||
61 3817 52 .byte $02+$40+$10 ; gr.0+LMS+HSCRL
|
||||
62 3818 line7_addr
|
||||
63 3818 00 36 .word screen+$600
|
||||
64 381A 52 .byte $02+$40+$10 ; gr.0+LMS+HSCRL
|
||||
65 381B line8_addr
|
||||
66 381B 00 37 .word screen+$700
|
||||
67 381D 41 .byte $41 ;JVB
|
||||
68 381E 00 38 .word GameDL
|
||||
69
|
||||
70 ;---------------------------------------------------
|
||||
71 3820 FirstSTART
|
||||
72 ;jsr GenerateCharsets
|
||||
73 3820 20 B7 39 jsr SetGameScreen
|
||||
74 3823 A2 05 ldx #5 ; position
|
||||
75 3825 A0 00 ldy #0 ; shape
|
||||
76 3827 20 5C 39 jsr ShowDino
|
||||
77 382A A2 0A ldx #10 ; position
|
||||
78 382C A0 01 ldy #1 ; shape
|
||||
79 382E 20 5C 39 jsr ShowDino
|
||||
80 3831 A2 0F ldx #15 ; position
|
||||
81 3833 A0 02 ldy #2 ; shape
|
||||
82 3835 20 5C 39 jsr ShowDino
|
||||
83 3838 A2 14 ldx #20 ; position
|
||||
84 383A A0 03 ldy #3 ; shape
|
||||
85 383C 20 5C 39 jsr ShowDino
|
||||
86 383F A2 19 ldx #25 ; position
|
||||
87 3841 A0 04 ldy #4 ; shape
|
||||
88 3843 20 5C 39 jsr ShowDino
|
||||
89 3846 A9 50 8D 20 37 mva #$50 screen+$700+32
|
||||
90 384B EndLoop
|
||||
91 384B wait ; or waitRTC ?
|
||||
21 201F A9 FF 8D 01 D3 mva #$ff portb ; BASIC off
|
||||
22 2024 60 rts
|
||||
23 02E2-02E3> 00 20 ini $2000
|
||||
24 ;---------------------------------------------------
|
||||
25
|
||||
26 org $2000
|
||||
27 ;---------------------------------------------------
|
||||
28 ; 4 charsets for fine scroll
|
||||
29 2000 font1
|
||||
30 2000-2FFF> 00 00 00 00 + ins 'artwork/dino1.fnt' ; 1 charset
|
||||
31 = 2400 font2 = font1+$400
|
||||
32 2400 00 00 00 00 00 00 + ins 'artwork/dino2.fnt' ; 2 charset
|
||||
33 = 2800 font3 = font2+$400
|
||||
34 2800 00 00 00 00 00 00 + ins 'artwork/dino3.fnt' ; 3 charset
|
||||
35 = 2C00 font4 = font3+$400
|
||||
36 2C00 00 00 00 00 00 00 + ins 'artwork/dino4.fnt' ; 4 charset
|
||||
37 org font4+$400
|
||||
38 ; screen data
|
||||
39 ; SCR_HEIGHT lines 256bytes each
|
||||
40 3000 screen
|
||||
41 = 3000 .ds $100*SCR_HEIGHT
|
||||
42 ; display list
|
||||
43 3800 GameDL
|
||||
44 3800-3B6A> 70 70 70 70 + :5 .byte SKIP8 ; empty lines
|
||||
45
|
||||
46 .rept SCR_HEIGHT, #
|
||||
47 .BYTE MODE2+LMS+SCH
|
||||
48 LINE:1_ADDR
|
||||
49 .WORD SCREEN+$100*#
|
||||
50 .endr
|
||||
Source: REPT
|
||||
47 3805 52 .BYTE MODE2+LMS+SCH
|
||||
47 3806 LINE0_ADDR
|
||||
47 3806 00 30 .WORD SCREEN+$100*#
|
||||
47 3808 52 .BYTE MODE2+LMS+SCH
|
||||
47 3809 LINE1_ADDR
|
||||
47 3809 00 31 .WORD SCREEN+$100*#
|
||||
47 380B 52 .BYTE MODE2+LMS+SCH
|
||||
47 380C LINE2_ADDR
|
||||
47 380C 00 32 .WORD SCREEN+$100*#
|
||||
47 380E 52 .BYTE MODE2+LMS+SCH
|
||||
47 380F LINE3_ADDR
|
||||
47 380F 00 33 .WORD SCREEN+$100*#
|
||||
47 3811 52 .BYTE MODE2+LMS+SCH
|
||||
47 3812 LINE4_ADDR
|
||||
47 3812 00 34 .WORD SCREEN+$100*#
|
||||
47 3814 52 .BYTE MODE2+LMS+SCH
|
||||
47 3815 LINE5_ADDR
|
||||
47 3815 00 35 .WORD SCREEN+$100*#
|
||||
47 3817 52 .BYTE MODE2+LMS+SCH
|
||||
47 3818 LINE6_ADDR
|
||||
47 3818 00 36 .WORD SCREEN+$100*#
|
||||
47 381A 52 .BYTE MODE2+LMS+SCH
|
||||
47 381B LINE7_ADDR
|
||||
47 381B 00 37 .WORD SCREEN+$100*#
|
||||
Source: dino.asm
|
||||
51 381D 41 .byte JVB
|
||||
52 381E 00 38 .word GameDL
|
||||
53 ;---------------------------------------------------
|
||||
54 ; World table without dino
|
||||
55 3820 WorldTable
|
||||
56 3820 00 00 00 00 00 00 + :64 .byte 0 ; ground
|
||||
57 ;---------------------------------------------------
|
||||
58 3860 FirstSTART
|
||||
59 3860 20 88 39 jsr GenerateCharsets
|
||||
60 3863 20 B2 39 jsr ClearWorld
|
||||
61 ; test only (some object in the world)
|
||||
62 3866 A9 01 lda #1 ;bird0
|
||||
63 3868 8D 2A 38 sta WorldTable+10
|
||||
64 386B A9 04 lda #4 ;cactus
|
||||
65 386D 8D 34 38 sta WorldTable+20
|
||||
66 3870 A9 84 lda #4+$80 ; cactus (second char)
|
||||
67 3872 8D 35 38 sta WorldTable+21
|
||||
68 ;
|
||||
69 3875 20 B6 3A jsr SetGameScreen
|
||||
70 3878 A2 05 ldx #5 ; position
|
||||
71 387A A0 00 ldy #0 ; shape
|
||||
72 387C 20 5B 3A jsr ShowDino
|
||||
73 387F A2 0A ldx #10 ; position
|
||||
74 3881 A0 01 ldy #1 ; shape
|
||||
75 3883 20 5B 3A jsr ShowDino
|
||||
76 3886 A2 0F ldx #15 ; position
|
||||
77 3888 A0 02 ldy #2 ; shape
|
||||
78 388A 20 5B 3A jsr ShowDino
|
||||
79 388D A2 14 ldx #20 ; position
|
||||
80 388F A0 03 ldy #3 ; shape
|
||||
81 3891 20 5B 3A jsr ShowDino
|
||||
82 3894 A2 19 ldx #25 ; position
|
||||
83 3896 A0 04 ldy #4 ; shape
|
||||
84 3898 20 5B 3A jsr ShowDino
|
||||
85 389B A9 50 8D 20 37 mva #$50 screen+$700+32
|
||||
86 38A0 EndLoop
|
||||
87 38A0 20 ED 39 jsr WorldShift
|
||||
88 38A3 20 D4 39 jsr WorldToScreen
|
||||
89 38A6 A2 05 ldx #5 ; position
|
||||
90 38A8 A0 00 ldy #0 ; shape
|
||||
91 38AA 20 5B 3A jsr ShowDino
|
||||
92 38AD wait ; or waitRTC ?
|
||||
Macro: WAIT [Source: MACRO.ASM]
|
||||
3 384B AD 0B D4 ?ze LDA VCOUNT
|
||||
4 384E C9 10 cmp #16 ; if line<16 then wait for line>15 (long VBI protection)
|
||||
5 3850 90 F9 bcc ?ze
|
||||
6 3852 E9 0A sbc #10 ; last lines correction
|
||||
7 3854 CD 0B D4 ?wa cmp VCOUNT
|
||||
8 3857 90 FB bcc ?wa
|
||||
9 3859 CD 0B D4 ?wf cmp VCOUNT
|
||||
10 385C B0 FB bcs ?wf
|
||||
3 38AD AD 0B D4 ?ze LDA VCOUNT
|
||||
4 38B0 C9 10 cmp #16 ; if line<16 then wait for line>15 (long VBI protection)
|
||||
5 38B2 90 F9 bcc ?ze
|
||||
6 38B4 E9 0A sbc #10 ; last lines correction
|
||||
7 38B6 CD 0B D4 ?wa cmp VCOUNT
|
||||
8 38B9 90 FB bcc ?wa
|
||||
9 38BB CD 0B D4 ?wf cmp VCOUNT
|
||||
10 38BE B0 FB bcs ?wf
|
||||
Source: dino.asm
|
||||
92 385E key
|
||||
93 38C0 key
|
||||
Macro: KEY [Source: MACRO.ASM]
|
||||
3 385E 48 PHA
|
||||
4 385F AD 0F D2 ?CK1 LDA SKSTAT
|
||||
5 3862 29 04 AND #$04
|
||||
6 3864 F0 F9 BEQ ?CK1
|
||||
7 3866 AD 0F D2 ?CK LDA SKSTAT
|
||||
8 3869 29 04 AND #$04
|
||||
9 386B D0 F9 BNE ?CK
|
||||
10 386D 68 PLA
|
||||
3 38C0 48 PHA
|
||||
4 38C1 AD 0F D2 ?CK1 LDA SKSTAT
|
||||
5 38C4 29 04 AND #$04
|
||||
6 38C6 F0 F9 BEQ ?CK1
|
||||
7 38C8 AD 0F D2 ?CK LDA SKSTAT
|
||||
8 38CB 29 04 AND #$04
|
||||
9 38CD D0 F9 BNE ?CK
|
||||
10 38CF 68 PLA
|
||||
Source: dino.asm
|
||||
93 386E A9 24 8D F4 02 mva #>font2 chbas
|
||||
94 3873 waitRTC ; or waitRTC ?
|
||||
94 38D0 A9 24 8D F4 02 mva #>font2 chbas
|
||||
95 38D5 waitRTC ; or waitRTC ?
|
||||
Macro: WAITRTC [Source: MACRO.ASM]
|
||||
1 3873 A5 14 lda RTCLOK+2
|
||||
2 3875 C5 14 ?wa cmp RTCLOK+2
|
||||
3 3877 F0 FC beq ?wa
|
||||
1 38D5 A5 14 lda RTCLOK+2
|
||||
2 38D7 C5 14 ?wa cmp RTCLOK+2
|
||||
3 38D9 F0 FC beq ?wa
|
||||
Source: dino.asm
|
||||
95 3879 A9 03 8D 04 D4 mva #3 hscrol
|
||||
96 387E wait ; or waitRTC ?
|
||||
96 38DB A9 03 8D 04 D4 mva #3 hscrol
|
||||
97 38E0 wait ; or waitRTC ?
|
||||
Macro: WAIT [Source: MACRO.ASM]
|
||||
3 387E AD 0B D4 ?ze LDA VCOUNT
|
||||
4 3881 C9 10 cmp #16 ; if line<16 then wait for line>15 (long VBI protection)
|
||||
5 3883 90 F9 bcc ?ze
|
||||
6 3885 E9 0A sbc #10 ; last lines correction
|
||||
7 3887 CD 0B D4 ?wa cmp VCOUNT
|
||||
8 388A 90 FB bcc ?wa
|
||||
9 388C CD 0B D4 ?wf cmp VCOUNT
|
||||
10 388F B0 FB bcs ?wf
|
||||
3 38E0 AD 0B D4 ?ze LDA VCOUNT
|
||||
4 38E3 C9 10 cmp #16 ; if line<16 then wait for line>15 (long VBI protection)
|
||||
5 38E5 90 F9 bcc ?ze
|
||||
6 38E7 E9 0A sbc #10 ; last lines correction
|
||||
7 38E9 CD 0B D4 ?wa cmp VCOUNT
|
||||
8 38EC 90 FB bcc ?wa
|
||||
9 38EE CD 0B D4 ?wf cmp VCOUNT
|
||||
10 38F1 B0 FB bcs ?wf
|
||||
Source: dino.asm
|
||||
97 3891 key
|
||||
98 38F3 key
|
||||
Macro: KEY [Source: MACRO.ASM]
|
||||
3 3891 48 PHA
|
||||
4 3892 AD 0F D2 ?CK1 LDA SKSTAT
|
||||
5 3895 29 04 AND #$04
|
||||
6 3897 F0 F9 BEQ ?CK1
|
||||
7 3899 AD 0F D2 ?CK LDA SKSTAT
|
||||
8 389C 29 04 AND #$04
|
||||
9 389E D0 F9 BNE ?CK
|
||||
10 38A0 68 PLA
|
||||
3 38F3 48 PHA
|
||||
4 38F4 AD 0F D2 ?CK1 LDA SKSTAT
|
||||
5 38F7 29 04 AND #$04
|
||||
6 38F9 F0 F9 BEQ ?CK1
|
||||
7 38FB AD 0F D2 ?CK LDA SKSTAT
|
||||
8 38FE 29 04 AND #$04
|
||||
9 3900 D0 F9 BNE ?CK
|
||||
10 3902 68 PLA
|
||||
Source: dino.asm
|
||||
98 38A1 A9 28 8D F4 02 mva #>font3 chbas
|
||||
99 38A6 waitRTC ; or waitRTC ?
|
||||
99 3903 A9 28 8D F4 02 mva #>font3 chbas
|
||||
100 3908 waitRTC ; or waitRTC ?
|
||||
Macro: WAITRTC [Source: MACRO.ASM]
|
||||
1 38A6 A5 14 lda RTCLOK+2
|
||||
2 38A8 C5 14 ?wa cmp RTCLOK+2
|
||||
3 38AA F0 FC beq ?wa
|
||||
1 3908 A5 14 lda RTCLOK+2
|
||||
2 390A C5 14 ?wa cmp RTCLOK+2
|
||||
3 390C F0 FC beq ?wa
|
||||
Source: dino.asm
|
||||
100 38AC A9 02 8D 04 D4 mva #2 hscrol
|
||||
101 38B1 wait ; or waitRTC ?
|
||||
101 390E A9 02 8D 04 D4 mva #2 hscrol
|
||||
102 3913 wait ; or waitRTC ?
|
||||
Macro: WAIT [Source: MACRO.ASM]
|
||||
3 38B1 AD 0B D4 ?ze LDA VCOUNT
|
||||
4 38B4 C9 10 cmp #16 ; if line<16 then wait for line>15 (long VBI protection)
|
||||
5 38B6 90 F9 bcc ?ze
|
||||
6 38B8 E9 0A sbc #10 ; last lines correction
|
||||
7 38BA CD 0B D4 ?wa cmp VCOUNT
|
||||
8 38BD 90 FB bcc ?wa
|
||||
9 38BF CD 0B D4 ?wf cmp VCOUNT
|
||||
10 38C2 B0 FB bcs ?wf
|
||||
3 3913 AD 0B D4 ?ze LDA VCOUNT
|
||||
4 3916 C9 10 cmp #16 ; if line<16 then wait for line>15 (long VBI protection)
|
||||
5 3918 90 F9 bcc ?ze
|
||||
6 391A E9 0A sbc #10 ; last lines correction
|
||||
7 391C CD 0B D4 ?wa cmp VCOUNT
|
||||
8 391F 90 FB bcc ?wa
|
||||
9 3921 CD 0B D4 ?wf cmp VCOUNT
|
||||
10 3924 B0 FB bcs ?wf
|
||||
Source: dino.asm
|
||||
102 38C4 key
|
||||
103 3926 key
|
||||
Macro: KEY [Source: MACRO.ASM]
|
||||
3 38C4 48 PHA
|
||||
4 38C5 AD 0F D2 ?CK1 LDA SKSTAT
|
||||
5 38C8 29 04 AND #$04
|
||||
6 38CA F0 F9 BEQ ?CK1
|
||||
7 38CC AD 0F D2 ?CK LDA SKSTAT
|
||||
8 38CF 29 04 AND #$04
|
||||
9 38D1 D0 F9 BNE ?CK
|
||||
10 38D3 68 PLA
|
||||
3 3926 48 PHA
|
||||
4 3927 AD 0F D2 ?CK1 LDA SKSTAT
|
||||
5 392A 29 04 AND #$04
|
||||
6 392C F0 F9 BEQ ?CK1
|
||||
7 392E AD 0F D2 ?CK LDA SKSTAT
|
||||
8 3931 29 04 AND #$04
|
||||
9 3933 D0 F9 BNE ?CK
|
||||
10 3935 68 PLA
|
||||
Source: dino.asm
|
||||
103 38D4 A9 2C 8D F4 02 mva #>font4 chbas
|
||||
104 38D9 waitRTC ; or waitRTC ?
|
||||
104 3936 A9 2C 8D F4 02 mva #>font4 chbas
|
||||
105 393B waitRTC ; or waitRTC ?
|
||||
Macro: WAITRTC [Source: MACRO.ASM]
|
||||
1 38D9 A5 14 lda RTCLOK+2
|
||||
2 38DB C5 14 ?wa cmp RTCLOK+2
|
||||
3 38DD F0 FC beq ?wa
|
||||
1 393B A5 14 lda RTCLOK+2
|
||||
2 393D C5 14 ?wa cmp RTCLOK+2
|
||||
3 393F F0 FC beq ?wa
|
||||
Source: dino.asm
|
||||
105 38DF A9 01 8D 04 D4 mva #1 hscrol
|
||||
106 38E4 wait ; or waitRTC ?
|
||||
106 3941 A9 01 8D 04 D4 mva #1 hscrol
|
||||
107 3946 wait ; or waitRTC ?
|
||||
Macro: WAIT [Source: MACRO.ASM]
|
||||
3 38E4 AD 0B D4 ?ze LDA VCOUNT
|
||||
4 38E7 C9 10 cmp #16 ; if line<16 then wait for line>15 (long VBI protection)
|
||||
5 38E9 90 F9 bcc ?ze
|
||||
6 38EB E9 0A sbc #10 ; last lines correction
|
||||
7 38ED CD 0B D4 ?wa cmp VCOUNT
|
||||
8 38F0 90 FB bcc ?wa
|
||||
9 38F2 CD 0B D4 ?wf cmp VCOUNT
|
||||
10 38F5 B0 FB bcs ?wf
|
||||
3 3946 AD 0B D4 ?ze LDA VCOUNT
|
||||
4 3949 C9 10 cmp #16 ; if line<16 then wait for line>15 (long VBI protection)
|
||||
5 394B 90 F9 bcc ?ze
|
||||
6 394D E9 0A sbc #10 ; last lines correction
|
||||
7 394F CD 0B D4 ?wa cmp VCOUNT
|
||||
8 3952 90 FB bcc ?wa
|
||||
9 3954 CD 0B D4 ?wf cmp VCOUNT
|
||||
10 3957 B0 FB bcs ?wf
|
||||
Source: dino.asm
|
||||
107 38F7 key
|
||||
108 3959 key
|
||||
Macro: KEY [Source: MACRO.ASM]
|
||||
3 38F7 48 PHA
|
||||
4 38F8 AD 0F D2 ?CK1 LDA SKSTAT
|
||||
5 38FB 29 04 AND #$04
|
||||
6 38FD F0 F9 BEQ ?CK1
|
||||
7 38FF AD 0F D2 ?CK LDA SKSTAT
|
||||
8 3902 29 04 AND #$04
|
||||
9 3904 D0 F9 BNE ?CK
|
||||
10 3906 68 PLA
|
||||
3 3959 48 PHA
|
||||
4 395A AD 0F D2 ?CK1 LDA SKSTAT
|
||||
5 395D 29 04 AND #$04
|
||||
6 395F F0 F9 BEQ ?CK1
|
||||
7 3961 AD 0F D2 ?CK LDA SKSTAT
|
||||
8 3964 29 04 AND #$04
|
||||
9 3966 D0 F9 BNE ?CK
|
||||
10 3968 68 PLA
|
||||
Source: dino.asm
|
||||
108 3907 A9 20 8D F4 02 mva #>font1 chbas
|
||||
109 390C waitRTC ; or waitRTC ?
|
||||
109 3969 A9 20 8D F4 02 mva #>font1 chbas
|
||||
110 396E waitRTC ; or waitRTC ?
|
||||
Macro: WAITRTC [Source: MACRO.ASM]
|
||||
1 390C A5 14 lda RTCLOK+2
|
||||
2 390E C5 14 ?wa cmp RTCLOK+2
|
||||
3 3910 F0 FC beq ?wa
|
||||
1 396E A5 14 lda RTCLOK+2
|
||||
2 3970 C5 14 ?wa cmp RTCLOK+2
|
||||
3 3972 F0 FC beq ?wa
|
||||
Source: dino.asm
|
||||
110 3912 A9 04 8D 04 D4 mva #4 hscrol
|
||||
111 3917 4C 4B 38 jmp EndLoop
|
||||
112 391A halt
|
||||
111 3974 A9 04 8D 04 D4 mva #4 hscrol
|
||||
112 3979 4C A0 38 jmp EndLoop
|
||||
113 397C halt
|
||||
Macro: HALT [Source: MACRO.ASM]
|
||||
1 391A ?stop
|
||||
2 391A AD 0A D2 lda RANDOM
|
||||
3 391D 29 05 and #$05
|
||||
4 391F 8D 1A D0 sta COLBAK
|
||||
5 3922 4C 1A 39 jmp ?stop
|
||||
1 397C ?stop
|
||||
2 397C AD 0A D2 lda RANDOM
|
||||
3 397F 29 05 and #$05
|
||||
4 3981 8D 1A D0 sta COLBAK
|
||||
5 3984 4C 7C 39 jmp ?stop
|
||||
Source: dino.asm
|
||||
113 3925 60 rts
|
||||
114
|
||||
115 ;-----------------------------------------------
|
||||
116 ; Generation of character sets 2,3 and 4 of 1
|
||||
117 ; By copying and horizontal shift dino
|
||||
118 ;-----------------------------------------------
|
||||
119 3926 .proc GenerateCharsets
|
||||
120 ; copy charset 1 to 2,3 and 4
|
||||
121 3926 A0 00 ldy #0
|
||||
122 3928 CopyLoop
|
||||
123 3928 B9 00 20 lda font1,y
|
||||
124 392B 99 00 24 sta font2,y
|
||||
125 392E 99 00 28 sta font3,y
|
||||
126 3931 99 00 2C sta font4,y
|
||||
127 3934 B9 00 21 lda font1+$100,y
|
||||
128 3937 99 00 25 sta font2+$100,y
|
||||
129 393A 99 00 29 sta font3+$100,y
|
||||
130 393D 99 00 2D sta font4+$100,y
|
||||
131 3940 B9 00 22 lda font1+$200,y
|
||||
132 3943 99 00 26 sta font2+$200,y
|
||||
133 3946 99 00 2A sta font3+$200,y
|
||||
134 3949 99 00 2E sta font4+$200,y
|
||||
135 394C B9 00 23 lda font1+$300,y
|
||||
136 394F 99 00 27 sta font2+$300,y
|
||||
137 3952 99 00 2B sta font3+$300,y
|
||||
138 3955 99 00 2F sta font4+$300,y
|
||||
139 3958 C8 iny
|
||||
140 3959 D0 CD bne CopyLoop
|
||||
141 ; and shifting dino shape
|
||||
142
|
||||
143 395B 60 rts
|
||||
144 .endp
|
||||
145
|
||||
146 ;-----------------------------------------------
|
||||
147 ; Show Dino on screen (test)
|
||||
148 ; X - y position
|
||||
149 ; Y - shape nr
|
||||
150 ;-----------------------------------------------
|
||||
151 395C .proc ShowDino
|
||||
152 395C B9 30 3A lda ShapesTableL,y
|
||||
153 395F 85 80 sta temp_w
|
||||
154 3961 B9 35 3A lda ShapesTableH,y
|
||||
155 3964 85 81 sta temp_w+1
|
||||
156 3966 A0 00 ldy #0
|
||||
157 3968 DinoLoop
|
||||
158 3968 B1 80 lda (temp_w),y
|
||||
159 396A 30 03 bmi @+
|
||||
160 396C 9D 00 34 sta screen+$400,x
|
||||
161 396F 18 A5 80 69 05 85 + @ adw temp_w #5
|
||||
162 397A B1 80 lda (temp_w),y
|
||||
163 397C 30 03 bmi @+
|
||||
164 397E 9D 00 35 sta screen+$500,x
|
||||
165 3981 18 A5 80 69 05 85 + @ adw temp_w #5
|
||||
166 398C B1 80 lda (temp_w),y
|
||||
167 398E 30 03 bmi @+
|
||||
168 3990 9D 00 36 sta screen+$600,x
|
||||
169 3993 18 A5 80 69 05 85 + @ adw temp_w #5
|
||||
170 399E B1 80 lda (temp_w),y
|
||||
171 39A0 30 03 bmi @+
|
||||
172 39A2 9D 00 37 sta screen+$700,x
|
||||
173 39A5 38 A5 80 E9 0F 85 + @ sbw temp_w #15
|
||||
174 39B0 E8 inx
|
||||
175 39B1 C8 iny
|
||||
176 39B2 C0 05 cpy #5 ; dino width
|
||||
177 39B4 D0 B2 bne DinoLoop
|
||||
178 39B6 60 rts
|
||||
114 3987 60 rts
|
||||
115
|
||||
116 ;-----------------------------------------------
|
||||
117 ; Generation of character sets 2,3 and 4 of 1
|
||||
118 ; By copying and horizontal shift dino
|
||||
119 ;-----------------------------------------------
|
||||
120 3988 .proc GenerateCharsets
|
||||
121 ; copy charset 1 to 2,3 and 4 (but not dino chars)
|
||||
122 3988 A0 00 ldy #0
|
||||
123 398A CopyLoop
|
||||
124 398A B9 00 20 lda font1,y
|
||||
125 398D 99 00 24 sta font2,y
|
||||
126 3990 99 00 28 sta font3,y
|
||||
127 3993 99 00 2C sta font4,y
|
||||
128 3996 B9 00 22 lda font1+$200,y
|
||||
129 3999 99 00 26 sta font2+$200,y
|
||||
130 399C 99 00 2A sta font3+$200,y
|
||||
131 399F 99 00 2E sta font4+$200,y
|
||||
132 39A2 B9 00 23 lda font1+$300,y
|
||||
133 39A5 99 00 27 sta font2+$300,y
|
||||
134 39A8 99 00 2B sta font3+$300,y
|
||||
135 39AB 99 00 2F sta font4+$300,y
|
||||
136 39AE C8 iny
|
||||
137 39AF D0 D9 bne CopyLoop
|
||||
138
|
||||
139 39B1 60 rts
|
||||
140 .endp
|
||||
141 ;-----------------------------------------------
|
||||
142 39B2 .proc ClearWorld
|
||||
143 39B2 A0 3F ldy #63 ; world size
|
||||
144 39B4 A9 00 lda #0 ; ground
|
||||
145 39B6 99 20 38 @ sta WorldTable,y
|
||||
146 39B9 88 dey
|
||||
147 39BA 10 FA bpl @-
|
||||
148 39BC 60 rts
|
||||
149 .endp
|
||||
150 39BD .proc ClearScreen
|
||||
151 39BD A0 40 ldy #64
|
||||
152 39BF A9 00 lda #0
|
||||
153 39C1 ClearLoop
|
||||
154 39C1 99 00 37 sta screen+$700,y
|
||||
155 39C4 99 00 36 sta screen+$600,y
|
||||
156 39C7 99 00 35 sta screen+$500,y
|
||||
157 39CA 99 00 34 sta screen+$400,y
|
||||
158 39CD 99 00 33 sta screen+$300,y
|
||||
159 39D0 88 dey
|
||||
160 39D1 10 EE bpl ClearLoop
|
||||
161 39D3 60 rts
|
||||
162 .endp
|
||||
163 ;-----------------------------------------------
|
||||
164 39D4 .proc WorldToScreen
|
||||
165 39D4 20 BD 39 jsr ClearScreen
|
||||
166 39D7 A2 00 ldx #0 ; start position
|
||||
167 39D9 86 82 stx temp_b
|
||||
168 39DB ToScreenLoop
|
||||
169 39DB BD 20 38 lda WorldTable,x
|
||||
170 39DE 30 04 bmi NothingToDraw
|
||||
171 39E0 A8 tay
|
||||
172 39E1 20 00 3A jsr ShowObject
|
||||
173 39E4 NothingToDraw
|
||||
174 39E4 E6 82 inc temp_b
|
||||
175 39E6 A6 82 ldx temp_b
|
||||
176 39E8 E0 40 cpx #64
|
||||
177 39EA D0 EF bne ToScreenLoop
|
||||
178 39EC 60 rts
|
||||
179 .endp
|
||||
180 ;-----------------------------------------------
|
||||
181 ; Generation of character sets 2,3 and 4 of 1
|
||||
182 ; By copying and horizontal shift dino
|
||||
183 ;-----------------------------------------------
|
||||
184 39B7 .proc SetGameScreen
|
||||
185 39B7 A9 00 8D 30 02 A9 + mwa #GameDL dlptrs
|
||||
186 39C1 A9 3E lda #%00111110 ; normal screen width, DL on, P/M on
|
||||
187 39C3 8D 2F 02 sta dmactls
|
||||
188 39C6 A9 20 8D F4 02 mva #>font1 chbas
|
||||
189 39CB 60 rts
|
||||
190 .endp
|
||||
191 ;--------------------------------------------------
|
||||
192 39CC icl 'artwork/shapes.asm'
|
||||
181 39ED .proc WorldShift
|
||||
182 39ED A0 00 ldy #0
|
||||
183 39EF Shift
|
||||
184 39EF B9 21 38 lda WorldTable+1,y
|
||||
185 39F2 99 20 38 sta WorldTable,y
|
||||
186 39F5 C8 iny
|
||||
187 39F6 C0 3F cpy #63
|
||||
188 39F8 D0 F5 bne Shift
|
||||
189 39FA A9 00 lda #0 ;ground
|
||||
190 39FC 99 20 38 sta WorldTable,y
|
||||
191 ; now we can insert random object to world end
|
||||
192
|
||||
193 39FF 60 rts
|
||||
194 .endp
|
||||
195 ;-----------------------------------------------
|
||||
196 ; Show Object on screen (test)
|
||||
197 ; X - y position
|
||||
198 ; Y - shape nr
|
||||
199 ;-----------------------------------------------
|
||||
200 3A00 .proc ShowObject
|
||||
201 3A00 B9 61 3B lda ShapesTableL,y
|
||||
202 3A03 85 80 sta temp_w
|
||||
203 3A05 B9 66 3B lda ShapesTableH,y
|
||||
204 3A08 85 81 sta temp_w+1
|
||||
205 3A0A A0 00 ldy #0
|
||||
206 3A0C ObjectLoop
|
||||
207 3A0C B1 80 lda (temp_w),y
|
||||
208 3A0E 30 03 bmi @+
|
||||
209 3A10 9D 00 34 sta screen+$400,x
|
||||
210 3A13 18 A5 80 69 02 85 + @ adw temp_w #2
|
||||
211 3A1E B1 80 lda (temp_w),y
|
||||
212 3A20 30 03 bmi @+
|
||||
213 3A22 9D 00 35 sta screen+$500,x
|
||||
214 3A25 18 A5 80 69 02 85 + @ adw temp_w #2
|
||||
215 3A30 B1 80 lda (temp_w),y
|
||||
216 3A32 30 03 bmi @+
|
||||
217 3A34 9D 00 36 sta screen+$600,x
|
||||
218 3A37 18 A5 80 69 02 85 + @ adw temp_w #2
|
||||
219 3A42 B1 80 lda (temp_w),y
|
||||
220 3A44 30 03 bmi @+
|
||||
221 3A46 9D 00 37 sta screen+$700,x
|
||||
222 3A49 38 A5 80 E9 06 85 + @ sbw temp_w #6
|
||||
223 3A54 E8 inx
|
||||
224 3A55 C8 iny
|
||||
225 3A56 C0 02 cpy #2 ; object width
|
||||
226 3A58 D0 B2 bne ObjectLoop
|
||||
227 3A5A 60 rts
|
||||
228 .endp
|
||||
229 ;-----------------------------------------------
|
||||
230 ; Show Dino on screen (test)
|
||||
231 ; X - y position
|
||||
232 ; Y - shape nr
|
||||
233 ;-----------------------------------------------
|
||||
234 3A5B .proc ShowDino
|
||||
235 3A5B B9 2F 3B lda DinoShapesTableL,y
|
||||
236 3A5E 85 80 sta temp_w
|
||||
237 3A60 B9 34 3B lda DinoShapesTableH,y
|
||||
238 3A63 85 81 sta temp_w+1
|
||||
239 3A65 A0 00 ldy #0
|
||||
240 3A67 DinoLoop
|
||||
241 3A67 B1 80 lda (temp_w),y
|
||||
242 3A69 30 03 bmi @+
|
||||
243 3A6B 9D 00 34 sta screen+$400,x
|
||||
244 3A6E 18 A5 80 69 05 85 + @ adw temp_w #5
|
||||
245 3A79 B1 80 lda (temp_w),y
|
||||
246 3A7B 30 03 bmi @+
|
||||
247 3A7D 9D 00 35 sta screen+$500,x
|
||||
248 3A80 18 A5 80 69 05 85 + @ adw temp_w #5
|
||||
249 3A8B B1 80 lda (temp_w),y
|
||||
250 3A8D 30 03 bmi @+
|
||||
251 3A8F 9D 00 36 sta screen+$600,x
|
||||
252 3A92 18 A5 80 69 05 85 + @ adw temp_w #5
|
||||
253 3A9D B1 80 lda (temp_w),y
|
||||
254 3A9F 30 03 bmi @+
|
||||
255 3AA1 9D 00 37 sta screen+$700,x
|
||||
256 3AA4 38 A5 80 E9 0F 85 + @ sbw temp_w #15
|
||||
257 3AAF E8 inx
|
||||
258 3AB0 C8 iny
|
||||
259 3AB1 C0 05 cpy #5 ; dino width
|
||||
260 3AB3 D0 B2 bne DinoLoop
|
||||
261 3AB5 60 rts
|
||||
262 .endp
|
||||
263 ;-----------------------------------------------
|
||||
264 ; Generation of character sets 2,3 and 4 of 1
|
||||
265 ; By copying and horizontal shift dino
|
||||
266 ;-----------------------------------------------
|
||||
267 3AB6 .proc SetGameScreen
|
||||
268 3AB6 A9 00 8D 30 02 A9 + mwa #GameDL dlptrs
|
||||
269 3AC0 A9 3E lda #%00111110 ; normal screen width, DL on, P/M on
|
||||
270 3AC2 8D 2F 02 sta dmactls
|
||||
271 3AC5 A9 20 8D F4 02 mva #>font1 chbas
|
||||
272 3ACA 60 rts
|
||||
273 .endp
|
||||
274 ;--------------------------------------------------
|
||||
275 3ACB icl 'artwork/shapes.asm'
|
||||
Source: shapes.asm
|
||||
1 ; @com.wudsn.ide.asm.mainsourcefile=scorch.asm
|
||||
1 ; @com.wudsn.ide.asm.mainsourcefile=dino.asm
|
||||
2
|
||||
3 .IF *>0 ;this is a trick that prevents compiling this file alone
|
||||
4
|
||||
5 ; dno run
|
||||
6 39CC dino_run_0 ; anly '0' jumps
|
||||
7 39CC FF 23 27 2B FF .by $ff, $23, $27, $2b, $ff ; '. '
|
||||
8 39D1 20 24 28 2C FF .by $20, $24, $28, $2c, $ff ; ' ## '
|
||||
9 39D6 21 25 29 FF FF .by $21, $25, $29, $ff, $ff ; '## .'
|
||||
10 39DB 22 26 2A FF FF .by $22, $26, $2a, $ff, $ff ; '## .'
|
||||
11 39E0 dino_run_1
|
||||
12 39E0 FF 23 27 2B FF .by $ff, $23, $27, $2b, $ff ; '. '
|
||||
13 39E5 20 24 28 2C FF .by $20, $24, $28, $2c, $ff ; ' ## '
|
||||
14 39EA 21 25 29 FF FF .by $21, $25, $29, $ff, $ff ; '## .'
|
||||
15 39EF 2D 2E 2F FF FF .by $2d, $2e, $2f, $ff, $ff ; '## .'
|
||||
16 39F4 dino_run_2
|
||||
17 39F4 FF 23 27 2B FF .by $ff, $23, $27, $2b, $ff ; '. '
|
||||
18 39F9 20 24 28 2C FF .by $20, $24, $28, $2c, $ff ; ' ## '
|
||||
19 39FE 21 25 29 FF FF .by $21, $25, $29, $ff, $ff ; '## .'
|
||||
20 3A03 30 31 32 FF FF .by $30, $31, $32, $ff, $ff ; '## .'
|
||||
21 3A08 dino_crouch_1
|
||||
22 3A08 FF FF FF FF FF .by $ff, $ff, $ff, $ff, $ff
|
||||
23 3A0D FF FF FF FF FF .by $ff, $ff, $ff, $ff, $ff
|
||||
24 3A12 33 34 35 36 37 .by $33, $34, $35, $36, $37 ; '#### '
|
||||
25 3A17 38 39 3A 3B 3C .by $38, $39, $3a, $3b, $3c ; '#### '
|
||||
26 3A1C dino_crouch_2
|
||||
27 3A1C FF FF FF FF FF .by $ff, $ff, $ff, $ff, $ff
|
||||
28 3A21 FF FF FF FF FF .by $ff, $ff, $ff, $ff, $ff
|
||||
29 3A26 33 34 35 36 37 .by $33, $34, $35, $36, $37 ; '#### '
|
||||
30 3A2B 3D 3E 3F 3B 3C .by $3d, $3e, $3f, $3b, $3c ; '#### '
|
||||
31 3A30 ShapesTableL
|
||||
32 3A30 CC .by <dino_run_0
|
||||
33 3A31 E0 .by <dino_run_1
|
||||
34 3A32 F4 .by <dino_run_2
|
||||
35 3A33 08 .by <dino_crouch_1
|
||||
36 3A34 1C .by <dino_crouch_2
|
||||
37 3A35 ShapesTableH
|
||||
38 3A35 39 .by >dino_run_0
|
||||
39 3A36 39 .by >dino_run_1
|
||||
40 3A37 39 .by >dino_run_2
|
||||
41 3A38 3A .by >dino_crouch_1
|
||||
42 3A39 3A .by >dino_crouch_2
|
||||
43
|
||||
44 .endif ; .IF *>0
|
||||
193 ;--------------------------------------------------
|
||||
194
|
||||
195 02E0-02E1> 20 38 run FirstSTART
|
||||
6 3ACB dino_run_0 ; anly '0' jumps
|
||||
7 3ACB FF 23 27 2B FF .by $ff, $23, $27, $2b, $ff ; '. .'
|
||||
8 3AD0 20 24 28 2C FF .by $20, $24, $28, $2c, $ff ; ' ## .'
|
||||
9 3AD5 21 25 29 FF FF .by $21, $25, $29, $ff, $ff ; '## ..'
|
||||
10 3ADA 22 26 2A FF FF .by $22, $26, $2a, $ff, $ff ; '## ..'
|
||||
11 3ADF dino_run_1
|
||||
12 3ADF FF 23 27 2B FF .by $ff, $23, $27, $2b, $ff ; '. .'
|
||||
13 3AE4 20 24 28 2C FF .by $20, $24, $28, $2c, $ff ; ' ## .'
|
||||
14 3AE9 21 25 29 FF FF .by $21, $25, $29, $ff, $ff ; '## ..'
|
||||
15 3AEE 2D 2E 2F FF FF .by $2d, $2e, $2f, $ff, $ff ; '## ..'
|
||||
16 3AF3 dino_run_2
|
||||
17 3AF3 FF 23 27 2B FF .by $ff, $23, $27, $2b, $ff ; '. .'
|
||||
18 3AF8 20 24 28 2C FF .by $20, $24, $28, $2c, $ff ; ' ## .'
|
||||
19 3AFD 21 25 29 FF FF .by $21, $25, $29, $ff, $ff ; '## ..'
|
||||
20 3B02 30 31 32 FF FF .by $30, $31, $32, $ff, $ff ; '## ..'
|
||||
21 3B07 dino_crouch_1
|
||||
22 3B07 FF FF FF FF FF .by $ff, $ff, $ff, $ff, $ff ; '.....'
|
||||
23 3B0C FF FF FF FF FF .by $ff, $ff, $ff, $ff, $ff ; '.....'
|
||||
24 3B11 33 34 35 36 37 .by $33, $34, $35, $36, $37 ; '#### '
|
||||
25 3B16 38 39 3A 3B 3C .by $38, $39, $3a, $3b, $3c ; '#### '
|
||||
26 3B1B dino_crouch_2
|
||||
27 3B1B FF FF FF FF FF .by $ff, $ff, $ff, $ff, $ff ; '.....'
|
||||
28 3B20 FF FF FF FF FF .by $ff, $ff, $ff, $ff, $ff ; '.....'
|
||||
29 3B25 33 34 35 36 37 .by $33, $34, $35, $36, $37 ; '#### '
|
||||
30 3B2A 3D 3E 3F 3B 3C .by $3d, $3e, $3f, $3b, $3c ; '#### '
|
||||
31 3B2F DinoShapesTableL
|
||||
32 3B2F CB .by <dino_run_0
|
||||
33 3B30 DF .by <dino_run_1
|
||||
34 3B31 F3 .by <dino_run_2
|
||||
35 3B32 07 .by <dino_crouch_1
|
||||
36 3B33 1B .by <dino_crouch_2
|
||||
37 3B34 DinoShapesTableH
|
||||
38 3B34 3A .by >dino_run_0
|
||||
39 3B35 3A .by >dino_run_1
|
||||
40 3B36 3A .by >dino_run_2
|
||||
41 3B37 3B .by >dino_crouch_1
|
||||
42 3B38 3B .by >dino_crouch_2
|
||||
43 ; other objects
|
||||
44 3B39 ground_0
|
||||
45 3B39 FF FF .by $ff, $ff ; '..'
|
||||
46 3B3B FF FF .by $ff, $ff ; '..'
|
||||
47 3B3D FF FF .by $ff, $ff ; '..'
|
||||
48 3B3F 52 FF .by $52, $ff ; '#.'
|
||||
49 3B41 bird_0
|
||||
50 3B41 FF FF .by $ff, $ff ; '..'
|
||||
51 3B43 FF FF .by $ff, $ff ; '..'
|
||||
52 3B45 48 FF .by $48, $ff ; '#.'
|
||||
53 3B47 52 FF .by $52, $ff ; '#.'
|
||||
54 3B49 bird_1
|
||||
55 3B49 FF FF .by $ff, $ff ; '..'
|
||||
56 3B4B 48 FF .by $48, $ff ; '#.'
|
||||
57 3B4D FF FF .by $ff, $ff ; '..'
|
||||
58 3B4F 52 FF .by $52, $ff ; '#.'
|
||||
59 3B51 bird_2
|
||||
60 3B51 48 FF .by $48, $ff ; '#.'
|
||||
61 3B53 FF FF .by $ff, $ff ; '..'
|
||||
62 3B55 FF FF .by $ff, $ff ; ''.'
|
||||
63 3B57 52 FF .by $52, $ff ; '#.'
|
||||
64 3B59 cactus_0
|
||||
65 3B59 FF FF .by $ff, $ff ; '..'
|
||||
66 3B5B 54 54 .by $54, $54 ; '##'
|
||||
67 3B5D 54 54 .by $54, $54 ; '##'
|
||||
68 3B5F 52 52 .by $52, $52 ; '##'
|
||||
69
|
||||
70 3B61 ShapesTableL
|
||||
71 3B61 39 .by <ground_0
|
||||
72 3B62 41 .by <bird_0
|
||||
73 3B63 49 .by <bird_1
|
||||
74 3B64 51 .by <bird_2
|
||||
75 3B65 59 .by <cactus_0
|
||||
76 3B66 ShapesTableH
|
||||
77 3B66 3B .by >ground_0
|
||||
78 3B67 3B .by >bird_0
|
||||
79 3B68 3B .by >bird_1
|
||||
80 3B69 3B .by >bird_2
|
||||
81 3B6A 3B .by >cactus_0
|
||||
82
|
||||
83 .endif ; .IF *>0
|
||||
276 ;--------------------------------------------------
|
||||
277
|
||||
278 02E0-02E1> 60 38 run FirstSTART
|
||||
|
||||
Reference in New Issue
Block a user