====================================
  M i n i B o i n g
====================================
   Title: MiniBoing
Platform: Commodore 16, Plus/4
  Author: Giuseppe Mignogna
Language: BASIC 3.5
Category: PUR-80
====================================

Intro
-------------------
This game has been written using CBM prg Studio 3.13.
It has been tested with the emulators Yape 1.1.7 and Plus4emu 1.2.9.2. Vice should be OK too, but I didn't try it.


How to run
-------------------
To run it, simply drag and drop the .d64 file into Yape -OR- attach it to drive 8, type DLOAD"*" and then type RUN. 


How to play
-------------------
To play, use the joystick in port 2. The goal of the game is to reach the end of a scrolling path, while controlling a bouncing ball. You can only increase or decrease the scrolling speed. If the ball hits a gap, you lose a life. The difficulty increases with the level.


Code
-------------------
1) Shortened code (80 characters max per line, tags like {white} represents a single special character):

0colO0,2,6:colO4,2:sC:char1,8,7,"{white}miniboing -joy2- wait...":vO8:t=5:r=t:v=10:l=1
1a$="M/M/M":s=220:y=10:a=0:r=rN(-l):fOx=0to238:d=x/22:ifd=int(d)tHa$=a$+cH(47+d)
2ifrN(1)>(0.2+l/10)tHa$=a$+cH(183+l):nE:sC:goS8:eLa$=a$+" ":nE:sC:goS8
3j=joy(2):ifj=3aNt<8tHt=t+1:r=r+1:eLifj=7aNt>0tHt=t-1:r=r-1
4ify=20tHifpE(3940)=32aNa>0tHv=v-1:y=21:chA,28,y,"Q":sO3,999,10:goS8:ifv=0tH9
5chA,28,y,"Q":chA,28,o," ":o=y:a=a+0.125:y=y+a:ify>20tHy=20:a=-a
6chA1,1,21,mI(a$,s,37):r=r-1:ifr<1tHs=s-1:r=t
7ifs>1tH3:eLl=l+1:chA1,24,7,"{yellow}ok! wait...":fOx=280to880stE100:sO1,x,4:nE:gO1
8chA,1,5,"{dark-blue}level:"+stR(l)+" - lives:"+stR(v)+" {black}":reT
9chA,28,o," ":chA,10,10,"{red}game over - press fire":ifjoy(2)<>128tH9:eLrU


2) Plain code:

0 color0,2,6:color4,2:scnclr:char1,8,7,"{white}miniboing -joy2- wait...":vol8:t=5:r=t:v=10:l=1
1 a$="M/M/M":s=220:y=10:a=0:r=rnd(-l):forx=0to238:d=x/22:ifd=int(d)thena$=a$+chr$(47+d)
2 ifrnd(1)>(0.2+l/10)thena$=a$+chr$(183+l):next:scnclr:gosub8:elsea$=a$+" ":next:scnclr:gosub8
3 j=joy(2):ifj=3andt<8thent=t+1:r=r+1:elseifj=7andt>0thent=t-1:r=r-1
4 ify=20thenifpeek(3940)=32anda>0thenv=v-1:y=21:char,28,y,"Q":sound3,999,10:gosub8:ifv=0then9
5 char,28,y,"Q":char,28,o," ":o=y:a=a+0.125:y=y+a:ify>20theny=20:a=-a
6 char1,1,21,mid$(a$,s,37):r=r-1:ifr<1thens=s-1:r=t
7 ifs>1then3:elsel=l+1:char1,24,7,"{yellow}ok! wait...":forx=280to880step100:sound1,x,4:next:goto1
8 char,1,5,"{dark-blue}level:"+str$(l)+" - lives:"+str$(v)+" {black}":return
9 char,28,o," ":char,10,10,"{red}game over - press fire":ifjoy(2)<>128then9:elserun


3) Code explanation
The code is quite easy. The only tricky part is the scrolling. It's obtained by pre-filling a long string with the simbols of the path (spaces, numbers and terrain characters). Then, to simulate the scrolling, only a small portion of the string is displayed by using the string function MID$ and the CHAR instruction.


-end-