Created
November 18, 2018 04:03
-
-
Save msjyoo/6b4d2ae277e00cc425a8cc5530605b82 to your computer and use it in GitHub Desktop.
Commodore 64 Game Code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 rem reserve addresses above 13312 | |
20 poke 55,0: poke 56,52: clr | |
30 gosub 1000 | |
40 gosub 2000 | |
50 gosub 3000 | |
60 gosub 4000 | |
70 gosub 5000 | |
80 print "you win!" | |
500 end | |
1000 rem level generator | |
1010 poke 53281, 0 | |
1020 o=0: for y=0 to 4: for x=0 to 159 | |
1030 poke 1024+o,32: o=o+1: next | |
1040 for x=0 to 39:poke 1024+o,64+rnd(1)*64 | |
1050 poke 55296+o,5:o=o+1:next x,y | |
1500 return | |
2000 rem sprite setup | |
2010 poke 2040, 208: rem sprite ptr | |
2020 poke 53287, 1: rem colour | |
2030 poke 53248, 150: rem x | |
2040 poke 53249, 50: rem y | |
2050 for i=13312 to 13312 + 62 | |
2060 poke i,0: next: rem init sprite data | |
2070 poke 13312, 8: rem sprite data | |
2080 poke 13315, 20: rem sprite data | |
2090 poke 13318, 8: rem sprite data | |
2100 poke 53269, 1: rem enable | |
2999 return | |
3000 rem music setup | |
3010 data 28,0,28,0,56,56,28,0 | |
3020 data 0,0,28,0,56, 0,28,0 | |
3030 data 25,0,25,0,50,50,25,0 | |
3040 data 0,0,25,0,50, 0,25,0 | |
3600 data -1 | |
3700 poke 54296,15 : rem master volume | |
3710 poke 54277,105: rem attack/decay | |
3720 poke 54278,134: rem sustain/release | |
3999 return | |
4000 rem machine code for collision isr | |
4010 data 173,25,208,41,2,208,3,76,49 | |
4020 data 234,141,25,208,173,31,208 | |
4030 data 238,0,53,76,129,234,-1 | |
4040 i=13568+49: rem load code at $3531 | |
4050 read d:if d<>-1 then 4050 | |
4060 read d:if d=-1 then 4080 | |
4070 poke i,d: i=i+1: goto 4060 | |
4080 poke 789, 53: rem ISR vector | |
4090 poke 53274, 2:d=peek(53279) | |
4100 restore: poke 13568,0 | |
4500 return | |
5000 rem main game | |
5010 y=50:x=150 | |
5020 j=peek(56320): if (j and 4)=0 then x=x-1 | |
5030 if (j and 8)=0 then x=x+1 | |
5040 y=y+1: poke 53248,x and 255:poke 53249,y | |
5050 read f:if f=-1 then restore:read f | |
5060 poke 54276,17+(f=0) | |
5070 if f<>0 then poke 54273,f | |
5080 if peek(13568) then 5110 | |
5090 if y<250 then 5020 | |
5100 return | |
5110 poke 54276, 35:poke 54273,18 | |
5120 for i=1 to 600:next | |
5130 poke 54276, 34 | |
5140 print "you lose!":end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment