Skip to content

Instantly share code, notes, and snippets.

@msjyoo
Created November 18, 2018 04:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save msjyoo/6b4d2ae277e00cc425a8cc5530605b82 to your computer and use it in GitHub Desktop.
Save msjyoo/6b4d2ae277e00cc425a8cc5530605b82 to your computer and use it in GitHub Desktop.
Commodore 64 Game Code
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