From a87509a9d2370da00cde4112aac50a9e31333b6d Mon Sep 17 00:00:00 2001 From: sejo Date: Wed, 11 Aug 2021 21:45:37 -0500 Subject: [PATCH] gifs for day 4 --- src/img/screencap_uxn-animation-quarterspeed.gif | Bin 0 -> 3669 bytes src/img/screencap_uxn-animation.gif | Bin 0 -> 5669 bytes src/img/screencap_uxn-moving-square.gif | Bin 0 -> 7101 bytes src/uxn_tutorial_day_4.gmo | 12 ++++++++++-- 4 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 src/img/screencap_uxn-animation-quarterspeed.gif create mode 100644 src/img/screencap_uxn-animation.gif create mode 100644 src/img/screencap_uxn-moving-square.gif diff --git a/src/img/screencap_uxn-animation-quarterspeed.gif b/src/img/screencap_uxn-animation-quarterspeed.gif new file mode 100644 index 0000000000000000000000000000000000000000..1cd0bdadd409503dda1c470124bbac0b2c7b2934 GIT binary patch literal 3669 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 literal 0 HcmV?d00001 diff --git a/src/uxn_tutorial_day_4.gmo b/src/uxn_tutorial_day_4.gmo index 0631c26..d9a8703 100644 --- a/src/uxn_tutorial_day_4.gmo +++ b/src/uxn_tutorial_day_4.gmo @@ -450,6 +450,8 @@ however, this repetition might not allow for a smooth movement like what we can the following program allows us to control the horizontal position of our square using the arrow keys. +=> ./img/screencap_uxn-moving-square.gif animated gif showing a square moving horizontally in the screen, apparently controlled by a human. + note the similarities between the previous program, and what we covered on day 3! ``` @@ -551,8 +553,8 @@ EQU2 ( is x equal to screen width - 8 ? ) ,&continue JCN &increment - ( increment sprite/pos-x ) - .sprite/pos-x LDZ2 #0001 ADD2 .sprite/pos-x STZ2 + ( increment sprite/pos-x ) + .sprite/pos-x LDZ2 #0001 ADD2 .sprite/pos-x STZ2 &continue ``` @@ -768,6 +770,8 @@ note that it uses a sequence similar to the previous programs: the clear sprite section is not actually needed in this case because of the colors that are used, but it would be when using colors with transparency in them :) +=> ./img/screencap_uxn-animation.gif animation of a diagonal stripe inside a pixelated square. the diagonal moves from bottom right to top left + ``` ( hello-animation.tal ) @@ -873,8 +877,12 @@ we can use these macros to divide the frequency in our code: .Screen/addr DEO2 ( set computed address ) ``` + +=> ./img/screencap_uxn-animation-quarterspeed.gif animation of a diagonal stripe inside a pixelated square. the diagonal moves from bottom right to top left. it moves slower than the previous one. + ah, way better! + ## not powers of two note that if you want to divide the frequency to numbers that are not powers of 2, you might start to see some glitches approximately every 4 seconds: this is due to framecount overflowing and not giving a nice sequence of results for those divisors.