'===========================================================================
' Subject: KUNG FAN ZU (1-ON-1 FIGHTER)       Date: 05-21-98 (14:00)       
'  Author: Volker Schmid                      Code: QB, QBasic, PDS        
'  Origin: hem.passagen.se/hedsen/          Packet: GAMES.ABC
'===========================================================================
	DECLARE SUB flashtitle (Xa!, Ya!, text$)
	DECLARE SUB hintergrund ()
	DECLARE SUB figur1 (f, a, alt)
	DECLARE SUB figur2 (f, a, alt)
	:
	DIM SHARED fig1%(1 TO 244), fig2%(1 TO 244)
	DIM SHARED fig3%(1 TO 244), fig4%(1 TO 244)
	DIM SHARED fig5%(1 TO 244), fig6%(1 TO 244)
	DIM SHARED eny1%(1 TO 244), eny2%(1 TO 244)
	DIM SHARED eny3%(1 TO 244), eny4%(1 TO 244)
	DIM SHARED eny5%(1 TO 244), eny6%(1 TO 244)
	DIM SHARED dummy%(1 TO 244)
	DIM SHARED mov(20)
	DIM SHARED f(19)
	DIM b2%(130)
	:
	REM %%% decrease this faktor to speed up the game %%%
	speed = 10000
	:
	FOR x = 1 TO 20
		READ mov(x)
	NEXT x
	REM %%%% JUMP HIGHT FOR SPECIAL JUMP %%%%%
	DATA -3,-6,-8,-10,-11,-12,-13,-13,-12,-11
	DATA -10,-9,-8,-7,-6,-5,-4,-3,-2,-1
	:
	GOSUB getsprites
	:
neuesgame:
	GOSUB menu: REM %%%%%%%% JUMP TO MENU %%%%%%%%%%%%%%
	CLS
	REM %%%%%%%%%%%%%%%%%%%% ask for names %%%%%%%%%%%%%%%%%%%%%%
	IF comp = 2 THEN GOTO noname
	COLOR 10
	LOCATE 11, 24: PRINT n1$
	LOCATE 11, 10
	COLOR 15
	INPUT "Name Player 1:", a$: IF a$ <> "" THEN n1$ = a$
	IF comp = 1 THEN GOTO noname
	COLOR 10
	LOCATE 13, 24: PRINT n2$
	LOCATE 13, 10
	COLOR 15
	INPUT "Name Player 2:", a$: IF a$ <> "" THEN n2$ = a$
noname:
	:
	f1 = 120: f2 = 200: REM start positions in x
	a1 = 1: a2 = 1
	altf1 = f1 + 1: altf2 = f2 + 1
	flen = 6: REM lenght of fist kick
	klen = 30: REM lenght of feet kick
	energyl = 100: energyr = 100: REM start energy must be 100
	azl = 0: azr = 0
	:
	:
	RANDOMIZE TIMER
	CLS
	CALL hintergrund: REM draw background
	COLOR 15
	LOCATE 4, 2: PRINT n1$: REM print players names
	LOCATE 4, 27: PRINT n2$
	GOSUB malstat: REM draw energylevels
	FOR x = 1 TO 5: a$ = INKEY$: NEXT x: REM delete keystrokes
	CALL flashtitle(16, 11, "LETS FIGHT")
	GOTO einstieg
	:
	REM %%%%%%%%%%%%%%%%%%%% MAIN PART %%%%%%%%%%%%%%%%%%%%%%%%%
spiele:
	WAIT &H3DA, 8: REM reduces flicker by waiting for raster-ray
	CALL figur1(altf1, alta1, altaddl): REM delete left fighter
	CALL figur2(altf2, alta2, altaddr): REM delete right fighter
einstieg:
	CALL figur1(f1, a1, yaddl): REM draw left fighter
	CALL figur2(f2, a2, yaddr): REM draw right fighter
	altf1 = f1: altf2 = f2
	alta1 = a1: alta2 = a2: REM      > save coordinates to delete
	altaddr = yaddr: altaddl = yaddl
	:
nixdraw:
	GOSUB keys: REM show for keys
	GOSUB fight: REM the fightroutine
	IF energyl < 1 OR energyr < 1 THEN GOTO ende: REM someone ko?
	GOTO spiele
	:
	REM %%%%%%%%%%%%%%%%%%%%%% check keys %%%%%%%%%%%%%%%%%%%%%%%%%
keys:
	a$ = INKEY$
	IF a$ = "m" THEN IF music = 1 THEN music = 0 ELSE music = 1
	IF a$ = CHR$(27) THEN GOTO neuesgame
	:
	REM %%%%%%%%%%%%%%% fighter left %%%%%%%%%%%%%%%%%%%
	IF comp = 2 THEN a$ = "": GOSUB computer2: REM fighter left computer
	IF a$ = "a" THEN f1 = f1 - 2: a1 = a1 + 1: IF a1 = 4 THEN a1 = 1
	IF a$ = "d" AND f1 < f2 - 6 THEN f1 = f1 + 2: a1 = a1 - 1: IF a1 = 0 THEN a1 = 3
	IF a$ = "s" AND lk = 0 THEN lk = 1: IF music = 1 THEN SOUND 80, .5
	IF a$ = "w" AND lf = 0 THEN lf = 1: IF music = 1 THEN SOUND 120, .5
	IF a$ = "e" AND sml = 0 AND RND < .2 AND azl < 3 THEN sml = 1: azl = azl + 1: IF music = 1 THEN SOUND 180, .5
	IF a$ = "x" AND dfl = 0 THEN dfl = 1: IF music = 1 THEN SOUND 120, .5
	IF a$ = "e" THEN GOSUB malstat: REM same again
	:
	REM %%%%%%%%%%%%%%%%%%%%%%% fighter right %%%%%%%%%%%%%%%%%%%%%%%
	REM %%%    maybe your keypad is not german, you can change    %%%
	REM %%% the keys here in the next lines for the right fighter %%%
	REM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	IF comp > 0 THEN a$ = "": GOSUB computer: REM fighter right computer
	IF a$ = "l" AND f2 > f1 + 6 THEN f2 = f2 - 2: a2 = a2 - 1: IF a2 = 0 THEN a2 = 3
	IF a$ = "„" THEN f2 = f2 + 2: a2 = a2 + 1: IF a2 = 4 THEN a2 = 1
	IF a$ = "”" AND rk = 0 THEN rk = 1: IF music = 1 THEN SOUND 80, .5
	IF a$ = "p" AND rf = 0 THEN rf = 1: IF music = 1 THEN SOUND 120, .5
	IF a$ = "o" AND smr = 0 AND RND < .2 AND azr < 3 THEN smr = 1: azr = azr + 1: IF music = 1 THEN SOUND 180, .5
	IF a$ = "." AND dfr = 0 THEN dfr = 1: IF music = 1 THEN SOUND 120, .5
	IF a$ = "o" THEN GOSUB malstat: REM same again
	:
	IF f2 > 300 THEN f2 = 300: REM dont go too far
	IF f2 < f1 + 5 AND smr > 0 THEN f2 = f2 + 1: REM dont stand behind the other
	IF f1 > f2 - 5 AND sml > 0 THEN f1 = f1 - 1: REM     "
	IF f1 < 1 THEN f1 = 1: REM dont go too far
	RETURN
	:
fight:
	REM %%%%%%%%%%%%%%%% check if there is fight action %%%%%%%%%%%%%%%%%%%
	IF lk > 0 THEN a1 = 4: lk = lk + 1: IF lk > klen THEN lk = 0: a1 = 2
	IF rk > 0 THEN a2 = 4: rk = rk + 1: IF rk > klen THEN rk = 0: a2 = 2
	IF lf > 0 THEN a1 = 5: lf = lf + 1: IF lf > flen THEN lf = 0: a1 = 1
	IF rf > 0 THEN a2 = 5: rf = rf + 1: IF rf > flen THEN rf = 0: a2 = 1
	IF sml > 0 THEN a1 = 4: sml = sml + 1: yaddl = mov(sml): f1 = f1 + .5: IF sml = 20 THEN sml = 0: a1 = 1: yaddl = 0: IF f1 > f2 - 10 THEN energyr = energyr - 15: Xa = f2: GOSUB blut: GOSUB malstat
	IF smr > 0 THEN a2 = 4: smr = smr + 1: yaddr = mov(21 - smr): : f2 = f2 - .5: IF smr = 20 THEN smr = 0: a2 = 1: yaddr = 0: IF f2 < f1 + 10 THEN energyl = energyl - 15: Xa = f1: GOSUB blut: GOSUB malstat
	IF dfl > 0 THEN a1 = 6: dfl = dfl + 1: IF dfl > klen THEN dfl = 0: a1 = 1
	IF dfr > 0 THEN a2 = 6: dfr = dfr + 1: IF dfr > klen THEN dfr = 0: a2 = 1
	IF dfl > 0 AND dfl < 4 THEN f1 = f1 + 1
	IF dfr > 0 AND dfr < 4 THEN f2 = f2 - 1
	:
	IF lf = 0 AND rf = 0 AND lk = 0 AND rk = 0 AND dfl = 0 AND dfr = 0 THEN RETURN
	kt = CINT((klen / 2) + (klen / 4))
	ft = CINT(flen / 2)
	IF kt = lk OR dfl = kt THEN GOSUB testlk: GOSUB malstat
	IF kt = rk OR dfr = kt THEN GOSUB testrk: GOSUB malstat
	IF ft = lf THEN GOSUB testlf: GOSUB malstat
	IF ft = rf THEN GOSUB testrf: GOSUB malstat
	RETURN
	:
testlk:
	IF f2 - f1 < 12 AND f2 - f1 > 8 THEN tr = 1: trl = 1:  ELSE tr = 0: trl = 0
	IF tr = 1 THEN energyr = energyr - 10: f2 = f2 + 2: IF f2 > 300 THEN f2 = 300
	RETURN
	:
testrk:
	IF f2 - f1 < 12 AND f2 - f1 > 8 THEN tr = 1: trr = 1:  ELSE tr = 0: trr = 0
	IF tr = 1 THEN energyl = energyl - 10: f1 = f1 - 2: IF f1 < 1 THEN f1 = 1
	RETURN
	:
testlf:
	IF f2 - f1 < 10 AND f2 - f1 > 7 THEN tr = 1: trl = 1:  ELSE tr = 0: trl = 0
	IF tr = 1 THEN energyr = energyr - 5: f2 = f2 + 1: IF f2 > 300 THEN f2 = 300
	RETURN
	:
testrf:
	IF f2 - f1 < 10 AND f2 - f1 > 7 THEN tr = 1: trr = 1:  ELSE tr = 0: trr = 0
	IF tr = 1 THEN energyl = energyl - 5: f1 = f1 - 1: IF f1 < 1 THEN f1 = 1
	RETURN
	:
malstat:
	REM %%%%%%%%%%%%%%%%%%%%%%% DRAW ENERGYLEVELS %%%%%%%%%%%%%%%%%%%%%%
	COLOR 15
	LINE (10, 10)-(112, 20), 4, BF
	LINE (10, 10)-(112, 20), 15, B
	LINE (11, 11)-(11 + energyl, 19), 14, BF
	LOCATE 1, 9: PRINT energyl; "% "
	LOCATE 1, 1: PRINT 3 - azl; "S"
	:
	LINE (208, 10)-(310, 20), 4, BF
	LINE (208, 10)-(310, 20), 15, B
	LINE (209, 11)-(209 + energyr, 19), 14, BF
	LOCATE 1, 27: PRINT energyr; "% "
	LOCATE 1, 35: PRINT 3 - azr; "S"
	:
	IF trl = 1 THEN Xa = f2: GOSUB blut: trl = 0
	IF trr = 1 THEN Xa = f1: GOSUB blut: trr = 0
	RETURN
	:
blut:
	REM %%%%%%%%%%%%%%%%%%% DRAW BLOOD %%%%%%%%%%%%%%%%%%%%%%%%%%%
	GET (Xa, 80)-(Xa + 19, 99), dummy%: REM save the graphics
	Xa = Xa + 10: Ya = 86
	FOR b = 1 TO 5: CIRCLE (Xa, Ya), b, 4: NEXT b: REM draw blood
	IF music = 1 THEN SOUND 50, 1
	FOR b = 1 TO speed * 2: NEXT b
	PUT (Xa - 10, 80), dummy%, PSET: REM restore th graphics
	xblut = Xa: yblut = 86
	RETURN
	:
	REM %%%%%%%%%%%%%%%%%%%%% END PART %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ende:
	FOR x = 1 TO 30 STEP .01
		CIRCLE (xblut, yblut), x, 4
	NEXT x
	GOSUB melter
	FOR x = 2 TO 198 STEP 2
		FOR t = 1 TO 1000: NEXT t
		LINE (1, x)-(320, x), 0
		LINE (1, 199 - x)-(320, 199 - x), 0
	NEXT x
	CLS
	COLOR 14
	IF music = 0 THEN GOTO nixmus3
	FOR x = 1600 TO 100 STEP -200
		SOUND x, .8
		SOUND x + 100, .81
	NEXT x
nixmus3:
	IF energyl < 1 THEN CALL flashtitle(14, 11, n2$ + " WINS!"): CALL flashtitle(14, 11, n2$ + " WINS!")
	IF energyr < 1 THEN CALL flashtitle(14, 11, n1$ + " WINS!"): CALL flashtitle(14, 11, n1$ + " WINS!")
	CLS
	IF comp = 1 AND energyr < 1 THEN CALL flashtitle(16, 11, "NEXT ROUND"): GOTO noname
	IF comp = 0 THEN CALL flashtitle(17, 11, "REVENGE"): GOTO noname
	GOTO neuesgame
	:
computer:
	REM %%%%%%%%%%%%%%%%%% RIGHT COMPUTER %%%%%%%%%%%%%%%%%%%%%%%%%%%
	IF f2 < f1 + 20 AND RND < .03 THEN a$ = "”"
	IF f2 < f1 + 20 AND RND < .01 THEN a$ = "."
	IF f2 < f1 + 20 AND RND < .05 THEN a$ = "p"
	IF f2 < f1 + 20 AND f2 > f1 + 15 AND RND < .05 THEN a$ = "o"
	:
	IF f2 > f1 + 8 AND RND < .08 THEN a$ = "l"
	IF f2 < f1 + 20 AND RND < .05 THEN a$ = "„"
	FOR x = 1 TO speed / 20: NEXT x
	RETURN
	REM %%%%%%%%%%%%%%%%%% LEFT COMPUTER %%%%%%%%%%%%%%%%%%%%%%%%%%%
computer2:
	IF f2 < f1 + 20 AND RND < .03 THEN a$ = "s"
	IF f2 < f1 + 20 AND RND < .01 THEN a$ = "x"
	IF f2 < f1 + 20 AND RND < .05 THEN a$ = "w"
	IF f2 < f1 + 20 AND f2 > f1 + 15 AND RND < .05 THEN a$ = "e"
	:
	IF f2 > f1 + 8 AND RND < .08 THEN a$ = "d"
	IF f2 < f1 + 20 AND RND < .05 THEN a$ = "a"
	FOR x = 1 TO speed / 20: NEXT x
	RETURN
	:
	REM %%%%%%%%%%%%%%%%%%%%%%% START MENU %%%%%%%%%%%%%%%%%%%%%%%%%%%%
menu:
	SCREEN 7
	FOR x = 1 TO 30: a$ = INKEY$: NEXT x: REM delete keystrokes
backmenu:
	COLOR 15, 0: CLS
	FOR x = 1 TO 300 STEP 40
		FOR y = 1 TO 180 STEP 40
			IF RND < .5 THEN CALL figur1(x, CINT(5 * RND(1)) + 1, y - 80) ELSE CALL figur2(x, CINT(5 * RND(1)) + 1, y - 80)
		NEXT y
	NEXT x
	:
	LOCATE 4, 13: PRINT " KUNG FAN ZU "
	COLOR 13
	LOCATE 5, 13: PRINT "~~~~~~~~~~~~~"
	:
	COLOR 10
	LOCATE 9, 10: PRINT " F1  = 1 Player Game  "
	LOCATE 10, 10: PRINT " F2  = 2 Player Game  "
	LOCATE 11, 10: PRINT " F3  = 0 Player Game "
	LOCATE 12, 10: PRINT " F4  = SFX: "; : IF music = 1 THEN PRINT "on      " ELSE PRINT "off     "
	LOCATE 13, 10: PRINT " F5  = Help          "
	LOCATE 14, 10: PRINT " ESC = Quit          "
	LOCATE 15, 10: PRINT "                     "
	COLOR 11
	LOCATE 19, 3: PRINT "(W) & (C) in 1997 by Volker Schmid"
	:
nixda:
	SLEEP 25
	a$ = INKEY$: IF a$ = "" THEN GOSUB melter: a$ = CHR$(0) + "="
	IF a$ = "" THEN GOTO nixda
	IF a$ = CHR$(0) + ";" THEN comp = 1: n2$ = "Computer": RETURN
	IF a$ = CHR$(0) + "<" THEN comp = 0: RETURN
	IF a$ = CHR$(0) + "=" THEN comp = 2: n1$ = "Computer": n2$ = n1$: RETURN
	IF a$ = CHR$(0) + ">" AND music = 1 THEN music = 0: LOCATE 12, 22: PRINT "off": GOTO nixda
	IF a$ = CHR$(0) + ">" AND music = 0 THEN music = 1: LOCATE 12, 22: PRINT "on ": GOTO nixda
	IF a$ = CHR$(0) + "?" THEN GOTO help
	IF a$ = CHR$(27) THEN CLS : END
	GOTO nixda
	:
help:
	COLOR 15, 0
	CLS
	PRINT : PRINT
	PRINT "       Player 1          Player 2       "
	COLOR 11
	PRINT "________________________________________"
	COLOR 15
	PRINT
	PRINT "     d = right         „ = right  "
	PRINT "     a = left          l = left   "
	PRINT "     s = kick          ” = kick   "
	PRINT "     w = fist          p = fist   "
	PRINT "     e = special 3x    o = special 3x"
	PRINT "     x = low           . = low    "
	COLOR 11
	PRINT "________________________________________"
	PRINT
	COLOR 12
	PRINT " maybe you have to change keys in code"
	PRINT " to play in other countrys. I hope not."
	PRINT
	COLOR 10
	PRINT "   Written and copyright in 1997 by:"
	COLOR 9
	PRINT "           Volker Schmid"
	PRINT "           Waldshuterstraáe 8"
	PRINT "           78176 Blumberg"
	COLOR 15
	PRINT
	PRINT " If you use one of my routines, please"
	PRINT " be fair and name me!"
	SLEEP 30: a$ = INKEY$
	GOTO backmenu
	:
melter:
	FOR x = 1 TO 50: a$ = INKEY$: NEXT x
	block = 20: REM   max 20
	xmitte = (320 - block) / 2
	ymitte = (200 - block) / 2
	xrange = 320 - block * 1.3
	yrange = 199 - block * 1.3
	r = 0
lop1:
	r = r + 1
	Xa = INT(RND(1) * xrange) + block * .1
	Ya = INT(RND(1) * yrange) + block * .1
	GET (Xa, Ya)-(Xa + block, Ya + block), b2%
	xadd = (xmitte - Xa) / 150: yadd = (ymitte - Ya) / 150
	xadd = RND(1) - .5 + xadd: yadd = RND(1) - .5 + yadd
	PUT (Xa + xadd, Ya + yadd), b2%, PSET
	IF r < 10000 AND INKEY$ = "" THEN GOTO lop1
	RETURN
	:
getsprites:
	REM You can change the shape of the objects by using an editor like
	REM my SPRITEED. If you want it, you can reach me in Germany under
	REM       Volker Schmid   Waldshuterstraáe 8   78176 Blumberg
	REM
	REM have fun...
	:
	RESTORE fig1data
	FOR sprite = 1 TO 244
		READ fig1%(sprite)
	NEXT sprite
	:
fig1data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24576, 0, 96, 8192, 0, 0,-12276
	DATA  3072, 240, 4, 1024, 0,-4084, 2048, 240, 14, 512, 0, 24590, 1024, 96,-2041, 256, 152,-2041, 512, 96,-1021, 0, 4,-1021
	DATA  0, 248,-512, 0, 2,-512, 0, 116,-2560, 0, 0,-2304, 0, 115,-4096, 0, 0,-3328, 0, 115, 0, 0, 240,-4096
	DATA  0, 0,-4096, 0, 16, 4096, 0, 96,-2047, 0, 8, 2048, 0, 240,-1023, 0, 68, 17408, 0, 136,-9215, 0, 68, 17408
	DATA  0, 136,-29181, 0, 130,-32256, 256, 4,-29181, 0, 130,-32256, 256, 4, 1799, 256, 1, 257, 512, 2, 0, 0, 0, 0
	DATA  1792, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RESTORE fig2data
	FOR sprite = 1 TO 244
		READ fig2%(sprite)
	NEXT sprite
	:
fig2data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24576, 0, 96, 8192, 0, 0,-12276
	DATA  3072, 240, 4, 1024, 0,-4084, 2048, 240, 14, 512, 0, 24590, 1024, 96,-2041, 256, 152,-2041, 512, 96,-1021, 0, 4,-1021
	DATA  0, 248,-512, 0, 2,-512, 0, 116,-2560, 0, 0,-2304, 0, 115,-4096, 0, 0,-3328, 0, 115, 0, 0, 240,-4096
	DATA  0, 0,-4096, 0, 16, 4096, 0, 96,-2048, 0, 8, 2048, 0, 112,-1024, 0, 36, 9216, 0, 72,-1024, 0, 32, 8192
	DATA  0, 76,-1023, 0, 36, 9216, 0, 200,-10239, 0, 72, 18432, 0, 176,-16383, 0, 64, 16384, 0, 144, 0, 0, 0, 0
	DATA  256, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RESTORE fig3data
	FOR sprite = 1 TO 244
		READ fig3%(sprite)
	NEXT sprite
	:
fig3data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24576, 0, 96, 8192, 0, 32,-12276
	DATA  3072, 208, 4, 1024, 0,-4084, 2048, 240, 14, 512, 0, 24590, 1024, 96,-2041, 256, 152,-2041, 512, 96,-1021, 0, 4,-1021
	DATA  0, 248,-512, 0, 2,-512, 0, 116,-2560, 0, 0,-2304, 0, 115,-4096, 0, 0,-3328, 0, 115, 0, 0, 240,-4096
	DATA  0, 0,-4096, 0, 16, 4096, 0, 96,-2048, 0, 8, 2048, 0, 112,-1024, 0, 36, 9216, 0, 72,-1024, 0, 36, 9216
	DATA  0, 72,-4608, 0, 34, 8704, 0, 68,-4608, 0, 34, 8704, 0, 68,-6400, 0, 33, 8448, 0, 66, 0, 0, 0, 0
	DATA  0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RESTORE fig4data
	FOR sprite = 1 TO 244
		READ fig4%(sprite)
	NEXT sprite
	:
fig4data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24576, 0, 96, 8192, 0, 0,-12288
	DATA  0, 240, 0, 128,-32768,-4096, 224, 24816, 768, 128, 3, 25368, 6368,-8096,-249, 1920, 156,-225, 6272, 99,-241, 0, 0,-241
	DATA  1792, 4348,-1017, 0, 0,-1017, 0, 4208,-4096, 96, 24592,-4096, 96, 4192,-3328, 240,-32749,-3328, 128, 24672, 3840, 224, 252,-1024
	DATA  0,-32765,-256, 128, 0, 0, 0, 124,-1024, 0, 0, 0, 0, 120,-2048, 0, 32, 8192, 0, 64,-8192, 0, 32, 8192
	DATA  0, 64,-8192, 0, 32, 8192, 0, 64,-8192, 0, 32, 8192, 0, 64,-8192, 0, 32, 8192, 0, 64, 0, 0, 0, 0
	DATA  256, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RESTORE fig5data
	FOR sprite = 1 TO 244
		READ fig5%(sprite)
	NEXT sprite
	:
fig5data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24576, 0, 96, 8192, 0, 0,-12282
	DATA  1536, 240, 5, 256, 0,-4089, 512, 240, 775, 384,-32765, 25351, 736, 24672,-249, 128, 156,-249, 992,-8093,-253, 192, 0,-253
	DATA  192, 252,-1024, 0, 0,-1024, 0, 112,-4096, 0, 0,-4096, 0, 112,-4096, 0, 0,-4096, 0, 112, 0, 0, 240,-4096
	DATA  0, 0,-4096, 0, 16, 4096, 0, 96,-2047, 0, 8, 2048, 0, 240,-1023, 0, 68, 17408, 0, 136,-9215, 0, 68, 17408
	DATA  0, 136,-29181, 0, 130,-32256, 256, 4,-29181, 0, 130,-32256, 256, 4, 1799, 256, 1, 257, 512, 2, 0, 0, 0, 0
	DATA  1792, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RESTORE fig6data
	FOR sprite = 1 TO 244
		READ fig6%(sprite)
	NEXT sprite
	:
fig6data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24576, 0, 96, 8192, 0, 0,-12288, 0, 240, 0, 0, 0,-4096
	DATA  0, 240, 0, 0, 0, 24576, 0, 96,-256, 0, 31,-256, 192,-16288,-255, 0, 0,-255, 192,-16257,-253, 0, 16,-253
	DATA  256, 96,-4095, 0, 16,-4095, 0, 96,-4096, 0, 16,-4096, 0, 96, 0, 0, 240,-4096, 0, 0,-511, 256, 14, 3585
	DATA  256, 254,-253, 512, 1, 258, 768, 255,-241, 3072, 1, 268, 7936, 7, 1807, 0, 1, 256, 7680, 3, 6, 0, 0, 0
	DATA  2048, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RESTORE eny1data
	FOR sprite = 1 TO 244
		READ eny1%(sprite)
	NEXT sprite
	:
eny1data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 96, 24576, 0, 0, 0, 0, 16, 28672, 0, 96, 16384, 0, 8,-17664
	DATA  0, 243, 512, 0, 10,-1280, 0, 241, 1024, 0, 15, 27648, 0, 98,-26623, 256, 254,-26623, 0, 100, 2, 768, 252, 2
	DATA  256, 240, 4, 1792, 240, 4, 512, 224, 0, 1536, 240, 8, 3072, 224, 0, 0, 240, 12, 3072, 224, 0, 0, 0, 0
	DATA  0, 240,-4096, 0, 128,-32768, 0, 96,-2047, 256, 0, 1, 0, 240,-2045, 512, 32, 8194, 256, 16,-18429, 512, 32, 8194
	DATA  256, 16, 7175, 1024, 16, 4100, 512, 8, 7175, 1024, 16, 4100, 512, 8, 3598, 2048, 8, 2056, 1024, 4, 0, 0, 0, 0
	DATA  3584, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RESTORE eny2data
	FOR sprite = 1 TO 244
		READ eny2%(sprite)
	NEXT sprite
	:
eny2data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 96, 24576, 0, 0, 0, 0, 16, 28672, 0, 96, 16384, 0, 8,-17664
	DATA  0, 243, 512, 0, 10,-1280, 0, 241, 1024, 0, 15, 27648, 0, 98,-26623, 256, 254,-26623, 0, 100, 2, 768, 252, 2
	DATA  256, 240, 4, 1792, 240, 4, 512, 224, 0, 1536, 240, 8, 3072, 224, 0, 0, 240, 12, 3072, 224, 0, 0, 0, 0
	DATA  0, 240,-4096, 0, 128,-32768, 0, 96,-4095, 256, 0, 1, 0, 224,-4093, 512, 64, 16386, 256, 32,-4093, 0, 64, 16384
	DATA  768, 32,-2045, 512, 64, 16386, 256, 48,-18431, 256, 32, 8193, 0, 208, 14336, 0, 32, 8192, 0, 144, 0, 0, 0, 0
	DATA  0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RESTORE eny3data
	FOR sprite = 1 TO 244
		READ eny3%(sprite)
	NEXT sprite
	:
eny3data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 96, 24576, 0, 0, 0, 0, 16, 28672, 0, 96, 16384, 0, 72,-17664
	DATA  0, 179, 512, 0, 10,-1280, 0, 241, 1024, 0, 15, 27648, 0, 98,-26623, 256, 254,-26623, 0, 100, 2, 768, 252, 2
	DATA  256, 240, 4, 1792, 240, 4, 512, 224, 0, 1536, 240, 8, 3072, 224, 0, 0, 240, 12, 3072, 224, 0, 0, 0, 0
	DATA  0, 240,-4096, 0, 128,-32768, 0, 96,-4095, 256, 0, 1, 0, 224,-4093, 512, 64, 16386, 256, 32,-4093, 512, 64, 16386
	DATA  256, 32, 28679, 1024, 64, 16388, 512, 32, 28679, 1024, 64, 16388, 512, 32, 28686, 2048, 64, 16392, 1024, 32, 0, 0, 0, 0
	DATA  3584, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RESTORE eny4data
	FOR sprite = 1 TO 244
		READ eny4%(sprite)
	NEXT sprite
	:
eny4data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 96, 24576, 0, 0, 0, 0, 16, 28672, 0, 96, 16384, 0, 8,-18432
	DATA  0, 240, 16, 4096, 8,-1936, 24576, 240, 12, 7168, 8, 26988, 28800,-32671,-25085, 7936, 254,-24829, 3200,-32671, 0, 3840, 255, 0
	DATA -32000, 254, 0, 768, 254, 0,-32768, 224,-32672, 24576, 240,-32672,-32768, 96,-32516, 7168, 240,-32740, 24576, 96, 127, 768, 0, 3
	DATA  7168, 240,-4065, 0, 0, 0, 768, 224,-4093, 0, 0, 0, 256, 224,-4095, 0, 64, 16384, 0, 32, 28672, 0, 64, 16384
	DATA  0, 32, 28672, 0, 64, 16384, 0, 32, 28672, 0, 64, 16384, 0, 32, 28672, 0, 64, 16384, 0, 32, 0, 0, 0, 0
	DATA  0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RESTORE eny5data
	FOR sprite = 1 TO 244
		READ eny5%(sprite)
	NEXT sprite
	:
eny5data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 96, 24576, 0, 0, 0, 0, 16, 28672, 0, 96, 16384, 0, 0,-18944
	DATA  0, 246, 2048, 0, 10,-1024, 0, 244, 2076, 7168, 14, 26748, 24576, 100,-28669, 7936, 254,-28573, 31744, 108, 0, 16128, 252, 0
	DATA  768, 240, 0, 768, 240, 0, 0, 224, 0, 0, 240, 0, 0, 224, 0, 0, 240, 0, 0, 224, 0, 0, 0, 0
	DATA  0, 240,-4096, 0, 128,-32768, 0, 96,-2047, 256, 0, 1, 0, 240,-2045, 512, 32, 8194, 256, 16,-18429, 512, 32, 8194
	DATA  256, 16, 7175, 1024, 16, 4100, 512, 8, 7175, 1024, 16, 4100, 512, 8, 3598, 2048, 8, 2056, 1024, 4, 0, 0, 0, 0
	DATA  3584, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RESTORE eny6data
	FOR sprite = 1 TO 244
		READ eny6%(sprite)
	NEXT sprite
	:
eny6data:
	DATA  20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 96, 24576, 0, 0, 0, 0, 16, 28672, 0, 96, 16384, 0, 8,-18432, 0, 240, 0, 0, 8,-2048
	DATA  0, 240, 0, 0, 8, 26624, 0, 96,-32753, 3840, 240,-32705, 12288, 96, 0, 3840, 248, 48, 16128, 224,-32768, 3840, 252,-32768
	DATA  0, 104,-32768, 0, 248,-32768, 0, 96,-32768, 0, 240,-32768, 0, 96, 0, 0, 0, 0, 0, 240,-2041, 1792, 8, 2055
	DATA  1792, 248,-1009, 2048, 4, 1032, 3840, 252,-241, 2048, 3, 776, 3584,-32753, 3854, 2048, 0, 8, 3072,-32761, 1536, 0, 0, 0
	DATA  3584, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	DATA  0, 0, 0, 0
	:
	RETURN

SUB figur1 (f, a, add)
	ON a GOTO l1, l2, l3, l4, l5, l6
	GOTO endesub1
	:
l1:
	PUT (f, 80 + add), fig1%
	GOTO endesub1
l2:
	PUT (f, 80 + add), fig2%
	GOTO endesub1
l3:
	PUT (f, 80 + add), fig3%
	GOTO endesub1
l4:
	PUT (f, 80 + add), fig4%
	GOTO endesub1
l5:
	PUT (f, 80 + add), fig5%
	GOTO endesub1
l6:
	PUT (f, 80 + add), fig6%
	GOTO endesub1

endesub1:
END SUB

SUB figur2 (f, a, add)
	ON a GOTO r1, r2, r3, r4, r5, r6
	GOTO endesub2
	:
r1:
	PUT (f, 80 + add), eny1%
	GOTO endesub2
r2:
	PUT (f, 80 + add), eny2%
	GOTO endesub2
r3:                 
	PUT (f, 80 + add), eny3%
	GOTO endesub2
r4:
	PUT (f, 80 + add), eny4%
	GOTO endesub2
r5:
	PUT (f, 80 + add), eny5%
	GOTO endesub2
r6:
	PUT (f, 80 + add), eny6%
	GOTO endesub2

endesub2:
END SUB

SUB flashtitle (Xa, Ya, text$)
	SHARED speed
	t = 0
	f(1) = 0: f(2) = 1: f(3) = 9: f(4) = 3: f(5) = 11: f(6) = 15: f(7) = 14: f(8) = 12: f(9) = 4: f(10) = 0
flash:
	t = t + 1
	COLOR f(t)
	LOCATE Ya, Xa: PRINT text$
	FOR u = 1 TO speed * 2: NEXT u: REM waiting
	IF t = 6 THEN FOR u = 1 TO speed * 4: NEXT u
	IF t < 10 THEN GOTO flash
END SUB

SUB hintergrund
	LINE (1, 100)-(320, 200), 2, BF
	FOR x = 0 TO 90 STEP 1.5
		wi = 3.1415 / 180 * x
		LINE (1, 102 + SIN(wi) * 98)-(320, 102 + SIN(wi) * 98), 0
	NEXT x
	LINE (1, 100)-(320, 100), 10
	FOR x = 1 TO 100
		Xa = INT(319 * RND(1)) + 1
		Ya = INT(79 * RND(1)) + 1
		PSET (Xa, Ya), 8
	NEXT x
	FOR x = 1 TO 50
		Xa = INT(319 * RND(1)) + 1
		Ya = INT(49 * RND(1)) + 1
		PSET (Xa, Ya), 8
	NEXT x
	FOR x = 1 TO 50
		Xa = INT(319 * RND(1)) + 1
		Ya = INT(29 * RND(1)) + 1
		PSET (Xa, Ya), 8
	NEXT x
END SUB
