- ’====================
- ’SCREEN EDITOR
- ’(C)SmileBoom Co.Ltd.
- ’====================
- VISIBLE 1,1,0,0,0,0
- CLEAR:CLS:COLOR 0
- DIM SW$(2)
- SW$(0)=”OFF”:SW$(1)=”ON ”
- GPAGE 0:GCLS 0
- GPAGE 1:GCLS 0
- FOR I=0 TO 3
- BREPEAT I,20,4
- NEXT
- ’--- ヘンシュウエリア
- BGLX=0:BGLY=0
- K1=0:K2=0
- GDX=0:GDY=0
- GRX=0:GRY=0:GRC=13
- GRID=TRUE:GRS=2
- ’--- ヘンスウ ショキカ
- PAL=0:LAYER=0
- REVH=FALSE:REVV=FALSE
- VIEW=TRUE:VB0=1:VB1=1:XC=7
- CX=0:CY=0:CSX=1:CSY=1
- CH=0:CBANK=0:CN$=”BGU”
- B=0:PR=1:DRG=FALSE
- ’--- カ゛メン ショキカ
- BGPG=0:MF=FALSE
- GOSUB @DISPINIT
- ’---
- INPUT”キャラヲヨミコミマスカ(Y/N)”;K$
- IF K$!=”Y” THEN @SKIPCL
- ’---
- GOSUB @_CLOAD
- GOTO @MAIN
- ’---
- @SKIPCL
- GOSUB @DISPSET
- GOSUB @CHRALL
- ’===========
- ’ メインル-フ゜
- ’===========
- @MAIN
- ’
- OX=TX:OY=TY:OS=TS
- TX=TCHX:TY=TCHY:TS=TCHST
- OLDB=B:B=BTRIG():BN=BUTTON()
- ’
- GOSUB @SELECT
- GOSUB @CSRMOVE
- GOSUB @DRAWCHR
- GOSUB @PUTCSEL
- ’
- VSYNC 1
- ’
- GOTO @MAIN
- ’==========
- ’ サフ゛ショリ
- ’==========
- @DISPSET
- CLS:COLOR 0:ICONCLR
- PNLTYPE ”OFF”
- GOSUB @CLRMENU
- GOSUB @PUTOFS
- GOSUB @SETGRID
- BGPAGE 1:SPPAGE 1:GPAGE 1
- RETURN
- ’---
- @DISPINIT ’カ゛メンノショキカ
- ’---
- FOR I=0 TO 1
- GPAGE I:GCOLOR 0
- SPPAGE I:SPCLR
- BGPAGE I
- BGOFS 0,0,0
- BGOFS 1,0,0
- BGCLIP 0,0,31,23
- NEXT
- ’---ウエ カ゛メン
- BGPAGE 0:SPPAGE 0:GPAGE 0
- CHRSET ”BGU0”,0,”0”*64
- BGCLR
- ’---シタ カ゛メン
- BGPAGE 1:SPPAGE 1:GPAGE 1
- ’---
- A$=”0”*64
- B$=”FFFFFFFF”+”0”*56
- C$=”F0000000”*8
- CHRSET ”SPS0”,0,C$
- CHRSET ”SPS0”,1,A$
- CHRSET ”SPS0”,2,C$
- CHRSET ”SPS0”,3,A$
- CHRSET ”SPS0”,4,B$
- CHRSET ”SPS0”,5,B$
- CHRSET ”SPS0”,6,A$
- CHRSET ”SPS0”,7,A$
- ’---
- @SETGRID
- GDXSP=100-16
- FOR I=0 TO 15
- SPSET GDXSP+I,1,GRC,0,0,0
- SPOFS GDXSP+I,I*16,GRY
- NEXT
- GDYSP=GDXSP-12
- FOR I=0 TO 11
- SPSET GDYSP+I,0,GRC,0,0,0
- SPOFS GDYSP+I,GRX,I*16
- NEXT
- RETURN
- ’======
- ’ メニュ-
- ’======
- @CLRMENU
- VISIBLE 1,1,1,1,1,0
- COLOR 0:SPCLR
- GOSUB @SETLAY
- ’---
- @PUTGRID
- C$=” ”*16
- IF GRID THEN C$=”С”*16
- LOCATE 0,22
- N1$=”Ф=MENU Б=GRID Х=PAGE”
- N2$=”П=SCROLL А+П=CHR SELECT”
- ’---
- @SETPNL
- COLOR 0
- FOR Y=0 TO 23
- PNLSTR 0,Y,C$*2,GRS
- NEXT
- LOCATE 0,22:PRINT N1$;
- LOCATE 0,23:PRINT N2$;
- LOCATE 0,8
- PRINT”┌──────────────────────────────┐”;
- PRINT”│SCREEN EDITOR v1.2 │”;
- PRINT”└──────────────────────────────┘”;
- RETURN
- ’---
- @PUTMENU
- COLOR 0:CLS:SPCLR
- VISIBLE 1,1,0,0,1,1
- C$=” ”*16
- N1$=”Ф=EDITヘモト゛ル”
- N2$=”А=FILEメニュ- К+П=SIZE”
- GOSUB @SETPNL
- GOSUB @PUTOFS
- ’--- ワク
- X=0:Y=8:PNLSTR X,Y,”─”*32
- FOR I=1 TO 11
- PNLSTR X,Y+I,” ”*23+”│”
- NEXT I
- PNLSTR 23,11, ”├”+”─”*8
- PNLSTR 23,20, ”└”+”─”*8
- ’--- キャラハ゛ンク(SP0-SP3
- CDX=24*8:CDY=9*8:N=0
- FOR I=0 TO 3
- X=I*16+CDX
- SPSET N,I+48,0,0,0,PR
- SPOFS N,X,CDY
- N=N+1
- NEXT
- GOSUB @CBICON
- ’--- イロハ゛ンク(SP4-SP19
- PDX=24*8:PDY=12*8:PALSP=N
- FOR I=0 TO 15
- X=FLOOR(I%4)*16+PDX
- Y=FLOOR(I/4)*16+PDY
- SPSET N,I+48,0,0,0,PR
- SPOFS N,X,Y
- N=N+1
- NEXT
- GOSUB @PALICON
- ’--- ツ-ル
- @TLNAME
- DATA 75,”テマエノ レイヤ-”
- DATA 74,”オクノ レイヤ-”
- DATA 90,”リョウホウヒョウシ゛”
- DATA 90,”-”
- DATA 90,”-”
- DATA 80,”サユウハンテン”
- DATA 81,”シ゛ョウケ゛ハンテン”
- TDX=1*8:TDY=9*8+4
- Y=TDY:TLSP=N
- RESTORE @TLNAME
- FOR I=0 TO 6
- READ C,N$
- SPSET N,C,0,0,0,PR
- SPOFS N,TDX,Y
- PNLSTR TDX/8+2,Y/8+1,N$
- Y=Y+16
- N=N+1
- NEXT
- GOSUB @TLICON
- RETURN
- ’==========================
- @CBICON
- FOR I=0 TO 3
- C=0:IF CBANK==I THEN C=XC
- SPCHR I,I+48,C,0,0,PR
- NEXT
- RETURN
- ’---
- @PALICON
- FOR I=0 TO 15
- C=0:IF PAL==I THEN C=XC
- SPCHR I+PALSP,I+48,C,0,0,PR
- NEXT
- RETURN
- ’---
- @SETLAY
- VB0=1:VB1=1
- IF VIEW THEN @SLEND
- VB0=(LAYER==0)
- VB1=(LAYER==1)
- @SLEND
- VISIBLE 1,1,VB0,VB1,1,0
- RETURN
- ’---
- @TLICON
- ’--- ヘンシュウスクリ-ン
- C=0:IF LAYER==0 THEN C=XC
- SPCHR TLSP+0,75,C,0,0,PR
- C=0:IF LAYER==1 THEN C=XC
- SPCHR TLSP+1,74,C,0,0,PR
- ’--- リョウホウヒョウシ゛
- N=90:C=0:IF VIEW THEN N=91:C=XC
- SPCHR TLSP+2,N,C,0,0,PR
- ’--- ハンテン
- C=0:IF REVH THEN C=XC
- SPCHR TLSP+5,80,C,0,0,PR
- C=0:IF REVV THEN C=XC
- SPCHR TLSP+6,81,C,0,0,PR
- RETURN
- ’==========================
- @TOUCH ’アタリハンテイ
- ’==========================
- R=FALSE
- IF TS==FALSE THEN RETURN
- IF TX<X THEN RETURN
- IF TX>X+W THEN RETURN
- IF TY<Y THEN RETURN
- IF TY>Y+H THEN RETURN
- X=TX AND &HF8
- Y=TY AND &HF8
- R=TRUE
- RETURN
- ’──────────────────────────
- @CSRMOVE ’シタカ゛メンノスクロ-ル
- ’──────────────────────────
- VX=0:VY=0
- IF B AND 1 THEN VY=VY-1
- IF B AND 2 THEN VY=VY+1
- IF B AND 4 THEN VX=VX-1
- IF B AND 8 THEN VX=VX+1
- IF VX+VY==0 THEN RETURN
- IF BN AND 512 GOTO @SELSIZE
- IF BN AND 16 THEN @MOVCSR2
- IF MF==FALSE THEN @MVBGOFS
- ’---メニュ-ヒョウシ゛チュウ
- @MOVCSR2
- GOSUB @CCSRCLR
- X=FLOOR(CH%32)+VX
- Y=FLOOR(CH/32)+VY
- IF X<0 THEN X=0
- IF X>31 THEN X=31
- IF Y<0 THEN Y=0
- IF Y>7 THEN Y=7
- CH=(X+(Y*32)) AND 255
- RETURN
- ’---ツウシ゛ョウシ゛ハシタノスクロ-ル
- @MVBGOFS
- CX=CX+VX*8
- CX=CX AND 255
- BGLX=(BGLX+VX*8) AND 511
- CY=CY+VY*8
- CY=FLOOR(CY%192)
- BGLY=(BGLY+VY*8) AND 511
- BGOFS 0,BGLX,BGLY
- BGOFS 1,BGLX,BGLY
- GOSUB @PUTOFS
- VX=0:VY=0
- ’---
- GRX=-BGLX AND 255
- GRY=-BGLY AND 255
- GOSUB @SETGRID
- ’---
- @SELSIZE
- GOSUB @CCSRCLR
- CSX=CSX+VX
- CSY=CSY+VY
- IF CSX<1 THEN CSX=1
- IF CSX>8 THEN CSX=8
- IF CSY<1 THEN CSY=1
- IF CSY>8 THEN CSY=8
- GOSUB @CCSRPUT
- RETURN
- ’---
- @CCSRCLR
- GOSUB @PUTOFS
- C$=” ”
- GOTO @CCSR
- ’---
- @PUTCSEL
- COLOR CC
- CC=CC+1:CC=CC AND 15
- ’---
- @CCSRPUT
- C$=”□”
- ’---
- @CCSR
- X=FLOOR(CH%32)
- Y=FLOOR(CH/32)
- SX=CSX
- IF X+CSX>31 THEN SX=32-X
- SX=SX-1
- SY=CSY
- IF Y+CSY>7 THEN SY=8-Y
- SY=SY-1
- ’---
- FOR IX=0 TO SX
- IF MF==FALSE THEN @CCSRXS
- PNLSTR X,Y,C$
- PNLSTR X,Y+SY,C$
- GOTO @CCSRXS2
- @CCSRXS
- LOCATE X,Y:PRINT C$
- LOCATE X,Y+SY:PRINT C$
- @CCSRXS2
- X=X+1
- NEXT
- ’---
- X=FLOOR(CH%32)
- Y=Y+1
- FOR IY=1 TO SY-1
- IF MF==FALSE THEN @CCSRYS
- PNLSTR X,Y,C$
- PNLSTR X+SX,Y,C$
- GOTO @CCSRYS2
- @CCSRYS
- LOCATE X,Y:PRINT C$
- LOCATE X+SX,Y:PRINT C$
- @CCSRYS2
- Y=Y+1
- NEXT
- RETURN
- ’---
- @PUTOFS
- C=0:COLOR C:X=0:Y=12
- ’
- LOCATE X,Y:
- X=(BGLX/8) AND 63
- Y=(BGLY/8) AND 63
- PRINT” OFS:”;X;”,”;Y;” ”
- PRINT” CHR:&h”;
- N=CBANK*256+CH
- PRINT HEX$(N,3);”(”;N;”) ”
- PRINT” BANK:”;CBANK
- PRINT” PAL:”;PAL
- PRINT”LAYER:”;LAYER
- PRINT” REVH:”;SW$(REVH)
- PRINT” REVV:”;SW$(REVV)
- PRINT” VIEW:”;SW$(VIEW)
- RETURN
- ’──────────────────────────
- @SELECT ’メニュ-ニヨルセンタク
- ’──────────────────────────
- IF MF THEN @MENUMD
- IF B==32 THEN @SELGRID
- IF B==64 THEN @MENUON
- IF B==128 THEN @SELLAY
- RETURN
- ’---メニュ-ヲヒョウシ゛
- @MENUON
- MF=TRUE
- GOSUB @PUTMENU
- RETURN
- ’---ク゛リット゛キリカエ
- @SELGRID
- GRID=GRID XOR 1
- GOSUB @PUTGRID
- GOSUB @PUTOFS
- RETURN
- ’---レイヤ-キリカエ
- @SELLAY
- LAYER=LAYER XOR 1
- GOSUB @SETLAY
- GOSUB @PUTOFS
- RETURN
- ’---
- @MENUMD
- IF B==16 THEN @TOFILE
- IF B!=64 THEN @SELCHR
- ’---メニュ-クロ-ス゛
- @MENUOFF
- MF=FALSE
- DRG=FALSE
- GOSUB @CLRMENU
- GOSUB @SETGRID
- RETURN
- ’---ファィルモ-ト゛ヘ
- @TOFILE
- GOSUB @MENUOFF
- GOTO @FILEMODE
- ’---キャラセンタク
- @SELCHR
- GOSUB @PUTCSEL
- X=GDX:Y=GDY:W=255:H=63
- GOSUB @TOUCH
- IF R THEN @SELCTOP
- ’---ト゛ラック゛チュウカ?
- IF DRG THEN DRG=FALSE
- GOTO @SELPAL
- ’---ト゛ラック゛マエ?
- @SELCTOP
- IF DRG==FALSE THEN @SELC1ST
- ’---シゥウテン
- NX=FLOOR(X/8)
- NY=FLOOR(Y/8)
- X=FLOOR(OLDCH%32):OX=X
- Y=FLOOR(OLDCH/32):OY=Y
- IF X>NX THEN OX=NX:NX=X
- IF Y>NY THEN OY=NY:NY=Y
- CHNEW=OY*32+OX
- OX=(NX-OX)+1
- OY=(NY-OY)+1
- GOSUB @CCSRCLR
- CH=CHNEW
- CSX=OX:CSY=OY
- GOTO @SELPAL
- ’---シテン
- @SELC1ST
- IF OS==FALSE THEN @SELPAL
- DRG=TRUE
- OX=X:OY=Y
- GOSUB @CCSRCLR
- CSX=1:CSY=1
- X=FLOOR((OX-GDX)/8)
- Y=FLOOR((OY-GDY)/8)
- CH=Y*32+X
- OLDCH=CH
- ’--- イロ
- @SELPAL
- X=PDX:Y=PDY:W=63:H=W
- GOSUB @TOUCH
- IF R==FALSE GOTO @SELCB
- ’
- X=FLOOR((X-PDX)/16)
- Y=FLOOR((Y-PDY)/16)
- PAL=Y*4+X
- GOSUB @PALICON
- GOSUB @CHRALL
- GOSUB @PUTOFS
- RETURN
- ’--- キャラハ゛ンク
- @SELCB
- X=CDX:Y=CDY:W=63:H=15
- GOSUB @TOUCH
- IF R==FALSE GOTO @SELTOOL
- ’
- CBANK=FLOOR((X-CDX)/16)
- GOSUB @CBICON
- GOSUB @CHRALL
- GOSUB @PUTOFS
- RETURN
- ’--- ツ-ルキリカエ
- @SELTOOL
- X=TDX:Y=TDY:W=167:H=111
- GOSUB @TOUCH
- IF R==FALSE THEN RETURN
- IF OS THEN RETURN
- ’
- Y=FLOOR((Y-TDY)/16)
- ON Y GOTO @LY,@LY,@VW,@OF,@OF,@RH,@RV
- RETURN
- ’---
- @LY
- LAYER=Y
- GOTO @OF
- ’---
- @VW
- VIEW=VIEW XOR 1
- GOTO @OF
- ’---
- @RH
- REVH=REVH XOR 1
- GOTO @OF
- ’---
- @RV
- REVV=REVV XOR 1
- ’---
- @OF
- GOSUB @PUTOFS
- GOSUB @TLICON
- RETURN
- ’──────────────────────────
- @DRAWCHR ’キャラヲオク
- ’──────────────────────────
- IF MF THEN RETURN
- ’
- X=0:Y=0:W=32*8-1:H=24*8-1
- GOSUB @TOUCH
- IF R==FALSE THEN RETURN
- ’
- X=FLOOR(X/8)
- Y=FLOOR(Y/8)
- X=(X+FLOOR(BGLX/8)) AND 63
- Y=(Y+FLOOR(BGLY/8)) AND 63
- C=CH+CBANK*256
- ’---
- IF (BN AND 256)==0 GOTO @SKIPSNAP
- X=FLOOR(X/CSX)*CSX
- Y=FLOOR(Y/CSY)*CSY
- ’---
- @SKIPSNAP
- TX=FLOOR(CH%32)
- TY=FLOOR(CH/32)
- FOR IY=0 TO CSY-1
- IF IY+TY>7 GOTO @SKIPTY
- FOR IX=0 TO CSX-1
- IF IX+TX>31 GOTO @SKIPTX
- CX=X+IX:CY=Y+IY
- CCX=IX:CCY=IY
- IF REVH==FALSE THEN @SKIPRH
- CCX=CSX-1-IX
- @SKIPRH
- IF REVV==FALSE THEN @SKIPRV
- CCY=CSY-1-IY
- @SKIPRV
- CN=C+CCX+(CCY*32)
- BGPUT LAYER,CX,CY,CN,PAL,REVH,REVV
-
- @SKIPTX
- NEXT
-
- @SKIPTY
- NEXT
- RETURN
- ’==========================
- @CHRALL
- ’==========================
- ’---ウエカ゛メンハBGテ゛カク
- BGPAGE 0
- FOR Y=0 TO 7
- FOR X=0 TO 31
- N=CBANK*256+Y*32+X
- BGPUT 0,X,Y,N,PAL,0,0
- NEXT
- NEXT
- BGPAGE 1
- ’---シタカ゛メンハク゛ラフィック
- GPAGE 1:BGPAGE 1
- C$=CN$+STR$(CBANK)
- GFILL 0,0,256,64,0
- FOR I=0 TO 255
- X=GDX+FLOOR(I%32)*8
- Y=GDY+FLOOR(I/32)*8
- GPUTCHR X,Y,C$,I,PAL,1
- NEXT
- RETURN
- ’==========================
- @FILEMODE ’ファイルノヨミカキ
- ’==========================
- VISIBLE 1,1,0,0,0,0
- COLOR 0
- PNLTYPE ”KYA”
- FOR I=0 TO 3:ICONCLR I:NEXT
- SL$=”SCU”+STR$(LAYER)+”:”
- ’---
- @_FLOOP
- CLS
- BGPAGE 1:SPPAGE 1:GPAGE 1
- PRINT” L:SCRヨミコミ(1マイ)”
- PRINT” LW:SCRヨミコミ(2マイ)”
- PRINT” S:SCRホソ゛ン(1マイ)”
- PRINT” SW:SCRホソ゛ン(2マイ)”
- PRINT”COL:イロヨミコミ”
- PRINT”CHR:キャラヨミコミ”
- PRINT” Q:ファイルメニュ-オワリ”
- PRINT” E:ツ-ルオワリ”
- PRINT”────────────────────────────────”;
- ’---
- INPUT”コマント゛”;K$
- IF K$==”L” GOTO @_FLOAD
- IF K$==”LW” GOTO @_FLOADW
- IF K$==”S” GOTO @_FSAVE
- IF K$==”SW” GOTO @_FSAVEW
- IF K$==”COL” GOTO @_PLOAD
- IF K$==”CHR” GOTO @_CLOAD
- IF K$==”Q” GOTO @_FQUIT
- IF K$==”E” GOTO @_FEXIT
- GOTO @_FLOOP
- ’---
- @_PLOAD
- INPUT”ヨミコムナマエ(COL):”;K$
- K$=”COL0:”+K$:PRINT K$
- FOR I=0 TO 1
- BGPAGE I
- LOAD K$,FALSE
- NEXT
- GOTO @_FQUIT
- ’---
- @MKCOL
- N$=”0”+HEX$(N)
- N$=MID$(N$,LEN(N$)-2,2)
- RETURN
- ’---
- @_CLOAD
- INPUT”ヨミコムナマエ(CHR):”;K$
- N$=”BGU”+STR$(CBANK)
- K$=N$+”:”+K$
- PRINT K$
- FOR I=0 TO 1
- BGPAGE I
- LOAD K$,FALSE
- NEXT
- GOTO @_FQUIT
- ’---
- @_FLOAD
- INPUT”ヨミコムナマエ(SCR):”;K$
- K$=SL$+K$:PRINT K$
- LOAD K$,FALSE
- GOTO @_FQUIT
- ’---
- @_FLOADW
- INPUT”7モシ゛イナイテ゛ヨミコムナマエ(SCR):”;K$
- N$=MID$(K$,0,7)
- K$=”SCU0:0”+N$:PRINT K$
- LOAD K$,FALSE
- K$=”SCU1:1”+N$:PRINT K$
- LOAD K$,FALSE
- GOTO @_FQUIT
- ’---
- @_FSAVE
- INPUT”ホソ゛ンスルナマエ(SCR):”;K$
- K$=SL$+K$:PRINT K$
- SAVE K$
- GOTO @_FQUIT
- ’---
- @_FSAVEW
- INPUT”7モシ゛イナイテ゛カキコムナマエ(SCR):”;K$
- N$=MID$(K$,0,7)
- K$=”SCU0:0”+N$:PRINT K$
- SAVE K$
- K$=”SCU1:1”+N$:PRINT K$
- SAVE K$
- ’---
- @_FQUIT
- DSKIP=TRUE
- GOSUB @DISPSET
- GOSUB @CHRALL
- RETURN
- ’---
- @_FEXIT
- FOR I=1 TO 0 STEP -1
- SPPAGE I:SPCLR
- GPAGE I:GCLS
- NEXT
- FOR I=0 TO 255
- COLINIT ”GRP”,I
- COLINIT ”BG”,I
- NEXT
- COLOR 0
- CLS
- PRINT ”オツカレサマ!”
- END