home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1986 September
/
64er_Magazin_86-09_1986_Markt__Technik_de.d64
/
demo
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
6KB
|
125 lines
10 rem *******************
20 rem * shrinksprite 64 *
30 rem * demo *
40 rem * written by *
50 rem * burkhard reike *
60 rem * in march '86 *
70 rem *******************
80 poke53280,0:poke53281,0
90 print"[147] bitte warten !":poke55,0:poke56,60
100 forx=0to318:reada:poke16064+x,a:next
110 clr:v=53248:ad=49152:forx=0to9:pokev+x,0:next:pokev+23,0:pokev+29,0
120 forx=0to4:s(x)=251+x:s1(x)=246+x:pokev+39+x,x+1:nextx
130 print"[147]":forx=0to3:pokev+2*x,45*x+100:nextx
140 forx=0to3:sysad,s(x),s1(x),10,10,x:pokev+21,peek(v+21)or2^x
150 fory=1to100:pokev+2*x+1,y:nexty
160 fory=9to0step-1:sysad,s(x),s1(x),y,y,x:nexty:nextx
170 print" fuer 'shrinksprite 64'"
180 print" taste druecken[146]"
190 fors=0to3:forx=1to23:sysad,s(s),s1(s),0,x,s:geta$:ifa$<>""then220
200 nextx:forx=23to0step-1:sysad,s(s),s1(s),0,x,s:geta$:ifa$<>""then220
210 nextx,s:goto190
220 forx=0to7:pokev+x,0:nextx:print"[147]"
230 printspc(12)"shrinksprite 64"
240 printspc(12)"***************"
250 print"shrinksprite 64 hat die faehigkeit,durcheinen sys-aufruf und para";
260 print"meteruebergabe einen sprite horizontal und vertikal zu stauchen";
270 print",wobei der urspruengliche spriteerhalten bleibt,da der gestauchte";
280 print" spritein einem neuen spriteblock abgelegt wird.das programm ";
290 print"kann auf wunsch den spritezeiger auf den neuen block setzen.":print
300 gosub1060:print"[147]":printspc(13)"die parameter[146]"
310 print"der aufruf der routine sieht folgendermassen aus:"
320 a$(1)="routine":a$(2)="sprite1":a$(3)="sprite2":a$(4)="vertikal"
330 a$(5)="horizontal":a$(6)="nummer"
340 print:print:q=7:gosub1070:gosub1060:print"[147]"
350 q=1:gosub1070
360 print"die adresse nach dem sysaufruf ist stetsder anfang der routine ";
370 print"'shrinksprite 64'":print:gosub1060:print"[147]":q=2:gosub1070
380 print"nach dem ersten komma kommt die nummer des spriteblocks,der ";
390 print"veraendert werden soll (0-255).":print:gosub1060:print"[147]":q=3
400 gosub1070:print"hiernach folgt die nummer des sprite- blocks";
410 print",in dem der veraenderte sprite ab-gelegt werden soll.dieser block";
420 print" darf mitdem ersten block identisch sein.":print:gosub1060
430 print"[147]":q=4:gosub1070:print"es folgen nun zwei parameter,die";
440 print" fuer das ausmass der stauchung verantwortlichsind.zuerst kommt ";
450 print"grad der vertikalen stauchung (0-20).":print:gosub1060:q=5:print"[147]"
460 gosub1070:print"dann der grad der horizontalen stauchung(0-23).zu den ";
470 print"parametern der stauchungengibt es spaeter noch weitere ausfuehrungen."
480 gosub1060:print"[147]":q=6:gosub1070
490 print"die spritenummer (0-7) bewirkt,dass der entsprechende zeiger auf ";
500 print"den spriteblockdes sprites,der veraendert werden soll, auf den neuen";
510 print" block geschaltet wird(bei 0 wuerde zum beispiel der zeiger 2040"
520 print"veraendert werden)."
530 print"ist die nummer groesser als 7,so wird diese umschaltung unterdrue";
540 print"ckt.":gosub1060
550 print"[147]veraendern sie nun mit hilfe der funktionstasten den sprite:"
560 print"f1[146] - der grad der vertikalen stauchung wird erhoeht (bis 20)"
570 print"f3[146] - der grad der vertikalen stauchung wird niedriger (bis 0)"
580 print"f5[146] - der grad der horizontalen stauchung wird erhoeht (bis 23)"
590 print"f7[146] - der grad der horizontalen stauchung wird niedriger (bis 0)"
600 print"return[146] - verlassen dieses programmteils"
610 pokev+8,170:pokev+9,180:poke2044,s(4):pokev+21,16:pokev+43,4
620 print"":a$="00":b$="00":a=0:b=0
630 print"[145] vertikal:"+a$+"[146] horizontal:"+b$+"[146]"
640 c$="":getc$:ifc$=""then640
650 ifasc(c$)=13then730
660 ifc$="[133]"thenifa<20thena=a+1
670 ifc$="[134]"thenifa>0thena=a-1
680 ifc$="[135]"thenifb<23thenb=b+1
690 ifc$="[136]"thenifb>0thenb=b-1
700 sysad,s(4),s1(4),a,b,4:a$=right$(str$(a),2):ifa<10thena$="0"+right$(a$,1)
710 b$=right$(str$(b),2):ifb<10thenb$="0"+right$(b$,1)
720 goto630
730 pokev+8,0:print"[147]mit shrinksprite 64 kann man also ohne grossen aufwand ";
740 print"einen sprite effektvoll veraendern:er veraendert seine groesse"
750 print"(seine entfernung),wird duenner oder dreht sich sogar."
760 print"durch die einfache und schnelle para- meteruebergabe kann jeder ";
770 print"anwender shrinksprite 64 in seinen eigenen pro- grammen verwe";
780 print"nden.":gosub1060:print"[147]wussten sie schon,wie die welt aus der"
790 print"sicht von pacman aussieht ?"
800 forx=1to4000:nextx
810 print"[147][183][183][183][183][183][183][183][183][183][183][183][183][208][205] [206][207][183][183][183][183][183][183][183][183][183][183][183]";
820 print" [170] [205] [206] [180]"
830 print" [170] [205] [206] [180]"
840 print" [170] [170] [206] [180]"
850 print" [170] [170][208][205] [206] [180]"
860 print" [170] [170][170] [205] [206] [180]"
870 print" [170] [170][170] [205] [206] [180]"
880 print" [170] [170][170] [170] [180] [180]"
890 print" [170] [170][170] [206] [205] [180]"
900 print" [170] [170][170] [206] [205] [180]"
910 print" [170] [170][186][206] [205] [180]"
920 print" [170] [170] [205] [180]"
930 print" [170] [206] [205] [180]"
940 print" [170] [206] [205] [180]"
950 print"[175][175][175][175][175][175][175][175][175][175][175][175][186][206] [205][204][175][175][175][175][175][175][175][175][175][175][175]":forx=1to800:nextx
960 sysad,s(4),s1(0),4,5,0:sysad,s(4),s1(4),10,10,4:pokev+8,175:pokev+9,140:a=0
970 forx=9to0step-1
980 a=a+1.3:sysad,s(4),s1(4),x,x,4:pokev+9,140+a:nextx:poke198,0
990 pokev+23,1:pokev+29,1:pokev,164:pokev+1,147
1000 pokev+39,4:pokev+21,1:poke198,0
1010 a=0:forx=3to0step-1:a=a+3:sysad,s(4),s1(0),x,x+1,0:poke198,0
1020 pokev+1,147+a:nextx:sysad,s(4),s1(0),0,0,0:x=0
1030 forq=1to25:sysad,s(4),s1(0),0,x,0:x=23-x:fory=1to50:nexty:nextq:print"[147]"
1040 goto110
1050 end
1060 printspc(17)"taste[146]":poke198,0:wait198,255:return
1070 forx=1to6:en$(x)="":an$(x)="":next:an$(q)="":en$(q)="[146]"
1080 print"sys ";:forx=1to6:print",";an$(x)a$(x)en$(x);:next:print:print:return
1090 data0,0,0,127,254,0,127,255,128,127,255,192,63,255,224,63,255,240,63,7
1100 data240,62,1,248,62,1,248,62,0,248,62,0,248,62,0,248,62,1,248,62,3,248
1110 data63,7,240,63,255,240,127,255,224,127,255,192,127,255,128,127,254,0,0
1120 data0,0,0,0,0,0,63,255,240,127,255,248,127,255,248,63,255,240,62,0,0,62
1130 data0,0,62,0,0,63,255,192,63,255,224,63,255,224,63,255,192,62,0,0,62,0
1140 data0,62,0,0,62,0,0,63,255,240,127,255,248,127,255,248,63,255,240,0,0,0
1150 data0,0,0,0,60,0,60,127,0,254,127,195,254,127,255,254,127,255,254,125,255
1160 data190,124,126,62,124,126,62,124,60,62,124,24,62,124,0,62,124,0,62,124
1170 data0,62,124,0,62,124,0,62,124,0,62,124,0,62,124,0,62,124,0,62,56,0,28
1180 data0,0,0,0,0,254,0,3,255,128,7,255,192,15,255,224,31,255,240,31,199,240
1190 data63,129,248,63,1,248,62,0,248,62,0,248,62,0,248,63,1,248,63,3,248,31
1200 data199,240,31,255,240,15,255,224,7,255,192,3,255,128,0,254,0,0,0,0,0,1
1210 data255,128,15,255,240,31,255,248,63,255,252,60,126,60,121,188,30,115
1220 data216,14,241,153,143,240,27,207,248,61,159,252,126,63,255,255,255,254
1230 data237,207,252,76,143,248,0,15,250,49,47,255,51,191,255,255,255
1240 data247,60,239,226,24,71,66,24,66