commodore 64 graphics and sound programming
TRANSCRIPT
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 1/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 2/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 3/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 4/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 5/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 6/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 7/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 8/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 9/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 10/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 11/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 12/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 13/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 14/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 15/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 16/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 17/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 18/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 19/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 20/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 21/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 22/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 23/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 24/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 25/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 26/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 27/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 28/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 29/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 30/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 31/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 32/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 33/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 34/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 35/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 36/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 37/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 38/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 39/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 40/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 41/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 42/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 43/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 44/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 45/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 46/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 47/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 48/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 49/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 50/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 51/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 52/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 53/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 54/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 55/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 56/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 57/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 58/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 59/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 60/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 61/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 62/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 63/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 64/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 65/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 66/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 67/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 68/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 69/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 70/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 71/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 72/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 73/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 74/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 75/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 76/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 77/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 78/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 79/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 80/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 81/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 82/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 83/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 84/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 85/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 86/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 87/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 88/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 89/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 90/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 91/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 92/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 93/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 94/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
* H o wV I C - I Ik n o w sw h e r et o l o o kf o r
c h a r a c t e r p a t t e r n s
* M o v i n gt h e c h a r a c t e rR O Mp a t t e r n si n t oR A Mm e m o r y
* D e s i g n i n g a n di n s t a l l i n gm o d i f i c a t i o n s
t o t h eb u i l t - i nc h a r a c t e rs e t s
* D e s i g n i n ga n d i n s t a l l i n ga s e t o f
c h a r a c t e r st o b e u s e di n a n a n i m a t i o n
c y c l e
Y o u ' v eb e e na b l et o s c r a t c h t h e s u r f a c eo f
t h eC o m m o d o r e6 4 ' sw i d er a n g eo f c h a r a c t e r
d i s p l a ya b i l i t i e s .P l a y f u le x p e r i m e n t a t i o nw i l lh e l py o ul e a r nm o r e .
4 . 1 5 E X E R C I S E S
4 . 1 5 . 1 S e l fT e s t
A n s w e r sw i l lb e f o u n di n S e c t i o n4 . 1 5 . 3 .
1 . ( 4 . 1 )T h e r ea r e d i f f e r e n t
c h a r a c t e r sb u i l ti n t ot h e C o m m o d o r e6 4 ' s
c h a r a c t e rg e n e r a t o rR O M .
2 . ( 4 . 2 )T h eC o m m o d o r e6 4n o r m a l l yd i s p l a y s
t e x tl i n e s ,e a c hw i t h
c h a r a c t e r s ,w h i c hg i v e s
s c r e e nl o c a t i o n s .
3 . ( 4 . 3 )T h e6 4 h a s c o m p l e t e
c h a r a c t e rs e t si n R O M .
4 . ( 4 . 4 )P r e s s i n gt h e s h i f ta n dC o m m o d o r e
l o g ok e y sa t t h e s a m et i m es w i t c h e sy o u
b e t w e e nt h e
5 . ( 4 . 5 . 3 )W h yi s t h e f a c ei n F l yt h e F a c e
d r a w ns u r r o u n d e db y a r i n go f s p a c e s ?
6 . ( 4 . 6 )B i t s1 , 2 , a n d3 o f t h er e g i s t e rl o c a t e d
a t V I C + 2 4t e l l V I C t h e l o c a t i o no f
7 . ( 4 . 7 )W h a ta r et w oc o m p l i c a t i o n s i
i n c o p y i n gt h e c o n t e n t so f t h e c h a r a c t
g e n e r a t o rR O Mt o R A M ?8 . ( 4 . 1 0 )W h a tw o u l da c h a r a c t e rp a t t e r nl o o k
l i k ei f i t se i g h tn u m b e rc o d e sw e r ea l l2 5 5 ?
4 . 1 5 . 2 P r o g r a m m i n gE x e r c i s e s
1 . C h a n g et h ep r o g r a mF l yt h eF a c es o
a n o t h e r d e s i g nf l i e sa r o u n dt h es c r e e n
2 . C h a n g et h ep r o g r a mC h a r a c t e rR O M
t o R A Ms o t h e c h a r a c t e r sc o m eo u tu p s i d e - d o w n .
3 . C h a n g et h ep r o g r a mA l i e nW a l k e rs o
t h a tt h r e ea l i e n s ,a l la l i k e ,a r ew a l k i n
a c r o s st h e s c r e e n .
4 . 1 5 . 3 A n s w e r st o S e l fT e s t
1 . 5 1 2
2 . 2 5 ; 4 0 ; 1 0 0 0
3 . t w o
4 . t w oc h a r a c t e rs e t s
5 . s o i t ' l le r a s ea n yt r a c e so f i t s e l fa s i t m o v e s
6 . t h e c h a r a c t e rp a t t e r n s
7 . ( 1 ) t h e R O Mf l o a t sa r o u n da t d i f f e r e n
m e m o r ya d d r e s s e s
( 2 ) w h e ni t ' st i e dd o w n ,i n p u t / o u t p u to p e r
a t i o n s a r ed i s a b l e d
8 . a s o l i ds q u a r e
4 . 1 5 . 4 P o s s i b l eS o l u t i o n s
t o P r o g r a m m i n gE x e r c i s e s
T h e s es o l u t i o n sa r eb a s e d o na d d i n go r
c h a n g i n gl i n e si n t h ep r o g r a m s m e n t ii n
t h ee x e r c i s e s .
7 8
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 95/258
C h a r a c t e r G r
1 . L o a di n t h e p r o g r a mF l y t h e F a c e . 3 . L o a di n t h e p r o g r a mA l i e nW a l k e
T h e nt y p ei n t h e s el i n e s : T h e nt y p ei n t h e s el i n e s :
i S Ii l l
n a n ' .F L V T H EF I G U R E* * * 1 O O OR E M* * * 3 A L I E N W A L K E R S* * *
A " 1 6 1 0p r i n t" i u m m m i " :
2 . L o a di n t h e p r o g r a mC h a rR O Mt o
R A M .T h e nt y p ei n t h e s el i n e s : 1 7 1 6
1 7 0 1 : P R I N T1 7 0 2 : P R I N TI N A G E S C N ) ;1 7 0 31 7 0 41 7 0 5
P R I N T" 1 1 1 1 1 1 1 "P R I N TI M A G E S C N ) ;
P R I N T" I I I I I I I I B I I I I " ;
F O R D L V= 1 T O 6 0: N E X TD L V
1 0 0 0R E N« « * U P S I D E - D O W N R O N1 2 7 0 : P O K ED S + < 7 - B V T E > ,
P E E KC S R+ B Y T E )
7 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 96/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 97/258
C h a p t e r5
B i t
M a p p e dG r a p h i c s
1
=
1
\ j m \
r P W ii m i
" 1 i i 1 r
i
i
1 1 1 ■ ■ 1 1 11
M l 1 ■ ■ 1 1 1 1
HEEuS o f a r ,y o u ' v e e x p l o r e dt w oa s p e c t so f C o m
m o d o r e6 4 g r a p h i c s : s p r i t e sa n dc h a r a c t e r s .
B o t ht h e s eg r a p h i c se n t i t i e sl e ty o up l a yw i t h
c o l l e c t i o n so f p i x e l s .I s t h e r ea w a yt o d r a w
l a r g e ,d e t a i l e dp i c t u r e sb y c o n t r o l l i n gi n d i
v i d u a l p i x e l s ?Y o ub e t .I t ' sc a l l e db i tm a p p e d
g r a p h i c s .
I n t h i sc h a p t e r ,y o u ' l ll e a r nh o wt o s e tu p
b i tm a pm o d e .Y o u ' l lt u r ni n d i v i d u a lp i x e l so n
a n do f f ,a n ds e eh o wt o s e tt h e i rc o l o r .I ' l lg i v e
y o ua m a c h i n e - l a n g u a g er o u t i n et h a tw i l ls p e e d
u p o n et e d i o u sa s p e c to f b i tm a p p i n g .F i n a l l y ,
y o u ' l lb u i l da s i m p l ee l e c t r o n i cd o o d l i n gp r o
g r a m .
5 . 1 S I X T YF O U RT H O U S A N DP I X E L S
T i m et o d o a l i t t l ea r i t h m e t i c .C o n s i d e r
t h eC o m m o d o r e6 4 ' s t e x td i s p l a y .T h e r ea r e2 5
l i n e s ,e a c hw i t h4 0 c h a r a c t e r s .E a c hc h a r a c t e r
i s 8 p i x e l sw i d e ,a n d 8p i x e l sh i g h .T h a tg i v e s
8 x 4 0 , o r 3 2 0 ,p i x e l sa c r o s st h es c r e e na n d
8 x 2 5 ,o r 2 0 0 ,p i x e l sf r o mt o pt o b o t t o m .3 2 0
p i x e l sa c r o s st h es c r e e nm u l t i p l i e db y 2 0 0 f r
t o p t o b o t t o mg i v e sa g r a n dt o t a lo f 6 4 , 0 0
p i x e l s .
I n b i tm a pm o d e , y o uc o n t r o le a c ho n eo f
t h e s ep i x e l sw i t ha b i t .T h a t ' sw h e r et h en a m e
b i tm a p p i n gc o m e sf r o m .S i n c et h e r e a r e8 b i t s
s t o r e di n a b y t e ,y o uc a nd i v i d e6 4 , 0 0 0b y8 a n d
f i n dy o un e e d8 , 0 0 0b y t e st o c o n t r o la s c r e e
f i l l e dw i t h6 4 , 0 0 0p i x e l s .T h o s e8 , 0 0 0b y t e s
f o r mt h eb i tm a p .W h e r ec a ny o us t o r es u c ha
l a r g eb i t m a p ?
5 . 2 S T O R I N GT H EB I TM A P
B a c ki n S e c t i o n4 . 6 ,I m e n t i o n e dt h a tt h e
V I C - I I g r a p h i c sc h i pl o o k sa t 1 6 Ko fm e m o r ya t
a t i m e .8 0 0 0b y t e si s a l m o s t 8 K ,o r h a l fo f a
8 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 98/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 6 Kb l o c ko f m e m o r y .A n 8 0 0 0 - b y t eb i t m a p
c a nl i v ei n e i t h e rt h ef i r s to r s e c o n dh a l fo f t h e
c u r r e n tV I C - I I1 6 Kb a n k .
W h e ny o u ' r ew o r k i n gw i t hB A S I C ,V I C
n o r m a l l yl o o k sa t t h e1 6 Km e m o r yb l o c kf r o m
l o c a t i o n s0 t h r o u g h1 6 3 8 3 .T h ef i r s tf e w
t h o u s a n dm e m o r yl o c a t i o n si n t h a tb l o c ka r e
v i t a lr e a le s t a t ef o rB A S I C ;i t w o n ' tg i v et h e m
u pe a s i l y .S ot h eb i tm a pg o e si n t h es e c o n dh a l f
o f t h eb l o c k ,s t a r t i n ga t m e m o r yl o c a t i o n8 1 9 2 .
B i t3 o f t h e r e g i s t e ra t V I C + 2 4( m e m o r yl o c a
t i o n5 3 2 7 2 )c o n t r o l st h el o c a t i o no ft h eb i tm a p .
I f t h e r e ' sa 0 s t o r e dt h e r e ,i t g o e si n t h ef i r s t
h a l fo f t h e c u r r e n t1 6 KV I C - I Ib a n k . S t o r i n ga 1
a t b i t 3 o f V I C + 2 4p u t st h e b i t m a pi n t h e
s e c o n dh a l fo f t h e1 6 Kb a n k ,w h i c hi s w h a ti s
n o r m a l l yd o n ew h e nu s i n ga b i t m a pf r o m
B A S I C .
T h i sB A S I C c o m m a n dw i l ls t o r ea 0 a t b i t
3 o f V I C + 2 4( 5 3 2 7 2 ) :
P O K E 3 3 2 7 2 ,P E E K < 3 3 2 7 2 >A N D 2 4 7
A n dt h i sc o m m a n dw i l ls t o r ea 1 a tt h a t
p o s i t i o n :
P O K E3 3 2 7 2 ,P E E K C 3 3 2 7 2 )O R 8
5 . 3 T U R N I N GB I TM A PM O D EO NA N DO F F
B i t5 o f t h e r e g i s t e ra t V I C + 1 7( m e m o r y
l o c a t i o n5 3 2 6 5 )c o n t r o l sb i tm a pm o d e .S t o r i n g
a 1 a t t h a tl o c a t i o nt u r n sb i tm a p m o d eo n a n d
s t o r i n ga 0 t u r n si t o f f .H e r e ' st h eB A S I C c o m
m a n dt o t u r nb i tm a p p i n go n :
P O K E 3 3 2 6 3 ,P E E K < 5 3 2 6 3 >O R 3 2
A n dh e r e ' st h e c o m m a n dt h a tt u r n si t o f f ,
b r i n g i n gb a c ka n o r m a lt e x td i s p l a y :
P O K E 3 3 2 6 3 ,P E E K C 3 3 2 6 3 )A N D 2 2 3
5 . 4 A S H O R TD I S C L A I M E R
B A S I Ci s a f i n ec o m p u t e rl a n g u a g e ,w i t h
a d v a n t a g e sa n dd i s a d v a n t a g e s .P r o g r a m sc a n
b e p u t t o g e t h e ra n dd e b u g g e df a i r l yq u i c k l
b u t t h e yr u n s l o w l yw h e nc o m p a r e dt o p r o
g r a m si n m a n yo t h e rl a n g u a g e s .O fc o u r s e ,i n
m a n ya p p l i c a t i o n s ,B A S I C ' Ss p e e dp r o b l e
a r e n ' tn o t i c e a b l e ,a n di t s e a s eo f u s ei s a w e l
c o m er e l i e f .
T h es p e e dp r o b l e ms h o w su p i n p r o g r a
w h e r et h e r e ' s al o t o f f a i r l yr e p e t i t i v ea c
t i v i t i e s .B i tm a p p e dg r a p h i c s ,w h e r e6 4 , 0 0
b i t sa r e w a i t i n gf o ri n s t r u c t i o n s ,i s o n eo f t h e
a r e a sw h e r eB A S I C ' Sl e t h a r g ys h o w s .
H o wc a ny o u s p e e du p b i t m a p p e dp r o
g r a m sw r i t t e ni n B A S I C ?T h eb e s tt e c h n i q
i s i n t e l l i g e n tp r o g r a md e s i g n .F o re x a m p l
m a n yc a l c u l a t i o n sc a nb e d o n ej u s to n c e ,w i t h
t h er e s u l t ss t o r e di n d a t at a b l e s ,r a t h e rt h a n
b e i n g r e p e a t e do v e r a n do v e r .S k i l l sy o up i c k
u pt r y i n gt o a p p l yi n t e l l i g e n td e s i g n t e c h n
c a r r yo v e rt o o t h e rc o m p u t e rl a n g u a g e s .
A p o p u l a rt e c h n i q u e ,y e to n eI ' mn o tt o o
f o n do f , i n v o l v e ss q u a s h i n gc o d et o g e t h e
w i t ha s m a n ys t a t e m e n t so n a l i n ea s s p a c
p e r m i t s .I f i n d t h a tt h et i m es a v i n g sf r o mt h i s
t e c h n i q u ea r e m i n i m a l ,a n dt h ep r o b l e m o f
d e b u g g i n gs u c hp r o g r a m sa r e d e p r e s s i n
A t h i r da l t e r n a t i v ei n v o l v e st a k i n gc r i t i c
o p e r a t i o n sa n dc o d i n gt h e mi n m a c h i n el a n
g u a g e .S h o r to f r e w r i t i n ga n e n t i r ep r o g r a mi n
m a c h i n el a n g u a g e ,t h i st e c h n i q u el e a d st o
s o m eo f t h e b i g g e s tt i m es a v i n g sp o s s i b
Y o u ' l ls e ea ne x a m p l eo fi t l a t e ri n t h i sc h a p t e
5 . 5 O N EL A S TD E T A I L :C O L O R
B e f o r ew e g e t t o a n e x a m p l ep r o g r a
8 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 99/258
B i tM a p p e dG r a p h i
( U p p e rn i b b l e )
4 b i t s= 1 n i b b l e
* ^ V .
1 0 0
^ -1
" N8 b i t s=
1
^ ■
= 1 b y t e
( L o w e r
4 b i t s=
>
1
■
n i b b l e )
1 n i b b l e
s — - ^0 0
^F i g .5 - 1 .T h er e l a t i o n s h i p sb e t w e e nb i t s ,b y t e s ,a n dn i b b l e s .
B i tv a l u e *
B i t *
B i tv a l u e *
B i t *
B i tv a l u e *
B i t *
B i tv a l u e *
B i t *
8
0
8
0
8
1
8
1
S o m et y p i c a l
n i b b l e s
4
0
4
1
4
1
4
1
0
1
1
2
0
1
1
2
0
1
0
2
1
1
1
T h e i rd e c i m a l
v a l u e s
1 - 1
4 + 1- 5
8 + 4- 1 2
8 + 4 + 2 + 1- 1 5
F i g .5 - 2 .S o m et y p i c a ln i b b l e s ,w i t ht h ec o r r e s p o n d i n gb a s e1 0v a l u e s .
8 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 100/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
t h e r e ' so n el a s td e t a i lt o d i s c u s s :c o l o r .H o w
d o e sV I C - I Id e c i d eo n a c o l o rf o re a c ho f t h e
6 4 , 0 0 0p i x e l s ?
W i t hn o r m a lb i tm a p p e dg r a p h i c s , p i x e l s
i n e a c h8 - b y - 8 - p i x e l s e c t i o no f t h es c r e e n ,a n
a r e a t h es i z e o fa c h a r a c t e r ,h a v ea c h o i c eo f
t w oc o l o r s .T h ef a c tt h a tt h e s ea r e a s a r et h e
s a m es i z ea s a c h a r a c t e ri n t e x t d i s p l a ym o d e
l e a d st o a c l e v e rs t o r a g ei d e a .T h et w oc o l o r
c o d e sf o re a c h8 - b y - 8a r e aa r e s t o r e di n t h e
1 , 0 0 0l o c a t i o n s o fs c r e e nm e m o r y .T h a t ' s t
s a m ea r e au s e di n t e x t d i s p l a ym o d et o h o l
s c r e e nd i s p l a yc o d e s .
C o m p u t e rp e o p l el i k ec u t en a m e s . 8b i t s
i s k n o w na s a b y t e ,a n d4 b i t si s c a l l e da n i b b l
S e eF i g .5 - 1 .A n i b b l ec a ns t o r ev a l u e sb e
t w e e n0 a n d1 5 .S e eF i g .5 - 2 .I n b i tm a pm o d e
t h e u p p e r4 b i t s ,o r n i b b l e , o fe a c h s c r
A b y t eo f s c r e e n
m e m o r yh o l d i n g
t w oc o l o rc o d e s
f o ra n 8 - b y - 8a r e a
o f t h eb i t - m a p
T h e8 - b y - 8a r e a
o f t h eb i t - m a p
w h o s ec o l o ri s s e t
b y t h ea b o v e
b y t e
V a l u eo f
u p p e rn i b b l e
i s 2
V a l u eo f
l o w e rn i b b l e
i s 1
A /
0
0
0
1
1
1
1
0
0
0
1
1
1
1
1
1
0
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
0
1
1
1
1
1
1
0
0
0
1
1
1
1
0
0
F i g .5 - 3 .A ne x a m p l eo fa n8 - b y - 8 - b i ta r e ao ft h eb i tm a pw h o s ec o l o ri sc o n t r o l l e db ya b y t eo fs c r e e nm e m o r y .T h ev a l u ei nt h eb y t e ' su p p e rn i b b l ec o d e st h ec o l o rf o r b i t si nt h em a ps e tt o 1 , w h i l et h ev a l u ei nt h e l o w e rn i b b l ec o d e sf o rb i t si nt h em a ps e tt o0 .
8 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 101/258
B i tM a p p e dG r a p h i
m e m o r yl o c a t i o nh o l dt h e c o l o rc o d ef o ra n yb i t
s e t t o1 i n t h e8 - b y - 8 - b i ta r e ac o n t r o l l e db yt h a t
m e m o r yl o c a t i o n .T h el o w e r
n i b b l eo f t h e
s c r e e nm e m o r yl o c a t i o nh o l d st h ec o l o rc o d e
f o rb i t ss e tt o 0 . T a k ea l o o ka t F i g .5 - 3f o ra n
e x a m p l e . T h e r e ' sa l i t t l ef o r m u l at o h e l py o u
f i g u r eo u tw h a tn u m b e rt o p o k ei n t ot h i ss c r e e n
m e m o r yf o ra g i v e np a i ro f c o l o r s :t a k e t h e
c o l o rc o d ef o rt h e1 b i t s ,m u l t i p l yi t b y 1 6 ,a n d
t h e na d dt h e c o l o rc o d ef o r t h e 0 b i t s .F o r
e x a m p l e ,i f y o uw a n t e d1 b i t st o c o m eo u tr e d
( c o l o rc o d e2 ) , a n d0 b i t st o c o m eo u tb l a c k
( c o l o rc o d e0 ) , y o uw o u l d
c a l c u l a t e t h a t
( 2 x 1 6 ) + 0 = 3 2 , a n d y o u ' dp o k ei n t o
s c r e e nm e m o r y .
5 . 6 A NE X A M P L EO F
B I TM A P P E DG R A P H I C S
S o m u c hf o ry o u rp r e l i m i n a r yd o s eo f b i tm a p p i n gt h e o r y .I t ' s t i m ef o r s o m ea c t i o n
T y p ei n t h ep r o g r a ml i s t e di n F i g .5 - 4 ,R a n d o
D r a w .S a v ei t t o t a p eo r d i s ka n dt h e n r u ni t .
W a t c hi t f o ra c o u p l eo fm i n u t e s ,a n dt h e nl e ti t
r u n u n a t t e n d e df o r5 o r 1 0m i n u t e s .T a k ea l a s t
g o o dl o o k ,a n dp r e s st h es p a c e b a rt o e n di t .
5 . 6 . 1 S e t t i n gU pf o rt h eB i tM a p M o d
L e t ' se x a m i n et h ep r o g r a m ,a n ds e ei f y o u
c a nu n d e r s t a n dw h a t y o us a wh a p p e n o nt h e
s c r e e n .L i n e1 1 0 0u s e st h e c o m m a n dd i s -
l O O OR E M1 0 1 0 :
1 0 2 0 :
1 0 3 0R E M1 0 4 0 :
1 0 3 0 U I C1 0 6 0 B A S E
1 0 7 0B L O C1 0 0 0B S E T1 0 9 0 :
1 1 0 0 P O K E1 1 1 0 P O K E1 1 2 0 :
1 1 3 0 :
1 1 4 01
1 1 3 0 :
1 1 6 0f
1 1 7 01 1 8 01
1 1 9 01 2 0 0
t E M
' O R
I E X T
1 2 1 0R E M1 2 2 0R E M1 2 3 0
* * * R A N D O M D R A M* * »
* * S E 7 U P F O RB I T - M A PM O D E
= 3 3 2 4 8= 8 1 9 2 : R E M B I TM A P S T A R T
= U I C + 2 4: R E ML O C A T E SB I T M A P= U I C + 1 7R E MT U R N SO N B M M
B L O C ,P E E K ( B L O C )O R 8B S E T ,P E E K C B S E T >O R 3 2
* * C L E A RT H E B I T M A P
S P O T= B A S ET O B A S E+ 7 9 9 9P O K ES P O T ,0
S P O T
« * S E E DT H ER A N D O MF U N C T I O NW I T HA R A N D O MN U M B E R
1 2 4 0D U M M Y= R N D < - R N D C O > )1 2 5 01 2 6 0
8 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 102/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
t h en e wv e r s i o n ,a n dt h e nr u ni t . W h o o s h !Y o u
c a ns e ew h yh o tp r o g r a m m e r se v e n t u a l l y t u r n
t o m a c h i n el a n g u a g ew h e n e v e rr e a ls p e e d ' s
n e e d e d .
A b r i e fe x p l a n a t i o no f t h en e wl i n e s :l i n e s
1 1 4 6 - 1 1 5 6p o k et h e m a c h i n el a n g u a g es u b
r o u t i n ei n t oa p o r t i o no f m e m o r yt h a tm o s t
B A S I Cp r o g r a m sw o n ' tb u m pi n t o .L i n e s1 1 6 3 -
1 1 7 6c o n t a i n t h e2 6b y t e so f d a t at h a tm a k eu p
t h el i t t l ew h i z z e r .F i n a l l y , l i n e1 1 9 3c a l l st h e
n e w l yi n s t a l l e dm a c h i n el a n g u a g es u b r o u t i n e
i n t oa c t i o nw i t ha S Y Sc o m m a n d .I t ' sl i k ej u m p
i n gt o a B A S I Cs u b r o u t i n e .W h e nt h em a c h i n e
l a n g u a g er o u t i n ef i n i s h e s ,i t p o p sc o n t r o lb a c k
t o B A S I C ,a n dB A S I Cj u s tc a r r i e so n w i t ht h e
n e x ts t a t e m e n t .
Y o uc a nu s et h i sr o u t i n ei n a n yb i t m a p
p r o g r a mt h a tu s e sl o c a t i o n s8 1 9 2 - 1 6 1 9 1a s t h e
b i tm a pa r e a .I f y o u w a n tt o c l e a ra b i tm a pt h a t
s t a r t sa t a n o t h e ra r e a , j u s td i v i d e t h es t a r t i
a d d r e s so f t h eb i tm a pb y2 5 6a n dt y p et h en e w
v a l u ei n p l a c eo f t h e3 2a t t h ee n do f l i n e1 1 6 3
5 . 8 L O C A T I N GA P I X E L ' SB Y T EA N DB I T
L e t ' s l e a r nh o wt o g a i nm o r ec o n t r o lo v e
i n d i v i d u a lp i x e l si n b i tm a pm o d e .Y o un e e dt o
f i n da w a yt o l o c a t et h eb y t ea n db i tt h a tc o n t r
a n i n d i v i d u a lp i x e l .
F i r s t ,y o u n e e da m o d e lo f t h e s c r e e
d i s p l a y .T a k ea l o o ka t F i g . 5 - 6 .E a c hp i x e lh a s
a h o r i z o n t a lp o s i t i o n ,H , w i t hv a l u e sf r o m0
t h r o u g h3 1 9 .E a c hp i x e la l s oh a s a v e r t i c
1 8 0 0
1 1 4 0
1 1 4 3
1 1 4 6
1 1 3 0
1 1 3 31 1 3 6
1 1 6 0
1 1 6 3
1 1 6 6
1 1 7 0
1 1 7 31 1 7 6
1 1 8 0
1 1 8 3
1 1 8 61 1 9 8
1 1 9 3
1 1 9 6
R E M
H E M
F O R:
:
N E X T
D A T A
D A T A
D A T A
D A T A
D A T A:
;
R E M:
s v s
* « * F A S TR A N D O MD R A M * * *
* * L O A DF A S TM / L B I T M A PC L E f t K
N = 2 1 2 4 0T O 2 1 2 7 3
R E A D M L D T A
P O K EN , M L D T AN
1 6 9 , 0 , 1 3 3 , 2 5 1 , 1 6 9 , 3 2
1 3 3 , 2 3 2 , 1 6 2 ,3 2 , 1 6 0 , 0
1 3 2 , 1 4 3 , 2 3 1 , 2 0 0 ,2 0 8 , 2 5 1
2 0 2 , 2 4 0 , 4 , 2 3 0 , 2 5 2 ,2 0 8
2 4 4 , 9 6
* » C L E A RT H E B I T M A P
2 1 2 4 0
F i g .5 - 5 .C h a n g e sa n da d d i t i o n st h a t t u r nR a n d o mD r a wi n t oF a s tR a n d o mD r a w .
8 8
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 103/258
B i tM a p p e dG r a p h i
H = 0H o r i z o n t a l
H = 3 1 9
— ► != o -
V e r t i c a l
= 1 9 9 . . T . . . . \
F i g .5 - 6 .Y o uc a ng i v ee a c hp i x e lo nt h eb i tm a pa h o r i z o n t a l p o s i t i o nf r o m0 t h r o u g h3 1 9 a n da v e r t i c a lp o s i t i o nf r o m0 t h r o u g
1 9 9 .
p o s i t i o n ,V , w i t hv a l u e sf r o m0 t h r o u g h1 9 9 .
F o re x a m p l e ,a p i x e li n t h eu p p e rl e f tc o r n e r
h a sH = 0 a n dV = 0 . A p i x e li n t h e l o w e r
r i g h tc o r n e r h a sH = 3 1 9a n dV = 1 9 9 .
I t w o u l db e w o n d e r f u li f t h e b y t e si n t h e
b i t m a ph a da s i m p l ec o r r e s p o n d e n c et o F i g .
5 - 6 .U n f o r t u n a t e l y ,t h a t ' sn o t t h ec a s e .T h eb y t e si n t h eb i tm a pc o r r e s p o n dt o t h es c r e e ni n
a p a t t e r nt h a ts u g g e s t sb i t m a p p i n g ' sc l o s e
k i n s h i pt o t e x td i s p l a y .
T a k ea l o o ka t F i g .5 - 7 .I t s h o w sh o wt h e
b i tm a pb y t e sa r es e t u p .G r o u p so f8 c o n s e c u
t i v eb y t e sf o r ma b l o c kt h es i z eo f a c h a r a c t e r .
S i m i l a rt o t h et e x ts c r e e n ,t h e s e8 - b y t e - h i g h
a r e a s a r ea r r a n g e di n 4 0c o l u m n sa n d2 5 r o w s .
T r y i n gt o d e t e r m i n ew h i c hb i t o f w h i c hb y t e
c o n t r o l s ap i x e l ,g i v e nt h a tp i x e l ' sh o r i z o n t a l
a n dv e r t i c a l p o s i t i o n ,l o o k sl i k ea n a r d u o u s
t a s k .
I t ' s a c t u a l l yn o t t o o t o u g h .I f y o ug o
s l o w l y ,a n dk e e pr e f e r r i n gb a c kt o F i g s .5 - 6
a n d5 - 7 ,t h ef o l l o w i n gf o r m u l ad e r i v a t i o n sm a y
m a k es e n s e .R e m e m b e r ,H a n dV r e f e rt o a
p i x e l ' sh o r i z o n t a la n dv e r t i c a lp o s i t i o n s
s p e c t i v e l y .
L e t ' ss t a r tw i t hv e r t i c a li n f o r m a t i
S i n c ea r o wi s 8 v e r t i c a lp o s i t i o n sh i g h ,t h i s
f o r m u l ag i v e su s t h er o wa p i x e l ' si n :
R O M= I N T C U / 8 )
T h e r ea r e3 2 0b y t e sp e rr o w , s oa r o w ' so f f s e
i n b y t e sf r o mt h eb a s eo f t h eb i tm a pi s :
R B F= R O N* 3 2 0
T h eA N Df u n c t i o ni s a c o n v e n i e n tw a yo f
f i n d i n gr e m a i n d e r sw h e ny o u ' r ed i v i d i n gb y a
p o w e ro f 2 : S i m p l yA N Dt h eo r i g i n a ln u m b e
w i t ht h ed i v i s o rm i n u s1 . F i n d i n gt h er e m a i
d e ro f t h ev e r t i c a lp o s i t i o nd i v i d e db y8 w i l lt e l ly o uw h i c ho f t h e8 l i n e si n a r o wy o uw a n t :
L I N E C U A N DT )
Y o uc a nc o m b i n et h e s er e s u l t sa n df o r ma t o t a l
v e r t i c a lb y t eo f f s e tf o ry o u rp i x e l :
8 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 104/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
u b f = i n t c u / 8 )* 3 2 a♦ < u a n d7 > p o s i t i o n sp e rc o l u m n , s ot h e c o l u m nc a nb e
f i g u r e dt h i sw a y :N o wy o u n e e dt o w o r kw i t ht h ep i x e l ' s
h o r i z o n t a lp o s i t i o n .T h e r ea r e 8 h o r i z o n t a lc o l u h n■ ■ i n t < h / 8 >
R o w
R o w
- o l u m n0
B y t e O
B y t e1
B y t e2
B y t e3
B y t e4
B y t e5
B y t e6
B y t e7
B y t e3 2 0
B y t e 3 2 1
B y t e3 2 2
B y t e3 2 3
B y t e3 2 4
B y t e3 2 5
B y t e3 2 6
B y t e3 2 7
C o l u m n1
B y t e
B y t e
B y t e
B y t e
B y t e
B y t e
B y t e
B y t e
B y t e
B y t e
B y t e
B y t e
B y t e
B y t e
B y t e
B y t e
8
9
1 0
1 1
1 2
1 3
1 4
1 5
3 2 8
3 2 9
3 3 0
3 3 1
3 3 2
3 3 3
3 3 4
3 3 5
C o l u m n2A
B y t e1 6
B y t e1 7
B y t e1 8
B y t e1 9
B y t e2 0
B y t e2 1
B y t e2 2
B y t e2 3
B y t e3 3 6
B y t e3 3 7
B y t e3 3 8
B y t e3 3 9
B y t e3 4 0
B y t e 3 4 1
B y t e3 4 2
B y t e3 4 3
R o w
2 4 <
B y t e7 6 8 0
B y t e 7 6 8 1
B y t e7 6 8 2
B y t e7 6 8 3
B y t e7 6 8 4B y t e7 6 8 5
B y t e7 6 8 6
^ B y t e7 6 8 7
B y t e7 6 8 8
B y t e7 6 8 9
B y t e7 6 9 0
B y t e7 6 9 1
B y t e7 6 9 2B y t e7 6 9 3
B y t e7 6 9 4
B y t e7 6 9 5
B y t e7 6 9 6
B y t e7 6 9 7
B y t e7 6 9 8
B y t e7 6 9 9
B y t e7 7 0 0B y t e7 7 0 1
B y t e7 7 0 2
B y t e7 7 0 3
C o l u m n3 9
B y t e3 1 2
B y t e3 1 3
B y t e3 1 4
B y t e3 1 5
B y t e3 1 6
B y t e3 1 7B y t e3 1 8
B y t e3 1 9
B y t e6 3 2
B y t e6 3 3
B y t e6 3 4
B y t e6 3 5
B y t e6 3 6
B y t e6 3 7
B y t e6 3 8
B y t e6 3 9
B y t e7 9 9 2
B y t e7 9 9 3
B y t e7 9 9 4
B y t e7 9 9 5
B y t e7 9 9 6B y t e7 9 9 7
B y t e7 9 9 8
B y t e7 9 9 9
F i g .5 - 7 .H o wt h eb i tm a pb y t e s a r es e t u p .N o t i c e t h e c l o s er e l a t i o n s h i p t ot h eC o m m o d o r e6 4 ' st e x td i s p l a y .
9 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 105/258
N o t i c eh o wt h e r e ' sa j u m po f 8 b y t e sa s y o u
m o v ef r o m c o l u m nt o c o l u m n .N o wf i g u r ey o u r
t o t a lh o r i z o n t a lb y t eo f f s e tf a c t o r :
H B F I N T C H / B )* 8
N o wy o uc a na d dt h ev e r t i c a la n dh o r i z o n t a l
b y t eo f f s e t s t ot h es t a r to f t h eb i tm a pt o g e tt o
y o u rt a r g e tb y t e :
B Y T E= B A S E+ U B F+ H B F
Y o u ' v eg o tt h eb y t e .Y o un e e dt o f i n dt h e
b i t .T h e r ea r e8 p i x e l s t oa c o l u m n .Y o un e e dt o
k n o wh o wm a n yp i x e l sa r e l e f ta f t e ry o u ' v e
g o n et h r o u g ha l lt h ef u l lc o l u m n s .A g a i n ,y o u
u s ea n A N Do p e r a t i o nt o f i n da r e m a i n d e r :
P X L= < H A N D7 >
S i n c eb i t si n a b y t ea r en u m b e r e df r o mr i g h tt o
l e f t ,a n dy o u rh o r i z o n t a lp i x e lp o s i t i o n sg o
f r o ml e f tt o r i g h t ,y o uh a v et o a d j u s tt h i sw i t ha
l i t t l er e v e r s a lo p e r a t i o n :
B I T = 7 - < H A N D7 )
S on o wy o u ' v eg o tf o r m u l a st o f i n da b i tm a p p e d
p i x e l ' sb y t ea n db i t .L e t ' sd o s o m e t h i n gw i t h
t h e m .
B i tM a p p e dG r a p h i
5 . 9 T U R N I N GP I X E L SO N A N DO F F
O n c ey o u ' v ef o u n da p i x e l ' sb y t ea n db i t
w i t ht h ef o r m u l a sd e v e l o p e di n S e c t i o n5 . 8 ,t h ef o l l o w i n gs t a t e m e n tw i l ls e t t h eb i t t o 1 :
P O K EB Y T E ,P E E K C B Y T E >O R < 2 f B I T >
R e m e m b e r ,t h a tw i l lt e l lt h ep i x e l t ot a k eo n
t h ec o l o rw h o s ec o d ei s i n t h eu p p e rn i b b l eo fa
b y t eo f s c r e e nm e m o r y .
T h i sc o m m a n dw i l ls e ta p i x e l ' sb i tt o 0 :
P O K EB Y T E ,P E E K C B Y T E >A N D C 2 S S- 2 f B I 7 >
T h ep i x e lw i l lt h e nt a k eo n t h ec o l o rw h o s
c o d ei s i n t h el o w e rn i b b l eo f t h e a p p r o p
s c r e e nm e m o r yb y t e .
5 . 1 0 T H EE L E C T R O N I CD O O D L E R
N o wt h a ty o uc a nt u r ni n d i v i d u a lp i x e l so n
a n do f f ,l e t ' sp l a yw i t h a ne l e c t r o n i cd o o d l i
p r o g r a m .F i g u r e5 - 8i s a l i s t i n go f t h ep r o g r
S k e t c h .T y p ei t i n , s a v ei t , a n dt h e n r u ni t .
A d o t - s i z e dp e nw i l la p p e a ri n t h ec e n t e
o f t h es c r e e n .Y o uc a nm o v et h ep e ni n a n yo f
1 0 6 01 0 1 01 0 2 01 0 3 01 0 4 0l o s e1 0 6 0
1 0 7 01 0 8 01 0 9 01 1 0 01 1 1 01 1 2 01 1 3 0
R E H*
r e m *:
P R I N TP O K E
B A S EU I C =B L O CB S E T
z
* * S K E T C H
* I N I T I A L
6 9 0 , 1 2 8
= 8 1 9 23 3 2 4 8
= U I C + 2 4= U I C + 1 7
S E T - U P
: R E H: R E H
: R E M: R E H: R E H: R E H
C L E A RS C R E E NA L LK E V S R E P E A T
B I T M A P S T A R TG R A P H I C SC H I PS E T SB A S ES E T SB M M
9 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 106/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 1 4 8u s e1 1 6 0
1 1 7 01 1 8 01 1 9 01 2 0 01 2 1 01 2 2 01 2 3 01 2 4 01 2 5 01 2 6 01 2 7 01 2 8 01 2 9 0
1 3 0 01 3 1 01 3 2 01 3 3 01 3 4 01 3 3 01 3 6 01 3 7 01 3 8 01 3 9 01 4 0 01 4 1 01 4 2 01 4 3 01 4 4 01 4 3 01 4 6 01 4 7 01 4 8 01 4 9 01 3 0 01 3 1 01 3 2 01 3 3 01 3 4 0
1 3 3 01 3 6 81 3 7 01 3 8 81 3 9 81 6 0 81 6 1 8
R E M* » L O A DS P E E D YH / L C L E A R
F O RN = 2 1 2 4 8T O 2 1 2 7 3
: R E A DM L D T A: P O K EN , M L D T AN E X TN
D A T A1 6 9 , 0 , 1 3 3 , 2 3 1 , 1 6 9 ,3 2D A T A1 3 3 , 2 3 2 , 1 6 2 ,3 2 , 1 6 0 , 0D A T A1 3 2 , 1 4 3 ,2 3 1 , 2 0 0 , 2 0 8 ,2 3 1D A T A2 8 2 , 2 4 8 ,4 , 2 3 8 , 2 3 2 , 2 8 8D A T A2 4 4 , 9 6
R E M* * S E T F O RB I T - M A PM O D E ,C L E A RR E M B I T M A P ,S E T C O L O R C O M B O
P O K EB L O C ,P E E K < B L O C >O R 8P O K EB S E T ,P E E K C B S E T )O R 3 2
S Y S 2 1 2 4 8 : R E MM / L B I TM A PC L E A R
F 8 R H U E M A P= 1 8 2 4T O 2 0 2 3P O K EH U E M A P ,3
N E X TH U E M A P
R E M« * I N I T I A L I Z EH A N DU
H = 1 6 0 : U = 1 0 0
R E M* * D R A UT H E D O TA T H , U
U B F= I N T C U / 8 )* 3 2 8 + C U A N D7 )H B F= I N T < H / 8 >* 8B I T ~ 7 - ( H A N D7 )B Y T E= B A S E+ U B F+ H B FP O K EB Y T E ,P E E K C B Y T E >O R ( 2 f B I T )
R E M 6 E T K E Y P R E S S C O M M A N D
6 E T K P $I F K P $ ■ " " T H E N 1 3 7 8
R E M« * D E A L W I T HK E Y P R E S S
9 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 107/258
B i tM a p p e dG r a p h i
1 6 2 81 6 3 81 6 4 8
J S K A1 6 3 81 6 6 61 6 7 61 6 8 81 6 9 81 7 8 81 7 1 81 7 2 81 7 3 61 7 4 81 7 3 8
1 7 6 81 7 7 81 7 8 61 7 9 61 8 8 81 8 1 61 8 2 61 8 3 81 8 4 81 8 3 61 8 6 61 8 7 81 8 8 8
1 8 9 91 9 8 8
:
I FI F
I FI FI FI FI FI FI FI F:
I F
I FI FI F:
K P SK P $
K P $K P $K P $K P $K P $K P $K P $K P $
U <
u yH <H >
= " " T H E N= " 9 " T H E N
= " U " T H E N= " E " T H E N■ " D " T H E N■ " C " T H E N■ " X " T H E N■ " Z " T H E N= " A " T H E N■ " Q " T H E N
8 T H E NU
1 9 9 T H E NU8 T H E NH3 1 9 T H E NH
6 0 T 0 1 4 8 8■
:
R E M* »:
W R A PI T U P
1 8 3 8S V S 2 1 2 4 8:
6 0 T 0 1 4 3 0
H = H + iH = H + iH = H + i
H = H - i:H = H - iH = H - i:
= 8
= 1 9 9= 9= 3 1 9
U = U - 1: U = U - 1
: U = U + i
U = U + 1: U = U + 1
: U — U ~ l
P O K EB S E T ,P E E K < B 8 E T >A N D 2 2 3P O K EB L O C , 2 1
P R I N T'
:
E N D
• L " ;
F i g .5 - 8 . L i s t i n go f t h ep r o g r a mS k e t c h .
t h ee i g h tc o m p a s sd i r e c t i o n sb yp r e s s i n gW ,E ,
D , C , X , Z , A , o rQ . F i g u r e5 - 9s h o w st h e
l a y o u to ft h e s ek e y s ,a n dt h ed i r e c t i o ne a c ho n e
w i l ls e n dt h e p e n .P r e s s i n gt h eS k e ye r a s e s
y o u r d r a w i n g a n dp l a c e s t h ep e nb a c ki n t h e
c e n t e ro f t h es c r e e n — t h e r e ' sn o n e e dt o t u r n
y o u rT Vs e tu p s i d ed o w na n ds h a k ei t .
W h e ny o uf i n i s hp l a y i n g ,p r e s st h e
s p a c e b a rt o s t o p t h ep r o g r a m .T h e ns e t t l e
d o w nf o ra l i t t l ee x p l a n a t i o no f h o wi t w o r k s .
5 . 1 0 . 1 S e t t i n gU pt h eS k e t c hP a d
L i n e s1 0 0 0 - 1 3 4 0s h o u l dl o o kp r e t t
f a m i l i a r .Y o uc l e a rt h es c r e e n a n dt h e ns e tt h e
k e y b o a r ds o a l lt h ek e y sw i l lr e p e a tw h e nh e l d
d o w nl o n ge n o u g h . L i n e s1 1 6 0 - 1 1 9 0l o a dt h e
f a s tm a c h i n el a n g u a g er o u t i n et o c l e a rt h eb i t
m a p .T h e nl i n e s1 3 1 0 - 1 3 4 0s e tu p b i tm a p p i
a n d u s et h em a c h i n el a n g u a g ec l e a r i n gr o u t i n
L i n e s1 3 6 0 - 1 3 8 0f i l ls c r e e nm e m o r yw i t
a c o l o rs c h e m ef o rt h eb i tm a p .B i t ss e t t o0 w i l
9 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 108/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
b e c y a n ,a n db i t ss e t t o1 w i l lb e b l a c k .S i n c e
l i n e1 3 4 0f i l l e dt h eb i tm a pw i t hO ' s ,t h es c r e e n
t u r n sc y a n .
Y o u ' l ls t o r et h ep e n ' s c u r r e n th o r i z o n t a l
a n dv e r t i c a lp o s i t i o n si n t h ev a r i a b l e sH a n dV .
L i n e1 4 3 0s e t st h e s ev a r i a b l e ss o t h ep e ni s
c e n t e r e do n t h e s c r e e n .W h e n e v e rt h eS k e y
g e t sp r e s s e d ,t h ep r o g r a mw i l lp o pb a c ku p t o
t h i sl i n e .
5 . 1 0 . 2 D r a w i n g
L i n e s1 4 8 0 - 1 5 2 0 u s et h e f o r m u l a sd e
v e l o p e di n S e c t i o n s5 . 8a n d5 . 9t o t u r no n t h e
b i tc o r r e s p o n d i n gt o t h ec u r r e n tp e np o s i t i o n
P u t t i n ga 1 i n t h a tb i tc a u s e st h ep i x e la t t h e
p e np o s i t i o nt o t u r nb l a c k .
5 . 1 0 . 3 G e t t i n ga n dF o l l o w i n g O r d e
L i n e s1 5 7 0 - 1 5 8 0w a i tf o rt h es k e t c h e rt o
p r e s sa k e y .T h e nl i n e s1 6 3 0 - 1 8 0 0f i g u r eo u t
w h a tt o d o w i t ht h ek e y p r e s s .A s p a c es e n d s
t h ep r o g r a mt o l i n e1 8 5 0 ,w h e r ei t c l e a n su p
s h o pa n de n d s .P r e s s i n gS c l e a r st h eb i tm a p
a n dt h e np u t st h ep e nb a c ki n t h ec e n t e rb y
j u m p i n gb a c kt o l i n e1 4 3 0 .
L i n e s1 6 6 0 - 1 7 3 0c h a n g et h e p e n ' s p o
n g .5 - 9 .L a y o u to f t h ec o n t r o lk e y su s e di n S k e t c h ,a n dt h ed i r e c t i o ne a c ho n ew i l ls e n dt h e p e n .
9 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 109/258
B i tM a p p e dG r a p h i
t i o ni f o n eo ft h e e i g h tm o v e m e n tk e y sh a sb e e n
p r e s s e d . R e f e r r i n gt o F i g s .5 - 6a n d5 - 9s h o u l d
h e l py o uu n d e r s t a n dt h e s el i n e s .
L i n e s1 7 5 0 - 1 7 8 0 c h e c kt o m a k es u r et h e
p e nd o e s n ' tf a l lo f ft h e s c r e e n .I f a k e y p r e s s
t r i e st o p u s ht h ep e no f f ,t h e s ef o u rl i n e sp u l li t
b a c ko n . F i n a l l y , l i n e1 8 0 0l o o p so n b a c kt o
d r a wt h ep e n ' sd o to n t h es c r e e n .
N o t i c et h a ta n yk e y sn o t i n c l u d e di n t h e
p r o g r a m ' sc o m m a n ds e tw i l lb e i g n o r e d . A l s o ,
t h e c l e a ns t r u c t u r eo f t h i ss e c t i o nm a k e si t
e a s yt o a d dn e wc o m m a n d s .
L i n e s1 8 5 0 - 1 9 0 0a r e a s t r a i g h t f o r w a r d
e n dt o t h ep r o g r a m .T h e yr e s e tt h e d i s p l a yt o
t e x tm o d e ,a n dc l e a rt h e s c r e e n .I t ' st h es a m e
w a yy o u e n d e dR a n d o mD r a w .
T a k es o m et i m et o p l a yw i t hS k e t c h .S e e
w h a ti n t e r e s t i n g f e a t u r e sy o uc a na d dt o i t .
5 . 1 1 C H A P T E RS U M M A R Y
T h i sc h a p t e r h a s i n t r o d u c e ds o m eo f t h e
t e c h n i q u e so f b i t m a p p e dg r a p h i c s .M o r e
s p e c i f i c a l l y ,y o us h o u l dn o wk n o w :
* H o wt o r e p r e s e n t6 4 , 0 0 0s c r e e np i x e l s
i n a n 8 , 0 0 0 - b y t eb i tm a p
* W h e r ey o uu s u a l l y s t o r e t h eb i t m a p
w h e nw o r k i n gi n B A S I C ,a n dh o wt o t e l l
V I C - I It h el o c a t i o n
* H o wt o t u r nb i tm a p m o d eo n a n do f fv i a
t h er e g i s t e ra t V I C + 1 7
* W h yr e a l l yf a s tb i t m a p p e dg r a p h i c s
w o r ko f t e nr e q u i r e s t h eu s eo f m a c h i n el a n g u a g er o u t i n e s
* H o wt h es c r e e nm e m o r yi s u s e dt o p r o
v i d ec o l o ri n f o r m a t i o nf o rp i x e l si n b i t
m a p p e dm o d e
* S o m eo f t h ew a y s r a n d o mn u m b e r sc a n
b e u s e dt o c r e a t eb i tm a p p e dd e s i g n
* H o wt o f i n dt h eb y t ea n db i tt h a tc o n t r
a n i n d i v i d u a lp i x e li n b i tm a pm o d e
* H o wt o s e ta n i n d i v i d u a l p i x e l e i t h e
o f t h et w oc o l o r sa v a i l a b l ei n i t sb l o c k
A t t h i sp o i n t ,y o u ' v eb e e ni n t r o d u c et o
t h e C o m m o d o r e ' st h r e em a i ng r a p h i
c a p a b i l i t i e s : s p r i t e s ,c h a r a c t e rg r a p h i c s ,a n d
b i tm a p p i n g .I n t h en e x tc h a p t e r ,y o u ' l ll o o ka t
s o m eo d d s a n d e n d sf r o mt h eC o m m o d o r6 4 ' s
s e to f g r a p h i c st r i c k s .
5 . 1 2 E X E R C I S E S
5 . 1 2 . 1 S e l fT e s t
A n s w e r sc a nb e f o u n di n S e c t i o n 5 .
1 . ( 5 . 1 )B i t m a p p i n gl e t s y o u c o n t r
s c r e e np i x e l sw i t ha n
- b y t eb i tm a p .
2 . ( 5 . 2 )W h e nu s i n gB A S I C ,t h eb i tm a pi s
u s u a l l y l o c a t e di n t h e h a l fo ft h ef i r s t1 6 Ko f m e m o r y .
3 . ( 5 . 3 )B i t5 o f t h e r e g i s t e ra t
( m e m o r yl o c a t i o n5 3 2 6 5 )t u r n sb i t m a p
m o d eo n a n do f f .
4 . ( 5 . 4 )W h ya r em a c h i n el a n g u a g er o u t i n
o f t e nu s e dw i t hb i t m a p p e dg r a p h i c s ?
5 . ( 5 . 5 )I n b i tm a pm o d e ,t h et w on i b b l e so fa
b y t eo f s c r e e nm e m o r ya r e u s e dt o
6 . ( 5 . 6 . 3 )W h i c hl i n e so f R a n d o m D r s e tt h ec o l o r sf o rt h eb i tm a p ?
7 . ( 5 . 7 )T h e c o m m a n dl e t sy o u
j u m pt o a m a c h i n el a n g u a g e s u b
f r o mB A S I C .
8 . ( 5 . 8 )T h er e l a t i o n s h i pb e t w e e nb y t e si n
9 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 110/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
t h eb i t m a pa n dp i x e l so n t h e s c r e e ni s 4 .
5 .
9 . ( 5 . 9 )S e t t i n g ab i ti n t h eb i tm a pt o 1 g i v e s
t h e r e l a t e dp i x e lt h e c o l o rt h a t ' si n t h e 6 .
n i b b l eo f a b y t ei n s c r e e n7 .
m e m o r y . 8 .
1 0 . ( 5 . 1 0 )W h a tw o u l dh a p p e nt o t h ep r o g r a m9 .
S k e t c hi f l i n e1 6 4 0j u m p e dt o l i n e1 4 8 01 0 .
r a t h e r t h a nt o l i n e1 4 3 0 ?
5 . 1 2 . 2 P r o g r a m m i n gE x e r c i s e s
1 . C h a n g et h ep r o g r a mR a n d o mD r a ws oi t d r a w sc o l o r e dv e r t i c a ll i n e sa t r a n
d o mo n a b l a c k s c r e e n .
2 . C h a n g eS k e t c hs o t h a ti t m a k e sl i n e s
t h a ta r et w i c ea s w i d e .W a r n i n g :t h e
p r o g r a mw i l lp r o b a b l yr u n s l o w l y .
T h i si s a c a s ew h e r ea n e wp r o g r a m
d e s i g na n d / o rm a c h i n el a n g u a g er o u
t i n e sw o u l db e w a r r a n t e da f t e ry o ug e t
t h es l o wv e r s i o nr u n n i n g .
3 . T h i so n em a ys e e mt o u g h ,b u ti t ' sr ea l l yn o t t o ob a d .Y o uc a nu s es p r i t e s
w i t hb i t m a pm o d e .D e s i g na s p r i t e
t h a tl o o k sl i k ea p e n ,p e n c i l ,o r b r u s h .
T h e nc h a n g et h ep r o g r a mS k e t c hs o i t
l o o k sa s i f y o u rs p r i t ei s d r a w i n gt h e
l i n e s .
5 . 1 2 . 3 A n s w e r st o S e l fT e s t
A n s w e r sm a yv a r y ,e s p e c i a l l yw i t hq u e s
t i o n s# 4 a n d# 8 .
1 . 6 4 , 0 0 0 ;8 , 0 0 0
2 . S e c o n d
3 . V I C + 1 7
S p e e d
S e tc o l o r sf o ra n 8 - b y - 8p i x e la r e ao f t h e
s c r e e nd i s p l a y
L i n e s1 3 0 0 - 1 3 2 0
S Y S
A r c a n ea n ds t r a n g e ,y e to f t e nu s e f u l
U p p e r
W h e na d r a w i n gw a se r a s e d ,t h e p e n
w o u l ds t a r tu pw h e r ei t l e f to f f ,r a t h e rt h a n
a t t h ec e n t e ro f t h es c r e e n
5 . 1 2 . 4 P o s s i b l e S o l u t i o n s
t o P r o g r a m m i n gE x e r c i s e s
O n c ea g a i n ,t h e s es o l u t i o n sa r eb a s e do n
a d d i n go r c h a n g i n gl i n e s i nt h ep r o g r a m sm e nt i o n e di n t h ee x e r c i s e s .
1 . L o a di n t h ep r o g r a mR a n d o mD r a w
T h e nt y p ei n t h e s el i n e s :
l e e e r e h * * *u e r t i c a lr a n d o m d r a h« m «1 3 1 0: P O K ES P O T , I N TC R N D C 1 > * 1 6 >* 1 6
1 3 8 0S P O T= I N T < R N D < l > * i e e O )* 8 ♦ B A S E1 3 8 S P A T T E R N= 3 61 3 9 6:
1 3 9 3 F O R B Y T E= 6 T O 7
1 4 6 6: P O K ES P O T+ B Y T E ,P A T T E R N1 4 6 3 N E X T B Y T E
2 . L o a di n t h e p r o g r a mS k e t c h .T h e n
t y p ei n t h e s el i n e s :
1 6 6 8R E N * « *F A T S K E T C H
1 4 7 3 F O RX a H T O < H ♦ j
1 4 7 6
1 4 8 0 :
1 4 9 6
1 3 8 6
1 3 1 61 3 2 8 :
1 3 2 3 :
: F O R
: U B F
H B F
: B I T
B Y T EP O K E
N E X T1 3 2 6N E X TX
V = U
= I N T
= I N T
= 7 -
T O < U +
C Y / 8 >*
< X / 8 >*
1 >
3 2 6 +
C Y A N D7 )
8
< X A N D7 )
= B A S E+ U B FB Y T E ,
V
♦ H B F
, P E E K C B Y T E >6 R
< 2 f B I T )
9 6
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 111/258
B i tM a p p e dG r a p h
1 T 6 8]
1 T 8 81
I F U >
I F H >1 8 8 T H E N3 1 8 T H E N
1 8 8 8 6 0 T 0 1 4 T 3
3 . L o a dt y p e
1 6 8 8R E H« *1 2 9 1
1 2 9 21 2 9 31
1 2 9 4■
1 2 9 911 2 9 6 :
1 2 9 T:
1 2 9 811 2 9 8 :
I E H« «
B 0 RN
u ■ -
H -
= 1 3 8
= 3 1 8
i n t h e p r o g r a mS k e t c h .i n t h e s el i n e s :
• P E N C I L
L O A DT H E
■ 8 8 6 T 6R E A DS P D T A
S K E T C H* **
S P R I T ED A T A
8 9 8
P O K EN , S P D T AI E X TN
1 2 6 8 D A T A1 2 6 1D A T A1 2 6 2D A T A1 2 6 3 D A T A1 2 6 4D A T A1 2 6 9 D A T A1 2 6 6 D A T A1 2 6 T D A T A1 2 6 8 D A T A1 2 6 8 D A T A1
6 , 1 ,
6 ,
6 ,
6 ,
i J
6 ,
1 3 ,
1 6 ,
4 82 t !
6 ,
, 2 4 ,
, 8 6 ,
, 1 2 8 ,6 ,
, 1 2 9 ,
, 1 8 2 ,
, 4 8 ,
, 1 2 8 ,
2 2 4 ,
2 4 ,
6 ,
6 ,
2 4 ,
8 6 ,
1 2 8 ,
6 ,
8 ,
6 ,
6 ,
8 ,
6 ,
6 ,
3 ,
T ,
, 2 4 ,
, 1 6 ,
, 9 6 ,
> 1 2 6 ,
3 *
1 2 ,4 8 ,
1 8 2 ,
6 ,
8 ,
1 8 9 ,
6 8 ,
2 4 8 ,
8 ,
T h e n
4 81 2
2
1 2
4 8
1 8 26
6
66
1 2 T 61 2 T 11 2 T 21 3 8 1
1 3 8 21 3 8 31 3 8 4
1 3 9 31 3 3 61 3 9 7
1 3 3 81 3 3 3
1 4 8 81 4 8 11 4 8 21 9 3 1
1 9 3 21 9 3 3
1 3 3 41 S 3 S
1 9 3 61 S 3 T
1 3 3 81 3 3 9
1 8 T 1
1 8 T 2
1 8 T 3
D A T A:
:
R E H*
P D K E
P O K E
P O K EP O K EP O K EP O K EP O K E
:
:
R E H*i
S H =
R S =
P O K E
P O K EP O K E
;
:
P O K E
P O K E
P O K E
1 8 2 ,
* » S E T
2 6 4 8 ,
U I C + 3 9
U I C + 2 9U I C + 2 3
0 ,
T H E
1 4
, 8
, 1
, 1U I C , 1 8 4U I C + 1 ,
U I C + 2 1
H » M O U E
H + 2 4
C S H>
1 8 8
, 1
T H E
8
S P R I T E C O N T R
: R E H
: R E H
: R E H: R E H
: R E H: R E H
: R E H
S E T* 8 ' SP N T R
P A I N TI T B L A CE X P A N D H DE X P A N D U E I N I TH 6 R ZP O SI N I TU E R TP O S
S P R I T EM O 6 N
S P R I T E
: S M = I
2 3 9>U I C , S H +
U I C + 1 6
U I C + 1 ,
U I C + 2 1
U I C + 2 3U I C + 2 9
< R S*
, - R Ss u
, 8
, 8
, 8
: R E f
: R E f
1 + 9
t 2 3 6>
1 S P R I T EH 8 O F F
1 E X P A N S I O NO F F
9 7
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 112/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 113/258
C h a p t e r6
M o r eG r a p h i c sT r i c k s
T h i sc h a p t e rw i l lb e a l i t t l ed i f f e r e n tf r o mt h e
p r e v i o u sf i v e .I ' l l t o u c hl i g h t l yo n a l a r g e r
n u m b e ro fg r a p h i c sf e a t u r e s .T h ep r o g r a md i s
c u s s i o n sw i l lb e s l i m m e dd o w ns o m o r et o p i c s
c a nb e c o v e r e d .
H e r ea r e t h e a r e a sy o u ' l lb e l o o k i n ga t :
s l i d i n gs p r i t e so v e r a n du n d e rb a c k g r o u n d
g r a p h i c s , p u t t i n g t e x to n t oa b i tm a p p e dd i s
p l a y , f l y i n ga s p r i t ew i t ha j o y s t i c k ,d e t e c t i n g
c o l l i s i o n sb e t w e e ns p r i t e sa n do t h e r g r a p h i c s
o b j e c t s ,t w om o r ec o l o rm o d e sf o rc h a r a c t e r
g r a p h i c s ,a n dm u l t i c o l o rb i tm a p p i n g .T h e r e ' s
l o t st o d e a l w i t h ,s o l e t ' sd i v er i g h ti n . . .
6 . 1 S P R I T ET OB A C K G R O U N DP R I O R I T Y
B a c ki n C h a p t e r3 , S e c t i o n3 . 5s p r i t e t o
s p r i t ed i s p l a yp r i o r i t i e sw e r ed i s c u s s e d .W h e n
t w oo r m o r es p r i t e so v e r l a po n t h e s c r e e n ,
s p r i t e sw i t hl o w e rn u m b e r sh a v eh i g h e rd i s
p l a yp r i o r i t i e s .F o re x a m p l e ,s p r i t e# 3 w i l
a p p e a ri n f r o n t o f s p r i t e# 5 .
T h e r ei s a r e g i s t e ra t V I C + 2 7( m e m o
l o c a t i o n5 3 2 7 5 )t h a t c o n t r o l ss p r i t et o
b a c k g r o u n dp r i o r i t i e s .B a c k g r o u n dm e a n sa n y
d i s p l a yt h a t ' sn o tp a r t o fa s p r i t e :c h a r a c t
a n db i tm a p p e di m a g e s .E a c hs p r i t eh a sa b i t
a l l o c a t e dt o i t i n t h er e g i s t e ra t V I C + 2 7 .B i t0
c o n t r o l ss p r i t e# 0 ; b i t 1 c o n t r o l ss p r i t e# 1 ,
a n ds o o n .
I f a s p r i t e ' sb i ti s s e tt o 1 , t h a t s p r i t eh a s
l o w e rp r i o r i t yt h a na n yb a c k g r o u n di t r u n si n t o
T h es p r i t ew i l la p p e a rt o g o b e h i n dt h e
b a c k g r o u n d .I f a s p r i t e ' sb i t i s s e t t o 0 , t h e
s p r i t eh a sh i g h e rp r i o r i t yt h a nt h eb a c k g r o u
I t w i l lp a s si n f r o n t o ft h eb a c k g r o u n d .
T a k ea l o o ka t F i g . 6 - 1 .I t s h o w so n e
s e t t i n go f t h e s p r i t et o b a c k g r o u n dc o n t r
r e g i s t e r .T o s e t s p r i t e st o b a c k g r o u n dp r i o r
9 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 114/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
V a l u es t o r e da t V I C + 2 7 = 1 2 8 + 1 6 + 8 + 1= 1 5 3
B i tv a l u e " *
B i t
n u m b e r
1 2 8
7
1
6 4
6
0
3 2
5
0
1 6
4
1
8
3
1
4
2
0
2
1
0
1
0
1
S p r i t e s# 1 , # 2 , # 5 ,& # 6 w i l la p p e a ri n f r o n to f b a c k g r o u n di m a g e s .
S p r i t e s# 0 ,# 3 ,# 4 ,& # 7 w i l la p p e a rb e h i n db a c k g r o u n di m a g e s .
F i g .6 - 1 .T h i ss e t t i n g o ft h es p r i t e - t o - b a c k g r o u n dc o n t r o l r e g i s t e rm e a n st h a t s p r i t e s# 1 , # 2 ,# 5 ,a n d# 6w i l la p p e a ri n f r o n to f
b a c k g r o u n di m a g e s ,w h i l e t h eo t h e rs p r i t e sw i l la p p e a rb e h i n db a c k g r o u n di m a g e s .
t i e s ,s t a r tb y p u t t i n gT s i n t h eb i tp o s i t i o n sV I C + 2 7 .
t h a tc o r r e s p o n dt o s p r i t e sy o uw a n tt o h a v e F i g u r e 6 - 2i s a l i s t i n go ft h ep r o g r a mO v e r
l o w e rp r i o r i t i e s .T h e na d du p t h eb i tv a l u e so f a n dU n d e r .I t u s e sc h a n g i n gp r i o r i t i e st o s h o w
t h o s eb i t s ,a n dp o k et h er e s u l t i n gn u m b e ri n t o a s p r i t e o r b i t t i n ga b l o c ko f t e x t .T y p ei t i n ,
1 0 0 01 0 1 01 0 2 01 0 3 01 0 4 01 0 3 01 0 6 01 0 7 01 0 8 01 0 9 01 1 0 0
1 1 1 01 1 2 01 1 3 01 1 4 01 1 3 01 1 6 01 1 7 0
R E N*;
;
R E N*
P R I N TP R I N TP R I N T
P R I N TF O RN
k * O U E R A N DU N D E R* * *
» D R A MT H EC E N T R A L S H A P E
" L " ; : R E N" 1 M M M M M" n n n n n n n n n i " :
■ V ' i - R E M= 1 T O 6
: P R I N T" I dN E X TP R I N T
:
;
R E N*-
N" B " ; : R E N
* S E T U P T H E
C L E A RA N DC E N T E R• ■ M i l l 1 1 :
D R A UI T I N C Y A N
a n n u m " ;
B A C KT O W H I T E
S P R I T E
1 0 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 115/258
KH
jepunpueJ9AQoiej6ojdamJO6uj)sn2-9
aN3z
N3333SBV313W33:-..H..IN13dAlI30I3d13S33M33=9'12+3Ift
JJO31I3dSM33=9'TZ+3ID
QN3ONVdnNV313*»
9NIA1J330WM33:99£TAlI30I3d3X9dM33:3d'lZ+3Ift
AlI30I3d39NVH3W33=3d-TN0U333I039NVH3M33=3Q-
33IOd3)IOd
M331
2
91993X9d
=3d=30
t3N901*13*•9*£TN3H13A93A8JI
31)914
T-=3A83A9-9£T-3ftOHOTt-TN3H1...i=$dXJI
Sd)l139ilQ+C3Ifl>X33d'31<k33l9d
11A1JM33:9£T91T■3(I9H
AlI30I3daN39)ia/31iadSM33:9NO113331<1HlVd31I3dSM33:T
31I3dS3H1A1J**
N99ft31I3dSM33:T'T2+3IftSOd133ft9ttM33:9£T'T+3IftS9d280H8»U3&:*>9T'31AAM39UaU01*M33:2T'6£+3Ift
31NdVIVOOt*W33:£T'Of820N892I9X3V19U3H:9'££+3Ift
■tillmiJimnLI^H*Ok7CC"~
N
fiSZ'N33l9dVIVOaV91M33=^68912£8=N
1X31
30.
1
1
=3d=30
1433
•
i
3X0d3X9d33l9d33l9d3X9d3)t0d
31ft
1X3N
30.J
88CT91ST09CT9SST9*£T9££T82CT9TST99ST06fT99frT
09»-T
9CfrT
9£?T
ef^TQQPT98£T99£T91£T99£T9££TOf£T9££TOZ£TOT£T99£T862T082T91ZT092TOCZT8f2T9£ZT022T0T2T882T
06TT98TT
s>)oui
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 116/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
s a v ei t , a n dt h e nr u ni t . P r e s s i n gt h es p a c e b a r
w i l le n dt h ep r o g r a m .
A s m e n t i o n e da t t h eo u t s e t ,t h i sc h a p t e rw i l lh a v es h o r t e n e dp r o g r a me x p l a n a t i o n s .
T h a tw a y ,m o r et o p i c sa n dp r o g r a m sw i l lf i t .
L e t ' st a k e ab r i e fl o o ka t O v e ra n dU n d e r .
T h ef i r s tm o d u l ed r a w sa l a r g es q u a r e ,
u s i n gr e v e r s e dc y a ns p a c e sa n dc u r s o rm o t i o n
c o m m a n d s .T h en e x tm o d u l es e t su p a s i m p l e
m e d i u mg r a ys p r i t e .
N e x tc o m e st h e m a i n p r o g r a mm o d u l e .
L i n e s1 3 6 0 - 1 4 1 0m o v et h es p r i t e t ot h er i g h to r
t h e l e f t ,d e p e n d i n go n t h e c u r r e n tv a l u eo f ad i r e c t i o nv a r i a b l e ,D R .A k e y p r e s sd u r i n g t h e
m o t i o n e n d st h ep r o g r a mb y s e t t i n gt h ef l a g
B Y E B Y Et o T r u e .
A f t e r as e t o f m o v e s ,t h e d i r e c t i o na n d
s p r i t e t ob a c k g r o u n dp r i o r i t ya r ec h a n g e d .I t ' s
a m a z i n gh o wt h e s i m p l ep r i o r i t ys w i t c hc a n
c h a n g eo u rp e r c e p t i o no f t h es p r i t e ' sm o t i o n .I t
l o o k sa s i f t h e s p r i t ei s o r b i t t i n gt h ec e n t r a l
s q u a r e ,r a t h e r t h a nj u s tm o v i n gf r o ms i d et o
s i d e .
6 . 2 U S I N GT E X TW I T H
A B I TM A P P E DD I S P L A Y
B a c ki n t h el a s tc h a p t e r ,i n S e c t i o n5 . 8 ,
y o ug o tt o s e et h es t r a n g ew a yb y t e si n a b i t
m a pc o r r e s p o n dt o t h es c r e e nd i s p l a y .T h es e t
u p d o e s n ' tm a k e m u c hs e n s ew h e ny o u ' r et r y
i n gt o d r a wl i n e s .I t d o e sc o m ei n h a n d yw h e n
y o u w a n tt o a d dt e x tc h a r a c t e r st o b i tm a p p e dm a t e r i a l . L e t ' sd o a l i t t l er e v i e wt o s e ew h y .
I n b i t m a p p e dm o d e ,e i g h tc o n s e c u t i v e
b y t e so fm e m o r yc o n t r o la n a r e ao n t h es c r e e n
e i g h t p i x e l sw i d ea n de i g h tp i x e l sh i g h .E a c h
b y t ec o n t r o l sa r o wo f t h i si m a g eb l o c k :t h e
f i r s tb y t ec o n t r o l st h et o p m o s tr o w ,t h es e c o n
b y t et h en e x tr o wd o w n , a n ds o o n .
C h a r a c t e ri n f o r m a t i o ni s s t o r e di n t h es a m ef o r m a t .E i g h t c o n s e c u t i v e b y t o fm e mo r yf o r ma c h a r a c t e rt h a t ' se i g h tp i x e l sw i d e
a n de i g h t p i x e l sh i g h .T h ef i r s tb y t ec o n t r o l
t h et o p m o s tr o wo f t h ec h a r a c t e r ,t h es e c o n
b y t et h en e x tr o wd o w n ,a n ds oo n .P a t t e r n sf o r
5 1 2c h a r a c t e r s a r ep r o v i d e di n t h e b u i l t - i
c h a r a c t e rR O M ,a n dy o uc a na l s od e s i g ny o u r
o w n .
I n o r d e rt o p l a c ea c h a r a c t e ro n a b i t
m a p p e ds c r e e n ,y o uj u s tt r a n s f e ri t s e i g h tb y t e st o a n e i g h tb y t es e c t i o no f t h eb i tm a p .
F i g u r e6 - 3i s a l i s t i n go f a p r o g r a mt h a td o e s
j u s tt h a t .T h ei m a g i n a t i v e l yn a m e dB i tM a p p e
T e x tt a k e s c h a r a c t e r p a t t e r n sf r o mt h eb u i l t - i
R O Ma n dp u t st h e mo n t oa b i t - m a p p e dd i s p l a y
L e t ' st a k ea b r i e fl o o ka t i t .
T h ef i r s ts e c t i o no ft h ep r o g r a mi n i t i a l i z
a n u m b e ro f c o n s t a n t sa n dv a r i a b l e s .I t a l s o
s e t st h ek e y b o a r d u ps o a l l k e y sw i l lr e p e a t
T h en e x ts e c t i o n , l i n e s1 1 7 0 - 1 1 8 0 ,s w i t c h et h ed i s p l a yo v e rt o b i tm a pm o d e .
T h en e x tt w os e g m e n t sc r e a t e aJ a c k s o
P o l l a c kp a i n t i n g .L i n e s1 2 3 0 - 1 2 5 0s e tt h ec o l
o r sf o rt h eb i tm a p .C o l o r sf o r0 b i t sa r ec h o s e
a t r a n d o m ,w h i l ea l lb i t ss e tt o 1 w i l lb e b l a c k .
T h e nl i n e s1 3 0 0 - 1 3 2 0f i l lt h eb i tm a pi t s e l fw i t h
r a n d o mv a l u e s .
L i n e s1 3 7 0 - 1 3 8 0w a i tf o ra k e y p r e s s .I f
t h ek e yp r e s s e di s a s p a c e , t h ep r o g r a m j u
t o i t s l a s tm o d u l ea n de n d s .L i n e s1 4 0 0 - 1 4 m a k es u r et h e k e yi s a l e t t e r ,n u m b e r ,o r
p u n c t u a t i o nm a r k .
T h en e x tp r o g r a mm o d u l ef i g u r e so u tt h e
d i s p l a yc o d ef o r t h ep r e s s e dk e y .T h e nt h e
b u i l t - i nc h a r a c t e rR O Mi s b r o u g h ti n t om e m -
1 0 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 117/258
M o r eG r a p h i c sT r i c k
1 O O OR E H« « * B I T M A P P E DT E X T« * *1 0 1 0 :
1 0 2 0 :1 0 3 0R E N* » I N I T I A L I Z EU A R I O U SS T U F F1 0 4 0 :
1 0 3 0 P R I N T" U " ; : R E NC L E A R S C R E E N1 0 6 0P O K E6 3 0 , 1 2 0 : R E H A L LK E V S R E P E A T1 6 7 0R O M= 3 3 2 4 8 : R E MC H A R A C T E RR O M1 0 0 0 B A S E= 0 1 9 2 : R E M B I TM A PB A S E1 0 9 0C U R S R= B A S E : R E M B I TM A PC U R S O R1 1 0 0U I C = 3 3 2 4 9 : R E MG R A F I XC H I P1 1 1 0 B L O C= U I C + 2 4: R E ML O C A T E SB M1 1 2 0 B S E T= U I C + 1 T: R E MS E T SB M M1 1 3 0 :
1 1 4 0 :
1 1 3 0R E M« » T U R NO N B I T M A PM O D E1 1 6 0 :
1 1 7 0 P O K EB L O C ,P E E K C B L O C )O R 61 1 6 0 P O K EB S E T ,P E E K ( B S E T )O R 3 21 1 9 0 :
1 2 0 0 :
1 2 1 0R E M* » S E T B I T M A PC O L O R SR A N D O M L Y1 2 2 0 :
1 2 3 0F O R S L= 1 0 2 4T O 2 0 2 31 2 4 0 : P O K ES L , I N T C R N D C 1 )* 1 3 ) + 11 2 5 0 N E X TS L1 2 6 0 :
1 2 7 0 :
1 2 0 0R E M* * F I L L B I T M A PW I T HG A R B A G E1 2 9 0 :
1 3 0 0F O RB M L O C= B A S ET O B A S E+ 7 9 9 91 3 1 0 : P O K EB M L O C ,I N T C R N D C 1 )* 2 3 6 >1 3 2 0 N E X TB M L O C1 3 3 0 :
1 3 4 0 :
1 3 3 0R E M« * G E TA L E T T E R , N U M B E R ,O RP U N C T U A T I O NM A R K
1 3 6 0 :
1 3 7 0 G E T K P $1 3 9 0I F K P S= ' " • T H E N1 3 T 01 3 9 0I F K P S= " " T H E N1 7 9 01 4 0 0I F A S C < K P $ >< 3 2 T H E N 1 3 7 01 4 1 0I F A S C C K P S )> 9 3 T H E N 1 3 7 01 4 2 0 :
1 0 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 118/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 4 3 0 :
1 4 4 0R E N* * F I 6 U R EO U T T H ED I S P L A Y C O D E1 4 3 0 :
1 4 6 0 A D J F A C= C A S C C K P S )> 6 3 )1 4 7 0D S C O D E= A S C C K P S )+ C A D J F A C« 6 4 )1 4 0 0S A = R O N+ C D S C O D E» 8 )1 4 9 0 :
1 3 0 0 :
1 3 1 0R E N« * B R I N 6 C H A RR O NI N T OM E M O R Y1 3 2 0 :
1 3 3 0P O K E3 6 3 3 4 ,P E E K C 3 6 3 3 4 )A N D2 3 41 3 4 0 P O K E1 , P E E KC D A N D2 3 11 3 3 0 :
1 3 6 0 :
1 3 7 0R E N* » C H A RP A T T E R N ST O B I T N A P1 3 0 0 :
1 3 9 0F O RB Y T E= 0 T O 71 6 0 0 : P O K E C U R S R♦ B Y T E ,
P E E KC S A+ B Y T E )1 6 1 0 N E X TB Y T E1 6 2 0 :
1 6 3 0 :
1 6 4 0R E N* * L E T C H A RR O N6 01 6 3 0 :
1 6 6 0P O K E1 , P E E K C DO R 41 6 7 0P O K E3 6 3 3 4 ,P E E K C 3 6 3 3 4 )O R 11 6 0 0 :
1 6 9 0 :
1 7 0 0R E N« • A D J U S TC U R S O RA N DL O O P B A C K1 7 1 0 :
1 7 2 0C U R S R= C U R S R+ 81 7 3 0I F C U R S R= B A S E+ 8 0 0 0 T H E N
C U R S R= B A S E1 7 4 06 0 T 01 3 7 01 7 3 0 :
1 7 6 8 :
1 7 7 0R E N* * B A C KT O T E X T D I S P L A Y &E N D
1 7 8 8 :1 7 9 8P O K EB S E T ,P E E K C B S E T )A N D2 2 31 8 8 0P O K EB L O C , 2 11 8 1 8 :
1 8 2 8P R I N T" L " ;1 8 3 8 E N D
F i g .6 - 3 . L i s t i n g o ft h ep r o g r a mB i tM a p p e dT e x t .
1 0 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 119/258
o r y .L i n e s1 5 9 0 - 1 6 1 0c o p yt h ee i g h tc h a r a c t e r
p a t t e r nb y t e si n t ot h eb i t m a p ,a n dt h e nt h e
c h a r a c t e rR O Mi s l e t g o . T h en e x ts e c t i o n
u p d a t e st h ec u r s o rv a r i a b l e ,w h i c hk e e p st r a c k
o f o u rp o s i t i o ni n t h eb i tm a p ,a n dt h e nl o o p s
b a c kt o g e t a n o t h e r k e y p r e s s .S o m u c hf o r
e x p l a n a t i o n .I f y o uh a v e n ' td o n es o a l r e a d y ,
t y p e t h ep r o g r a mi n , s a v ei t , r u ni t , a n de x
p e r i m e n tw i t hi t .
6 . 3 J O Y S T I C K S
Y o uc a n p l u gt w os t a n d a r d v i d e og a m ej o y
s t i c k s i n t oy o u rC o m m o d o r e6 4 . L e t ' ss e eh o wy o uc a ng e t a t t h e i n f o r m a t i o nt h a tc o m e s
M o r eG r a p h i c sT r i c
f r o ma j o y s t i c k .T h e ny o u ' l lu s et h a ti n f o r m
t i o n t of l ya s p r i t e .
A j o y s t i c kh a s f o u rd i r e c t i o ns w i t c h w h i c h y o uc a nl a b e lw i t hc o m p a s sd i r e c t i o na s
s h o w ni n F i g .6 - 4 .A t a n yt i m e ,n o n e ,o n e ,o r
t w os w i t c h e sm a yb e a c t i v a t e d .F o re x a m p l ei f
y o up u s ht h ej o y s t i c k n o r t h ,s w i t c h0 i s a c t i
v a t e d .I f y o u p u s hi t s o u t h w e s t ,s w i t c h e s1 a n d
2 a r ea c t i v a t e d .I f y o ud o n ' tp u s hi t a t a l l ,n o
s w i t c h e sa r e a c t i v a t e d .T h e r e ' sa l s oa f i f t
s w i t c ho n t h ej o y s t i c k ,a n di t ' su s e da s af i r e
b u t t o n .
E a c hs w i t c hi s c o n n e c t e dt o a b i t i n as p e c i a li n p u t / o u t p u tl o c a t i o ni n t h ec o m p u t
F i r e
b u t t o n
N o r t h I
S w i t c h# 0
S w i t c h# 4
W e s t ■
S w i t c h# 2 _
E a s t
S w i t c h# 3
S w i t c h # 1
F i g .6 - 4 .A j o y s t i c ka n di t sf i v es w i t c h e s ,a s s e e nf r o ma b o v ew i t hl i m i t e dx - r a yv i s i o n .
1 0 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 120/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
B i tv a l u e - *
B i tn u m b e r - *
1 2 8
7
6 4
6
—
3 2
5
1 6
4
S w i t c h# 4
R r e
b u t t o n
8
3
S w i t c h# 3
E a s t
4
2
S w i t c h# 2
W e s t
2
1
S w i t c h# 1
S o u t h
1
0
S w i t c h# 0
N o r t h
B i t s5 , 6 ,7 u s e df o ro t h e rp u r p o s e s
F i g .6 - 5 .H o wt h ef i v ej o y s t i c ks w i t c h e sc o n n e c tt o t h el o w e rf i v e b i t so f t h ei n p u t / o u t p u tr e g i s t e r a tm e m o r yl o c a t i o n5 6 3 2 1o r
5 6 3 2 0 .
l a t et h e b i t sy o u ' r ei n t e r e s t e di n c h e c k i n
B a s e do n t h er e s u l t s ,y o uc a nf i g u r eo u tn e w
v a l u e sf o r a s p r i t e ' sp o s i t i o na n dm o v ei t
a r o u n dt h e s c r e e n .P r o g r a m m e r sa r ea l w a y
l o o k i n gf o rt h eq u i c k e s t ,c l e v e r e s tw a yt o r e a d
a j o y s t i c k .J u s tr e m e m b e r ,n o m a t t e rh o w
w e i r dt h e j o y s t i c k - r e a d i n gc o d el o o k s ,i t ' sj u s t
t r y i n g t ot r a n s l a t et h eb i tv a l u e si n t oh o r i z o n t
a n dv e r t i c a lm o v e m e n ti n f o r m a t i o n .I n t h en e x t
s e c t i o n ,a p r o g r a mt h a tu s e so n eo ft h e s eq u i c k
a n dc l e v e r t e c h n i q u e sw i l lb e d i s c u s s e d .B u t
f i r s t ,y o u ' l lt a k e a s h o r tc o u r s ei n c o l l i s i
d e t e c t i o n .
6 . 4 T H I N G ST H A TG O
B U M PO NT H E S C R E E N
I t ' su s e f u lt o k n o w w h e no b j e c t sc o l l i d
T h ef i v es w i t c h e so f t h ej o y s t i c kp l u g g e di n t o
c o n t r o lp o r t1 a r ec o n n e c t e dt o t h el o w e rf i v e
b i t so f t h e i n p u t / o u t p u tr e g i s t e ra t m e m o r y
l o c a t i o n5 6 3 2 1 . L i k e w i s e ,t h ef i v es w i t c h e so f
t h e j o y s t i c kp l u g g e di n t oc o n t r o lp o r t 2 a r ec o n
n e c t e dt o t h el o w e rf i v eb i t so f t h e i n p u t / o u t
p u tr e g i s t e ra t m e m o r yl o c a t i o n5 6 3 2 0 .S e e
F i g . 6 - 5 .
B yt h ew a y ,t h e s ei n p u t / o u t p u tl o c a t i o n s
a r e a l s ou s e d b yt h e c o m p u t e r ' so p e r a t i n g
s y s t e mt o s c a nt h ek e y b o a r d .B e c a u s eo fs o m e
c o m p l i c a t i o n sc a u s e db y t h i sk e y b o a r ds c a n
n i n g ,s t r a n g et h i n g sc a nh a p p e nw i t ha j o y s t i c k
p l u g g e di n t oc o n t r o lp o r t1 . S o , i f y o u ' r ej u s t
u s i n go n ej o y s t i c k ,p l u gi t i n t oc o n t r o lp o r t2 .
Y o uc a nt e l lw h a t ' sh a p p e n i n gt o a j o y s t i c k
b y r e a d i n gt h e d a t af r o mt h e c o r r e s p o n d i n g
i n p u t / o u t p u tr e g i s t e r .W h e na s w i t c hi s n o t w i t ho n ea n o t h e ro nt h e s c r e e n .W i t hp r e v i o u
a c t i v a t e d ,t h ec o r r e s p o n d i n gb i tw i l lb e s e tt o
1 . W h e nt h es w i t c hi s a c t i v a t e d ,t h eb i tw i l lb e
s e t t o0 . F o re x a m p l e ,i f y o u p u s ht h ej o y s t i c k
t o t h ee a s t ,i t w i l la c t i v a t es w i t c h3 , s o b i t3 o f
t h ei n p u t / o u t p u tb y t ew i l lb e s e t t o 0 . I f y o u
p r e s st h ef i r eb u t t o n ,t h a ta c t i v a t e ss w i t c h5 ,
s m a l lc o m p u t e r s ,t h i sw a s n ' te a s y .T h eC o m
m o d o r e6 4 h a s s p e c i a lb u i l t - i nh a r d w a r et o
d e t e c tc o l l i s i o n s .
S p r i t et o s p r i t ec o l l i s i o n sa r er e c o r d e di n
a r e g i s t e ra t V I C + 3 0( m e m o r yl o c a t i o
5 3 2 7 8 ) .E a c hb i to ft h er e g i s t e rc o r r e s p o n dt o
s ob i t5 w i l lb e s e t t o0 . F i g u r e 6 - 6g i v e ss o m ea s p r i t e .A n ys p r i t ei n v o l v e di n a c o l l i s i o ng e t s
m o r ee x a m p l e so f t h i s . i t sb i ts e tt o 1 . F o re x a m p l e ,i fs p r i t e# 2b u m p
B yu s i n gt h eA N Df u n c t i o n ,y o uc a ni s o - i n t o s p r i t e# 7 ,b i t s2 a n d7 o f V I C + 3 0w i l lb e
1 0 6
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 121/258
s e tt o 1 . T h eb i t s w i l ls t a ys e tu n t i ly o ur e a d
i n f o r m a t i o nf r o mt h e r e g i s t e rw i t ha p e e k
s t a t e m e n t .
S p r i t et o d a t ac o l l i s i o n sa r er e c o r d e di n a
r e g i s t e ra t V I C + 3 1( m e m o r yl o c a t i o n5 3 2 7 9 ) .
D a t am e a n sp a r t so f c h a r a c t e r so r b i tm a p p e d
i m a g e s . A g a i n ,e a c hb i to f t h er e g i s t e rc o r r e
s p o n d st o a s p r i t e ,a n dt h a tb i ti s s e t t o1 i f i t s
s p r i t ei s i n a c o l l i s i o n .F o re x a m p l e ,i f s p r i t e
# 5 b u m p si n t op a r t so f a c h a r a c t e r ,b i t 5 o f
V I C + 3 1w i l lb e s e tt o 1 . T h eb i t ss t a y s e tu n t i l
t h ec o n t e n t so f t h er e g i s t e ra r er e a d .
F i g u r e 6 - 7l i s t st h ep r o g r a mJ o y o u sC o l l i
s i o n .I t g i v e se x a m p l e so f j o y s t i c kr e a d i n ga n d
s p r i t et o s p r i t ec o l l i s i o nd e t e c t i o n .T y p ei t i n ,
s a v ei t , a n dt h e n r u ni t . T w os p r i t e sw i l la p -
M o r eG r a p h i c sT r i c k
p e a r ,a s s h o w ni n F i g .6 - 8 .U s ea j o y s t i
p l u g g e di n t oc o n t r o lp o r t2 t o f l yt h ef a c ei n t o
t h ew e a t h e rv a n e .N o t i c ew h a th a p p e n sw h e
t h e yc o l l i d e .P r e s s i n gt h ef i r eb u t t o nw i l le n d
t h ep r o g r a m .
L e t ' sr e v i e wt h i sp r o g r a m .L i n e s 1 0
1 0 9 0l o a dt h e d a t af o r b o t hs p r i t e s .L i n e
1 3 8 0 - 1 5 4 0t h e ns e tt h en e c e s s a r yV I Cr e g i s
t e r sa n dt u r nb o t hs p r i t e so n .
N o wc o m e st h ep r o g r a m ' sm a i ns e g m e n
L i n e1 5 9 0r e a d st h ev a l u eo f t h e i n p u t / o
l o c a t i o na t 5 6 3 2 0 .R e m e m b e r ,t h a t ' st h er e g
i s t e r t h a t t a l k st o t h ej o y s t i c kp l u g g e di n t
c o n t r o lp o r t2 . L i n e1 6 0 0u s e sa n A N D i n go p
e r a t i o nt o s e ei f t h ef i r eb u t t o n ' sb e e np r e s s e
I f i t h a s ,t h ep r o g r a me x i t sv i a t h e c l e a n
— — — 1
— — — 1
— — — 0
— — — 0
1
1
1
1
1
0
0
1
1
0
1
1
0
1
1
1
J o y s t i c kp u s h e d
n o r t h
J o y s t i c kp u s h e d
s o u t h w e s t
J o y s t i c kp u s h e d
w e s t
& f i r eb u t t o n
p r e s s e d
F i r eb u t t o n
p r e s s e d
F i g .6 - 6 .E x a m p l e so fw h a tt h el o w e rf i v eb i t so f m e m o r yl o c a t i o n5 6 3 2 1l o o kl i k ew h e na n a t t a c h e dj o y s t i c ki s m a n i p u l a ti n
v a r i o u sw a y s .
1 0 7
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 122/258
80L
ainiodvivaaiNiodviva
X3V18dIH3
aNnaa83IHd
Til811
8318
va9
noNamaNvdn
998ZT99998ZT99
9968*9£96T£9
96Z6T8ZT
'9T'
'PQ*
'9T'
'9frT*
'9£'
'9£''8*-T'
'9T'
'►8'
'9T'
'£6T'
'8'Z8T'
'£6T'
'8'Z8T''8
'Z8T'
'8'6ZT'
viva
88Z
8ZZZt8Z
88
888ZT8Z66Z6T96
8£T
i*i3a:143a:
143a:U3a=
8311
8'8'9'9'9T'ZSZ'9T'9'9'9'9
'9'Z6T'96'SP'ZPt'66'£'99
'Z6T'Z6T'9
PI£T
9'£8
Ead8
'8'9fi'9T'IT'♦■8'fiCZ't*8'IT'9T'9S'8
'92T'62T'89'£6T'62T'89'8'Z8T
'8'8'£££
viads'
9S6viad
'JP2Z'8*82
C+3Ift^Z££—
135»»
'8'8'8'T'9T'1ZT'9T'T'8'8'8
'8'£'9'2T'£TT'86T'Z6T'89
'£'£'8
NN33IOd
812£8=N
33l8d3)l9d
3X0dOKft
H39I•
vivavivavivavivavivavivavivavivavivavivaviva
z
vivavivavivavivavivavivavivaviva
vivavivaviva
l
1X3Nz
z
SHOJ..H..INIad
3iiad83Hiaval**
***N0ISI1103snoAor***
z
143a•
z
H3a
8Z*TBTfT
86£T89£T81£T
89£T9££T
9££T9Z£T9T£T99€TQ62T98ZT81ZT88ZT8£2TQPZJ8£ZTOZZJ8TZT88ZT86TT88TT82.TT89TTOSTT8*TT
8£TT8ZTT8TTT88TT868T888T82.8T898T8£8TOfOT8£8T8Z8T8T8T888T
6u!LULuej6oJdpunospubsomdejgt^9eJopotuaiOQ
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 123/258
M o r eG r a p h i c sT r i c
1 4 3 0 :
1 4 4 0 P O K EU I C 1 2 0 R E M« 0 H O R I Z O N T A L1 4 3 0 P O K EU I C + 2 , 1 6 0R E M« i H O R I Z O N T A L
1 4 6 0 P O K EU I C + 1 , 1 3 0 R E M1 1 1 U E R T I C A L1 4 T 0 P O K EU I C + 3 , 1 2 6 R E M1 1 1 U E R T I C A L1 4 0 0 :
1 4 9 0P O K E U I C + 3 9 , 3: R E MH O I S C Y A N1 3 0 0 P O K EU I C + 4 8 , 7: R E N1 1 1 I S V E L L O U1 3 1 0 P O K EU I C + 2 9 , 2: R E NO N L V1 1 1 I S1 3 2 0 P O K EU I C + 2 3 , 2R E MD O U B L E - S I Z E D1 3 3 0 :
1 3 4 0P O K EU I C + 2 1 , 3R E MT U R N B O T HO N1 3 3 0 :
1 3 6 0 :
1 3 7 0R E N* » F L VS P R I T EH O1 3 0 0 :
1 3 9 0J R = P E E K( 3 6 3 2 0 >R E MC T R LP O R T21 6 0 0I F < J R A N D1 6 > = 0 T H E N 1 0 7 01 6 1 0H D = S G N < J RA N D4 ) - S G N C J RA N D8 >1 6 2 0U D = S G N C J RA N D1 ) - S G N C J RA N D2 >1 6 3 0 :
1 6 4 0 P O K EU I C ,P E E K C U I O+ H D1 6 3 0 P O K EU I C + 1 ,P E E K < U I C + 1 >+ U D1 6 6 0 :
1 6 7 0 :
1 6 0 0R E M» I F N O C O L L I S I O N SL O O P B A C K
1 6 9 0 :1 7 0 0I F P E E K < U I C + 3 0 >= 0 T H E N 1 4 9 01 7 1 0 :
1 7 2 0 :
1 7 3 0R E N* * C O L L I S I O N■ : 1 1 1 G O E S W H I T EA N DH O U I B R A T E S R A I N B O W S
1 7 4 0 :
1 7 3 0 P O K EU I C + 4 0 ,11 7 6 0 :
1 7 7 0H U E= P E E K C U I C + 3 9 >A N D 1 31 7 0 0H U E= H U E+ 11 7 9 0I F H U E= 0 T H E N H U E= 1
1 0 0 0 P O K E U I C + 3 9 , H U E1 0 1 0 :
1 0 2 0G O T O1 3 9 01 0 3 0 :
1 0 4 0 :
1 0 3 0R E N* » C L E A NU P A N DE N D
1 0 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 124/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 125/258
n o t .I f a s c r e e nl o c a t i o n ' sc o r r e s p o n d i n gc o l o r
m a pl o c a t i o nh a sb i t 3 s e t t o 1 , t h e c h a r a c t e r
w i l ls h o wu p i n m u l t i c o l o rm o d e .I f b i t 3 o f
c o l o rm e m o r yi s s e t t o 0 , t h e c h a r a c t e rw i l l
s h o wu p i n i t s n o r m a l( t w oc o l o r )f a s h i o n .
C o n f u s i n g ?H e r e ' s a n o t h e rw a yt o l o o ka t .
A s s u m et h a ty o u ' v et u r n e do n m u l t i c o l o r
c h a r a c t e rm o d eb ys e t t i n gb i t4 o fV I C + 2 2t o 1 .
M o r eG r a p h i c sT r i c k
I f y o up u ta n u m b e rf r o m0 - 7i n a c o l o rm e m o
l o c a t i o n ,t h e c o r r e s p o n d i n gs c r e e nl o c a t i o
w i l ls h o wi t s c h a r a c t e r n o r m a l l y .B u t ,i f y o u
p u ta n u m b e rf r o m8 - 1 5i n t ot h ec o l o rm e m o r
l o c a t i o n ,t h e c h a r a c t e rw i l ls h o wu p i n m u l
t i c o l o rm o d e .
N e x td e t a i l :i f m u l t i c o l o r c h a r a c m o d
i s o n ,a n da c h a r a c t e r ' sc o l o rm e m o r yl o c a t i
B i t ^
v a l u e
B y t e O
B y t e1
B y t e2
B y t e3
B y t e4
B y t e5
B y t e 6
B y t e7
i
1 2 8 6 4:
3 2 ; 1 6 8 ! 41
2 j 1
i
I
1
1
1
;
i
i
i
!
N u m b e r
c o d e s
1 i 0
B a c k g r o u n d
# 0 c o l o r
( s c r e e nc o l o r )
B a c k g r o u n d
# 1 c o l o r
B a c k g r o u n d
# 2 c o l o r
L o w e r3
b i t so f c o l o r
m e m o r y
c o l o r
F i g .6 - 9 .A c o d i n g f o r my o u c a n u s et o d e s i g nm u l t i c o l o rc h a r a c t e r s .
1 1 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 126/258
C o m m o d o r e6 4G r a p h i c sa n dS o u n dP r o g r a m m i n g
B i t
v a l u e1 2 8 • 6 4 3 2 . 1 6 8
N u m b e rc o d e s
B y t e O • o : . r . . . . o 1 0 7
B y t e l 1 - . . - 0 ' 1 0 7
B y t e2 • o * .: . 1 . *. ' . 0 1 0 7
B y t e3 6 7
B y t e4
B y t e5 o . -
1 9 3
2 3 3
B y t e6 1 . 2 3 3
B y t e7 2 3 3
o ! oI
■ o ! 1
B a c k g r o u n d
# 0 c o l o r
( s c r e e nc o l o r )
B a c k g r o u n d
# 1 c o l o r
B a c k g r o u n d
# 2 c o l o r
L o w e r3
b i t so f c o l o r
m e m o r y
c o l o r
F i g .6 - 1 0 .A ne x a m p l es h o w i n gh o wt h em u l t i c o l o rc h a r a c t e rc o d i n g f o r mc a nb e u s e d .
i s s e tt o a n u m b e rf r o m8 - 1 5 ,w h e r ed ot h ef o u r g r o u n dr e g i s t e r2 . F i n a l l y ,i f t h eb i tp a i ri s 1 1 ,
c o l o r sc o m ef r o m ?I ft h eb i tp a i ri s 0 0 ,t h ec o l o rt h ec o l o rc o m e sf r o mt h el o w e r 3b i t so f t h ec o m e sf r o mt h ev a l u e s t o r e da t V I C + 3 3 ,t h e c h a r a c t e r ' sc o l o rm e m o r yl o c a t i o n ,
s c r e e nc o l o rr e g i s t e r ,a l s o c a l l e db a c k g r o u n d I f y o us t o pa n dt h i n kf o ra m o m e n t ,y o u ' l
r e g i s t e r0 . I ft h eb i tp a i ri s 0 1 ,t h ec o l o rc o m e sr e a l i z et h a ta l l c h a r a c t e r s d i s p l a y ei n m u l -
f r o m V I C + 3 4 ,b a c k g r o u n dr e g i s t e r1 . I f t h eb i t t i c o l o rm o d ew i l ls h a r e t h r e ec o l o r s .P o k i n
p a i ri s 1 0 ,t h ec o l o rc o m e sf r o mV I C+ 3 5 ,b a c k -n e wv a l u e si n t ot h et h r e eb a c k g r o u n dr e g i s t e
1 1 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 127/258
w i l lq u i c k l yc h a n g ea w h o l es c r e e no f m u l
t i c o l o rc h a r a c t e r s .
Y o uc a nu s e m u l t i c o l o rm o d ew i t ht h e
b u i l t - i nc h a r a c t e r s ,b u tt h er e s u l t s a r e n ' tv e r y
i n t e r e s t i n g .I t ' sm o r ef u nt o d e s i g ny o u ro w n
m u l t i c o l o rc h a r a c t e r s .F i g u r e6 - 9i s a c o d i n g
f o r my o uc a nu s ef o rt h i s t a s k .F i g u r e 6 - 1 0i s a n
e x a m p l eo f h o wt h i sf o r mc a nb e u s e d .I r e c
o m m e n du s i n g c o l o r e dm a r k e r st o r e p r e s e n t
t h e f o u rc o l o r s ,b u ti n a b l a c k - a n d - w h i t eb o o k ,I
h a v et o r e s o r tt o s h a d i n g .
M o r eG r a p h i c sT r i c k
F i g u r e 6 - 1 1l i s t sa p r o g r a mt h a td e m o n
s t r a t e sm u l t i c o l o r c h a r a c t e r s .T y p ei t i n , s a v e
i t , a n dt h e nr u ni t . P r e s s i n ga n yo ft h ek e y s1 , 2 ,
3 , o r4 w i l lc h a n g e o n eo ft h ef o u r c o l o r su s e di n
t h ed i s p l a y .H o l d i n go n eo f t h o s ek e y sd o w
w i l lc a u s ec o n t i n u o u sc o l o rc h a n g e .N o t i c
h o wq u i c k l y t h ep i c t u r es h i f t sw h e na n e wv a l
u e i s p o k e di n t oo n eo f t h eb a c k g r o u n dr e g i s
t e r s .
P l a y i n ga r o u n dw i t ht h i sp r o g r a mw i l l
t e a c hy o ua l o t a b o u tm u l t i c o l o rc h a r a c t
1 O O O1 0 1 01 0 2 01 0 3 01 0 4 01 0 3 01 0 6 01 0 7 01 0 0 01 0 9 01 1 0 01 1 1 01 1 2 01 1 3 01 1 4 01 1 3 01 1 6 01 1 7 01 1 8 01 1 9 01 2 0 01 2 1 01 2 2 0
1 2 3 01 2 4 01 2 3 01 2 6 0
1 2 7 01 2 0 0
R E N* * » C U S T O MM U L T I C O L O R« * »•
R E M« * L O A DI N H E M
D B A S E= 1 2 2 8 8 R E M
F O RC H A R- 1 T O 2: F O R B Y T E= 0 T O: S P O T= C B A S E: R E A D C D T A
A , B , f t S P A C E
N E I 4C H A R S S T A R T
7+ C H A R * 8+ B V T E
: P O K ES P O T ,C D T A: N E X T B V T E
N E X T C H A R
F O RB V T E■ 0 T O 7: S P O T= C B A S E+: P O K ES P O T ,0
N E X T B V T E
D A T A1 0 7 , 1 0 7 , 1 0 7 ,D A T A 6 7 , 1 0 7 , 1 0 7 ,D A T A2 3 3 , 2 3 3 , 2 3 3 ,
D A T A1 9 3 , 2 3 3 , 2 3 3 ,
R E N* * C L E A R S C R E E NC H A RS E T ,T U R N
3 2 * 8+ B V T E
6 71 0 71 9 3
2 3 3
, B R I N 6I N N E WM U L T I C O L O RO N
P R I N T" L i " ; R E MC L E A R S C R E E N
1 1 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 128/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n d P r o g r a m m i n g
1 2 9 0 U I C■ 9 3 2 4 8 : R E NG R A F I XC H I P1 3 0 0P O K EU I C + 2 4 ,2 9 : R E NN E US E T I N1 3 1 0 P O K EU I C + 2 2 ,P E E K < U I C + 2 2 >O R 1 6
1 3 2 0 :
1 3 3 0 :
1 3 4 0R E N* » S E T U P D I S P L A Y1 3 3 0 :
1 3 6 0 P R I N T" l i l i n W i I i I i I i l i M " ;: R E MD O U N1 01 3 7 6P R I N T" U 1 1 1 1 U " ; = R E NO U E RT1 3 8 0 P R I N T" K " ; : R E HS T A R T W I T H C O L O R91 3 9 0 :
1 4 0 0F O RN ■ 1 T O 2 61 4 1 0 : P R I N T" f t B " ;1 4 2 0 : I F N O 1 3 T H E N 1 4 4 01 4 3 0 : P R I N T : P R I N T : P R I N T" f e l l l l l l J " ;1 4 4 0 N E X TN1 4 9 0 :
1 4 6 0 :
1 4 T 0R E N« * P L A VB U T T O NP U S H1 4 8 0 :
1 4 9 0C O L N A P= 9 9 2 9 61 9 0 0B G = C O L N A P+ < 1 0 * 4 0 > + T1 9 1 0 P O K E6 9 0 , 1 2 8 R E MA L LK E Y SR E P E A T1 9 2 0 :
1 9 3 0G E T K P S1 9 4 0I F K P S= " " T H E N1 9 3 0
1 9 9 0I F K P S■ " " T H E N 1 8 3 0I 9 6 0 :
1 3 7 8 B K R E 6= 01 9 8 0I F K P S= " 1 " T H E N B K R E G= U I C + 3 31 9 9 0I F K P S= " 2 " T H E N B K R E G= U I C + 3 41 6 0 0I F K P S - " 3 " T H E N B K R E G= U I C + 3 31 6 1 0I F K P S= " 4 " T H E N6 0 S U B1 T 2 01 6 2 0I F B K R E 6= 0 T H E N 1 9 3 01 6 3 0 :
1 6 4 0H U E= < P E E K < B K R E G )A N D1 9 > + 11 6 9 0I F H U E= 1 6 T H E N H U E= 01 6 6 0 P O K EB K R E G ,H U E1 6 T 0G O T O 1 9 3 01 6 0 0 :
1 6 9 0 :
1 T 0 0R E N« * S U B R O U T I N ET O C H A N G EA L LL E T T E R S 'C O L O R H A P C O L O R S
1 7 1 0 :
1 1 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 129/258
M o r eG r a p h i c sT r i c k
1 7 2 01 7 3 01 7 4 0
1 7 3 01 7 6 01 7 7 01 7 8 01 7 9 01 0 0 01 0 1 01 0 2 01 0 3 01 8 4 01 0 3 01 8 6 01 8 7 01 8 8 01 0 9 0
H U E■ C P E E K C O G ) A N D1 3 > + 1I F H U E> 1 3 T H E NH U E- 8z
F O R S P O T= 8 6 T O C B G+ 1 0 6 ): P O K ES P O T ,H U EN E X T S P O TR E T U R N
:
;
R E N* « C L E A NU P A N D E N D
P R I N T" L " 1 ;P O K E U I C + 2 2 ,P E E K C U I C + 2 2 )A N D2 3 9P O K EU I C + 2 4 ,2 1P R I N T" 1 1 " : R E NW H I T ET E X TP O K EU I C + 3 3 , 0: R E N O NB L A C KB K G R N D
:
E N D
F i g .6 - 1 1 .L i s t i n go f t h ep r o g r a mC u s t o mM u l t i c o l o r .
m o d e .T h ep r o g r a mi s p r e t t ys i m p l e .T h ef i r s t
s e g m e n tl o a d si n t w o c u s t o mc h a r a c t e r p a t
t e r n sa n dt h ep a t t e r nf o r a s p a c e .T h e nt h e
s c r e e nc l e a r s ;V I Ci s s e tt o p o i n tt o t h en e w
c h a r a c t e rs e t ;a n dt h em u l t i c o l o rm o d ec o m e so n .L i n e s1 3 6 0 - 1 4 4 0p r i n tt w ol i n e sf u l lo f t h e
n e wc h a r a c t e r s .
N o wc o m e st h ew o r k h o r s es e c t i o n .T h e
p r o g r a mg e t sa k e y p r e s s .I f i t ' sa s p a c e ,t h e
p r o g r a me n d s .I f i t ' sa 1 , 2 , 3 , o r 4 , t h ea p p r o
p r i a t ec o l o rs t o r a g el o c a t i o n ( s )i s ( a r e )
c h a n g e d .T h e nt h ep r o g r a ml o o p sb a c kf o ra n
o t h e r k e y p r e s s .
O n et e c h n i q u ey o um i g h tm a k en o t eo f :
w h e nr e a d i n ga c o l o rf r o mm e m o r y ,a n A N Do p e r a t i o ni s u s e dt o s c r e e no u tu n w a n t e db i t s .
T h i sh a p p e n si n l i n e s1 6 4 0 a n d1 7 2 0 .
6 . 6 E X T E N D E DB A C K G R O U N D
C H A R A C T E RM O D ET h e r ei s o n em o r ew a yy o uc a nd i s p l a y
c h a r a c t e r s :e x t e n d e db a c k g r o u n dm o d e .I n t h i s
m o d e , y o uc a nu s ea n yo n eo ft h e1 6c o l o r sf o ra
c h a r a c t e r ' sb a c k g r o u n d .A s u s u a l ,t h ec h a r a c
t e r i t s e l fc a nt a k eo n a n yo f t h e 1 6c o l o r s .
T h e r ea r e f o u rm e m o r yl o c a t i o n su s e dw i t he x t e n d e d b a c k g r o u n dm o d e :b a c k g r o u
r e g i s t e r s0 - 3 ,l o c a t e da t V I C + 3 3 , V I C
V I C+ 3 5 , a n dV I C + 3 6r e s p e c t i v e l y .T h a t ' s
m e m o r yl o c a t i o n s5 3 2 8 1t h r o u g h5 3 2 8 4 .E a c h
o f t h e s el o c a t i o n sc a nb e s e tt o a n yo n eo f t h e
1 6 c o l o r s .
A sy o u ' v es e e n , g e t t i n gm o r ec o l o r f u l d
p l a y s u s u a l l ym e a n sc u t t i n gd o w no n s o m e
t h i n ge l s e .E x t e n d e db a c k g r o u n dm o d ei s n o
e x c e p t i o n .O n l y6 4 d i f f e r e n tc h a r a c t e r sc a nb ed i s p l a y e d ,r a t h e rt h a n2 5 6 .T h i si s b e c a u s eb i t s
6 a n d7 o f e a c hc h a r a c t e rc o d ea r e u s e dt o
s e l e c to n eo f t h e f o u rb a c k g r o u n dr e g i s t e r
T h a tl e a v e sj u s ts i xb i t st o c o d et h ec h a r a c t e
a n dt h el a w so f b i n a r y a r i t h m e t i cs a yt h a t s i
1 1 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 130/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
b i t sp r o d u c e6 4 d i f f e r e n tv a l u e s .
L e t ' sl o o ka t s o m ep r a c t i c a ld e t a i l s .P u t
t i n g a1 i n t ob i t 6 o f m e m o r yl o c a t i o n5 3 2 6 5 ,
V I C + 1 7 ,t u r n so n e x t e n d e dc o l o rm o d e .
P l a c i n ga 0 i n t ot h es a m eb i tp o s i t i o nt u r n st h e
m o d eo f f .T h ec h a r a c t e r ' sc o l o ri s s t o r e di n
c o l o rm e m o r y ,a s i n t h e n o r m a lc h a r a c t e r
m o d e .T h ec h a r a c t e rc o d ei s s t o r e di n s c r e e n
m e m o r y ,a l s oa s u s u a l .H o w e v e r ,o n l y t h ef i r s t
6 4 c h a r a c t e rp a t t e r n s a r eu s e d .I f t h ef i r s tt w o
b i t so f ac h a r a c t e rc o d ea r e0 0 ,t h eb a c k g r o u n d
c o l o rc o m e sf r o mb a c k g r o u n dr e g i s t e r0 , a t
V I C+ 3 3 .I f t h ef i r s tt w ob i t so ft h ec o d ea r e0 1 ,
1 0 , o r 1 1 , t h eb a c k g r o u n dc o l o rc o m e sf r o m
b a c k g r o u n dr e g i s t e r1 , 2 , o r 3 , r e s p e c t i v e l y .
F o r e x a m p l e :i f e x t e n d e d b a c k g r o u n d
c o l o rm o d ei s i n e f f e c t ,p o k i n ga 5 i n t oa s c r e e n
m e m o r yl o c a t i o nw i l lp u ta n E o n t h e s c r e e n .
T h ec h a r a c t e r ' sb a c k g r o u n dc o l o rw i l lc o m e
f r o mb a c k g r o u n dr e g i s t e r0 , a t V I C + 3 3 .S i n c e
t h a tr e g i s t e rs e t st h eb a c k g r o u n dc o l o rf o rt h e
w h o l es c r e e n , t h eE w i l la p p e a rq u i t e o r d i n a r y .
P o k i n ga 6 9 i n t oa s c r e e nm e m o r yl c o a t i o nw i l l
a l s op u t a nE o n t h e s c r e e n ,b u tt h ec h a r a c t e
8 - b y - 8a r e aw i l lf i l lw i t ha b a c k g r o u n dc o l o
b a s e d o nt h ec o n t e n t so f V I C + 3 4 .L i k e w i s
p o k i n ga 1 3 3w i l lp r o d u c ea n E w i t hl o c a
b a c k g r o u n dc o l o rb a s e do n t h e c o n t e n t so f
V I C + 3 5 .P o k i n g1 9 7i n t os c r e e nm e m o r yw i l l
p r o d u c ea n E w i t ha b a c k g r o u n dc o l o rb a s e do n
t h e c o n t e n t so f V I C + 3 6 .
F i g u r e 6 - 1 2l i s t st h ep r o g r a m E x t
B a c k g r o u n d ,w h i c hg i v e sa d e m o n s t r a t o f
t h i sm o d e .T y p ei t i n , s a v ei t , a n dt h e n r u ni t .
E a c hc o l u m no f d a s h e ss h a r e st h es a m eb a c k
g r o u n dr e g i s t e r .P r e s s i n go n eo f t h ek e y s1 - 4
w i l lc h a n g et h e c o n t e n t so f o n eo f t h eb a c k
g r o u n dr e g i s t e r s .P r e s s i n g5 w i l lc h a n g et h e
c o l o ro f t h e c h a r a c t e ri t s e l f .O n c ea g a i n ,i f
y o ur e a l l yw a n tt o u n d e r s t a n da n e wm o d e
s p e n ds o m et i m em o d i f y i n gt h ep r o g r a m .
H e r e ' sa b r i e fe x p l a n a t i o no f E x t e n d
B a c k g r o u n d :l i n e s1 0 5 0 - 1 0 7 0c l e a rt h es c r e e
a n dt u r no n e x t e n d e d b a c k g r o u n dm o d e .L i n e
1 1 2 0 - 1 2 5 0s e t u p f o u rc o l u m n so f t h e s a m
c h a r a c t e r , ad a s h( d i s p l a yc o d e4 5 ) .H o w e v e
1 O O O1 0 1 01 0 2 01 0 3 01 0 4 01 0 5 01 0 6 01 0 7 01 0 8 01 0 9 01 1 0 01 1 1 01 1 2 01 1 3 01 1 4 01 1 5 0
R E N:
;
R E H
* * * E X T E N D E DB A C K G R O U N D* * *
k » T U R NO N
P R I H T" L " ;U I CP O K E
z
R E M
= 5 3 2 4 8
E X T E N D E DB K G R D M O D E
: R E NC L E A R S C R E E N: R E M6 R A F I X C H I P
U I C + 1 7 ,P E E K C U I C + 1 7 )O R 6 4
* * S E T U P
S C R E E N= 1 0 2 4C O L M A P= 5 5 2 9 6S S =C S =
S C R E E N+C O L M A P+
D I S P L A Y
( 1 6 « 4 0 > + 1 6C 1 O* 4 0 > + 1 6
1 1 6
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 131/258
M o r eG r a p h i c sT r i c k
1 1 6 01 1 7 0
1 1 8 01 1 9 01 2 0 01 2 1 01 2 2 01 2 3 01 2 4 01 2 3 01 2 6 01 2 7 01 2 8 01 2 9 01 3 0 01 3 1 01 3 2 01 3 3 01 3 4 01 3 S 01 3 6 01 3 7 01 3 8 01 3 9 01 4 0 0
1 4 1 01 4 2 01 4 3 01 4 4 01 4 3 01 4 6 01 4 7 01 4 8 01 4 9 01 3 0 01 3 1 01 3 2 0
1 3 3 01 3 4 01 3 3 01 3 6 01 3 7 0
-
H U E= P E E K < C S >+ 1
I F H U E= 1 6 T H E N H U E= 0:
F O RR M = 0 T O 3F O RN = 0 T O 3
: P O K ES S + R U » 4 0+ N « 2 ,: P O K EC S + R U * 4 0+ N * 2 ,: N E X TN
N E X TR M™
R E M» » P L A VB U T T O NP U S H
4 3 + 6 4 » NH U E
P O K E6 3 0 , 1 2 8 R E MA L LK E Y S R E P E A T
G E T K P SI F K P S■ " " T H E N1 3 2 0I F K P S- " " T H E N 1 3 2 0:
B K R E G= 0I F K P S= " 1 " T H E NB K R E G=- U I C + 3 3I F K P S= " 2 " T H E N B K R E G= U I C + 3 4I F K P S= " 3 " T H E N B K R E G=
I F K P S = " 4 " T H E N B K R E G-
I F K P S= " 3 " T H E N1 1 7 0I F B K R E G= 0 T H E N 1 3 2 0:
= U I C + 3 3- U I C + 3 6
H U E= ( P E E K ( B K R E G )A N D1 3 > + 1I F H U E= 1 6 T H E N H U E= 0P O K EB K R E G ,H U EG O T O 1 3 2 0
;
R E N« * C L E A NU P A N D E N D■
P R I N T" L " ;
P O K EU I C + 1 7 ,P E E K C U I C + 1 7 ]P R I N T" I ! " R E MW H I T E
i A N D1 9 1T E X T
P O K EU I C + 3 3 , 0R E MO N B L A C K B K G R N D
E N D
F i g .6 - 1 2 .L i s t i n go f t h ep r o g r a mE x t e n d e dB a c k g r o u n d .
1 1 7
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 132/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
e a c hc o l u m nd i f f e r si n b i t s6 a n d7 , s o t h e
c o l u m n so f d a s h e sw i l ll o o kt o d i f f e r e n tr e g i s
t e r sf o rb a c k g r o u n dc o l o r s .
T h en e x ts e c t i o ni s a n o t h e rb i gk e y b o a r d
p o l l i n gl o o p .A s p a c ee n d st h i n g s ,t h en u m b e r s
1 - 5c h a n g ec o l o r s a sn o t e da b o v e ,a n da n y t h i n g
e l s ei s i g n o r e d .F i n a l l y ,t h el a s tm o d u l ec l e a n s
t h i n g su p b y t u r n i n ge x t e n d e d b a c k g r o u n d
m o d eo f f ,c l e a r i n g t h e s c r e e n ,a n ds e t t i n gt h e
c h a r a c t e rc o l o rt o w h i t e .
6 . 7 M U L T I C O L O RB I TM A PM O D E
T h e r ei s o n el a s tC o m m o d o r e6 4 d i s p l a y
o p t i o n :m u l t i c o l o rb i tm a pm o d e .A s y o um a yh a v eg u e s s e d ,t h i sg r a p h i cm o d el e t sy o uu s e4
c o l o r si n a n8 - b y - 8b l o c ko f t h eb i tm a pd i s p l a y .
Y o u ' v e p r o b a b l ya l s og u e s s e dt h ec o s t :h o r i
z o n t a lr e s o l u t i o nc u ti n h a l f .
H o wd o y o us e tt h i sm o d eu p ?F i r s t ,y o up u ta 1 i n t ob i t5 o fV I C + 1 7t o t u r no n b i tm a
m o d e .T h e ny o ut e l lV I Cw h e r et h e8 Kb i tm a
i s l o c a t e db y s e t t i n gb i t3 o f V I C + 2 4 .I n m o s
c a s e s ,t h a tb i tw i l lb e s e t t o1 . S of a r ,t h e s ea r e
j u s tt h e s t e p sy o u u s e dt o s e tu p s t a n d a r db i t
m a p p i n g .F i n a l l y ,y o us e tb i t4 o fV I C + 2 2t o 1 ,
w h i c ht u r n so n m u l t i c o l o rm o d e .
T h ec o r r e s p o n d e n c eb e t w e e nb y t e si n t h e
b i tm a pa n dt h ed o t so n t h es c r e e nd i s p l a yi s
t h es a m ea s i n s t a n d a r db i tm a pm o d e .H o we v e r ,t w ob i t sa r eu s e dt o c h o o s ea c o l o rf o r
d o u b l e - w i d ep i x e l .A sy o u ' v el e a r n e d ,t w ob i t s
1 0 0 01 0 1 01 0 2 01 0 3 01 0 4 01 0 5 0
I 8 6 01 0 7 01 0 3 01 0 9 01 1 0 01 1 1 01 1 2 81 1 3 01 1 4 01 1 5 01 1 6 0
1 1 7 01 1 3 01 1 9 01 2 0 01 2 1 01 2 2 0
R E M;
'.
R E M
# * * C O L O R]B I T
* * I N I T I f l L I Z E
P R I N T" T i
P O K ER O MB f l S E
6 5 0 , 1 2 8= 5 3 2 4 8
» 8 1 9 2C U R S R= B f l S EV I C -
B L O CB S E T
'.
I
R E M
P O K EP O K E
R E M:
= 5 3 2 4 8■ V I C + 2 4« V I C + 1 7
* * T U R NO N
: R E M
: R E M: R E M: R E M■ R E M: R E M= R E M
R E M
B I T
M R P P E DT E X T * * *
V f i R I O U SS T U F F
C L E R R S C R E E N
f i L LK E V SR E P E f i TC H R R R C T E RR O MB I TM R PB f l S EB I TM f l PC U R S O RG R R F I X C H I PL O C R T E SB MS E T S B M M
M f l PM O D E
B L O C ,P E E K < B L O C >O R 8B S E T ,P E E K < B S E T >O R 3 2
m S E T B I TM R PC O L O R SR f l N D O M L V
1 1 8
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 133/258
6W
0891029T
31A31X3N0T9I<3JLAg-I+«S>>l33d'31Ag+asanoSHOd:009T
ZOi8=31A3dOd06ST03ST
naoxsnyaiibdauto**wsa0^st09ST0SSI
IS3UNU<T»l33d'I3>i0d0i»ST
ONO<K>:9£»G3d'W89S3!>IOd
:08ST
<8*3aoosa>+woa=ys+<*d>i>3s«*saoosa
<<$dx>osy>*oydraB09w
3U00Ayidsiashjlmosanoid**wsa
H3H1S6<<$d>l>08ydl0THN3H128><$d)O38ydl00t»T
06ZTN3H1..„«$dXdl06810Z8TN3H1..,.«$d>1dl088T
*d>»1300<i8T
:098T
>iyywHouwniciNridao'aaawnN'd3ii3iy130**W3aesei
:088T
oonwa1X3N02s!oss*a>aNauNi'ooiwa3xod:eisi
666Z+3sus013sua=ooiwaaod008t:062T
soyaayohumduu11a11id**usa©sst:QlZl:092T
IS1X3N0S2T9T*O+(ST.*a>(Md>lNI>HS3><0d:0t»2T
829201*20I■ISaOd0821
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 134/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 6 4 0R E M* * L E TC H f l RR O MG O1 6 5 0:
1 6 6 0P O K E1 , P E E K < 1 >O R 41 6 7 0P O K E5 6 3 3 4 . .P E E K< 5 6 3 3 4 )O R 1
1 6 3 0:
1 6 9 0 :
1 7 0 0R E M* * f i D J U S TC U R S O Rf l N DL O O PB f l C K1 7 1 0:
1 7 2 0C U R S R* C U R S R+ 81 7 3 0I F C U R S R« B f l S E+ 8 Q Q 0 T H E N C U R S R= B f i S E1 7 4 0G O T O1 3 7 01 7 5 0:
1 7 6 0:
1 7 7 0R E M * «B f l C KT O T E X TD I S P L f l V &E N D1 7 8 0•
1 7 9 0P O K EB S E T ,P E E K ( B S E T )F I N D2 2 31 8 0 0P O K EB L O C ,2 11 8 1 0:
1 8 2 0P R I N T" T ;1 8 3 0E N D
F i g .6 - 1 3 .M u l t i c o l o rB i tM a p p e dM o d e .
c a nc o d e 4v a l u e s .D e p e n d i n go n t h ev a l u eo f a
b i t p a i r ,c o l o ri n f o r m a t i o nf o ra g i v e n8 - b y - 8
a r e ac a nc o m ef r o m o n eo f f o u rl o c a t i o n s .
I f t h e b i t p a i ri s 0 0 , c o l o rc o m e sf r o m
b a c k g r o u n dr e g i s t e r0 a t V I C + 3 3 .T h a t ' s t h e
s c r e e nb a c k g r o u n dc o l o r .I f t h eb i tp a i ri s 0 1 ,
c o l o rc o m e sf r o mt h eu p p e rn i b b l eo f t h ec o r
r e s p o n d i n gs c r e e nm e m o r yl o c a t i o n .I f t h eb i t
p a i ri s 1 0 ,c o l o rc o m e sf r o mt h el o w e rn i b b l eo f
t h es a m eb y t eo fs c r e e nm e m o r y .A n di f t h eb i t
p a i ri s 1 1 ,c o l o rc o m e sf r o mt h ec o r r e s p o n d i n g
c o l o rm e m o r yl o c a t i o n .
T o r e t u r nt o a s t a n d a r dt e x t d i s p l a yf r o m
t h i sm o d e ,j u s tr e v e r s et h es e t u ps t e p s .T h a t
i s ,p u ta 0 i n t ob i t5 o fV I C + 1 7 ,p u ta 0 i n t ob i t4
o f V I C + 2 2 ,a n dr e s e tV I C + 2 4w i t ht h e v a l u e
2 1 .
6 . 8 C H A P T E RS U M M A R Y
W h e w ,t h i sh a sb e e na p a c k e dc h a p t e r I
w a n t e dt o w r a pu p a n u m b e ro f l o o s ee n d s
b e f o r eg o i n go n t o t h e n e x tm a j o rt o p i c
s o u n d s . H e r e ' sa n o v e r v i e wo f w h a t ' sb e e n
c o v e r e d :
* M o v i n gs p r i t e si n f r o n t o fa n d b e h i
o t h e ri m a g e s b ys e t t i n g s p r i tt o
b a c k g r o u n dp r i o r i t i e s
* P l a c i n g c h a r a c t e r so n a b i tm a p p e dd i s
p l a yb y t r a n s f e r r i n ge i g h tb y t e sf r o m
c h a r a c t e rm e m o r y
* R e a d i n ga j o y s t i c kb y l o o k i n ga t t h e
l o w e rf i v e b i t so f m e m o r yl o c a t i o
5 6 3 2 0a n d5 6 3 2 1
* U s i n gj o y s t i c ki n f o r m a t i o nt o m o v ea
s p r i t ea r o u n d
1 2 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 135/258
M o r eG r a p h i c sT r i c k
* D e t e c t i n gc o l l i s i o n sb e t w e e ns p r i t e s
a n db e t w e e ns p r i t e sa n do t h e ri m a g e s
* D i s p l a y i n gc h a r a c t e r si n m u l t i c o l o r
m o d e ,w h e r ef o u r c o l o r sc a nb e u s e di n
e a c hc h a r a c t e r
* D i s p l a y i n gc h a r a c t e r si n e x t e n d e d
b a c k g r o u n dm o d e ,w h e r ea l l 1 6 c o l o r s
a r ea v a i l a b l ef o rl o c a lb a c k g r o u n dd u t y
* S e t t i n gu p m u l t i c o l o rb i t m a pm o d e ,
w h e r e4 c o l o r sc a n b e u s e di n e a c h
8 - b y - 8b l o c ko f t h eb i t m a p ,a l t h o u g h
h o r i z o n t a lr e s o l u t i o n g e t sc u ti n h a l f
6 . 9 E X E R C I S E S
6 . 9 . 1 S e l fT e s t
A n s w e r sa r ei n S e l fT e s tS e c t i o n6 . 9 . 3 .
1 . ( 6 . 1 )W h i c hs p r i t e sw i l lm o v eb e h i n db a c k
g r o u n d i m a g e si f t h e v a l u e8 5 i s p o k e di n t o
t h er e g i s t e ra t V I C + 2 7 ?
2 . ( 6 . 2 )G i v ea n i n s t a n c ew h e nt h e s t r a n g e
l a y o u to f b y t e si n t h e b i t m a pc o m e si n
h a n d y .3 . ( 6 . 3 )W h i c hd i r e c t i o ni s t h ej o y s t i c kb e i n g
p u s h e di f t h ei n p u t / o u t p u tr e g i s t e ra t 5 6 3 2 1
h o l d st h ev a l u e 2 6 ?
4 . ( 6 . 4 )I f t h es p r i t et o s p r i t ec o l l i s i o nr e g i s t e r
c o n t a i n s t h ev a l u e1 7 0 ,w h i c hs p r i t e sh a v e
c o l l i d e d ?
5 . ( 6 . 5 )S e t t i n gb i t o f t h e r e g i s t e r
a t V I C + 2 2t o t u r n so n m u l
t i c o l o rc h a r a c t e rm o d e .
6 . ( 6 . 6 )I n e x t e n d e db a c k g r o u n dm o d e ,b i t sa n d o f a c h a r a c
t e r ' sd i s p l a yc o d es e l e c to n eo f f o u rb a c k
g r o u n dr e g i s t e r s .
7 . ( 6 . 7 )W h i c h3 b i t sn e e dt o b e d e a l tw i t ht o
s e tu p m u l t i c o l o rb i tm a pm o d e ?
6 . 9 . 2 P r o g r a m m i n gE x e r c i s e s
T h e s es h o u l db e q u i c ka n de a s yt o c o d e .
P o s s i b l es o l u t i o n sa r es h o w ni n S e c t i o n 6 . 9Q u e s t i o n2 w i l lt e s ty o u ra b i l i t yt o e x a m i n
p r i n t e dp r o g r a m sc r i t i c a l l y .
1 . C h a n g et h ep r o g r a mO v e ra n dU n d e r
s o t h a tt h es p r i t em o v e si n a v e r t i c a l
r a t h e rt h a nh o r i z o n t a l ,o r b i t .
2 . S t u d yt h ep r o g r a ms h o w ni n F i g . 6 - 1
I t i s a r e v i s i o no f t h eB i tM a p p e dT e x t
p r o g r a mt h a tm a k e st h e t e x tc h a r a c
t e r sc o m eo u ti n c o l o r ,u p s i d ed o w n ,
o n a b l a c kb a c k g r o u n d .I d e n t i f yt h e
l i n e st h a tm a k et h e s e c a u s et h e s e
c h a n g e s .
3 . C h a n g et h ep r o g r a mJ o y o u sC o l l i s i o
s o t h e j o y s t i c ko p e r a t e si n r e v e r s e
T h a ti s , m o v i n gi t w e s tm o v e st h e
s p r i t et o t h e e a s t ,m o v i n gi t n o r t h
m o v e st h es p r i t es o u t h ,a n ds o o n .
6 . 9 . 3 A n s w e r st o S e l fT e s t
1 . s p r i t e s# 0 , # 2 ,# 4 , a n d# 6
2 . w h e ny o uw a n tt o p u t c h a r a c t e r s o a b i t
m a p p e dd i s p l a y
3 . n o r t h w e s t
4 . s p r i t e s# 1 , # 3 , # 5 , a n d# 7
5 . 4 ; 1
6 . 6 ; 7
7 . b i t5 o f V I C + 1 7( 5 3 2 6 5 ) ;b i t 3 o f V I C +
( 5 3 2 7 2 ) ;b i t 4 o f V I C + 2 2( 5 3 2 7 0 )
6 . 9 . 4 P o s s i b l e S o l u t i o n s
t o P r o g r a m m i n gE x e r c i s e s
1 . L o a di n t h ep r o g r a mO v e ra n d U n d e
T h e nt y p ei n t h e s el i n e s :
1 2 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 136/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
l e e e r e m* * * u e r t i c a l o u e r& u n d e r* * * *1 61 2 6 0P O K EU I C ,1 7 2 : R E M* » 0 H O R ZP O S 1 6 0 0: P O K E C U R S R+ B V T E ,1 2 7 0P O K EU I C + 1 , 6 0 : R E MH O U E R TP O S P E E KC S A+ T - B V T E >1 3 7 0: p o k eu i c + i ,p e e k < u i c + i >+ d r 3 . L o a di n t h ep r o g r a mJ o y o u sC o l l i s i o
2 . T h ef o l l o w i n gl i n e sa r et h eo n e st h a t T h e nt y p ei n t h e s el i n e s :
c a u s e dt h e a p p r o p r i a t e c h a n g e s :1 0 0 0r e m » * *w e i r d c o l l i s i o n« * *1 0 0 0R E M » « *C O L O RB I T H A P P E D T E X T* « • 1 6 1 0 H D= S O N C J RA N DS > - S 6 N C J RA N D4 >1 2 4 0: P O K ES L , ( I N T C R N D ( l )» 1 5 > + 1 ) 1 6 2 0U D = S 6 N C J RA N D2 > - S 6 N < J RA N D1 >
1 2 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 137/258
C h a p t e r7
S t a r t i n g
T o M a k eS o u n d s
E n o u g hh a s b e e ns a i da b o u ts i l e n tp i c t u r e s
a l r e a d y . L e t ' sm a k es o m en o i s e .I n t h i sc h a p
t e r ,I ' l lg i v es o m es h o r t ,s n a p p yl e c t u r e so nt h e
n a t u r eo fs o u n d s .Y o u ' l ll e a r na b o u tf r e q u e n c y ,
a m p l i t u d e ,a n dw a v e f o r m s .Y o u ' l lt a k ea g o o d
l o o ka t S I D ,t h ep o w e r f u ls o u n dc h i pC o m m o
d o r e h a sp u ti n t oy o u rc o m p u t e r .Y o u ' l ll e a r n
h o wt o s e ts o m eo f S I D ' sr e g i s t e r s .I ' l l t a l k
a b o u tm u s i ca n dt h e nc l o s eu p w i t ha f a m i l i a r
m e l o d y .
7 . 1 S O M EA S P E C T SO FS O U N D
T h i n g st h a tv i b r a t ec r e a t e s o u n d s .T h e
c l a s s i cb e g i n n e r ' ss o u n de x p e r i m e n ti n v o l v e sa
t u n i n gf o r k .I f y o uh a v eo n e , g i v ei t a g o o d
w h a c k .L i s t e nt o i t a m o m e n t ,a n dt h e n t o u c h
i t . F e e lt h e v i b r a t i o n s ?I f y o ud o n ' th a v ea
t u n i n gf o r kh a n d y ,h e r e ' s an e a tl i t t l es u b s t i
t u t ee x p e r i m e n t :
G e tt w op i e c e so f d e n t a lf l o s so r s t r i n
e a c h a b o u tt w of e e tl o n g .T h e nt a k ea r a c ko u t
o fa no v e n .A t t a c ho n ee n do fa p i e c eo ff l o s st o
o n ec o r n e ro f t h er a c k ,t h e na t t a c ht h es e c o np i e c et o a n o t h e rc o r n e r .W r a pt h e l o s ee n do f
o n ep i e c eo ff l o s sa r o u n d y o u rl e f ti n d e xf i n g e
t h e nw r a pt h ee n do f t h eo t h e r p i e c ea r o u
y o u rr i g h ti n d e xf i n g e r .Y o um a yw a n tt o d ot h e
n e x ts t e pi n p r i v a t e .S t i c ky o u rf i n g e r si n y o u
e a r s .B u m pt h e r a c ka g a i n s ts o m e t h i
W a t c h ,f e e l ,a n dl i s t e n .S e eF i g .7 - 1 .
7 . 1 . 1 W a v e s
O n ec o m p l e t ev i b r a t i o nm a k e sa w a v e
T h i n g st h a tv i b r a t em a k el o t so f w a v e s .T h e s
w a v e sl i k et o t r a v e l .T h e yt r a v e l r e a l l yw e l li n
m e t a la n ds t r e t c h e dp i e c e so ff l o s s .T h e ye v e
t r a v e li n t h ea i r .W h e ns o u n dw a v e sm a k ei t t o
y o u re a r ,t h e yc r a s hi n t os e n s i t i v el i t t l eh a i r s
1 2 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 138/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
F i g .7 - 1 .Y o um i g h tw a n tt o t r yt h i sn o b l es o u n de x p e r i m e n ti n
t h e p r i v a c yo f y o u ro w nr o o m .
c a u s i n gt h e h a i r st o v i b r a t e .T h ev i b r a t i n g
h a i r sa r e c o n n e c t e dt o n e r v e s ,w h i c h s e n d
m e s s a g e st o y o u rb r a i n ,a n dy o uh e a r s o u n d s .
7 . 1 . 2 F r e q u e n c y ,o r P i t c h
T h e r ea r ea n u m b e ro f w a y st o d e s c r i b e
w a v e s .O n e w a yi s t o c o u n th o wm a n yw a v e s ,
o r c y c l e s ,o c c u ri n a g i v e na m o u n to ft i m e .T h i s
c o u n ti s k n o w na s t h ef r e q u e n c yo f t h ew a v e s .
F o re x a m p l e ,i f y o uw e n tt o t h e o c e a n ,y o u
c o u l dc o u n tt h en u m b e ro f w a v e st h a to c c u
d u r i n go n e m i n u t e .I f t h e r ew e r et w e l vw a v e s ,y o u ' ds a y t h a tt h e f r e q u e n c yw a s1 2
c y c l e sp e rm i n u t e .
S o u n dw a v e so c c u ra t a f a s t e rr a t e .Y o u
m e a s u r et h ef r e q u e n c yo f a s o u n di n c y c l e sp e r
s e c o n d ,a l s ok n o w na s h e r t z .S o m e t h i n gv i
b r a t i n g4 4 0t i m e sa s e c o n dw i l lc r e a t ea s o u n
w i t ha f r e q u e n c yo f 4 4 0h e r t z .
W h a tw ec a l lt h ep i t c ho f a s o u n d d e p
o n i t sf r e q u e n c y .S o u n d sw i t ha l o wp i t c hh a v e
l o wf r e q u e n c i e s ; h i g h - p i t c h e ds o u n d sh a v eh i g hf r e q u e n c i e s .
P e o p l ec a nh e a rs o u n d sw i t h f r e q u e
b e t w e e na b o u t1 5 a n d 2 0 , 0 0 0h e r t z .A p i a n
c a nc r e a t es o u n d sw i t h f r e q u e n c i e sb e t w e e
3 3 a n d4 1 8 6h e r t z .Y o u r C - 6 4 c o m p uc a n
c r e a t es o u n d sw i t h f r e q u e n c i e sb e t w e e n. 0 6
a n d3 9 9 5h e r t z .
Y o uc a nd r a wp i c t u r e so f s o u n d w a v
F i g u r e7 - 2s h o w s w a v e sm a d eb yt u n i n gf o r k s
T h ew a v e sh a v ed i f f e r e n tf r e q u e n c i e s .
7 . 1 . 3 A m p l i t u d e :V o l u m e ,o r L o u d n e s s
Y o uc a na l s om e a s u r et h es i z e o f aw a v e
T h i si s c a l l e da m p l i t u d e .L a r g ew a v e sa r em o r e
p o w e r f u lt h a n s m a l lw a v e s ,a s a n ys u r f e rw i l l
t e s t i f y .W i t h s o u n d w a v e s ,a m p l i t u d et r a n s
l a t e s i n t ov o l u m e ,o r l o u d n e s s .T h el a r g e r t
a m p l i t u d e , t h el o u d e rt h es o u n d .
F r e q u e n c ya n da m p l i t u d eo p e r a t e i n
p e n d e n t l yo f o n ea n o t h e r .T w os o u n d sc a n
s h a r et h es a m ep i t c ha n dh a v ed i f f e r e n tl o u d
n e s sl e v e l s .L i k e w i s e ,t w os o u n d sc a n b e
e q u a l l y l o u db u th a v ed i f f e r e n t p i t c h e s .F i g u r
7 - 3s h o w s w a v e st h a th a v et h es a m ef r e q u e n
b u td i f f e r e n ta m p l i t u d e s .
1 2 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 139/258
O n ec y c l e
A
1 0 0c y c l e s / s e c o n d
O n ec y c l e
4 0 0c y c l e s / s e c o n d
0 1s e c
" O
♦t
0 1
s e c
O n ec y c l e
0 1s e c
2 0 0c y c l e s / s e c o n d
- -
O n ec y c l e
1
,
I
/ 1 n/ I ' A ' f i / 1 1
[ j | / l m ' \ J \ l
8 0 0c y c l e s / s e c o n d
V . O 1s e c
r o
e n
F i g .7 - 2 .P i c t u r e so fw a v e sm a d eb yt u n i n gf o r k sa td i f f e r e n tf r e q u e n c i e s .T h ew a v e sa l lh a v et h es a m ea m p l i t u d e .
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 140/258
T i m e
2 0 0h e r t z
. 0 1
s e c
. 0 1
s e c
F i g .7 - 3 .P i c t u r e so f
t u n i n gf o r kw a v e st h a th a v et h es a m
ef r e q u e n c yb u td i f f e r e n ta m p l i t u d e s .
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 141/258
1c y c l e
T 3 a I
. 0 1s e c
T r i a n g u l a rw a v e f o r m
l i t u d eA m p-
1c y c l e
A
/ 1
2 0 0 H z ;
^S
^
/ ̂
T i m e
S a w t o o t hw a v er f o r m
1
*
1s e c
1c y c l e
A
2 0 0H z A
T i m e
R e c t a n g u l a rw a v e f o r m
1c y c l e
. 0 1
s e c
C
o m p l e xw a v e f o r m
r o 4
F i g .7 - 4 .F o u rm o r ew a v e f o r m s :t r i a n g u l a r ,s a w t o o t h ,r e c t a n g u l a r ,a n dc o m p l e x .
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 142/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
7 . 1 . 4 W a v e f o r m s
W a v e sc a nh a v em a n yd i f f e r e n ts h a p e s .
T h ew a v e s s h o w ni n F i g s .7 - 2a n d7 - 3 ,c r e a t e d
b y t u n i n gf o r k s ,a r ek n o w na s s i n ew a v e s .T h e
w a v e sh a v er e g u l a r ,s i m p l es h a p e s .A p a r t i c u
l a rw a v es h a p ei s c a l l e da w a v e f o r m .
F i g u r e7 - 4s h o w sf o u rm o r ew a v e f o r m s :a
t r i a n g u l a rw a v e ,a s a w t o o t h w a v e ,a r e c t a n g u
l a r w a v e ,a n da c o m p l e xw a v e .D i f f e r e n t
w a v e f o r m sc r e a t es o u n d sw i t hd i f f e r e n tt o n a l
q u a l i t i e s ,o r t i m b r e s .A c l a r i n e tp l a y i n gm i d d l e
C a t a c e r t a i nv o l u m es o u n d sd i f f e r e n tf r o ma
p i a n o p l a y i n gt h es a m er o l ea t t h es a m ev o l
u m e .T h ec l a r i n e t ' sw a v e f o r m sa r e d i f f e r e n t
t h a n t h ep i a n o ' s .
W a v e f o r m sa r ei n d e p e n d e n to f f r e q u e n c y
a n da m p l i t u d e .I f y o ul o o ka g a i na t F i g .7 - 4 ,
y o u ' l ln o t i c et h a tI ' v ed r a w na l lf o u rw a v e sw i t h
t h es a m ef r e q u e n c ya n da m p l i t u d e .
7 . 2 B R I E FI N T E R L U D E
Y o u rC o m m o d o r e6 4 c a nm a k ea l o t o f
d i f f e r e n ts o u n d s .B u tt h i sv e r s a t i l i t yh a s ap r i c e :c o m p l e x i t y .I t ' l lt a k eu s a w h i l et o l e a r n
h o wt o s e t a l l t h es o u n dc o n t r o l s .
I n t h em e a n t i m e ,j u s t t op r o v et h a tt h e
C - 6 4c a np r o d u c es o u n d s ,r u nt h e s h o r tp r o
g r a ml i s t e di n F i g .7 - 5 .W h e ny o ut i r eo f i t s
h a u n t i n gm e l o d y ,p r e s sa n yk e y( o t h e rt h a nt h e
s t o pk e y )t o e n di t . I ' l lr e s i s tt h et e m p t a t i ot o
e x p l a i nh o wt h i sp r o g r a mw o r k s ; o n c e
l e a r ne n o u g ha b o u tS I D ,y o u ' l lb e a b l et o f i g u
i t o u to n y o u r o w n .
7 . 3 S I D ,T H ES O U N DI N T E R F A C ED E V I C
Y o u ' v eb e e ni n t r o d u c e dt o V I C - I I ,t h e
C o m m o d o r e6 4 ' s g r e a tg r a p h i c sc h i p .W e l l ,g e tr e a d yt o m e e tS I D ,t h e C - 6 4 ' se q u a l l yg r e a
s o u n dc h i p .S I Ds t a n d sf o r S o u n dI n t e r f a
D e v i c e .C o m m o d o r eh a sp u ta s o p h i s t i c
s o u n da n dm u s i cs y n t h e s i z e r o n t oa s i n g l ei n
t e g r a t e dc i r c u i t c h i p .L e t ' sg o o v e rs o m eo f
S I D ' sf e a t u r e s .
T o s t a r tw i t h ,S I Da c t u a l l yh a s t h r e e
s e p a r a t es o u n ds y n t h e s i z e r s .T h e y ' r ea l s o
c a l l e dv o i c e s .Y o uc a nu s e a n yo n e ,a n yt w o ,o r
a l l t h r e eo f t h e s ev o i c e st o c r e a t e s o u n dT h e r ea r e a n u m b e ro f w a y st o c o n t r
1 6 0 6
1 6 1 6
1 6 2 0
1 0 3 6
1 0 4 0
1 0 5 01 0 6 0
1 0 7 0
1 0 8 0
1 0 9 0
1 1 0 0
R E N
P O K E
P O K E
P O K E
F O R
N E X T
G E T
* * * M I N I M A L
5 4 2 9 6 , 1 5
5 4 2 7 8 , 2 4 0
5 4 2 7 6 , 3 3N = 1 T O 1 0 0
P O K E 5 4 2 7 3 ,
N
K P S
I F K P $ = " " T H E N
P O K E
P O K E
5 4 2 7 6 , 0
5 4 2 9 6 , 0
S I R E N
: R E M
: R E M
: R E M
: R E M
M K t t
U O L U M EO N H I
S E T S U S T A I N
N O T EO N
S I R E E E N
1 5 + A B S ( 5 6 - N >
: R E M
1 0 4 0
: R E M
: R E M
M O R E?
N O T EO F F
U O L U M EO F F
F i g .7 - 5 . L i s t i n g o ft h ep r o g r a mM i n i m a lS i r e n .
1 2 8
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 143/258
S t a r t i n gT o M a k eS o u n
e a c hv o i c e .T o b e g i nw i t h ,e a c hv o i c eh a sa
d e v i c ec a l l e d a t o n eo s c i l l a t o r .B y s e t t i n gt h e
p r o p e rr e g i s t e r s ,y o uc a nm a k et h et o n eo s c i l
l a t o rp r o d u c e s o u n dw a v e sa t a n y f r e q u e n c y
b e t w e e n0 a n d3 9 9 5h e r t z .T h a t ' sa b o u tt h e
s a m ep i t c hr a n g et h a tp i a n o sh a v e .
E a c hv o i c ea l s oh a sa w a v e f o r mg e n e r a
t o r .Y o uc a nc h o o s e o n eo f f o u rw a v e f o r m sf o r
a v o i c e :t r i a n g l e ,s a w t o o t h ,p u l s e ,o r n o i s e .
T r i a n g u l a ra n ds a w t o o t hw a v e sa r es h o w ni n
F i g .7 - 4 .P u l s ei sj u s ta n o t h e rn a m ef o rt h e r e c
t a n g u l a rw a v e f o r m ,a l s os h o w ni n F i g .7 - 4 .
T h en o i s ew a v e f o r mi s a r a n d o ms i g n a l t h a t
s o u n d sl i k ea T Vs e to n c ea l lt h es t a t i o n sh a v e
s i g n e do f f . I tc o m e si n r e a l l yh a n d yf o rs o u n d
e f f e c t s .I t ' sa l s o c a l l e dw h i t en o i s e .
F i n a l l y ,e a c hv o i c eh a si t s o w ne n v e l o p e
g e n e r a t o ra n da m p l i t u d em o d u l a t o r .T h e s e
s t r a n g e l y - n a m e dd e v i c e sl e t y o uc o n t r o lt h e
l o u d n e s so fe a c hv o i c ei n a v e r yp r e c i s ew a y .I f
y o up l u c ka n o t eo n a g u i t a r ,y o u ' l ln o t i c et h a t
t h e l o u d n e s sc h a n g e st h r o u g h o u tt h e l i f eo f
t h a tn o t e .T h ee n v e l o p eg e n e r a t o ra n da m p l i
t u d em o d u l a t o rl e ty o uc o n t r o lt h el o u d n e s so f
a S I Dv o i c ei n a s i m i l a rw a y .
E a c hS I Dv o i c eu s e s7 r e g i s t e r s .S I Dc o n
t a i n sa t o t a lo f 2 9 r e g i s t e r s .T h eo t h e re i g h t
r e g i s t e r sl e ty o uc o n t r o lt h eo v e r a l ll o u d n e s s
o f a l l t h e v o i c e s ,m i xa n ds y n c h r o n i z et h e
v o i c e si n f u n n y w a y s ,f i l t e ro u tc e r t a i nf r e
q u e n c i e s ,a d di n s o u n d sf r o mo u t s i d es o u r c e s ,
r e a dg a m ep a d d l e s ,a n d m o n i t o rt h eo u t p u to f
v o i c e # 3 .
S o m u c hf o r a b r i e fi n t r o d u c t i o nt o S I D .
L e t ' sg oi n t om o r ed e t a i la b o u ts e t t i n gs o m eo f
i t s r e g i s t e r s .
7 . 4 G E N E R A LS I DR E G I S T E RL A Y O U T
T h e2 9S I Dr e g i s t e r so c c u p ym e m o r yl o
c a t i o n s5 4 2 7 2 - 5 4 3 0 0 .A s I d i dw i t hV I C ,I ' l
u s u a l l yr e f e r t os p e c i f i cr e g i s t e r sb y t h e i rr e l
a t i v ep o s i t i o ni n t h er e g i s t e rs e t .F o re x a m p
t h er e g i s t e ra t 5 4 2 7 8w i l lb e r e f e r r e dt o a s S I
+ 6 .
A p p e n d i xL s h o w st h ec o m p l e t eS I Dr e g
i s t e r l a y o u t .T h ef i r s ts e v e nr e g i s t e r s c
v o i c e # 1 , t h en e x ts e v e nc o n t r o lv o i c e# 2 ,a n
t h et h i r ds e t o fs e v e nc o n t r o lv o i c e# 3 .T h
n e x tf o u r r e g i s t e r s c o n t r o lf i l t e r sa n do v e r a
v o l u m e .T h el a s tf o u r r e g i s t e r s c o nm i s
c e l l a n e o u sf u n c t i o n s .
I ' l lr e f e rt o t h es e v e nr e g i s t e r st h a tc o n
t r o la v o i c ea s a v o i c es e t .T h et h r e e v o i c s e t
a r es e tu p a l m o s ti d e n t i c a l l y .I ' l lp o i n t o u ta n y
e x c e p t i o n sa s I g o a l o n g .
7 . 5 S E T T I N GA F R E Q U E N C Y
T h ef i r s tt w or e g i s t e r so fa v o i c es e tc o n
t r o lt h a tv o i c e ' sf r e q u e n c y .T h a ti s , t h er e g i
t e r sa t S I Da n dS I D + 1s e t t h ef r e q u e n c f o r
v o i c e# 1 ,S I D + 7a n dS I D + 8s e ti t f o rv o i c
# 2 ,a n dS I D + 1 4a n dS I D + 1 5s e ti t f o rv o i c
# 3 .
T w o8 - b i tr e g i s t e r sg i v ea t o t a lo f1 6b i t s
V a l u e sb e t w e e n0 a n d6 5 5 3 5c a nb e r e p
r e s e n t e d w i t h1 6 b i t s .S o , t h e r e a r e6 5 5 3
p o s s i b l ef r e q u e n c ys e t t i n g sf o re a c hv o i c e .
H o wd o y o uf i g u r eo u tt h ev a l u e st o p o k
i n t ot h et w of r e q u e n c yr e g i s t e r s ?F i r s ty o u d
a l i t t l ec o n v e r s i o n .Y o ud i v i d e t h ef r e q u e n ci n
h e r t zb ya s p e c i a l f a c t o ra n dt h e nr o u n di t o f ft o
t h en e a r e s tw h o l en u m b e r .T h a t ' l lg i v ey o ut h e
S I Df r e q u e n c ys e t t i n g .T h es p e c i a lf a c t o r
b a s e do nt h ec o m p u t e r ' sc l o c ks p e e d .T h ef a c
t o ri s . 0 6 0 9 5 2 , g i v eo r t a k ea m i l l i o n t h .F o re x
a m p l e , s a yy o uw a n ta f r e q u e n c yo f4 4 0h e r t z
R o u n d i n go f f4 4 0d i v i d e db y . 0 6 0 9 5 9 2t o t h e
1 2 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 144/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
n e a r e s tw h o l en u m b e rg i v e sa f r e q u e n c ys e t
t i n go f 7 2 1 8 .
N o wy o uh a v et o c o n v e r tt h ef r e q u e n c y
s e t t i n gi n t ot w ov a l u e st o p o k ei n t ot h ef r e
q u e n c yr e g i s t e r s .D u et o t h ec o m p l e x i t i e so f
b a s e s2 , 1 0 ,a n d1 6 ,y o ud i v i d et h es e t t i n gb y
2 5 6 .T h ei n t e g e rp a r tg o e si n t ot h e s e c o n d
f r e q u e n c yr e g i s t e r( S I D + 1 ,S I D + 8 ,o r
S I D + 1 5 ) .I t ' sk n o w na s t h e h i g h b y t eo f t h e
f r e q u e n c ys e t t i n g .T h er e m a i n d e rf r o mt h ed i
v i s i o ng o e si n t ot h ef i r s tf r e q u e n c yr e g i s t e r
( S I D ,S I D + 7 ,o r S I D + 1 4 ) .I t ' sk n o w na s t h e
l o wb y t eo f t h ef r e q u e n c ys e t t i n g .
L e t ' sa p p l yt h i ss e c o n ds t e pt o o u r4 4 0
h e r t zt o n e .Y o ug o t a f r e q u e n c ys e t t i n go f
7 2 1 8 .D i v i d et h a tb y 2 5 6 .T h ei n t e g e rp a r to f
t h ea n s w e ri s 2 8 ; t h er e m a i n d e ri s 5 0 .I f y o u
w a n tt o s e tv o i c e# 1 s o i t p r o d u c e sa 4 4 0h e r t z
s o u n d ,y o u p o k e2 8 i n t oS I D + 1a n d5 0 i n t o
S I D .
7 . 6 S E T T I N GA W A V E F O R M
T h eu p p e rn i b b l e — b i t s4 , 5 , 6 , a n d7 — o f
t h e f i f t hr e g i s t e ri n e a c hv o i c es e t s e l e c t sa
w a v e f o r mf o r t h a tv o i c e .S I D + 4i s t h e r e g i s t e r
u s e df o rv o i c e# 1 ,w h i l eS I D + 1 1a n dS I D + 1 8
p e r f o r mt h e c h o r ef o rv o i c e s# 2 a n d# 3 r e
s p e c t i v e l y .
S e t t i n go n eo f t h e s eb i t st o 1 s e l e c t st h e
w a v e f o r ma s s o c i a t e dw i t ht h a tb i t . B i t 4
s e l e c t s at r i a n g l ew a v e ;b i t 5 s e l e c t s as a w
t o o t hw a v e ;b i t6 s e l e c t s ap u l s e( r e c t a n g u l
w a v e ;a n db i t7 s e l e c t sa w h i t en o i s e .S e eF i g .
7 - 6 .
I f y o uc h o o s et h e p u l s ew a v e f o r m ,y o u
n e e dt o s e to n em o r ei t e m :t h ep u l s ew i d t h
L e t ' ss e eh o wt h a t ' sd o n e .
7 . 7 S E T T I N GT H E P U L S EW I D T H
I n a r e c t a n g u l a r ,o r p u l s e ,w a v e f o r m ,t h e
a m p l i t u d ei s e i t h e rh i g ho r l o w ,w i t hn o i n t e r
m e d i a t ev a l u e s .T h ep e r c e n t a g eo f a w a v e
c y c l ew h e r et h ea m p l i t u d ei s h i g hi s k n o w na s
t h e p u l s ew i d t h .F i g u r e7 - 7 s h o w sp u l s e
w a v e f o r m sw i t hf o u rd i f f e r e n tp u l s ew i d t h s .
R e g i s t e r s3 a n d4 o fa v o i c es e tc o n t r o lt h e
p u l s e w i d t hi f t h e p u l s ew a v e f o r mi s s e l e c t e d
W h a tv a l u e sd o w ep o k ei n t ot h e s et w or e g i s
t e r sf o ra g i v e n p u l s e w i d t h ?T a k et h ep u l s e
w i d t h( e x p r e s s e da s ap e r c e n t a g e )a n dm u l t i p l
b y 4 0 . 9 5 .R o u n dt h a tn u m b e ro f f ,a n dy o u ' v
g o t t h eS I Dp u l s ew i d t hs e t t i n g .
B i tv a l u e•
B i tn u m b e r•
1 2 8
7
N o i s e
6 4
6
P u l s e
3 2
5
S a wt o o t h
1 6
4
A A A/ V V \
T r i a n g l e
8
3
—
4
2
—
2
1
—
1
0
—
F i g .7 - 6 .B i t s 4 ,5 , 6 ,a n d7 o f a v o i c e ' sf i f t hr e g i s t e ra r eu s e dt o s e l e c t t h a t v o i c e ' sw a v e f o r m .
1 3 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 145/258
i■■■■■■
P u l s ew i d t h
1c y c l e
A T i m e
=2 5 %
1c y c l e
T i m e
P u l s ew i d t h=7 5 %
0 " D
1c y c l e
T i m e
P u l s ew i d t h=5 0 %
( s q u a r ew a v e )
" 5 .
T i m e
P u l s ew i d t h=1 0 0 %
( c o n s t a n td co u t p u t )
I I I
C O
O 2 I C 0
F i g .7 - 7 .F o u rp u l s ew a v e f o r m s ,e a c hw i t had i f f e r e n tp u l s ew i d t h .
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 146/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
N o wd i v i d e t h ep u l s ew i d t hs e t t i n gb y
2 5 6 .P o k et h e i n t e g e rp a r to ft h er e s u l ti n t ot h e
f o u r t h r e g i s t e r o ft h ev o i c es e t .P u tt h e r e
m a i n d e ri n t ot h ev o i c es e t ' st h i r dr e g i s t e r .
H e r e ' sa n e x a m p l e .L e t ' ss a yy o uw a n tt o
s e t ap u l s e w i d t ho f7 5 %f o rv o i c e # 3 .7 5t i m e s
4 0 . 9 5i s 3 0 7 1 . 2 5 ,w h i c hr o u n d so f ft o 3 0 7 1 .
3 0 7 1d i v i d e db y2 5 6g i v e s1 1 ,w i t ha r e m a i n d e r
o f 2 5 5 .S oy o u ' dp u tt h ev a l u e1 1 i n t oS I D + 1 7 ,
a n dp u tt h ev a l u e2 5 5i n t oS I D + 1 6 .
7 . 8 S E T T I N GA V O I C E ' SV O L U M E
V A R I A T I O N S :T H EA D S RE N V E L O P E
B a c ki n S e c t i o n 7 . 3 , 1m e n t i o n e dt h a te a c h
v o i c eh a s a n e n v e l o p e g e n e r a t o ra n da m p l i t u d e
m o d u l a t o r .T h e s ed e v i c e sg i v ey o up r e c i s e
c o n t r o lo v e rv o l u m ed u r i n ga s o u n d ' sl i f e t i m e .
T h es e c r e tt o t h i sc o n t r o li s t h e A D S Re n
v e l o p e .
A D S Rs t a n d sf o r a t t a c kd e c a ys u s t r a i nr e
l e a s e .T h e s ew o r d sd e f i n e f o u rs t a g e so fa t y p i
c a l s o u n d ' sl i f e .D u r i n gt h e f i r s ts t a g e ,t h e
v o l u m eg o e sf r o mz e r ot o a m a x i m u mv a l u e .
T h ea t t a c kr a t ed e t e r m i n e sh o wl o n gt h i sr i s e
i n v o l u m et a k e s .
D u r i n gt h e s e c o n ds t a g e ,t h e v o l u m
d r o p sf r o mi t sm a x i m u mv a l u et o al o w e rl e v e l .
T h ed e c a yr a t ed e t e r m i n e sh o wl o n gt h i sd r o p
t a k e s .
T h el e v e l t h a tt h e v o l u m ed r o p st o i s
c a l l e dt h es u s t a i nl e v e l .I t c a nb e e x p r e s s e da s a
p e r c e n t a g eo f t h em a x i m u mv o l u m ea t t a i n e d
D u r i n gt h et h i r ds t a g eo f t h es o u n d ' sl i f e ,v o l
u m es t a y sa t t h i sl e v e l .
4
i
i
i
i
i
i
i
i .
! /
1 s t
s t a g e
A>
/
I
2 n d
s t a g e
A - ,
i
i X 1
1 1
1
1
T i m ex
3 r d
s t a g e
A
_ m m m — « .
S u s t a i n
4 t h
s t a g e
I
I
!
1
1
\
i
, M a x i m u m
i — . — » — v o l u m e
i l e v e l
S u s t a i n, \ i c \ \ \i m o
l e v e l
Z e r o
l e v e l
F i g .7 - 8 .T h ef o u rs t a g e so f a t y p i c a ln o t e ' sl i f e ,s h o w i n gt h ev o l u m e c h a n g e st h a tm a k eu p t h eA D S Re n v e l o p e .
1 3 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 147/258
F i n a l l y ,t h en o t es t o p s .T h er a t ea t w h i c h
i t d r o p sf r o mt h es u s t a i nl e v e lt o z e r ov o l u m e
i s c a l l e dt h er e l e a s er a t e .
T a k ea g o o dl o o ka t F i g .7 - 8 .I t s h o w st h e
f o u rs t a g e so fa t y p i c a ln o t e ' sl i f e .C o m p a r et h e
p i c t u r et o t h ed e s c r i p t i o ng i v e na b o v e .T a k e
t h et i m et o u n d e r s t a n dt h i sc o n c e p t .C a ny o u
s e ew h yt h et e r mA D S Re n v e l o p ei s u s e d ?
T h es i x t ha n d s e v e n t hr e g i s t e r s o fe a c h
v o i c es e t d e f i n et h eA D S Re n v e l o p e .W h e na
v o i c ei s t r i g g e r e d ,t h ev a l u e si n t h e s eA D S R
r e g i s t e r sc o n t r o lt h ev o i c e ' se n v e l o p eg e n e r a
t o r .I n t u r n ,t h ee n v e l o p eg e n e r a t o rc o n t r o l s
t h ea m p l i t u d e m o d u l a t o r .T h ea m p l i t u d em o d
u l a t o rt a k e s t h ew a v e sc o m i n gf r o mt h et o n e
o s c i l l a t o ra n dw a v e f o r mg e n e r a t o ra n da d j u s t s
t h e i ra m p l i t u d e .F i g u r e7 - 9d i a g r a m st h i sp r o
c e s s .
S t a r t i n gT o M a k eS o u n
7 . 8 . 1 S e t t i n gA t t a c ka n d D e c a yR a t e s
V a l u e sr e p r e s e n t i n ga t t a c ka n dd e c a
r a t e sa r es t o r e di n t h e s i x t hr e g i s t e ro f e a c
v o i c es e t .T h ea t t a c k r a t ev a l u eg o e si n t h
u p p e rn i b b l e ,a n dt h ed e c a yr a t ev a l u eg o e si n
t h el o w e rn i b b l e .
A n i b b l ec a ns t o r ev a l u e sf r o m0 t h r o u
1 5 .F i g u r e 7 - 1 0s h o w sh o wl o n gi t w i l lt a k e
s o u n dt o r i s ef r o mz e r ot o p e a kv o l u m ef o rt h
1 6d i f f e r e n ta t t a c kr a t es e t t i n g s .F o re x a m p
i f t h e v a l u eo ft h e n i b b l ei s 1 2 ,i t ' l lt a k ea l m o sa
f u l ls e c o n df o rt h ev o l u m et o r i s et o i t s p e a
v a l u e .
F i g u r e 7 - 1 1s h o w sr a t e so f d e c a yf o rt h
1 6 p o s s i b l en i b b l es e t t i n g s .T h e y ' r es h o w na s
t h et i m ei t w i l lt a k ea s o u n dt o f a l lf r o m p
v o l u m et o z e r ov o l u m e .T h et i m es p e n tg e t t i
t o a g i v e ns u s t a i nl e v e lw i l lb e b a s e d o nt h e s
T o n e
o s c i l l a t o r
R e g i s t e r s1 & 2
W a v e f o r m
g e n e r a t o r
R e g i s t e r s3 , 4 ,& 5
E n v e l o p e
g e n e r a t o r
R e g i s t e r s6 & 7
A m p l i t u d em o d u l a t o r T o f u r t h e r
p r o c e s s i n
F i g .7 - 9 .I n f o r m a t i o nf r o ma v o i c e ' st o n eo s c i l l a t o r ,w a v e f o r mg e n e r a t o r ,a n de n v e l o p eg e n e r a t o rc o m e st o g e t h e ra t t h
a m p l i t u d em o d u l a t o r ; t h er e s u l t i n gs i g n a lt h e ng o e so n f o rf i n a lS I Dp r o c e s s i n g .
1 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 148/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
A t t a c kr a t e s
N i b b l e
v a l u e
0
1
2
3
4
5
6
7
S e c o n d st o g o
f r o mz e r o
t o p e a k
v o l u m e
. 0 0 2
. 0 0 8
. 0 1 6
. 0 2 3
. 0 3 7
. 0 5 5
. 0 6 6
. 0 7 8
N i b b l e
v a l u e
8
9
1 0
1 1
1 2
1 3
1 4
1 5
S e c o n d st o g o
f r o mz e r o
t o p e a k
v o l u m e
. 0 9 8
. 2 4 4
. 4 8 9
. 7 8 2
. 9 7 8
2 . 9 3 3
4 . 8 8 9
7 . 8 2 2
F i g .7 - 1 0 .T h e1 6 a t t a c k r a t e sb u i l ti n t oS I Da n ds e l e c t e db y t h eu p p e rn i b b l e o fa v o i c e ' ss i x t h r e g i s t e r .
r a t e s .F o re x a m p l e ,l e t ' ss e tt h es u s t a i nl e v e l
t o 8 0 %o fp e a kv o l u m e , a n dt h ed e c a yv a l u et o
6 . U s i n gt h e s ev a l u e s ,i t w i l lt a k e2 0 %o f .1 9 9 ,
o r a b o u t. 0 4s e c o n d s ,f o rt h ev o l u m et o d r o p
f r o mi t s p e a kt o t h e s u s t a i nl e v e l .
O n c ey o u ' v ep i c k e dv a l u e sf o rt h e a t t a c k
a n d d e c a yr a t e s ,y o u n e e dt o f i g u r eo u t t h e
v a l u et o p o k ei n t ot h er e g i s t e r .J u s tm u l t i p l y
t h ea t t a c kv a l u eb y 1 6 a n dt h e na d di n t h ed e c a y
v a l u e .F o re x a m p l e ,s e t t h ea t t a c kv a l u ef o r
v o i c e# 1 t o 1 2 a n dt h e d e c a yv a l u et o 6 . 1 2
t i m e s 1 6i s 1 9 2 ,a n da d d i n g6 g i v e s1 9 8 .S o
y o u ' dp o k et h ev a l u e1 9 8i n t ot h ea t t a c k / d e c a y
r e g i s t e ra t S I D + 5 .
7 . 8 . 2 S e t t i n g t h eS u s t a i n
L e v e l sa n dR e l e a s eR a t e
V a l u e sr e p r e s e n t i n gt h es u s t a i nl e v e la n d
r e l e a s er a t ea r e s t o r e di n t h es e v e n t hr e g i s t e
o f e a c hv o i c es e t .T h eu p p e rn i b b l eh o l d st h e
s u s t a i nv a l u e ,a n dt h el o w e rn i b b l eh o l d st h e
d e c a yv a l u e .
S u s t a i nl e v e l sa r es e ta t a p e r c e n t a g eo f
t h ep e a kv o l u m e .F i g u r e7 - 1 2s h o w st h ep e r
c e n t a g e sf o rt h e1 6p o s s i b l en i b b l ev a l u e s .F o r
e x a m p l e ,s e t t i n ga s u s t a i nl e v e l o f9 m e a n st h e
s o u n dw i l ld r o pt o 6 0 %o f i t s p e a kv o l u m e
S e t t i n ga s u s t a i nl e v e lo f 1 5 w i l lh o l d t h ev o l
u m ea t i t s p e a kv a l u e .
1 3 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 149/258
D e c a yR a t e s
S t a r t i n gT o M a k eS o u n d
N i b b l e
v a l u e
0
1
2
3
4
5
6
7
S e c o n d st o g o
f r o mp e a k
v o l u m et o
z e r o
. 0 0 6
. 0 2 3
. 0 4 7
. 0 7 0
. 1 1 1
. 1 6 4
. 1 9 9
. 2 3 5
N i b b l e
v a l u e
8
9
1 0
1 1
1 2
1 3
1 4
1 5
S e c o n d st o g o
f r o mp e a k
v o l u m et o
z e r o
. 2 9 3
. 7 3 3
1 . 4 6 7
2 . 3 4 7
2 . 9 3 3
8 . 8 0 0
1 4 . 6 6 7
2 3 . 4 6 7
F i g .7 - 1 1 .T h e1 6 d e c a yr a t e sb u i l ti n t oS I Da n ds e l e c t e db y t h el o w e rn i b b l eo f a v o i c e ' ss i x t hr e g i s t e r .
S u s t a i n L e v e l sA — ^
N i b b l e
v a l u e
0
1
2
3
4
5
6
7
% o f p e a k
v o l u m e
0 . 0
6 . 7
1 3 . 3
2 0 . 0
2 6 . 7
3 3 . 3
4 0 . 0
4 6 . 7
N i b b l e
v a l u e
8
9
1 0
1 1
1 2
1 3
1 4
1 5
% o f p e a k
v o l u m e
5 3 . 3
6 0 . 0
6 6 . 7
7 3 . 3
8 0 . 0
8 6 . 7
9 3 . 3
1 0 0 . 0
F i g .7 - 1 2 .T h e1 6 s u s t a i nl e v e l sb u i l ti n t oS I D a n ds e l e c t e db y t h eu p p e rn i b b l e o fa v o i c e ' ss e v e n t hr e g i s t e r .
1 3 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 150/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
R e l e a s eR a t e s
N i b b l e
v a l u e
0
1
2
3
4
5
6
7
S e c o n d st o g o
f r o mp e a k
v o l u m et o
z e r o
. 0 0 6
. 0 2 3
. 0 4 7
. 0 7 0
. 1 1 1
. 1 6 4
. 1 9 9
. 2 3 5
N i b b l e
v a l u e
8
9
1 0
1 1
1 2
1 3
1 4
1 5
S e c o n d st o g o
f r o mp e a k
v o l u m et o
z e r o
. 2 9 3
. 7 3 3
1 . 4 6 7
2 . 3 4 7
2 . 9 3 3
8 . 8 0 0
1 4 . 6 6 7
2 3 . 4 6 7
F i g .7 - 1 3 .T h e1 6 r e l e a s er a t e sb u i l ti n t oS I D a n ds e l e c t e db y t h el o w e rn i b b l eo f a v o i c e ' ss e v e n t hr e g i s t e r .
R e l e a s er a t e sa r e s h o w ni n F i g .7 - 1 3 .
T h i sc h a r ti s j u s tl i k eF i g .7 - 1 1 ,w h i c hs h o w e dd e c a yr a t e s .T h et i m e ss h o w nt e l lh o wl o n gi t ' l l
t a k ea s o u n dt o f a l lf r o m p e a kv o l u m et o z e r o
v o l u m e .T h ea c t u a lt i m ea s o u n dw i l ls p e n d
f a l l i n gf r o mt h es u s t a i nl e v e l t oz e r ov o l u m ei s
b a s e do n t h e s er a t e s .F o re x a m p l e , s a yt h e
s u s t a i nl e v e li s 5 0 %o f p e a kv o l u m e , a n dy o u
c h o o s ea r e l e a s ev a l u eo f 1 0 . T h e ni t ' l lt a k e
5 0 %o f 1 . 4 6 7 ,o r . 7 3 3 s e c o n d s ,f o rt h ev o l u m e
t o d r o pt o z e r o .
O n c ey o up i c kv a l u e sf o rs u s t a i na n dr el e a s e , j u s tm u l t i p l y t h es u s t a i nv a l u eb y 1 6a n d
a d dt h e r e l e a s ev a l u e .T h a t ' s t h en u m b e rt o
p o k ei n t ot h es e v e n t hr e g i s t e r .F o re x a m p l e ,
a s s u m ey o uc h o o s ea s u s t a i nv a l u eo f 3 a n da
r e l e a s ev a l u eo f 1 1 f o rv o i c e# 2 .3 t i m e s1 6 i s
4 8 ,a n da d d i n g1 1 g i v e s5 9 .W h i c hi s t h ev a l u e
t o p o k ei n t ot h er e g i s t e ra t S I D + 1 3 .
7 . 9 T U R N I N GA S O U N DO N A N DO F F :
G A T I N GT H E E N V E L O P EG E N E R A T
T h ef i f t hr e g i s t e ro f e a c hv o i c es e t i s a
w a v e f o r mc o n t r o l l e r .A s y o us a wi n S e c t i o
7 . 6 , i t s u p p e rn i b b l ei s u s e dt o s e l e c ta
w a v e f o r m .B i t0 o f t h e s er e g i s t e r si s u s e dt o
t u r na s o u n do n a n do f f .I t d o e st h i sb y g a t i n g
o r t r i g g e r i n g ,t h ev o i c e ' se n v e l o p eg e n e r a t o
I t ' sc a l l e d ag a t eb i t .
S e t t i n g a g a t eb i t t o 1 t e l l st h a tv o i c e '
e n v e l o p eg e n e r a t o rt o s t a r ta n A D S Rc y c l e
T h ev o l u m er i s e sf r o mz e r ot o i t sp e a kv a l u e
a n dt h e nf a l l st o t h es u s t a i nl e v e l .I t s t a y st h e r e
u n t i lt h e g a t eb i t i s r e s e tt o 0 . W h e nt h a t
1 3 6
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 151/258
h a p p e n s ,i t t r i g g e r st h e r e l e a s ea c t i o n ,a n d
v o l u m ef a l l st o z e r o .
W h e ny o u ' r e w r i t i n gs o u n d p r o g r a m si nB A S I C ,i t ' sa g o o di d e at o c o m b i n ec h o o s i n ga
w a v e f o r mw i t hg a t i n g t h ee n v e l o p eg e n e r a t o r .
F o re x a m p l e ,p o k i n gS I D + 4w i t ht h ev a l u e1 7
w i l ls e l e c tt h et r i a n g l ew a v e f o r ma n ds t a r ta n
A D S Rc y c l e .P o k i n gS I D + 4w i t h 1 6w i l lk e e p
t h et r i a n g l ew a v e f o r ms e l e c t e da n ds t a r tt h e
r e l e a s ep a r to f t h eA D S Rc y c l e .F i g u r e7 - 1 4
s h o w sp o k i n gv a l u e st h a t ' l lt r i g g e ra n dr e l e a s e
a s o u n d .
7 . 1 0 T H EM A S T E RV O L U M EC O N T R O LL e t ' sr e v i e wa b i t .S I Dh a st h r e ev o i c e s .
S t a r t i n gT o M a k eS o u n
E a c hv o i c eh a s i t s o w nt o n eo s c i l l a t o ra n d
w a v e f o r mg e n e r a t o r ,w h i c hp r o d u c ew a v e
f o r m sa t s e tf r e q u e n c i e s .T h e s es i g n a l sg o t ot h e v o i c e ' sa m p l i t u d e m o d u l a t o r ,w h e r et h e
v o l u m eg e t s m o d i f i e d .E a c hv o i c eu s e s a ne n
v e l o p eg e n e r a t o rt o c o n t r o li t sa m p l i t u d em o d
u l a t o r .
T h es i g n a l sf r o mt h e t h r e ev o i c e st h e ng o
t o a n o v e r a l lv o l u m ec o n t r o l .T h i sd e v i c em i x
e s t h e v o i c e s t o g e t h e ra n ds e t sS I D ' so v e r a
o u t p u tv o l u m e .S o m e t i m e sa v o i c ew i l lm a k ea
d e t o u rt o a f i l t e r i n gd e v i c eo n i t s w a yt o t h e
o v e r a l lv o l u m ec o n t r o l ,b u ty o ud o n ' tn e e dt ot h i n ka b o u tt h a t r i g h tn o w .
W a v e f o r m
T r i a n g l e
S a w t o o t h
P u l s e
N o i s e
P o k et h i s
v a l u et o
t r i g g e r
1 7
3 3
6 5
1 2 9
P o k et h i s
v a l u et o
r e l e a s e
1 6
3 2
6 4
1 2 8
F i g .7 - 1 4 .V a l u e st o p o k ei n t oa v o i c e sf i f t hr e g i s t e r t o t r i g g e ro r r e l e a s et h eA D S Re n v e l o p ew h i l es e l e c t i n ga w a v e f o r
1 3 7
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 152/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
B i t s0 - 3o f t h er e g i s t e ra t S I D + 2 4s e tt h e
o v e r a l lv o l u m e .I t c a nb e s e tt o a n yv a l u eb e
t w e e n0 a n d1 5 .A s e t t i n go f 1 5g i v e sm a x i m u m
y o l y m e ,w h i l ea s e t t i n go f0 l e a d st o n oo u t p u t .
T h a tc o n c l u d e st h i sp r e l i m i n a r yl o o ka t
S I D .L e t ' sn o wt a k ea q u i c k l o o ka t m u s i c a l
n o t e f r e q u e n c i e sa n d t h e nc l o s eu p w i t ha
m u s i c a lp r o g r a m .
7 , 1 1 T H EF R E Q U E N C I E S
O FM U S I C A LN O T E S
M o s to f o u rc u l t u r e ' sm u s i ci s b a s e do n
s c a l e st h a tc o n t a i nt w e l v en o t e s :C , C # , D ,D # ,E , F , F # ,G , G # ,A , A # ,a n d B .A t w e l v e
n o t es c a l ef o r m s a no c t a v e .A s y o um o v eu p
f r o m o n eo c t a v et o t h en e x t ,t h ef r e q u e n c i e s
d o u b l e .T h a ti s , i f a nA n o t ei n o n eo c t a v eh a sa
f r e q u e n c yo f 4 4 0h e r t z ,t h eA n o t ei n t h en e x t
p c t a v eu p w i l lh a v ea f r e q u e n c yo f 8 8 0h e r t z .
A s y o um o v ef r o m o n en o t et o t h en e x t
w i t h i na s c a l e ,t h ef r e q u e n c yi s t h e 1 2 t h r o o to f
2 t i m e st h ep r e v i o u sn o t e ' sf r e q u e n c y .T h a t
w a y ,a f t e r1 2 n o t e s( a no c t a v e )t h ef r e q u e n c yd o u b l e s .
I n a s t a n d a r ds c a l e ,k n o w na s c o n c e r t
p i t c h ,t h eA n o t ei n t h ef o u r t ho c t a v ei s s e t t o
4 4 0h e r t z .O n c et h a tv a l u ei s k n o w n ,a l l t h e
O t h e rf r e q u e n c i e sc a nb e f i g u r e d .
A p p e n d i xM g i v e s f r e q u e n c i e si n h e r t zf o r
l e j g h to c t a v e so f m u s i c a ln o t e s ,b a s e do n c o n
c e r tp i t c h .I t a l s og i v e st h e S I Df r e q u e n c y
s e t t i n gf o re a c hn o t e ,a n db r e a k st h a ts e t t i n g
u p i n t oa h i g ha n da l o wb y t e .L e t ' ss a yy o uw a n tv o i c e# 1 t o p r o d u c ea
C n o t ei n t h e f o u r t ho c t a v e( a l s ok n o w na s
j n i d d l eC ) . A c c o r d i n gt o t h ec h a r t , t h a tn o t e
H a sa f r e q u e n c yo f 2 6 1 . 6h e r t z .B yp o k i n g1 6
i n t oS I D + 1 ,a n d 1 9 5i n t oS I D ,y o uc a ns e t
v o i c e1 t o p r o d u c en o t e sa t t h a tp i t c h .
7 . 1 2 F I N A L L Y :A L I T T L EM U S I CN o wy o u ' r er e a d yt o p u ta l l o f o u rS I D
k n o w l e d g et o w o r k . F i g u r e 7 - 1 5l i s t st h ep r o
g r a mP l a yS o m eS o u n d s .T y p ei t i n , s a v ei t ,
a n dt h e nr u ni t . I t u s e sv o i c e# 1 t o p l a ya s c a l e .
L e t ' sg o o v e rt h ep r o g r a m .T h ef i r s ts e g
m e n tc l e a r st h es c r e e na n ds e t su p t w ov a r i
a b l e s :S I D ' ss t a r t i n ga d d r e s s ,a n dt h ef a c t o
u s e dt o c o n v e r tf r e q u e n c i e si n h e r t zt o S I D
f r e q u e n c ys e t t i n g s .
T h en e x ts e g m e n ts e t su p a t t a c k ,d e c a y s u s t a i n ,a n dr e l e a s ev a l u e s .T h en o t e sw i l lr i s e
q u i c k l yt o p e a kv o l u m e ,s t a y t h e r eu n t i lt h e
g a t eb i ti s r e s e t ,t h e nf a l lq u i c k l yt o z e r ov o l
u m e .
N e x t ,t h eo v e r a l lv o l u m el e v e li s s e t .Y o u
a l s oc h o o s ea d u r a t i o nf o re a c hn o t e :V as e c o n d
T h a t ' sh o wl o n gy o u ' l ll e t t h en o t eg o b e f o r
t r i g g e r i n g t h e r e l e a s e s t a g eo fa nA D S Rc y c l e .
T h en e x ts e g m e n tr e a d sf r e q u e n c i e sf r o m
t h e d a t as t a t e m e n t sa n dc o n v e r t st h e mi n t ov a l u e st o p o k ei n t ot h ef r e q u e n c yr e g i s t e r sa t
S I Da n dS I D + 1 . R e v i e wS e c t i o n7 . 5i f y o u ' r
w o n d e r i n gw h e r ea l lt h ef o r m u l a sc o m ef r o m .
T h ep r o g r a mw i l le n dw h e na f r e q u e n c yo f 0
g e t sr e a d .
Y o u ' v es e t t h e A D S Re n v e l o p e ,o v e r a l
v o l u m e , a n df r e q u e n c y .N o wi t ' st i m et o p l a y
t h en o t e .L i n e1 4 8 0 p o k e sS I D + 4w i t ha v a l u e
t h a ts e t st h e w a v e f o r ma n dt r i g g e r st h e e n
v e l o p eg e n e r a t o r .V o l u m er i s e st o a p e a k ,d ec a y st o t h e s u s t a i nl e v e l ,a n dt h e ns i t st h e r e
w h i l ea d e l a yl o o pm a r k st i m e .L i n e1 5 3 0i n i t i
a t e st h e r e l e a s ep e r i o d ,a n dv o l u m ed r o p st o
z e r o .T h e ni t ' sb a c kf o ra n o t h e rn o t e .
A l lr i g h t ,n o wi t ' sy o u rt u r n .F i d d l em e r -
1 3 8
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 153/258
z-e*e'sese
1113SU38:31A8-81U38:31A8-IHU38:
183nN03U38:
'L'ZBZ'9'T92
IHJ'T+OIS01J'OIS
9£Z«IHJ—08JC9SZ/08J>INI
(JN3SD8J>INI
wiwa
S*8d33IOd
=ou=IHJ
-08J06CTN3H18=08JJI
Z183HNIU38:
319NVI81U38:
A3N30038J91
1113SU383Uni9ndOlU38S4N03SSNIM3a
unionasisvu9
1I13SU38:3NI8U03U38:
AaSSdSU38:iondoiusa:
1I13SUS8:3NI8U03US8:
3131nousa:3131nousa:
08J<IV382
9T=uajnwi
uaojsnvriiss*
:ion'pz+qis:CT:VS1
Nonvanoiss*
as'9+aisS18+9T*1SS
9ST
aw'c+aisA3I<I+9T*3I1V
99
3dO13nN38SQV13S*
Z6S6899'ZIZPZ
ssiaviavn9Nssassdniss»
***SONOOS3U0SAMld**
Z
*usa2
z
32IOdi
=ion=ana
*usa2
z
33IOd=as
=sia=iss
2
33IOds<|V
=A3I0=311V
z
*U38z
2
=JN3=aisiNiad
*U38:
z
*U38
QZPJ
QQPT06£T08£T8J.ST
09£TOC£T8t^CTQ££T02£TOT£T99CT96ZT082T81ZT092T0C2Torzi0£2TOZZfOTZT88ZT86TT88TT81TTQ9TTOCTTOfrTT
8CTTQ2TT8TTT88TT868T888T8J.8T899TOCOT
9C9TQ20T9T9T999T
01
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 154/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 4 3 61 4 4 6
1 4 3 01 4 6 81 4 7 61 4 8 6I 4 8 61 S 6 61 3 1 81 3 2 81 3 3 81 3 4 81 3 3 8
1 3 6 61 3 7 81 3 8 81 3 8 81 6 8 81 6 1 8
D A T A
R E N
P O K E
F O RN E X T
P O K EG O T O
*
R E H:
P O K E:
E N D
3 8 2 . 0 ,4 4 8 . 8 , 4 8 3 . 8 , 3 2 3 . 3 ,8
* * P L A YT H EN O T E ,T H E N6 0 B A C K
S I D + 4 ,M A U F R M+ 1
T M = ± T O < D U R* T 0 8 >T M
S I D + 4 ,M A U F R M1 3 4 8
* » C L E A NU P A N DE N D
S I D + 2 4 ,8 : R E NU O L U N EO F F
F i g .7 - 1 5 .L i s t i n go f t h ep r o g r a mP l a yS o m eS o u n d s .
c i l e s s l yw i t ht h i sp r o g r a m .C h a n g et h e f r e
q u e n c i e s , t h eA D S Re n v e l o p e ,t h eo v e r a l lv o l
u m e ,t h e w a v e f o r m — a n y t h i n gy o uc a nt h i n k
o f . T h e r ea r e n ' ta n ym a g i cf o r m u l a st o s o u n d
m a k i n g ,y o u ' v ej u s tg o tt o e x p e r i m e n t .T r yt o
g e ta n i n t u i t i v e f e e l f o rv a r i o u sS I Ds e t t i n g s .
H a v ef u n .
7 . 1 3 C H A P T E RS U M M A R Y
T h i sc h a p t e rh a s i n t r o d u c e dy o ut o s o u n d
m a k i n g o nt h eC o m m o d o r e6 4 . L e t ' ss e ew h a t
w e ' v ec o v e r e d :
* S o u n d s ,v i b r a t i o n s ,a n dw a v e s* F r e q u e n c y ,a m p l i t u d e ,a n dw a v e f o r m s
* S I D ' st h r e ev o i c e s ,a n dt h ed e v i c e st h a t
c r e a t ee a c ho n e : t h et o n eo s c i l l a t o r ,
w a v e f o r mg e n e r a t o re n v e l o p eg e n e
r a t o r ,a n da m p l i t u d em o d u l a t o r
* T h eg e n e r a ll a y o u to fS I D ' s2 9r e g i s t e r
* H o wt o s e ta v o i c e ' sf r e q u e n c y ,w a v ef o r m ,p u l s ew i d t h ,a n dA D S Re n v e l o p
* H o wt o t u r na v o i c eo na n do f fb yg a t i n g
i t s e n v e l o p eg e n e r a t o r
* H o wt o s e ta n o v e r a l lv o l u m el e v e l
* H o wt h ef r e q u e n c i e so f m u s i c a ln o t e s
a r ed e t e r m i n e d
* H o wt o u s ea l l o f t h i si n f o r m a t i o ni n a
p r o g r a mt o c r e a t es o u n d s
S I D ' sp o w e ra n dv e r s a t i l i t ym a k es o u n dp r o d u c t i o na s e n d l e s sa f i e l df o ri n v e n t i o na s
V I C - I Id o e sw i t hg r a p h i c s .I n t h en e x tc h a p t e r
y o u ' l ll o o ka t m o r ep r o g r a m st h a tu s eS I Dt o
m a k em u s i c .
1 4 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 155/258
S t a r t i n gT o M a k eS o u n d
7 . 1 4 E X E R C I S E S
7 . 1 4 . 1S e l fT e s tA n s w e r sa r ei n S e c t i o n7 . 1 4 . 3 .
1 . ( 7 . 1 )T h r e ew a y st o d e s c r i b ea s o u n dw a v e
a r e b y i t s , i t s ,
a n di t s
2 . ( 7 . 3 )S I Dh a s s e p a r a t e
v o i c e s .
3 . ( 7 . 4 )T h er e g i s t e r sf r o mS I D + 7t h r o u g h
S I D + 1 3c o n t r o lv o i c e#
4 . ( 7 . 5 )B yp o k i n gS I Dw i t ht h e v a l u e1 6 a n dS I D + 1w i t ht h ev a l u e3 9 ,w eg i v ev o i c e #
a f r e q u e n c yo f
h e r t z .
5 . ( 7 . 6 )S e t t i n gb i t7 o f S I D + 1 8t o 1 s e l e c t s
t h e w a v e f o r mf o r v o i c e#
6 . ( 7 . 7 )T o g i v e v o i c e# 3 a p u l s ew i d t ho f
2 0 % ,y o u ' dp o k eS I D + 1 7w i t h t h e v a l u e
a n dS I D + 1 6w i t ht h e v a l u e
7 . ( 7 . 8 . 1 )I f a v o i c e ' s a t t a c k r a t e s e t t i n gi s 3 ,
i t ' l lt a k e s e c o n d st o g o f r o m
z e r ot o p e a kv o l u m e .
8 . ( 7 . 8 . 2 )T o g i v e v o i c e# 1 a s u s t a i nl e v e l
t h a t ' s4 0 %o f i t s p e a kv o l u m ea n dt h e
s l o w e s ta v a i l a b l er e l e a s er a t e ,y o u ' dp o k e
t h e v a l u e i n t o S I D+
9 . ( 7 . 9 )B i t0 o fe a c hv o i c es e t ' sf i f t hr e g i s t e r
i s u s e dt o t r i g g e rt h a tv o i c e ' sg e n e r a t o r .
1 0 . ( 7 . 1 0 )O v e r a l lS I Do u t p u tv o l u m ei s s e tb y
t h e l o w e rf o u rb i t s o f t h e r e g i s t e ra t
1 1 . ( 7 . 1 1 )I f a 7 t ho c t a v eC n o t eh a sa f r e
q u e n c yo f2 0 9 3h e r t z ,a n8 t h o c t a v eC n o t e
w i l lh a v ea f r e q u e n c yo fh e r t z .
7 . 1 4 . 2 P r o g r a m m i n gE x e r c i s e s
T h e s ea r e p r e t t yo p e n - e n d e d :p l a y , p l
p l a y !
1 . C h a n g et h ep r o g r a mM i n i m a lS i r e ns o
i t s o u n d sl i k es o m e t h i n g f r o o u t e
s p a c e .
2 . C h a n g et h e p r o g r a mP l a yS o m S o u n d ss o i t g l i d e su p a n dd o w nt h e
s c a l eu n t i ly o up r e s sa k e y .
3 . C h a n g et h e p r o g r a mP l a yS o m
S o u n d ss o v o i c e# 2 j o i n si n . H a v
v o i c e# 2p l a ys o u n d sa f e wn o t e sa w a
f r o mv o i c e# 1 .
7 . 1 4 . 3 A n s w e r st o S e l fT e s t
A s u s u a l ,n o t et h a ty o um a yb e a b l et oc o m eu p w i t hb e t t e ra n s w e r s .
1 . f r e q u e n c y( p i t c h ) ;a m p l i t u d e( l o u d n e s
v o l u m e ) ;w a v e f o r m( t i m b r e )
2 . t h r e e
3 . 2
4 . 1 ; 1 0 0 0 0
5 . n o i s e ;3
6 . 3 ; 5 1
7 . . 0 2 38 . I l l ; 6
9 . e n v e l o p e
1 0 . S I D + 2 4( 5 4 2 9 6 )
1 1 . 4 1 8 6
1 4 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 156/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
7 . 1 4 . 4 P o s s i b l e S o l u t i o n s 1 3 5 0I F F R Q= 8 T H E M R e s t o r e : g . B . . . 1 4 3 0 D A T A3 9 2 . 6 , 4 4 0 . 0 , 4 9 3 . 9 ,5 2 3 . 3t o P r o g r a m m i n gE x e r c i s e s 1 4 3 3 D A T A5 2 3 . 3 ,4 9 3 . 9 ,4 4 0 . 0 ,3 9 2 . 0
1 4 3 6 D A T A3 4 9 . 2 , 3 2 9 . 6 ,2 9 3 . 7 ,2 6 1 . 6 ,0
1 . L o a di n t h ep r o g r a mM i n i m a lS i r e n .± 5 1 5g e t k p s
T h e nt y p ei n t h e s el i n e s : 1 3 1 TI F K P $° " i l T H E N 1 5 9 8: R E ME H DI T
3 . L o a di n t h e p r o g r a mP l a y .S o m e
S o u n d s .T h e nt y p ei n t h e s el i n e s .
1 0 0 0R E N* * * T M O - U O I C E S O U N D S* * *
1 1 5 5 P O K ES I D + 1 2 ,A D : R E NS E T U - 2
1 2 0 5 P O K ES I D + 1 3 ,S R : R E NS E T U - 2
1 3 6 3 U 2 F A C= 2 f ( 5 / 1 2 ) : R E NH A R N N V
1 3 6 5 F R Q < 2 >= F R Q* U 2 F A C: R E NU 2 F Q
2 T n a Hi n t h * >n r n a r a mP l a v9 n r r t P 1 4 8 2™ I < 2 >= I H T < F R Q < 2 > / 2 5 6 >: R E NU 2z . L o a di n t h e p r o g r a mF l a yb o r n e ± 4 MF L 0 C 2 >= F R Q C 2 )_ F H 1 C 2 > » 2 5 6
b o u n d s .T h e nt y p ei n t h e s el i n e s : i 4 8 6p o k es i d + t ,f l o < 2 > : r e nu - 2 l o - 1 4 0 0 P O K ES I D + 8 ,F H K 2 ) : R E NU - 2 H I -
1 0 0 0R E N« * » R O L L E R C O A S T E R* * * 1 4 0 5 P O K E S I D + 1 1 ,U A U F R N+ 1
1 2 5 0D U R= 1 / 5 0 : R E NI N S E C O N D S 1 5 3 5 P O K ES I D + 1 1 ,U A U F R N
1 0 0 01 0 2 01 0 3 01 0 4 0
1 0 5 01 0 5 1
1 0 5 2
R E N
P O K EP O K EF O R
:
:
:
* « « F R O G SF R O NN A R S« «
5 4 2 7 0 , 1 6 4
5 4 2 7 6 , 1 7
N = 1 T O 3 0
P O K E5 4 2 7 3 ,P O K E5 4 2 7 3 ,
P O K E5 4 2 7 3 ,
: R E NS E T
: R E NN O T E
: R E NF R O G
1 + N * Si + N
5 0 - N
* -
S U S T A I N
O N
C I T V
1 4 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 157/258
C h a p t e r8
S o m eF a n c y
M u s i cM a k i n g
I n t h el a s tc h a p t e ry o ul e a r n e da b o u t S I D ,t h e
C o m m o d o r e6 4 ' s v e r s a t i l es o u n dc h i p .N o w
y o u ' l lu s e t h i sk n o w l e d g et o m a k e s o m ei n
t e r e s t i n gm u s i c .Y o u ' l lt e a c ht h ec o m p u t e rt o
r e a dn o t e sa n ds t o r e t h ei n f o r m a t i o ni n a p e rf o r m a n c ea r r a y .T h e ny o u ' l lp l a yt h e n o t e s
t h r o u g ho n eo f S I D ' sv o i c e s .F i n a l l y ,y o u ' l l
e x t e n dt h e s et e c h n i q u e st o m u s i ct h a tu s e sa l l
t h r e ev o i c e s .
8 . 1 R E A D I N GM U S I C
I n t h ep r o g r a mP l a yS o m eS o u n d s ,f r o m
t h el a s tc h a p t e r ,y o us p e c i f i e dm u s i c a l n o t e sb y
t h e i rf r e q u e n c i e s .T h ep r o g r a mu s e dt h a tv a l u e
t o f i g u r eS I Ds e t t i n g s .L e t ' sm a k et h i n g se a s i e rb y g e t t i n ga p r o g r a mt o p l a yn o t e s
s p e c i f i e db y l e t t e rn a m e s ,C , G # ,e t c . ,a n d
o c t a v en u m b e r s .Y o u ' l ln e e da r e f e r e n c et a b l e
s i m i l a rt o A p p e n d i xM i n o u r p r o g r a m .T h e n
y o uc a nh a v et h ep r o g r a mr e a da n o t eb y l e t t e r
a n do c t a v e ,l o o ku pi t sS I Df r e q u e n c ys e t t i n gi n
t h et a b l e ,a n d u s et h a tv a l u et o p o k et h eS I D
r e g i s t e r s .B u tA p p e n d i xM i s p r e t t yl o n g .W h
w a n t st o d o a l l t h a tt y p i n g ?L e t ' st a k ea
s h o r t c u t .
8 . 1 . 1 T y p i n gS h o r t c u t :
U s i n ga R e f e r e n c eO c t a v e
I n t h el a s tc h a p t e r ,I m e n t i o n e dt h a tf r e
q u e n c i e s d o u b l ea s y o um o v eu pa no c t a v e .F o r
e x a m p l e ,a n A n o t ei n t h ef o u r t ho c t a v e h a
f r e q u e n c yo f 4 4 0h e r t z ,w h i c hi s t w i c e t h e2 2 0
h e r t zf r e q u e n c yo f a n A n o t ei n t h et h i r do c
t a v e .
Y o uc a nu s et h i sf a c t .Y o u ' l lm a k ea r e f e re n c et a b l et h a th a st h eS I Df r e q u e n c ys e t t i n
f o r t h e t w e l v en o t e si n t h e h i g h e s to c t a v
o c t a v e7 . W h e nt h ep r o g r a mr e a d sa n o t e ,i t
w i l ls e eh o wm a n yo c t a v e si t i s b e l o wt h e
h i g h e s to c t a v e .T h e ni t w i l ld i v i d e t h er e f e r
1 4 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 158/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
e n c es e t t i n gb y2 f o re a c ho c t a v eo f d i f f e r e n c e ,
a n dr o u n dt h ef i n a lr e s u l t t ot h en e a r e s tw h o l e
n u m b e r .O n c ey o uh a v et h i sf r e q u e n c ys e t t i n g ,
y o u ' l lj u s td i v i d ei t b y 2 5 6 .T h ei n t e g e rp a r to f
t h ea n s w e ri s t h eh i g h b y t eo f t h ef r e q u e n c y
s e t t i n g ,a n dt h er e m a i n d e ri s t h el o wb y t e .
H e r e ' s a ne x a m p l e .L e t ' ss a yt h ep r o g r a m
r e a d sa n o t et h a t ' sa s e c o n do c t a v eF # .T h a t ' s
f i v eo c t a v e sb e l o wt h e h i g h e s to c t a v e .T h eS I D
f r e q u e n c ys e t t i n gf o ra s e v e n t hF # i s 4 8 5 5 7 .
D i v i d i n gt h a tv a l u eb y 2 g i v e sy o u2 4 2 7 8 . 5 .
A f t e rf o u rm o r ed i v i s i o n s ,y o ue n du pw i t ht h e
v a l u e1 5 1 7 . 4 0 6 2 ,w h i c hr o u n d so f f t o 1 5 1 7 .
D i v i d i n gb y 2 5 6 ,y o ug e t 5f o rt h e h i g hb y t eo f
t h es e t t i n ga n d2 3 7f o rt h el o wb y t e .C h e c k i n g
w i t hA p p e n d i xM , y o us e et h a tt h i sm e t h o dh a s
g i v e nu s t h e c o r r e c tv a l u e s .F i g u r e8 - 1s h o w s
t h e l e t t e rn a m e so f t h e t w e l v en o t e si n t h e
s e v e n t ho c t a v e ,a l o n gw i t ht h e i rf r e q u e n c i e i n
h e r t za n d t h e c o r r e s p o n d i n gS I Df r e q u e n c
s e t t i n g s .
T oc r e a t em u s i cy o un o wn e e dt o s p e c i f ya
n o t en a m ea n do c t a v en u m b e rf o re a c hn o t e .
Y o uc a nd o t h i sw i t hs t r i n g s .F o re x a m p l e ,y o u
c a n r e p r e s e n ta f i f t ho c t a v eG # a s
G # - 5
A p r o g r a mc a nu s es t r i n gf u n c t i o n st o e x t r a c t
t h en o t en a m ea n do c t a v ef r o md a t as t o r e di n
t h i sf o r m .
N o t e
C
C #
D
D #
E
F
F #
G
G #
A
A #
B
F r e q u e n c y
i n h e r t z
2 0 9 3 . 0
2 2 1 7 . 5
2 3 4 9 . 3
2 4 8 9 . 0
2 6 3 7 . 0
2 7 9 3 . 8
2 9 6 0 . 0
3 1 3 6 . 0
3 3 2 2 . 4
3 5 2 0 . 0
3 7 2 9 . 3
3 9 5 1 . 1
S I Df r e q u e n c y
s e t t i n g
3 4 3 3 4
3 6 3 7 7
3 8 5 3 9
4 0 8 3 1
4 3 2 5 8
4 5 8 3 1
4 8 5 5 7
5 1 4 4 4
5 4 5 0 2
5 7 7 4 3
6 1 1 7 7
6 4 8 1 5
F i g .8 - 1 .T h et w e l v en o t e so f t h es e v e n t ho c t a v e ,t o b e u s e da s a r e f e r e n c e o c t a v e .
1 4 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 159/258
S o m eF a n c yM u s i cM a k i n
8 . 1 . 2 N o t eD u r a t i o n s
I n t h ep r o g r a mP l a yS o m eS o u n d se v e r y
n o t el a s t e df o rt h es a m ea m o u n to f t i m e .T h i s
g e t sb o r i n g .Y o uc a ni n c l u d ea d u r a t i o nn u m b e r
f o re a c hn o t ei n a p r o g r a m ' sd a t as t a t e m e n t s .
L e t ' st a k ea h i n tf r o mw r i t t e nm u s i ca n d
s e tu p a s t a n d a r dd u r a t i o n , c a l l e d ab e a t .T h e n
e a c hn o t e ' sd u r a t i o nc a nb e g i v e na s a n u m b e r
o fb e a t s .F o re x a m p l e ,y o uc a n r e p r e s e n ta nF
n o t ei n t h et h i r do c t a v et h a tl a s t s f o rf o u rb e a t s
a s a s t r i n ga n da n i n t e g e r :
F - 3 , 4
H o ww i l lt h ep r o g r a mm a k eo n en o t el a s tf o r
t w ob e a t s ,a n da n o t h e rl a s tf o rt h r e e ?T h e r e
a r ea n u m b e ro f w a y st o d o t h i s .O n eo f t h e
m o s tf l e x i b l ei s t o u s ew h a tI c a l lp e r f o r m a
a r r a y s .
8 . 2 P E R F O R M A N C EA R R A Y S :
A G U I D ET OE V E R YB E A T
A p e r f o r m a n c ea r r a yh o l d sa S I Dv a l u ef o r
e a c hb e a to f a s o n g .A p r o g r a mm i g h th a v ea
n u m b e ro f d i f f e r e n tp e r f o r m a n c ea r r a y s .O n e
a r r a yc o u l d h o l dt h el o wb y t e sf o rv o i c e# l ' s
f r e q u e n c ys e t t i n g ,a n da n o t h e rc o u l dh o l d t h
h i g hb y t e s .A t h i r da r r a yc o u l dh o l dv a l u e sf o r
v o i c e# l ' s a t t a c k / d e c a yr e g i s t e r .
W h e ni t c o m e st i m ef o rt h ep r o g r a mt o
p l a ya l l t h e n o t e s ,i t w i l ls i m p l yg o t h r o u g ha
b e a tl o o p .E a c ht i m e t h r o u g ht h e l o o p ,t h a t
b e a t ' sv a r i o u sS I Ds e t t i n g sw i l lb ep u l l e df r o m
t h ep e r f o r m a n c ea r r a y sa n dp o k e di n t op l a c e
i e e e1 6 1 81 0 2 01 0 3 01 0 4 01 0 3 0
1 0 6 0M A ? Al u f U
1 0 8 81 0 9 81 1 8 81 1 1 81 1 2 81 1 3 81 1 4 81 1 3 81 1 6 81 1 7 81 1 8 8
1 1 9 81 2 8 81 2 1 81 2 2 81 2 3 81 2 4 81 2 3 81 2 6 8
R E M
:
R E M
* * » R E A D M U S I C* *
« « S E T U P S C R E E N
P R I H T" L " ; : R E M
*
f t M A R I A B L E S
C L E A RS C R E E N
P R I N T" t i l i n i i l i l i l l l i l U l i g F f t D I M G " ;
S I D:
:
R E M:
D I MF O R
:
N E X T:
D A T AD A T AD A T AD A T AD A T AD A T A
:
= 3 4 2 7 2 : R E MS O U N D C H I P
* » S E TU P R E F E R E N C E A R R A Y S
S B N < 1 1 > , H N S C i i )N - 0 T O 1 1R E A D S B N C N )R E A DN M S C N )
N
3 4 3 3 4 ,C , 3 6 3 7 73 8 3 3 9 ,D , 4 0 8 3 14 3 2 3 8 ,E , 4 3 8 3 14 0 3 3 7 ,F i t , 3 1 4 4 43 4 3 0 2 ,G i t , 3 7 7 4 36 1 1 7 7 ,A l l , 6 4 8 1 3
R E MD A S E DO NR E MN O T E SI NR E MH I G H E S T
: R E MO C T A V E
, c t t
, D I t
, F, 6, A, B
1 4 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 160/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 2 7 6 R E M« * R E A DI N T H EM U S I CA N DS T O R EI T I N A R R A V S
1 2 8 01 2 0 01 3 0 01 3 1 01 3 2 01 3 3 01 3 4 01 3 3 01 3 6 01 3 7 01 3 0 01 3 0 01 4 0 01 4 1 01 4 2 0
1 4 3 01 4 4 01 4 3 01 4 6 61 4 7 61 4 6 61 4 0 01 3 0 01 3 1 01 3 2 01 5 3 01 3 4 01 3 3 01 3 6 61 3 7 81 3 8 81 5 3 81 6 8 81 6 1 81 6 2 81 6 3 81 6 4 81 6 3 81 6 6 61 6 7 81 6 8 81 6 3 8
1 7 8 81 7 1 81 7 2 81 7 3 81 7 4 81 7 3 81 7 6 8
D I NL F P C 2 8 8 ) , H F P < 2 8 8 >
E U E N T= 1
R E A D H C SP R I N T" . " ;I F N C $= " X X X "T H E N 1 6 7 8
6 0 S U B 2 8 5 8: R E MC O N U E R TT O P O K E* S
R E A D D U RF O RN = 1 T O D U R
L F P < E U E N T >■ L F PH F P ( E U E N T )■ H F P
E U E N T= E U E N T+ 1N E X TN
G O T O 1 3 3 0
R E M* * T H EM U S I C: N O T E - O C T , D U R
D A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T A
B - 4 , 4 ,R E S ,1 ,A - 4 , 8 ,D - 3 , 4 ,C - 5 , 2 ,6 - 4 , 0 ,6 - 4 , 4 ,B - 4 , 4 ,R E S ,1 ,C - 3 , 8 ,C - 3 , 2 ,6 - 4 , 1 6 ,
D - 3 ,B - 4 ,R E S ,C - 5 ,D - 5 ,R E S ,C - 5 ,6 - 4 ,B - 4 ,R E S ,D - 3 ,X X X
4 , C - 3 , 84 , D - 5 , 41 , B - 4 , 44 , B - 4 , 24 , A - 4 , 42 , B - 4 , 48 , R E S ,14 , A - 4 , 84 , D - 5 , 41 , B - 4 , 24 , A - 4 , 4
R E M« « S E T A D S R ,U O L U M E ,U A U E F O R M
A T K= 0D K V= 0A D = A T K « 1 6+ D K V
P O K ES I D + 5 ,A D
R E MQ U I C K A T T A C KR E MQ U I C K D E C A Y
S S T = 1 3 : R E MS U S T A I NL O U DR L S= 0 : R E MQ U I C K R E L E A S ES R = S S T * ± 6+ R L SP O K ES I D + 6 , S R
1 4 6
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 161/258
S o m eF a n c yM u s i c M a k
1 7 7 0M L M± 7 8 0P O K E± 7 9 0 :
= 1 5 : R E N M A XU O L U N ES I D + 2 4 ,U L N
± 8 0 0U U F R M= ± 6 : R E N T R I A N G L EN A M E± 8 ± 0 :
± 8 2 0 :
± 8 3 0R E N± 8 4 0 :
* * P L A VT H E M U S I C ,T H E NE N DI T
± 8 5 0P R I N T" U " ;± 8 6 0B E A T L N G T H= ± 0± 8 7 0 :
± 8 8 0f
± 8 9 0± 9 0 01 9 1 0
1 9 2 01 9 3 01 9 4 01 9 5 01
1 9 6 0
" O R
I E X T
1 9 7 0 P O K E1 9 8 0 P O K E1 9 9 0 E N D2 0 0 02 0 1 02 0 2 02 0 3 0R E N
2 0 4 0
2 0 5 0
2 0 6 02 0 7 01
2 0 8 01
2 0 9 0
2 1 0 02 1 1 02 1 2 02 1 3 02 1 4 02 1 5 0
2 1 6 02 1 7 02 1 8 02 1 9 0
N = 1 T O C E M E N T- 1 >P O K ES I D + 1 ,H F P C N )P O K ES I D , L F P C N )
P O K ES I D + 4 ,U U F R M+ 1 : R E NO NF O RT N = 1 T O B E A T L N G T HN E X TT N
N
S I D + 4 ,0 : R E NM A U E F O R MO F FS I D + 2 4 . 0: R E NU O L U N EO F F
* * C O N U E R T N O T E - O C T A U E S T R I NT O L OA N DH I P O K EC O D E S
I F N C S= " R E S "T H E NH F P = 0 :
:
N T SF O R
N E X 1*
D C T
F S TF S T
H F PL F P:
L F P = 0 : R E T U R N
= L E F T S C N C S , L E N C N C S )- 2 )R E F = 0 T O 1 1I F N T S = N N S C R E F ) T H E N
N T = R E F : R E F = 1 1
" R E F
= U A L < R I G H T £ < N C $ , 1 ) >
= 2 t C T - O C T >= S B N ( N T >/ F S T
= I N T < F S T / 2 5 6 >= I N T < F S T- 2 5 6 * H F P >
R E T U R N
F i g .8 - 2 . L i s t i n g o ft h ep r o g r a mR e a dM u s i c .
1 4 7
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 162/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
T h e r ew i l lb e a s h o r tt i m ed e l a y ,t h e l e n g t ho f
o n eb e a t ,a n dt h e nt h ep r o g r a mw i l ll o o pb a c k
t o d e a lw i t ht h en e x tb e a t .
A n o t et h a tl a s t sf o ro n eb e a tw i l lh a v e o n ee n t r yi n e a c h p e r f o r m a n c ea r r a y .A n o t ew i t ha
l o n g e rd u r a t i o nw i l lh a v ea s m a n ye n t r i e sa s i t
h a sb e a t s .
H e r e ' sa n e x a m p l e .L e t ' ss a yo n eo f o u r
p e r f o r m a n c ea r r a y s s t o r e sv a l u e sf o rt h eh i g h
b y t eo fv o i c e # l ' s f r e q u e n c ys e t t i n g .I fa s o n g ' s
f i r s tn o t ei s a f o u r t ho c t a v eD t h a tl a s t sf o r
t h r e eb e a t s ,a n dt h es e c o n dn o t ei s a f i f t ho c
t a v eF # t h a tl a s t st w ob e a t s ,t h ea r r a yw o u l d
s t a r tw i t h t h e s ef i v ev a l u e s :
H F ( l )= 1 8
H F ( 2 )= 1 8
H F ( 3 )= 1 8
H F ( 4 )= 4 7
H F ( 5 )= 4 7
T h e r ea r ea n u m b e ro f a d v a n t a g e st o p e r
f o r m a n c ea r r a y s .S i n c ea l l t h eS I Dv a l u e s a r e
f i g u r e db e f o r ea n yn o t e sa r ep l a y e d ,n o t e sc a n
f o l l o wo n ea n o t h e r s m o o t h l y , w i t hn o d e l a y s
f o r l e n g t h yc a l c u l a t i o n s .A n ds i n c et h eb a s i c
t i m i n gu n i ti s a b e a t ,i t ' se a s yt o h a v ed i f f e r e n t
v o i c e sp l a yn o t e so f d i f f e r e n t l e n g t h s ,a s y o u ' l l
s e el a t e ri n t h i sc h a p t e r .R i g h tn o w ,i t ' st i m et o
m o v ef r o mt h e o r yt o p r a c t i c e .L e t ' ss e eh o w
n o t er e a d i n ga n d p e r f o r m a n c ea r r a y s a r e a c t u
a l l yu s e di n a p r o g r a m .
8 . 3 A P R O G R A MT H A TR E A D SM U S I C
A N DP L A Y SI T B YT H EB E A T
F i g u r e8 - 2l i s t st h ep r o g r a m R e a dM u s i c ,
w h i c hu s e st h ei d e a sd i s c u s s e da b o v e .R e a di t
o v e r ;t y p ei t i n ; s a v ei t ; t h e n r u ni t . I f y o u
w a n tt o l i s t e nt o i t a g a i n ,w i t h o u tw a i t i n gf o r
t h em u s i ct o b e r e a di n t ot h ep e r f o r m a n a r
r a y s ,j u s tt y p ei n t h i sc o m m a n d :
G O T O 1 6 7 0
B y t h ew a y ,t h em e l o d yt h i sp r o g r a mp l a y si s
a n o l dE n g l i s h t u n ec a l l e d" S h e p h e r d ' sH e y .
8 . 3 . 1 A b o u tt h eP r o g r a m
L e t ' sg o o v e rt h i sp r o g r a mi n d e t a i l .L i n e
1 0 5 0 - 1 0 8 0c l e a rt h e s c r e e n ,p r i n t af e e d b a
p r o m p t , a n ds e tu p S I D ' ss t a r t i n ga d d r e s s .T h e
n e x tm o d u l es e t su p t w or e f e r e n c ea r r a y s .T h e
S B Na r r a y c o n t a i n s t h et w e l v eS I Df r e q u e n
s e t t i n g sf o rt h es e v e n t ho c t a v e ,a n dt h eN M
a r r a yc o n t a i n s t h et w e l v e c o r r e s p o n n o t e
n a m e s .
T h en e x ts e g m e n ta c t u a l l yr e a d st h e
n o t e sa n df i l l st h ep e r f o r m a n c ea r r a y s . I nt h i s
c a s e ,y o u ' v eg o to n e p e r f o r m a n c ea r r a yt h a t ' l
h o l dt h el o wb y t e so f f r e q u e n c ys e t t i n g s ,a n d
o n et h a t ' l lh o l dt h eh i g hb y t e s .L i n e1 3 3 0r e a d
i n a n o t e / o c t a v es t r i n g ,a n dt h e nl i n e1 3 4
g i v e sa b i t o f s c r e e nf e e d b a c k .L i n e1 3 5
c h e c k sf o rt h es t r i n gt h a ts i g n a l st h ee n do f t h e
n o t e / o c t a v ed a t a .I f i t f i n d si t , t h en o t e r e a d
i s o v e r ,a n dt h ep r o g r a mg o e s o nt o s e t t h e
A D S Re n v e l o p e .
L i n e1 3 7 0j u m p st o a s u b r o u t i n et h a t ' l
t a k et h en o t e / o c t a v es t r i n ga n df i g u r eo u tt h e
a p p r o p r i a t el o wa n dh i g hb y t e sf o ra S I Df r e
q u e n c ys e t t i n g .L e t ' ss e eh o wt h es u b r o u t
w o r k s .
8 . 3 . 2 D e c o d i n gT h eN o t e / O c t a v eS t r i n g
L i n e2 0 5 0f i r s tc h e c k sf o r t h e s p e c i
s t r i n gv a l u eR E S ,w h i c hs t a n d sf o ra r e s t .A
1 4 8
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 163/258
S o m eF a n c yM u s i cM a k i n
r e s ti s a p a u s ei n t h e m u s i c .A s i l e n tn o t e ,
r e a l l y .S e t t i n g t h eS I Df r e q u e n c yr e g i s t e r s t o0
i s o n ew a yt o c r e a t es i l e n c e .
L i n e2 0 7 0p i c k s t h en o t en a m eo u to f t h e
s t r i n g .T h e nl i n e s2 0 8 0 - 2 1 0 0t r y t om a t c ht h e
n o t en a m ew i t hn a m e sf r o mt h e r e f e r e n c e
a r r a yN M $ . W h e nt h e r e ' sa m a t c h ,t h ep r o
g r a ms t o r e s t h en o t e ' sn u m b e ri n t h e v a r i a b l e
N T .T h i sn u m b e rw i l lb e u s e dt o p i c k t h e
a p p r o p r i a t eS I Dr e f e r e n c ef r e q u e n c yo u to ft h e
a r r a yS B N .
L i n e2 1 2 0p i c k s t h eo c t a v en u m b e ro u to f
t h es t r i n g .T h e nl i n e2 1 4 0u s e st h i sn u m b e rt o
f i g u r eo u tw h a tt h er e f e r e n c ef r e q u e n c ys e t t i n g
s h o u l db e d i v i d e db y .L i n e2 1 5 0d o e st h ed i v i
s i o n .F i n a l l y , l i n e s2 1 6 0 - 2 1 7 0f i g u r eo u t t h e
h i g ha n dl o wb y t e st h a t ' l lg i v et h i s s e t t i n g .T h e
c o n v e r s i o ni s c o m p l e t e ,a n dt h e s u b r o u t i n e
r e t u r n st o l i n e1 3 8 0 .
8 . 3 . 3 F i l l i n gt h eP e r f o r m a n c eA r r a y s
N o wi t ' st i m et o a d dt o t h ep e r f o r m a n c e
a r r a y s .R e m e m b e r ,y o u ' v eg o tt o e n t e ri n f o r
m a t i o nf o r e a c hb e a t .L i n e1 3 9 0r e a d s t h e
n o t e ' sd u r a t i o n ,e x p r e s s e da s a n u m b e ro f
b e a t s .L i n e s1 4 0 0 - 1 4 4 0t h e nu s et h i sv a l u et o
c o n t r o la l o o pt h a tp a c k st h et w op e r f o r m a n c e
a r r a y s .T h eb o d yo f t h e l o o pw i l lb e e x e c u t e d
o n c ef o r e a c hb e a to f t h e n o t e .E a c ht i m e
t h r o u g h , t h el o wa n dh i g h b y t e so f t h en o t e ' s
f r e q u e n c ys e t t i n gg e ts t o r e di n t h ea r r a y s ,a n d
t h e nt h e b e a tn u m b e ri n c r e a s e sb y 1 .
I s t h i sc o n f u s i n g ?L e t ' sl o o ka t i t f r o m
a n o t h e ra n g l e .W h a tw e ' r er e a l l yd o i n gi s
m a k i n gc o p i e so f a n o t e ' ss e t t i n g s .A s m a n y
c o p i e sa s t h en u m b e ro f b e a t st o t h e n o t e .
W h e ni t c o m e st i m et o p e r f o r mt h ep i e c e ,t h e
p r o g r a mw i l lj u s tg r a bS I Ds e t t i n g s a b e
w o r t ha t a t i m e .
8 . 3 . 4 T h eM u s i cI t s e l f
L i n e s1 5 1 0 - 1 6 2 0s t o r e t h em u s i ci t s e l f .
T h es t r i n gX X Xs i g n a l st h ee n do ft h ei n f o r m
t i o n .I f y o uw a n tt o c h a n g et h es o n gt h i sp r o
g r a mp l a y s ,y o uj u s tn e e dt o c h a n g et h e s ed a t a
l i n e s .Y o uc a nt a k es o n g sf r o mb o o k s o n m
o r m a k eu p y o u r o w n .
I f y o ut a k es o n g sf r o mm u s i cb o o k s ,y o u ' l l
h a v et o k n o wh o wt o r e a dm u s i c .I t ' sr e a l l yn o t
t o od i f f i c u l ta s k i l lt o p i c ku p . I f y o u ' dl i k et o
r e a da g o o d b o o ko n t h e s u b j e c t ,t r y H e n -s c r a t c h e sa n dF l y s p e c k s ,b y P e t eS e e g e r ,p u b
l i s h e db y G . P .P u t n a m ' sS o n s .M o s tl i b r a r i e
h a v ei t .
8 . 3 . 5 S e tA D S Ra n d
W a v e f o r m ;T h e nP l a y t h eT u n e
L i n e s1 6 7 0 - 1 7 5 0s e t t h e a t t a c k ,d e c a y
s u s t a i n ,a n dr e l e a s ev a l u e sf o rv o i c e # 1 .L i n e s
1 7 7 0 - 1 7 8 0s e ta no v e r a l lv o l u m el e v e l ,a n dl i n e
1 8 0 0s e t su p t h ew a v e f o r mt h a t ' l lb e u s e d .I
d e s i g n e dt h e s el i n e ss o i t ' db e e a s yt o g oi n a n d
m a k ec h a n g e s .
F i n a l l y ,e v e r y t h i n gi s r e a d y .T h ec u r t a i
r i s e s ,a n dt h e c o n d u c t o rr e a d i e sh e r b a t o n
( l i n e s1 8 5 0 - 1 8 6 0 ) .T h el o o pi n l i n e s1 8 8 0 - 1 9
p l a y s t h e m u s i c ,o n eb e a ta t a t i m e .E a c ht i m e
t h r o u g ht h e l o o p ,t h a tb e a t ' sf r e q u e n c ys e t
t i n g sg e tp o k e di n .T h e nl i n e1 9 2 0t r i g g e r st h e
a m p l i t u d em o d u l a t o r ,w h i c hb e g i n st h eA D S
c y c l e .
F o rt h es a k eo fs i m p l i c i t y ,I p l a y e da b i to f
a t r i c kh e r e .T h ep e r f o r m a n c el o o pn e v e rt r i g
g e r s t h er e l e a s ep a r to f t h ev o l u m ee n v e l o p
1 4 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 164/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 5 1 01 5 2 01 5 3 G
1 5 4 01 5 5 01 5 6 01 5 7 0
D A T AD A T AD A T A
D A T AD A T AD A T AD A T A
G - 4 ,C - 5 ,D - 5 ,
B - 4 ,E - 4 ,D - 5 ,B - 4 ,
4 ,4 ,4 ,
4 ,4 ,2 ,4 ,
E - 4 ,D - 5 ,B - 4 ,
R E S ,G - 4 ,E - 5 ,C - 5 ,
4 ,
2 ,2 ,
i .4 ,
2 ,4 ,
G - 4 ,E - 5 ,C - 5 ,
G - 4 ,C - 5 ,D - 5 ,X X X
422
444
F i g .8 - 3 .C h a n g e st o R e a dM u s i ct h a tt e a c hi t t o p l a ya d i f f e r e n tt u n e .
T h en o t e ss l u rt o g e t h e ra b i t .T r yr u n n i n gt h e
p r o g r a mw i t ht h i s l i n ea d d e d :
1 9 4 3 P O K ES I D + 4 ,U A U F R H: R E MR E L E A S
N o t i c eh o wn o t e s l o n g e r t h a no n eb e a tg e t
c h o p p e d u pi f y o ut r i g g e ra r e l e a s es t a g ea t t h e
e n do f e a c hb e a t .I s t h e r ea w a yt o a v o i db o t h
s l u r r i n ga n dc h o p p i n g ?Y e s ,a n dy o u ' l lg e tt o
s e et h et e c h n i q u el a t e ri n t h i sc h a p t e r .
F i n a l l y , l i n e s1 9 7 0 - 1 9 8 0t u r n t h e
w a v e f o r ma n do v e r a l lv o l u m ec o n t r o l so f f ,a n d
t h ep r o g r a me n d s .
O n c ea g a i nt h eb a l l ' si n y o u rc o u r t .H a v e
t h i sp r o g r a mp l a ya d i f f e r e n tt u n e .O rm a k ei t
p l a ya t d i f f e r e n ts p e e d s .S e ew h a th a p p e n s
w h e nt w oo r m o r en o t e so f t h e s a m ep i t c h
f o l l o wo n ea n o t h e r .
I f y o uc a n ' tr e a dm u s i c ,f i n da f r i e n dw h o
c a n .O r j u s tm a k eu p n o t e si n p l e a s i n g p a t
t e r n s .O rt y p ei n t h e d a t as t a t e m e n t ss h o w ni n
F i g .8 - 3 .
8 . 4 T H I N K I N GA B O U TT H R E E
V O I C E SA N DD I S T I N C T I O N
T h e r ea r e t w oi m p r o v e m e n t sy o uc a n
m a k et o p r o g r a m sl i k eR e a dM u s i c .F i r s t ,y o u
c a n g e t S I D ' st w oo t h e r v o i c e si n t ot h e a c t .
S e c o n d ,y o uc a nf i n da w a yt o m a k ee a c hn o t e
m o r ed i s t i n c t ,w i t h o u ts l u r r i n go r c h o p p i n e s s .
B o t ho f t h e s ea r ee a s i l yd o n ew i t hp e r
f o r m a n c ea r r a y s .L e t ' sl o o ka t t h e f i r s ti m
p r o v e m e n t .I n R e a dM u s i c ,y o us t o r e d v o
# 1 f r e q u e n c yi n f o r m a t i o nf o re a c hb e a to f t h e
m u s i c .Y o u ' l l j u s ta d ds i m i l a rf r e q u e n c yi n f o
m a t i o nf o rt h eo t h e rt w ov o i c e s .Y o u ' l ls t o r
t h e i n f o r m a t i o ni n t w o - d i m e n s i o n a p e r f o
m a n c ea r r a y s .T h e y ' l lt a k eo n t h ef o r m
A R R A Y N A M E( v o i c e# , b e a t# )
H e r ea r es o m ee x a m p l e so fw h a tI m e a n ,u s i n
t h ea r r a yn a m e sf r o mR e a dM u s i c :
L F P( 1 , 2 0 )h o l d s t h el o wb y t eo f v o i c
# l ' s f r e q u e n c ys e t t i n gf o r
t h e2 0 t hb e a t
H F P( 3 , 8 0 )h o l d st h eh i g h b y t eo f v o i c
# 3 ' sf r e q u e n c ys e t t i n gf o r
t h e8 0 t hb e a t
H F P( 2 , 1 )h o l d s t h e h i g h b y t eo f v o i c
# 2 ' sf r e q u e n c ys e t t i n gf o rt h e
f i r s tb e a t
N o w ,o n t o t h es e c o n d i m p r o v e mY o
w a n tt o m a k ee a c hn o t em o r ed i s t i n c t .I n R e a
M u s i c ,t h ep e r f o r m a n c el o o pj u s tt r i g g e r e d
s t a r to f a n A D S Rc y c l e ,a n d n e v e rd e a l tw i t
t r i g g e r i n gt h e r e l e a s es t a g e ;b u ta d d i n ga r e
l e a s es t a g et o e a c hb e a tc h o p p e dt h i n g su p t o o
m u c h .
1 5 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 165/258
S o m eF a n c yM u s i c M a k
O n et h i n gy o uc a nd o i s t r i g g e r ar e l e a s e
s t a g eo nt h el a s tb e a to fa n o t e .T h a ti s , i f a n o t e
l a s t sf o u rb e a t s ,t h ef i r s tt h r e e b e a t sw i l le a c h
t r i g g e rt h es t a r to fa nA D S Rc y c l e ,a n dt h el a s t
b e a tw i l lt r i g g e rt h er e l e a s es t a g e .I t ' sn o ta
t o t a l l yp e r f e c ts o l u t i o n ,b u t i t w o r k sp r e t t y
w e l l .M o r ei m p o r t a n t l y ,i t ' ss u r p r i s i n g l ye a s y
t o p r o g r a m .Y o uj u s tc r e a t ea n e wp e r f o r m a n c e
a r r a yf o rw a v e f o r mc o n t r o l .I t ' l lc o n t a i ne n t r i e s
f o re a c hv o i c ef o re a c hb e a t .T h e s ee n t r i e sw i l l
b e v a l u e st o p o k ei n t oe a c hv o i c e ' sw a v e f o r m
c o n t r o lr e g i s t e r .
H e r e ' sa n e x a m p l e .L e t ' ss a yt h a tv o i c e
# 1 s t a r t so f fp l a y i n ga n o t et h a tl a s t sf o rt h r e e
b e a t s .A s s u m ey o us e l e c tt h et r i a n g l ew a v e
f o r mf o rv o i c e# 1 .N a m et h ew a v ec o n t r o l
r a yW V C .T h e nW V C ( 1 , 1 )w i l lc o n t a i nt h ev a l
u e 1 7 . W V C ( 1 , 2 )w i l lc o n t a i n t h ev a l u e1 7 .
W V C ( 1 , 3 )w i l lc o n t a i nt h e v a l u e1 6 .T h ev a l
u e sf o rt h en o t e ' sf i r s tt w ob e a t sw i l lt r i g g e
t h es t a r to f a n A D S Rc y c l e .T h ev a l u ef o rt h e
n o t e ' sl a s tb e a tw i l lt r i g g e rt h er e l e a s es t a g eo f
t h ec y c l e .
8 . 5 A T H R E EV O I C EE X A M P L E
F i g u r e8 - 4l i s t st h ep r o g r a mT h r e e - P
1 O O O1 0 1 01 0 2 01 0 3 01 0 4 01 0 5 01 0 6 01 0 7 01 0 0 01 0 9 01 1 0 01 1 1 01 1 2 01 1 3 01 1 4 01 1 5 01 1 6 01 1 7 01 1 8 01 1 9 01 2 0 01 2 1 01 2 2 01 2 3 0
1 2 4 01 2 5 01 2 6 01 2 7 01 2 8 0
1 2 9 0
R E N*Z
:
R E N*
P R I N TP R I N T
z
S I D =U U =
:
:
R E N*:
* * T H R E E - P A R TS 0 N 6« * »
* S E T U P S C R E E N& U A R I A B L E S
" L / 1 ; : R E NC L E A R S C R E E N" [ l l f U U U U U I l X l t t H t C A D I N f i ":
5 4 2 7 2 - R E NS O U N DC H I P1 6 R E NA L L3 S A N EM A U E F O R N
* S E T U P R E F E R E N C E A R R A Y S
D I NS B N C 1 1 > , N N $ C 1 1 ): R E NB A S E DO NF O RN = 0 T O 1 1 : R E NN O T E SI N: R E A D S B N C N ) : R E NH I 6 H E S T: R E A D N N S C t O R E N O C T A U EN E X T
:
D A T AD A T AD A T AD A T A
D A T AD A T A
z
:
R E N*
N
3 4 3 3 4 ,C , 3 6 3 7 7 ,C l *
3 8 5 3 9 ,D , 4 0 8 3 1 ,D t t4 3 2 5 8 ,E , 4 5 8 3 1 ,F4 8 5 5 7 ,F l * , 5 1 4 4 4 ,6
5 4 5 0 2 ,6 t t , 5 7 7 4 3 ,A6 1 1 7 7 ,A t t , 6 4 8 1 5 ,B
t * R E A DI N T H EN U S I CA N DS T O R EI T I N A R R A Y S
1 5 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 166/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 3 0 0D I ML F P ( 3 , 2 0 0 ) , H F P < 3 , 2 0 0 ) ,M U C < 3 , 2 0 0 )
1 3 1 0 :
1 3 2 0 U O I C E= U O I C E+ 1
1 3 3 0I F U O I C E= 4 T H E N 1 8 9 01 3 4 0 E U E N T= 11 3 5 0 :
1 3 6 0 R E A DN C $1 3 7 0 P R I N T" . " ;1 3 8 0 I F N C $ = " X X X " T H E N1 3 2 01 3 9 0 :
1 4 0 06 0 S U B2 4 4 0 : R E MC O N U E R TT O P O K E « S1 4 1 0 :
1 4 2 0R E A DD U R1 4 3 0F O R N = i T O D U R - 11 4 4 0 : L F P < U O I C E , E U E N T )= L F P1 4 5 0 : H F P < U O I C E , E U E N T )= H F P
1 4 6 0 : U U C < U O I C E , E U E N T )= W U + i1 4 7 0 : E U E N T= E U E N T+ 11 4 8 0N E X TN1 4 9 0 I F D U R= 1 T H E N 1 3 6 01 5 0 0 :
1 5 1 0 L F P C U O I C E , E U E N T )= L F P1 5 2 0 H F P < U O I C E , E U E N T )= H F P1 5 3 0U U C C U O I C E , E U E N T )= W U1 5 4 0 E U E N T= E U E N T+ 11 5 5 0 :
1 5 6 0 G O T O1 3 6 01 5 7 0 :
1 5 8 0 :
1 5 9 0 R E M« * T H EM U S I C: N O T E - O C T ,D U R1 6 0 0 :
1 6 1 0D A T AR E S , 4 , A - 5 , 4 , B - 5 , 41 6 2 0 D A T AA - 5 , 4 , R E S , 4 , A - 5 , 41 6 3 0D A T AB - 5 , 4 , A - 5 , 4 , R E S , 41 6 4 0D A T AC - 6 , 4 , E - 6 , 4 , C - 6 , 41 6 5 0 D A T AA - 5 , 4 , A - 5 , 4 , B - 5 , 41 6 6 0 D A T AA - 5 , 4 , X X X1 6 7 0 :
1 6 8 0D A T AR E S ,
1 6 9 0 D A T AE - 5 ,1 7 0 0 D A T AE - 5 ,1 7 1 0D A T A6 - 5 ,1 7 2 0 D A T AE - 5 ,
1 7 3 0 D A T AE - 5 ,1 7 4 0 :
1 7 5 0 D A T AC - 5 ,1 7 6 0 D A T AA - 4 ,1 7 7 0D A T AA - 4 ,1 7 8 0 D A T AC - 5 ,1 7 9 0 D A T A6 - 4 ,
4 ,
4 ,4 ,4 ,4 ,
4 ,
2 ,2 ,4 ,
2 ,2 ,
E - 3 ,
R E S ,E - 5 ,G - 3 ,E - 3 ,
X X X
D - 5 ,A - 4 ,C - 3 ,A - 4 ,A - 4 ,
4 ,
4 ,4 ,4 ,4 ,
2 ,2 ,
2 ,2 ,4 ,
E - 5 ,
E - 3 ,R E S ,G - 5 ,E - 3 ,
C - 5 ,G - 4 ,D - 5 ,A - 4 ,C - 5 ,
4
4444
22222
1 5 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 167/258
S o m eF a n c yM u s i c M a
± 8 0 01 8 1 01 8 2 01 8 3 01 8 4 01 8 5 01 8 6 01 8 7 01 8 8 01 8 9 01 9 0 01 9 1 01 9 2 01 9 3 01 9 4 01 9 5 01 9 6 0
1 9 7 01 9 8 01 9 9 02 0 0 02 0 1 02 0 2 02 0 3 02 0 4 0
2 0 5 02 0 6 02 0 7 02 0 8 02 0 9 0
2 1 0 02 1 1 02 1 2 02 1 3 02 1 4 02 1 5 02 1 6 02 1 7 02 1 8 02 1 9 02 2 0 02 2 1 02 2 2 02 2 3 02 2 4 02 2 5 02 2 6 02 2 7 02 2 8 02 2 9 02 3 0 0
D A T AD - 5 ,D A T AE - 5 ,D A T AD - 5 ,D A T AC - 5 ,D A T AG - 4 ,
2 , E - 5 ,2 , G - 5 ,2 , C - 5 ,2 , A - 4 ,2 , A - 4 ,
2 , E - 5 ,2 , E - 5 ,2 , A - 4 ,2 , A - 4 ,4 , X X X
2222
R E M* * S E T A D S R ' SF O R T H E3 U O I C E S
A T K= 2 : D K V= 3A D = A T K « 1 6+ D K VP O K ES I D + 5 ,A D
A T K= 2 : D K V= 3A D = A T K * 1 6+ D K VP O K ES I D + 1 2 ,A D
A T K= 2 : D K V= 0A D = A T K « 1 6+ D K VP O K ES I D + 1 9 ,A D
S S T = 6 : R L S = 6S R = S S T * 1 6+ R L SP O K ES I D + 6 ,S R
S S T = 1 2 : R L S = 6S R = S S T * t l 6+ R L SP O K ES I D + 1 3 ,S R
S S T = 1 5 : R L S= 7
S R = S S T * 1 6+ R L SP O K ES I D + 2 0 ,S R
R E MS E T T I N G SR E MP O K EU A L U E
R E M U O I C E1 A - D
R E M S E T T I N G SR E MP O K EU A L U E
R E NU O I C E2 A - D
R E M S E T T I N G SR E MP O K EU A L U E
R E MU O I C E3 A - D
R E MS E T T I N G SR E MP O K EU A L U E
R E MU O I C E1 S - R
R E M S E T T I N G SR E MP O K EU A L U E
R E MU O I C E2 S - R
R E MS E T T I N G S
R E M P O K EU A L U ER E MU O I C E3 S - R
R E M* * P L A VT H E M U S I C ,T H E NE N DI T
P R I N T" L i " ;B E A T L N G T H= 1 0U L M= 1 5P O K E S I D + 2 4 ,U L M
R E MM A XU O L U M E
F O RN = 1 T O C E U E N T- 1 >P O K ES I D + 1 ,H F P ( 1 , N >P O K ES I D , L F P < 1 , N >P O K ES I D + 8 ,H F P < 2 , N >P O K ES I D + 7 ,L F P < 2 , N >P O K E S I D + 1 5 ,H F P < 3 , N >P O K E S I D + 1 4 ,L F P < 3 , N >
P O K ES I D + 4 ,M U C < 1 , N ) R E MU - lP O K E S I D + 1 1 ,I 4 U C < 2 , N > : R E MU - 2
1 5 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 168/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
2 3 1 02 3 2 02 3 3 02 3 4 02 3 S 02 3 6 02 3 7 02 3 8 02 3 9 02 4 0 02 4 1 02 4 2 0
2 4 3 02 4 4 0
2 4 5 02 4 6 02 4 7 02 4 8 0
2 4 9 02 5 0 02 5 1 02 5 2 02 5 3 02 5 4 02 5 5 02 5 6 0
2 5 7 02 5 8 0
;
;
;
N E X T
P O K EE N D
:
:
z
R E M
:
P O K ES I D+ 1 8 , U U C ( 3 , N > : R E ! 1U - 3
F O R T M = 1 T O B E A T L N G T HN E X TT M
N
S I D + 2 4 , 0: R E MU O L U M EO F F
* * C O N U E R TN O T E - O C T A U ES T R I N GT O L O A N DH I P O K EC O D E S
I F N C S= " R E S "T H E MH F P = 8 :
:
N T SF O R
N E X T:
O C T
F S TF S TH F PL F P
:
L F P = 0 : R E T U R N
= L E F T S C N C S , L E N C N C S )- 2 )R E F = 0 T O 1 1I F N T S = N M S C R E F )T H E N
N T a R E F : R E F = 1 1R E F
= U A L < R I G H T $ C N C $ , 1 ) >
= 2 t < 7 - O C T )= S B N C N T )• F S T= I N T < F S T V 2 5 6 >= I N T < F S T- 2 5 6 « H F P )
R E T U R N
. F i g .8 - 4 . L i s t i n g o ft h ep r o g r a mT h r e e - P a r tS o n g .
S o n g .T y p ei t i n ; s a v ei t ; t h e n r u ni t . T a k e t h ef i r s tt w o m o d u l e sa r e t h es a m e :c l e a rt h e
s o m et i m et o c o m p a r et h i sp r o g r a mw i t hR e a d s c r e e n ,s e tu p f o rf e e d b a c k ,a n df i l lt h er e f e r -
M u s i c ,l i s t e di n F i g .8 - 2 .T h e y ' r e v e r ys i m i l a r ,e n c ea r r a y s .
I n o u rd i s c u s s i o n ,I ' l lf o c u si n o n t h e d i f f e r - N o wi t ' st i m et o r e a dn o t e sa n dp a c ka r -
e n c e s . r a y s .L i n e s1 3 0 0 - 1 5 6 0d o t h ej o b .F i r s t , l i
1 3 0 0d i m e n s i o n st h r e ep e r f o r m a n c ea r r a y s
8 . 5 . 1 F i l l i n gU pt h eP e r f o r m a n c eA r r a y s T w ow i l lh o l df r e q u e n c yv a l u e s ,a n dt h et h i r d
T h ef i r s tc h a n g es h o w su p i n l i n e1 0 9 0 . w i l lh o l dw a v e f o r mc o n t r o lv a l u e s .
T h ep r o g r a ms e t su pa w a v e f o r mv a r i a b l er i g h t T h i sp r o g r a m s e g m e n tr e a d s n o t e sa n d
a w a y ;i t w i l lb e u s e dt o f i l l t h e w a v e f o r mp a c k sa r r a y s av o i c ea t a t i m e .T h ep s e u d o
c o n t r o lp e r f o r m a n c ea r r a y .O t h e rt h a nt h a t , n o t eX X X ,s i g n a l st h ee n do fo n ev o i c e ' s n o t
1 5 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 169/258
S o m eF a n c yM u s i c M a
T h ev o i c en u m b e rt h e ng o e s u p b yo n e .W h e n
i t h i t s4 , a l lt h r e ev o i c e ' sh a v eb e e nt a k e nc a r e
o f , a n dt h ep r o g r a mm o v e so n t o s e t u p t h eA D S Rv a l u e s .
W h e nl i n e1 3 6 0r e a d sa v a l i dn o t e ,t h e
p r o g r a m j u m p st o t h es a m ef r e q u e n c y - f i g u r i n g
s u b r o u t i n eu s e di n t h eR e a dM u s i cp r o g r a m .
T h i ss u b r o u t i n es e n d s b a c kv a l u e sf o rt h eh i g h
a n dl o wb y t e so f t h ef r e q u e n c ys e t t i n g .T h e n
i t ' st i m et o p a c ka r r a y s .
I f a n o t eh a sa d u r a t i o no fj u s to n eb e a t ,i t ' l l
g o t h r o u g ht h ep a c k i n gl o o pi n l i n e s1 4 3 0 - 1 4 8 0
j u s to n c e .L i n e s1 4 4 0 - 1 4 5 0s e tt h el o w a n dh i g hf r e q u e n c yb y t e s .T h e nl i n e1 4 6 0s e t st h e
w a v e f o r mc o n t r o la r r a yw i t ha v a l u et h a t ' l l
t r i g g e rt h eA D S Re n v e l o p e .L i n e1 4 9 0 s e n d s
t h ep r o g r a mb a c kt o r e a d a n o t h e rn o t e .
A n o t et h a tl a s t sl o n g e rt h a no n eb e a t g e t s
t r e a t e dd i f f e r e n t l y .I t w i l lg o t h r o u g ht h el o o p
i n l i n e s1 4 3 0 - 1 4 8 0o n el e s st i m et h a ni t sd u r a
t i o ni n b e a t s .T h u s ,o n a l lb e a t su p t o t h el a s t
o n e , t h ew a v e f o r mc o n t r o la r r a yw i l lr e c e i v ea
v a l u et h a tt r i g g e r st h es t a r to f a n A D S Re nv e l o p e .L i n e s1 5 1 0 - 1 5 4 0h a n d l et h e a r r a y sf o r
t h ef i n a lb e a t .T h e r e ' sn o c h a n g ei n h o wf r e
q u e n c yi s h a n d l e d .H o w e v e r ,t h e w a v e f o r m
c o n t r o la r r a yn o wg e t sa v a l u et h a tw i l lt r i g g e r
t h er e l e a s e s t a g eo f t h eA D S Re n v e l o p e .
8 . 5 . 2 S e t t i n gt h eA D S RE n v e l o p e s
A f t e rt h en o t e sa r er e a di n a n dt h ep e r
f o r m a n c ea r r a y sf i l l e d ,i t ' st i m et o s e tA D S R
e n v e l o p e sf o re a c hv o i c e .T h er o u t i n e su s e di n
l i n e s1 8 9 0 - 2 1 1 0 u s et h es a m et e c h n i q u es h o w n
i n t h ep r o g r a mR e a dM u s i c . H e r e ' so n eh i n t :
l o wn o t e sn e e dh i g h e rs u s t a i nl e v e l s t ob e
h e a r da s e a s i l ya s h i g hn o t e s .T h a t ' sb e c a u s eo f
t h e w a yo u re a r sa r e b u i l t .I n t h i sp r o g r a m ,
v o i c e# 1 p l a y s t h eh i g h e s tn o t e s ,v o i c e# 3 t h e
l o w e s t ,w i t hv o i c e# 2 i n b e t w e e n . T h e
I g a v ev o i c e# 3 t h e h i g h e s ts u s t a i nl e v e l ,v o i c# 1 t h el o w e s t ,w i t h v o i c e# 2 i n b e t w e e n .
8 . 5 . 3 P l a y i n gI t
A f t e ra f e wf i n a lp r e p a r a t i o n s , tp r o
g r a mc a np l a y t h em u s i c . L i n e s2 1 6 0 - 2
c l e a rt h es c r e e n ,s e tt h e l e n g t ho f a b e a t ,a n d
a d j u s tt h e o v e r a l lv o l u m e .T h e nc o m e st h e
p e r f o r m a n c el o o p .I t w i l lr e p e a ta s m a n yt i m e
a s t h e r ea r e b e a t s .L i n e s2 2 2 0 - 2 2 7 0s e t t h e
f r e q u e n c yr e g i s t e r sf o ra l l t h r e ev o i c e s .T h e
l i n e s2 2 9 0 - 2 3 1 0p i c ko f fv a l u e sf r o mt h en e w
w a v e f o r mc o n t r o la r r a ya n dp o k et h e mi n t o
e a c hv o i c e ' sw a v e f o r mc o n t r o lr e g i s t e r .T h
v o i c e s o p e r a t e i n d e p e n d e n t l o n a n yg i v e
b e a t ,t w ov o i c e sm i g h tt r i g g e rt h es t a r to f a n
A D S Re n v e l o p e ,a n d t h e o t h e ro n e m i
t r i g g e rt h e r e l e a s es t a g e .
T h et e c h n i q u eo f r e l e a s i n g av o i c eo n i t s
l a s tb e a tw o r k sw e l li f t h e r e ' s af a i r l yl o n
r e l e a s ep e r i o d .C h a n g et h er e l e a s es e t t i n g si n
l i n e s2 0 1 0 , 2 0 5 0 ,a n d2 0 9 0t o l o w e rv a l u e sa n d
t h e nr u nt h ep r o g r a m .D oy o un o t i c e t h ec h o p
p i n e s s ?
8 . 5 . 4 V a r i a t i o n s
T h ed a t ai n T h r e e - P a r tS o n gi s b a s e do n
t h eE n g l i s hf o l km e l o d y " A r eY o uG o i n gT o
T h eF a i r " .F i g u r e8 - 5r o u n d so u to u rs a l u t et o
p r e - B e a t l e s E n g l i s h m u s i c .L o a di n T h r e
P a r tS o n ga n dt h e n t y p et h el i n e sf r o mF i g .8 - 5
N o wy o u rC o m m o d o r e6 4 w i l lp l a y t h es o n
" C o v e n t r yC a r o l . "
T h r e e - P a r tS o n gh a sa l o t o f r o o mf o r
e x p e r i m e n t a t i o n .S e ei f y o uc a n g e t t h e
v o i c e st o s o u n dl i k ec o m p l e t e l yd i f f e r e n i n -
1 5 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 170/258
991-
,,|OJBOAJJUeAOQ,,DUOS8l||AB|d
S9NI113SS9NI113SS9NI113S
S9NI113SS9NI113SS9NI113S
Zl'2-UP
T8PT8PT
P8
'e-3
'S3a'e-3'Z-U*S3a'e-3'e-u'S3a
'e-a'e-3
Zl'
P1p
8p
PP8p
8
8
P
i
i
i
t
i
•
f-3rf-3rs3arf—3rf-9rf—9rf—a'p—jrf—3rf—J'f-3
'f—a'f—It9
2T'*-tt9t«
8'S-3's-a
OS'*-U
T8P
'S-3'S3a'f-a
'f-ft9
toa:M3a:
M3a:M33:M3a-
'f'f
'ZT'f'8'8'f'f'f
'8'f
'8'f'f'8'f'T'8'p
'T'8'f
'f'f'f'8'f'f'f'ZT'
'f'f
*"ioa
2.=9=9=
8=e=e=
'e-3'e-a'z-a'e-3'Z-J'z-y'e-3'e-a'e-a
'e-a'z-a
'f-9'f—j'f-a'f-9'f—3'S3a'f-3'f-y'S3a'f-j'f—a
XXX's-a*fr—U
*fr—U
'fr-8'S-3'*-8'*-8fr-f#9
'S-3'fr-U
U3M
siasiasia
Aaa
'8'f'p
'8'p
'P'8'f'8
'f'8
'p
'P'8rp
'8'8'f'f'ZT'f'8
'ZT'f'T'8'f'T'8'f'f'8'f
I1N3
oi}|goeeji
:ST:6:f
:Z:Z:Z
XXX'z-a'e-3
'e-3'e-3'e-3'z-a'z-a'f—3'e-3
*z—y'z-y
XXX'f-j'f—3'f-3'f-y'f-y'f—3'f-9'f-y'f-3'fc-3'fr-3
'S-H3>-U'S3a'♦■-8'S-3'S3a's-a'*-u>-u>-u'*-u
no3**
BMi6U03
=1SS=1SS=1SS
=)I1U=X1U=X1M
uiuauiuauiua
uiuauiuauiuauiuauiuauiuauiua
uiuauiua
uiuauiuauiuauiuauiuauiuauiuauiuauiuauiuauiuauiua
uiuauiuauiuauiuauiuauiuauiuauiuauiuauiuauiua
*M3a
lied-eaim0}se6ueqog-8oy
0603GSGZQTOZ
0JL6T0£6T068TOt^ST
sesToesT
SZ8T028TST8T0T8TS08T008TS6JLT
062.T
S81T082.T
S1ATOUTS91T092.T
SSJLT
0S1TQPllOt-AT
seiToeiTSZ2.TQZllST1T0T2.TOOJLT
069T089T02.9T
099T0S9T0t"9T0£9T0Z9T0T9T
OOOT
6u!lulubj6ojc|punospuesojqdejo^gajopoujuJOQ
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 171/258
S o m eF a n c yM u s i cM a k i
s t r u m e n t s .A n dr e m e m b e r ,a l t h o u g hS I Dc a n
i m i t a t er e a li n s t r u m e n t s ,i t r e a l l ys h i n e sw h e n
y o uc o m eu p w i t hs o u n d sn e v e rh e a r df r o mw o o do r b r a s s o rs t r i n g s .
8 . 6 C H A P T E RS U M M A R Y
Y o u V ee x a m i n e da c o u p l eo f w a y st o g e t
i n t e r e s t i n gm u s i co u to f y o u rC o m m o d o r e6 4 .
H e r e ' sa s u m m a r yo f w h a ty o u V ec o v e r e d :
* S e t t i n gu p a r e f e r e n c e o c t a v et o h e l p
t r a n s l a t en o t en a m e sa n do c t a v en u m
b e r si n t oS I Df r e q u e n c ys e t t i n g s
* U s i n gp e r f o r m a n c ea r r a y st o s t o r eS I D
f r e q u e n c ys e t u p i n f o r m a t i o nf o r e a c h
b e a to f a p i e c eo f m u s i c
* U s i n gp e r f o r m a n c ea r r a y st o i m p l e
m e n tt h r e ev o i c em u s i c
* T u r n i n gv o i c e so n a n do f fw i t ha w a v e
f o r mc o n t r o lp e r f o r m a n c ea r r a y
I n t h en e x tc h a p t e r ,w e ' l ll e a v eh a r m o n y
b e h i n d ,a n dg e t S I Dt o g e n e r a t es o m ee a r -
t i c k l i n gs o u n de f f e c t s .
8 . 7 E X E R C I S E S
8 . 7 . 1 S e l fT e s t
A n s w e r sa r ei n S e c t i o n8 . 7 . 3 .
1 . ( 8 . 1 . 1 )I f a nA n o t ei n t h et h i r do c t a v e h a sa
f r e q u e n c yo f 2 2 0h e r t z ,w h a t ' st h e f r e
q u e n c yo f a f i r s to c t a v eA n o t e ?
2 . ( 8 . 1 . 1 )U s i n gt h es t r i n gn o t a t i o ni n t r o d u c e d
i n S e c t i o n8 . 1 . 2 ,B # - 6r e p r e s e n t sa
o c t a v eB s h a r p .
3 . ( 8 . 2 )A p e r f o r m a n c ea r r a yc a n h o l dS I D
s e t t i n g sf o re a c h o f as o n g .
4 . ( 8 . 3 )T h ep r o g r a mR e a dM u s i cs t o r e
s e t t i n g s f o re a c hb e a ti n t h e
p e r f o r m a n c ea r r a y sL F P ( 2 0 0 )a n dH F ( 2 0 0 ) .
5 . ( 8 . 4 )O n ew a yt o h a n d l em o r et h a no n
v o i c ea t a t i m ei s t o u s e - d i
m e n s i o n a lp e r f o r m a n c ea r r a y s .
6 . ( 8 . 4 )Y o uc a na v o i ds l u r r i n ga n d c h o p
b y t r i g g e r i n g t h e s t a g eo n t h e
l a s tb e a to f a n o t e .
7 . ( 8 . 5 )T a k ea l o o ka t t h ep r o g r a mT h r e e - P
S o n g .W h a t ' st h es m a l l e s tn u m b e ro f b e a t
a n o t ec a nh a v e a n ds t i l lg e t i t s r e l e a s t a g e t r i g g e r e d ?
8 . 7 . 2 P r o g r a m m i n gE x e r c i s e s
1 . C h a n g et h ep r o g r a mR e a dM u s i cs o i t
r e p e a t st h e m u s i ci f d e s i r e d .I t
s h o u l d n ' th a v et o s e t u p t h e p e r f
m a n c ea r r a y sa g a i n .
2 . C h a n g et h ep r o g r a mT h r e e - P a r tS o n
s o i t l e t st h e u s e ra d j u s tt h e s p e e
( t e m p o )t h em u s i c ' sp l a y e da t .
3 . C h a n g et h ep r o g r a mT h r e e - P a r tS o n
s o i t l e t st h eu s e ra d j u s tt h e o v e r a
p i t c hb y o c t a v e s .
8 . 7 . 3 A n s w e r st o S e l fT e s t
A s u s u a l ,y o um a yc o m eu p w i t hb e t t e
a n s w e r s .
1 . 5 5 h e r t z
2 . s i x t h
3 . b e a t
4 . f r e q u e n c y
5 . t w o
6 . r e l e a s e
7 . t w o
1 5 7
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 172/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
8 . 7 . 4 P o s s i b l eS o l u t i o n s
t o P r o g r a m m i n gE x e r c i s e s
1 . L o a di n t h e p r o g r a mR e a dM u s i c .
T h e nt y p ei n t h e s el i n e s :
1 0 1 3 :
1 8 1 4P R I N T" 1 3 " ;K Y $ ;" ■ "1 0 1 5 T E M P O= U A L ( K V $ )
1 0 1 6:
1 6 1 7 F O RN = 1 T O 5 9 01 6 1 8N E X TN2 1 7 8B E A T L N G T H= ( 1 0 - T E M P O )t 1 . 7
1 0 0 81 8 3 81 9 9 81 9 9 11 9 9 21 9 9 31 9 9 41 9 9 31 9 9 61 9 9 71 9 9 81 9 9 92 8 8 62 8 8 12 8 8 22 8 8 32 8 6 42 8 8 32 8 6 62 6 8 7
R E H« * » J U K EB 6 X« « *R E N* * P L A VT H EM U S I C
R E N« * P L A VI T A G A I N?
P R I N T a n yP R I N T" K E YU I T H I N3 "P R I N T" ( E l l l l l l l l l f t J S E C 6 N D SF O RA M ;P R I N T " R E P L A Y "
T I $ = " 0 0 6 0 0 6 " R E M R E S E TT I N E
G E T K Y S R E M R E A D K E Y B O A R DI F K Y S< > " " T H E N 1 7 7 8I F U A L ( T I S >< 3 T H E N 2 8 8 1
P R I N T" L " ;E N D
2 . L o a di n t h ep r o g r a mT h r e e - P a r tS o n g .
T h e nt y p ei n t h e s el i n e s :
1 8 8 8R E N* * * A D J U S T A B L E T E N P O1 0 6 1 :
1 8 6 2 :
1 8 6 3 R E N« * G E T T H ET E N P O1 0 8 4 :
1 8 8 3P R I N T" L U M i i m n n i M I P P F f i f iA K E Y" ;1 8 8 6P R I N T" T O S E T T H ET E N P O: "1 0 6 7P R I N T" L H J U L M J C l - S L O W E S T" ;
1 0 0 8P R I N T" 9 - Q U I C K E S T > [ T l l L l l J > a ;
1 6 1 8G E T K Y S1 8 1 1I F K Y S= " " T H E N 1 8 1 81 8 1 2I F A S C ( K Y S )C 4 9 O R A S C ( K Y S )> 3 7
T H E N1 0 1 6
3 . L o a di n t h ep r o g r a mT h r e e - P a r tS o n g .
T h e nt y p ei n t h e s el i n e s :
1 6 8 81 6 6 11 8 8 21 8 8 31 8 6 41 8 8 31 8 8 6
1 8 8 71 8 8 81 8 8 91 8 1 81 8 1 11 6 1 2
1 8 1 31 8 1 41 8 1 31 8 1 61 8 1 71 8 1 81 8 1 91 6 2 81 8 2 11 8 2 21 8 2 3
1 8 2 41 8 2 ?1 8 2 61 8 2 71 8 2 81 8 2 92 3 1 82 3 1 3
2 3 1 6
R E N O C T A U E N O U E R
R E N * *G E T O C T A U EA D J U S T N E N T
P R I N T" L U H 0 I 4N A N VP R I N T" O C T A U E SD O Y O U "
P R I N T" W l l l l l l J U A N TT O N O U E" ;P R I N T" C O - 3 > ? " ;G E TA D J SI F A D J S= " " T H E N1 0 0 9
I F A S C ( A D J S )< 4 8 O RA S C C A D J S )> 3 1T H E N1 0 0 9
P R I N T" 1 3 " ;A D J S ;" ■ " : R E NP R I N TI TA D J = U A L( A D J S )I F A D J = 0 T H E N1 0 2 7 R E MN O 2 N D?
P R I N T" Q I O E l l l l l l l l N O U EU P O R" ;P R I N T " D O W N< U / D >? " ;G E T U D $I F U D $= " " T H E N1 0 2 0
I F U D SO " U " A N D U D $< > " D "
T H E N 1 0 2 0P R I N T" I d " ; U D S ;" ■ " : R E NP R I N TI T
I F U D S= " D " T H E N A D J= - A D JF O RN = 1 T O 3 0 8 : N E X TN
O C T= U A L C R I G H T $ C N C $ , 1 > )+ A D JI F O C T< 0 T H E N O C T= O C T+ 1 :
G O T O2 3 1 3I F O C T> 7 T H E NO C T= O C T- 1 :
G O T O2 3 1 6
1 5 8
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 173/258
C h a p t e r9
S p e c i a lS o u n dE f f e c t s
I n t h i sc h a p t e ry o u ' l lg e tS I Dt o p r o d u c es o m e
i n t e r e s t i n gs o u n de f f e c t s . Y o u ' l l l i s t e nt o
c l o c k s ,g o n g s ,a S I Do s c i l l a t o r ,h o r s e s ,p r o
j e c t i l e s ,a n dp u l s i n gw e i r d n e s s .A l o n gt h e
w a y ,y o u ' l lt h i n ka b o u tt i m i n g ,A D S Re n v e l o p e
d e s i g n ,r i n gm o d u l a t i o n ,v i b r a t o ,e a v e s d r o p
p i n g , l i n k a g e ,r h y t h m ,n o i s e ,a n dv a r i a t i o n si n
v o l u m e ,f r e q u e n c y ,a n dp u l s ew i d t h .
K e e pi n m i n dt h a tt h ek e yt o s o u n de f f e c t s
i s i m a g i n a t i v ev a r i a t i o n :c h a n g i n gv o l u m e ,
w a v e f o r m s ,f r e q u e n c i e s , t i m i n g ,r h y t h m s ,a n d
s o o n . O f c o u r s e ,y o u ' v e g o tt o k n o ww h a tt o
c h a n g e a n dh o wt o d o i t . S o m eo f t h i sc a nb e
l e a r n e db yp l a y i n gw i t hS I Da n d p r o g r a m sl i k e
t h o s ei n t h i sc h a p t e r .Y o u ' l la l s on e e dt o s p e n d
t i m el i s t e n i n g t ot h ew o r l d a r o u n dy o u .T r a i n
y o u re a r st o b e b e t t e rs o u n da n a l y z e r s .
9 . 1 T H E C L O C K
F i g u r e9 - 1 s h o w st h e p r o g r a mC l o c k .
R e a di t , a n dt h e n r u ni t . P l a ya r o u n dw i t ht h e
n u m b e r s .S e ei f y o uc a n g e ta m o r ei n t e r e s t
r h y t h mo u to f t h et i c k i n gc l o c k .
Y o ue n d u pc h a n g i n ga l o to f S I D ' sr e g i s
t e r sw h e ny o uw o r kw i t hs o u n de f f e c t s .T h i s
c a n c a u s ec o m p l i c a t i o n si f y o uf o r g e tw h i c
r e g i s t e r sh a v eb e e ns e t .T h ep r o g r a m si n t h i
c h a p t e ra l l b e g i na n de n db y c l e a r i n gS I D '
r e g i s t e r s .
L e t ' sl o o ka t t h eA D S Re n v e l o p et h i sp r o
g r a mg e n e r a t e s .A t t a c k ,d e c a y ,a n dr e l e a s
r a t e sa r ea l ls e t t o0 , a n dt h es u s t a i nl e v e li s 1 5 ,
t h em a x i m u m .T h es o u n dw i l lq u i c k l yr i s et o
p e a kv o l u m e ,q u i c k l yd e c a yt o t h es a m el e v e l
( h u h ? ) ,s i tt h e r eu n t i lr e l e a s ei s t r i g g e r e d ,a n d
t h e nq u i c k l yf a l lt o z e r o .F i g u r e9 - 2s h o w sa
p i c t u r eo f t h ee n v e l o p e .
O n c et h ee n v e l o p e a n do v e r a l lv o l u m ei s
s e t ,t h ep r o g r a mi s r e a d yt o p l a ya s e r i e so f
t i c k sa n dt o c k s .F i r s t ,l i n e s1 2 2 0 - 1 2 6 0p l a yt h e
1 5 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 174/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 6 6 81 8 1 8
1 8 2 61 8 3 61 8 4 81 8 3 81 8 6 61 8 7 61 6 8 81 8 9 81 1 8 81 1 1 81 1 2 61 1 3 81 1 4 6
1 1 3 81 1 6 61 1 7 61 1 8 81 1 9 61 2 8 81 2 1 81 2 2 81 2 3 81 2 4 61 2 3 81 2 6 81 2 7 81 2 8 81 2 9 81 3 8 81 3 1 81 3 2 81 3 3 61 3 4 81 3 3 81 3 6 61 3 7 61 3 8 81 3 9 8
I 4 8 61 4 1 81 4 2 81 4 3 81 4 4 81 4 3 8
R E M* * * C L O C K« H:
:
R E H* * C L E A RS I D•
S I D = 3 4 2 7 2F O R R E 6= S I D T O: P O K ER E G ,6N E X TR E 6
:
P R I N T" £ " ;
t
f t P R I N T P R O M P T
: R E MS O U N DC H I PS I D + 2 4
P R I N T " P R E S S S P A C E B A RT O E N D "
:
R E M* * I N I T I A L I Z ES I D R E G I S T E R S•
P O K ES I D + 6 , 2 4 6P O K ES I D + 2 4 , 1 3
:
R E N« * P L A VI T ;:
P O K ES I D + i ,8 0P O K ES I D + 4 ,I TF O RT ■ 1 T O 3 :
P O K ES I D + 4 , 1 6F O RT ■ 1 T O 3 0 0
P O K ES I D + i ,6 8P 6 K ES I D + 4 ,1 7F O RT ■ 1 T O 3 :
P O K ES I D + 4 , 1 6F O RT = i T O 3 0 8
6 E T K P SI F K P S ■ " " T H E N■
: R E HM A XS U S T A I N: R E MM A XV O L U M E
E N DO N A K E Y P R E S S
: R E HT I C K
N E X TT
: N E X TT
: R E MT O C K
N E X TT
: N E X TT
1 2 2 0
R E H* * C L E A NU P f t E N D
F O R R E 6= S I D T O: P O K ER E G ,8N E X T R E 6P R I N T" U " ;
z
E N D
S I D + 2 4
F i g .9 - 1 .L i s t i n go f t h ep r o g r a mC l o c k .
1 6 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 175/258
F i g .9 - 2 .A p i c t u r e o ft h eA D S Re n v e l o p eu s e di n C l o c k .
t i c k .L i n e1 2 2 0s e t s af r e q u e n c y ,a n dt h e nl i n e
1 2 3 0s e t st h et r i a n g l ew a v e f o r ma n dt r i g g e r s
t h es o u n d .T h e r e ' sa s h o r tp a u s e ,w i t ht h et i c k
a t p e a kv o l u m e ,a n dt h e nl i n e1 2 5 0r e l e a s e s t h e
s o u n d .F i n a l l y ,t h e r e ' sa r e l a t i v e l yl o n g p a u s e .
T h e n ,i t ' st i m ef o rl i n e s1 2 8 0 - 1 3 2 0t o g i v e
y o ua t o c k .A n e w , l o w e rf r e q u e n c yi s s e t .
S p e c i a lS o u n dE f f e c
T h e nt h e s o u n di s t r i g g e r e d ,h e l da b i t ,a n d
r e l e a s e d .A g a i n ,t h e r e ' sa r e l a t i v e l yl o n
p a u s e . L i n e1 3 4 0s c a n s t h ek e y b o a r d ;i f n ok e y ' sb e e np r e s s e d ,i t ' sb a c ku p t o l i n e1 2 2 0f o r
a n o t h e rt i c k .
T h et o pr o wi n F i g .9 - 3s h o w sa f e wb e a t s
w o r t ho f v o l u m ei n f o r m a t i o n( n o tt o s c a l e )
t h i sp r o g r a m .N o t i c et h e r e g u l a r i t yo f t h e
s k e t c h .T h es e c o n dr o ws h o w sw h a tw o u l
h a p p e ni f t h et i c kh a da l o n g e rs u s t a i np e r i o
a n dt h e t o c kc a m ea l o n gs o o n e r .S e ei f y o uc a n
c h a n g eC l o c ks o i t s o u n d sm o r el i k et h es e c o n
r o w .D r a w i n gt h e s er o u g hp i c t u r e s g i v em eaf i r s tc r a c ka t S I Ds e t t i n g sa n dd e l a y l o o p sw h e
I ' mp l a n n i n ga n e ws o u n d .
Y o un e e d p r o g r a m st h a tc a nb e e a s i l
m o d i f i e dw h e ny o u ' r e c r e a t i n gs o u n de f f e c t
P u ti n p l e n t yo fd e l a y l o o p sa n ds t a t e m e n t t h a t
s e t t h e S I Dr e g i s t e r s .I t t a k e sa l o t o f f i n e
t u n i n gt o p r o d u c et h es o u n d s y o uh e a ri n y o u
i m a g i n a t i o n .
0 )
C L
<- %T i c k « T o c k« « T o c k# - %T i c k
T i m e
Q
T i c k
nT o c k
AT i c k T o c k T i c k
r \ .T i m e
F i g .9 - 3 .T o p :a f e wb e a t ' sw o r t ho fv o l u m ei n f o r m a t i o nf o rC l o c k( n o t t o s c a l e ) .B o t t o m :A p o s s i b l ev a r i a t i o no fC l o c kw i t ha l e s s
u n i f o r mb e a t .
1 6 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 176/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
9 . 2 T H EG O N G M A C H I N E
Y o u ' v e h e a r dS I Dp r o d u c ea c l o c k ' st i c k s .
N o wl e t ' sg e t s o m eb i g ,r e v e r b e r a t i n gg o n gn o i s e s .Y o u ' l ls t a r tb y l o o k i n ga t r i n gm o d u l a
t i o n .I t ' so n ew a yt o l i n kt w ov o i c e st o g e t h e r .
9 . 2 . 1 R i n g M o d u l a t i o n
T h e r e ' sa f i f t hS I Dw a v e f o r mo p t i o nI h a v
e n ' tm e n t i o n e dy e t .I t ' sc a l l e dr i n gm o d u l a t i o n .
S I Dc a nc o m b i n ei n f o r m a t i o nf r o mt w ov o i c e s
t o f o r mw h a t ' sc a l l e da r i n g - m o d u l a t e do u t p u t .
T h i sr i n gm o d u l a t i o nd o e sa g r e a tj o bo ng o n g s ,
b e l l s ,c h i m e s ,a n dt h el i k e .
H e r e ' sh o wy o ug e t a v o i c et o p r o d u c e
r i n gm o d u l a t e do u t p u t .F i r s t ,s e l e c tt h ev o i c e ' s
t r i a n g l ew a v e f o r m .N e x t ,s e ti t sr i n gm o d u l a
t i o nc o n t r o lb i t ,b i t2 o f t h ew a v e f o r mc o n t r o l
r e g i s t e r ,t o 1 . F i n a l l y ,s e tt h ev o i c e ' sp a r t n e r
t o af r e q u e n c yo t h e rt h a n0 .
W h a t ' sa p a r t n e r ?W h e na v o i c ei s s e tu p
f o rr i n gm o d u l a t i o n ,i t m i x e sa n o t h e rv o i c e ' s
f r e q u e n c yi n f o r m a t i o nw i t hi t so w n .V o i c e# 1
u s e sv o i c e# 3a s ap a r t n e r ,v o i c e# 2u s e sv o i c e
# 1 , a n dv o i c e# 3 u s e sv o i c e# 2 .
H e r e ' sa n e x a m p l e .L e t ' ss e tv o i c e# 1 u p
f o rr i n gm o d u l a t i o n .Y o un e e dt o s e tt h ef o l
l o w i n gb i t so f t h e w a v ec o n t r o l r e g i s ta t
S I D + 4 :b i t0 t o t r i g g e rt h es t a r to f a n A D S R
e n v e l o p e ,b i t2 t o c h o o s er i n gm o d u l a t i o n ,a n db i t4 t o s e l e c t t h et r i a n g l ew a v e f o r m .A d d i n
t h ev a l u e so f t h o s eb i t sg i v e sy o u2 1 ,s o 2 1 i s
t h en u m b e rt o p u ti n t oS I D + 4 .S e eF i g .9 - 4 .
T h e ny o u n e e dt o s e tv o i c e# 3 t o a n o n z e r
f r e q u e n c y .Y o uc a nd o t h i sb y s e t t i n gt h ef r e
q u e n c yr e g i s t e ra t S I D + 1 5t o a n o n z e r ov a l u e ,
s a y1 9 . W h e ni t ' st i m et o t r i g g e rt h e r e l e a
s t a g eo f t h eA D S Re n v e l o p e ,y o u ' l lj u s tp l a c e
t h ev a l u e2 0 ( b i t0 o f f )i n t oS I D + 4 .
9 . 2 . 2 T h eP r o g r a m
F i g u r e9 - 5l i s t st h ep r o g r a mG o n gM a
c h i n e ,w h i c hu s e sr i n gm o d u l a t i o nt o g i v ey o u
n i n ed i f f e r e n tc h i m es o u n d s .R e a di t o v e r ;
t h e nt y p ei t i n , s a v ei t , a n dr u ni t .
A f t e rS I Di s c l e a r e da n dt h es c r e e n ' ss e t
u p , l i n e s1 1 8 0 - 1 1 9 0s e tt h eA D S Re n v e l o p ef o r
v o i c e# 1 . L i n e1 2 1 0s e t st h eo v e r a l lv o l u m e
L i n e s1 2 6 0 - 1 3 1 0o b t a i nk e y p r e s s e
P r e s s i n gt h e s p a c e b a re n d st h e p r o g r a m
P r e s s i n go n eo f t h en u m b e rk e y s1 - 9w i l lg e n
e r a t ea g o n gs o u n d .A n yo t h e rk e y b o a r di n p u t
i s i g n o r e d .
B i t
v a l u eB i t
n u m b e r
B i t
f u n c t i o n
1 2 8
7
N o i s e
0
6 4
6
P u l s e
0
3 2
5
S a w t o o t h
0
1 6
4
T r i a n g l e
1
1 6
8
3
—
0
+
4
2
R i n g
m o d u l a t i o n
1
4
2
1
S y n c
0
+
1
0
G a t e
1
1 = 2 1
F i g .9 - 4 .S e t t i n gu p a v o i c e ' sf i f t hr e g i s t e rf o rr i n gm o d u l a t i o n .
1 6 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 177/258
£91
<IN3
3N099N09U3X
OQT=1N3H1
3dfiNV313**
01ZTOZ'*+0IS
1....<>SdXJI
$d3l139ez*asftuno'ois3»od
8T*<OT/1>INI
9N099N08U3X-
d3l
dX+C'T
-1=a3ltVf1D00T01T■1
tz'fr+ais
+6T'fiT+OIS*dX'T+OIS
■M3a:
;
01093*0d1X3N
:
:
:
:
aoj3X0d
33IOd
3X0d
89ZTN3H16<d3l30T>dHJI6-t3aisnuW3a
110N3W3a:08*T09ZT
sunnonxwwU3
6=Sia'O=1SSM3ZT=AXO'O=X1VM3
sa3isi93aois
..'0N301a«83
..'S9N09aOJ6-T
*z+oisdIH3ONnOSM3a^
sidMoadiHiads
:c$dx>nun
N3H1....=$d
=d)lI
31JIN3H1....=$d*JI
:SdX
11AVld**
a:ST>Z+OIS
a:6'9+QISa:ZT'£+OIS
3ZI1VI1INI*»
3VdSSS3ad..1
139
M3a:
2
33IOd
33IOd3)IOd
:
M3a
NiadiNiad
SA33ISS3ad..INIad'..fl..iniad
93a0'93a3)IOd
01OIS=93aZLZPZ=
OISaV313**
««*3NIH3VM9N09***
1X3N
aojOIS
z
M3a:
:
M3a
09*TOCt-TOffTO£fTezpjOT*T00*-T
06£T08£ToieT89£T0££T
O^ST0££TOZ£TOT£T00£T06ZT08ZT01ZT09ZTO£ZTQPZJO£ZTOZZTOTZTOOZT06TT08TT01TT09TTOCTT
OSTTOZTTOTTTOOTT060T080T010T090T0£0TOt-OT0£0TOZOT
OTOTOOOT
punos
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 178/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 4 T B
I 4 8 61 4 9 01 S 0 01 3 1 01 3 2 01 3 3 0
F O R R E G=: P O K EN E X T R E GP R I N T " L "
:
E N D
S I DR E G ,
*
T O S I D + 2 40
F i g .9 - 5 .L i s t i n go f t h ep r o g r a mG o n gM a c h i n e .
L i n e1 3 3 0s e t st h ef r e q u e n c yo f v o i c e# 1
b a s e d o nt h en u m b e ro f t h ep r e s s e dk e y .L i n e
1 3 4 0 d o e st h es a m ef o rv o i c e# 3 . L i n e1 3 5 0
t h e nt r i g g e r st h e s t a r t o fa r i n gm o d u l a t e d
s o u n d .
T o a d de m p h a s i st o t h e s o u n d ,l i n e s
1 3 6 0 - 1 4 1 0w i g g l et h ef r e q u e n c yo f v o i c e# 1 .
T h i sk i n do fe f f e c ti s k n o w na s v i b r a t oo r t r e m
o l o .W h i l et h ep r o g r a m ' sw i g g l i n g ,i t ' sa l s o
k e e p i n g a ne y e o nt h ek e y b o a r d .I f a k e yi s
p r e s s e d ,i t ' l la b o r t t h ev i b r a t o ,r e l e a s e t h e
s o u n d ,a n dp o pb a c ku p t o d e a lw i t ht h ek e y
p r e s s .I f n o k e yi s p r e s s e dd u r i n gt h e v i
b r a t o ,t h eg o n gc a l m l yf a d e sa w a y , a n dt h ep r o
g r a mg o e sb a c kt o s c a nt h ek e y b o a r d .
I s p e n tq u i t e aw h i l et r y i n gd i f f e r e n t f o r
m u l a si n l i n e s1 3 3 0a n d1 3 4 0 .T h er e l a t i o n s h i p
b e t w e e nt w ov o i c e s 'f r e q u e n c i e sa n dt h e r e
s u l t i n gr i n g - m o d u l a t e ds o u n di s c o m p l e x .Y o u
m i g h tw a n tt o t r ys o m ef o r m u l a so fy o u ro w n .
A n o t h e rs p o tw o r t he x p e r i m e n t i n g w i t hi s
l i n e1 3 7 0 ,t h ev i b r a t o f o r m u l a .Y o uc a n g e ta l l
k i n d so f i n t e r e s t i n gg o n gv a r i a t i o n sb y c h a n g
i n gt h i sl i n e .
9 . 3 S I DL I S T E N ST OI T S E L F
R i n gm o d u l a t i o nl e t so n ev o i c ea f f e c t
a n o t h e r .B u tt h e r e ' sn o ta s m u c hc o n t r o la s y o u
m i g h tn e e di n c e r t a i ns i t u a t i o n s .I t ' db e n i c ei f
y o uc o u l de a v e s d r o p o ns o m eo f S I D ' so u t p u t .
T h er e g i s t e r sa t S I D + 2 7a n dS I D + 2 8l e ty o u
d o j u s tt h a t .T h e yg i v ey o ua m o r ec o n t r o l l e
w a yt o l i n kv o i c e st o g e t h e r .
9 . 3 . 1 T h eE a v e s d r o p p i n gR e g i s t e r s
S I D + 2 7s h o w st h eo u t p u to f v o i c e# 3 ' s
o s c i l l a t o r .S I D + 2 8s h o w st h e o u t p u to f v o i c e
# 3 ' se n v e l o p eg e n e r a t o r .Y o uc a n r e a d t h
r e g i s t e r sa n dt h e nu s et h ev a l u e st o m o d i f y
o t h e rS I Ds e t t i n g s .
Y o u ' v eg o tt o s t a r tu p t h ev o i c e# 3 o s c i l
l a t o rt o g e tS I D + 2 7t o s h o wc h a n g i n gv a l u e s .
T h i si s d o n e b ys e t t i n ga f r e q u e n c ya n d
w a v e f o r mf o rv o i c e # 3 .Y o uw o n ' th e a rv o i c e
# 3 a s l o n ga s y o ud o n ' tt r i g g e rt h e A D S Re n v e l o p e .S ov o i c e# 3 c a no s c i l l a t ea w a y ,n o t
m a k i n ga s o u n d ,w h i l ey o ur e a di t so s c i l l a t i o
f r o mS I D + 2 7 .
Y o u ' v eg o t t o t r i g g e rt h e v o i c e# 3 e n
v e l o p eg e n e r a t o ri n o r d e rt o h a v ei t s v a l u e s
s h o wu p a t S I D + 2 8 .T h i sw i l lu s u a l l yc a u s e
v o i c e# 3 t o p u to u ts o m es o u n d s .I f y o ud o n ' t
w a n tt o h e a rv o i c e# 3 ,b u ts t i l lw a n tt o m o n i t o
i t s e n v e l o p eg e n e r a t o r ,y o us i l e n c ei t b y s e t
t i n gb i t7 o f S I D + 2 4t o 1 . S I D + 2 4i s t h es a m e
r e g i s t e ru s e dt o s e t o v e r a l lv o l u m e .T os e tb i t
1 6 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 179/258
7 t o 1 , j u s ta d d 1 2 8t o y o u rv o l u m es e t t i n ga n d
p o k et h en e wv a l u ei n .
9 . 3 . 2 T h eM a dC o m p u t e r
L e t ' sl o o ka t a p r o g r a mt h a tu s e st h e s e
n e we a v e s d r o p p i n gc a p a b i l i t i e s .F i g u r e9 - 6
l i s t st h ep r o g r a mM a dC o m p u t e r .R e a di t , t y p e
i t , s a v ei t , a n dr u n i t . P r e s s i n ga n yo f t h e
n u m b e rk e y s1 - 9w i l lc h a n g et h e s o u n dp a t -
S p e c i a lS o u n dE f f e c
t e r n .P r e s s i n ga n yo t h e rk e ye n d st h e p r o
g r a m s .
I n t h i sp r o g r a m ,v o i c e# 1 m a k e ss o u n w h o s ef r e q u e n c i e s a r eb a s e do n t h e o s c i l
t i o n so fv o i c e# 3 . L i n e1 3 0 0i s t h ek e y .I t t a k e
a v a l u ef r o mS I D + 2 7a n dp l u g si t i n t oo n eo f
v o i c e # l ' sf r e q u e n c yr e g i s t e r s .A f t e r ab r i e
p a u s e ,t h ep r o g r a ml o o k sf o r ak e y p r e s s
W h a tv a l u e sw i l lb e s h o w i n gu p a t S I
1 6 6 61 8 1 61 6 2 61 6 3 61 6 4 81 6 5 81 6 6 61 8 7 81 8 8 61 8 9 61 1 6 81 1 1 81 1 2 81 1 3 81 1 4 81 1 3 81 1 6 81 1 7 61 1 8 81 1 9 81 2 6 81 2 1 81 2 2 81 2 3 81 2 4 81 2 5 81 2 6 8
1 2 7 81 2 8 81 2 9 8
1 3 8 6
1 3 1 81 3 2 8
R E H*
:
R E M*z
S I D =F O R N
* » H A DC O M P U T E R
* C L E A RS I D
5 4 2 7 2
* * *
f t P R I N T
= S I D T O S I D + 2 4: P O K E N , 0
N E X T
P R I N TP R I N TP R I N TP R I N T
*
:
R E M *
P O K E
P O K EP O K E
z
P O K E:
;
R E M*
P O K E
P O K E
F 6 R TN E X T
N
" P R E S SK E Y S
" A N YO T H E R
* I N I T I A L I Z E
S I D + 6 , 2 4 8:
S I D + 1 5 , 1 8:
S I D + 1 8 , 1 6:
S I D + 2 4 , 1 3:
* P L A YI T
S I D + 4 , 1 7:;
B YS I D + 1 ,
1 - 9
K E Y
S I D
R E M
R E HR E H
R E H
R E HR E H
U - 3
T 8
P R O H P T S
C H A N G E "
T D E N D "
R E G I S T E R S
U - l
S E TS E T
S E T
T R I GS E T
S S T = H A X
U - 3 F R QU - 3 U U F
U O L U H E
U - l A T KU - l F R E Q
O S C I L L A T I O N S
P E E K C S I D + 2 7 )= 1 T O 5 :
TR E MW A I TA B I T
1 6 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 180/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 3 3 0
1 3 4 01 3 3 0
1 3 6 01 3 7 01 3 8 0i ^ « mX O « V w
1 4 0 01 4 1 01 4 2 01 4 3 01 4 4 01 4 S 01 4 6 01 4 7 01 4 8 01 4 9 01 3 0 0
:
R E M« * S C A N K V B DC H A N G E
z
6 E T K P S
T O P L A VM O R E .S O U N D , O RE N D
I F K P $ = " " T H E N
I F A S C C K P S )<I F A S C C K P S )>
4 93 7
1 3 0 0 R E MM O R E
T H E N 1 4 3 0T H E N1 4 3 0
: P O K ES I D + 1 S ,U A L < I C P $ )* 7: 6 0 T 0 1 3 0 0
F O R R E 6= S I D: P O K ER E G ,
N E X TR E GP R I N T" L " ;
E N D
T O0
R E MS O U N DC H A N G E D
S I D + 2 4R E MC L E A NR E MU PR E MS E N D
+ 2 7 ?Y o uh a v et o c o n s i d e rh o wv o i c e# 3i s o s
c i l l a t i n g .S i n c et h e t r i a n g l ew a v e f o r mi s s e
l e c t e di n l i n e1 2 1 0 ,v o i c e# 3 ' so u t p u tw i l lg o
f r o m 0t o 2 5 5a n d b a c kt o 0 a g a i n ,a t a r a t e s e t
b y i t s f r e q u e n c y .T h ev a l u e sp i c k e du p i n l i n e
1 3 0 0w i l ld e p e n do n t h i sf r e q u e n c ya n d o nh o w
o f t e nt h es a m p l i n gt a k e sp l a c e .
N o w ,m o s to f t h et i m ev o i c e# 1 s a m p l e s
S I D + 2 7a t a s t e a d yr a t e ,b r e a k i n go n l yt o d e
c i p h e ra n o c c a s i o n a lk e y p r e s s .T h e r ew i l lb e a
c e r t a i np a t t e r nt o t h es a m p l e si t p i c k su p a n d
t h u st o t h es o u n di t m a k e s .P r e s s i n go n eo f t h e
k e y s1 - 9c h a n g e sv o i c e # 3 ' s f r e q u e n c y .V o i c e
# 1 ,s t i l ll o o k i n ga t v o i c e # 3 ' so s c i l l a t i o n s a ta
s t e a d yr a t e , w i l l s t a r ts e e i n gd i f f e r e n tp a t t e r n s
o f d a t a ,a n ds o i t s s o u n dp a t t e r nw i l lc h a n g e .
T h e r ei s o n el a s ti n t e r e s t i n gf a c ta b o u t
t h i sp r o g r a m :v o i c e# T sv o l u m er i s e s t oi t s
p e a kl e v e la n ds t a y st h e r eu n t i lt h ep r o g r a m
e n d s .T w os e t t i n g sa c c o m p l i s ht h i s .F i r s t ,t h e
s u s t a i nl e v e li s s e tt o a m a x i m u m .S e c o n d ,t h e
<
A t t a c kD e c a y
T i m e
F i g .9 - 7 .A p i c t u r e o ft h eA D S Re n v e l o p eu s e di n M a dC o mp u t e r .
1 6 6
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 181/258
r e l e a s es t a g eo f t h e A D S Re n v e l o p ei s n ' t
t r i g g e r e du n t i lt h ep r o g r a me n d s .F i g u r e9 - 7
s h o w sw h a tt h i se n v e l o p el o o k sl i k e .
9 . 4 D A D A D U MD A D A D U M
D A D A D D U MD U M D U M. . .
T h en e x tp r o g r a mu s e sa n u m b e ro ft i m i n g
l o o p st o s i m u l a t e t h es o u n do f a g a l l o p i n g
S p e c i a lS o u n dE f f e c
h o r s e .I f y o ud o n ' tu n d e r s t a n dw h e r et h i ss e c
t i o n ' st i t l ec o m e sf r o m ,j u s ta s ks o m e o n ew h o
g r e wu p l i s t e n i n gt o t a l e so f t h em a s k e dm a nw i t ht h es i l v e rb u l l e t s .
F i g u r e9 - 8l i s t st h ep r o g r a mH o r s e .A f t e
y o u ' v e r u ni t , c h a n g et h er h y t h m s b yf o o l i n
w i t ht h e t i m i n gf o r m u l a s .C a ny o ug e t t h
h o r s et o c a n t e r ?P r a n c e ?R a c ep e l l - m e l ld o w
1 0 0 01 0 1 01 0 2 0
1 0 3 01 0 4 01 0 3 01 0 6 01 0 T 01 0 8 01 0 9 01 1 0 01 1 1 01 1 2 01 1 3 01 1 4 01 1 3 01 1 6 01 1 7 01 1 8 01 1 9 01 2 0 0
1 2 1 01 2 2 01 2 3 01 2 4 01 2 5 01 2 6 0
1 2 T 01 2 8 01 2 9 01 3 0 01 3 1 01 3 2 01 3 3 0
R E M:
:
R E Mz
S I DF O R
:
N E X T:
* * * H O R S E* * *
« * C L E A RS I D f t P R I N TP R O M P T S
= 3 4 2 T 2 : R E MS O U N D C H I PR E G= S I D T O S I D + 2 4P O K ER E G ,0
R E G
P R I N T" L " ;P R I N T " P R E S S S P A C E B A RT O S T O P "
:
z
R E Mz
P O K EP O K E
:
R E M
:
U C =U L M
z
U L M
m e I N I T I A L I Z ES I D R E G I S T E R S
S I D + 5 ,4 R E MA T K - Q ,D K V = 4S I D + 6 ,1 6 4 R E MS S T = 1 0 ,R L S = 4
* » S E T U O L U M E ,F R E Q U E N C Y ,T I M I N G
1 R E M U O L U M E C H A N G E= 1 2 R E MS T A R T I N G U O L U M E
= U L M+ U C R E MU P D A T E U O L U M EI F U L M= 1 5 O RU L M= 1 2
P O K E:
F R QD L V
z
z
R E M
T H E NU C = - U CS I D + 2 4 ,U L M
= 3 3 -U L M R E MF R Q / U L ML I N K= I T R E M T I M I N G F A C T O R
m e P L A Y T H EF O U R H O O U E S
1 6 7
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 182/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 3 4 61 3 5 61 3 6 61 3 7 61 3 8 61 3 3 61 4 6 61 4 1 81 4 2 81 4 3 81 4 4 61 4 3 61 4 6 61 4 7 61 4 8 8I 4 8 6
1 3 6 81 3 1 81 3 2 81 3 3 81 3 4 81 3 3 81 3 6 81 3 7 81 3 8 81 3 9 81 6 6 81 6 1 61 6 2 6
1 6 3 81 6 4 81 6 3 81 6 6 61 6 7 61 6 8 61 6 9 61 7 8 6
z
P O K EP O K EF O RP O K EF O R
:
P O K EP O K EF O RP O K EF O R
P O K EP O K EF O R
P O K EF O R
:
P O K EP O K EF O RP O K EF O R
:
:
R E M
6 E 7
S I D + 1 , F R Q+S I D + 4 , 1 2 9
2
T ■ 1 T O D L Y « 1 . 1:
S I D + 4 , 1 2 8T = 1 T O D L V
S I D + 1 ,F R QS I D + 4 , 1 2 9
T = i T O D L VS I D + 4 ,1 2 8
T = 1 T O D L V
S I D + 1 , F R Q-S I D + 4 , 1 2 9
T = i T O D L V
S I D + 4 , 1 2 8T = i T O D L V
S I D + 1 ,F R QS I D + 4 , 1 2 9
T = 1 T O D L VS I D + 4 ,1 2 8
T = 1 T O D L V
» 3 :
: N E X T
* 1 . 1
2
» 1 . 2 :
« 1 . 4
» . 8 :
* 3 . 3
: R E MH O O F
N E X TT
N E X TT
R E MH O O F
T
: N E X TT
R E MH O O F
N E X TT
: N E X TT
R E MH O O F
N E X TT
: N E X TT
* * Q U I TI F K E VP R E S S E D
K P S
I F K P $ a " " T H E M
F O R
N E X T
R E 6 = S I D T OP O K ER E 6 , 0
R E GP R I M T" t i " ;
E N D
1 2 3 8
S I D + 2 4
1
2
3
4
F i g .9 - 8 . L i s t i n g o ft h ep r o g r a mH o r s e .
t h e s t r e t c h ?I t ' s a l li n t h et i m i n g .
L e t ' se x a m i n et h e p r o g r a m .T h ef i r s t
s e g m e n tp e r f o r m st h e u s u a lS I Dc l e a r i n ga n d
p r o m p tp r i n t i n g .T h en e x ts e g m e n ts e t su pt h e
A D S Re n v e l o p ef o rt h e h o o f b e a t s .T h i ss o u n d
w i l lt a k eo na p r e t t yc l a s s i ce n v e l o p e .I t c l i m b s
q u i c k l yt o p e a kv o l u m e , d e c a y sa t a m o d e r a t e
r a t e ,h o l d sa t a b o u tt w o - t h i r d so fp e a kv o l u m e
a n dt h e nf a d e st o z e r ov o l u m ea t a m o d e r a
r a t e .Y o uc a ns u g g e s td i f f e r e n tt y p e so fh o r s e s
s h o e s ,a n ds u r f a c e sb y c h a n g i n gt h ee n v e l o
a n d w a v e f o r m .
L i n e s1 2 2 0 - 1 2 9 0f o r ma n i n t e r e s t i n gs e g
m e n t .E a c ht i m et h r o u g h , t h ep r o g r a mw i l l
1 6 8
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 183/258
S p e c i a lS o u n dE f f e c t
F i g .9 - 9 .A p i c t u r eo f t h eA D S Re n v e l o p ey o u ' l l t r yt o s e tu pt o
s i m u l a t ea g u n s h o t .
m a k es l i g h tc h a n g e st o t h e v o l u m ea n df r e
q u e n c ys e t t i n g s .T h i sv a r i e t ym a k e st h eh o o f -
b e a t ss o u n da l i t t l em o r en a t u r a l .L i n e1 3 0 0
s e t sa b a s i ct i m i n gv a r i a b l e ;a l lt h eo t h e rt i m
i n gw i l lb e b a s e do n t h ev a l u eo f D L Y . Y o u
m i g h tt r yi n s e r t i n ga f o r m u l at h a tv a r i e sD L Y ' s
v a l u ee v e r yn o wa n dt h e n .
L i n e s1 3 5 0 - 1 5 7 0p l a y t h eh o o v e s ,o n ea t a
t i m e .F o re a c hh o o f ,v o i c e# 1 g e t s g a t e d ;
t h e r e ' s as h o r t d e l a y ;t h ev o i c ei s r e l e a s e d ;
t h e nt h e r e ' sa l o n g e rd e l a y .T h ev a r i o u sd e l a y s
v a r yf r o mh o o ft o h o o f ;j u s tl i k es n o w f l a k e s ,n o
t w of e e ta r e e x a c t l ya l i k e .
S e ei f y o uc a nm a k ei t s e e ma s i f t h eh o r s e
i s s l o w l y a p p r o a c h i n gt h el i s t e n e r ,p a s s i n gb y ,
a n dt h e nm o v i n ga w a y .H e r ea r e t h r e eh e l p f u l
h i n t s :
A s s o u n d sa p p r o a c h ,t h e yg e t l o u d e ra n d
t h ef r e q u e n c yg o e su p .
A ss o u n d sm o v ea w a y , t h e yg e ts o f t e ra n d
t h ef r e q u e n c yg o e sd o w n .
A l i t t l ee x a g g e r a t i o nn e v e rh u r t sa s o u n d
e f f e c t .
9 . 5 B A N G B A N G
B e f o r et h ed a y so f e l e c t r o n i cn o i s em a k
i n g ,a f a v o r i t ep a s t i m ew a sp l a y i n gw i t hr o l l so f
c a p s .T h e s ew e r el o n gr o l l so fp a p e r w i t hl i t t l e
e x p l o s i v eb u m p se v e r yq u a r t e ri n c ho r s o .
T h e yw e r em e a n tf o rc a pg u n s , b u tt h eg u n s
m i s f i r e da l o t . B e s i d e s ,t h e r e a lf u n l a y i
g e t t i n g ab u n c ho f ' e mt o g oo f fa t a t i m e .S ow e
u s u a l l yj u s tl a i da r o l lo n t h e p a v e m e n ta n d
c l o b b e r e di t w i t ha g o o d - s i z e dr o c k .W el o v e
t h en o i s e .T h es m e l lw a s n ' tb a d ,e i t h e r .
W e ' l ll e a v ei t t o t h ep s y c h o l o g i s t st o f i g
u r eo u tw h yp e o p l ee n j o ye x p l o s i v es o u n d s .I n
t h em e a n t i m e ,y o uc a nu s eS I Dt o m a k es o m
b l a s t s .
9 . 5 . 1 T h i n k i n gA b o u tt h eS o u n d s
L e t ' s t h i n ka b o u ts i m u l a t i n g t h es o u n do fa
g u n .Y o u ' v er e a l l yg o tt w os o u n d st o d e a l w i
F i r s t ,t h e r e ' sa c r a c k i n ge x p l o s i o n , a sg u n
p o w d e ri g n i t e sa n dl a u n c h e sa b u l l e t .T h e n
t h e r e ' st h es o u n do f t h eb u l l e tz i p p i n gt h r o u g
t h ea i r .
W h i t en o i s ec o m e si n v e r yh a n d yf o re x
p l o s i o n s .R e m e m b e r ,s e t t i n gb i t7 o f a v o i c e
w a v e f o r mr e g i s t e r s e l e c t sw h i t en o i s e .Y o u ' l
s t a r te a c h g u n s h o tw i t ha b u r s to fw h i t en o i s e
A l s o ,e x p l o s i o n ss t a r to u tl o u d l ya n dt h e nf a d e
a w a y .S o y o u ' l lh a v et o t r yt o s e tu p a n A D S
e n v e l o p et h a tl o o k sl i k et h eo n es h o w ni n F i g .
9 - 9 .
N o w ,f o rt h ew h i s t l i n go f t h eb u l l e ta s i t
g o e st h r o u g ht h ea i r . I tt a k e sa m o m e n ta f t e
t h ee x p l o s i o nf o rt h eb u l l e t t op i c ku p e n o u g
s p e e dt o b e h e a r d .A si t a c c e l e r a t e st o w a r d a
l i s t e n e r ,i t s s o u n dr i s e si n p i t c ha n dv o l u m
A s i t p a s s e s a n dm o v e so n a w a yf r o ma l i s -
1 6 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 184/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
t e n e r ,t h e s o u n dd r o p si n p i t c ha n d v o l u m e .
Y o u ' l ln e e da n A D S Re n v e l o p et h a tg i v e sa
d i s c e r n i b l er i s ea n df a l li n v o l u m e .T h e ny o u ' l ln e e dt o s e tu p s o m ef r e q u e n c ys e t t i n gl o o p s
t h a tg o a l o n gw i t ht h ev o l u m ec h a n g e s .
9 . 5 . 2 M a k i n gt h eS o u n d s
F i g u r e 9 - 1 0l i s t st h e p r o g r a mB a m -
P T w a n g ,w h i c hm a k e ss h o o t i n gn o i s e s .R u n
i t . H o wd o e si t s o u n d ?Y o um a yw a n tt o a d da n
e c h ow i t ha t h i r dv o i c e ,o r a d j u s tt h et i m i n g ,o r
c h a n g et h ef r e q u e n c i e s .A s u s u a l ,e x p e r i m t a t i o nw i l lt e a c hy o ua l o t .
L i n e s1 1 8 0 - 1 2 2 0s e t t w oA D S Re n v e
l o p e s .V o i c e# 1 w i l lh a n d l et h ee x p l o s i o n ,a n d
v o i c e# 2 , t h ef l i g h t .V o i c e# 1 , w i t h a na t t a c k
r a t e o f0 , w i l l h i tp e a k v o l u m ei n 2 t h o u s a n d
o f a s e c o n d ,a n dt h e ns t a r td e c a y i n ga t a m u c h
1 6 6 61 6 1 6
1 6 2 61 6 3 81 6 4 61 6 3 61 6 6 81 8 7 81 8 8 61 8 9 81 1 8 81 1 1 81 1 2 61 1 3 81 1 4 8
1 1 5 81 1 6 81 1 7 81 1 8 81 1 9 61 2 6 81 2 1 61 2 2 81 2 3 81 2 4 81 2 5 61 2 6 81 2 7 8
1 2 8 81 2 9 81 3 6 61 3 1 61 3 2 61 3 3 6
R E N« * * B A M - P ' T W A N G* * *z
z
R E M* * C L E A RS I D & P R I N TP R O M P T S
S I D = 5 4 2 7 2 : R E HS O U N DC H I PF O RR E 6 = S I D T 6 S I D + 2 4: P O K ER E G ,8
N E X TR E 6:
P R I N T" L " ;P R I N T" P R E S S S P A C E B A RF 6 R S O U N D . "P R I N TP R I N T" P R E S SR E T U R NK E V T 6E N D . "
z
z
R E M« * I N I T I A L I Z E S I DR E G I S T E R S
P O K ES I D + 5 , 1 8 R E MU - l A T K / D K VP O K ES I D + i , 1 8 R E MU - l F R E Q
:
P O K ES I D + 1 2 , 8 9 R E MU - 2 A T K / D K VP O K ES I D + 1 3 , 1 8 R E MU - 2 S S T / R L S
z
P O K ES I D + 2 4 ,1 5 R E MM A X U 6 L U M E
z
R E M* * S C A NK E Y B O A R DF 6 R S H O T6 R E N D
G E T K P SI F K P S= ■ ■ ■ 'T H E N 1 2 9 6I F K P S= C H R $ < 1 3 ) T H E N1 5 5 8;
;
1 7 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 185/258
S p e c i a lS o u n dE f f e c
1 3 4 6
1 3 S 61 3 6 61 3 7 61 3 8 61 3 9 8I 4 8 61 4 1 61 4 2 61 4 3 61 4 4 81 4 3 81 4 6 61 4 7 6
1 4 8 81 4 9 61 5 6 61 3 1 81 3 2 61 3 3 81 3 4 81 3 3 61 3 6 61 3 7 61 3 8 61 3 9 81 6 8 8
H E M« * P L A VI T :
:
P O K ES I D + 4 , 1 2 8P O K ES I D + 4 , 1 2 9
U O I C E1 E X P L O S I O N ,U O I C E2 F L I 6 H T
R E MR E L E A S EU - lR E MS T A R TU - l
R E M F O RT = i T O 2 8 : N E X TTP O K ES I D + 1 1 ,1 6P O K ES I D + l i ,1 7
™
F O R F R Q= 1 6 T O: P O K ES I D + 8 ,N E X T F R QF 6 R F R Q= 7 7 T O: P O K ES I D + 8 ,: F O R T = i T O
N E X TF R Q•
G O T O 1 2 9 8
•
R E M* » C L E A NU P•
F O R R E 6= S I D T O: P O K ER E G ,8
N E X TR E 6P R I N T" L " ;
*
E N D
R E MR E L E A S EU - 2R E MS T A R TU - 2
8 8 S T E P3F R Q
3 S T E P- 3F R Q
4 : N E X TT
& E N D
S I D + 2 4
F i g .9 - 1 0 .L i s t i n go f t h ep r o g r a mB a m - P T w a n g .
s l o w e r1 . 5s e c o n dr a t e .V o i c e# 2 h a sa na t t a c k
r a t eo f 5 . I tw i l lt a k e5 5t h o u s a n d t h so fa s e c o n d
t o r e a c hp e a kv o l u m e ,a n dt h e nd e c a ya t a r a t e
c l o s et o v o i c e # l s .R u nt h e p r o g r a mw i t h
s o m ed i f f e r e n tv a l u e sd e f i n i n gt h eA D S Re n v e
l o p e s .Y o uc a ns i m u l a t ed i f f e r e n tt y p e so fg u n s
a n db u l l e t s .
N e x t ,t h ep r o g r a mw a i t sf o ra k e y p r e s si nl i n e s1 2 9 0 - 1 3 0 0 .P r e s s i n gt h e r e t u r nk e yw i l l
e n dt h ep r o g r a m .A n y t h i n ge l s es h o o t s ab u l
l e t . L i n e s1 3 6 0 - 1 4 0 0d o t h es h o o t i n g .
F i r s tc o m e sv o i c e# 1 ,w i t ht h ee x p l o s i o n .
N o t i c eh o wt h ep r e v i o u s e x p l o s i o nd o e s n ' tg e t
c o m p l e t e l yr e l e a s e du n t i lt h e l a s tp o s s i b
m o m e n t .T h e r e ' sa b r i e fp a u s ei n l i n e1 3 8 0s o
t h eb u l l e tc a np i c ku pa l i t t l es p e e d .T h e nv o i c e
# 2 c h i m e si n w i t ht h e w h i s t l i n gf l i g h t .
L i n e s1 4 2 0 - 1 4 8 0t h e nt a k e v o i c e # 2 'f r e
q u e n c yo n a r o l l e rc o a s t e rr i d e .U n l i k eG o n g
M a c h i n e ,t h i sp r o g r a md o e s n ' ts c a nt h ek e y
b o a r dw h i l ei t ' sp l a y i n gw i t hf r e q u e n c i e s .T h a tm e a n sy o ud o n ' th a v er a p i d - f i r e c a p a b
T r yc h a n g i n gt h i s l i m i t a t i o n .
W h i t en o i s ea l s oc o m e si n h a n d yf o r
s i m u l a t i o n so f w a v e s ,w i n d ,s l a m m i n gd o o r s
a n ds i m i l a rp h e n o m e n a .I t ' s p a r t i c u l a r l yi n -
1 7 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 186/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
t e r e s t i n gt o c o m b i n ei t w i t hm o r em u s i c a l
w a v e f o r m s ,a s B a m - PT w a n gd o e s .
9 . 6 N O WE N T E R I N GT H E P U L S E RZ O N E
w a v e f o r m so f v a r y i n gw i d t hw i t hs m o o t hv o l
u m ec h a n g e s .T h i sc r e a t e sa n e e r i en o i s et h a t
b a c k g r o u n dm u s i ci n t h eT w i l i g h tZ o n e .
F i g u r e9 - 1 1l i s t st h e p r o g r a m ,P u l s e
Z o n e .A su s u a l ,r e a di t , t y p ei t i n , s a v ei t , r u n
i t , a n d t h e nm a k ey o u ro w nm o d i f i c a t i
C o m eo n b a c kt o t h eb o o kw h e ny o u ' r er e a d y
T h ef i n a ls o u n de f f e c tc o m b i n e sp u l s ef o r al i t t l ee x p l a n a t i o n .
L i n e s1 1 6 0 - 1 1 9 0s e t t h ef r e q u e n c
A D S Re n v e l o p e ,a n dv o l u m e .A s i n t h ep r o -
w o u l d b ep e r f e c tf o r d i s i n t e g r a t i o nr a y so r g r a mM a dC o m p u t e r ,v o l u m eq u i c k l yr i s e s t o
1 8 0 01 8 1 01 0 2 81 8 3 81 8 4 81 8 3 81 8 6 81 8 7 81 8 8 81 8 9 01 1 8 81 1 1 81 1 2 81 1 3 81 1 4 8
1 1 5 81 1 6 81 1 7 81 1 8 81 1 9 81 2 8 81 2 1 81 2 2 81 2 3 81 2 4 81 2 5 81 2 6 01 2 7 01 2 8 01 2 9 01 3 0 01 3 1 01 3 2 01 3 3 01 3 4 0
R E Mz
R E N
S I DF O R
N E X T
* * w P U L S E RZ O N E* * *
* * C L E A R
= 5 4 2 7 2
S I D
R E 6 = S I D T OP O K ER E 6
R E 6
P R I N T" L " ;P R I N T" P R E S S
:
;
R E M
P O K EP O K E
*
P O K E:
:
R E N:
P O K E:
U L M
, 0
S P R I N T P R O M P T
R E MS I D + 2 4
S O U N D C H I P
S P A C E B A RT O E N D "
* * I N I T I A L I Z ES I D R E G I S T E R S
S I D + 1 ,S I D + 6 ,
S I D + 2 4 ,
« » P L A V
S I D + 4 ,
= 6 : AI F U L M= 1 5U L MP O K E
F O R
N E X T
= U L M+S I D + 2 4 ,
N = 8 T O
2 02 4 0
1 5
I T
6 5
a - 3
R E MR E M
R E M
U - l F R E QU - l S S T V R L S
M A XU O L U M E
R E MU - l P U L S EO N
O R U L M= 6
AU L M
1 5
: R E M
: R E MP O K ES I D + 3 ,N R E M
N
T H E NA = - A
A D J U S T U O L M
P U L S EW I D T HG R O U I N G
1 7 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 187/258
S p e c i a lS o u n dE f f e c t
1 3 3 01 3 6 01 3 7 0
1 3 0 01 3 9 01 4 0 01 4 1 01 4 2 01 4 3 01 4 4 01 4 S 01 4 6 01 4 7 01 4 0 01 4 9 01 3 0 0
1 3 1 01 3 2 01 3 3 0
F O RN = 1 4 7 0 9 S 7 E P- 1: P O K ES I D + 3 ,H
N E X 7H
R E M« * S C A N K E Y B O A R Dz
6 E 7 K P SI F K P S= " " 7 H E H1 2 7 0 :
:
R E M* w C L E A NU P & E N D:
F O RR E G= S I D 7 0 S I D + 2 4: P O K ER E G ,0N E X 7 R E G
P R I N 7" L " ;
E N D
R E MP U L S ER E MW I D T HR E MS H R N K
R E MN O K E V
F i g .9 - 1 1 .L i s t i n go f t h ep r o g r a mP u l s e rZ o n e .
p e a k a n dt h e ns t a y st h e r eu n t i lt h ep r o g r a m
e n d s .
L i n e1 2 4 0s e l e c t s t h ep u l s ew a v e f o r mf o r
v o i c e# 1 a n dt r i g g e r st h e A D S Re n v e l o p e .
L i n e1 2 6 0g i v e si n i t i a lv a l u e sf o rv o l u m ea n d
v o l u m ec h a n g ev a r i a b l e s .
L i n e1 2 7 0i s t h e t o po f t h em a i np r o g r a m
l o o p .O v e r a l lv o l u m ew i l lm o v eb e t w e e ns e t
t i n g s o f6 a n d1 5 . L i n e1 2 7 0s w i t c h e st h ed i
r e c t i o no f t h ec h a n g e si n v o l u m ew h e nt h o s e
l i m i t sa r e r e a c h e d .L i n e1 2 8 0c h a n g e st h ev o l
u m eb ya d d i n gi n t h ev o l u m ec h a n g e .T h e nl i n e
1 2 9 0p o k e si n t h en e wv a l u e .
L i n e s1 3 1 0 - 1 3 3 0m o v et h e p u l s ew i d t h
s e t t i n gf r o m8 t o 1 5 ,o n es t e pa t a t i m e .T h i s
c o r r e s p o n d st o p u l s ew i d t h so f 5 0 %t o 9 4 % .
L o o kb a c ka t S e c t i o n7 . 7 i f y o uf o r g e th o w
p u l s ew i d t h sa r es e t .
L i n e s1 3 5 0 - 1 3 7 0t h e nm o v et h e p u l s e
w i d t hs e t t i n gb a c kd o w n ,o n es t e pa t a t i m e .
T h e n ,l i n e s1 4 2 0 - 1 4 3 0d o a q u i c kk e y b o a
s c a n .I f a k e y ' sb e e np r e s s e d ,t h e p r o g r a
e n d s .I f n o t ,i t ' sb a c ku p t o l i n e1 2 7 0f o ra n e w
v o l u m es e t t i n ga n da n o t h e rs w e e pt h r o u g ht h e
p u l s ew i d t hl o o p s .
S o m ec h a n g e s a n da d d i t i o n sy o um i g h m a k et o P u l s e rZ o n ei n c l u d ef r e q u e n c yv a r i a
t i o n s ,r i n gm o d u l a t i o n ,e c h oe f f e c t s ,a s e c o n
v o i c ew i t hp u l s ew i d t h s c h a n g i n gi n o p p o s i t
p a t t e r n s ,a n da d i f f e r e n tA D S Re n v e l o p
A s u s u a l ,i m a g i n a t i v ee x p e r i m e n t sw i l lt e a c h
y o ua l o t .
9 . 7 C H A P T E RS U M M A R Y
Y o u ' v ep l a y e d w i t hs i x d i f f e r e n ts o u n d
e f f e c t sp r o g r a m si n t h i sc h a p t e r .H e r ea r es o m eh i g h l i g h t s o fw h a tw a sc o v e r e d :
* U s i n gs h o r t b u r s t so f t r i a n g l ew a v e
f o r m st o s i m u l a t ea t i c k i n gc l o c k
* U s i n gr i n gm o d u l a t i o na n df r e q u e n
1 7 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 188/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 189/258
1 2 8 3P O K E1 2 8 6 P O K E1 2 9 3P O K E1 2 9 6 P O K E1 3 1 3P O K E1 3 1 6 P O K E
S I D + 8 , 1 5S I D + 1 5 ,3 0S I D + 1 1 ,1 7S I D + 1 8 ,1 7S I D + i l ,1 6S I D + 1 8 ,1 6
2 . L o a di n t h ep r o g r a mB a m - P T w a n g .T h e nt y p et h e s el i n e s :
1 0 0 0R E N1 3 6 0 :
1 3 7 0 :
* * * P ' T W A N G - B A M* * *
S p e c i a lS o u n dE f f e
1 3 8 0 :
1 4 9 2 P O K ES I D + 4 , 1 2 8
t i l tr ? 5 E? i 5 * f : « ?«1 4 9 8? = °2 0
R E N
H E X TT
3 . L o a di n t h ep r o g r a mP u l s e rZ o nT h e nt y p ei n t h e s el i n e s :
i f ! !H » 21 3 6 3
* * *S 0 M0 FP 0 K ES I D + i ,2 *P O K ES I D * i .2 •
U - l
1 7 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 190/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 191/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 192/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
g a u g ea n dt h ef e a t u r e so f a p a r t i c u l a rc o m p u t
e r . T h et o u g hp a r ti s l e a r n i n gh o wt o p u ta
l a r g ep r o g r a mt o g e t h e r .
G o o dp r o g r a m m e r ss t a r tb y t h i n k i n g .T h e yt a k e ac o m p l e x p r o b l e ma n ds t a r tb r e a k
i n gi t u p i n t os i m p l e rp i e c e s ,o r m o d u l e s .T h e n
t h e yb r e a k a n yc o m p l e x m o d u l e sd o w ni n t o
e v e ns i m p l e rp i e c e s .T h i sc o n t i n u e su n t i l
t h e y ' v e g o ta s e t o fs i m p l em o d u l e st h a tc o v e r
e v e r yd e t a i l o ft h eo r i g i n a lp r o b l e m .T h e nt h e y
s t a r tt r a n s l a t i n g t h e i rp l a ni n t os p e c i f i cc o m
p u t e ri n s t r u c t i o n s .
T h i s a p p r o a c hi s k n o w na s t o p - d o w n
s t r u c t u r e dp r o g r a m m i n g .I t c a nb e u s e dw i t ha n yc o m p u t e rl a n g u a g eo n a n yc o m p u t e r .T o
m o s tb e g i n n e r s ,i t s e e m sa w a s t eo f t i m e .
T h e yw a n tt o s i t d o w na n d s t a r tw r i t i n g
c o d e .I t u s u a l l yt a k e sa f e we x p e r i e n c e s
w r e s t l i n g w i t ha b a d l ys t r u c t u r e dp r o g r a mt o
s e et h el i g h t .
H o wd o y o ul e a r n t op r o g r a mt h i sw a y ?
S t a r tb y r e a d i n gb o o k s a n dm a g a z i n e s ,t a l k i n
t o o t h e rp r o g r a m m e r s ,e x a m i n i n ga l l s o r t so f
p r o g r a m s ,l e a r n i n gm o r et h a no n ec o m p u tl a n g u a g e ,a n dt r y i n gt o p a ya t t e n t i o n t oy o u r
m i s t a k e s .K e e py o u rm i n do p e n ,a l e r t ,a n d
c a l m — a n dw r i t el o t so f p r o g r a m s .
1 0 . 3 O FB L I P SA N DB E E P S
( A H I S T O R I C A L S A L U T E
A b o u tt e n y e a r sa g o ,t h e f i r s tp o p u l a
h o m ev i d e og a m ea p p e a r e d :P o n g .P l a y e r sg o t
t o b o u n c ea b l i po f l i g h ta r o u n da T Vs c r e e nW h e nt h eb l i p h i ta w a l lo r a s i m u l a t e dp i n g
p o n gp a d d l e ,t h e r ew a sa l i t t l eb e e p .T h i s
c h a p t e r ' sf i r s tp r o g r a ms a l u t e s t h eh u m b l
w o r l do f b l i p sa n db e e p s .
F i g u r e1 0 - 1l i s t st h ep r o g r a mB o u n c e
T y p ei t i n , s a v ei t , a n dt h e n r u ni t .
1 O O O
1 0 1 01 0 2 01 0 3 01 0 4 01 1 ) 5 0X l f i f U
i 8 6 01 H 7 f lX I I 1 ( f
1 0 8 01 0 9 01 1 0 01 1 1 01 1 2 01 1 3 0
1 1 4 01 1 3 01 1 6 01 1 7 01 1 8 01 1 9 01 2 0 0
R E N« *:
:
R E M« *:
R X S f 1 1D n ¥ \ X /
B X S C 2 )
P R I N TP R I N TF O RN
* B O U N C E R* * *
D R A MT H E B O Xf t
= " 1
" L K I t i " : R E NS P C < 1 0 > ; B X $ ( 1 >= 1 T O 3
P R I N T
C L E A RR E M
: R E N: P R I N T S P C ( I O ) ; B X S C 2 )
N E X TN
P R I N T:
P R I N TP R I N T
:
:
R E N* •
S P C C 1 0 ) ;B X S C 3 ) R E M
S P C ( I O ) ;" ( Q P R E S SA N V"" K E YT O S T O P "
S E T U P S P R I T E D A T A
P R O N P T
1 "f ■ > ■
f t D O U NT O PS I D E S
B O T T O M
1 7 8
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 193/258
S o u n d s+ G r a p h i c s= M a g i c
1 2 1 0 :
1 2 2 0F O RN = 1 2 2 8 8T O 1 2 3 S 0: R E MM O S T L Y1 2 3 0 : P O K EN , 0 : R E NB L A N K
1 2 4 0N E X TN1 2 3 0 :
1 2 6 0F O RN = 1 2 2 8 8T O 1 2 3 0 0S T E P31 2 T 0: R E A DS P D T A1 2 8 0 : P O K EN , S P D T A : R E MB A L L S H A P E1 2 3 0N E X TN1 3 0 0 :
1 3 1 0 D A T A6 0 , 1 2 6 , 2 3 5 ,1 2 6 , 6 01 3 2 0 :
1 3 3 0 :
1 3 4 0R E M« * S E T U P U I CR E G I S T E R S1 3 9 0 :
1 3 6 0U I C = 3 3 2 4 8 R E MG R A P H I C SC H I P1 3 7 0 P O K E2 0 4 0 ,1 9 2 : R E MP O I N TT O D A T A1 3 8 0 P O K EU I C + 3 9 ,7 : R E M4 * 0 I S Y E L L O W1 3 9 0 P O K EU I C + 2 1 ,1 R E MT U R NO N * * 0
1 4 0 0 :
1 4 1 0 :
1 4 2 0R E M« * S E T U P T H ES O U N D S1 4 3 0 :
1 4 4 0S I D = 3 4 2 7 2 R E MS O U N DC H I P1 4 3 0 P O K ES I D + 3 ,2 4 R E MA T K = 1 ,D K V = 81 4 6 0 P O K ES I D + 2 4 ,1 5 R E MM A X U O L U M E1 4 7 0 :
1 4 8 0 :
1 4 9 0R E M« * I N I T I A L I Z EB A L LP O S I T I O NA N D M O U E S1 3 0 0 :
1 3 1 0H P = 1 8 0 : U P = 8 9 : R E MP O S I T I O N S1 3 2 0H M = 4 : U M = 2 . 3 : R E MM O U E S1 3 3 0 :
1 3 4 0 :
1 3 3 0R E M* * M O U E T H E B A L L1 3 6 0 :
1 3 7 0H P = H P + H M R E M N E WH O R Z .P O S1 3 8 0U P = U P + U M R E M N E WU E R T .P O S1 3 9 0 P O K EU I C , H P R E MS E T N E U1 6 0 0 P O K E U I C + 1 ,U P R E M P O S I T I O N S
1 6 1 0 :
1 6 2 0 :
1 6 3 0R E M« * C H E C KF O RA K E Y P R E S S1 6 4 0 :
1 6 3 0G E T K P S1 6 6 0I F K P SO " • ■ T H E N 1 9 3 0R E ME N DI T1 6 7 0 :
1 7 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 194/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 6 8 01 6 9 6
1 7 0 01 7 1 01 7 2 01 7 3 01 7 4 01 7 3 01 7 6 61 7 7 61 7 8 61 7 9 61 8 6 61 8 1 61 8 2 6
1 8 3 61 8 4 61 8 3 61 8 6 61 8 7 61 8 8 61 8 9 61 9 8 81 9 1 61 9 2 61 9 3 61 9 4 81 9 3 61 9 6 61 9 7 61 9 8 81 9 9 6
R E N*
H H =U H =
:
* C H E C K F O RA H I T
< H P <( U P <
I F ( N O TH H ):
R E N«
I F H HI F U H
P O K E
P O K EP O K E
:
H U E=
* D E A L
T H E NT H E N
S I D + 4 ,
S I D + 1 ,S I D + 4 ,
1 1 1 O R H P> 2 4 9 >8 0 O R U P > 1 0 2 )
A N D( N O TU H ) T H E N
W I T HA H I T
H H = - H N : R E NT U R NU H = - U H : R E HT U R N
1 6 : R E HR E L E A S E
R N D ( 6 ) * 4 6+ 1 8
1 3 7 0
A R N DA R N D
S O U N D
1 7 : R E HS O U N DA T T A C K S
( P E E K ( U I C + 3 9 )A N D1 3 ) +I F H U E= 1 6P O K E
6 0 T 0
:
R E N*:
P O K EP O K EP R I N T
E N D
U I C + 3 9
1 3 7 0
T H E N H U E= 1, H U E : R E HC H A N 6 E
: R E HH I T D E A L T
* C L E A NU P A N D6 0 H O N E
S I D + 2 4U I C + 2 1
" L " ;
, 0 : R E HS O U N DO F F, 0 : R E HS P R I T EO F F
1
C O L O R
W I T H
: R E HC L E A RS C R E E N
F i g .1 0 - 1 .L i s t i n go f t h ep r o g r a mB o u n c e r .
I n m o s tg r a p h i c sd i s p l a y s ,t h e r ea r e p a r t s
o f t h e p i c t u r et h a ts t a ys t i l la n dp a r t s t h a t
m o v e .Y o uc a nc a l lt h e p a r t st h a ts t a ys t i l l
s t a t i ce l e m e n t s a n dt h e p a r t st h a tm o v e
d y n a m i ce l e m e n t s .I n B o u n c e r ,t h eb o xi s t h es t a t i ce l e m e n t ,
a n dt h em o v i n gb l i pi s t h ed y n a m i ce l e m e n t .
T h eb o xi s d r a w nw i t hg r a p h i c sc h a r a c t e r s ,a n d
t h eb l i pi s a s p r i t e .W i t ht h eC o m m o d o r e6 4 ,
b i tm a p p i n ga n dg r a p h i c sc h a r a c t e r sw o r kw e l l
f o r s t a t i ce l e m e n t s .G r a p h i c sc h a r a c t e r sa n d
s p r i t e sw o r kw e l lf o rd y n a m i ce l e m e n t s .
1 0 . 3 . 1 S e t t i n gU pt h eG r a p h i c sa n dS o u n
L e t ' sl o o ka t B o u n c e r ' sm o d u l e s .L i n e 1 0 5 0 - 1 1 7 0s e t u p t h e s t a t i ce l e m e n t so f t h e
s c r e e nd i s p l a y .C u r s o rc o n t r o l c h a r a
s t r i n g sm a d eu po fg r a p h i c sc h a r a c t e r s ,a n dt h e
S P C ( ) c o m m a n da r ea l lu s e d .
T h en e x tt w om o d u l e ss e tu p t h es p r i t e
1 8 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 195/258
S o u n d s+ G r a p h i c s= M a g i
L i n e s1 2 2 0 - 1 3 1 0l o a di n t h e d a t af o r av e r y
s i m p l es p r i t e ,s h o w ni n F i g . 1 0 - 2 .T h e nl i n e s
1 3 6 0 - 1 3 9 0s e tu p t h en e c e s s a r yV I Cr e g i s t e r s .
L i n e s1 4 4 0 - 1 4 6 0s e t u p t h e s o u n dc h i p .T h e
p r o g r a mu s e sv o i c e# 1 . L i n e1 4 5 0s e t sv a l u e s
f o r t h a tv o i c e ' sa t t a c ka n dd e c a yr a t e s .L i n e
1 4 6 0s e t sa n o v e r a l lS I Dv o l u m el e v e l .F r e
q u e n c ya n dw a v e f o r mf o rv o i c e# 1 w i l lb e s e t
w h e n e v e rt h eb l i p h i t sa w a l l .
1 0 . 3 . 2 G e t t i n gT h eB l i p I n t oM o t i o n
T h em a i np a r t o ft h e p r o g r a mf o r m sa
l a r g el o o p .E a c ht i m et h r o u g h , t h eb l i pm o v e s
o n t h es c r e e n .F o u rv a r i a b l e sh a n d l et h eb l i p ' s
m o t i o n .H Pa n dV Pk e e pt r a c ko f i t s v e r t i c a
a n dh o r i z o n t a l p o s i t i o n so n t h e s c r e e n .H Mc o n t a i n s t h es i z ea n dd i r e c t i o no f h o r i z o n t
m o v e s .V Mc o n t a i n s t h es i z ea n dd i r e c t i o n
v e r t i c a lm o v e s .
L i n e s1 5 1 0 - 1 5 2 0i n i t i a l i z et h e s ef o u r
v a r i a b l e s .T h es p r i t ei s p u ti n t h em i d d l eo ft h e
b o x d r a w nb a c ki n l i n e s1 0 5 0 - 1 1 4 0 ,r e a d yt o
m o v ea l m o s tt w i c ea s f a s th o r i z o n t a l l ya s v e r
t i c a l l y .
L i n e1 5 7 0i s t h e t o po f t h em a i n p r o g
l o o p .L i n e s1 5 7 0 - 1 6 0 0f i g u r en e wh o r i z o n t
F i g .1 0 - 2 .T h es i m p l es p r i t ed e s i g nu s e di n B o u n c e r .
1 8 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 196/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
a n dv e r t i c a lp o s i t i o n sf o rt h eb l i pa n dt h e np o k e
t h e mi n t o s p r i t e# 0 ' sp o s i t i o nr e g i s t e r s .
N e x t ,t h ep r o g r a mc h e c k sf o ra k e y p r e s s .
A n yk e y p r e s sw i l lc a u s ea j u m pt o t h e p r o
g r a m ' sc l o s i n gm o d u l e .
L i n e s1 7 1 0 - 1 7 2 0 u s e B o o l e a n e x p r e s
s i o n st o s e ei f t h eb l i ph a sh i to n eo f t h eb o x ' s
w a l l s .L i n e1 7 1 0c h e c k sf o ra h i t o n t h e s i d e
w a l l s ,l i n e1 7 2 0f o ra h i to n t h et o p o rb o t t o m
w a l l s .I f n ow a l lh a sb e e nh i t ,t h ep r o g r a mp o p s
o n b a c kt o t h e t o po f t h em o t i o nl o o pa t l i n e
1 5 7 0 .
1 0 . 3 . 3 D e a l i n gW i t hA H i t
T h en e x tm o d u l e ,l i n e s1 7 9 0 - 1 9 0 0 ,d e a l s
w i t ha h i tb y c h a n g i n gt h eb l i p ' sm o t i o n ,s t a r t
i n g a s o u n de f f e c t ,a n dc h a n g i n gt h e b l i p ' s
c o l o r .
I f t h eb l i ph a sh i t a s i d ew a l l ,l i n e1 7 9 0
r e v e r s e si t sh o r i z o n t a lm o t i o n .I f i t h a sh i ta t o p
o r b o t t o mw a l l ,l i n e1 8 0 0r e v e r s e si t sv e r t i c a l
m o t i o n .
T h e nl i n e s1 8 2 0 - 1 8 4 0g i v e su s a s o u n d
e f f e c t .L i n e1 8 2 0r e l e a s e sa n yp r e v i o u s s o u n d .
L i n e1 8 3 0p i c k sa f r e q u e n c ys e t t i n ga t r a n d o m
a n dt h e np o k e si t i n t ot h e a p p r o p r i a t eS I D
r e g i s t e r .L i n e1 8 4 0t h e nt r i g g e r st h es o u n d .
F i n a l l y , l i n e s1 8 6 0 - 1 8 8 0c h a n g et h eb l i p ' s
c o l o r .I t w i l lc y c l er e p e a t e d l y t h r o u g ht h es e t
o fs p r i t ec o l o r s ,e x c e p tb l a c k .A f t e ra h i t ' sb e e n
d e a l t w i t h ,t h e p r o g r a m j u m p sb a c kt o l i n e
1 5 7 0 ,w h i c hi s t h e t o po f t h em o t i o nl o o p .
1 0 . 3 . 4 C l e a n i n gU p
T h ef i n a lm o d u l eo f B o u n c e rt u r n so f ft h e
s o u n d a n dt h es p r i t ea n dt h e nc l e a r st h es c r e e n
i n a s t r a i g h t f o r w a r dm a n n e r .I f y o uw a n t e dt o
b e a b i tm o r et h o r o u g h ,y o u ' dc l e a ra l lt h eS I D
a n dV I Cr e g i s t e r su s e di n t h ep r o g r a m .
1 0 . 4 T H E P I A N O R G A N
T h en e x tp r o g r a mu s e sc o m p l e xc h a r a c t
g r a p h i c sa n da s p e e d e d - u pk e y b o a r ds c a nt o
c r e a t ea n a n i m a t e dm u s i c a li n s t r u m e n t .I t ' s
l i s t e di n F i g .1 0 - 3 .T y p ei n P i a n o r g a n ;s a v ei t ;
a n dt h e n r u ni t . W h e ny o u ' r ep l a y i n g t h i n
s t r u m e n t ,n o t e sw i l l l a s ta s l o n ga s y o uh o l d
d o w na k e y .
1 0 . 4 . 1 B i gS t r i n g s
T h i sp r o g r a mu s e sl o n g c h a r a c t e rs t r i n g
t o q u i c k l yd r a wt h e s i n g i n gk e y s .T h e s
s t r i n g sc o n t a i n c u r s o rc o n t r o l c h a r a c t ed i sp l a y o p t i o nc h a r a c t e r s ,g r a p h i c sc h a r a c t e
a n dt e x t c h a r a c t e r s .A l t h o u g hs u c hs t r i n g st a k e
t i m et o s e t u p ,t h e ym a k ef o rs i m p l ep r o g r a
m i n ga n ds p e e d yd i s p l a y s .
P i a n o r g a n ' sf i r s tf e wm o d u l e sb u i l ds i x
t e e nc h a r a c t e rs t r i n g st o d i s p l a yt h e i n s t r u
m e n t ' ss i n g i n g k e y s .T h e r ea r et w os t r i n g s
e a c ho fe i g h tk e y s ,o n ew i t ha c l o s e dm o u t ha n d
o n ew i t h a no p e nm o u t h .
L i n e s1 0 5 0 - 1 0 7 0s e t u p t w ot a b b i ns t r i n g s .D $c o n t a i n sa h o m ec o m m a n da n d2 3
c u r s o rd o w nc o m m a n d s .R $c o n t a i n s4 0c u r s o
r i g h tc o m m a n d s .U s i n gt h e s es t r i n g si n c o m b
n a t i o nw i t ht h eL E F T $f u n c t i o nl e t su s m o v
t h e c u r s o ra n y w h e r eo n t h es c r e e n .
L i n e s 1 1 2 0 - 1 2 1 0b u i l du p e i g h tc l o s e
m o u t hs t r i n g s .F i r s t ,l i n e s1 1 2 0 - 1 1 4 0b u i l da
s e c t i o nt h a t ' sc o m m o nt o a l le i g h ts t r i n g s .L i n e
1 1 5 0s e t s ap i e c et h a t ' l lf i n i s ho f f a l l e i g h
s t r i n g s .T h e nl i n e s1 1 6 0 - 1 2 1 0p u t t o g e t h et h ee i g h tc u s t o ms t r i n g s .
L i n e1 1 7 0a d d st h ep i e c e so f D $ a n dR $
t h a t ' l lg e t t h e c u r s o rt o t h e p r o p e rs t a r t i n
p o s i t i o no n t h es c r e e n .T h ee i g h ti m a g e sw i l l
s h a r et h e s a m ev e r t i c a l p o s i t i o n .H o w e v e
1 8 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 197/258
C8L
U1WQ
N1X3N
T'8'£'ZT'1'C
CNX1HSA3JI21010301W3a:801T=N30J
S3Q0380103dfl13S«*143*
<NSdJ+CN>$Ud
+CN)$UdSWd+CN>SUd
N1X3N<N)SWd
CN>$Md<N>$Ud
OPPJoet-T
OZPTOTfTQOt-T06£T
08CT01STQ9£TGfiSTOf£T8CCTOZCTQT£T
=CN>$l4d:89CT801T=N80J06ZT
»IIIEUIIIEiFI..+SWd=SWd08ZT..■ElHIP)■El■..+SWd=SWd81ZT
..Him•lllfQ-IIMIO0El.a=SWd09ZT
S9NI91SHinOWN3dOdft13S»»U3U
N1X3N$dJ+CN>$U3=(N>$M3:
(N+8t-)$*H3+(N>$M3=(M)SWO:
SWO+<N>$M3=<N>$M3:
IP-N*£'$H>$1J3~I+(f'S<l>SlJ31=(N>$M3:
801T=NBOJ
Illlii..=$dJ..Illfil..+$143=SW3
..IIIEiFl■ElBIIHI-..+$U3=SWO..IHfH-IIIIUEllllil..=SW3
S9NIH1SHinOMa3S013dfl13S**M3S
$«■•IIHn..=sa
=sa
S9NI31S9NI88V1dfl13S»»143*
NU9*0NVId
OfZTO£ZTozztOTZT88ZT86TT98TT
01TT09TT
OSTTOfrTT
OCTTOZTT8TTT08TT860T880TOA0T090TOfiOT
OfOT0£0T
OZOTOTOTQOOT
oi6b|/\|=+spunos
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 198/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 4 3 01 4 6 01 4 7 01 4 8 01 4 9 01 3 0 01 3 1 01 3 2 01 3 3 01 3 4 01 3 3 01 3 6 01 3 7 01 3 8 01 3 9 01 6 0 0
1 6 1 01 6 2 01 6 3 01 6 4 01 6 3 01 6 6 0
1 6 7 01 6 8 81 6 9 01 7 8 81 7 1 81 7 2 8
1 7 3 81 7 4 81 7 3 81 7 6 81 7 7 81 7 8 81 7 9 81 8 8 81 8 1 81 8 2 81 8 3 81 8 4 81 8 3 81 8 6 81 8 7 81 8 8 81 8 9 81 9 8 81 9 1 81 9 2 8
R E M* * S E 7 U P S I DA N DF R E Q U E N C I E S
S I D = 3 4 2 7 2P O K ES I D + 3 ,4P O K ES I D + 3 ,1 8P O K ES I D + 6 , 1 6 9P O K ES I D + 2 4 , 1 3M F = 6 4
F O R N = i7 0 8: R E A DF H < N ): R E A DF L C N >
N E X 7N
R E MS O U N D C H I PR E MP U L S E W I D T HR E MA T K = O ,D K Y = 1 8R E MS S 7 = 1 6 , R L S = 9R E MM A XU O L U M ER E MP U L S EH U F
R E MS E 7 F R E Q U E N C YR E MU A L U E SF O RR E M8 N O T E S
D A 7 A8 , 9 8 , 9 , 1 8 4
D A 7 A1 8 , 1 4 3 , 1 1 , 4 8D A 7 A1 2 , 1 4 3 , 1 4 , 2 3D A 7 A1 3 , 2 1 8 , 1 6 , 1 9 3
R E M« * S E T S C R E E NC O L O R S ,A L L K E V SR E P E A T , SS P E E DU P K B D S C A N
P O K E3 3 2 8 0 ,0P O K E5 3 2 8 1 ,0P O K E6 5 0 , 1 2 8P O K E5 6 3 2 3 , 2 0
R E MB O R D E R B L A C KR E MB K 6 R 0 U N DB L A C K
: R E M A L LK E V SR E P T .R E M S P E E D I E RS C A N
R E M P R I N T8 C L O S E D M O U T H S
P R I N T" L " ;P R I N T" B "F O RN = 1 T O 8: P R I N T C M 5 C N )
N E X TNP R I N T" l i "
R E MC L E A R S C R E E NR E MD A R K 6 R A V
R E MT H EM O U T H S
R E MW H I T E
R E M P R I N T P R O M P T S
P R I N T L E F T $ < D $ , 1 8 > ;S P C C 9 ) ;P R I N T " P R E S S K E V S[ 2 1 ! - t f 8 «T O P L A Y "P R I N T: P R I N TS P C < 9 ) ;P R I N T " P R E S SU 9 S P A C E B A R B T OS T O P "
R E M S C A NT H EK E Y B O A R D
1 8 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 199/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 200/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 201/258
S o u n d s+ G r a p h i c s= M a g i
c o n f i g u r a t i o n .N o r m a l l y ,t h e C o m m o d o r e6 4
s c a n s t h ek e y b o a r df o rp r e s s e dk e y s6 0t i m e sa
s e c o n d .I n P i a n o r g a n ,y o u n e e dt o s c a ni t m o r e
o f t e nt o g e t a m o r er e s p o n s i v ei n s t r u m e n t .
M e m o r yl o c a t i o n5 6 3 2 5i s a r e g i s t e rt h a tc o n
t r o l st h e s p e e do f k e y b o a r ds c a n n i n g .N o r
m a l l y ,i t c o n t a i n st h e v a l u e6 6 . B y p o k i n gi t
w i t ht h e v a l u e2 0 ,y o uc a ng e tt h ec o m p u t e rt o
s c a nt h ek e y b o a r d2 0 0t i m e sa s e c o n d .A t t h e
e n do f t h ep r o g r a m ,y o u ' l ls e ti t b a c kt o n o r m a l
s c a n s p e e d .I f y o ud i d n ' t ,s t r a n g et h i n g sw o u l d
o c c u r .T r yi t , i f y o u ' v eg o ta t a s t ef o rs t r a n g e
n e s s .
1 0 . 4 . 3 S e tt h eI n i t i a lD i s p l a y
T h en e x tt w om o d u l e so f p i a n o r ji n a r e
s t r a i g h t f o r w a r d .L i n e s1 7 6 0 - 1 8 1 0c l e a rt h e
s c r e e na n dt h e np r i n tt h ee i g h tc l o s e dm o u t h
s t r i n g si n d a r kg r a y .T h e nl i n e s1 8 6 0 - 1 8 9 0
p r i n ts o m ei n s t r u c t i o n sf o rp l a y i n g t h ei n s t r u
m e n t .R e m e m b e r ,t h o s e w e i r d - l o o k i n g
c h a r a c t e r si n l i n e s1 7 7 0 a n d1 8 1 0r e p r e s e n t
c o l o rc o m m a n d s . C h e c kb a c kt o " H o wT oU s e
T h i sB o o k "o r A p p e n d i xE i f y o u ' v ef o r g o t t e na b o u tt h e m .
1 0 . 4 . 4 T h e M a i n P r o g r a mL o o p
o f P i a n o r g a n
N o wc o m e sP i a n o r g a n ' sm a i np r o g r a m
l o o p .L i n e s1 9 4 0 - 1 9 8 0s c a nt h ek e y b o a r d .A
s p a c ew i l le n dt h ep r o g r a m ;o n eo ft h en u m b e r
k e y si n t h er a n g e1 t o 8 w i l lt r i g g e r an o t e ;
a n y t h i n ge l s ew i l lb e i g n o r e d .
L i n e s2 0 3 0 - 2 1 5 0p l a ya n o t e .T h i ss e c t i o no f t h ep r o g r a mi s r e l a t i v e l ys h o r ta n ds i m p l e ,
t h a n k st o a l l t h es e t u pw o r kt h ep r o g r a md i d
e a r l i e r .L i n e2 0 3 0s t a r t st h ep r o c e s sb ys e t t i n g
a n e wc o l o r .M e m o r yl o c a t i o n6 4 6i s u s e d b y
t h e C o m m o d o r e ' so p e r a t i n gs y s t e mt o f i g u r e
o u tw h a tc o l o rt o d r a wc h a r a c t e r s .T h e nl i n e
2 0 4 0 d r a w sa n o p e nm o u t hi m a g e .T h ec o l o
a n dt h eo p e nm o u t hs t r i n gc o r r e s p o n dt o t h e
n u m b e ro f t h ek e yt h a t ' sb e e np r e s s e d .L i n e
2 0 5 0 - 2 0 6 0t h e ns e tt h en o t e ' sf r e q u e n c y a n d
l i n e2 0 7 0t r i g g e r st h es o u n d .
T h eA D S Re n v e l o p ef o r P i a n o r g a
s o u n d sh a s a f a s ta t t a c kr a t e ,a f a i r l ys l o w
d e c a yr a t e ,a n da s u s t a i nl e v e lt h a t ' sa b o u
t w o - t h i r d so f p e a kv o l u m e .T h er e l e a s er a t e '
p r e t t y c l o s et o t h e a t t a c kr a t e .I f a n o t ei s h e l d
f o ra s h o r t t i m e ,i t w i l ls o u n dl i k ea p i a n on o t e
T h el o n g e rt h en o t e ' sh e l d ,t h em o r ei t w i l l
s o u n dl i k ea n o r g a nn o t e .
L i n e s2 0 9 0 - 2 1 0 0a r e t h e r e a s o nw e
s p e e d e du p t h ek e y b o a r ds c a n .F i r s t , l i n e2 0 9
g e t sa k e y p r e s sa n ds t o r e si t i n t h ev a r i a b
K P $ .I f a k e y ' sb e i n g h e l dd o w n ,t h ev a l u eo f
K P $w i l lm a t c h K P ,t h en u m b e ro f t h en o t e
c u r r e n t l yb e i n gp l a y e d .I n t h a tc a s e ,t h ep r o
g r a md o e sa q u i c kU - t u r nb a c kt o 2 0 9 0t o r e a d
t h ek e y b o a r da g a i n .A ss o o na s t h e k e y ' sl e tu p ,
l i n e2 1 0 0 ' sm a t c h i n gt e s tw i l lf a i l ,a n dt h ep r o
g r a mw i l lg o o nt o e n dt h en o t e .W i t ha n o r m
k e y b o a r ds c a nr a t e ,t h e s et w ol i n e sw o u l d n
w o r kc o r r e c t l y ; t h eg e tp r o c e d u r et a k e s t
m u c ht i m e ,a n di t w o u l dm i s sa l o t o f k e y
a c t i o n .T h es p e e d e d - u ps c a nr a t es o l v e s t
p r o b l e m .
T h en e x tf o u rl i n e sf i n i s ho f f t h e n o t e
L i n e2 1 2 0s e t s t h ed r a w i n gc o l o rb a c kt o d a r k
g r a y .L i n e s2 1 3 0d r a w st h e a p p r o p r i a t e
m o u t hi m a g e .L i n e2 1 4 0r e l e a s e st h es o u n d
a n dt h e nl i n e2 1 5 0 j u m p s o nb a c kt o l i n e1 9 5 0t o
c h e c kf o rn e wk e y p r e s s e s .
1 0 . 4 . 5 C l o s i n gT h o u g h t s
A sm e n t i o n e di n S e c t i o n1 0 . 4 . 3 ,p r e s s i
t h es p a c e b a re n d sP i a n o r g a n .L i n e s2 2 0 0 - 2
1 8 7
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 202/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 203/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 204/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 4 7 01 4 8 01 4 9 0
1 3 0 01 3 1 01 3 2 01 3 3 01 3 4 01 3 3 01 3 6 01 3 7 01 3 8 01 3 9 01 6 0 01 6 1 01 6 2 01 6 3 01 6 4 01 6 3 01 6 6 01 6 7 01 6 8 01 6 9 01 7 0 01 7 1 01 7 2 01 7 3 01 7 4 0
1 7 3 01 7 6 01 7 7 61 7 8 01 7 9 01 8 0 01 8 1 01 8 2 01 8 3 01 8 4 01 8 3 01 8 6 01 8 7 0
1 8 8 01 8 9 01 9 0 01 9 1 01 9 2 0
1 9 3 0
P O K E3 3 2 8 1 ,0 : R E MB K 6 R N DB L A C KP R I N T' ' L ' l l D D D I I I I I l I I I l l H i n i l l l l l D D D I l l l I i ] ' '
P R I N TS P C < 1 0 > ;" P R E S SU k A U B" ;P R I N T " F O R A C T I O N "P R I N TP R I N TS P C O ) ;" P R E S S" ;P R I N T" U k S P A C E B A R l ST O E N D "
R E H* * S E T U P S P R I T E S
U I C = 3 3 2 4 8 : R E MG R A P H I C SC H I PP O K E2 0 4 0 ,1 9 2 : R E HS P R I T E0 P N T RP O K E2 0 4 1 ,1 9 2 : R E HS P R I T E1 P N T R
P O K EU I C , 9 2 :
P O K EU I C + 1 , 7 7:
P O K EU I C + 2 ,2 2 0P O K EU I C + 3 ,1 3 0
R E M4 t O I N I TH R P O SR E Mt t O I N I TU R P O S
R E Mt i l I N I T H R P S: R E HH I I N I TU R P S
P O K EU I C + 3 9 ,4 R E M* * 8 S T A R T S P R P LP O K EU I C + 4 0 ,3 : R E HH I S T A R T S C Y A NP O K EU I C + 2 3 ,3 R E ME X P A N D U E R T I C LP O K EU I C + 2 9 ,3 R E ME X P A N D H O R I Z N T
P O K E U I C + 2 1 ,3 R E M S P R I T E S0 - 1 O N
R E M* » I N I T I A L I Z ES I D
S I D = 3 4 2 7 2 R E MS O U N D C H I PF O RR E G= S I D T O S I D + 2 4: P O K ER E G ,0 R E MC L E A RI TN E X T R E GP O K ES I D + 2 4 ,1 3 R E MM A X U O L U N E
R E M* * S E T U O I C E1 F O RG O N G
P O K ES I D + i ,3
P O K ES I D + 3 ,1 1P O K ES I D + 6 , 1 0
R E MU - l F R E Q
R E MA T K = O ,D K V = 1 1R E MS S T = O ,R L S = 1 8
R E M* » S E T U O I C E2 F O RW H I S T L I N G F L I G H T
1 9 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 205/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 206/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 207/258
S o u n d s+ G r a p h i c s= M a g
2 9 1 02 9 2 02 9 3 02 9 4 02 9 3 02 9 6 02 9 7 02 9 8 02 9 9 03 0 0 03 0 1 03 0 2 03 0 3 03 0 4 0
:
T E M PG O T O
:
R E N*
P O K EP O K EP O K EP O K EP R I N T
E N D
= F H :
2 1 4 0
* E N D
U I C + 2 1S I D + 2 4U I C + 2 3U I C + 2 9
F H
I T ,
, 0, 0, 0, 0
= E l1 : E H = T E M P
C L E A NU P , G O H O M E
: R E M: R E M: R E M: R E M: R E M
S P R I T E SO F FU O L U M EO F FU E R TE X P A N DO F FH O R ZE X P A N DO F FC L E A R S C R E E N
F i g .1 0 - 5 .L i s t i n go f t h ep r o g r a mS e e s a w .
c h a r a c t e r s .P a r t sc o m m o nt o a l lf o u rh o o k sa r e
b u i l tu p a n dt h e nc o m b i n e db y l i n e s1 1 1 0 - 1 1 4 0
i n t ot h ef o u rs t r i n g s .
S i m i l a rt e c h n i q u e sa r e u s e di n l i n e s
1 1 9 0 - 1 2 3 0t o s e t u p t w o s e e s a wi m a g e s .I t
t o o ks o m ee x p e r i m e n t a t i o nt o f i n dt h e k e y s
t h a tw o u l dp r i n to u tl i n ep i e c e st h a tg r a d u a l l y
r o s ea n df e l l .A sw i t ht h eh o o ki m a g e s , c u r s o r
c o m m a n d sa n dc o l o r c o n t r o l sa r e i n c l u d e di n
t h es t r i n g s ;p l a c i n g t h es e e s a w si n t h ec o r r e c t
s c r e e np o s i t i o nb e c o m e sa s n a p .
T h es a m ed a t ai s u s e dt o c r e a t eb o t h
s p r i t e s .L i n e s1 2 8 0 - 1 3 1 0l o a d t h e d a t ai n .T h e
d a t ai t s e l fi s s t o r e di n l i n e s1 3 3 0 - 1 4 3 0 .
L i n e s1 4 8 0 - 1 5 4 0p r i n tt h es c r e e np r o m p t s
— v e r ys t r a i g h t f o r w a r ds t u f f .T h e nl i n e s
1 5 9 0 - 1 7 3 0g i v e t h es p r i t e st h e i ri n i t i a lV I C
s e t t i n g s .R a t h e rt h a nt r yt o c a l c u l a t et h ee x a c t
s p r i t e p o s i t i o n s ,I s t a r t e dw i t h a ne s t i m a t ea n dt h e nu s e di n t e l l i g e n ts e a r c h i n g t e c h n i q u e s
( t r i a la n de r r o r )t o h o m ei n o n t h e r i g h t
v a j u e s .
T h ei m a g e sa r es e t ,s o i t ' st i m et o p r e p a r e
t h es o u n d s . S I D ' sf i r s tv o i c ew i l lb e u s e df o r
t h e g o n g ;i t s s e c o n dv o i c ew i l lp r o v i
w h i s t l i n gf l i g h t s ;a n d t h e t h i r dv o i c ew i l
c r e a t e t h ec l u n k i n gh o o ke f f e c t s .L i n e s1 7 8 0
1 8 2 0c l e a rt h e2 4 i m p o r t a n tS I Dr e g i s t e r sa n
s e t m a x i m u mv o l u m e .T h e nl i n e s1 8 7 0 - 2
p o k ei n t h ev a l u e sn e e d e dt o s c u l p tt h e t h r
s o u n d s .
O n c et h ep r o g r a mg e t sg o i n g ,t w ov a r i
a b l e sw i l lb e u s e dt o k e e pt r a c ko f t h eh o o ka n dc r e a t u r es i t u a t i o n .F Hw i l lc o n t a i n t h en u m b
o f t h eh o o kt h a t ' sh o l d i n g ac r e a t u r e ,a n dE Hw i l lh o l dt h en u m b e ro ft h ee m p t yh o o k .H o o k1
a n dc r e a t u r e1 a r e o n t h e l e f t ; h o o k2 a n d
c r e a t u r e2 a r eo n t h er i g h t .
L i n e s2 0 5 0 - 2 0 6 0i n i t i a l i z et h e s ev a r i
a b l e s .T h e nl i n e s2 0 7 0 - 2 0 9 0d r a wt h ea p p r
p r i a t eh o o ka n ds e e s a wi m a g e s .T h es t a g ei s
n o ws e t .
1 0 . 6 . 2 A c t i o nB r e a k d o w n
L i n e s2 1 4 0 - 2 1 8 0f o r ma f a m i l i a rk e y
b o a r d - s c a n n i n gm o d u l e .K e y so t h e r t h a nA o r
t h es p a c e b a ra r ei g n o r e d .P r e s s i n gA i n i t i a t
1 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 208/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
a n da c t i o nc y c l e ;p r e s s i n gt h es p a c e b a re n d s
t h ep r o g r a m .
T h ea c t i o nc y c l eb r e a k sd o w ni n t os i x
m o d u l e s :F i r s t ,t h e c r e a t u r eh e l di n a s k yh o o ki s r e l e a s e d .S e c o n d ,i t d r o p sd o w nw h i s t l i n g .
T h i r d ,i t h i t st h es e e s a w ,w h i c hs w i t c h e sp o s i
t i o n s ,a l o n g w i t ht h e t w oc r e a t u r e s .F o u r t h ,
t h er e c e n t l y - f a l l e nc r e a t u r ev i b r a t e s .F i f t h ,t h e
o t h e rs p r i t e r i s e su p i n t ot h ea i r ,w h i s t l i n g .
S i x t h ,t h er i s i n gs p r i t eg e t sn a b b e d b yi t sh o o k .
L i n e s2 2 3 0 - 2 2 7 0t a k e c a r eo f r e l e a s i n ga
s p r i t e .T h es k yh o o kn o i s eb e g i n s ,t h eh o o k
o p e n s ,t h e r e ' sa s h o r td e l a y ,t h en o i s ee n d s ;
a n dt h es p r i t ec h a n g e sc o l o r .
L i n e s2 3 2 0 - 2 3 8 0d r o pt h es p r i t e .F i r s t ,a n
i n i t i a ls o u n df r e q u e n c yg e t ss e t , a n dt h e
w h i s t l i n gs o u n ds t a r t s .T h e na l o o pm o v e st h e
s p r i t ed o w nt h e s c r e e n ,d r o p p i n gt h e f r e
q u e n c ya s t h es p r i t ed r o p s .A t t h eb o t t o m ,t h e
w h i s t l i n gs t o p s .I t h a sa l s os l o w l yf a d e di n
v o l u m ed u r i n gt h e t r i p ,t h a n k st o a c a r e f u l l y
c h o s e nr a t e o fv o l u m ed e c a y .
T h e nt h e f a l l i n gs p r i t er e a c h e st h e
s e e s a w ,a n dy o u ' r er e a d yf o rt h et h i r dp a r to ft h ea c t i o ns e q u e n c e .A g o n gn o i s ei s i n i t i a t e d ;
t h es e e s a wt i l t s ;t h es p r i t em o v e s ;a n dt h e
g o n gn o i s e b e g i n sa s l o wf a d e o u t .A l lo f t h i s
o c c u r si n l i n e s2 4 3 0 - 2 4 7 0 .
N e x t ,l i n e s2 5 2 0 - 2 6 7 0v i b r a t et h ef a l l e n
s p r i t e .A s t h ef r e q u e n c yo f t h eg o n gs h i f t su p
a n dd o w nt h es c a l e ,t h es p r i t em o v e sb a c ka n d
f o r t hh o r i z o n t a l l ya n ds h i f t sc o l o r s .T h i sa c t i v
i t y i s r e p e a t e ds e v e r a l t i m e s .T h e n ,a s t h e
c l a n g i n gg o n gf a d e sa w a y ,t h es h a k e nc r e a t u r ec o m e st o r e s t ,r e s t o r e dt o a h e a l t h yc y a nc o l o r .
N o wc o m e st h ef i f t hm o d u l eo f t h e a c t i o n
c y c l e .T h eo t h e rs p r i t er i s e si n t ot h ea i r .C o m
p a r el i n e s2 7 2 0 - 2 7 8 0t o l i n e s2 3 2 0 - 2 3 8 0 ,w h i c h
d r o p p e dt h eh a n g i n gs p r i t ec r e a t u r e .T h et w o
m o d u l e sa r ev e r ym u c ha l i k e . F i r s t ,v o i c e# 2
g e t sa n i n i t i a lf r e q u e n c y .T h e nt h e s o u n di s
g a t e d .T h em o d u l e ' sm a i nl o o pc o m e sn e x t .A s
t h e s p r i t em o v e su p t h e s c r e e n , v o i c # 2 ' sf r e q u e n c yr i s e s . F i n a l l y ,a t t h et o p ,t h ew h i s
t l i n gs o u n di s r e l e a s e d .
N o wc o m e st h es i x t hp a r to f t h ea c t i o n .
J u s ta s a s p r i t ew a sr e l e a s e di n t h ef i r s tp a r t ,
n o wt h er i s i n g s p r i t ei s c a p t u r e d .I t a l lh a p p e n
i n l i n e s2 8 3 0 - 2 8 7 0 .T h eh o o kn o i s eb e g i n s ;t h e
h o o kc l a m p ss h u t ;t h e r e ' sa b i to fa d e l a y ;t h e
h o o kn o i s ee n d s ; t h es p r i t ei s d r a i n e do f f r e e
d o m ' sc o l o r .
T h ea c t i o n ' so v e r ,a n dt h es p r i t e sh a v ee x c h a n g e ds i t u a t i o n s .T h ee m p t yh o o ki s n o w
f u l l ,t h e o n c e - f u l lh o o ki s e m p t y .L i n e2 9 2 0
u p d a t e st h e v a r i a b l e sE H a n dF H t o r e f l e c t
t h o s e s o b e r i n gf a c t s ,a n d t h e nl i n e2 9 3 0
b o u n c e sb a c kt o r e a dt h ek e y b o a r da g a i n .
1 0 . 6 . 3 C l e a n u pa n dR e f l e c t i o n
L i n e s2 9 8 0 - 3 0 2 0p e r f o r ma s t a n d a r
c l e a n u po p e r a t i o n .Y o um i g h t c h o o s et o b e
m o r et h o r o u g ha b o u tr e s e t t i n g t h eS I Da n dV I Cr e g i s t e r s .
W h e nI w r o t et h i sp r o g r a m ,t h e b r o a d
o u t l i n e so f t h ea c t i o nw e r ei m p l e m e n t e df i r s t .
F i n e - t u n i n gt h es o u n d sa n ds p r i t em o t i o n sw a s
s a v e df o rl a s t .T h i sm e t h o do fp r o b l e ms o l v i n
w o r k e dw e l lw i t hS e e s a w .
1 0 . 7 S O M EL A S TT H O U G H T SA B O U T
C O M B I N I N GS O U N D A N DG R A P H I C
B e f o r eI f a d ei n t ot h ef i n a le n d - o f - c h a e x e r c i s e s ,h e r ea r e s o m et h i n g st o k e e pi n
m i n dw h e ny o u ' r ec o m b i n i n gs o u n da n d
g r a p h i c s :
T i m i n g A v e r ys i m p l ee f f e c t
c a nh a v ea s o l i di m -
1 9 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 209/258
S o u n d s+ G r a p h i c s= M a g i
F i n eT u n i n g
S i m p l i c i t y
U n i t yo f D e s i g n
p a c tw h e ni t c o m e sa t
t h er i g h tm o m e n t .
W h e ne v e r ye l e m e n t
f i t s s e a m l e s s l yi n t o
t h e w h o l ee f f e c t ,
s y n e r g yi s m a x i
m i z e d .
R e m o v ee x c e s sd e c
o r a t i o n .E v e r ys o u n d
a n d i m a g es h o u l d
h a v ea c l e a rp u r p o s e .
T h e i n d i v i d u a l e l e
m e n t s m u s ta i d o n e
a n o t h e r .
T h e r e ' sa l o to f s o u n da n dg r a p h i c sm a g i c
w a i t i n gi n s i d ey o u rC o m m o d o r e6 4 . S t a r t
w a v i n gy o u r w a n d .
1 0 . 8 C H A P T E RS U M M A R Y
I n t h i sc h a p t e ry o ue x p l o r e dt h r e ep r o
g r a m st h a tm i xs o u n da n dg r a p h i c s .M o r es p e
c i f i c a l l y ,I e x p l a i n e d :
* H o wt o c u l t i v a t es y n e r g y , s ot h a tt h e
w h o l ee f f e c to f a g r a p h i c s / s o u n dc o m
b i n a t i o ni s g r e a t e r t h a nt h es u mo f t h e
i n d i v i d u a lp a r t s
*T e c h n i q u e st h a ta r eu s e f u lf o r
s o l v i n gc o m p l e xp r o g r a m m i n gt a s k s
* T h ep r o g r a mB o u n c e r ,w h i c hm i x e s
c h a r a c t e ra n ds p r i t eg r a p h i c sw i t hs i m
p l es o u n de f f e c t sa n di n t r o d u c e sa s i m
p l ew a l l - b o u n c i n g t e c h n i q u e
* T h ep r o g r a mP i a n o r g a n ,w h i c hu s e
c o m p l e xc h a r a c t e rs t r i n g sa n da s p e e
e d u p k e y b o a r ds c a nt o c r e a t ea n a n i
m a t e dm u s i c a li n s t r u m e n t
* C o o r d i n a t i n gs o u n d sa n di m a g e si n
s u b t l e ,a r t i s t i cw a y s
* T h ep r o g r a mS e e s a w ,w i t ha c o m p l
c a t e ds e to f a c t i o n si n v o l v i n ga l l t h r e
S I Dv o i c e s ,t w os p r i t e s ,a n dc o m p l
c h a r a c t e rs t r i n g s
I h o p ey o u ' v ee n j o y e d o u re x c u r s i o n i n t o
s o u n d a n dg r a p h i c so n t h e C o m m o d o r6 4 .
S t a yc u r i o u s ,k e e po n l e a r n i n g ,a n d h a v ef u n !
1 0 . 9 E X E R C I S E S
1 0 . 9 . 1 S e l fT e s t
M yf a v o r i t ea n s w e r sc a nb e f o u n di n S e c
t i o n 1 0 . 9 . 3 .
1 . ( 1 0 . 1 )W h e nt h e w h o l eb e c o m e sg r e a t
t h e nt h e s u mo f t h ep a r t s ,y o uc a nt e l li t
2 . ( 1 0 . 2 )B r e a k i n ga c o m p l e xp r o g r a m
t a s kd o w ni n t os u c c e s s i v e l ys i m p l e rp i e c e
i s k n o w na s
3 . ( 1 0 . 3 )P a r t so f ap i c t u r et h a ts t a ys t i l la r e
k n o w na s e l e m e n t s ,a n dp a r t
t h a tm o v ea r e e l e m e n t s .
4 . ( 1 0 . 3 )T h ep r o g r a m B o u n c e ru s e s
e x p r e s s i o n st o c h e c kf o r b l i p / w a l lc o l l
s i o n s .
5 .( 1 0 . 4 )S p e e d i n g u p
t h es c a n
i nP i a n o r g a ng i v e su s a m o r er e s p o n s
m u s i c a li n s t r u m e n t .
6 . ( 1 0 . 6 )I n S e e s a w ,t h ec o m p l e xa c t i o nc y c l
h a sb e e nb r o k e ni n t o s m a l l
m o d u l e s .
1 9 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 210/258
1 8 8 8
1 4 6 31 4 6 51 4 6 81 8 1 21 8 1 41 8 1 6
R E N*
F Q =F C =F Q =I F F QI F F Q
1 81 .
F Qy
<
R O L L E R B O U N C E R
: R E MS T A R T I N 6
M MI t
F R E Q U E N C Y3 : R E N F R E Q C H A N 6 EF A C T O R
* F C1 8 8 T H E NF C =1 8 T H E NF C =
8 . 61 . 3
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i n g
1 0 . 9 . 2 P r o g r a m m i n gE x e r c i s e s t y p ei n t h e s el i n e s :
1 . C h a n g et h e p r o g r a m B o u n c e rs o i t
m a k e sn o i s e si n a m o r er e g u l a rp a t t e r n
w h e nt h es p r i t eb o u n c e si n t ow a l l s .
2 . C h a n g et h ep r o g r a mP i a n o r g a ns o t h e
h e a d ss h i m m e rc o l o r f u l l yw h e nt h e y
S i n g . 1 8 3 8P O K ES I D + i , F Q
3 . C h a n g et h e p r o g r a mS e e s a ws o t h e
c r e a t u r e sm o v ev e r t i c a l l ya s w e l la s 2 . L o a di n t h ep r o g r a mP i a n o r g a n .T h e n
h o r i z o n t a l l yw h e nt h e yh i tt h es e e s a w . t y p ei n t h e s el i n e s :
1 0 . 9 . 3 A n s w e r st o S e l fT e s t ± 6 MR E M_ R A I M B 0 R G A N_i . s y n e r g y i 3 0 3 . j m s c n )= p m $ < n >+ j m s
9 t n nH n w nQ t m r t n r ^ Hn m a r a m m i n a 2 8 9 3P 0 I C E6 4 6 ,C < P E E K < 6 4 6 > + 1 > A N D1 3 > 0 R1z . t o p a o w ns t r u c t u r e ap r o g r a m m i n g 2 8 9 6p r i n t j m $ < k p >
3 . s t a t i c ;d y n a m i c
4 . B o o l e a n 3 . L o a di n t h e p r o g r a mS e e s a w .T h e n
5 . k e y b o a r d t y P ei n t h e s el i n e s :
6 . s i x1 8 8 8R E N « * »M O R ES E E S A U » * *
1 0 . 9 . 4 P o s s i b l e S o l u t i o n s 1 1 1 1™ Z p e e k< u r >t o P r o g r a m m i n gE x e r c i s e s 2 6 4 S: P 0 K EU R ' u p ~ U B * 2i o r r o g r a m m i n gt x e r c i s e s 2 7 4 6r 0 R M _ ± 4 5 T 0 7 7S T E p_ ± 6
n T j • t L r » ^ , 2 7 6 5 : P O K EU R ,
1 . L o a di n t h e p r o g r a mB o u n c e r .T h e n u p + < n > i i s >* < n / 3- 3 8 >
1 9 6
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 211/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 212/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 213/258
A p p e n d A
V I CR e g i s t e rL a y o
1 9 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 214/258
R e g i s t e rn u
m b e r
D e c i m a l
|
H e x
0 1 3 4 5 6 7 8 91 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
$ 0 0
$ 0 1
$ 0 2
$ 0 3
$ 0 4
$ 0 5
$ 0 6
$ 0 7
$ 0 8
$ 0 9
$ 0 A
S O B
$ 0 C
$ 0 D
$ 0 E
$ 0 F
$ 1 0
$ 1 1
B i t 7 S
OH 7
S O
M l
S 1
H 7
S 1
M l
S 2
H 7
S 2
M l
S 3
H 7
S 3
M l
S 4
H 7
S 4
M l
S 5
H 7
S 5
M l
S 6
H 7
S 6
M l
S 7
H 7
S 7
M l
S I
H 8
R a s t e r
b i t8
B i t 6 S
OH 6
S O
V 6
S 1
H 6
S 1
V 6
S 2
H 6
S 2
V 6 c o c oc o xc o c o
c o > S 4
H 6
S 4
V 6
S 5
H 6
S 5
V 6
S 6
H 6
S 6
V 6
S 6
H 6
S 7
V 6
S 6
H 8
E x t e n d e d
c o l o r
e x tm o d e
V I Cs t a r t i n ga d d r e s s
B i t 5 S
OH 5
S O
V 5
S
1
H
5S 1
V 5
S
2
H
5 < C 0e n r oS 3
H
5S 3
V
5
S
4H 5
S
4
V
5S 5
H 5
S 6
H 5
S 6
V
5
S
7H 5
S 7
V 5
S
5
H
8
B i tm a p
m o d
e
B i t 4 S
OH 4
S O
V 4
S 1
H 4
S 1
V 4
S 2
H 4
S 2
V 4
S 3
H 4
S 3
V 4
S 4
H 4
S 4
V 4
S 5
H 4
S 5
V 4
S 6
H 4
S 6
V 4
S 7
H 4
S 7
V 4
S 4
H 8
B l a n k
s c r e e n
i s5 3 2 4 8
B i t 3
S O
H 3
S O
V 3 t - C OC O XS
1V 3
S 2
H 3
S 2
V 3
S 3
H 3
S 3
V 3
S 4
H 3
S 4
V 3
S 5
H 3
S 5
V 3
S 6
H 3 C OC O
c o > S
7H 3
S 7
V 3
2 4o r2 5
r o w so f
t e x t
( $ D 0 0 0 )
B i t 2 S
OH 2
S O
V 2
S 1
H 2
t - C V JC O >S 2
H 2
C V J C V JC O >C O C Mc o xS 3
V 2
S 4
H 2
S 4
V 2 i n c v iC O XS
5V 2
S 6
H 2 C O C V Jc o >S
7H 2
S 7
V 2
S 2
H 8
V e r t i c a l
s c r o l l
b i t2
B i t 1 S
OH 1
S O
V 1
c o x< c oS 2
H 1
S 2
V 1
S 3
H 1
S 3
V 1
S 4
H 1
S 4
V 1
S 5
H 1
S 5
V 1
S 6
H 1
S 6
V 1
S 7
H 1
S 7
V 1
S 1
H 8
V e r t i c a l
s c r o l l
b i t1
B i t 0
S O
H O
S O
V O
S 1
H O
S 1
V O
S 2
H O
S 2
V O
S 3
H O
S 3
V O
S 4
H O
S 4
V O
S 5
H O
S 5
V O
S 6
H O
S 6
V O
S 7
H O
S 7
V 1
S O
H 8
V e r t i c a l
s c r o l l
b i t O
T h i sr e g i s t e r
c o n t r o l s :
S p r i t e# 0
h o r i z o n t a lp o s i t i o n
S p r i t e# 0
v e r t i c a lp o s i t i o n
S p r i t e# 1
h o r i z o n t a lp o s i t i o n
S p r i t e# 1
v e r t i c a lp o s i t i o n
S p r i t e# 2
h o r i z o n t a lp o s i t i o n
S p r i t e# 2
v e r t i c a lp o s i t i o n
S p r i t e# 3
h o r i z o n t a lp o s i
t i o n
S p r i t e# 3
v e r t i c a lp o s i t i o n
S p r i t e# 4
h o r i z o n t a lp o s i
t i o n
S p r i t e# 4
v e r t i c a lp o s i t i o n
S p r i t e# 5
h o r i z o n t a lp o s i t i o n
S p r i t e# 5
v e r t i c a lp o s i t i o n
S p r i t e# 6
h o r i z o n t a lp o s i
t i o n
S p r i t e# 6
v e r t i c a lp o s i t i o n
S p r i t e# 7
h o r i z o n t a lp o s i t i o n
S p r i t e# 7
v e r t i c a lp o s i t i o n
M o s ts i g n i f i c a n t
b i to fh o r i z o n t a l
p o s i t i o n s
M i s c e l l a n e o u s
f u n c t i o n s
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 215/258
1 8
1 9
2 0
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
2 9
3 0
3 1
$ 1 2
$ 1 3
$ 1 4
$ 1 5
$ 1 6
$ 1 7
$ 1 8
$ 1 9
$ 1 A
$ 1 B
$ 1 C
$ 1 D
$ 1 E
$ 1 F
R a s t e r
b i t7 L
PH 7
L P
V 7
S 7
O n / o f f
S 7
E V
T e x t
s c r e e n
b i t3
I n t e r r u p t
f r o m
V I C S
7S B P
S 7
MCM
S 7
E H
S 7
S S C
S 7
S B C
R a s t e r
b i t6 L
PH 6
L P
V 6
S 6
O n / o f f
S 6
E V
T e x t
s c r e e n
b i t2
S 6
S B P
S 6
MCM
S 6
S S C
S 6
S B C
R a s t e r
b i t
5 L P
H 5
L P
V 5
S 5 O n / o f f
R e s e t -
a l w a y s
s e t
t o0
C O L U
T e x t
s c r e e n
b i t1
S 5
S B P
S 5
MCM
S
5
S
S C
S 5
S B C
R a s t e r
b i t4
L P
H 4
L P
V 4
S 4
O n / o f f
M u l t i
c o l o r
m o d e
S 4
E V
T e x t
s c r e e n
b i t O
S 4
S B P
S 4
M C M
S 4
E H
S 4
S S C
S 4
S B C
R a s t e r
b i t3 L
PH 3
L P
V 3
S 3
O n / o f f
3 8o r4 0
c o l u m n s
o ft e x t
S 3
E V
C h a r
d e f s
b i t2
L i g h t
p e n
l a t c h e d
L i g h t
p e n
l a t c h e d
S 3
S B P
S 3
MCM
S 3
E H
S 3
S S C
S 3
S B C
R a s t e r
b i t2
L P
H 2
L P
V 2
S 2
O n / o f f
H o r i z o n t a l
s c r o l l
b i t2 S
2E V
C h a r
d e f s
b i t1
S p r i t et o
s p r i t e
c o l l i s i o n
S p r i t et o
s p r i t e
c o l l i s i o n
S 2
S B P
S 2
MCM
S 2
S S C
S 2
S B C
R a s t e r
b i t1
L P
H 1
L P
V 1
S 1
O n / o f f
H o r i z o n t a l
s c r o l l
b i t1
C O L UC h a r
d e f s
b i t O
S p r i t et o
b k g r n d
c o l l i s i o n
S p r i t et o
b k g r n d
c o l l i s i o n
S 1
S B P
S 1 M
CM
C O L U S 1
S S C
S 1
S B C
R a s t e r
b i t O
L P
H O L
PV O
S O
O n / O f f
H o r i z o n t a l
s c r o l l
b i t O S
OE V
R a s t e r
c o u n t
m a t c h
R a s t e r
c o u n t
m a t c h
S O
S B P
S O
MCM
S O
E H
S O
S S C
S O
S B C
R a s t e r
r e g i s t e r
L i g h tp e n
h o r i z o n t a lp o s i t i o n
L i g h tp e n
v e r t i c a lp o s i t i
o n
T u r ns p r i t e s
o n / o f f
M i s c e l l a n e o u s
f u n c t i o n s
E x p a n ds p r i t e
( 2 x )v e r t i c a l l y
M e m o r yp o i n t
e r s
f o rc h a r a c t e r
d i s p l a y ,b i tm a p ,&s c r e e n
I n t e r r u p t
r e g i s t e r
E n a b l e
i n t e r r u p t s
S p r i t et ob a c k
g r o u n d
p r i o r i t i e s
S e l e c tm u l t i c o l o r
m o d ef o rs p r i t e s
E x p a n ds p r i t e
( 2 x )h o r i z o n t a l l y
S p r i t et os p r i t
e
c o l l i s i o n
S p r i t et ob a c k
g r o u n dc o l l i s i o n
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 216/258
r o
R e g i s t e
D e c i m a l
3 2
3 3
3 4
3 5
3 6
3 7
3 8
3 9
4 0
4 1
4 2
4 3
4 4
4 5
4 6
rn
u m b e r
H e x
$ 2 0
$ 2 1
$ 2 2
$ 2 3
$ 2 4
$ 2 5
$ 2 6
$ 2 7
$ 2 8
$ 2 9
$ 2 A
$ 2 B
$ 2 C
$ 2 D
$ 2 E
B i t
7 - - - - - - - - - - - - - - -
B i t
6 - - - - - - - - - - - - - - -
V I C
s t a r t i n ga d d r e s si s5 3 2 4 8
B i t 5 - - - - - - - - - - - - - - -
B i t 4 - - - - - - - - - - - - - - -
B i t 3
B o r d e r
C 3
B k g O
C 3
B k g1
C 3
B k g2
C 3
B k g3
C 3
S M C O
C 3
S M C 1
C 3
S O
C 3
S 1
C 3
S 2
C 3 C O C O
C OO S 4
C 3
S 7
C 3
*( $ D 0 0 0 )
B i t 2
B o r d e r
C 2
B k g O
C 2
B k g1
C 2
B k g2
C 2
B k g
C 2
S M C O
C 2
S M C 1
C 2
S O
C 2
S 1
C 2 C M C MC O OS
3C 2
S 4
C 2
S 5
C 2
S 6
C 2
S 7
C 2
B i t 1
B o r d e r
C 1
B k g O
C 1
B k g 1
C 1
B k g2
C 1
B k g3
C 1
S M C O
C 1
S M C 1
C 1
S O
C 1
S 1
C 1
S 2
C 1
S 3
C 1
S 4
C 1
S 5
C 1
S 6
C 1
S 7
C 1
B i t 0
B o r d e r
C O
B k g O
C O
B k g 1
C O
B k g2
C O
B k g3
C O
S M C O
C O
S M C 1
C O
S O
C O
S 1
C O
S 2
C O
S 3
C O
S 4
C O
S 5
C O
S 6
C O
S 7
C O
T h i sr e g i s t e r
c o n t r o l s :
B o r d e rc o l o r
B a c k g r o u n d# 0
c o l o r
B a c k g r o u n d# 1
c o l o r
B a c k g r o u n d# 2
c o l o r
B a c k g r o u n d# 3
c o l o r
S p r i t em u l t i c o l o r
# 0
S p r i t em u l t i c o l o r
# 1
S p r i t e# 0
c o l o r
S p r i t e# 1
c o l o r
S p r i t e# 2
c o l o r
S p r i t e# 3
c o l o r
S p r i t e# 4
c o l o r
S p r i t e# 5
c o l o r
S p r i t e# 6
c o l o r
S p r i t e# 7
c o l o r
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 217/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 218/258
6
9
99
9202
8981-—►OS
9991—►91
6901
ssaippn
69
09
92
uujn|OQ
02
91
09
02
91-
utuniOQ
0101.
■^861.
•17061-
■PZQi
■PZ91
■W91
■wei .
-wei .
-W3I-
-wu
-mi.
•wu
■woi
ssaippB
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 219/258
A p p e n d iC
C o l o rM e m o
2 0 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 220/258
uiunioo
68
98
08
92
02
91
01
9
96299
991.99—*
02
99699—►
91.
98999-
99999—►
0
sssjppe
02
01.
99299
9L299
9ZI.99
991-99
96099
99099
91.099
9Z699
99699
96899
99899
91899
9ZZ99
98Z99
96999
-99999
91999
•9Z999
98999
•96^99
•99*99
•9I.W9
•
9Z899
•98899
•96299
6
8
98
08
92
02
91
uujn|OQ
ssaippe
CM
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 221/258
A p p e n d D
S c r e e nD i s p l a yC o d
2 0 7
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 222/258
803
CO
(ft
00o>CJiCO00CO
on
e
00
E
ft
fi
CO!
CO
E=E
D
E
E
00CO
00CO
^1COCO00l
ro
is
ro
o
II
EZ
ro
3
E
8 00
E
roo
i
roroo enCO
rooro
E
ro
8
E
COj
II
E
II
C
8
II
o
8
II
E
COCO
n
ES
II
II
I
-SP
ro
_lCO
1
ro
00
ro
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 223/258
60S
ft
*
*
E3
E3
—
-
■
■
±
B
B
ss
Ik
•
B
B
t
i
a
a
8
K
K
—
—
■
*
•
IE
IS
*
*
55
S
—
—
■
-
it
4ft
<ft
E
ESS
I
I
■
■
COCJI
8
8
Ei:
Ei:
COCO
I
I
■
■
■
■
E
E
1
1
1
1
8
ia
im
E
E
-
-
-
■
■
8
■
■
CO—k
t
t
|159
n
n
r
8
->
■»
158a
a
s
*
El
*
-
M
157e
E
COCO
-
-
=
*
|156IS
IS
CO
a
a
ro
Fl
Fl
I 155EE
E
CO
+
+
■■■■
■■■■
ro
N
N
154GE
COo
♦
N
R
GE
roCJi
<
|153E
B
S
—
<
-
E
X
X
|152EE
ea
0000
X
IS
E5
8
E
€
|151El
00
o
E
a
toro
c
c
|150E
a
i
c
*
E
ro
e
e
149E
a
00CJI
%
c
n
EPokecode
-8
->$
Pokecoderv,CO
2.
Pokecode2.
Pokecode
"a
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 224/258
o
P o k e
c o d e
4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3
S e t
1 + — ■ 0 1 2 3 4 5 6 7 8 9 : < = > ?
S e t
2 + — ■ S e i 2 3 4 5 6 7 8 9 1 3 C = > ?
P o k e
c o d e
1 7 1
1 7 2
1 7 3
1 7 4
1 7 5
1 7 6
1 7 7
1 7 8
1 7 9
1 8 0
1 8 1
1 8 2
1 8 3
1 8 4
1 8 5
1 8 6
1 8 7
1 8 8
1 8 9
1 9 0
1 9 1
S e t
1 Q I I B ■ S & u g E
i H y H H H 5 1 3
S e t
2 □ I I a ■ B U a u t i
i y a R 5 H
P o k e
c o d e
1 0 7
1 0 8
1 0 9
1 1 0
1 1 1
1 1 2
1 1 3
1 1 4
1 1 5
1 1 6
1 1 7
1 1 8
1 1 9
1 2 0
1 2 1
1 2 2
1 2 3
1 2 4
1 2 5
1 2 6
1 2 7
S e t 1 1 - ■ 1 . P J - T - 1 1 1 1 — J ■
■ J ■
S e t
2 1 - ■ kmam p X -
r- 1 1 1
1 — • ■■ J ■
P o k e
c o d e
2 3 5
2 3 6
2 3 7
2 3 8
2 3 9
2 4 0
2 4 1
2 4 2
2 4 3
2 4 4
2 4 5
2 4 6
2 4 7
2 4 8
2 4 9
2 5 0
2 5 1
2 5 2
2 5 3
2 5 4
2 5 5
S e t
1 i : r L n ■ ■■
■■ : i ■ i i ■ ■ ■ i k u j
S e t
2
i :
r u n ■ ■
■
■
■
: i ■ i
i ■ ■ B L J J
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 225/258
A p p e n d iE
D i s p l a yI c o n
2 1 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 226/258
r o
COLOR
I C O N S
I c o n ■ a n c E S
K e y ( s )t op r e s s
C T R L - 1
C T R L - 2
C T R L - 3
C T R L - 4
C T R L - 5
C T R L - 6
C T R L - 7
C T R L - 8
W h a t
i td o e s
T e x tc o l o rb l a c k
T e x tc o l o rw h i t e
T e x tc o l o rr e d
T e x tc o l o rc y a n
T e x tc o l o rp u r p l e
T e x tc o
l o rg r e e n
T e x tc o l o rb l u e
T e x tc o
l o ry e l l o w
I c o n
r * E H I I E 2 ■■
■■
K e y ( s )t op r e s s
C * - 1
C * - 2
< s - 3
C*-4
Cs-5
Cs-6
C s - 7
Ce-8
W h a ti td o e s
T e x tc o l o ro r a n g
e
T e x tc o l o r
b r o w n
T e x tc o l o r
l i g h tr e d
T e x tc o l o r
d a r kg r a y
T e x tc o l o r
m e d i u mg r a y
T e x tc o l o r
l i g h tg r e e n
T e x tc o l o r
l i g h tb l u e
T e x tc o l o r
l i g h tg r a y
O T H E R
I C O N S
I c o n U 3 f e j
K e y ( s )t op r e s s
C L R / h o m e
C R S R
I
c r s r
;
_
C T R L - 9
W h a ti t d o e s
C u r s o r
h o m e
C u r s o r
d o w n
C u r s o r
r i g h t
R e v e r s
e
o n
I c o n
L D I I ■
K e y ( s )t op r e s s
S h i f t -
C L R / h o m e
S h i f t - C R S R
\
S h i f t -
C R S R
^
C T R L - 0
W h a ti td o e s
C l e a r
s c r e e n
C u r s o r
u p
C u r s o r
l e f t
R e v e r s e
o f f
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 227/258
A p p e n d F
C o l o rC o d e
2 1 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 228/258
0 - b l a c k
1 - w h i t e
2 - r e d
3 - c y a n
4 - p u r p l e
5 - g r e e n
6 - b l u e
7 - y e l l o w
8 - o r a n g e
9 - b r o w n
1 0 - l i g h tr e d
1 1 - d a r k g r a y
1 2 - m e d i u mg r a y
1 3 - l i g h tg r e e n
1 4 - l i g h tb l u e
1 5 - l i g h tg r a y
2 1 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 229/258
A p p e n d iG
N o r m a lS p r i t eC o d i n gF o r
2 1 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 230/258
9LZ
1R o w2 01
1 R o w1 9
| R o w1 8
|R o w1 7
I R o w1 6
|R o w1 5
|R o w1 4
IR o w1 3
IR o w1 2
IR o w1 1
I r o w I O
1R o w 9
1R o w 8
1R o w 7
1R o w 6
1R o w 5
1R o w 4
|R o w 3
[R o w 2
I1R o w O
1 V a l u e s
1 2 8
20 0Ar o
1 2 8
20 0
r o1 2 8
IC o l u m n
I
N u m b e r
or oC Oe n0 0C Oo
r oC Ote n
«
N u m b e r
c o d e s
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 231/258
A p p e n d H
M u l t i c o l o rS p r i t eC o d i n gF o r
2 1 7
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 232/258
r o
o o
C o l u m n
n u m b e r
V a l u e s
R o w O
R o w1
R o w2
R o w3
R o w4
R o w5
R o w6
R o w7
R o w8
R o w9
R o w1 0
R o w1 1
R o w1 2
R o w1 3
R o w1 4
R o w1 5
R o w1 6
R o w1 7
R o w1 8
R o w1 9
R o w2 0
0
1 2 8 16 4
1 1 1 i 1 I 1 1 1 1 i 1 1 1 1 I 1 1 1 1 1 1 1 1 1 1 1 1
1
3 2
1 6
| I 1 1 1 1 1 1 | 1 1 I 1 1 1
T r a n s p a r e n t
s c r e e nc o l o r
28
4I j I i I i I I I I I I 1 1 1 1 I 1 1 1 1 1 1 1
0|0
:
2
3 i | 1 1 |
4
1 2 8 J 6 4
I 1 I I I I I i I i i ■ i i 1 i i 1
M u l t i c o l o r
r e g i s t e r# 0
5
3 2[ 1 6
■
I I I I
o!1
6
8
4
_ \ I
72|1
I.
.
.
S p r i t e
c o l o r
8
1 2 8 J 6 4
j i I I I I I I I i I I | I I I 1 I I I I I I
1
j0
9
3 2 | 1 6
I 1 I j I
1 0
8
I
4I I I I I i I I I I I I I I I I I I I I i 1 1 i J 1 ■ 1
M u l t i c o l o r
r e g i s t e r# 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 j 1 1 1 1 1 1 1 1
1i 1
N u
m b e r
c o d e s
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 233/258
A p p e n d I
C h a r a c t e rC o d i n gF o r
2 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 234/258
022
sapooI
0
Z
I
V
z
8
e
91-
p
Z£
9
179
9
82V
L
/aiAg
p9lAg
S®lAg
ZQjAg
tejAg
OeiAg
9I1|BA
jeqiunu
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 235/258
A p p e n d J
M u l t i c o l o rC h a r a c t e rC o d i n gF o r
2 2 1
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 236/258
B i t
v a l u e*
B y t e O
B y t e1
B y t e2
B y t e3
B y t e4
B y t e5
B y t e6
B y t e7
i
1 2 8 I
I
6 4
1
1
1
3 2 i 1 6I
1
i
i
i
1
1
i
1
i
I
i
I
i
1
i
I
I
i
i
i
i
i
i
i
8 ! 4 2 1
[I
1
8
1
1
1
N u m b e r
c o d e s
B a c k g r o u n d
# 0 c o l o r
( s c r e e nc o l o r )
B a c k g r o u n d
# 1 c o l o r
B a c k g r o u n d
# 2 c o l o r
L o w e r3
b i t so f c o l o r
m e m o r y
c o l o r
2 2 2
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 237/258
A p p e n d K
2 H x 3 VC h a r a c t e rB l o c kC o d i n gF o r
2 2 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 238/258
vzz
z891Z£z891-Z2fr9821
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 239/258
A p p e n dL
S I DR e g i s t e rL a y o
2 2 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 240/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 241/258
R e g i s t e
D e c i m a l
1 4
1 5
1 6
1 7
1 8
1 9
2 0
rn u m b
e r
H e x
$ 0 E
$ 0 F
$ 1
0
$ 1
1
$ 1
2
$ 1
3
$ 1
4
B i t
7F R 7
F R 1 5
P W 7
-N o i s e
A T K 3
S S T 3
B i t
6F R 6
F R 1 4
P W 6
-
P u l s e
A T K 2
S S T 2
B i t
5 F R 5
F R 1 3
P W 5
-S a w
t o o t h
A T K 1
S S T 1
B i t
4F R 4
F R 1 2
P W 4
-
T r i a n
g u l a r
A T K O
S S T O
B i t
3F R 3
F R 1 1
P W 3
P W 1 1
T e s t
D C Y 3
R L S 3
B i t
2F R 2
F R 1 0
P W 2
P W 1 0
R i n g
m o d
D C Y 2
R L S 2
B i t
1F R 1
F R 9
P W 1
P W 9
S y n c
D C Y 1
R S L 1
B i t
0
F R O
F R 8
P W O
P W 8
G a t e
D C Y O
R L S O
T h i sr e g i s t e r
c o n t r o l s :
L o wb y t eo f
f r e q u e n c y
H i g hb y t eo f
f r e q u e n
c y
L o wb y t eo f
p u l s ew i d t h
H i g hn i
b b l e
o fp u l s ew i d t h
G a t ea n d
w a v e f o r
m , c o n t r o l
A t t a c k /
d e c a y
S u s t a i n / r e l e a s e
2 1
2 2
2 3
2 4
$ 1
5
$ 1
6
$ 1
7
$ 1
8
-
C F R 1 0
R E S 3
V 3
s i l e n t
-
C F R 9
R E S 2
H i g h
p a s s
-
C F R 8
R E S 1
B a n d
p a s
s
-
C F R 7
R E S O
L o w
p a s s
-
C F R 6
F i l t e r
e x t e r n a l
V o l u m e
3
C F R 2
C F R 5
F i l t e r
V 3
V o l u m
e
2
C F R 1
C F R 4
F i l t e r
V 2
V o l u m e
1
C F R O
C F R 3
F i l t e r
V 1 V
o l u m e
0
L o w3b i t so fc u t o f f /
c e n t e rf
r e q u e n c y
H i g h8b i t so fc u t o f f /
c e n t e rf r e q u e n c y
R e s o n a n c e /
f i l t e r
F i l t e rm o d e /
v o l u m e
2 5
2 6
2 7
2 8
$ 1
9
$ 2
0
$ 2
1
$ 2
2
G P X
7 G P Y
7 V 3 0
7 V 3 E
7
G P X
6 G P Y
6 V 3 0
6 V 3 E
6
G P
X
5 G P
Y
5 V 3 0
5 V 3 E
5
G P X
4 G P Y
4 V 3 0
4 V 3 E
4
G P X
3 G P Y
3 V 3 0
3 V 3 E
3
G P X
2 G P Y
2 V 3 0
2 V 3 E
2
G P X
1 G P Y
1 V 3 0
1 V 3 E
1
G P X
0 G P Y
0 V 3 0
0 V 3 E
0
G a m ep a d d l eX
G a m ep a d d l eY
V o i c e3
o s c i l l a t o r
V o i c e3
e n v e l o p e
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 242/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 243/258
622
xjpuaddy
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 244/258
O c t a v e1 N o t e I F r e q u e n c y !S I D I H i g hb y t eIn a m e i n f r e q . o f S I D
I ^ > h e r t z ^s e t t i n g ^ f r e q .s e t ^ i
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
CC #D
D #E
F
F #
GG #A
A #B
C
C #D
D #
E
F
F #
GG #A
A #
B
CC #DD #
E
F
F #
GG #A
A #B
CC #
D
D #E
F
F #
GG #A
A #B
1 6 . 4
1 7 . 3
1 8 . 4
1 9 . 4
2 0 . 6
2 1 . 8
2 3 . 1
2 4 . 5
2 6 . 0
2 7 . 5
2 9 . 1
3 0 . 9
3 2 . 7
3 4 . 6
3 6 . 7
3 8 . 9
4 1 . 2
4 3 . 7
4 6 . 2
4 9 . 0
5 1 . 9
5 5 . 0
5 8 . 3
6 1 . 7
6 5 . 4
6 9 . 3
7 3 . 4
7 7 . 8
8 2 . 4
8 7 . 3
9 2 . 5
9 8 . 0
1 0 3 . 8
1 1 0 . 0
1 1 6 . 5
1 2 3 . 5
1 3 0 . 8
1 3 8 . 6
1 4 6 . 8
1 5 5 . 6
1 6 4 . 8
1 7 4 . 6
1 8 5 . 0
1 9 6 . 0
2 0 7 . 7
2 2 0 . 0
2 3 3 . 1
2 4 6 . 9
2 6 9
2 8 4
3 0 2
3 1 8
3 3 8
3 5 8
3 7 9
4 0 2
4 2 7
4 5 1
4 7 7
5 0 7
5 3 6
5 6 8
6 0 2
6 3 8
6 7 6
7 1 7
7 5 8
8 0 4
8 5 1
9 0 2
9 5 6
1 0 1 2
1 0 7 3
1 1 3 7
1 2 0 4
1 2 7 6
1 3 5 2
1 4 3 2
1 5 1 7
1 6 0 8
1 7 0 3
1 8 0 4
1 9 1 1
2 0 2 6
2 1 4 6
2 2 7 4
2 4 0 8
2 5 5 3
2 7 0 3
2 8 6 4
3 0 3 5
3 2 1 5
3 4 0 7
3 6 0 9
3 8 2 4
4 0 5 0
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
3
3
3
3
3
4
4
4
4
5
5
5
6
6
7
7
7
8
8
9
9
1 0
1 1
1 1
1 2
1 3
1 4
1 4
1 5
1 3
2 8
4 6
6 2
8 2
1 0 2
1 2 3
1 4 6
1 7 1
1 9 5
2 2 1
2 5 1
2 4
5 6
9 0
1 2 6
1 6 4
2 0 5
2 4 6
3 6
8 3
1 3 4
1 8 8
2 4 4
4 9
1 1 3
1 8 0
2 5 2
7 2
1 5 2
2 3 7
7 2
1 6 7
• 1 2
1 1 9
2 3 4
9 8
2 2 6
1 0 4
2 4 9
1 4 3
4 8
2 1 9
1 4 3
7 9
2 5
2 4 0
2 1 0
2 3 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 245/258
N o t e V a l u e s
n a m e
I F r e q u e n c yI S I Df r e q .( H i g h b y t eL o wb y t e
i n s e t t i n g o fS I D o f S I Dh e r t z J J f r e q .s e t . J f r e q .s e t y
4
4
4
4
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
5
5
5
5
5
6
6
6
6
6
6
6
6
6
6
6
6
7
7
7
7
77
7
7
7
7
7
7
C
C #D
D #E
F
F #
GG #A
A #B
CC #D
D #E
F
F #
GG #A
A #
B
C
C #D
D #E
F
F #
GG #A
A #B
CC #D
D #
EF
F #
GG #A
A #B
2 6 1 . 6
2 7 7 . 2
2 9 3 . 7
3 1 1 . 1
3 2 9 . 6
3 4 9 . 2
3 7 0 . 0
3 9 2 . 0
4 1 5 . 3
4 4 0 . 0
4 6 6 . 2
4 9 3 . 9
5 2 3 . 3
5 5 4 . 4
5 8 7 . 3
6 2 2 . 3
6 5 9 . 3
6 9 8 . 5
7 4 0 . 0
7 8 4 . 0
8 3 0 . 6
8 8 0 . 0
9 3 2 . 3
9 8 7 . 8
1 0 4 6 . 5
1 1 0 8 . 7
1 1 7 4 . 7
1 2 4 4 . 5
1 3 1 8 . 5
1 3 9 6 . 9
1 4 8 0 . 0
1 5 6 8 . 0
1 6 6 1 . 2
1 7 6 0 . 0
1 8 6 4 . 7
1 9 7 5 . 5
2 0 9 3 . 0
2 2 1 7 . 5
2 3 4 9 . 3
2 4 8 9 . 0
2 6 3 7 . 02 7 9 3 . 8
2 9 6 0 . 0
3 1 3 6 . 0
3 3 2 2 . 4
3 5 2 0 . 0
3 7 2 9 . 3
3 9 5 1 . 1
4 2 9 1
4 5 4 7
4 8 1 8
5 1 0 3
5 4 0 7
5 7 2 8
6 0 7 0
6 4 3 1
6 8 1 3
7 2 1 8
7 6 4 8
8 1 0 2
8 5 8 4
9 0 9 5
9 6 3 4
1 0 2 0 8
1 0 8 1 5
1 1 4 5 8
1 2 1 3 9
1 2 8 6 1
1 3 6 2 5
1 4 4 3 6
1 5 2 9 4
1 6 2 0 4
1 7 1 6 7
1 8 1 8 8
1 9 2 7 0
2 0 4 1 5
2 1 6 2 9
2 2 9 1 5
2 4 2 7 8
2 5 7 2 22 7 2 5 1
2 8 8 7 2
3 0 5 8 9
3 2 4 0 7
3 4 3 3 4
3 6 3 7 7
3 8 5 3 94 0 8 3 1
4 3 2 5 84 5 8 3 1
4 8 5 5 7
5 1 4 4 4
5 4 5 0 2
5 7 7 4 3
6 1 1 7 7
6 4 8 1 5
1 6
1 7
1 8
1 9
2 1
2 2
2 3
2 5
2 6
2 8
2 9
3 1
3 3
3 5
3 7
3 9
4 2
4 4
4 7
5 0
5 3
5 6
5 9
6 3
6 7
7 1
7 5
7 98 4
8 9
9 4
1 0 0
1 0 6
1 1 2
1 1 9
1 2 6
1 3 4
1 4 2
1 5 0
1 5 9
1 6 81 7 9
1 8 9
2 0 0
2 1 2
2 2 5
2 3 8
2 5 3
1 9 5
1 9 5
2 1 0
2 3 9
3 1
9 6
1 8 2
3 1
1 5 7
5 0
2 2 4
1 6 6
1 3 6
1 3 5
1 6 2
2 2 4
6 3
1 9 4
1 0 7
6 1
5 7
1 0 0
1 9 0
7 6
1 5
1 2
7 0
1 9 11 2 5
1 3 1
2 1 4
1 2 2
1 1 5
2 0 0
1 2 5
1 5 1
3 0
2 5
1 3 9
1 2 7
2 5 07
1 7 3
2 4 4
2 3 0
1 4 3
2 4 9
4 7
2 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 246/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 247/258
A p p e n d N
A N D i n ga n dO R i
A N D i n ga n dO R i n ga r el o g i c a lo p e r a t i o n sy o u r
C o m m o d o r e6 4u s e st o p l a yw i t hb i t sa n d c h e c k
o n t h et r u t h o fc o m p l e xe x p r e s s i o n s .I ' l lt r yt o
g i v ey o ua b r i e fg l i m p s eo f h o wt h e yw o r k .
F i r s t ,a f e wc o n v e n t i o n s :
— W h e nt h e c o m p u t e rt r i e st o d e c i d e
w h e t h e ra n u m b e ri s t r u eo r f a l s e ,
a n yn o n z e r on u m b e ri s c o n s i d e r e d
t r u e .
— W h e nt h ec o m p u t e rl o o k so v e ra c o m
p a r i s o n ,a n dd e c i d e st h a tt h ec o m
p a r i s o ni s t r u e ,i t a s s i g n si t t h e v a l u e
- 1 . A f a l s ec o m p a r i s o ni s a s s i g n e d
t h ev a l u e0 .
H e r e ' sa b r i e fp r o g r a mt h a ti l l u s t r a t e s
t h e s et w oc o n v e n t i o n sa t w o r k :
1 0 I F 8T H E NP R I N T" 8 I S T R U E "
2 0 I F 0T H E NP R I N T" 0 I S T R U E
G O T O4 0
3 0 P R I N T" 0 I S F A L S E "
4 0 P R I N T( 9 = 8 )
5 0 P R I N T( 9 = 9 )
R u n n i n gt h ep r o g r a mw i l lg i v e t h e s er e s u l t
8 I S T R U E
0 I S F A L S E
0
T h eC o m m o d o r e6 4 p e r f o r m sA N D i n ga n d
O R i n go n n u m b e r si n t h e r a n g e- 3 2 7 6 8t o
+ 3 2 7 6 7 .T h en u m b e r sf i r s th a v e a n yf r a c t i o n
p a r t sd r o p p e d ,a n dt h e nt h e y ' r ec o n v e r t e di n t o
1 6 - b i tb i n a r yf o r m a t .H e r ea r es o m ee x a m p l e
2 3 3
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 248/258
O R I G I N A LF R A C T I O N1 6 - B I TB I N A R Y
V A L U E D R O P P E D
- 1 - 1 1 1 1 1 1 1 1 11 1 1 11 1 1 1
2 5 4 . 7 5 2 5 4 0 0 0 00 0 0 01 1 1 11 1 1 0
5 1 3 5 1 3 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
0 0 0 0 0 00 0 0 00 0 0 00 0 0 0
1 5 . 4 1 5 0 0 0 0 0 0 0 0 0 0 0 01 1 1 1
N o t et h a tI h a v ei n s e r t e ds p a c e si n t ot h e
1 6 - b i tb i n a r y v a l u e sj u s tt o m a k et h e me a s i e r
f o rh u m a n st o r e a d .
W h e nt w o n u m b e r sa r eA N D e dt o g e t h e r ,
t h e y ' r ef i r s tp u t i n t ot h i sc h o p p e d - o f f1 6 - b i t
b i n a r yf o r m a t .T h e nc o r r e s p o n d i n gb i t sa r e
A N D e dt o g e t h e r a c c o r d i n gt o t h e f o l l o w i n g
a r b i t r a r yr u l e s :
C o m m o d o r e6 4 ,A N D i n gi s o f t e nu s e dt o t u r n
c e r t a i nb i t s i na r e g i s t e ro f f .F o re x a m p l e ,i f
y o uw a n t e dt o t u r no f fb i t s4 , 5 , 6 , a n d7 i n a
r e g i s t e r ,y o u ' dA N Dt h e r e g i s t e rv a l u ew i t h
t h en u m b e r1 5 .T a k ea l o o ka t t h el a s te x a m p l
t o s e ew h yt h i si s s o .
W h e nt w on u m b e r sa r e O R e dt o g e t h e r
t h e y ' r ef i r s tp u ti n t ot h ef a m i l i a rc h o p p e d - o
1 6 - b i tb i n a r yf o r m a t .T h e nc o r r e s p o n d i n gb i t s
a r eO R e dt o g e t h e r a c c o r d i n gt o t h ef o l l o w i n
a r b i t r a r yr u l e s :
( s o u n df a m i l i a r ? )
0
A N D0
0
A N D0
1
0
A N D
1
0
0
1
A N D1
1
T h er e s u l ti s t h e nc o n v e r t e d b a c kt o d e c
i m a lf o r m .H e r ea r es o m ee x a m p l e so f A N D
i n g :
A N D
- 1 d e c i m a l
0 d e c i m a l
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1b i n a r y
A N D 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0b i n a r y
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0b i n a r y
0 d e c i m a l
2 5 5 d e c i m a l
A N D 1 5 d e c i m a l
0 0 0 0 0 0 0 01 1 1 1 1 1 1 1b i n a r y
A N D 0 0 0 0 0 0 0 0 0 0 0 01 1 1 1 b i n a r y
0 0 0 00 0 0 0 0 0 0 01 1 1 1 b i n a r y
1 5 d e c i m a l
I ng r a p h i c sa n ds o u n dp r o g r a m m i n go nt h e
O R0 0 1 1
_ 0 O R 1 O R 0 O R 1
0 1 1
T h er e s u l ti s t h e n c o n v e r t e d b a c kt o d e c
i m a lf o r m .H e r ea r es o m ee x a m p l e so fO R i n g :
- 1
O R 0
d e c i m a l
d e c i m a l
O R
O R
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1
0 0 0 0
m i
0 0 1 0
0 0 0 0
0 0 1 0
1 1 1 1
0 0 0 0
1 1 1 1
O R
0 0 0 1
1 0 0 0
1 0 0 1
m i0 0 0 0
1 1 1 1
- 1
5 3 7
1 3 1
1 0 0 1
0 0 1 1
1 0 1 1
b i n a r y
b i n a r y
b i n a r y
d e c i m a l
d e c i m a l
d e c i m a l
b i n a r y
b i n a r y
b i n a r y
6 7 d e c i m a l
I ng r a p h i c sa n d s o u n dp r o g r a m m i n go nt h e
C o m m o d o r e6 4 , O R i n gi s o f t e nu s e dt o t u r n
c e r t a i nb i t si n a r e g i s t e ro n .F o re x a m p l e ,i f
y o uw a n t e dt o t u r no n b i t s0 , 1 , a n d7 i n a
2 3 4
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 249/258
r e g i s t e r ,y o u ' dO Rt h er e g i s t e rv a l u ew i t ht h e t i o n s .I n f a c t ,y o u rC o m m o d o r e6 4 s p e n d
n u m b e r1 3 1 .T a k ea l o o ka t t h el a s te x a m p l et o m o s to f i t s t i m e ,a t i t s d e e p e s ts u b c o n s c
s e ew h yt h i si s s o . l e v e l s ,A N D i n ga n dO R i n ga w a ys e v e r a lm i l -S o m u c hf o ra b r i e fl o o ka t A N D i n ga n d l i o nt i m e se a c hs e c o n d .
O R i n g .T h e y ' r er e a l l yq u i t er e m a r k a b l ef u n c -
2 3 5
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 250/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 251/258
xapui
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 252/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 253/258
I n d e
I
A D S Rc y c l ea n de n v e l o p e ,s e eS I D
A m p l i t u d e ,1 2 4
A n i m a t i o n , 5 2 - 5 3 , 6 5 - 6 6 ,7 2 - 7 7
A u t o - r e p e a t( k e y b o a r d ) ,6 1 ,6 5
BB a c k g r o u n dr e g i s t e r s ,s e e V I CI I c h i p
B i n a r yn u m b e rs y s t e m ,2 5 - 2 6
B i t m a p ,8 1 - 8 2
b i tm a pm o d eo n / o f f ,8 2
c l e a r i n gb i tm a p ,8 7 - 8 8
c o l o ri n t h eb i tm a p p e dm o d e ,8 2 - 8 5
l o c a t i n gb i t m a p ,8 0 - 8 1 ,8 6
l o c a t i n gp i x e l si n b i t m a pm o d e ,
8 8 - 9 1
m u l t i c o l o rb i tm a pm o d e ,1 1 8
p i x e l so n / o f f ,9 1
u s i n gt e x tw i t ha b i tm a p p e dd i s p l a y ,
1 0 2 - 1 0 5
B i tm a p p e dg r a p h i c s ,8 1 - 9 8
B i t p a i r ,4 2 - 4 3 *
B i t s ,2 5 - 2 8 ,4 2 , 4 6 ,6 8 - 7 7 ,8 4 ,9 3 , 9 9 ,
1 0 0 ,1 1 2 ,1 3 0
B o o l e a nt e s t s ,1 2 - 1 4 , 3 7 ,1 8 2
B y t e s ,2 5 - 2 8 ,4 6 ,6 8 - 7 7 ,8 4 ,9 3
C h a p l i n ,C h a r l i e ,1 8 8
C h a r a c t e rg r a p h i c s ,6 1 - 7 9 ,1 8 8 ,, 1 9 3
c h a r a c t e rd e s i g n ,7 2 - 7 7
c h a r a c t e rd i s p l a yc o d e s ,6 3 - 6 5 ,7 2 ,
1 0 2 , 1 0 7 ,1 1 6
c h a r a c t e rg e n e r a t o rR O M ,6 2 - 6 3 ,
6 7 - 7 0 ,7 2 ,7 7
c h a r a c t e rm e m o r y , 7 7
c h a r a c t e rs e t s ,6 2 - 6 5 ,7 2 - 7 7c h a r a c t e rs t r i n g s ,6 5 , 7 7 ,1 9 4
c o d i n gf o r m s ,c h a r a c t e r ,7 0 - 7 1
c o l o rs e t t i n g ,c h a r a c t e r ,1 9 3
e x t e n d e d b a c k g r o u n dc h a r a c t e r
m o d e ,1 1 5 - 1 1 6
m u l t i c o l o rc h a r a c t e rm o d e ,1 1 0 - 1 1 5
C o l l i s i o n s ,s e es p r i t e s
C o l o rm e m o r y ,6 1 - 6 2 ,6 5 , 1 1 0 - 1 1 5
C o l o r s ,6 1 - 6 2 ,6 5 ,1 9 3
C u r s o rm o v e m e n t ,6 5 - 6 6 ,7 7 ,7 9
D e l a yl o o p s ,i m p o r t a n c ei n s o u n d
p r o g r a m s ,1 6 1
D y n a m i ce l e m e n t s ,1 8 0
F
F r e q u e n c y1 2 4 ,1 2 9 - 1 3 0 ,1 7 2
G
G r a p h i c si c o n s ,6
H e r t z ,1 2 4 ,1 2 9
H
I
I / Oc o n t r o l ,6 7 - 6 9
J
J o y s t i c k s ,1 0 5 - 1 1 0
K e y b o a r ds c a n ,6 1 ,6 5 , 1 8 6 - 1 8 8
L o u d n e s s ,s e ea m p l i t u d e
MM a c h i n el a n g u a g e ,8 2 ,8 7 - 8 8 ,9 3
M o d u l a r i t y ,1 7 7 - 1 7 8 ,1 9 4
M u s i c a l n o t ef r e q u e n c i e s ,1 3 8
N i b b l e( n y b b l e ) ,8 4 - 8 5 , 1 3 4 - 1 3
N o i s ew a v e f o r m ,1 2 8 ,1 7 2 - 1 7 3
O c t a v e1 3 8 ,1 4 3 - 1 4 4 ,1 8 6
P e r f o r m a n c ea r r a y s ,1 4 5 , 1 4 9 ,1 5 4
P i t c h ,s e ef r e q u e n c y
P i x e l s , 1 - 2 ,5 , 4 1 - 4 2 , 8 1 - 8 4 ,8 8 - 9 3
P i x e l s ,d o u b l e - w i d e ,4 2 , 1 1 0 ,1 1 8P o n g ,1 7 8
2 3 9
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 254/258
P u l s ew i d t h , 1 2 8 ,1 3 0 - 1 3 2 ,1 7 5 - 1 7 6 ,
1 8 8
R a n d o mn u m b e r s ,8 7
R e c t a n g u l a r w a v e f o r m ,1 2 8
R e f e r e n c eo c t a v e ,1 4 3 - 1 4 4
R i n gm o d u l a t i o n ,1 6 4 - 1 6 7
S a w t o o t hw a v e f o r m ,1 2 8
S c r e e nm e m o r y ,6 2 , 6 4 ,8 6 - 8 7 , 1 1 0 -
1 1 8
S I D ,1 2 8 - 1 4 0
A D S Rc y c l ea n de n v e l o p e ,1 3 2 -
1 3 6 ,1 4 0 , 1 4 9 ,1 5 3 ,1 5 5 ,
1 6 4
a m p l i t u d em o d u l a t o r ,1 2 8 , 1 3 4 , 1 4 9
a t t a c kr a t es e t t i n g ,1 3 4
d e c a yr a t es e t t i n g ,1 3 5
e n v e l o p eg e n e r a t o r , 1 3 2 ,1 6 8
f r e q u e n c ys e t t i n g ,1 2 9 - 1 3 0 ,1 5 0
g a t i n gt h e e n v e l o p eg e n e r a t o r ,
1 3 6 - 1 3 7
o v e r a l lv o l u m ec o n t r o l ,1 3 7
p u l s e w i d t hs e t t i n g ,1 3 0 - 1 3 2
p u l s e w i d t hv a r i a t i o n ,1 7 5 - 1 7 6
r e g i s t e rs e t u p ,1 2 9
r e l e a s er a t es e t t i n g ,1 3 6
s u s t a i nl e v e ls e t t i n g ,1 3 5
t o n eo s c i l l a t o r ,1 2 9 ,1 6 4 - 1 6 7
v o i c e s ,1 2 8 - 1 2 9 ,1 9 3
w a v e f o r mg e n e r a t o r , 1 2 9 ,1 5 1
w a v e f o r ms e t t i n g ,1 3 0
S i m p l i c i t y ,1 9 5
S o u n d ,n a t u r eo f , 1 2 3 - 1 2 8
S o u n de f f e c t s ,1 5 9 - 1 7 3
v a r i a t i o n ,i m p o r t a n c eo f , 1 5 9
S o u n d / i m a g ec o o r d i n a t i o n ,1 8 8B A S I Cv s m a c h i n el a n g u a g e ,8 2 ,
8 7 , 9 1
s p e e d u pt e c h n i q u e s ,8 2S p r i t e s ,1 - 5 9
b l o c ko f d a t af o r s p r i t e s ,3 0 - 3 1 ,5 6
c l o n e s ,2 1 - 2 9
c o d i n g f o r m sf o r s p r i t e s ,2 - 5 ,3 1 ,
4 3 - 4 4 ,5 8
c o l l i s i o n s , s p r i t et o d a t a ,1 0 7
c o l l i s i o n s ,s p r i t e t os p r i t e ,1 0 6 - 1 1 0
c o l o r so f s p r i t e s ,1 6 ,2 5 ,4 1 - 4 7
d a t ap o i n t e r s ,7 , 2 4 ,2 9 - 3 0 ,5 6d e f i n i n ga s p r i t ep a t t e r n ,1 - 5 ,1 5 ,
4 4 - 4 6
e x p a n s i o no f s p r i t e s ,1 5 - 1 7
h o r i z o n t a l p o s i t i o n i n g o fs p r i t e s ,8 ,
1 0 - 1 5 , 2 8 , 3 0 , 3 3 , 3 5 - 3 8
m o t i o no f s p r i t e s ,3 3 - 3 8 ,5 0 - 5 2
m u l t i c o l o rm o d e ,4 2 - 4 7
m u l t i p l es p r i t e s ,2 1 - 3 2
o n / o f fr e g i s t e rf o r s p r i t e s ,8 , 2 5
p r i o r i t y ,s p r i t e t ob a c k g r o u n d ,9 9 -
1 0 2
p r i o r i t y ,s p r i t e t os p r i t e ,4 7
s i m p l e s ts p r i t e p a t t e r n ,7
s p r i t e ,d e f i n i t i o no f , 1 , 2
v e r t i c a lp o s i t i o n i n go f s p r i t e s ,8 ,
1 0 - 1 1 , 2 8 , 3 0 , 3 3 , 3
S t a t i ce l e m e n t s ,1 8 0S y n e r g y ,1 7 7
T
T e x t s c r e e nd i s p l a y ,6 3
T e x ts c r e e nd i s p l a yc o d e s ,7 2
T i m i n g ,1 9 4 - 1 9 5T o p - d o w ns t r u c t u r e dp r o g r a m m i
1 7 7 - 1 7 8 ,1 9 4
T r e m o l o ,s e ev i b r a t o
t r i a n g u l a rw a v e f o r m ,1 2 7 ,1 2 8
U
U n i t yo f d e s i g n ,1 9 5
V i b r a t o ,1 6 4
V I CI I c h i p ,8 , 1 0 ,2 4 ,3 0 ,6 2
b a c k g r o u n dc o l o rr e g i s t e r s ,1 1 2 -
1 1 8
c h a r a c t e rm e m o r y ,6 6
m e m o r yr a n g e( 1 6 Kb l a n k ) ,6 6 ,8 1 - 8 2
m i n i a t u r er e g i s t e r s ,2 4
r e s e t t i n gr e g i s t e r s ,9 , 2 5 - 2 6 ,4 4
V o l u m e , s e ea m p l i t u d e
WW a v e f o r m s , 1 2 8W h i t en o i s e ,s e en o i s ew a v e f o r m
2 4 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 255/258
C o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m m i
I f y o ua r ei n t r i g u e dw i t h t h ep o s s i b i l i t i e so f t h ep r o g r a m si n c l u d e di n C o m m o d o r e6 4 G r a p h i c a n d
S o u n dP r o g r a m m i n g .( T A BB o o kN o .1 6 4 0 ) ,y o us h o u l dd e f i n i t e l yc o n s i d e rh a v i n gt h e r e a d y - t o
t a p eo r d i s kc o n t a i n i n g t h es o f t w a r ea p p l i c a t i o n s .T h i s s o f t w a r ei s g u a r a n t e e df r e e o fm a n u f a c t u
d e f e c t s .( I fy o u h a v e a n yp r o b l e m s ,r e t u r nt h et a p eo r d i s kw i t h i n3 0 d a y s ,a n dw e l ls e n d y o u an e w
o n e . )N o to n l yw i l ly o us a v et h et i m ea n de f f o r to f t y p i n gt h ep r o g r a m s ,t h et a p eo r d i s ke l i m i n a t e s
p o s s i b i l i t yo f e r r o r s t h a tc a np r e v e n t t h ep r o g r a m sf r o mf u n c t i o n i n g .I n t e r e s t e d ?
A v a i l a b l eo n t a p ea n d o nd i s kf o rt h eC o m m o d o r e6 4 a t $ 2 3 . 9 5f o re a c ht a p eo rd i s k p l u s$ 1 . 0 0e a c h
s h i p p i n ga n dh a n d l i n g .
I ' mi n t e r e s t e di n r e a d y - t o - r u ns o f t w a r ef o rC o m m o d o r e6 4 G r a p h i c sa n dS o u n dP r o g r a m
m i n g .S e n dm e :
t a p ef o rt h eC o m m o d o r e6 4 ( 6 4 1 6 S )
d i s kf o rt h eC o m m o d o r e6 4 ( 6 4 1 7 S )
T A BB O O K Sc a t a l o g
. C h e c k / M o n e yo r d e re n c l o s e df o r$ 2 3 . 9 5p l u s$ 1 . 0 0s h i p p i n ga n dh a n d l i n gf o r
e a c ht a p eo r d i s ko r d e r e d .
V I S A M a s t e r C a r d
A c c o u n tN o .
N a m e
E x p i r e s .
A d d r e s s
C i t y . S t a t e . Z i p .
S i g n a t u r e
M a i lT o T A BB O O K SI N C .
B l u eR i d g eS u m m i t ,P A 1 7 2 1 4
( P a .a d d6 %s a l e st a x .O r d e r so u t s i d e U . S .m u s tb e p r e p a i dw i t hi n t e r n a t i o n a lm o n e yo r d e r si n U . S .d o l l a r s . )
T A B1 6 4 0
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 256/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 257/258
8/6/2019 Commodore 64 Graphics and Sound Programming
http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 258/258