home *** CD-ROM | disk | FTP | other *** search
/ Compute! Gazette 1993 August / 1993-08.d64 / 32sprites (.txt) < prev    next >
Commodore BASIC  |  2022-09-20  |  7KB  |  203 lines

  1. 100 rem copyright 1993 - compute publications - all rights reserved
  2. 110 rem written by bill soudan
  3. 120 rem
  4. 130 poke53281,0:poke53280,0:print"[147]":zp=191
  5. 140 print"[159][147][165][159]              32 [211][208][210][201][212][197][211]"
  6. 150 poke1063,103:poke55335,6
  7. 160 print"[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][157][148][163]"
  8. 170 print:printtab(15)"[150][205]ain [205]enu"
  9. 180 print:dim p$(12),p(12,1),h$(16)
  10. 190 x$="0123456789abcdef"
  11. 200 forj=1to16:h$(j-1)=mid$(x$,j,1):next
  12. 210 forj=0to12:readp$(j):next
  13. 220 data "[211]tarting [193]ddress","[217] position","[216] position","[200]igh [216] bit"
  14. 230 data "[216] expand","[195]olor","[205]ulticolor","[208]riority","[208]ointer"
  15. 240 data "[212]emp page","[207]rder table","[197]xtra [217] table","[205]ax # of [205][207][194]s"
  16. 250 forj=0to12:read p(j,0),p(j,1):next
  17. 260 data 3,49152,3,52992,1,53024
  18. 270 data 1,53056,2,53088,1,53120
  19. 280 data 2,53152,2,53184,1,53216
  20. 290 data 3,52736,3,52672,3,52704
  21. 300 data 3,32
  22. 310 forp=0to12:gosub1200 :next
  23. 320 print" [158]14) [159][199]enerate 32 [211]prites"
  24. 330 w$=""
  25. 340 gosub1360:printw$;:input"[150][217]our choice";c$
  26. 350 c=val(c$):ifc<1orc>14then340
  27. 360 ifc>12then470
  28. 370 ifp(c-1,0)=3then420
  29. 380 gosub1360:printw$;:print"[150][211]elect: ";p$(c-1);" 1.[150] [207]n  [150]2.  [207]ff"
  30. 390 geta$:ifa$<>"1"anda$<>"2"then390
  31. 400 ifa$="1"thenp(c-1,0)=1
  32. 410 ifa$="2"thenp(c-1,0)=2
  33. 420 gosub1360:printw$;:ml$="-1":input"[150][206]ew memory location";ml$
  34. 430 ifleft$(ml$,1)="$"andlen(ml$)=5thend$=ml$:gosub1340 :ml=d:goto450 
  35. 440 ml=val(ml$):ifml<0orml>65535then460
  36. 450 p(c-1,1)=ml
  37. 460 p=c-1:gosub1200:goto340 
  38. 470 ifc=14then510
  39. 480 gosub1360:printw$;:print"[150][211]elect: 1.[150] 16 2.[150] 24 3.[150] 32"
  40. 490 geta$:ifa$<>"1"anda$<>"2"anda$<>"3"then490
  41. 500 p(12,1)=(val(a$)*8)+8:goto460 
  42. 510 rem generate ml code
  43. 520 ad=p(0,1)
  44. 530 gosub1370
  45. 540 print"[159]"tab(12)"[199]enerating [205][204]..."
  46. 550 def fnh(x)=int(x/256)
  47. 560 def fnl(x)=x-(fnh(x)*256)
  48. 570 print""tab(9)"[201]nitialization code..."
  49. 580 mp=0:gosub1440
  50. 590 forj=1top(12,1)/8:printtab(12)"[210]aster handler";j:gosub1560:next
  51. 600 ad=ad-34:da$="a9fa8d12d0a9008d00004c31ea":gosub1430
  52. 605 pokead-5,fnl(p(0,1)+100):pokead-4,fnh(p(0,1)+100)
  53. 607 gosub 1907
  54. 608 di=ad:da$="78a9318d1403a9ea8d1503a9008d15d08d1ad0a9818d0ddca9008d0ddca993"
  55. 609 da$=da$+"20d2ff5860":gosub1430
  56. 610 gosub1370:print""tab(16)"[195]omplete."
  57. 620 printtab(5)"[194]eginning address:";:d=p(0,1):gosub1300
  58. 630 printp(0,1);" $"+a$:printtab(5)"[197]nding address:   ";:d=ad:gosub1300
  59. 632 printad;" $"+a$
  60. 635 print" [197]nable 32 [211]prites:   ";:d=p(0,1):gosub1300
  61. 636 print"[211][217][211]";p(0,1);" ([202][205][208][160]$"+a$+")"
  62. 637 print" [196]isable 32 [211]prites:  ";:d=di:gosub1300
  63. 638 print"[211][217][211]";di;" ([202][205][208][160]$"+a$+")"
  64. 640 printtab(13)"[211]ave 32 [211]prites [205][204]?"
  65. 650 geta$:ifa$<>"y"anda$<>"n"then650
  66. 660 ifa$="n"then710 
  67. 670 gosub1370:print""tab(5)"[197]nter filename:";:open1,0:input#1,f$:close1
  68. 680 print:printtab(15)"[211]aving...."
  69. 690 sys57812 f$,8,1:poke193,fnl(p(0,1)):poke194,fnh(p(0,1)):poke174,fnl(ad+1)
  70. 700 poke175,fnh(ad+1):sys 62957
  71. 710 gosub1370:print""tab(10)"[208]rint out info sheet?"
  72. 720 geta$:ifa$<>"y"anda$<>"n"then720
  73. 730 ifa$="n"thenprint"[147]":end
  74. 740 gosub1370:print""tab(14)"[208]rinting...."
  75. 750 open4,4,7:print#4:print#4:print#4
  76. 760 print#4,spc(23)"32 [211][208][210][201][212][197][211]"
  77. 770 print#4:print#4:print#4
  78. 780 print#4,spc(23)"[211]tarting address:";:d=p(0,1):gosub1300
  79. 790 print#4,p(0,1);" $"+a$:print#4,spc(23)"[197]nding address:  ";:d=ad:gosub1300
  80. 800 print#4,ad;" $"+a$:print#4
  81. 802 print#4,spc(19)"[197]nable 32 [211]prites:   ";:d=p(0,1):gosub1300
  82. 804 print#4,"[211][217][211]";p(0,1);" ([202][205][208][160]$"+a$+")"
  83. 806 print#4,spc(19)"[196]isable 32 [211]prites:  ";:d=di:gosub1300
  84. 808 print#4,"[211][217][211]";di;" ([202][205][208][160]$"+a$+")":print#4:print#4
  85. 810 forj=1to12:print#4,spc(16);p$(j);spc(20-len(p$(j)));
  86. 820 ifp(j,0)=3thenprint#4,"[206]/[193]";
  87. 830 ifp(j,0)=2thenprint#4,"[207]ff";
  88. 840 ifp(j,0)=1thenprint#4,"[207]n ";
  89. 850 print#4,spc(5);p(j,1);:d=p(j,1):gosub1300
  90. 860 print#4,spc(10-len(str$(p(j,1))));"$"+a$:next
  91. 870 print#4:close4:end
  92. 880 data 78,a9,<0+72,8d,14,03,a9,>0+72
  93. 890 data 8d,15,03,a9,7f,8d,0d,dc,a9,01
  94. 900 data 8d,1a,d0,ad,11,d0,29,7f,8d,11
  95. 910 data d0,a9,fa,8d,12,d0,a9,00,8d
  96. 920 data <0+100,>0+100,a9,ff,a2,00,9d
  97. 930 data <9,>9,e8,d0,fa,a9,ff,8d,15,d0
  98. 940 data 58,60,01,02,04,08,10,20,40,80
  99. 950 data fe,fd,fb,f7,ef,df,bf,7f,a9,01
  100. 960 data 8d,19,d0,ad,<0+100,>0+100,0a
  101. 970 data a8,b9,<0+101,>0+101,8d,<0+95
  102. 980 data >0+95,b9,<0+102,>0+102,8d
  103. 990 data <0+96,>0+96,4c,ff,ff,4c,31,ea
  104. 1000 data 00,<0+111,>0+111,00,00,00,00
  105. 1010 data 00,01,00,00,a2,00,bd,<1,>1,c9,1d,90,0e,a8
  106. 1020 data b9,<9,>9,30,04,c8,4c,<0+121
  107. 1030 data >0+121,8a,99,<9,>9,e8,e0,<c
  108. 1040 data 90,e6,a2,00,a0,1d,b9,<9,>9,10
  109. 1050 data 4f,c8,b9,<9,>9,10,49,c8,b9,<9
  110. 1060 data >9,10,43,c8,b9,<9,>9,10,3d,c8
  111. 1070 data b9,<9,>9,10,37,c8,b9,<9,>9,10
  112. 1080 data 31,c8,b9,<9,>9,10,2b,c8,b9,<9
  113. 1090 data >9,10,25,c8,b9,<9,>9,10,1f,c8
  114. 1100 data b9,<9,>9,10,19,c8,b9,<9,>9,10
  115. 1110 data 13,c8,b9,<9,>9,10,0d,c8,b9,<9
  116. 1120 data >9,10,07,c8,c0,1d,b0,ae,90,0f
  117. 1130 data 9d,<a,>a,a9,ff,99,<9,>9,e8,e0
  118. 1140 data <c,90,a4,b0,18
  119. 1142 data e0,08,b0,05,bc,<0+56,>0+56
  120. 1144 data 88,2c,a0,ff,8c,15,d0
  121. 1149 data a9,ff,9d,<a,>a
  122. 1150 data e8,e0,<c,90,f8,ee,<0+100
  123. 1160 data >0+100,a2,<c,ca
  124. 1170 data bd,<1,>1,9d,<b,>b,ca,10,f7,xx
  125. 1180 end
  126. 1200 poke214,5+p:print
  127. 1210 print"[158]";p+1;"[157]) [159]"p$(p)
  128. 1220 print"[145]"tab(22);
  129. 1230 ifp(p,0)=1thenprint"[150][207]n "
  130. 1240 ifp(p,0)=2thenprint"[151][207]ff"
  131. 1250 ifp(p,0)=3thenprint"[206]/[193][150]"
  132. 1260 print"[145]"tab(26);p(p,1);"     "
  133. 1270 d=p(p,1):gosub1300
  134. 1280 print"[145]"tab(34)"$";a$
  135. 1290 return
  136. 1300 t=int(d/4096):a$=h$(t):d=int(d-t*4096)
  137. 1310 t=int(d/256):a$=a$+h$(t):d=int(d-t*256)
  138. 1320 t=int(d/16):b$=a$:a$=a$+h$(t):d=int(d-t*16):b$=h$(t)+h$(d)+b$
  139. 1330 a$=a$+h$(d):return
  140. 1340 d=0:forj=3to0step-1:j1=asc(mid$(d$,5-j,1))-48:ifj1>16thenj1=j1-7
  141. 1350 d=d+(j1*16^j):next:return
  142. 1360 forx=21to24:poke781,x:sys 59903:next:return
  143. 1370 forx=2to24:poke781,x:sys59903:next:return
  144. 1380 da$="68f00d":gosub1430
  145. 1390 pokead,185:pokead+1,fnl(p(0,1)+56-sb):pokead+2,fnh(p(0,1)+56-sb):ad=ad+3
  146. 1400 da$="0d"+aa$+"8d"+aa$+"f00bd009":gosub1430
  147. 1410 pokead,185:pokead+1,fnl(p(0,1)+64-sb):pokead+2,fnh(p(0,1)+64-sb):ad=ad+3
  148. 1420 da$="2d"+aa$+"8d"+aa$:gosub1430:return
  149. 1430 mp=1:forjj=1tolen(da$)step2:a$=mid$(da$,jj,2):gosub1450:next:mp=0:return
  150. 1440 reada$:ifa$="xx"thenreturn
  151. 1450 ifleft$(a$,1)="<"then1500
  152. 1460 ifleft$(a$,1)=">"then1530
  153. 1470 a1=asc(left$(a$,1))-48:a2=asc(right$(a$,1))-48:ifa1>16thena1=a1-7
  154. 1480 ifa2>16thena2=a2-7
  155. 1490 pokead,a1*16+a2:ad=ad+1:on -(mp=0) goto1440 :return
  156. 1500 pl=0:iflen(a$)>2thenpl=val(mid$(a$,4))
  157. 1510 wg$=mid$(a$,2,1):wg=val(wg$):ifwg$>"@"andwg$<"d"thenwg=asc(wg$)-55
  158. 1520 pokead,fn l(p(wg,1)+pl):ad=ad+1:on -(mp=0) goto1440 :return
  159. 1530 pl=0:iflen(a$)>2thenpl=val(mid$(a$,4))
  160. 1540 wg$=mid$(a$,2,1):wg=val(wg$):ifwg$>"@"andwg$<"d"thenwg=asc(wg$)-55
  161. 1550 pokead,fn h(p(wg,1)+pl):ad=ad+1:on -(mp=0) goto1440 :return
  162. 1560 pokep(0,1)+101+j*2,fnl(ad):pokep(0,1)+102+j*2,fnh(ad)
  163. 1570 da$="a200a0":ifj=1thenda$=da$+"00":ep$="08":sb=0
  164. 1580 if j=2thenda$=da$+"08":ep$="10":sb=8
  165. 1590 ifj=3thenda$=da$+"10":ep$="18":sb=16
  166. 1600 ifj=4thenda$=da$+"18":ep$="20":sb=24
  167. 1610 da$=da$+"84bf":gosub1430
  168. 1620 ifj=1thenb1=ad:goto1660
  169. 1630 b1=ad:da$="b9":gosub1430
  170. 1640 pokead,fnl(p(10,1)-8):pokead+1,fnh(p(10,1)-8):ad=ad+2
  171. 1650 da$="300ea8b9<b>ba4bf186914cd12d0b0fb":gosub1430
  172. 1660 da$="b9<a>a":gosub1430
  173. 1670 da$="10034c0000a8":gosub1430
  174. 1680 da$="b9<b>b9d01d0":gosub1430
  175. 1690 ifp(2,0)=1thenda$="b9<2>29d00d0":gosub1430
  176. 1700 ifp(7,0)=1thenda$="b9<7>748":gosub1430
  177. 1710 ifp(4,0)=1thenda$="b9<4>448":gosub1430
  178. 1720 ifp(6,0)=1thenda$="b9<6>648":gosub1430
  179. 1730 ifp(5,0)=1thenda$="b9<5>548":gosub1430
  180. 1740 ifp(3,0)=1thenda$="b9<3>348":gosub1430
  181. 1750 ifp(8,0)=1thenda$="b9<8>8a4bf99":gosub1430
  182. 1760 ifp(8,0)