Let's animate!

This commit is contained in:
Pecusx
2024-08-11 13:03:53 +02:00
parent b1e99ddfcb
commit f9ba64c21d
11 changed files with 766 additions and 547 deletions
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+32 -9
View File
@@ -29,38 +29,53 @@ dino_crouch_2
.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
.by <dino_run_0 ; jump
DinoShapesTableH
.by >dino_run_0
.by >dino_run_1
.by >dino_run_2
.by >dino_crouch_1
.by >dino_crouch_2
.by >dino_run_0 ; jump
; other objects
ground_0
.by $ff, $ff ; '..'
.by $ff, $ff ; '..'
.by $ff, $ff ; '..'
.by $52, $ff ; '#.'
.by $52, $52 ; '##'
bird_0
.by $ff, $ff ; '..'
.by $ff, $ff ; '..'
.by $48, $ff ; '#.'
.by $52, $ff ; '#.'
.by $40, $41 ; '##'
.by $52, $52 ; '##'
bird_1
.by $ff, $ff ; '..'
.by $48, $ff ; '#.'
.by $40, $41 ; '##'
.by $ff, $ff ; '..'
.by $52, $ff ; '#.'
.by $52, $52 ; '##'
bird_2
.by $48, $ff ; '#.'
.by $40, $41 ; '##'
.by $ff, $ff ; '..'
.by $ff, $ff ; ''.'
.by $52, $ff ; '#.'
.by $52, $52 ; '##'
bird_0a
.by $ff, $ff ; '..'
.by $ff, $ff ; '..'
.by $42, $43 ; '##'
.by $52, $52 ; '##'
bird_1a
.by $ff, $ff ; '..'
.by $42, $43 ; '##'
.by $ff, $ff ; '..'
.by $52, $52 ; '##'
bird_2a
.by $42, $43 ; '##'
.by $ff, $ff ; '..'
.by $ff, $ff ; ''.'
.by $52, $52 ; '##'
cactus_0
.by $ff, $ff ; '..'
.by $54, $54 ; '##'
@@ -68,16 +83,24 @@ cactus_0
.by $52, $52 ; '##'
ShapesTableL
.by <ground_0
.by <ground_0
.by <bird_0
.by <bird_0a
.by <bird_1
.by <bird_1a
.by <bird_2
.by <bird_2a
.by <cactus_0
ShapesTableH
.by >ground_0
.by >ground_0
.by >bird_0
.by >bird_0a
.by >bird_1
.by >bird_1a
.by >bird_2
.by >bird_2a
.by >cactus_0
diff_object_gap ; min distance between obstacles by difficulty level
:DIFF_LEVELS .by 20-#
+2
View File
@@ -0,0 +1,2 @@
mads 2.1.7 build 3 (13 Sep 23)
Label table:
+111
View File
@@ -0,0 +1,111 @@
mads 2.1.7 build 3 (13 Sep 23)
Source: shapes.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 dino_run_0 ; anly '0' jumps
7 .by $ff, $23, $27, $2b, $ff ; '. .'
8 .by $20, $24, $28, $2c, $ff ; ' ## .'
9 .by $21, $25, $29, $ff, $ff ; '## ..'
10 .by $22, $26, $2a, $ff, $ff ; '## ..'
11 dino_run_1
12 .by $ff, $23, $27, $2b, $ff ; '. .'
13 .by $20, $24, $28, $2c, $ff ; ' ## .'
14 .by $21, $25, $29, $ff, $ff ; '## ..'
15 .by $2d, $2e, $2f, $ff, $ff ; '## ..'
16 dino_run_2
17 .by $ff, $23, $27, $2b, $ff ; '. .'
18 .by $20, $24, $28, $2c, $ff ; ' ## .'
19 .by $21, $25, $29, $ff, $ff ; '## ..'
20 .by $30, $31, $32, $ff, $ff ; '## ..'
21 dino_crouch_1
22 .by $ff, $ff, $ff, $ff, $ff ; '.....'
23 .by $ff, $ff, $ff, $ff, $ff ; '.....'
24 .by $33, $34, $35, $36, $37 ; '#### '
25 .by $38, $39, $3a, $3b, $3c ; '#### '
26 dino_crouch_2
27 .by $ff, $ff, $ff, $ff, $ff ; '.....'
28 .by $ff, $ff, $ff, $ff, $ff ; '.....'
29 .by $33, $34, $35, $36, $37 ; '#### '
30 .by $3d, $3e, $3f, $3b, $3c ; '#### '
31 DinoShapesTableL
32 .by <dino_run_0
33 .by <dino_run_1
34 .by <dino_run_2
35 .by <dino_crouch_1
36 .by <dino_crouch_2
37 DinoShapesTableH
38 .by >dino_run_0
39 .by >dino_run_1
40 .by >dino_run_2
41 .by >dino_crouch_1
42 .by >dino_crouch_2
43 ; other objects
44 ground_0
45 .by $ff, $ff ; '..'
46 .by $ff, $ff ; '..'
47 .by $ff, $ff ; '..'
48 .by $52, $ff ; '#.'
49 bird_0
50 .by $ff, $ff ; '..'
51 .by $ff, $ff ; '..'
52 .by $40, $41 ; '##'
53 .by $52, $ff ; '#.'
54 bird_1
55 .by $ff, $ff ; '..'
56 .by $40, $41 ; '##'
57 .by $ff, $ff ; '..'
58 .by $52, $ff ; '#.'
59 bird_2
60 .by $40, $41 ; '##'
61 .by $ff, $ff ; '..'
62 .by $ff, $ff ; ''.'
63 .by $52, $ff ; '#.'
64 bird_0a
65 .by $ff, $ff ; '..'
66 .by $ff, $ff ; '..'
67 .by $42, $43 ; '##'
68 .by $52, $ff ; '#.'
69 bird_1a
70 .by $ff, $ff ; '..'
71 .by $42, $43 ; '##'
72 .by $ff, $ff ; '..'
73 .by $52, $ff ; '#.'
74 bird_2a
75 .by $42, $43 ; '##'
76 .by $ff, $ff ; '..'
77 .by $ff, $ff ; ''.'
78 .by $52, $ff ; '#.'
79 cactus_0
80 .by $ff, $ff ; '..'
81 .by $54, $54 ; '##'
82 .by $54, $54 ; '##'
83 .by $52, $52 ; '##'
84
85 ShapesTableL
86 .by <ground_0
87 .by <bird_0
88 .by <bird_0a
89 .by <bird_1
90 .by <bird_1a
91 .by <bird_2
92 .by <bird_2a
93 .by <cactus_0
94 ShapesTableH
95 .by >ground_0
96 .by >bird_0
97 .by >bird_0a
98 .by >bird_1
99 .by >bird_1a
100 .by >bird_2
101 .by >bird_2a
102 .by >cactus_0
103 diff_object_gap ; min distance between obstacles by difficulty level
104 :DIFF_LEVELS .by 20-#
105 ;----------vars----------
106 diff_level .ds 1
107
108
109 .endif ; .IF *>0
+49 -16
View File
@@ -10,6 +10,8 @@ DIFF_LEVELS = 16
; Zpage variables
.zpvar temp_w .word = $80
.zpvar temp_b .byte
.zpvar DinoWalkPhase .byte
.zpvar DinoState .byte ; 0/1 - walk, 2/3 - crouch, 4... - jump
;---------------------------------------------------
icl 'lib/ATARISYS.ASM'
icl 'lib/MACRO.ASM'
@@ -43,7 +45,7 @@ screen
.ds $100*SCR_HEIGHT
; display list
GameDL
:5 .byte SKIP8 ; empty lines
:10 .byte SKIP8 ; empty lines
.rept SCR_HEIGHT, #
.byte MODE2+LMS+SCH ; gr.0+LMS+HSCRL
@@ -59,7 +61,8 @@ WorldTable
;---------------------------------------------------
FirstSTART
jsr GenerateCharsets
jsr ClearWorld
jsr SetStart
jsr SetGameScreen
mva #0 diff_level
; test only (some object in the world)
@@ -70,7 +73,6 @@ FirstSTART
lda #4+$80 ; cactus (second char)
sta WorldTable+21
;
jsr SetGameScreen
ldx #5 ; position
ldy #0 ; shape
jsr ShowDino
@@ -91,25 +93,28 @@ EndLoop
jsr WorldShift
jsr WorldToScreen
ldx #5 ; position
ldy #0 ; shape
lda DinoState
ora DinoWalkPhase ; shape
tay
jsr ShowDino
wait ; or waitRTC ?
key
waitRTC ; or waitRTC ?
;key
mva #>font2 chbas
waitRTC ; or waitRTC ?
mva #3 hscrol
wait ; or waitRTC ?
key
waitRTC ; or waitRTC ?
;key
mva #>font3 chbas
waitRTC ; or waitRTC ?
mva #2 hscrol
wait ; or waitRTC ?
key
waitRTC ; or waitRTC ?
;key
mva #>font4 chbas
waitRTC ; or waitRTC ?
mva #1 hscrol
wait ; or waitRTC ?
key
waitRTC ; or waitRTC ?
;key
jsr AnimateBirds
mva #>font1 chbas
waitRTC ; or waitRTC ?
mva #4 hscrol
@@ -215,7 +220,8 @@ insertObject
lda RANDOM
and #%00000001 ; insert 50/50
beq noInsert
mva #1 WorldTable+WORLD_LENGTH-2
mva #6 WorldTable+WORLD_LENGTH-2
mva #6+$80 WorldTable+WORLD_LENGTH-1
inc diff_level
@@ -224,7 +230,28 @@ noInsert
rts
.endp
;-----------------------------------------------
; Show Object on screen (test)
.proc AnimateBirds
ldy #WORLD_LENGTH
@ lda WorldTable,y
tax
and #%01111111
beq NoBird
cmp #8 ; first cactus
bcs NoBird
; then animate bird
txa
eor #%0000001
sta WorldTable,y
NoBird
dey
bpl @-
lda DinoWalkPhase
eor #%00000001
sta DinoWalkPhase
rts
.endp
;-----------------------------------------------
; Show Object on screen
; X - y position
; Y - shape nr
;-----------------------------------------------
@@ -292,8 +319,14 @@ DinoLoop
rts
.endp
;-----------------------------------------------
; Generation of character sets 2,3 and 4 of 1
; By copying and horizontal shift dino
.proc SetStart
jsr ClearWorld
lda #0
sta DinoWalkPhase
lda #0
sta DinoState
rts
.endp
;-----------------------------------------------
.proc SetGameScreen
mwa #GameDL dlptrs
+65 -49
View File
@@ -1,6 +1,8 @@
mads 2.1.7 build 3 (13 Sep 23)
Label table:
00 0008 SCR_HEIGHT
00 0040 WORLD_LENGTH
00 0010 DIFF_LEVELS
00 E400 EDITRV
00 E410 SCRENV
00 E420 KEYBDV
@@ -576,58 +578,72 @@ FFFD 0000 @KBCODE
00 009B EOL
00 0080 TEMP_W
00 0082 TEMP_B
00 0083 DINOWALKPHASE
00 0084 DINOSTATE
00 2000 FONT1
00 2400 FONT2
00 2800 FONT3
00 2C00 FONT4
00 3000 SCREEN
00 3800 GAMEDL
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
00 380B LINE0_ADDR
00 380E LINE1_ADDR
00 3811 LINE2_ADDR
00 3814 LINE3_ADDR
00 3817 LINE4_ADDR
00 381A LINE5_ADDR
00 381D LINE6_ADDR
00 3820 LINE7_ADDR
00 3825 WORLDTABLE
00 3865 FIRSTSTART
00 38AA ENDLOOP
00 3924 GENERATECHARSETS
00 3926 GENERATECHARSETS.COPYLOOP
00 394E CLEARWORLD
00 3952 CLEARWORLD.0@
00 3959 CLEARSCREEN
00 395D CLEARSCREEN.CLEARLOOP
00 3970 WORLDTOSCREEN
00 3977 WORLDTOSCREEN.TOSCREENLOOP
00 3980 WORLDTOSCREEN.NOTHINGTODRAW
00 3989 WORLDSHIFT
00 398B WORLDSHIFT.SHIFT
00 39A5 WORLDSHIFT.1@
00 39AF WORLDSHIFT.INSERTOBJECT
00 39C3 WORLDSHIFT.NOINSERT
00 39C4 ANIMATEBIRDS
00 39C6 ANIMATEBIRDS.2@
00 39D8 ANIMATEBIRDS.NOBIRD
00 39E2 SHOWOBJECT
00 39EE SHOWOBJECT.OBJECTLOOP
00 39F5 SHOWOBJECT.3@
00 3A07 SHOWOBJECT.4@
00 3A19 SHOWOBJECT.5@
00 3A2B SHOWOBJECT.6@
00 3A3D SHOWDINO
00 3A49 SHOWDINO.DINOLOOP
00 3A50 SHOWDINO.7@
00 3A62 SHOWDINO.8@
00 3A74 SHOWDINO.9@
00 3A86 SHOWDINO.10@
00 3A98 SETSTART
00 3AA4 SETGAMESCREEN
00 3AB9 DINO_RUN_0
00 3ACD DINO_RUN_1
00 3AE1 DINO_RUN_2
00 3AF5 DINO_CROUCH_1
00 3B09 DINO_CROUCH_2
00 3B1D DINOSHAPESTABLEL
00 3B22 DINOSHAPESTABLEH
00 3B27 GROUND_0
00 3B2F BIRD_0
00 3B37 BIRD_1
00 3B3F BIRD_2
00 3B47 BIRD_0A
00 3B4F BIRD_1A
00 3B57 BIRD_2A
00 3B5F CACTUS_0
00 3B67 SHAPESTABLEL
00 3B70 SHAPESTABLEH
00 3B79 DIFF_OBJECT_GAP
00 3B89 DIFF_LEVEL
+507 -473
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.