Compare commits

..

No commits in common. "master" and "v1.2.0" have entirely different histories.

10 changed files with 160 additions and 382 deletions

5
.gitignore vendored
View File

@ -1,5 +0,0 @@
# Created with CBM prg Studio
bak
*.dbg
*.dmp
*.dup

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,67 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- DO NOT EDIT THIS FILE! -->
<!-- Application version : 3.14.0 -->
<!-- Project Target : C64 -->
<Project>
<Target>2</Target>
<Executable>Cookie Clicker.prg</Executable>
<StartAddress>2049</StartAddress>
<FilesGlobal>False</FilesGlobal>
<BatchMode>False</BatchMode>
<AppendToDisk>False</AppendToDisk>
<GenToDisk>False</GenToDisk>
<BuildToPrgFile>True</BuildToPrgFile>
<d64Name />
<Comments>Cookie Clicker for the C64.</Comments>
<Author>Ian M. Skinner</Author>
<Email />
<AutoLaunchName>Cookie Clicker.prg</AutoLaunchName>
<NoSingleFileBuild>False</NoSingleFileBuild>
<CreatedWithVersion>CBM prg Studio 3.14.0</CreatedWithVersion>
<HasGitRepo>True</HasGitRepo>
<GitIgnoreList />
<Cartridge>
<CrtBuildingCartridge>False</CrtBuildingCartridge>
<CrtSignature>C64 CARTRIDGE</CrtSignature>
<CrtName />
<CrtHeaderLength>40</CrtHeaderLength>
<CrtVersionHigh>1</CrtVersionHigh>
<CrtVersionLow>0</CrtVersionLow>
<CrtCartType>0</CrtCartType>
<CrtEXROMActive>False</CrtEXROMActive>
<CrtGAMEActive>False</CrtGAMEActive>
<CrtROMSig>CHIP</CrtROMSig>
<CrtChipType>0</CrtChipType>
</Cartridge>
<BuildEvents>
<PreBuildEnabled>False</PreBuildEnabled>
<PostBuildEnabled>False</PostBuildEnabled>
<RunPostBuildAlways>False</RunPostBuildAlways>
<PreBuildCommands />
<PostBuildCommands />
</BuildEvents>
<BuildList>
<FileName>prg.txt</FileName>
<FileName>storedat.seq</FileName>
<FileName>Tune.bas</FileName>
</BuildList>
<DetermineBuildOrder>0</DetermineBuildOrder>
<PaddingByte>0</PaddingByte>
<!--Screen designer settings-->
<AssyBinaryFileLocation />
<AssyExportList />
<!--End of screen designer settings-->
<SourceFiles>
<SourceFile>
<Name>prg.txt</Name>
<PrgName />
<FileType>1</FileType>
<IncludeInBuild>True</IncludeInBuild>
<Regions />
<Breakpoints />
<Bookmarks />
<Topmost>False</Topmost>
<FileOpen>True</FileOpen>
</SourceFile>
</SourceFiles>
</Project>

Binary file not shown.

View File

@ -1,44 +1,6 @@
# Cookie-Clicker-C64 # Cookie-Clicker-C64
Cookie-Clicker-C64 (or CC64 for short) is a Cookie clicker clone for the Commodore 64.
# OH MY GOD THIS PROGRAM JUST GOT SHOWED IN A YOUTUBE VIDEO
https://youtu.be/o6RtnOU-5ss Cookie clicker was created by [Orteil](https://orteil.dashnet.org/)
LETS FUCKING GOOOOOOOOO
(to anyone who came here, sorry, this program is reaaaaaaaally buggy. Maybe this is the motivation I need to fix it up) Note: Due to the way I have everything set up my commits will appear as commits by drskinner.
<p align="center">
<img src="https://github.com/IanSkinner1982/Cookie-Clicker-C64/blob/master/Banner.png"/>
<p align="center">
<a href="https://discord.com/invite/kJac2ty">
<img src="https://img.shields.io/discord/704065693246685225?color=purple&label=Discord&logo=Discord&style=plastic"
alt="Chat on Discord">
</a>
<a href="https://gbatemp.net/download/cookie-clicker-c64.36587/" style="padding-left: 5px; padding-right: 5px;">
<img src="https://img.shields.io/badge/GBAtemp-Link-blue.svg" height="20">
</a>
<a href="https://github.com/IanSkinner1982/Cookie-Clicker-C64/" style="padding-left: 5px; padding-right: 5px;">
<img src="https://img.shields.io/github/downloads/IanSkinner1982/Cookie-Clicker-C64/total?color=Green&label=Downloads&logo=Github" height="20">
</a>
</p>
Cookie Clicker C64 (or CC64 for short) is a Cookie clicker clone for the Commodore 64.
## How to play :
- Press the space bar to 'click' for cookies.
Credits:
- [@Orteil](https://orteil.dashnet.org/) for making the original cookie clicker game
- [@drskinner](https://github.com/drskinner/)
Notes:
- Editing program lines larger than 80 characters on the C64 (or on an emulator) will result in parts of them being deleted
- `storedat` must be placed in the same d64 as `cookie.prg`, or in the same directory, if your emulator treats a folder like a disk. Also note that unlike `storedat`, `savedat` is not needed to run the game, so you can place `savedat` on another d64 and swap disks when needed.

BIN
build/cookie.prg Normal file

Binary file not shown.

BIN
build/cookie.prg.out.prg Normal file

Binary file not shown.

327
prg.txt Executable file → Normal file
View File

@ -1,173 +1,154 @@
!- ======================================== 0 rem !to "build/cookie.prg"
!- Project : Cookie Clicker 10 cc=0:cg=0:ca=0:ga=0:ft$="0":mt$="0"
!- Target : Commodore 64 20 c1=15:c2=100:c3=1100:c4=12000
!- Comments : Cookie Clicker for the C64. 50 ds$=chr$(17):rem cursor down
!- Author : Ian M. Skinner 60 rs$=chr$(29):rem cursor right
!- ======================================== 100 print"{grey2}*CCCCCCCCCCCCCCCCCCCCCCCCC*CCCCCCCCCCC*"
0 rem !to "build/cookie.prg" 110 print"{grey2}B{wht} you have "int(cc)" {grey2}B{wht}cursor(c) {grey2}B"
10 mb=17:dimna$(mb):dimia(mb):dimbd$(mb):dimbg(mb):dimpr(mb):dimcg(mb):rem create arrays for item data 115 l3$="{grey2}B{wht} cookies {grey2}B{wht}"
120 printl3$ca" {grey2}B"
20 open 8,8,8,"storedat,s,r":rem load item data 130 print"*CCCCCCCCCCCCCCCCCCCCCCCCC*{wht}cost: {grey2}B"
30 forx=0tomb 140 print"B B{wht}"c1" {grey2}B"
40 input#8,na$(x):rem building name 150 print"B {brown}********{grey2} *CCCCCCCCCCC*"
50 input#8,bd$(x):rem building description 160 print"B {brown}*******{blk}**{brown}*{grey2} B{wht}grandma(g) {grey2}B"
55 input#8,bg(x):rem building cps (not actually per second) 170 print"B {brown}***{blk}*{brown}********{grey2} B{wht}"ga" {grey2}B"
60 input#8,pr(x):rem building price 180 print"B {brown}***{blk}**{brown}*********{grey2} B{wht}cost: {grey2}B"
65 ?x+1"/"mb+1: 190 print"B {brown}********{blk}**{brown}****{grey2} B{wht}"c2" {grey2}B"
70 next 200 print"B {brown}********{blk}**{brown}****{grey2} *CCCCCCCCCCC*"
80 close 8 210 print"B {brown}**************{grey2} B B"
220 print"B {brown}*{blk}*{brown}************{grey2} B B"
90 ms=1:bn$="someone's":r1$="{right*17}":rem ms is the main subroutine value, bn is the name 230 print"B {brown}*************{brown}*{grey2} B B"
95 r2$="{right*17}":ss=1:rem huh? that isn't right. why are r1 and r2 the same? 240 print"B {brown}******{blk}**{brown}****{grey2} B B"
100 rem stick news here. Also ss is the shop page. (to be named sp) 250 print"B {brown}*****{blk}**{brown}***{grey2} B B"
260 print"B {brown}********{grey2} B B"
110 print"{brown}{clear}UCCCCCCCCCCCCCCC{cm r}CCCCCCCCCCCCCCCCCCCCCCI";:rem print static screen 270 print"B B B"
120 print"B B B"; 280 print"B B B"
130 print"B B B"; 290 print"B B B"
140 print"{cm q}CCCCCCCCCCCCCCC{cm w} B"; 300 print"B B B"
150 print"B B B"; 310 print"B B B"
160 print"B B B"; 320 print"B B B"
170 print"B B B"; 330 print"*CCCCCCCCCCCCCCCCCCCCCCCCC*CCCCCCCCCCC*"
180 print"B {reverse on} {reverse off} B B";
190 print"B {reverse on} {black} {brown} {reverse off} B B"; 1000 if ft$="0" then 5000
200 print"B {reverse on} {black} {brown} {reverse off} B B"; 1010 if mt$="0" then 6000
210 print"B {reverse on} {black} {brown} {black} {brown} {reverse off} B B"; 1410 get k$:if k$= "" then 1500
220 print"B {reverse on} {black} {brown} {black} {brown} {reverse off} B B"; 1415 if k$=" " then 2000
230 print"B {reverse on} {reverse off} B B"; 1420 if k$="c" then 3000
240 print"B {reverse on} {reverse off} B B"; 1430 if k$="g" then 4000
250 print"B {reverse on} {black} {brown} {reverse off} B B"; 1440 if k$="f" then 5500
260 print"B {reverse on} {black} {brown} {black} {brown} {black} {brown} {reverse off} B B"; 1450 if k$="m" then 6500
270 print"B {reverse on} {black} {brown} {black} {brown} {reverse off} B B";
280 print"B {reverse on} {reverse off} B B"; 1500 cc=cc+cg
290 print"B {reverse on} {reverse off} B B"; 1510 print"{home}"ds$"{grey2}B{wht} you have "int(cc)
300 print"B {reverse on} {reverse off} B B"; 1520 goto 1000
310 print"B B B";
320 print"B{white} v2.9.0-1.0 {brown}B B";
330 print"JCCCCCCCCCCCCCCC{cm e}CCCCCCCCCCCCCCCCCCCCCCK";
340 print"{white} {reverse on}f1{reverse off} store {reverse on}f3{reverse off} options {reverse on}f5{reverse off} stats {reverse on}f7{reverse off} ascend";
500 print"{home}{down}{right}"int(cc) 2000 cc=cc+1
510 print"{brown}B{white} cookies" 2010 print"{home}"ds$"{grey2}B{wht} you have "int(cc)
520 ?"{brown}B{white}"bn$ 2020 goto 1000
530 print"{up}{brown}B{white} bakery"
1000 on ms gosub 2000, 5000:rem, 7000
1010 goto 1000:rem the menu selector
3000 if cc<c1 then 1000
2000 ifms<>1thenreturn :rem store page selection and menu switching area. 3010 cc=cc-c1
2010 ifss>0theni=0:j=4:ifss>1theni=5:j=9:ifss>2theni=10:j=14:ifss>3theni=15:j=17 3015 print"{home}"ds$"B{wht} you have ":rem stops from messing up the counter
2060 ts=ss:tm=ms :rem 2010 sets the range of item data 3025 print"{home}"ds$ds$l3$ca" "
2090 gosub2500 :rem to be used. do not have a range 3030 cg=cg+.04
2100 goto2000 :rem bigger than 5. (smaller is fine) 3040 cc=cc+cg
3050 print"{home}"ds$"{grey2}B{wht} you have "int(cc)
2500 gosub51000:rem clear dynamic window 3060 ca=ca+1
2505 y=1:forx=itoj :rem this section prints the 3065 print"{home}"ds$ds$l3$ca
2510 ifx=ithen?"{home}" :rem item data in the given range. (it prints the specified page) 3070 print"{home}"ds$ds$
2515 ?r1$"{up}{reverse on}"right$(str$(y),1)"{reverse off} "na$(x) 3075 goto 1000
2520 ?r1$r2$"{up}"ia(x)
2530 ?r1$bd$(x)
2540 ?r1$"{up}"int(pr(x))
2545 ?r1$"{cm t*22}":y=y+1:rem the bars below each item
2550 next 4000 if cc<c2 then 1000
2555 ifj=17then?r1$"{down*7} prev/next(-/+)" 4010 cc=cc-c2
2560 ?r1$"{up} prev/next(-/+)" 4015 print"{home}"ds$"B you have ":rem stops from messing up the counter
2565 gosub 3000:rem goes to actual shop routine 3020 ga=ga+1
2570 return 3025 print"{home}"ds$ds$ds$ds$ds$ds$ds$"{grey2}B {brown}***{blk}*{brown}********{grey2} B{wht}"ga
4030 cg=cg+.05
3000 get k$:x=0 4040 cc=cc+cg
3010 gosub 60000:rem adding routine 4050 print"{home}"ds$"{grey2}B{wht} you have "int(cc)
3015 ifval(k$)>5then3070 4060 goto 1000
3020 ifval(k$)<1then3070
3025 x=val(k$)
3065 gosub 3500:rem purchase item
3070 gosub 50000:rem change menu 5000 if cc<400 then 1010
5010 ft$="1"
3080 ifk$="+"thenss=ss+1:rem change store page 5020 print"{home}"ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$"{grey2}B {brown}**************{grey2} B{wht}farm(f) {grey2}B"
3085 ifk$="-"thenss=ss-1 5030 print"B {brown}*{blk}*{brown}************{grey2} B{wht}"fa" {grey2}B"
3090 ifss=0thenss=1 5040 print"B {brown}*************{brown}*{grey2} B{wht}cost: {grey2}B"
3095 ifss=5thenss=4 5050 print"B {brown}******{blk}**{brown}****{grey2} B{wht}"c3" {grey2}B"
3110 ifss<>tsthenreturn:rem return if different page was selected 5060 print"B {brown}*****{blk}**{brown}***{grey2} *CCCCCCCCCCC*"
3120 ifms<>tmthenreturn:rem return if different menu was selected 5070 goto 1010
3130 goto 3000
5500 if cc<c3 then 1000
3500 y=i+x-1:ify>mbthenreturn :rem buying subroutine 5510 cc=cc-c3
3510 if cc<pr(y)then3610 5515 print"{home}"ds$"B{wht} you have ":rem stops from messing up the counter
3515 if ia(y)=300then3610:rem item cap (otherwise you'd have prices too big to handle) 5520 fa=fa+1
3520 cc=cc-pr(y):cg(y)=cg(y)+bg(y):pr(y)=pr(y)*1.15:ia(y)=ia(y)+1 5525 print"{home}"ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$"{grey2}B {brown}*{blk}*{brown}************{grey2} B{wht}"fa
3530 ifx=1then?"{home}"r1$r2$"{down}"ia(y):rem find a better way to do this 5530 cg=cg+.06
3540 ifx=2then?"{home}"r1$r2$"{down*5}"ia(y) 5535 cc=cc+cg
3550 ifx=3then?"{home}"r1$r2$"{down*9}"ia(y) 5540 print"{home}"ds$"B{wht} you have "int(cc)
3560 ifx=4then?"{home}"r1$r2$"{down*13}"ia(y) 5550 goto 1000
3565 ifx=5then?"{home}"r1$r2$"{down*17}"ia(y)
3570 ifx=1then?"{home}"r1$"{down*3}"int(pr(y))
3580 ifx=2then?"{home}"r1$"{down*7}"int(pr(y))
3590 ifx=3then?"{home}"r1$"{down*11}"int(pr(y))
3600 ifx=4then?"{home}"r1$"{down*15}"int(pr(y))
3605 ifx=5then?"{home}"r1$"{down*19}"int(pr(y))
3610 x=0:return
5000 ifms<>2thenreturn 6000 if cc<6000 then 1410
5010 tm=ms 6010 mt$="1"
5020 gosub5100 6020 print"{home}"ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$"{grey2}B {brown}********{grey2} B{wht}mine(m) {grey2}B"
5030 goto5000 6030 print"B B{wht}"ma" {grey2}B"
6040 print"B B{wht}cost: {grey2}B"
5100 ?"{home}{down}"r1$"{reverse on}1{reverse off} change your bakery's" 6050 print"B B{wht}"c4" {grey2}B"
5110 ?r1$"name" 6060 print"B *CCCCCCCCCCC*"
5120 ?r1$"{cm t*22}{down}" 6070 goto 1410
5130 ?r1$"{up}{reverse on}2{reverse off} create a save file"
5140 ?r1$"on a disk" 6500 if cc<c4 then 1000
5150 ?r1$"{cm t*22}{down}" 6510 cc=cc-c4
5160 ?r1$"{up}{reverse on}3{reverse off} load a save file" 6515 print"{home}"ds$"B{wht} you have ":rem stops from messing up the counter
5170 ?r1$"from a disk" 6520 ma=ma+1
5180 ?r1$"{cm t*22}{down}" 6525 print"{home}"ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$ds$"{grey2}B B{wht}"ma
5190 ?r1$"{up}{reverse on}4{reverse off} manage your saves" 6530 cg=cg+.07
5195 ?r1$"{down}{cm t*22}{down}" 6535 cc=cc+cg
6540 print"{home}"ds$"B{wht} you have "int(cc)
6550 goto 1000
5200 getk$ :rem
5210 ifval(k$)>4then5240 :rem main loop
5220 ifval(k$)<1then5240 :rem
5230 onval(k$)gosub5700,5900
5240 gosub 50000:gosub 60000
5250 ifms<>tmthenreturn
5260 goto 5200
5700 print"1":open 8,8,8,"@0:savedat,s,w":rem save data
5710 print#8,al
5720 print#8,bn$
5730 print#8,cc
5740 forx=0tomb
5750 print#8,cg(x)
5760 print#8,pr(x)
5770 print#8,ia(x)
5780 next:close 8:return
5900 print"2":open 8,8,8,"@0:savedat,s,r":rem load data
5910 input#8,al
5920 input#8,bn$
5930 input#8,cc
5940 forx=0tomb
5950 input#8,cg(x)
5960 input#8,pr(x)
5970 input#8,ia(x)
5980 next:close 8:return
10000 stop
49999 :rem important subroutines
50000 ifk$="{f1}"then50040:rem menu selecting
50010 ifk$="{f3}"then50040
50020 ifk$="{f5}"then50040
50030 return
50040 ms=-1*(k$="{f1}")-2*(k$="{f3}")-3*(k$="{f5}"):return
51000 forx=1to20: rem clears the menu
51010 ifx=1then?"{home}"r1$"{down} ";
51020 ?r1$"{right} ";:next
51040 return
60000 b=0:fora=0tomb:b=b+(cg(a)/3.6):next:rem slow, horrible, not good adding subroutine
60010 ifk$=" "thencc=cc+1
60020 ifcb>ccthen?"{home}{down}{right} "
60030 cc=cc+b:?"{home}{down}{right}"int(cc):cb=cc:return

View File

@ -1,72 +0,0 @@
spacebar
adds .1 cps
.1
15
grandma
adds 1 cps
1
100
farm
adds 8 cps
8
1100
mine
adds 47 cps
47
12000
factory
adds 260 cps
260
130000
bank
adds 1400 cps
1400
1400000
temple
adds 7800 cps
7800
20000000
wizard tower
adds 44000 cps
44000
330000000
shipment
adds 260000 cps
260000
5100000000
alchemy lab
adds 1600000 cps
1600000
75000000000
portal
adds 10 million cps
10000000
1000000000000
time machine
adds 65 million cps
65000000
14000000000000
antim. condenser
adds 430 million cps
430000000
170000000000000
prism
adds 2.9 billion cps
2900000000
2100000000000000
chancemaker
adds 21 billion cps
21000000000
26000000000000000
fractal engine
adds 150 billion cps
150000000000
310000000000000000
ml monitor
adds 1.1 trillion cps
1100000000000
71000000000000000000
idleverse
adds 8.3 trillion cps
8300000000000
1.2e+22