From: Svjatoslav Agejenko Date: Sat, 22 Aug 2026 10:48:58 +0000 (+0300) Subject: docs(animations): recapture screencasts as mp4 and update index page X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=commitdiff_plain;h=c46c149ac10e9078ded19875505a8a168e0404c8;p=qbasicapps.git docs(animations): recapture screencasts as mp4 and update index page - 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 --- diff --git a/2D GFX/Animations/2D rotation - Screencast 0.mp4 b/2D GFX/Animations/2D rotation - Screencast 0.mp4 new file mode 100644 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 index 553dc27..0000000 Binary files a/2D GFX/Animations/hacker.webm and /dev/null differ diff --git a/2D GFX/Animations/index.org b/2D GFX/Animations/index.org index 91b4aa1..0abf179 100644 --- a/2D GFX/Animations/index.org +++ b/2D GFX/Animations/index.org @@ -39,7 +39,7 @@ to surfaces without increasing geometric complexity. #+begin_export html
@@ -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 -
- -
-#+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
@@ -114,7 +108,7 @@ colors to create dynamic visual effects in a console environment. #+begin_export html
@@ -135,7 +129,7 @@ physics simulations and graphical programming. #+begin_export html
@@ -173,7 +167,7 @@ engaging visual effects. #+begin_export html
@@ -194,7 +188,7 @@ personal computing. #+begin_export html
@@ -214,7 +208,7 @@ rendering geometric shapes and handling randomness. #+begin_export html
@@ -234,7 +228,7 @@ textures are applied to polygons. #+begin_export html
@@ -254,7 +248,7 @@ important for cohesion of the whole. #+begin_export html
@@ -274,7 +268,7 @@ mesmerizing effect. #+begin_export html
@@ -292,7 +286,7 @@ resembles animation as seen in the movies :) #+begin_export html
@@ -309,7 +303,7 @@ Effect inspired by "The Matrix" movie. #+begin_export html
@@ -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 +
+ +
+#+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
#+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 +
+ +
+#+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 +
+ +
+#+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 +
+ +
+#+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 +
+ +
+#+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 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 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 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 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 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 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 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 index 0000000..32be0dd --- /dev/null +++ b/2D GFX/Animations/mkcircle.bas @@ -0,0 +1,202 @@ +' Program to render fancy looking text mode animations. +' Various effects are overlaid on top of each other +' while program scrolls it's own source code in the background. +' +' This program is free software: released under Creative Commons Zero (CC0) license +' by Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2003.10, Initial version +' 2024, Improved program readability + +DECLARE SUB displayScreen () +DECLARE SUB drawCircle () +DECLARE SUB drawLines () +DECLARE SUB fillBuffer () +DECLARE SUB updateDisplay () +DIM SHARED pi +DIM SHARED angle +DIM SHARED frameCounter +DIM SHARED buffer2(1 TO 50, 1 TO 80) AS STRING * 1 +DIM SHARED buffer(1 TO 50, 1 TO 80) AS STRING * 1 +DIM SHARED colors(1 TO 50, 1 TO 80) AS INTEGER + +DIM SHARED verticalLinePosition, horizontalLinePosition +DIM SHARED verticalLineSpeed, horizontalLineSpeed + +WIDTH 80, 50 +VIEW PRINT 1 TO 50 +pi = 3.14159 +OPEN "mkcircle.bas" FOR INPUT AS #1 + +CLS + +horizontalLinePosition = 20 +horizontalLineSpeed = 1 +verticalLinePosition = 20 +verticalLineSpeed = 1 + +1 +frameCounter = frameCounter + 1 +SOUND 0, 1 +displayScreen +fillBuffer +drawLines +drawCircle +updateDisplay +IF INKEY$ <> "" THEN GOTO 2 +GOTO 1 +2 +CLOSE #1 +SYSTEM + +SUB updateDisplay +' This subroutine updates the display with the contents of the buffer +COLOR 7, 0 +LOCATE 1, 1 +FOR y = 1 TO 50 + FOR x = 1 TO 80 + COLOR colors(y, x) + PRINT buffer(y, x); + ' Swap the contents of buffer and buffer2 + buffer(y, x) = buffer2(y, x) + colors(y, x) = 4 + NEXT x +NEXT y + +END SUB + +SUB fillBuffer +' This subroutine fills the buffer with a pattern +COLOR 4, 0 +sizeMultiplier = SIN(frameCounter / 7) + 1.1 + +angle = angle + SIN(frameCounter / 30) / 10 +radiusXPosition = 50 - SIN(angle + pi / 4) * 12 * 20 * sizeMultiplier +radiusYPosition = 50 - COS(angle + pi / 4) * 12 * 20 * sizeMultiplier + +stepXPosition = SIN(angle) * 6 * sizeMultiplier +stepYPosition = COS(angle) * 6 * sizeMultiplier +radiusStepXPosition = SIN(angle + pi / 2) * 6 * sizeMultiplier +radiusStepYPosition = COS(angle + pi / 2) * 6 * sizeMultiplier + +FOR y = 1 TO 50 + radiusXPosition = radiusXPosition + radiusStepXPosition + radiusYPosition = radiusYPosition + radiusStepYPosition + +4 +IF radiusXPosition > 100 THEN radiusXPosition = radiusXPosition - 100: GOTO 4 +IF radiusXPosition < 0 THEN radiusXPosition = radiusXPosition + 100: GOTO 4 +IF radiusYPosition > 100 THEN radiusYPosition = radiusYPosition - 100: GOTO 4 +IF radiusYPosition < 0 THEN radiusYPosition = radiusYPosition + 100: GOTO 4 + +currentXPosition = radiusXPosition +currentYPosition = radiusYPosition + +FOR x = 1 TO 80 + characterCode = 0 + currentXPosition = currentXPosition + stepXPosition + currentYPosition = currentYPosition + stepYPosition + +3 +IF currentXPosition > 100 THEN currentXPosition = currentXPosition - 100: GOTO 3 +IF currentXPosition < 0 THEN currentXPosition = currentXPosition + 100: GOTO 3 +IF currentYPosition > 100 THEN currentYPosition = currentYPosition - 100: GOTO 3 +IF currentYPosition < 0 THEN currentYPosition = currentYPosition + 100: GOTO 3 + +IF currentXPosition < 12 OR currentYPosition < 12 THEN buffer(y, x) = "*": colors(y, x) = 9 +NEXT x +NEXT y +END SUB + +SUB drawCircle +' This subroutine draws a circle on the screen +circleSize = (SIN(frameCounter / 10) + 1.01) * 30 +circleYPosition = SIN(frameCounter / 12) * 30 + 40 +circleXPosition = COS(frameCounter / 17) * 15 + 25 + +FOR y = 1 TO 50 + xPositionOffset = SIN(y / 5 + frameCounter / 30) * circleSize / 10 + +IF (y >= circleYPosition - circleSize) AND (y <= circleYPosition + circleSize) THEN + +halfHeight1 = SQR((y - (circleYPosition - circleSize)) * ((circleYPosition + circleSize) - y)) +IF (y >= circleYPosition - circleSize / 2) AND (y <= circleYPosition + circleSize / 2) THEN halfHeight2 = SQR((y - (circleYPosition - circleSize / 2)) * ((circleYPosition + circleSize / 2) - y)) ELSE halfHeight2 = 0 + +startXPosition = circleXPosition - halfHeight1 + xPositionOffset +IF startXPosition < 1 THEN startXPosition = 1 +endXPosition = circleXPosition - halfHeight2 + xPositionOffset +IF endXPosition > 80 THEN endXPosition = 80 + +FOR x = startXPosition TO endXPosition + buffer(y, x) = CHR$(RND * 40 + 48) + colors(y, x) = RND * 15 +NEXT x + +startXPosition = circleXPosition + halfHeight2 + xPositionOffset +IF startXPosition < 1 THEN startXPosition = 1 +endXPosition = circleXPosition + halfHeight1 + xPositionOffset +IF endXPosition > 80 THEN endXPosition = 80 + +FOR x = startXPosition TO endXPosition + buffer(y, x) = CHR$(RND * 200 + 32) + colors(y, x) = RND * 15 +NEXT x + +END IF + +NEXT y + +END SUB + +SUB drawLines +' This subroutine draws vertical and horizontal lines on the screen +verticalLinePosition = verticalLinePosition + verticalLineSpeed +IF verticalLinePosition > 49 THEN verticalLineSpeed = -1 +IF verticalLinePosition < 2 THEN verticalLineSpeed = 1 + +horizontalLinePosition = horizontalLinePosition + horizontalLineSpeed +IF horizontalLinePosition > 79 THEN horizontalLineSpeed = -1 +IF horizontalLinePosition < 2 THEN horizontalLineSpeed = 1 + +FOR x = 1 TO 80 + IF buffer(verticalLinePosition, x) = "*" THEN characterCode = 31 ELSE characterCode = 10 + buffer(verticalLinePosition, x) = "#" + colors(verticalLinePosition, x) = characterCode +NEXT x + +FOR y = 1 TO 50 + IF buffer(y, horizontalLinePosition) = "*" THEN characterCode = 31 ELSE characterCode = 10 + buffer(y, horizontalLinePosition) = "#" + colors(y, horizontalLinePosition) = characterCode +NEXT y +END SUB + +SUB displayScreen +' This subroutine displays the text from a file on the screen +IF EOF(1) <> 0 THEN + CLOSE 1 + OPEN "mkcircle.bas" FOR INPUT AS #1 +END IF + +LINE INPUT #1, lineText$ + +FOR y = 1 TO 49 +FOR x = 1 TO 80 + buffer2(y, x) = buffer2(y + 1, x) +NEXT x +NEXT y + +FOR x = 1 TO 80 + buffer2(50, x) = " " +NEXT x + +IF LEN(lineText$) > 80 THEN lineText$ = LEFT$(lineText$, 80) +FOR b = 1 TO LEN(lineText$) + character$ = RIGHT$(LEFT$(lineText$, b), 1) + buffer2(50, b) = character$ +NEXT b + +END SUB diff --git a/2D GFX/Animations/sun&eart - Screencast 0.mp4 b/2D GFX/Animations/sun&eart - Screencast 0.mp4 new file mode 100644 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 index 0000000..ccbee75 Binary files /dev/null and b/2D GFX/Animations/text mode animation - Screencast 0.mp4 differ diff --git a/2D GFX/Animations/text mode animation.bas b/2D GFX/Animations/text mode animation.bas index 6f8206e..abe88f3 100755 --- a/2D GFX/Animations/text mode animation.bas +++ b/2D GFX/Animations/text mode animation.bas @@ -41,6 +41,8 @@ verticalLineSpeed = 1 1 frameCounter = frameCounter + 1 +SOUND 0, 2 + displayScreen fillBuffer drawLines diff --git a/2D GFX/Animations/text mode animation.webm b/2D GFX/Animations/text mode animation.webm deleted file mode 100644 index 0dc2a21..0000000 Binary files a/2D GFX/Animations/text mode animation.webm and /dev/null differ