docs(animations): recapture screencasts as mp4 and update index page
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sat, 22 Aug 2026 10:48:58 +0000 (13:48 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sat, 22 Aug 2026 10:48:58 +0000 (13:48 +0300)
- Replace all .webm screencasts with recaptured "- Screencast 0.mp4"
  versions showcasing new CRT Basic capabilities
- Update index.org video references to the mp4 files and show the new
  Tree screenshot instead of a video
- Add missing sections for circular patterns, sun&eart, maze, matrix2
  and mkcircle
- Add mkcircle.bas source

39 files changed:
2D GFX/Animations/2D rotation - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/2D rotation.webm [deleted file]
2D GFX/Animations/Bump mapping - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/Bump mapping.webm [deleted file]
2D GFX/Animations/DNA - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/DNA.webm [deleted file]
2D GFX/Animations/Orbiting particles - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/Orbiting particles.webm [deleted file]
2D GFX/Animations/Polygon - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/Polygon textured - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/Polygon textured.webm [deleted file]
2D GFX/Animations/Polygon.webm [deleted file]
2D GFX/Animations/Screensaver - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/Screensaver, flying hand fans - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/Screensaver, flying hand fans.webm [deleted file]
2D GFX/Animations/Screensaver.webm [deleted file]
2D GFX/Animations/Snowfall - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/Snowfall.webm [deleted file]
2D GFX/Animations/Tree - Screenshot 0.png [new file with mode: 0644]
2D GFX/Animations/Tree.webm [deleted file]
2D GFX/Animations/Yin and yang - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/Yin and yang.webm [deleted file]
2D GFX/Animations/circular patterns - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/circular patterns.webm [deleted file]
2D GFX/Animations/hacker - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/hacker.webm [deleted file]
2D GFX/Animations/index.org
2D GFX/Animations/matrix - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/matrix.webm [deleted file]
2D GFX/Animations/matrix2 - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/matrix2.webm [deleted file]
2D GFX/Animations/maze - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/maze.webm [deleted file]
2D GFX/Animations/mkcircle - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/mkcircle.bas [new file with mode: 0755]
2D GFX/Animations/sun&eart - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/text mode animation - Screencast 0.mp4 [new file with mode: 0644]
2D GFX/Animations/text mode animation.bas
2D GFX/Animations/text mode animation.webm [deleted file]

diff --git a/2D GFX/Animations/2D rotation - Screencast 0.mp4 b/2D GFX/Animations/2D rotation - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..18973a4
Binary files /dev/null and b/2D GFX/Animations/2D rotation - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/2D rotation.webm b/2D GFX/Animations/2D rotation.webm
deleted file mode 100644 (file)
index d3384d3..0000000
Binary files a/2D GFX/Animations/2D rotation.webm and /dev/null differ
diff --git a/2D GFX/Animations/Bump mapping - Screencast 0.mp4 b/2D GFX/Animations/Bump mapping - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..c3169df
Binary files /dev/null and b/2D GFX/Animations/Bump mapping - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/Bump mapping.webm b/2D GFX/Animations/Bump mapping.webm
deleted file mode 100644 (file)
index 4bf57e0..0000000
Binary files a/2D GFX/Animations/Bump mapping.webm and /dev/null differ
diff --git a/2D GFX/Animations/DNA - Screencast 0.mp4 b/2D GFX/Animations/DNA - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..0741389
Binary files /dev/null and b/2D GFX/Animations/DNA - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/DNA.webm b/2D GFX/Animations/DNA.webm
deleted file mode 100644 (file)
index 794d6ad..0000000
Binary files a/2D GFX/Animations/DNA.webm and /dev/null differ
diff --git a/2D GFX/Animations/Orbiting particles - Screencast 0.mp4 b/2D GFX/Animations/Orbiting particles - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..b1fc7d7
Binary files /dev/null and b/2D GFX/Animations/Orbiting particles - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/Orbiting particles.webm b/2D GFX/Animations/Orbiting particles.webm
deleted file mode 100644 (file)
index 754e33e..0000000
Binary files a/2D GFX/Animations/Orbiting particles.webm and /dev/null differ
diff --git a/2D GFX/Animations/Polygon - Screencast 0.mp4 b/2D GFX/Animations/Polygon - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..a6dbe13
Binary files /dev/null and b/2D GFX/Animations/Polygon - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/Polygon textured - Screencast 0.mp4 b/2D GFX/Animations/Polygon textured - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..2ab4984
Binary files /dev/null and b/2D GFX/Animations/Polygon textured - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/Polygon textured.webm b/2D GFX/Animations/Polygon textured.webm
deleted file mode 100644 (file)
index 41c764d..0000000
Binary files a/2D GFX/Animations/Polygon textured.webm and /dev/null differ
diff --git a/2D GFX/Animations/Polygon.webm b/2D GFX/Animations/Polygon.webm
deleted file mode 100644 (file)
index 31bf79f..0000000
Binary files a/2D GFX/Animations/Polygon.webm and /dev/null differ
diff --git a/2D GFX/Animations/Screensaver - Screencast 0.mp4 b/2D GFX/Animations/Screensaver - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..e087928
Binary files /dev/null and b/2D GFX/Animations/Screensaver - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/Screensaver, flying hand fans - Screencast 0.mp4 b/2D GFX/Animations/Screensaver, flying hand fans - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..c56a7e1
Binary files /dev/null and b/2D GFX/Animations/Screensaver, flying hand fans - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/Screensaver, flying hand fans.webm b/2D GFX/Animations/Screensaver, flying hand fans.webm
deleted file mode 100644 (file)
index 66769f7..0000000
Binary files a/2D GFX/Animations/Screensaver, flying hand fans.webm and /dev/null differ
diff --git a/2D GFX/Animations/Screensaver.webm b/2D GFX/Animations/Screensaver.webm
deleted file mode 100644 (file)
index fd41592..0000000
Binary files a/2D GFX/Animations/Screensaver.webm and /dev/null differ
diff --git a/2D GFX/Animations/Snowfall - Screencast 0.mp4 b/2D GFX/Animations/Snowfall - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..2a7ee1a
Binary files /dev/null and b/2D GFX/Animations/Snowfall - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/Snowfall.webm b/2D GFX/Animations/Snowfall.webm
deleted file mode 100644 (file)
index 64ced88..0000000
Binary files a/2D GFX/Animations/Snowfall.webm and /dev/null differ
diff --git a/2D GFX/Animations/Tree - Screenshot 0.png b/2D GFX/Animations/Tree - Screenshot 0.png
new file mode 100644 (file)
index 0000000..1e93db0
Binary files /dev/null and b/2D GFX/Animations/Tree - Screenshot 0.png differ
diff --git a/2D GFX/Animations/Tree.webm b/2D GFX/Animations/Tree.webm
deleted file mode 100644 (file)
index a3d8b66..0000000
Binary files a/2D GFX/Animations/Tree.webm and /dev/null differ
diff --git a/2D GFX/Animations/Yin and yang - Screencast 0.mp4 b/2D GFX/Animations/Yin and yang - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..dd7dab7
Binary files /dev/null and b/2D GFX/Animations/Yin and yang - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/Yin and yang.webm b/2D GFX/Animations/Yin and yang.webm
deleted file mode 100644 (file)
index 9c78c91..0000000
Binary files a/2D GFX/Animations/Yin and yang.webm and /dev/null differ
diff --git a/2D GFX/Animations/circular patterns - Screencast 0.mp4 b/2D GFX/Animations/circular patterns - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..ecd790b
Binary files /dev/null and b/2D GFX/Animations/circular patterns - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/circular patterns.webm b/2D GFX/Animations/circular patterns.webm
deleted file mode 100644 (file)
index 99243c8..0000000
Binary files a/2D GFX/Animations/circular patterns.webm and /dev/null differ
diff --git a/2D GFX/Animations/hacker - Screencast 0.mp4 b/2D GFX/Animations/hacker - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..a227e65
Binary files /dev/null and b/2D GFX/Animations/hacker - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/hacker.webm b/2D GFX/Animations/hacker.webm
deleted file mode 100644 (file)
index 553dc27..0000000
Binary files a/2D GFX/Animations/hacker.webm and /dev/null differ
index 91b4aa1..0abf179 100644 (file)
@@ -39,7 +39,7 @@ to surfaces without increasing geometric complexity.
 #+begin_export html
 <div class="flex-center">
   <video width="300" controls loop autoplay>
-    <source src="Bump mapping.webm" type="video/webm">
+    <source src="Bump mapping - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -70,14 +70,8 @@ root and branches out into a complex pattern. The program is an
 artistic representation of how simple rules can generate intricate and
 beautiful structures, reminiscent of natural tree growth patterns.
 
-#+begin_export html
-<div class="flex-center">
-  <video width="1000" controls loop autoplay>
-    <source src="Tree.webm" type="video/webm">
-    Your browser does not support the video tag.
-  </video>
-</div>
-#+end_export
+#+attr_html: :class responsive-img
+[[file:Tree - Screenshot 0.png]]
 
 [[file:Tree.bas][Source code]]
 
@@ -94,7 +88,7 @@ representation of how sine and cosine functions can be used to achieve
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="2D rotation.webm" type="video/webm">
+    <source src="2D rotation - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -114,7 +108,7 @@ colors to create dynamic visual effects in a console environment.
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="text mode animation.webm" type="video/webm">
+    <source src="text mode animation - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -135,7 +129,7 @@ physics simulations and graphical programming.
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="Snowfall.webm" type="video/webm">
+    <source src="Snowfall - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -173,7 +167,7 @@ engaging visual effects.
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="Screensaver.webm" type="video/webm">
+    <source src="Screensaver - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -194,7 +188,7 @@ personal computing.
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="Screensaver, flying hand fans.webm" type="video/webm">
+    <source src="Screensaver, flying hand fans - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -214,7 +208,7 @@ rendering geometric shapes and handling randomness.
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="Polygon.webm" type="video/webm">
+    <source src="Polygon - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -234,7 +228,7 @@ textures are applied to polygons.
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="Polygon textured.webm" type="video/webm">
+    <source src="Polygon textured - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -254,7 +248,7 @@ important for cohesion of the whole.
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="Yin and yang.webm" type="video/webm">
+    <source src="Yin and yang - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -274,7 +268,7 @@ mesmerizing effect.
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="Orbiting particles.webm" type="video/webm">
+    <source src="Orbiting particles - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -292,7 +286,7 @@ resembles animation as seen in the movies :)
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="DNA.webm" type="video/webm">
+    <source src="DNA - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -309,7 +303,7 @@ Effect inspired by "The Matrix" movie.
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="matrix.webm" type="video/webm">
+    <source src="matrix - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
@@ -317,6 +311,25 @@ Effect inspired by "The Matrix" movie.
 
 [[file:matrix.bas][Source code]]
 
+* Matrix - the opening scene
+
+Animation inspired by the opening scene from "The Matrix" movie: the
+phone-call trace sequence. A line of digits is gradually decoded at
+the top of the screen while random numbers cascade along the bottom,
+accompanied by a high-pitch pulsing sound. Messages such as "Are you
+sure the line is clear?" appear as the decoding progresses.
+
+#+begin_export html
+<div class="flex-center">
+  <video width="1000" controls loop autoplay>
+    <source src="matrix2 - Screencast 0.mp4" type="video/mp4">
+    Your browser does not support the video tag.
+  </video>
+</div>
+#+end_export
+
+[[file:matrix2.bas][Source code]]
+
 * Hacker
 
 Ultra-realistic hacker screen simulator! Behold da glory of a true
@@ -326,10 +339,89 @@ a waterfall of knowledge across thy monitor.
 #+begin_export html
 <div class="flex-center">
   <video width="1000" controls loop autoplay>
-    <source src="hacker.webm" type="video/webm">
+    <source src="hacker - Screencast 0.mp4" type="video/mp4">
     Your browser does not support the video tag.
   </video>
 </div>
 #+end_export
 
 [[file:hacker.bas][Source code]]
+
+* Circular patterns
+
+This QBasic program generates a fractal animation that looks like
+atoms. While it uses a simple formula to calculate the color of every
+pixel, sin((x² + y²) / 10) * 6 + 23, the visual effect is quite
+impressive. The formula was accidentally discovered. Frame by frame
+the zoom factor decreases, creating a continuous zooming effect into
+the circular pattern.
+
+#+begin_export html
+<div class="flex-center">
+  <video width="1000" controls loop autoplay>
+    <source src="circular patterns - Screencast 0.mp4" type="video/mp4">
+    Your browser does not support the video tag.
+  </video>
+</div>
+#+end_export
+
+[[file:circular patterns.bas][Source code]]
+
+* Sun, earth and moon
+
+This QBasic program projects an animation of the sun, earth and
+moon. The moon orbits the earth, and the earth orbits the sun. The
+program uses clever trickery to determine the drawing order of the
+objects based on their y-coordinates, instead of doing proper
+Z-sorting.
+
+#+begin_export html
+<div class="flex-center">
+  <video width="1000" controls loop autoplay>
+    <source src="sun&amp;eart - Screencast 0.mp4" type="video/mp4">
+    Your browser does not support the video tag.
+  </video>
+</div>
+#+end_export
+
+[[file:sun&eart.bas][Source code]]
+
+* Maze
+
+This QBasic program renders an animated 3D maze. The maze grows one
+segment at a time along a randomly picked axis, each segment colored
+randomly, while the viewer position and rotation angles are driven by
+sine functions. Points are rotated around two axes and projected with
+perspective division, and only line segments in front of the viewer
+are drawn.
+
+#+begin_export html
+<div class="flex-center">
+  <video width="1000" controls loop autoplay>
+    <source src="maze - Screencast 0.mp4" type="video/mp4">
+    Your browser does not support the video tag.
+  </video>
+</div>
+#+end_export
+
+[[file:maze.BAS][Source code]]
+
+* Fancy text mode animations
+
+This QBasic program renders fancy looking text mode animations in an
+80x50 text screen. Various effects are overlaid on top of each other
+while the program scrolls its own source code in the background: a
+wrapping pattern of asterisks driven by sine functions, a wobbling
+circle filled with random characters and colors, and vertical and
+horizontal lines bouncing between the screen edges.
+
+#+begin_export html
+<div class="flex-center">
+  <video width="1000" controls loop autoplay>
+    <source src="mkcircle - Screencast 0.mp4" type="video/mp4">
+    Your browser does not support the video tag.
+  </video>
+</div>
+#+end_export
+
+[[file:mkcircle.bas][Source code]]
diff --git a/2D GFX/Animations/matrix - Screencast 0.mp4 b/2D GFX/Animations/matrix - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..15df3a9
Binary files /dev/null and b/2D GFX/Animations/matrix - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/matrix.webm b/2D GFX/Animations/matrix.webm
deleted file mode 100644 (file)
index 2b10e3f..0000000
Binary files a/2D GFX/Animations/matrix.webm and /dev/null differ
diff --git a/2D GFX/Animations/matrix2 - Screencast 0.mp4 b/2D GFX/Animations/matrix2 - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..f9389af
Binary files /dev/null and b/2D GFX/Animations/matrix2 - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/matrix2.webm b/2D GFX/Animations/matrix2.webm
deleted file mode 100644 (file)
index fb8d08d..0000000
Binary files a/2D GFX/Animations/matrix2.webm and /dev/null differ
diff --git a/2D GFX/Animations/maze - Screencast 0.mp4 b/2D GFX/Animations/maze - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..aad2be1
Binary files /dev/null and b/2D GFX/Animations/maze - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/maze.webm b/2D GFX/Animations/maze.webm
deleted file mode 100644 (file)
index 1e8e253..0000000
Binary files a/2D GFX/Animations/maze.webm and /dev/null differ
diff --git a/2D GFX/Animations/mkcircle - Screencast 0.mp4 b/2D GFX/Animations/mkcircle - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..13c35c2
Binary files /dev/null and b/2D GFX/Animations/mkcircle - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/mkcircle.bas b/2D GFX/Animations/mkcircle.bas
new file mode 100755 (executable)
index 0000000..32be0dd
--- /dev/null
@@ -0,0 +1,202 @@
+' Program to render fancy looking text mode animations.\r
+' Various effects are overlaid on top of each other\r
+' while program scrolls it's own source code in the background.\r
+'\r
+' This program is free software: released under Creative Commons Zero (CC0) license\r
+' by Svjatoslav Agejenko.\r
+' Email: svjatoslav@svjatoslav.eu\r
+' Homepage: http://www.svjatoslav.eu\r
+'\r
+' Changelog:\r
+' 2003.10, Initial version\r
+' 2024, Improved program readability\r
+\r
+DECLARE SUB displayScreen ()\r
+DECLARE SUB drawCircle ()\r
+DECLARE SUB drawLines ()\r
+DECLARE SUB fillBuffer ()\r
+DECLARE SUB updateDisplay ()\r
+DIM SHARED pi\r
+DIM SHARED angle\r
+DIM SHARED frameCounter\r
+DIM SHARED buffer2(1 TO 50, 1 TO 80) AS STRING * 1\r
+DIM SHARED buffer(1 TO 50, 1 TO 80) AS STRING * 1\r
+DIM SHARED colors(1 TO 50, 1 TO 80) AS INTEGER\r
+\r
+DIM SHARED verticalLinePosition, horizontalLinePosition\r
+DIM SHARED verticalLineSpeed, horizontalLineSpeed\r
+\r
+WIDTH 80, 50\r
+VIEW PRINT 1 TO 50\r
+pi = 3.14159\r
+OPEN "mkcircle.bas" FOR INPUT AS #1\r
+\r
+CLS\r
+\r
+horizontalLinePosition = 20\r
+horizontalLineSpeed = 1\r
+verticalLinePosition = 20\r
+verticalLineSpeed = 1\r
+\r
+1\r
+frameCounter = frameCounter + 1\r
+SOUND 0, 1\r
+displayScreen\r
+fillBuffer\r
+drawLines\r
+drawCircle\r
+updateDisplay\r
+IF INKEY$ <> "" THEN GOTO 2\r
+GOTO 1\r
+2\r
+CLOSE #1\r
+SYSTEM\r
+\r
+SUB updateDisplay\r
+' This subroutine updates the display with the contents of the buffer\r
+COLOR 7, 0\r
+LOCATE 1, 1\r
+FOR y = 1 TO 50\r
+  FOR x = 1 TO 80\r
+    COLOR colors(y, x)\r
+    PRINT buffer(y, x);\r
+    ' Swap the contents of buffer and buffer2\r
+    buffer(y, x) = buffer2(y, x)\r
+    colors(y, x) = 4\r
+  NEXT x\r
+NEXT y\r
+\r
+END SUB\r
+\r
+SUB fillBuffer\r
+' This subroutine fills the buffer with a pattern\r
+COLOR 4, 0\r
+sizeMultiplier = SIN(frameCounter / 7) + 1.1\r
+\r
+angle = angle + SIN(frameCounter / 30) / 10\r
+radiusXPosition = 50 - SIN(angle + pi / 4) * 12 * 20 * sizeMultiplier\r
+radiusYPosition = 50 - COS(angle + pi / 4) * 12 * 20 * sizeMultiplier\r
+\r
+stepXPosition = SIN(angle) * 6 * sizeMultiplier\r
+stepYPosition = COS(angle) * 6 * sizeMultiplier\r
+radiusStepXPosition = SIN(angle + pi / 2) * 6 * sizeMultiplier\r
+radiusStepYPosition = COS(angle + pi / 2) * 6 * sizeMultiplier\r
+\r
+FOR y = 1 TO 50\r
+  radiusXPosition = radiusXPosition + radiusStepXPosition\r
+  radiusYPosition = radiusYPosition + radiusStepYPosition\r
+\r
+4\r
+IF radiusXPosition > 100 THEN radiusXPosition = radiusXPosition - 100: GOTO 4\r
+IF radiusXPosition < 0 THEN radiusXPosition = radiusXPosition + 100: GOTO 4\r
+IF radiusYPosition > 100 THEN radiusYPosition = radiusYPosition - 100: GOTO 4\r
+IF radiusYPosition < 0 THEN radiusYPosition = radiusYPosition + 100: GOTO 4\r
+\r
+currentXPosition = radiusXPosition\r
+currentYPosition = radiusYPosition\r
+\r
+FOR x = 1 TO 80\r
+  characterCode = 0\r
+  currentXPosition = currentXPosition + stepXPosition\r
+  currentYPosition = currentYPosition + stepYPosition\r
+\r
+3\r
+IF currentXPosition > 100 THEN currentXPosition = currentXPosition - 100: GOTO 3\r
+IF currentXPosition < 0 THEN currentXPosition = currentXPosition + 100: GOTO 3\r
+IF currentYPosition > 100 THEN currentYPosition = currentYPosition - 100: GOTO 3\r
+IF currentYPosition < 0 THEN currentYPosition = currentYPosition + 100: GOTO 3\r
+\r
+IF currentXPosition < 12 OR currentYPosition < 12 THEN buffer(y, x) = "*": colors(y, x) = 9\r
+NEXT x\r
+NEXT y\r
+END SUB\r
+\r
+SUB drawCircle\r
+' This subroutine draws a circle on the screen\r
+circleSize = (SIN(frameCounter / 10) + 1.01) * 30\r
+circleYPosition = SIN(frameCounter / 12) * 30 + 40\r
+circleXPosition = COS(frameCounter / 17) * 15 + 25\r
+\r
+FOR y = 1 TO 50\r
+  xPositionOffset = SIN(y / 5 + frameCounter / 30) * circleSize / 10\r
+\r
+IF (y >= circleYPosition - circleSize) AND (y <= circleYPosition + circleSize) THEN\r
+\r
+halfHeight1 = SQR((y - (circleYPosition - circleSize)) * ((circleYPosition + circleSize) - y))\r
+IF (y >= circleYPosition - circleSize / 2) AND (y <= circleYPosition + circleSize / 2) THEN halfHeight2 = SQR((y - (circleYPosition - circleSize / 2)) * ((circleYPosition + circleSize / 2) - y)) ELSE halfHeight2 = 0\r
+\r
+startXPosition = circleXPosition - halfHeight1 + xPositionOffset\r
+IF startXPosition < 1 THEN startXPosition = 1\r
+endXPosition = circleXPosition - halfHeight2 + xPositionOffset\r
+IF endXPosition > 80 THEN endXPosition = 80\r
+\r
+FOR x = startXPosition TO endXPosition\r
+  buffer(y, x) = CHR$(RND * 40 + 48)\r
+  colors(y, x) = RND * 15\r
+NEXT x\r
+\r
+startXPosition = circleXPosition + halfHeight2 + xPositionOffset\r
+IF startXPosition < 1 THEN startXPosition = 1\r
+endXPosition = circleXPosition + halfHeight1 + xPositionOffset\r
+IF endXPosition > 80 THEN endXPosition = 80\r
+\r
+FOR x = startXPosition TO endXPosition\r
+  buffer(y, x) = CHR$(RND * 200 + 32)\r
+  colors(y, x) = RND * 15\r
+NEXT x\r
+\r
+END IF\r
+\r
+NEXT y\r
+\r
+END SUB\r
+\r
+SUB drawLines\r
+' This subroutine draws vertical and horizontal lines on the screen\r
+verticalLinePosition = verticalLinePosition + verticalLineSpeed\r
+IF verticalLinePosition > 49 THEN verticalLineSpeed = -1\r
+IF verticalLinePosition < 2 THEN verticalLineSpeed = 1\r
+\r
+horizontalLinePosition = horizontalLinePosition + horizontalLineSpeed\r
+IF horizontalLinePosition > 79 THEN horizontalLineSpeed = -1\r
+IF horizontalLinePosition < 2 THEN horizontalLineSpeed = 1\r
+\r
+FOR x = 1 TO 80\r
+  IF buffer(verticalLinePosition, x) = "*" THEN characterCode = 31 ELSE characterCode = 10\r
+  buffer(verticalLinePosition, x) = "#"\r
+  colors(verticalLinePosition, x) = characterCode\r
+NEXT x\r
+\r
+FOR y = 1 TO 50\r
+  IF buffer(y, horizontalLinePosition) = "*" THEN characterCode = 31 ELSE characterCode = 10\r
+  buffer(y, horizontalLinePosition) = "#"\r
+  colors(y, horizontalLinePosition) = characterCode\r
+NEXT y\r
+END SUB\r
+\r
+SUB displayScreen\r
+' This subroutine displays the text from a file on the screen\r
+IF EOF(1) <> 0 THEN\r
+  CLOSE 1\r
+  OPEN "mkcircle.bas" FOR INPUT AS #1\r
+END IF\r
+\r
+LINE INPUT #1, lineText$\r
+\r
+FOR y = 1 TO 49\r
+FOR x = 1 TO 80\r
+  buffer2(y, x) = buffer2(y + 1, x)\r
+NEXT x\r
+NEXT y\r
+\r
+FOR x = 1 TO 80\r
+  buffer2(50, x) = " "\r
+NEXT x\r
+\r
+IF LEN(lineText$) > 80 THEN lineText$ = LEFT$(lineText$, 80)\r
+FOR b = 1 TO LEN(lineText$)\r
+  character$ = RIGHT$(LEFT$(lineText$, b), 1)\r
+  buffer2(50, b) = character$\r
+NEXT b\r
+\r
+END SUB\r
diff --git a/2D GFX/Animations/sun&eart - Screencast 0.mp4 b/2D GFX/Animations/sun&eart - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..4bf4b46
Binary files /dev/null and b/2D GFX/Animations/sun&eart - Screencast 0.mp4 differ
diff --git a/2D GFX/Animations/text mode animation - Screencast 0.mp4 b/2D GFX/Animations/text mode animation - Screencast 0.mp4
new file mode 100644 (file)
index 0000000..ccbee75
Binary files /dev/null and b/2D GFX/Animations/text mode animation - Screencast 0.mp4 differ
index 6f8206e..abe88f3 100755 (executable)
@@ -41,6 +41,8 @@ verticalLineSpeed = 1
 1\r
 frameCounter = frameCounter + 1\r
 \r
+SOUND 0, 2\r
+\r
 displayScreen\r
 fillBuffer\r
 drawLines\r
diff --git a/2D GFX/Animations/text mode animation.webm b/2D GFX/Animations/text mode animation.webm
deleted file mode 100644 (file)
index 0dc2a21..0000000
Binary files a/2D GFX/Animations/text mode animation.webm and /dev/null differ