プチコンmkII

  1. ’■BGMPRGヨウ ハケイサクセイツ-ル v1.1
  2. ’───────────────────────────
  3. ’(c)SmileBoom
  4. ’・64/128コノ ウェ-フ゛テ゛-タヲツクル
  5. ’・MEM$テ゛ホソ゛ン
  6. ’・ファィルカ゛ナイトキノエラ-タイサク
  7. ACLS
  8. ’---カンキョウショキカ
  9. CLEAR:MAX=32
  10. DIM W(MAX,128),ADSR$(MAX)
  11. DIM EG(4),EGN$(4)
  12. EGN$(0)=”A:”:EGN$(1)=”D:”
  13. EGN$(2)=”S:”:EGN$(3)=”R:”
  14. PNLTYPE”OFF”
  15. FOR I=0 TO 3
  16.  ICONCLR I
  17. NEXT
  18. PG=1:OY=16:TC=0
  19. OLDBN=-1:BW=0
  20. GOSUB @DSPINIT
  21. ’---
  22. WS=0:GOSUB @SIZE
  23. FOR NO=0 TO MAX-1
  24.  GOSUB @MKSIN
  25.  ADSR$(NO)=”7F3F0F3F”
  26. NEXT
  27. ’---
  28. NO=0:GOSUB @WAVSET
  29. ’---メインル-フ゜
  30. @MLOOP
  31. B=BTRIG():BN=BUTTON()
  32. SPOFS 0,TCHX,TCHY
  33. GOSUB @FILESUB
  34. GOSUB @SELNO
  35. GOSUB @EDIT
  36. VSYNC 1
  37. IF B!=1024 THEN @MLOOP
  38. ’---アトシマツ
  39. CHRINIT ”BGU0”
  40. END
  41. ’---ファィルカンケイ
  42. @FILESUB
  43. IF B==64 THEN @FSAVE
  44. IF B!=128 THEN RETURN
  45. ’---ヨミコミ
  46. @FLOAD
  47. GOSUB @MKFNAME
  48. LOAD NE$
  49. IF RESULT==FALSE THEN RETURN
  50. WS=VAL(”&H”+MID$(MEM$,0,2))
  51. GOSUB @SIZECNG
  52. ADSR$(NO)=MID$(MEM$,2,8)
  53. PRINT ”  WS:”;WS
  54. PRINT ”ADSR:”;ADSR$(NO)
  55. LOAD NW$
  56. IF RESULT==FALSE THEN RETURN
  57. FOR I=0 TO WS-1
  58.  W$=MID$(MEM$,I*2,2)
  59.  V=VAL(”&H”+W$)
  60.  IF V>127 THEN V=(256-V)*-1
  61.  W(NO,I)=V
  62. NEXT
  63. GOSUB @WAVSET
  64. GOSUB @GRPDRAW
  65. RETURN
  66. ’---カキコミ
  67. @FSAVE
  68. GOSUB @MKFNAME
  69. GOSUB @MKWAVE
  70. MEM$=M$
  71. SAVE NW$
  72. MEM$=HEX$(WS,2)+ADSR$(NO)
  73. SAVE NE$
  74. RETURN
  75. ’---
  76. @MKFNAME
  77. NW$=”MEM:WAVE”+STR$(NO+224)
  78. NE$=”MEM:EG”+STR$(NO+224)
  79. RETURN
  80. ’---タイショウキリカエ
  81. @SELNO
  82. V=0
  83. IF B==1 THEN V=1
  84. IF B==2 THEN V=-1
  85. IF V==0 THEN RETURN
  86. NO=NO+V
  87. IF NO<0 THEN NO=MAX-1
  88. IF NO>MAX-1 THEN NO=0
  89. GOSUB @WAVSET
  90. GOSUB @GRPDRAW
  91. RETURN
  92. ’---ヘンシュウ
  93. @EDIT
  94. IF B==16 THEN @PLAY
  95. IF B==32 THEN @SIZESET
  96. GOSUB @BTCHECK
  97. ’---
  98. IF TC THEN @TCGET
  99. IF !TCHST THEN RETURN
  100. ’---
  101. @TCGET
  102. IF TCHST THEN @TCCNT
  103. ’---
  104. GOSUB @GRPDRAW
  105. TC=0
  106. RETURN
  107. ’---
  108. @TCCNT
  109. X=TCHX:Y=TCHY-16
  110. IF Y<0 THEN Y=0
  111. IF Y>144 THEN RETURN
  112. IF Y>127 THEN Y=127
  113. ’---
  114. X=FLOOR(X/ST):L=BN AND 256
  115. IF L THEN X=FLOOR(X/2)*2+1
  116. W(NO,X)=((127-Y)-64)*2
  117. EX=X*ST:EY=Y+OY
  118. IF TC==0 THEN TX=EX:TY=EY
  119. GLINE TX,TY,EX,EY,2
  120. TX=EX:TY=EY:TC=1
  121. RETURN
  122. ’---ハケイサイス゛キリカエ
  123. @SIZESET
  124. GOSUB @SIZE
  125. GOSUB @MKSIN
  126. GOTO @GRPDRAW
  127. ’---
  128. @SIZE
  129. WS=WS+64
  130. IF WS>128 THEN WS=64
  131. @SIZECNG
  132. ST=FLOOR(256/WS)
  133. PNLSTR 28,1,STR$(WS)+” ”
  134. RETURN
  135. ’---カンイエンソウ
  136. @PLAY
  137. PRINT ”О:@”;NO+224;
  138. PRINT ”CDEFGAB<C”
  139. GOSUB @MKWAVE
  140. VC=NO+224
  141. BGMPRG VC,EG(0),EG(1),EG(2),EG(3),M$
  142. M$=”@”+STR$(VC)
  143. BGMPLAY M$+”CDEFGAB<C”
  144. RETURN
  145. @MKWAVE
  146. COLOR 5:M$=””
  147. FOR I=0 TO WS-1
  148.  C$=HEX$(W(NO,I),2)
  149.  M$=M$+C$:PRINT C$;
  150. NEXT
  151. COLOR 0
  152. RETURN
  153. ’---カ゛メンショキカ
  154. ’CON:モシ゛
  155. ’ SP:カ-ソル
  156. ’BG0:ラインカ-ソル
  157. ’GRP:ク゛ラフ
  158. ’BG1:ハイケイク゛リット゛
  159. @DSPINIT
  160. BGPAGE PG:BGCLR
  161. SPPAGE PG:SPCLR
  162. GCLS:GPAGE PG:GPRIO 2
  163. H$=”D1D1D1D1”
  164. C$=H$+”00001111”*7
  165. CHRSET ”BGU0”,1,C$
  166. C$=H$+”00110011”*7
  167. CHRSET ”BGU0”,2,C$
  168. C$=H$+”0”*56
  169. CHRSET ”BGU0”,3,C$
  170. ’---
  171. SPSET 0,110,0,0,0,0
  172. SPCOL 0,0,0,1,1,FALSE
  173. FOR N=0 TO 3
  174.  X=N*40:Y=176
  175.  GOSUB @BTOPEN
  176. NEXT
  177. ’---
  178. C$=”WAVE EDITOR v1.1”
  179. PNLSTR 0,0,C$
  180. C$=”А=PLAY Ф=SAVE Х=LOAD ”
  181. C$=C$+”Б=SIZE:”
  182. PNLSTR 0,1,C$,7
  183. RETURN
  184. ’---ハケイショキカ
  185. @MKSIN
  186. S=360/WS
  187. FOR I=0 TO WS-1
  188.  A=SIN(RAD(S*I))
  189.  W(NO,I)=FLOOR(A*128)
  190. NEXT
  191. RETURN
  192. ’---ハケイキリカエ
  193. @WAVSET
  194. FOR N=0 TO 3
  195.  C$=MID$(ADSR$(NO),N*2,2)
  196.  EG(N)=VAL(”&H”+C$)
  197.  GOSUB @BTNUM
  198. NEXT
  199. ’---ク゛ラフノヒョウシ゛
  200. @GRPDRAW
  201. C$=”П↑↓=WAVE:”
  202. PNLSTR 0,19,”П↑↓=WAVE:”,7
  203. C$=STR$(NO+224)
  204. PNLSTR 9,19,C$
  205. ’---
  206. C=WS/64:Y=OY/8
  207. BGFILL 1,0,Y,31,Y+15,C
  208. BGFILL 1,0,Y+16,31,Y+16,3
  209. ’---
  210. GCLS 0
  211. FOR I=0 TO WS-1
  212.  X=I*ST
  213.  Y=FLOOR((W(NO,I)+128)/2)
  214.  Y=OY+128-Y
  215.  GFILL X,Y,X+ST-1,OY+64,15
  216. NEXT
  217. RETURN
  218. ’---スフ゜ライト+-ホ゛タン
  219. @BTOPEN
  220. SPSET N*2+1,92,0,0,0,1
  221. SPOFS N*2+1,X,Y
  222. SPSET N*2+2,93,0,0,0,1
  223. SPOFS N*2+2,X+16,Y
  224. PNLSTR X/8,(Y-8)/8,EGN$(N),4
  225. ’---
  226. @BTNUM
  227. C$=HEX$(EG(N),2)
  228. PNLSTR N*5+2,(Y-8)/8,C$
  229. RETURN
  230. ’---
  231. @BTCHECK
  232. IF TCHST THEN @BTCGO
  233. ’---ハナシタ
  234. FOR N=1 TO 8
  235.  GOSUB @BTCOFF
  236. NEXT
  237. OLDBN=-1
  238. RETURN
  239. ’---
  240. @BTCOFF
  241. SPREAD(N),X,Y
  242. X=X AND &HF8:Y=Y AND &HF8
  243. SPOFS N,X,Y
  244. RETURN
  245. ’---
  246. @BTCGO
  247. X=TCHX:Y=TCHY
  248. I=SPHIT(0)
  249. IF !I THEN RETURN
  250. N=SPHITNO
  251. IF N!=OLDBN THEN @BTC1ST
  252. ’---キ-リヒ゜-ト
  253. IF BW<15 THEN BW=BW+1:GOTO @BTCOFF
  254. BC=BC+1:IF BC<2 THEN @BTCOFF
  255. GOTO @BTCGET
  256. ’---オシタ
  257. @BTC1ST
  258. OLDBN=N:BW=0
  259. ’---
  260. @BTCGET
  261. BC=0
  262. SPREAD(N),X,Y
  263. X=X AND &HF8:Y=Y AND &HF8
  264. SPOFS N,X+1,Y+1
  265. N=N-1
  266. V=-1:IF N AND 1 THEN V=1
  267. N=FLOOR(N/2):V=EG(N)+V
  268. IF V<0 THEN V=0
  269. IF V>127 THEN V=127
  270. EG(N)=V
  271. GOTO @BTNUM