- ’
- ’■BGMPRGヨウ ハケイサクセイツ-ル v1.1
- ’───────────────────────────
- ’(c)SmileBoom
- ’・64/128コノ ウェ-フ゛テ゛-タヲツクル
- ’・MEM$テ゛ホソ゛ン
- ’・ファィルカ゛ナイトキノエラ-タイサク
- ’
- ACLS
- ’---カンキョウショキカ
- CLEAR:MAX=32
- DIM W(MAX,128),ADSR$(MAX)
- DIM EG(4),EGN$(4)
- EGN$(0)=”A:”:EGN$(1)=”D:”
- EGN$(2)=”S:”:EGN$(3)=”R:”
- PNLTYPE”OFF”
- FOR I=0 TO 3
- ICONCLR I
- NEXT
- PG=1:OY=16:TC=0
- OLDBN=-1:BW=0
- GOSUB @DSPINIT
- ’---
- WS=0:GOSUB @SIZE
- FOR NO=0 TO MAX-1
- GOSUB @MKSIN
- ADSR$(NO)=”7F3F0F3F”
- NEXT
- ’---
- NO=0:GOSUB @WAVSET
- ’---メインル-フ゜
- @MLOOP
- B=BTRIG():BN=BUTTON()
- SPOFS 0,TCHX,TCHY
- GOSUB @FILESUB
- GOSUB @SELNO
- GOSUB @EDIT
- VSYNC 1
- IF B!=1024 THEN @MLOOP
- ’---アトシマツ
- CHRINIT ”BGU0”
- END
- ’---ファィルカンケイ
- @FILESUB
- IF B==64 THEN @FSAVE
- IF B!=128 THEN RETURN
- ’---ヨミコミ
- @FLOAD
- GOSUB @MKFNAME
- LOAD NE$
- IF RESULT==FALSE THEN RETURN
- WS=VAL(”&H”+MID$(MEM$,0,2))
- GOSUB @SIZECNG
- ADSR$(NO)=MID$(MEM$,2,8)
- PRINT ” WS:”;WS
- PRINT ”ADSR:”;ADSR$(NO)
- LOAD NW$
- IF RESULT==FALSE THEN RETURN
- FOR I=0 TO WS-1
- W$=MID$(MEM$,I*2,2)
- V=VAL(”&H”+W$)
- IF V>127 THEN V=(256-V)*-1
- W(NO,I)=V
- NEXT
- GOSUB @WAVSET
- GOSUB @GRPDRAW
- RETURN
- ’---カキコミ
- @FSAVE
- GOSUB @MKFNAME
- GOSUB @MKWAVE
- MEM$=M$
- SAVE NW$
- MEM$=HEX$(WS,2)+ADSR$(NO)
- SAVE NE$
- RETURN
- ’---
- @MKFNAME
- NW$=”MEM:WAVE”+STR$(NO+224)
- NE$=”MEM:EG”+STR$(NO+224)
- RETURN
- ’---タイショウキリカエ
- @SELNO
- V=0
- IF B==1 THEN V=1
- IF B==2 THEN V=-1
- IF V==0 THEN RETURN
- NO=NO+V
- IF NO<0 THEN NO=MAX-1
- IF NO>MAX-1 THEN NO=0
- GOSUB @WAVSET
- GOSUB @GRPDRAW
- RETURN
- ’---ヘンシュウ
- @EDIT
- IF B==16 THEN @PLAY
- IF B==32 THEN @SIZESET
- GOSUB @BTCHECK
- ’---
- IF TC THEN @TCGET
- IF !TCHST THEN RETURN
- ’---
- @TCGET
- IF TCHST THEN @TCCNT
- ’---
- GOSUB @GRPDRAW
- TC=0
- RETURN
- ’---
- @TCCNT
- X=TCHX:Y=TCHY-16
- IF Y<0 THEN Y=0
- IF Y>144 THEN RETURN
- IF Y>127 THEN Y=127
- ’---
- X=FLOOR(X/ST):L=BN AND 256
- IF L THEN X=FLOOR(X/2)*2+1
- W(NO,X)=((127-Y)-64)*2
- EX=X*ST:EY=Y+OY
- IF TC==0 THEN TX=EX:TY=EY
- GLINE TX,TY,EX,EY,2
- TX=EX:TY=EY:TC=1
- RETURN
- ’---ハケイサイス゛キリカエ
- @SIZESET
- GOSUB @SIZE
- GOSUB @MKSIN
- GOTO @GRPDRAW
- ’---
- @SIZE
- WS=WS+64
- IF WS>128 THEN WS=64
- ’
- @SIZECNG
- ST=FLOOR(256/WS)
- PNLSTR 28,1,STR$(WS)+” ”
- RETURN
- ’---カンイエンソウ
- @PLAY
- PRINT ”О:@”;NO+224;
- PRINT ”CDEFGAB<C”
- GOSUB @MKWAVE
- VC=NO+224
- BGMPRG VC,EG(0),EG(1),EG(2),EG(3),M$
- M$=”@”+STR$(VC)
- BGMPLAY M$+”CDEFGAB<C”
- RETURN
- ’
- @MKWAVE
- COLOR 5:M$=””
- FOR I=0 TO WS-1
- C$=HEX$(W(NO,I),2)
- M$=M$+C$:PRINT C$;
- NEXT
- COLOR 0
- RETURN
- ’---カ゛メンショキカ
- ’CON:モシ゛
- ’ SP:カ-ソル
- ’BG0:ラインカ-ソル
- ’GRP:ク゛ラフ
- ’BG1:ハイケイク゛リット゛
- ’
- @DSPINIT
- BGPAGE PG:BGCLR
- SPPAGE PG:SPCLR
- GCLS:GPAGE PG:GPRIO 2
- H$=”D1D1D1D1”
- C$=H$+”00001111”*7
- CHRSET ”BGU0”,1,C$
- C$=H$+”00110011”*7
- CHRSET ”BGU0”,2,C$
- C$=H$+”0”*56
- CHRSET ”BGU0”,3,C$
- ’---
- SPSET 0,110,0,0,0,0
- SPCOL 0,0,0,1,1,FALSE
- FOR N=0 TO 3
- X=N*40:Y=176
- GOSUB @BTOPEN
- NEXT
- ’---
- C$=”WAVE EDITOR v1.1”
- PNLSTR 0,0,C$
- C$=”А=PLAY Ф=SAVE Х=LOAD ”
- C$=C$+”Б=SIZE:”
- PNLSTR 0,1,C$,7
- RETURN
- ’---ハケイショキカ
- @MKSIN
- S=360/WS
- FOR I=0 TO WS-1
- A=SIN(RAD(S*I))
- W(NO,I)=FLOOR(A*128)
- NEXT
- RETURN
- ’---ハケイキリカエ
- @WAVSET
- FOR N=0 TO 3
- C$=MID$(ADSR$(NO),N*2,2)
- EG(N)=VAL(”&H”+C$)
- GOSUB @BTNUM
- NEXT
- ’---ク゛ラフノヒョウシ゛
- @GRPDRAW
- C$=”П↑↓=WAVE:”
- PNLSTR 0,19,”П↑↓=WAVE:”,7
- C$=STR$(NO+224)
- PNLSTR 9,19,C$
- ’---
- C=WS/64:Y=OY/8
- BGFILL 1,0,Y,31,Y+15,C
- BGFILL 1,0,Y+16,31,Y+16,3
- ’---
- GCLS 0
- FOR I=0 TO WS-1
- X=I*ST
- Y=FLOOR((W(NO,I)+128)/2)
- Y=OY+128-Y
- GFILL X,Y,X+ST-1,OY+64,15
- NEXT
- RETURN
- ’---スフ゜ライト+-ホ゛タン
- @BTOPEN
- SPSET N*2+1,92,0,0,0,1
- SPOFS N*2+1,X,Y
- SPSET N*2+2,93,0,0,0,1
- SPOFS N*2+2,X+16,Y
- PNLSTR X/8,(Y-8)/8,EGN$(N),4
- ’---
- @BTNUM
- C$=HEX$(EG(N),2)
- PNLSTR N*5+2,(Y-8)/8,C$
- RETURN
- ’---
- @BTCHECK
- IF TCHST THEN @BTCGO
- ’---ハナシタ
- FOR N=1 TO 8
- GOSUB @BTCOFF
- NEXT
- OLDBN=-1
- RETURN
- ’---
- @BTCOFF
- SPREAD(N),X,Y
- X=X AND &HF8:Y=Y AND &HF8
- SPOFS N,X,Y
- RETURN
- ’---
- @BTCGO
- X=TCHX:Y=TCHY
- I=SPHIT(0)
- IF !I THEN RETURN
- ’
- N=SPHITNO
- IF N!=OLDBN THEN @BTC1ST
- ’---キ-リヒ゜-ト
- IF BW<15 THEN BW=BW+1:GOTO @BTCOFF
- BC=BC+1:IF BC<2 THEN @BTCOFF
- GOTO @BTCGET
- ’---オシタ
- @BTC1ST
- OLDBN=N:BW=0
- ’---
- @BTCGET
- BC=0
- SPREAD(N),X,Y
- X=X AND &HF8:Y=Y AND &HF8
- SPOFS N,X+1,Y+1
- ’
- N=N-1
- V=-1:IF N AND 1 THEN V=1
- N=FLOOR(N/2):V=EG(N)+V
- IF V<0 THEN V=0
- IF V>127 THEN V=127
- EG(N)=V
- GOTO @BTNUM