home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format 48
/
af048b.adf
/
Autoexec.AMOS
/
Autoexec.amosSourceCode
next >
Wrap
AMOS Source Code
|
1993-05-11
|
25KB
|
1,000 lines
' **********************************************************************
' * VMorph Version 2.00 (Beta) *
' * *
' * (c) 1992 - L.C.Wilkie *
' **********************************************************************
'
'
'
'
'
Set Buffer 24 : Degree
'
Screen Open 3,320,256,16,Lowres
C=$0 : For F=0 To 15 : Colour(F),C : C=C+$111 : Next
Flash Off : Cls 0
Screen Open 2,320,256,16,Lowres
Flash Off : Get Palette 3 : Cls 0
Screen Open 1,320,256,16,Lowres
Flash Off : Get Palette 3 : Cls 0
Screen Open 0,320,256,16,Lowres
Change Mouse 2
Flash Off : Get Palette 3 : Cls 0
'
Screen Open 4,640,80,4,Hires
Change Mouse 2 : Flash Off
Screen Display 4,128,255+42-80,,
Screen Hide 4
Unpack 9 To 4
Palette 0,0,0,0
'
Limit Mouse 128,42 To 127+320,42+255
'
' **********************************************************************
' * Grid and render variables *
' **********************************************************************
'
YES=1 : NO=0 : YES$="Yes" : NO$="No"
SCALE#=8
MXG#=32 : MYG#=32 : SXG=3 : SYG=3 : MXG=MXG# : MYG=MYG#
XG#=SXG : YG#=SYG
MIX=1 : PCNT#=0.5
FRAMES#=10 : FRMNO#=0
SOURCE=0 : DEST=1 : GRIDTYPE=SOURCE
SBANK=8 : DBANK=9
PANEL=1 : SNAME$=""
'
Dim GRID$(1,1)
GRID$(SOURCE,0)="Source"
GRID$(DEST,0)=" Dest"
Dim GRID#(MXG,MYG,3)
Dim XLLEN#(1)
Dim YLLEN#(1)
'
Global GRID$(),GRID#(),XLLEN#(),YLLEN#()
Global HYPOT#,PCNT#,MIX,GRIDTYPE,SOURCE,DEST,SBANK,DBANK,SCALE#
Global SXG,SYG,MXG#,MYG#,MXG,MYG,XG#,YG#,FRAMES#,FRMNO#,PANEL
Global X1#,Y1#,X2#,Y2#,X3#,Y3#,X4#,Y4#
Global X12#,Y12#,X22#,Y22#,X32#,Y32#,X42#,Y42#
Global YES,NO,YES$,NO$,SNAME$
'
' **********************************************************************
' * Panel variables *
' **********************************************************************
'
DP_RES$="" : DP_COL$="" : DP_INT$=NO$
Dim R_MODE$(1) : R_MODE$(0)="Morph" : R_MODE$(1)="Warp" : R_MODE=0 : RM_MORPH=0 : RM_WARP=1
Dim R_DSPL$(3) : R_DSPL$(0)="1/1" : R_DSPL$(1)="1/2" : R_DSPL$(2)="1/4" : R_DSPL$(3)="1/8" : R_DSPL=0
Dim A_MODE$(1) : A_MODE$(0)="Anim" : A_MODE$(1)="Sngle" : A_MODE=1 : AM_ANIM=0 : AM_SINGLE=1
A_END=9 : A_RSTART=1 : A_REND=8
' >> Start <<
'
Global DP_RES$,DP_COL$,DP_INT$
Global R_MODE$(),R_MODE,RM_MORPH,RM_WARP
Global R_DSPL$(),R_DSPL,A_MODE,A_MODE$(),AM_ANIM,AM_SINGLE
Global A_END,A_RSTART,A_REND
'
' **********************************************************************
' * Initialize some things *
' **********************************************************************
'
INITGRID
STZONES
UDPANEL
PANELTOP
Screen Show 4
Fade 1,$7A,$FFF,$0,$888
LDIFF[0]
LDIFF[1]
DRWGRID
'
' **********************************************************************
' * Main program loop *
' **********************************************************************
'
Do
Screen 0
MC=Mouse Click
XM=X Screen(X Mouse)
YM=Y Screen(Y Mouse)
Global XM,YM
'
If MC=1
If Scin(X Mouse,Y Mouse)=4
PANELACTION
Else
MVEPNT
End If
End If
If MC=2
If XM=0
ADROW
Else
If YM=0
ADCOL
Else
SWPGRID
End If
End If
End If
'
If Key State(64) Then TGPANEL
If Key State(55)
MORPH
End If
If Key State(68)
Clear Key
SWPGRID
End If
'
Loop
'
'
' **********************************************************************
' * The 'Big' procedure section *
' **********************************************************************
'
Procedure MORPH
'
On Error Goto EH
'
If A_MODE=AM_ANIM
SVENAME
If SNAME$=""
MESS["No save name selected, can't continue"]
Wait 100
PANELTOP
Pop Proc
End If
End If
'
Screen Copy 2 To 0
Screen Copy 3 To 1
Screen To Front 4
'
A_REND#=A_REND
A_END#=A_END
A_FRAME#=A_RSTART
BLOCK$=Str$(Int(XG#)*Int(YG#))-" "
'
Do
'
Screen 2 : Cls 0
Screen 3 : Cls 0
'
PCNT#=((100/A_REND#)*A_FRAME#)/100
TPCNT#=((100/A_END#)*A_FRAME#)/100
SPCNT#=PCNT#
DPCNT#=1-PCNT#
'
For Y=0 To YG#-1
For X=0 To XG#-1
'
If Mouse Key=3
MESS["Render aborted!"]
Wait 50
PANELTOP
Screen Copy 0 To 2
Screen Copy 1 To 3
DRWGRID
Screen To Front GRIDTYPE
Screen To Front 4
Pop Proc
End If
'
M$=R_MODE$(R_MODE)
BLK$=Str$((Y*XG#)+X+1)+"/"+BLOCK$
MESS[M$+"ing frame"+Str$(Int(A_FRAME#))+" (a), block"+BLK$+" (%"+Str$(TPCNT#*100)+" of Anim)..."]
'
X1#=GRID#(X,Y,0)
Y1#=GRID#(X,Y,1)
X2#=GRID#(X+1,Y,0)
Y2#=GRID#(X+1,Y,1)
X3#=GRID#(X+1,Y+1,0)
Y3#=GRID#(X+1,Y+1,1)
X4#=GRID#(X,Y+1,0)
Y4#=GRID#(X,Y+1,1)
'
X12#=GRID#(X,Y,2)+((GRID#(X,Y,0)-GRID#(X,Y,2))*DPCNT#)
Y12#=GRID#(X,Y,3)+((GRID#(X,Y,1)-GRID#(X,Y,3))*DPCNT#)
X22#=GRID#(X+1,Y,2)+((GRID#(X+1,Y,0)-GRID#(X+1,Y,2))*DPCNT#)
Y22#=GRID#(X+1,Y,3)+((GRID#(X+1,Y,1)-GRID#(X+1,Y,3))*DPCNT#)
X32#=GRID#(X+1,Y+1,2)+((GRID#(X+1,Y+1,0)-GRID#(X+1,Y+1,2))*DPCNT#)
Y32#=GRID#(X+1,Y+1,3)+((GRID#(X+1,Y+1,1)-GRID#(X+1,Y+1,3))*DPCNT#)
X42#=GRID#(X,Y+1,2)+((GRID#(X,Y+1,0)-GRID#(X,Y+1,2))*DPCNT#)
Y42#=GRID#(X,Y+1,3)+((GRID#(X,Y+1,1)-GRID#(X,Y+1,3))*DPCNT#)
'
If R_MODE=RM_MORPH
QUADCOPY[0,2]
Else
QUADCOPY[0,3]
Goto NXT
End If
'
MESS[M$+"ing frame"+Str$(Int(A_FRAME#))+" (b), block"+BLK$+" (%"+Str$(TPCNT#*100)+" of Anim)..."]
'
X1#=GRID#(X,Y,2)
Y1#=GRID#(X,Y,3)
X2#=GRID#(X+1,Y,2)
Y2#=GRID#(X+1,Y,3)
X3#=GRID#(X+1,Y+1,2)
Y3#=GRID#(X+1,Y+1,3)
X4#=GRID#(X,Y+1,2)
Y4#=GRID#(X,Y+1,3)
'
X12#=GRID#(X,Y,0)+((GRID#(X,Y,2)-GRID#(X,Y,0))*SPCNT#)
Y12#=GRID#(X,Y,1)+((GRID#(X,Y,3)-GRID#(X,Y,1))*SPCNT#)
X22#=GRID#(X+1,Y,0)+((GRID#(X+1,Y,2)-GRID#(X+1,Y,0))*SPCNT#)
Y22#=GRID#(X+1,Y,1)+((GRID#(X+1,Y,3)-GRID#(X+1,Y,1))*SPCNT#)
X32#=GRID#(X+1,Y+1,0)+((GRID#(X+1,Y+1,2)-GRID#(X+1,Y+1,0))*SPCNT#)
Y32#=GRID#(X+1,Y+1,1)+((GRID#(X+1,Y+1,3)-GRID#(X+1,Y+1,1))*SPCNT#)
X42#=GRID#(X,Y+1,0)+((GRID#(X,Y+1,2)-GRID#(X,Y+1,0))*SPCNT#)
Y42#=GRID#(X,Y+1,1)+((GRID#(X,Y+1,3)-GRID#(X,Y+1,1))*SPCNT#)
'
QUADCOPY[1,3]
'
NXT:
Next
Next
'
If R_MODE=RM_MORPH
MESS["Mixing frames"+Str$(Int(A_FRAME#))+"(a+b), (%"+Str$(TPCNT#*100)+" of Anim)..."]
MIX[PCNT#]
End If
'
If A_MODE=AM_SINGLE
MESS["Packing screen to buffer..."]
Spack 3 To 8
Exit
End If
'
MESS["Saving frame"+Str$(Int(A_FRAME#))+"..."]
Screen 3
Save Iff SNAME$+"."+Str$(Int(A_FRAME#))-" "
If A_FRAME#=A_REND Then Exit
A_FRAME#=A_FRAME#+1
Loop
'
MESS["All done"]
Wait 100
TIDY:
Screen Copy 0 To 2
Screen Copy 1 To 3
DRWGRID
Screen To Front GRIDTYPE
Screen To Front 4
PANELTOP
Pop Proc
'
EH:
If Errn=84
MESS["Disk write protected - Please un-protect and try again"]
Wait 100
Else
MESS["ERROR!"]
Wait 50
End If
Resume TIDY
'
End Proc
Procedure MVEPNT
Screen GRIDTYPE
XO=(GRIDTYPE*2)
YO=(GRIDTYPE*2)+1
For Y=0 To YG#
For X=0 To XG#
If Abs(XM-GRID#(X,Y,XO))<2
If Abs(YM-GRID#(X,Y,YO))<2
Gr Writing 2
While Mouse Click<1
XM=X Screen(X Mouse)
YM=Y Screen(Y Mouse)
If X>0
Draw GRID#(X-1,Y,XO),GRID#(X-1,Y,YO) To XM,YM
Draw GRID#(X-1,Y,XO),GRID#(X-1,Y,YO) To XM,YM
End If
If Y>0
Draw GRID#(X,Y-1,XO),GRID#(X,Y-1,YO) To XM,YM
Draw GRID#(X,Y-1,XO),GRID#(X,Y-1,YO) To XM,YM
End If
If X<XG#
Draw GRID#(X+1,Y,XO),GRID#(X+1,Y,YO) To XM,YM
Draw GRID#(X+1,Y,XO),GRID#(X+1,Y,YO) To XM,YM
End If
If Y<YG#
Draw GRID#(X,Y+1,XO),GRID#(X,Y+1,YO) To XM,YM
Draw GRID#(X,Y+1,XO),GRID#(X,Y+1,YO) To XM,YM
End If
Wend
GRID#(X,Y,XO)=XM
GRID#(X,Y,YO)=YM
DRWGRID
Pop Proc
End If
End If
Next
Next
End Proc
Procedure ADROW
XO=(GRIDTYPE*2)
YO=(GRIDTYPE*2)+1
For Y=0 To YG#-1
Y1#=GRID#(0,Y,1)
Y2#=GRID#(0,Y+1,1)
If Y1#<YM
If Y2#>YM
YG#=YG#+1
If YG#>MYG#
MESS["Maximun rows reached"]
Wait 100
PANELTOP
Pop Proc
End If
'
For YY=YG# To Y+2 Step -1
For X=0 To XG#
GRID#(X,YY,0)=GRID#(X,YY-1,0)
GRID#(X,YY,1)=GRID#(X,YY-1,1)
GRID#(X,YY,2)=GRID#(X,YY-1,2)
GRID#(X,YY,3)=GRID#(X,YY-1,3)
Next
Next
For X=0 To XG#
XD#=(GRID#(X,Y,0)-GRID#(X,Y+2,0))/2
YD#=(GRID#(X,Y,1)-GRID#(X,Y+2,1))/2
GRID#(X,Y+1,0)=GRID#(X,Y+1,0)+XD#
GRID#(X,Y+1,1)=GRID#(X,Y+1,1)+YD#
XD#=(GRID#(X,Y,2)-GRID#(X,Y+2,2))/2
YD#=(GRID#(X,Y,3)-GRID#(X,Y+2,3))/2
GRID#(X,Y+1,2)=GRID#(X,Y+1,2)+XD#
GRID#(X,Y+1,3)=GRID#(X,Y+1,3)+YD#
Next
'
DRWGRID
TPRINT[618,36,14,Str$(Int(YG#))-" "]
Pop Proc
End If
End If
Next
End Proc
Procedure ADCOL
XO=(GRIDTYPE*2)
YO=(GRIDTYPE*2)+1
For X=0 To XG#-1
X1#=GRID#(X,0,0)
X2#=GRID#(X+1,0,0)
If X1#<XM
If X2#>XM
XG#=XG#+1
If XG#>MXG#
MESS["Maximum columns reached"]
Wait 100
PANELTOP
Pop Proc
End If
'
For Y=0 To YG#
For XX=XG# To X+2 Step -1
GRID#(XX,Y,0)=GRID#(XX-1,Y,0)
GRID#(XX,Y,1)=GRID#(XX-1,Y,1)
GRID#(XX,Y,2)=GRID#(XX-1,Y,2)
GRID#(XX,Y,3)=GRID#(XX-1,Y,3)
Next
Next
For Y=0 To YG#
XD#=(GRID#(X,Y,0)-GRID#(X+2,Y,0))/2
YD#=(GRID#(X,Y,1)-GRID#(X+2,Y,1))/2
GRID#(X+1,Y,0)=GRID#(X+1,Y,0)+XD#
GRID#(X+1,Y,1)=GRID#(X+1,Y,1)+YD#
XD#=(GRID#(X,Y,2)-GRID#(X+2,Y,2))/2
YD#=(GRID#(X,Y,3)-GRID#(X+2,Y,3))/2
GRID#(X+1,Y,2)=GRID#(X+1,Y,2)+XD#
GRID#(X+1,Y,3)=GRID#(X+1,Y,3)+YD#
Next
'
DRWGRID
TPRINT[618,25,14,Str$(Int(XG#))-" "]
Pop Proc
End If
End If
Next
End Proc
Procedure HYPOT[X#,Y#,XX#,YY#]
L1#=Abs(X#-XX#)
L2#=Abs(Y#-YY#)
HYPOT#=Sqr((L1#*L1#)+(L2#*L2#))
End Proc
Procedure MIX[P#]
'
XOFF=160-(160/SCALE#)
YOFF=128-(128/SCALE#)
'
For Y=0 To(256/SCALE#)-1
For X=0 To(320/SCALE#)-1
Screen 3 : P1=Point(X+XOFF,Y+YOFF)
Screen 2 : P2=Point(X+XOFF,Y+YOFF)
C1#=Colour(P1) and $F
C2#=Colour(P2) and $F
CD#=C1#-C2# : PD#=(CD#*P#)
C=Int(C2#+PD#)
Screen 3
Plot X+XOFF,Y+YOFF,C
Next
Next
End Proc
Procedure LDIFF[S]
Clear Key
On Error Proc EHANDLER
Resume Label LDIFF
LDIFF:
If S=SOURCE Then S$="Select a Source image" Else S$="Select a Destination image"
NAME$=Fsel$("*.Iff","",S$)
If NAME$="" Then Pop Proc
If Not Exist(NAME$) Then Pop Proc
Screen S+2
Load Iff NAME$
'
For C=0 To 15
If Colour(C)<>C*$111
MESS["Palette order different - remapping... (2 mins)"]
For Y=0 To 254
For X=0 To 319
C=Colour(Point(X,Y))
Plot X,Y,C/$111
Next
Next
For F=0 To 15
Colour F,F*$111
Next
Goto CPS
End If
Next
'
CPS:
'
Screen Copy S+2 To S
NAME$=Right$(NAME$,Len(NAME$)-Instr(NAME$,":"))
Do
Z=Instr(NAME$,"/")
If Z=0
Exit
Else
NAME$=Right$(NAME$,Len(NAME$)-Z)
End If
Loop
GRID$(S,1)=NAME$
DRWGRID
PANELTOP
End Proc
Procedure QUADCOPY[S1,S2]
'
XOFF=160-(160/SCALE#)
YOFF=128-(128/SCALE#)
'
X12#=X12#/SCALE# : Y12#=Y12#/SCALE#
X22#=X22#/SCALE# : Y22#=Y22#/SCALE#
X32#=X32#/SCALE# : Y32#=Y32#/SCALE#
X42#=X42#/SCALE# : Y42#=Y42#/SCALE#
'
Screen To Front S2
Screen To Front 4
Screen S2
'
HYPOT[X12#,Y12#,X22#,Y22#] : XLLEN#(0)=HYPOT#
HYPOT[X22#,Y22#,X32#,Y32#] : YLLEN#(0)=HYPOT#
HYPOT[X32#,Y32#,X42#,Y42#] : XLLEN#(1)=HYPOT#
HYPOT[X42#,Y42#,X12#,Y12#] : YLLEN#(1)=HYPOT#
'
If XLLEN#(0)>XLLEN#(1) Then XDIV#=XLLEN#(0) Else XDIV#=XLLEN#(1)
If YLLEN#(0)>YLLEN#(1) Then YDIV#=YLLEN#(0) Else YDIV#=YLLEN#(1)
'
'
For C#=0 To YDIV#
'
LSX#=X1#+(((X4#-X1#)/YDIV#)*C#)
LSY#=Y1#+(((Y4#-Y1#)/YDIV#)*C#)
LEX#=X2#+(((X3#-X2#)/YDIV#)*C#)
LEY#=Y2#+(((Y3#-Y2#)/YDIV#)*C#)
'
LSX2#=X12#+(((X42#-X12#)/YDIV#)*C#)
LSY2#=Y12#+(((Y42#-Y12#)/YDIV#)*C#)
LEX2#=X22#+(((X32#-X22#)/YDIV#)*C#)
LEY2#=Y22#+(((Y32#-Y22#)/YDIV#)*C#)
'
'
For R#=0 To XDIV#
'
LX#=LSX#+(((LEX#-LSX#)/XDIV#)*R#)
LY#=LSY#+(((LEY#-LSY#)/XDIV#)*R#)
LX2#=LSX2#+(((LEX2#-LSX2#)/XDIV#)*R#)
LY2#=LSY2#+(((LEY2#-LSY2#)/XDIV#)*R#)
Screen S1
P=Point(LX#,LY#)
Screen S2 :
Plot LX2#+XOFF,LY2#+YOFF,P
Plot LX2#+XOFF,LY2#+YOFF+1,P
'
Next
Next
End Proc
Procedure SVEMORPH
SVENAME$=Fsel$("DF1:","Morph","Save Morph")
If SVENAME$="" Then Pop Proc
End Proc
Procedure PANELTOP
A$="VMorph V2 (Beta) "+GRID$(GRIDTYPE,0)+":"+GRID$(GRIDTYPE,1)
MESS[A$]
End Proc
Procedure MESS[A$]
S=Screen
Screen 4
Ink 0,0 : Bar 18,1 To 622,8
Ink 1,0 : TB=Text Base
Text 18,1+TB,A$
Screen S
End Proc
Procedure INITGRID
XD#=(319/XG#)
YD#=(255/YG#)
X#=0 : Y#=0
For Y=0 To YG#
For X=0 To XG#
GRID#(X,Y,0)=X#
GRID#(X,Y,1)=Y#
GRID#(X,Y,2)=X#
GRID#(X,Y,3)=Y#
X#=X#+XD#
Next
X#=0
Y#=Y#+YD#
Next
End Proc
Procedure DRWGRID
Screen Copy GRIDTYPE+2 To GRIDTYPE
Screen GRIDTYPE
XO=(GRIDTYPE*2)
YO=(GRIDTYPE*2)+1
Gr Writing 2
Ink 15
For YY=0 To YG#-1
For XX=0 To XG#
Draw GRID#(XX,YY,XO),GRID#(XX,YY,YO) To GRID#(XX,YY+1,XO),GRID#(XX,YY+1,YO)
Next
Next
For YY=0 To YG#
For XX=0 To XG#-1
Draw GRID#(XX,YY,XO),GRID#(XX,YY,YO) To GRID#(XX+1,YY,XO),GRID#(XX+1,YY,YO)
Next
Next
Gr Writing 1
End Proc
Procedure SWPGRID
GRIDTYPE=GRIDTYPE xor 1
DRWGRID
Screen To Front GRIDTYPE
Screen To Front 4
PANELTOP
End Proc
Procedure TGPANEL
If PANEL=1
Screen Hide 4
PANEL=0
Wait 5
Else
Screen To Front 4
Screen Show 4
PANEL=1
Wait 5
End If
End Proc
Procedure STZONES
Wait 50
Reserve Zone 23
Screen 4 : Ink 1
For Z=0 To 22
Read X,Y,W,H
Set Zone Z+1,X,Y To X+W,Y+H
Next
Data 0,0,15,9
Data 624,0,15,9
Data 158,24,16,9
Data 158,35,16,9
Data 158,46,16,9
Data 158,57,16,9
Data 275,24,16,9
Data 275,68,16,9
Data 321,68,16,9
Data 275,46,16,9
Data 321,46,16,9
Data 275,57,16,9
Data 321,57,16,9
Data 424,24,16,9
Data 424,35,16,9
Data 424,46,16,9
Data 523,24,16,9
Data 523,35,16,9
Data 506,46,16,9
Data 540,46,16,9
Data 506,57,16,9
Data 540,57,16,9
Data 424,57,16,9
End Proc
Procedure SHADIN[X,Y,W,H]
Screen 4
Ink 1 : Polyline X+1,Y+H To X+W,Y+H To X+W,Y+1
Ink 2 : Polyline X,Y+H-1 To X,Y To X+W-1,Y
End Proc
Procedure SHADOUT[X,Y,W,H]
Screen 4
Ink 2 : Polyline X+1,Y+H To X+W,Y+H To X+W,Y+1
Ink 1 : Polyline X,Y+H-1 To X,Y To X+W-1,Y
End Proc
Procedure UDPANEL
TPRINT[34,25,76,"320x256"]
TPRINT[34,36,76,"16"]
TPRINT[34,47,76,NO$]
'
TPRINT[176,25,42,R_MODE$(R_MODE)]
TPRINT[176,36,42,R_DSPL$(R_DSPL)]
'
TPRINT[293,25,42,A_MODE$(A_MODE)]
TPRINT[293,36,26,"0"]
TPRINT[293,47,26,Str$(A_END)-" "]
TPRINT[293,58,26,Str$(A_RSTART)-" "]
TPRINT[293,69,26,Str$(A_REND)-" "]
'
TPRINT[524,47,14,Str$(SXG)-" "]
TPRINT[524,58,14,Str$(SYG)-" "]
'
TPRINT[618,25,14,Str$(Int(XG#))-" "]
TPRINT[618,36,14,Str$(Int(YG#))-" "]
End Proc
Procedure TPRINT[X,Y,W,A$]
Screen 4
Ink 0
Bar X,Y To X+W,Y+7
Ink 1,0 : Text X,Y+Text Base,A$
End Proc
Procedure PANELACTION
On Error Goto EH
Screen 4
MZ=Mouse Zone
'
' >> Quit <<
'
If MZ=1
SHADIN[0,0,15,9]
While Mouse Key>0 : Wend
MESS["Are you sure you want to quit? (Press Y or N)"]
Do
If Key State(21)
Exit
End If
If Key State(54)
SHADOUT[0,0,15,9]
PANELTOP
Pop Proc
End If
Loop
SHADOUT[0,0,15,9]
Fade 1,0,0,0,0
Wait 25
Direct
End If
'
' >> Cycle render mode <<
'
If MZ=3
SHADIN[158,24,16,9]
While Mouse Key>0 : Wend
Inc R_MODE : R_MODE=R_MODE and $1
TPRINT[176,25,42,R_MODE$(R_MODE)]
SHADOUT[158,24,16,9]
End If
'
' >> Cycle display size <<
'
If MZ=4
SHADIN[158,35,16,9]
While Mouse Key>0 : Wend
Inc R_DSPL : R_DSPL=R_DSPL and $3
SCALE#=Val(Right$(R_DSPL$(R_DSPL),1))
TPRINT[176,36,42,R_DSPL$(R_DSPL)]
SHADOUT[158,35,16,9]
End If
'
' >> Render start <<
'
If MZ=5
SHADIN[158,46,16,9]
While Mouse Key>0 : Wend
SHADOUT[158,46,16,9]
Wait 5
MORPH
End If
'
' >> Cycle anim mode <<
'
If MZ=7
SHADIN[275,24,16,9]
While Mouse Key>0 : Wend
Inc A_MODE : A_MODE=A_MODE and 1
TPRINT[293,25,42,A_MODE$(A_MODE)]
SHADOUT[275,24,16,9]
End If
'
' >> Dec range end <<
'
If MZ=8
SHADIN[275,68,16,9]
While Mouse Key>0 : Wend
If A_REND>A_RSTART
If A_REND>1
Dec A_REND
TPRINT[293,69,26,Str$(A_REND)-" "]
End If
End If
SHADOUT[275,68,16,9]
End If
'
' >> Inc range end <<
'
If MZ=9
SHADIN[321,68,16,9]
While Mouse Key>0 : Wend
If A_REND<A_END
Inc A_REND
TPRINT[293,69,26,Str$(A_REND)-" "]
End If
SHADOUT[321,68,16,9]
End If
'
' >> Dec anim end <<
'
If MZ=10
SHADIN[275,46,16,9]
While Mouse Key>0 : Wend
If A_END>1
Dec A_END
TPRINT[293,47,26,Str$(A_END)-" "]
If A_REND>A_END
A_REND=A_END
TPRINT[293,69,26,Str$(A_REND)-" "]
End If
End If
SHADOUT[275,46,16,9]
End If
'
' >> Inc anim end <<
'
If MZ=11
SHADIN[321,46,16,9]
While Mouse Key>0 : Wend
If A_END<999
Inc A_END
TPRINT[293,47,26,Str$(A_END)-" "]
End If
SHADOUT[321,46,16,9]
End If
'
' >> Dec range start <<
'
If MZ=12
SHADIN[275,57,16,9]
While Mouse Key>0 : Wend
If A_RSTART>0
Dec A_RSTART
TPRINT[293,58,26,Str$(A_RSTART)-" "]
End If
SHADOUT[275,57,16,9]
End If
'
' >> Inc range start <<
'
If MZ=13
SHADIN[321,57,16,9]
While Mouse Key>0 : Wend
If A_RSTART<A_REND
Inc A_RSTART
TPRINT[293,58,26,Str$(A_RSTART)-" "]
End If
SHADOUT[321,57,16,9]
End If
'
' >> Load Source <<
'
If MZ=14
SHADIN[424,24,16,9]
While Mouse Key>0 : Wend
SHADOUT[424,24,16,9]
LDIFF[SOURCE]
End If
'
' >> Load Destination <<
'
If MZ=15
SHADIN[424,35,16,9]
While Mouse Key>0 : Wend
SHADOUT[424,35,16,9]
LDIFF[DEST]
End If
'
' >> View Buffer <<
'
If MZ=16
SHADIN[424,46,16,9]
If Length(8)>0
Unpack 8 To 3
While Mouse Key=0 : Wend
Screen To Front 4
SHADOUT[424,46,16,9]
Screen Copy 1 To 3
Screen To Front GRIDTYPE
Screen To Front 4
Screen GRIDTYPE
Else
While Mouse Key>0 : Wend
Screen To Front 4
SHADOUT[424,46,16,9]
MESS["No image stored in buffer"]
Wait 100
PANELTOP
End If
End If
'
' >> Save Buffer <<
'
If MZ=23
SHADIN[424,57,16,9]
If Length(8)>0
SVENAME
If SNAME$=""
SHADOUT[424,57,16,9]
MESS["No save name selected, can't continue"]
Wait 100
PANELTOP
Pop Proc
End If
Unpack 8 To 3
MESS["Saving buffer..."]
Screen 3
Save Iff SNAME$
Screen To Front 4
SHADOUT[424,57,16,9]
PANELTOP
Screen Copy 1 To 3
Screen To Front GRIDTYPE
Screen To Front 4
Screen GRIDTYPE
Else
While Mouse Key>0 : Wend
Screen To Front 4
SHADOUT[424,57,16,9]
MESS["No image stored in buffer"]
Wait 100
PANELTOP
End If
End If
'
' >> Swap grids <<
'
If MZ=17
SHADIN[523,24,16,9]
While Mouse Key>0 : Wend
SHADOUT[523,24,16,9]
SWPGRID
End If
'
' >> Reset grids <<
'
If MZ=18
SHADIN[523,35,16,9]
While Mouse Key>0 : Wend
SHADOUT[523,35,16,9]
XG#=SXG
YG#=SYG
TPRINT[618,25,14,Str$(Int(XG#))-" "]
TPRINT[618,36,14,Str$(Int(YG#))-" "]
INITGRID
DRWGRID
End If
'
' >> Dec X reset <<
'
If MZ=19
SHADIN[506,46,16,9]
While Mouse Key>0 : Wend
If SXG>1
Dec SXG
TPRINT[524,47,14,Str$(SXG)-" "]
End If
SHADOUT[506,46,16,9]
End If
'
' >> Inc X reset <<
'
If MZ=20
SHADIN[540,46,16,9]
While Mouse Key>0 : Wend
If SXG<MXG
Inc SXG
TPRINT[524,47,14,Str$(SXG)-" "]
End If
SHADOUT[540,46,16,9]
End If
'
' >> Dec Y reset <<
'
If MZ=21
SHADIN[506,57,16,9]
While Mouse Key>0 : Wend
If SYG>1
Dec SYG
TPRINT[524,58,14,Str$(SYG)-" "]
End If
SHADOUT[506,57,16,9]
End If
'
' >> Inc Y reset <<
'
If MZ=22
SHADIN[540,57,16,9]
While Mouse Key>0 : Wend
If SYG<MYG
Inc SYG
TPRINT[524,58,14,Str$(SYG)-" "]
End If
SHADOUT[540,57,16,9]
End If
'
RET:
PANELTOP
Pop Proc
'
EH:
If Errn=84
Screen To Front 4
SHADOUT[424,57,16,9]
PANELTOP
Screen Copy 1 To 3
Screen To Front GRIDTYPE
Screen To Front 4
Screen GRIDTYPE
MESS["Disk write protected - Please un-protect and try again"]
Wait 100
Else
MESS["ERROR!"]
Wait 100
End If
Resume RET
End Proc
Procedure SVENAME
STRT:
Clear Key
SNAME$=Fsel$("","","Choose a file name","* Check write-protection *")
If SNAME$=""
Pop Proc
End If
If Exist(SNAME$)
MESS["File exists, replace? (Press Y or N)"]
Do
If Key State(21)
PANELTOP
Exit
End If
If Key State(54)
PANELTOP
Goto STRT
End If
Loop
End If
End Proc
Procedure EHANDLER
If Errn=32
MESS["IFF image not of required dimensions"]
Wait 100
PANELTOP
Resume Label
Pop Proc
End If
End Proc