Browse Source

[ScreenSaver] Decrunch 2022 version :)

Tomek Wójcik 5 months ago
parent
commit
be79e482f6

+ 28 - 0
ScreenSaver/Decrunch2022/README.md

@@ -0,0 +1,28 @@
+# ScreenSaver (Decrunch 2022)
+
+This is a custom version of the program released at Decrunch 2022 copy party.
+
+Yes, I entered this thing in a demo compo. No, it didn't win any prize ;).
+
+
+## Live Demo
+
+The video of the party version is here
+[here](https://www.youtube.com/watch?v=CNi-2Zg7Pdc).
+
+## Contents of this repository:
+
+* `ScreenSaver_Decrunch2022.adf` - a bootable ADF that launches the program
+  from the startup-sequence. Ready for writing to a floppy (or a Gotek flash
+  drive) or using in an emulator.
+* `ScreenSaver_Decrunch2022.AMOS` - AMOS Pro 2.0 source file.
+* `ScreenSaver_Decrunch2022.AMOS.txt` - TXT printout AMOS Pro 2.0 source file.
+* `ScreenSaver_Decrunch2022.exe` - the compiled program. Ready to run from CLI.
+
+## Author
+
+ScreenSaver is developed by [Tomek Wójcik](https://www.bthlabs.pl/).
+
+## License
+
+ScreenSaver is licensed under the MIT License.

BIN
ScreenSaver/Decrunch2022/ScreenSaver_Decrunch2022.AMOS


+ 265 - 0
ScreenSaver/Decrunch2022/ScreenSaver_Decrunch2022.AMOS.txt

@@ -0,0 +1,265 @@
+' Screen Saver v1.2 (Decrunch 2022 Edition)
+' Created By Tomek Wojcik <tomek@bthlabs.pl> 
+' Copyright 2020-present by BTHLabs (https://bthlabs.pl) 
+' Licensed under terms of MIT License
+
+
+' *** Globals
+WIDTH=320
+HEIGHT=200
+PADDING=10
+XMIN=PADDING
+XMAX=WIDTH-PADDING
+YMIN=PADDING
+YMAX=HEIGHT-PADDING
+PAL_MIN=4
+PAL_MAX=15
+
+Global WIDTH,HEIGHT,PADDING,XMIN,YMIN,XMAX,YMAX
+
+' *** Setup
+Degree 
+
+Auto View Off 
+Default Palette $0,$FFF,$0,$0,$BA6,$B30,$625,$FC0,$690,$CB6,$373,$F0,$8EE,$AAA,$737,$A26
+Screen Open 0,WIDTH,HEIGHT,16,Lowres : Screen Show 0
+Screen Open 1,WIDTH,HEIGHT,16,Lowres : Screen Hide 1
+Screen Open 2,WIDTH,HEIGHT,16,Lowres : Screen Hide 2
+
+Hide : Flash Off 
+Screen 0 : Curs Off 
+Screen 1 : Curs Off 
+Screen 2 : Curs Off 
+
+' *** Main Stuff 
+
+Procedure MAIN_DRAW_BORDER
+   Cls 0
+   Ink 1,0
+   Box 4,4 To 316,196
+   Pen 1 : Paper 0
+   Locate 0,0
+   Centre "Screen Saver"
+   Locate 0,24
+   Centre "By BTHLabs. Decrunch 2022."
+   Locate 35,0 : Pen 13 : Paper 0
+   Print "v1.2";
+End Proc
+
+Screen 0
+MAIN_DRAW_BORDER
+View 
+
+' *** The Rect Module
+RECT_PEN_MIN=4
+RECT_PEN_MAX=15
+RECT_MIN_SIZE=8
+
+Global RECT_PEN_MIN,RECT_PEN_MAX,RECT_MIN_SIZE
+
+Procedure RECT_TICK
+   If Timer mod 3=0
+      Randomize Timer
+
+      RECT_PEN=RECT_PEN_MIN+Rnd(RECT_PEN_MAX-RECT_PEN_MIN)
+      RECT_WIDTH=RECT_MIN_SIZE+Rnd(XMAX-PADDING-RECT_MIN_SIZE)
+      RECT_HEIGHT=RECT_MIN_SIZE+Rnd(YMAX-PADDING-RECT_MIN_SIZE)
+
+      If RECT_WIDTH=XMAX-PADDING
+         RECT_X=0
+      Else 
+         RECT_X=Rnd(XMAX-PADDING-RECT_WIDTH)
+      End If 
+
+      If RECT_HEIGHT=YMAX-PADDING
+         RECT_Y=0
+      Else 
+         RECT_Y=Rnd(YMAX-PADDING-RECT_HEIGHT)
+      End If 
+
+      Ink RECT_PEN,RECT_PEN
+      RECT_FX=XMIN+RECT_X
+      RECT_FY=YMIN+RECT_Y
+      RECT_TX=RECT_FX+RECT_WIDTH
+      RECT_TY=RECT_FY+RECT_HEIGHT
+      Bar RECT_FX,RECT_FY To RECT_TX,RECT_TY
+   End If 
+End Proc
+
+' *** The Radar Module 
+RADAR_CX=WIDTH/2
+RADAR_CY=HEIGHT/2
+RADAR_RADIUS=64
+RADAR_STEP=0
+RADAR_MAX_STEP=35
+Dim RADAR_POINTS(36,2)
+
+Global RADAR_CX,RADAR_CY,RADAR_RADIUS,RADAR_STEP,RADAR_MAX_STEP,RADAR_POINTS()
+
+Procedure RADAR_INIT
+   MAIN_DRAW_BORDER
+
+   RADAR_STEP=0
+
+   For I=0 To RADAR_MAX_STEP
+      RADAR_POINTS(I,0)=0
+      RADAR_POINTS(I,1)=0
+   Next I
+
+   Ink 1,0
+   Circle RADAR_CX,RADAR_CY,RADAR_RADIUS
+   Ink 10,0
+   Paint RADAR_CX,RADAR_CY
+   Ink 1,0
+   Circle RADAR_CX,RADAR_CY,1
+   Ink 11,0
+   Circle RADAR_CX,RADAR_CY,48
+   Circle RADAR_CX,RADAR_CY,32
+   Circle RADAR_CX,RADAR_CY,16
+End Proc
+
+Procedure RADAR_TICK
+   Screen Copy 2 To 1
+
+   Randomize Timer
+   RADAR_ANGLE=10*RADAR_STEP
+   RADAR_POINT_DIST=8+Rnd(RADAR_RADIUS-10)
+   RADAR_POINT_X=RADAR_POINT_DIST*Cos(RADAR_ANGLE)
+   RADAR_POINT_Y=RADAR_POINT_DIST*Sin(RADAR_ANGLE)
+   RADAR_POINTS(RADAR_STEP,0)=RADAR_POINT_X
+   RADAR_POINTS(RADAR_STEP,1)=RADAR_POINT_Y
+
+   Ink 7,0
+   For I=0 To RADAR_MAX_STEP
+      If RADAR_POINTS(I,0)<>0 and RADAR_POINTS(I,1)<>0
+         Plot RADAR_CX-RADAR_POINTS(I,0),RADAR_CY-RADAR_POINTS(I,1)
+      End If 
+   Next I
+
+   If RADAR_STEP=RADAR_MAX_STEP
+      RADAR_STEP=0
+   Else 
+      RADAR_STEP=RADAR_STEP+1
+   End If 
+
+   RADAR_ANGLE=10*RADAR_STEP
+   RADAR_HAND_X=(RADAR_RADIUS)*Cos(RADAR_ANGLE)
+   RADAR_HAND_Y=(RADAR_RADIUS)*Sin(RADAR_ANGLE)
+   Ink 1,0
+   Draw RADAR_CX,RADAR_CY To RADAR_CX-RADAR_HAND_X,RADAR_CY-RADAR_HAND_Y
+End Proc
+
+' *** The Text Module
+TXT_PEN_BASE=13
+TXT_PEN_SPECIAL=1
+
+Dim TXT_SPECIAL_STRINGS$(4)
+TXT_SPECIAL_STRINGS$(0)="Basia"
+TXT_SPECIAL_STRINGS$(1)="Ziomek"
+TXT_SPECIAL_STRINGS$(2)="Tomek"
+TXT_SPECIAL_STRINGS$(3)="Pecia"
+
+Dim TXT_SPECIAL_STRING_COORDS(4,2)
+
+Global TXT_PEN_BASE,TXT_PEN_SPECIAL,TXT_SPECIAL_STRINGS$(),TXT_SPECIAL_STRING_COORDS()
+
+Procedure TXT_INIT
+   Randomize Timer
+   For Y=1 To 23
+      For X=1 To 38
+         Pen TXT_PEN_BASE
+         Locate X,Y : Print Chr$(32+Rnd(64));
+      Next X
+   Next Y
+
+   For I=0 To 3
+      TXT_SPECIAL_STRING$=TXT_SPECIAL_STRINGS$(I)
+      TXT_SPECIAL_STRING_COORDS(I,0)=1+Rnd(37-Len(TXT_SPECIAL_STRING$))
+      TXT_SPECIAL_STRING_COORDS(I,1)=1+Rnd(22)
+   Next I
+End Proc
+
+Procedure TXT_TICK
+   Randomize Timer
+   TXT_HIGHLIGHT_COUNT=Rnd(50)
+
+   For I=0 To TXT_HIGHLIGHT_COUNT
+      TXT_HIGHLIGHT_X=1+Rnd(37)
+      TXT_HIGHLIGHT_Y=1+Rnd(22)
+      TXT_HIGHLIGHT_PEN=4+Rnd(11)
+      Locate TXT_HIGHLIGHT_X,TXT_HIGHLIGHT_Y
+      Pen TXT_HIGHLIGHT_PEN : Paper 0
+      Print Chr$(32+Rnd(64));
+   Next I
+
+   For I=0 To 3
+      Pen TXT_PEN_SPECIAL : Paper 0
+      Locate TXT_SPECIAL_STRING_COORDS(I,0),TXT_SPECIAL_STRING_COORDS(I,1)
+      Print TXT_SPECIAL_STRINGS$(I);
+   Next I
+End Proc
+
+' *** The Main Loop  
+
+CURRENT_MOD=0
+CURRENT_MOD_MAX_TIME=250
+LOCK_CURRENT_MOD=False
+
+Global CURRENT_MOD
+
+Procedure CURRENT_MOD_INIT
+   Screen 2
+
+   MAIN_DRAW_BORDER
+
+   If CURRENT_MOD=1
+      RADAR_INIT
+   Else If CURRENT_MOD=2
+      TXT_INIT
+   End If 
+
+   Screen Copy 2 To 1
+End Proc
+
+CURRENT_MOD_INIT
+
+CURRENT_MOD_START=Timer
+CURRENT_MOD_SWITCH_COUNT=0
+Do 
+   CURRENT_MOD_TIME=Timer-CURRENT_MOD_START
+   If LOCK_CURRENT_MOD=False and CURRENT_MOD_TIME>=CURRENT_MOD_MAX_TIME
+      CURRENT_MOD=CURRENT_MOD+1
+      If CURRENT_MOD>2
+         CURRENT_MOD=0
+      End If 
+
+      CURRENT_MOD_START=Timer
+      CURRENT_MOD_SWITCH_COUNT=CURRENT_MOD_SWITCH_COUNT+1
+
+      If CURRENT_MOD_SWITCH_COUNT=9
+         Exit 
+      End If 
+
+      CURRENT_MOD_INIT
+   End If 
+
+   Screen 1
+
+   If CURRENT_MOD=0
+      RECT_TICK
+   Else If CURRENT_MOD=1
+      RADAR_TICK
+   Else If CURRENT_MOD=2
+      TXT_TICK
+   End If 
+
+   Screen Copy 1 To 0
+
+   View 
+
+   Wait Vbl 
+
+   If Mouse Click<>0 or Key State(69)=True
+      Exit 
+   End If 
+Loop 

BIN
ScreenSaver/Decrunch2022/ScreenSaver_Decrunch2022.adf


BIN
ScreenSaver/Decrunch2022/ScreenSaver_Decrunch2022.exe