mirror of
https://github.com/rvtr/Cookie-Clicker-C64.git
synced 2025-10-31 07:41:12 -04:00
Switching over to the new IDE
This commit is contained in:
parent
8f4083d897
commit
7b2ee6045e
14
.gitignore
vendored
14
.gitignore
vendored
@ -1,9 +1,5 @@
|
||||
# Mac files
|
||||
.DS_Store
|
||||
build/.DS_Store
|
||||
# Others
|
||||
# testmenu.txt
|
||||
# build/testmenu.prg
|
||||
# build/testmenu.prg.out.prg
|
||||
build/cc64.sav
|
||||
build/cookie.d64
|
||||
# Created with CBM prg Studio
|
||||
bak
|
||||
*.dbg
|
||||
*.dmp
|
||||
*.dup
|
||||
|
||||
BIN
Banner.png
BIN
Banner.png
Binary file not shown.
|
Before Width: | Height: | Size: 124 KiB |
78
Cookie Clicker.cbmprj
Normal file
78
Cookie Clicker.cbmprj
Normal file
@ -0,0 +1,78 @@
|
||||
<?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>
|
||||
<SourceFile>
|
||||
<Name>Tune.bas</Name>
|
||||
<PrgName />
|
||||
<FileType>1</FileType>
|
||||
<IncludeInBuild>False</IncludeInBuild>
|
||||
<Regions />
|
||||
<Breakpoints />
|
||||
<Bookmarks />
|
||||
<Topmost>True</Topmost>
|
||||
<FileOpen>True</FileOpen>
|
||||
</SourceFile>
|
||||
</SourceFiles>
|
||||
</Project>
|
||||
BIN
Cookie Clicker.prg
Normal file
BIN
Cookie Clicker.prg
Normal file
Binary file not shown.
39
README.md
39
README.md
@ -1,39 +0,0 @@
|
||||
# Cookie-Clicker-C64
|
||||
|
||||
<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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
15
Tune.bas
Normal file
15
Tune.bas
Normal file
@ -0,0 +1,15 @@
|
||||
2 for l=54272 to 54296: poke l,0: next
|
||||
5 s=54272
|
||||
10 poke s+24,15: poke s+5,88: poke s+3,15: poke s+2,15: poke s+6,89
|
||||
20 read h: if h=-1 then end
|
||||
30 read l
|
||||
40 read d
|
||||
60 poke s+1,h: poke s,l: poke s+4,65
|
||||
80 for t=1 to d: next: poke s+4,64
|
||||
85 for t=1 to 50: next
|
||||
90 goto 20
|
||||
100 data 33,135,250,42,62,250,50,60,250,42,62,125,50,60,250
|
||||
105 data 56,99,250
|
||||
110 data 50,60,500,0,0,125,42,62,250,50,60,250,56,99
|
||||
115 data 1000,50,60,500
|
||||
120 data -1
|
||||
BIN
build/cookie.prg
BIN
build/cookie.prg
Binary file not shown.
Binary file not shown.
476
prg.txt
476
prg.txt
@ -1,243 +1,233 @@
|
||||
0 rem !to "build/cookie.prg"
|
||||
10 mb=17:dimna$(mb):dimia(mb):dimbd$(mb):dimbg(mb):dimpr(mb):dimcg(mb)
|
||||
20 rem open 8,8,8,"storedat,s,r"
|
||||
30 rem forx=0tomb
|
||||
40 rem input#8,na$(x)
|
||||
50 rem input#8,bd$(x)
|
||||
55 rem input#8,bg(x)
|
||||
60 rem input#8,pr(x)
|
||||
65 rem ?x+1"/"mb+1
|
||||
70 rem next
|
||||
80 gosub 52000:rem close 8
|
||||
90 ms=2:bn$="someone's":r1$="{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}"
|
||||
95 r2$="{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}{right}":ss=1
|
||||
100 rem stick news here.
|
||||
110 print"{brown}{clear}UCCCCCCCCCCCCCCC{$b2}CCCCCCCCCCCCCCCCCCCCCCI";
|
||||
120 print"B B B";
|
||||
130 print"B B B";
|
||||
140 print"{$ab}CCCCCCCCCCCCCCC{$b3} B";
|
||||
150 print"B B B";
|
||||
160 print"B B B";
|
||||
170 print"B B B";
|
||||
180 print"B {rvon} {rvof} B B";
|
||||
190 print"B {rvon} {blk} {brown} {rvof} B B";
|
||||
200 print"B {rvon} {blk} {brown} {rvof} B B";
|
||||
210 print"B {rvon} {blk} {brown} {blk} {brown} {rvof} B B";
|
||||
220 print"B {rvon} {blk} {brown} {blk} {brown} {rvof} B B";
|
||||
230 print"B {rvon} {rvof} B B";
|
||||
240 print"B {rvon} {rvof} B B";
|
||||
250 print"B {rvon} {blk} {brown} {rvof} B B";
|
||||
260 print"B {rvon} {blk} {brown} {blk} {brown} {blk} {brown} {rvof} B B";
|
||||
270 print"B {rvon} {blk} {brown} {blk} {brown} {rvof} B B";
|
||||
280 print"B {rvon} {rvof} B B";
|
||||
290 print"B {rvon} {rvof} B B";
|
||||
300 print"B {rvon} {rvof} B B";
|
||||
310 print"B B B";
|
||||
320 print"B{wht} v2.9.0-1.0 {brown}B B";
|
||||
330 print"JCCCCCCCCCCCCCCC{$b1}CCCCCCCCCCCCCCCCCCCCCCK";
|
||||
340 print"{wht} {rvon}f1{rvof} store {rvon}f3{rvof} options {rvon}f5{rvof} stats {rvon}f7{rvof} ascend";
|
||||
500 print"{home}{down}{right}"int(cc)
|
||||
510 print"{brown}B{wht} cookies"
|
||||
520 ?"{brown}B{wht}"bn$
|
||||
530 print"{up}{brown}B{wht} bakery"
|
||||
1000 on ms gosub 2000, 5000, 5000
|
||||
1010 goto 1000
|
||||
|
||||
2000 ifms<>1thenreturn :rem store page selection and menu switching area.
|
||||
2010 ifss>0theni=0:j=4:ifss>1theni=5:j=9:ifss>2theni=10:j=14:ifss>3theni=15:j=17
|
||||
2060 ts=ss:tm=ms :rem 2010 sets the range of item data
|
||||
2090 gosub2500 :rem to be used. do not have a range
|
||||
2100 goto2000 :rem bigger than 5. (smaller is fine)
|
||||
|
||||
2500 gosub51000
|
||||
2505 y=1:forx=itoj :rem this section prints the
|
||||
2510 ifx=ithen?"{home}" :rem item data in the given range.
|
||||
2515 ?r1$"{up}{rvon}"right$(str$(y),1)"{rvof} "na$(x)
|
||||
2520 ?r1$r2$"{up}"ia(x)
|
||||
2530 ?r1$bd$(x)
|
||||
2540 ?r1$"{up}"int(pr(x))
|
||||
2545 ?r1$"{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}":y=y+1
|
||||
2550 next
|
||||
2555 ifj=17then?r1$"{down}{down}{down}{down}{down}{down}{down} prev/next(-/+)"
|
||||
2560 ?r1$"{up} prev/next(-/+)"
|
||||
2565 gosub 3000
|
||||
2570 return
|
||||
|
||||
3000 get k$:x=0 :rem don't add a 'ifk$=""' or else the adding routine won't run properly
|
||||
3010 gosub 60000 :rem
|
||||
3015 ifval(k$)>5then3070 :rem main loop
|
||||
3020 ifval(k$)<1then3070 :rem
|
||||
3025 x=val(k$)
|
||||
3065 gosub 3500
|
||||
3070 gosub 50000
|
||||
3080 ifk$="+"thenss=ss+1
|
||||
3085 ifk$="-"thenss=ss-1
|
||||
3090 ifss=0thenss=1
|
||||
3095 ifss=5thenss=4
|
||||
3110 ifss<>tsthenreturn
|
||||
3120 ifms<>tmthenreturn
|
||||
3130 goto 3000
|
||||
|
||||
3500 y=i+x-1:ify>mbthenreturn :rem buying subroutine
|
||||
3510 if cc<pr(y)then3610
|
||||
3515 if ia(y)=300then3610:rem temp item cap
|
||||
3520 cc=cc-pr(y):cg(y)=cg(y)+bg(y):pr(y)=pr(y)*1.15:ia(y)=ia(y)+1
|
||||
3530 ifx=1then?"{home}"r1$r2$"{down}"ia(y)
|
||||
3540 ifx=2then?"{home}"r1$r2$"{down}{down}{down}{down}{down}"ia(y)
|
||||
3550 ifx=3then?"{home}"r1$r2$"{down}{down}{down}{down}{down}{down}{down}{down}{down}"ia(y)
|
||||
3560 ifx=4then?"{home}"r1$r2$"{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}"ia(y)
|
||||
3565 ifx=5then?"{home}"r1$r2$"{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}"ia(y)
|
||||
3570 ifx=1then?"{home}"r1$"{down}{down}{down}"int(pr(y))
|
||||
3580 ifx=2then?"{home}"r1$"{down}{down}{down}{down}{down}{down}{down}"int(pr(y))
|
||||
3590 ifx=3then?"{home}"r1$"{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}"int(pr(y))
|
||||
3600 ifx=4then?"{home}"r1$"{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}"int(pr(y))
|
||||
3605 ifx=5then?"{home}"r1$"{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}"int(pr(y))
|
||||
3610 x=0:return
|
||||
|
||||
5000 ifms<>2thenreturn :rem
|
||||
5010 tm=ms :rem this section is for menu switching.
|
||||
5020 gosub51000:gosub5100:goto5000 :rem
|
||||
|
||||
5100 ?"{home}{down}"r1$"{rvon}1{rvof} change your bakery's"
|
||||
5110 ?r1$"name"
|
||||
5120 ?r1$"{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{down}"
|
||||
5130 ?r1$"{up}{rvon}2{rvof} create a save file"
|
||||
5140 ?r1$"on a disk"
|
||||
5150 ?r1$"{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{down}"
|
||||
5160 ?r1$"{up}{rvon}3{rvof} load a save file"
|
||||
5170 ?r1$"from a disk"
|
||||
5180 ?r1$"{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{down}"
|
||||
5160 ?r1$"{up}{rvon}4{rvof} manage your saves"
|
||||
5180 ?r1$"{down}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{$a3}{down}"
|
||||
|
||||
|
||||
5200 getk$ :rem
|
||||
5210 ifval(k$)>4then5240 :rem main loop
|
||||
5220 ifval(k$)<1then5240 :rem
|
||||
5230 onval(k$)gosub5500,5700,5900,6100
|
||||
5240 gosub 50000
|
||||
5250 ifms<>tmthenreturn
|
||||
5260 goto 5200
|
||||
|
||||
5500 tn$="":?"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}"r1$"new name:"
|
||||
5510 getnp$:ifnp$=""then5510
|
||||
5515 iflen(tn$)<1then?r1$; :
|
||||
5520 ?np$;:tn$=tn$+np$:ifnp$="{\n}"then5540 :rem bakery name
|
||||
5530 iflen(tn$)<14then5510 :
|
||||
5540 ?"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}"r1$" "
|
||||
5550 ?r1$" ":bn$=left$(tn$,(len(tn$)-1))
|
||||
5560 ?"{home}{down}{down}{down}{down}{right} {home}{down}{down}{down}{down}{right}"bn$"'s":return
|
||||
|
||||
5700 open 8,8,8,"@0:savedat,s,w" :rem save data
|
||||
5710 print#8,fl
|
||||
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 open 8,8,8,"@0:savedat,s,r" :rem load data
|
||||
5910 input#8,fl
|
||||
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
|
||||
50010 ifk$="{f3}"then50040:rem menu selecting
|
||||
50020 ifk$="{f5}"then50040:rem
|
||||
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
|
||||
|
||||
52000 x=0:na$(x)="cursor"
|
||||
52001 bd$(x)="adds .1 cps"
|
||||
52002 bg(x)=.1
|
||||
52003 pr(x)=15
|
||||
52004 x=x+1:na$(x)="grandma"
|
||||
52005 bd$(x)="adds 1 cps"
|
||||
52006 bg(x)=1
|
||||
52007 pr(x)=100
|
||||
52008 x=x+1:na$(x)="farm"
|
||||
52009 bd$(x)="adds 8 cps"
|
||||
52010 bg(x)=8
|
||||
52011 pr(x)=1100
|
||||
52012 x=x+1:na$(x)="mine"
|
||||
52013 bd$(x)="adds 47 cps"
|
||||
52014 bg(x)=47
|
||||
52015 pr(x)=12000
|
||||
52016 x=x+1:na$(x)="factory"
|
||||
52017 bd$(x)="adds 260 cps"
|
||||
52018 bg(x)=260
|
||||
52019 pr(x)=130000
|
||||
52020 x=x+1:na$(x)="bank"
|
||||
52021 bd$(x)="adds 1400 cps"
|
||||
52022 bg(x)=1400
|
||||
52023 pr(x)=1400000
|
||||
52024 x=x+1:na$(x)="temple"
|
||||
52025 bd$(x)="adds 7800 cps"
|
||||
52026 bg(x)=7800
|
||||
52027 pr(x)=20000000
|
||||
52028 x=x+1:na$(x)="wizard tower"
|
||||
52029 bd$(x)="adds 44000 cps"
|
||||
52030 bg(x)=44000
|
||||
52031 pr(x)=330000000
|
||||
52032 x=x+1:na$(x)="shipment"
|
||||
52033 bd$(x)="adds 260000 cps"
|
||||
52034 bg(x)=260000
|
||||
52035 pr(x)=5100000000
|
||||
52036 x=x+1:na$(x)="alchemy lab"
|
||||
52037 bd$(x)="adds 1600000 cps"
|
||||
52038 bg(x)=1600000
|
||||
52039 pr(x)=75000000000
|
||||
52040 x=x+1:na$(x)="portal"
|
||||
52041 bd$(x)="adds 10 million cps"
|
||||
52042 bg(x)=10000000
|
||||
52043 pr(x)=1000000000000
|
||||
52044 x=x+1:na$(x)="time machine"
|
||||
52045 bd$(x)="adds 65 million cps"
|
||||
52046 bg(x)=65000000
|
||||
52047 pr(x)=14000000000000
|
||||
52048 x=x+1:na$(x)="antimatter condenser"
|
||||
52049 bd$(x)="adds 430 million cps"
|
||||
52050 bg(x)=430000000
|
||||
52051 pr(x)=170000000000000
|
||||
52052 x=x+1:na$(x)="prism"
|
||||
52053 bd$(x)="adds 2.9 billion cps"
|
||||
52054 bg(x)=2900000000
|
||||
52055 pr(x)=2100000000000000
|
||||
52056 x=x+1:na$(x)="chancemaker"
|
||||
52057 bd$(x)="adds 21 billion cps"
|
||||
52058 bg(x)=21000000000
|
||||
52059 pr(x)=26000000000000000
|
||||
52060 x=x+1:na$(x)="fractal engine"
|
||||
52061 bd$(x)="adds 150 billion cps"
|
||||
52062 bg(x)=150000000000
|
||||
52063 pr(x)=310000000000000000
|
||||
52064 x=x+1:na$(x)="ml monitor"
|
||||
52065 bd$(x)="adds 1.1 trillion cps"
|
||||
52066 bg(x)=1100000000000
|
||||
52067 pr(x)=71000000000000000000
|
||||
52068 x=x+1:na$(x)="idleverse"
|
||||
52069 bd$(x)="adds 8.3 trillion cps"
|
||||
52070 bg(x)=8300000000000
|
||||
52071 pr(x)=1.2e+22
|
||||
52072 return
|
||||
|
||||
60000 b=0:fora=0tomi:b=b+(cg(a)/3.6):next:rem 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
|
||||
!- ========================================
|
||||
!- Project : Cookie Clicker
|
||||
!- Target : Commodore 64
|
||||
!- Comments : Cookie Clicker for the C64.
|
||||
!- Author : Ian M. Skinner
|
||||
!- ========================================
|
||||
0 rem !to "build/cookie.prg"
|
||||
10 mb=17:dimna$(mb):dimia(mb):dimbd$(mb):dimbg(mb):dimpr(mb):dimcg(mb)
|
||||
15 gosub52000:rem remove later
|
||||
20 rem open 8,8,8,"storedat,s,r"
|
||||
30 rem forx=0tomb
|
||||
40 rem input#8,na$(x):rem building name
|
||||
50 rem input#8,bd$(x):rem building description
|
||||
55 rem input#8,bg(x):rem building cps (not actually per second)
|
||||
60 rem input#8,pr(x):rem building price
|
||||
65 rem ?x+1"/"mb+1:
|
||||
70 rem next
|
||||
80 rem close 8:rem gosub 52000
|
||||
90 ms=1:bn$="someone's":r1$="{right*17}":rem ms is the main subroutine value
|
||||
95 r2$="{right*17}":ss=1:rem huh? that isn't right. why are r1 and r2 the same?
|
||||
100 rem stick news here. Also ss is the shop page. (to be named sp)
|
||||
110 print"{brown}{clear}UCCCCCCCCCCCCCCC{cm r}CCCCCCCCCCCCCCCCCCCCCCI";
|
||||
120 print"B B B";
|
||||
130 print"B B B";
|
||||
140 print"{cm q}CCCCCCCCCCCCCCC{cm w} B";
|
||||
150 print"B B B";
|
||||
160 print"B B B";
|
||||
170 print"B B B";
|
||||
180 print"B {reverse on} {reverse off} B B";
|
||||
190 print"B {reverse on} {black} {brown} {reverse off} B B";
|
||||
200 print"B {reverse on} {black} {brown} {reverse off} B B";
|
||||
210 print"B {reverse on} {black} {brown} {black} {brown} {reverse off} B B";
|
||||
220 print"B {reverse on} {black} {brown} {black} {brown} {reverse off} B B";
|
||||
230 print"B {reverse on} {reverse off} B B";
|
||||
240 print"B {reverse on} {reverse off} B B";
|
||||
250 print"B {reverse on} {black} {brown} {reverse off} B B";
|
||||
260 print"B {reverse on} {black} {brown} {black} {brown} {black} {brown} {reverse off} B B";
|
||||
270 print"B {reverse on} {black} {brown} {black} {brown} {reverse off} B B";
|
||||
280 print"B {reverse on} {reverse off} B B";
|
||||
290 print"B {reverse on} {reverse off} B B";
|
||||
300 print"B {reverse on} {reverse off} B B";
|
||||
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)
|
||||
510 print"{brown}B{white} cookies"
|
||||
520 ?"{brown}B{white}"bn$
|
||||
530 print"{up}{brown}B{white} bakery"
|
||||
|
||||
1000 on ms gosub 2000, 5000:rem, 7000
|
||||
1010 goto 1000:rem the menu selector
|
||||
|
||||
2000 ifms<>1thenreturn :rem store page selection and menu switching area.
|
||||
2010 ifss>0theni=0:j=4:ifss>1theni=5:j=9:ifss>2theni=10:j=14:ifss>3theni=15:j=17
|
||||
2060 ts=ss:tm=ms :rem 2010 sets the range of item data
|
||||
2090 gosub2500 :rem to be used. do not have a range
|
||||
2100 goto2000 :rem bigger than 5. (smaller is fine)
|
||||
|
||||
2500 gosub51000:rem clear dynamic window
|
||||
2505 y=1:forx=itoj :rem this section prints the
|
||||
2510 ifx=ithen?"{home}" :rem item data in the given range.
|
||||
2515 ?r1$"{up}{reverse on}"right$(str$(y),1)"{reverse off} "na$(x)
|
||||
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
|
||||
2555 ifj=17then?r1$"{down*7} prev/next(-/+)"
|
||||
2560 ?r1$"{up} prev/next(-/+)"
|
||||
2565 gosub 3000
|
||||
2570 return
|
||||
|
||||
3000 get k$:x=0:rem don't add an 'ifk$=""then3000' or else the adding routine won't run properly
|
||||
3010 gosub 60000
|
||||
3015 ifval(k$)>5then3070
|
||||
3020 ifval(k$)<1then3070
|
||||
3025 x=val(k$)
|
||||
3065 gosub 3500
|
||||
3070 gosub 50000
|
||||
3080 ifk$="+"thenss=ss+1
|
||||
3085 ifk$="-"thenss=ss-1
|
||||
3090 ifss=0thenss=1
|
||||
3095 ifss=5thenss=4
|
||||
3110 ifss<>tsthenreturn
|
||||
3120 ifms<>tmthenreturn
|
||||
3130 goto 3000
|
||||
|
||||
3500 y=i+x-1:ify>mbthenreturn :rem buying subroutine
|
||||
3510 if cc<pr(y)then3610
|
||||
3515 if ia(y)=300then3610:rem item cap (otherwise you'd have prices too big to handle)
|
||||
3520 cc=cc-pr(y):cg(y)=cg(y)+bg(y):pr(y)=pr(y)*1.15:ia(y)=ia(y)+1
|
||||
3530 ifx=1then?"{home}"r1$r2$"{down}"ia(y):rem find a better way to do this
|
||||
3540 ifx=2then?"{home}"r1$r2$"{down*5}"ia(y)
|
||||
3550 ifx=3then?"{home}"r1$r2$"{down*9}"ia(y)
|
||||
3560 ifx=4then?"{home}"r1$r2$"{down*13}"ia(y)
|
||||
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
|
||||
5010 tm=ms
|
||||
5020 gosub5500
|
||||
5030 goto5000
|
||||
|
||||
5500 gosub51000:rem clear screen
|
||||
5510 ?r1$"change name";
|
||||
5530 ?r1$"{$a3*22}{down}"
|
||||
5540 ?r1$"save";
|
||||
5560 ?r1$"{$a3*22}{down}"
|
||||
5570 ?r1$"load";
|
||||
5590 ?r1$"{$a3*22}{down}"
|
||||
5600 getk$:rem main loop
|
||||
5610 gosub 60000:rem adding routine
|
||||
5620
|
||||
|
||||
5700 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 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
|
||||
|
||||
52000 x=0:na$(x)="cursor"
|
||||
52001 bd$(x)="adds .1 cps"
|
||||
52002 bg(x)=.1
|
||||
52003 pr(x)=15
|
||||
52004 x=x+1:na$(x)="grandma"
|
||||
52005 bd$(x)="adds 1 cps"
|
||||
52006 bg(x)=1
|
||||
52007 pr(x)=100
|
||||
52008 x=x+1:na$(x)="farm"
|
||||
52009 bd$(x)="adds 8 cps"
|
||||
52010 bg(x)=8
|
||||
52011 pr(x)=1100
|
||||
52012 x=x+1:na$(x)="mine"
|
||||
52013 bd$(x)="adds 47 cps"
|
||||
52014 bg(x)=47
|
||||
52015 pr(x)=12000
|
||||
52016 x=x+1:na$(x)="factory"
|
||||
52017 bd$(x)="adds 260 cps"
|
||||
52018 bg(x)=260
|
||||
52019 pr(x)=130000
|
||||
52020 x=x+1:na$(x)="bank"
|
||||
52021 bd$(x)="adds 1400 cps"
|
||||
52022 bg(x)=1400
|
||||
52023 pr(x)=1400000
|
||||
52024 x=x+1:na$(x)="temple"
|
||||
52025 bd$(x)="adds 7800 cps"
|
||||
52026 bg(x)=7800
|
||||
52027 pr(x)=20000000
|
||||
52028 x=x+1:na$(x)="wizard tower"
|
||||
52029 bd$(x)="adds 44000 cps"
|
||||
52030 bg(x)=44000
|
||||
52031 pr(x)=330000000
|
||||
52032 x=x+1:na$(x)="shipment"
|
||||
52033 bd$(x)="adds 260000 cps"
|
||||
52034 bg(x)=260000
|
||||
52035 pr(x)=5100000000
|
||||
52036 x=x+1:na$(x)="alchemy lab"
|
||||
52037 bd$(x)="adds 1600000 cps"
|
||||
52038 bg(x)=1600000
|
||||
52039 pr(x)=75000000000
|
||||
52040 x=x+1:na$(x)="portal"
|
||||
52041 bd$(x)="adds 10 million cps"
|
||||
52042 bg(x)=10000000
|
||||
52043 pr(x)=1000000000000
|
||||
52044 x=x+1:na$(x)="time machine"
|
||||
52045 bd$(x)="adds 65 million cps"
|
||||
52046 bg(x)=65000000
|
||||
52047 pr(x)=14000000000000
|
||||
52048 x=x+1:na$(x)="antimatter condenser"
|
||||
52049 bd$(x)="adds 430 million cps"
|
||||
52050 bg(x)=430000000
|
||||
52051 pr(x)=170000000000000
|
||||
52052 x=x+1:na$(x)="prism"
|
||||
52053 bd$(x)="adds 2.9 billion cps"
|
||||
52054 bg(x)=2900000000
|
||||
52055 pr(x)=2100000000000000
|
||||
52056 x=x+1:na$(x)="chancemaker"
|
||||
52057 bd$(x)="adds 21 billion cps"
|
||||
52058 bg(x)=21000000000
|
||||
52059 pr(x)=26000000000000000
|
||||
52060 x=x+1:na$(x)="fractal engine"
|
||||
52061 bd$(x)="adds 150 billion cps"
|
||||
52062 bg(x)=150000000000
|
||||
52063 pr(x)=310000000000000000
|
||||
52064 x=x+1:na$(x)="ml monitor"
|
||||
52065 bd$(x)="adds 1.1 trillion cps"
|
||||
52066 bg(x)=1100000000000
|
||||
52067 pr(x)=71000000000000000000
|
||||
52068 x=x+1:na$(x)="idleverse"
|
||||
52069 bd$(x)="adds 8.3 trillion cps"
|
||||
52070 bg(x)=8300000000000
|
||||
52071 pr(x)=1.2e+22
|
||||
52072 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
|
||||
72
storedat.seq
Normal file
72
storedat.seq
Normal file
@ -0,0 +1,72 @@
|
||||
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
|
||||
Loading…
Reference in New Issue
Block a user