commodore 64 graphics and sound programming

258

Upload: cubemanpdx

Post on 08-Apr-2018

247 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 1/258

Page 2: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 2/258

Page 3: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 3/258

Page 4: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 4/258

Page 5: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 5/258

Page 6: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 6/258

Page 7: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 7/258

Page 8: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 8/258

Page 9: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 9/258

Page 10: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 10/258

Page 11: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 11/258

Page 12: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 12/258

Page 13: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 13/258

Page 14: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 14/258

Page 15: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 15/258

Page 16: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 16/258

Page 17: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 17/258

Page 18: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 18/258

Page 19: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 19/258

Page 20: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 20/258

Page 21: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 21/258

Page 22: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 22/258

Page 23: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 23/258

Page 24: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 24/258

Page 25: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 25/258

Page 26: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 26/258

Page 27: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 27/258

Page 28: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 28/258

Page 29: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 29/258

Page 30: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 30/258

Page 31: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 31/258

Page 32: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 32/258

Page 33: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 33/258

Page 34: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 34/258

Page 35: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 35/258

Page 36: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 36/258

Page 37: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 37/258

Page 38: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 38/258

Page 39: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 39/258

Page 40: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 40/258

Page 41: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 41/258

Page 42: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 42/258

Page 43: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 43/258

Page 44: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 44/258

Page 45: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 45/258

Page 46: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 46/258

Page 47: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 47/258

Page 48: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 48/258

Page 49: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 49/258

Page 50: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 50/258

Page 51: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 51/258

Page 52: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 52/258

Page 53: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 53/258

Page 54: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 54/258

Page 55: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 55/258

Page 56: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 56/258

Page 57: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 57/258

Page 58: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 58/258

Page 59: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 59/258

Page 60: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 60/258

Page 61: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 61/258

Page 62: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 62/258

Page 63: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 63/258

Page 64: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 64/258

Page 65: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 65/258

Page 66: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 66/258

Page 67: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 67/258

Page 68: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 68/258

Page 69: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 69/258

Page 70: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 70/258

Page 71: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 71/258

Page 72: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 72/258

Page 73: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 73/258

Page 74: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 74/258

Page 75: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 75/258

Page 76: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 76/258

Page 77: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 77/258

Page 78: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 78/258

Page 79: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 79/258

Page 80: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 80/258

Page 81: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 81/258

Page 82: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 82/258

Page 83: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 83/258

Page 84: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 84/258

Page 85: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 85/258

Page 86: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 86/258

Page 87: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 87/258

Page 88: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 88/258

Page 89: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 89/258

Page 90: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 90/258

Page 91: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 91/258

Page 92: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 92/258

Page 93: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 93/258

Page 94: Commodore 64 Graphics and Sound Programming

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

Page 95: Commodore 64 Graphics and Sound Programming

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

Page 96: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 96/258

Page 97: Commodore 64 Graphics and Sound Programming

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

Page 98: Commodore 64 Graphics and Sound Programming

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

Page 99: Commodore 64 Graphics and Sound Programming

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

Page 100: Commodore 64 Graphics and Sound Programming

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

Page 101: Commodore 64 Graphics and Sound Programming

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

Page 102: Commodore 64 Graphics and Sound Programming

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

Page 103: Commodore 64 Graphics and Sound Programming

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

Page 104: Commodore 64 Graphics and Sound Programming

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

Page 105: Commodore 64 Graphics and Sound Programming

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

Page 106: Commodore 64 Graphics and Sound Programming

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

Page 107: Commodore 64 Graphics and Sound Programming

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

Page 108: Commodore 64 Graphics and Sound Programming

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

Page 109: Commodore 64 Graphics and Sound Programming

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

Page 110: Commodore 64 Graphics and Sound Programming

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

Page 111: Commodore 64 Graphics and Sound Programming

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

Page 112: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 112/258

Page 113: Commodore 64 Graphics and Sound Programming

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

Page 114: Commodore 64 Graphics and Sound Programming

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

Page 115: Commodore 64 Graphics and Sound Programming

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

Page 116: Commodore 64 Graphics and Sound Programming

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

Page 117: Commodore 64 Graphics and Sound Programming

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

Page 118: Commodore 64 Graphics and Sound Programming

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

Page 119: Commodore 64 Graphics and Sound Programming

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

Page 120: Commodore 64 Graphics and Sound Programming

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

Page 121: Commodore 64 Graphics and Sound Programming

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

Page 122: Commodore 64 Graphics and Sound Programming

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

Page 123: Commodore 64 Graphics and Sound Programming

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

Page 124: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 124/258

Page 125: Commodore 64 Graphics and Sound Programming

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

Page 126: Commodore 64 Graphics and Sound Programming

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

Page 127: Commodore 64 Graphics and Sound Programming

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

Page 128: Commodore 64 Graphics and Sound Programming

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

Page 129: Commodore 64 Graphics and Sound Programming

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

Page 130: Commodore 64 Graphics and Sound Programming

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

Page 131: Commodore 64 Graphics and Sound Programming

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

Page 132: Commodore 64 Graphics and Sound Programming

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

Page 133: Commodore 64 Graphics and Sound Programming

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

Page 134: Commodore 64 Graphics and Sound Programming

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

Page 135: Commodore 64 Graphics and Sound Programming

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

Page 136: Commodore 64 Graphics and Sound Programming

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

Page 137: Commodore 64 Graphics and Sound Programming

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

Page 138: Commodore 64 Graphics and Sound Programming

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

Page 139: Commodore 64 Graphics and Sound Programming

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 .

Page 140: Commodore 64 Graphics and Sound Programming

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 .

Page 141: Commodore 64 Graphics and Sound Programming

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 .

Page 142: Commodore 64 Graphics and Sound Programming

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

Page 143: Commodore 64 Graphics and Sound Programming

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

Page 144: Commodore 64 Graphics and Sound Programming

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

Page 145: Commodore 64 Graphics and Sound Programming

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 .

Page 146: Commodore 64 Graphics and Sound Programming

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

Page 147: Commodore 64 Graphics and Sound Programming

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

Page 148: Commodore 64 Graphics and Sound Programming

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

Page 149: Commodore 64 Graphics and Sound Programming

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

Page 150: Commodore 64 Graphics and Sound Programming

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

Page 151: Commodore 64 Graphics and Sound Programming

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

Page 152: Commodore 64 Graphics and Sound Programming

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

Page 153: Commodore 64 Graphics and Sound Programming

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

Page 154: Commodore 64 Graphics and Sound Programming

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

Page 155: Commodore 64 Graphics and Sound Programming

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

Page 156: Commodore 64 Graphics and Sound Programming

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

Page 157: Commodore 64 Graphics and Sound Programming

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

Page 158: Commodore 64 Graphics and Sound Programming

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

Page 159: Commodore 64 Graphics and Sound Programming

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

Page 160: Commodore 64 Graphics and Sound Programming

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

Page 161: Commodore 64 Graphics and Sound Programming

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

Page 162: Commodore 64 Graphics and Sound Programming

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

Page 163: Commodore 64 Graphics and Sound Programming

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

Page 164: Commodore 64 Graphics and Sound Programming

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

Page 165: Commodore 64 Graphics and Sound Programming

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

Page 166: Commodore 64 Graphics and Sound Programming

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

Page 167: Commodore 64 Graphics and Sound Programming

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

Page 168: Commodore 64 Graphics and Sound Programming

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

Page 169: Commodore 64 Graphics and Sound Programming

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

Page 170: Commodore 64 Graphics and Sound Programming

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

Page 171: Commodore 64 Graphics and Sound Programming

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

Page 172: Commodore 64 Graphics and Sound Programming

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

Page 173: Commodore 64 Graphics and Sound Programming

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

Page 174: Commodore 64 Graphics and Sound Programming

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

Page 175: Commodore 64 Graphics and Sound Programming

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

Page 176: Commodore 64 Graphics and Sound Programming

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

Page 177: Commodore 64 Graphics and Sound Programming

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

Page 178: Commodore 64 Graphics and Sound Programming

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

Page 179: Commodore 64 Graphics and Sound Programming

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

Page 180: Commodore 64 Graphics and Sound Programming

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

Page 181: Commodore 64 Graphics and Sound Programming

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

Page 182: Commodore 64 Graphics and Sound Programming

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

Page 183: Commodore 64 Graphics and Sound Programming

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

Page 184: Commodore 64 Graphics and Sound Programming

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

Page 185: Commodore 64 Graphics and Sound Programming

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

Page 186: Commodore 64 Graphics and Sound Programming

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

Page 187: Commodore 64 Graphics and Sound Programming

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

Page 188: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 188/258

Page 189: Commodore 64 Graphics and Sound Programming

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

Page 190: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 190/258

Page 191: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 191/258

Page 192: Commodore 64 Graphics and Sound Programming

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

Page 193: Commodore 64 Graphics and Sound Programming

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

Page 194: Commodore 64 Graphics and Sound Programming

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

Page 195: Commodore 64 Graphics and Sound Programming

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

Page 196: Commodore 64 Graphics and Sound Programming

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

Page 197: Commodore 64 Graphics and Sound Programming

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

Page 198: Commodore 64 Graphics and Sound Programming

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

Page 199: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 199/258

Page 200: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 200/258

Page 201: Commodore 64 Graphics and Sound Programming

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

Page 202: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 202/258

Page 203: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 203/258

Page 204: Commodore 64 Graphics and Sound Programming

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

Page 205: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 205/258

Page 206: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 206/258

Page 207: Commodore 64 Graphics and Sound Programming

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

Page 208: Commodore 64 Graphics and Sound Programming

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

Page 209: Commodore 64 Graphics and Sound Programming

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

Page 210: Commodore 64 Graphics and Sound Programming

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

Page 211: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 211/258

Page 212: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 212/258

Page 213: Commodore 64 Graphics and Sound Programming

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

Page 214: Commodore 64 Graphics and Sound Programming

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

Page 215: Commodore 64 Graphics and Sound Programming

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

Page 216: Commodore 64 Graphics and Sound Programming

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

Page 217: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 217/258

Page 218: Commodore 64 Graphics and Sound Programming

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

Page 219: Commodore 64 Graphics and Sound Programming

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

Page 220: Commodore 64 Graphics and Sound Programming

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

Page 221: Commodore 64 Graphics and Sound Programming

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

Page 222: Commodore 64 Graphics and Sound Programming

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

Page 223: Commodore 64 Graphics and Sound Programming

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

Page 224: Commodore 64 Graphics and Sound Programming

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

Page 225: Commodore 64 Graphics and Sound Programming

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

Page 226: Commodore 64 Graphics and Sound Programming

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

Page 227: Commodore 64 Graphics and Sound Programming

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

Page 228: Commodore 64 Graphics and Sound Programming

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

Page 229: Commodore 64 Graphics and Sound Programming

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

Page 230: Commodore 64 Graphics and Sound Programming

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

Page 231: Commodore 64 Graphics and Sound Programming

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

Page 232: Commodore 64 Graphics and Sound Programming

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

Page 233: Commodore 64 Graphics and Sound Programming

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

Page 234: Commodore 64 Graphics and Sound Programming

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

9

179

9

82V

L

/aiAg

p9lAg

S®lAg

ZQjAg

tejAg

OeiAg

9I1|BA

jeqiunu

Page 235: Commodore 64 Graphics and Sound Programming

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

Page 236: Commodore 64 Graphics and Sound Programming

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

Page 237: Commodore 64 Graphics and Sound Programming

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

Page 238: Commodore 64 Graphics and Sound Programming

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

Page 239: Commodore 64 Graphics and Sound Programming

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

Page 240: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 240/258

Page 241: Commodore 64 Graphics and Sound Programming

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

Page 242: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 242/258

Page 243: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 243/258

622

xjpuaddy

Page 244: Commodore 64 Graphics and Sound Programming

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

Page 245: Commodore 64 Graphics and Sound Programming

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

Page 246: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 246/258

Page 247: Commodore 64 Graphics and Sound Programming

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

Page 248: Commodore 64 Graphics and Sound Programming

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

Page 249: Commodore 64 Graphics and Sound Programming

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

Page 250: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 250/258

Page 251: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 251/258

xapui

Page 252: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 252/258

Page 253: Commodore 64 Graphics and Sound Programming

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

Page 254: Commodore 64 Graphics and Sound Programming

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

Page 255: Commodore 64 Graphics and Sound Programming

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

Page 256: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 256/258

Page 257: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 257/258

Page 258: Commodore 64 Graphics and Sound Programming

8/6/2019 Commodore 64 Graphics and Sound Programming

http://slidepdf.com/reader/full/commodore-64-graphics-and-sound-programming 258/258