Skip to main content

THE WIZARDS PART IV - GRAPHIC TRICKS
by Erik of The Exceptions

The fourth part of this highly popular series is here. This time, 
ES will talk about some graphic-tricks like transparent graphics, 
anti-aliasing and more like that.  Many thanks have to go to  Mr. 
Tarik  Ahmia  (68000'er/ST Magazin) who gave  permission  to  use 
these articles in ST NEWS

 Hi de hi, readers! Have you gained enough energy for yet another 
round  of TEX-tips?  For this part you don't even  need  specific 
assembler knowledge,  since it mainly covers my personal field of 
expertise:  Graphics.  Some  of you might now think that  there's 
rather little left to be said about that;  many pages in books as 
well  as  magazines have been filled with  the  subject  already, 
aren't they?  But I am sure that there are some more or less rare 
tricks and tips from which you didn't know anything;  or are  you 
familiar with:

 - Anti-aliasing
 - Animated graphics by palette animation
 - Transparent effects
 - Back-and foreground scrolling without programming trouble

  You don't know anything about this?  Then it'll be soon -  just 
read  on.  Additionally,  I  will tell you  something  about  the 
"Neochrome"  drawing program that your surely didn't  know.  Just 
like all earlier episodes in this series,  all things said  refer 
to  the low resolution of the ST,  where you can normally use  16 
colours  (readers of ST NEWS Volume 3 Issue 5 will now of  course 
chuckle lightly).
  Well,  let's  start  to talk about the  subjects  listed  above 
systematically.  'Anti-aliasing' is listed first there.  This  is 
commonly  used  in  professional  circles  of  computer  graphics 
artists. Freely interpreted, this would mean: "How the heck can I 
avoid that gradation in my computer picture?"
 You all know that the ST, just like its colleague-homecomputers, 
has  a  fairly  limited  screen  resolution.   This  means   that 
especially  diagonal  lines or circles show  typical  gradations. 
Since we cannot fool the hardware in this case, we'll simply have 
to fool another 'peripheral':  The human eye.  We can hereby  use 
the way an eye sees contrast.  When Anti-aliasing,  one uses  the 
following scheme: At the boundary of two colours, one insert some 
dots  on  the  gradation that have colours  in  between  the  two 
colours that you use. That's all.
  To  demonstrate the remarkable effect,  please  make  a  little 
practical exercise. You surely have a drawing program with a zoom 
function. Load it and define the following colours:

  Background color - 000
  Drawing color 1  - 711
  Drawing color 2  - 600
  Drawing color 3  - 400
  Drawing color 4  - 300

  Now just draw a triangle with drawing colour 1,  and  therefore 
draw three lines, for example for the upper left corner (position 
x=0 and y=0) to position x=20 and y=80, then back to x=0 and y=80 
and  then back to the upper left hand corner.  Fill it  as  well, 
with  drawing  color 1.  Now,  a bright red triangle is  on  your 
screen  of which the right side clearly demonstrates the  typical 
gradation.
 Now copy this triangle,  so that you have two triangles next  to 
each  other  on  the screen.  The second one will  now  be  anti-
aliased.
 Enter zoom mode again and select drawing color 2. Put ONE dot of 
this color on each 'stairs' of the gradation at the right side of 
the triangle.  Then select drawing color 3 and do the same, and a 
third  time  with  drawing color 4.  Now  you  have  added  three 
darkening red colors to every gradation. Leave zoom mode and look 
at the effect.  The difference is quite stunning,  isn't it?  The 
second triangle seems to be displayed in a much higher resolution 
than the first one. That's anti-aliasing; quite simple!
 When you'd like to experiment a bit more,  you can draw a filled 
circle  in drawing color 1 and again put the darkening shades  of 
red on the gradation steps.  You will then also develop a feeling 
of where you can put which number of anti-aliasing-dots,  since a 
circle contains all different gradation sizes.
 Using this technique,  all graphics can be enhanced if the color 
palette has been properly designed.  In our example,  black (000) 
was the background color,  bright red (711) the drawing color and 
2-4 were the anti-aliasing colors.
 Have fun experimenting with these effects!

 Now,  what's up next?  Ah! Color palette animation! First, let's 
start with a small explanation what this actually is.
  The ST has sixteen color registers;  when some or all of  these 
are  swapped in a cyclic way,  this is called 'color cycling'  or 
palette animation.  This is often used to simulate flowing water, 
and  one of the oldest "Neochrome" pictures,  "Waterfall",  is  a 
typical example.  In this case,  the shades of blue contained  in 
the water are swapped in a circle.
 But there are much more possibilities with palette animation.  I 
have  always  had the dubious pleasure of creating  effects  with 
this  that many people considered to be  graphic  programming.  A 
very  nice application of this technique can be found in the  TEX 
program "Super Neo Demo Show".  There is a scrolling text in  the 
lower  border of the screen,  and under that are a lot  of  small 
propellers.  After  this  introduction you will probably  not  be 
surprised  to  hear  that these rotating lines  are  nothing  but 
palette  animation  - which many people were  when  we  initially 
explained this trick to them.
 How it's done?
  Well,  it's quite difficult to put into words (like  love,  ex-
ED.), but I'll give it a try.
  Just imagine that you've drawn 12 lines that cross one  another 
in  the middle;  each line has its own color.  Now,  you set  all 
colors  to  black with one exceptions:  One  color  remains  e.g. 
black.  In the middle you put a small circle with a non-animating 
color  to cover the part where all lines cross.  If you  now  let 
these  12  colors cycle,  you have the impression of  a  rotating 
line,  since  only one of the 12 lines is displayed in red  at  a 
time.
 There are more tricks of this kind, e.g. the hopping dots in the 
2nd Psych-O-Screen of our "B.I.G. Demo", but they principally all 
use the same trick:  About all used colors are put in  background 
color,  and only some of them are colored;  by palette animation, 
movement starts. One can use this to such extend that an animated 
figure, e.g. a little man, walks across the screen. The method is 
the same;  you draw the movement phases in an other color at each 
time  and  you  set  them next to each  other  (they  should  not 
overlap).  Since each of the men 'lights up' after the other  due 
to  the  color animation,  it appears as though the  shape  walks 
across   the  screen.   True  animation  effects  can   thus   be 
accomplished  by animating the colors.  The disadvantage of  this 
trick  is  obvious:  When  you  use a lot  of  colors  for  color 
animation,  only  few are left for the rest of the  picture.  But 
that's each one's own decision.

 Well,  dear readers, now we're really starting. The previous was 
only  to be classified among 'harmless toying  around',  but  now 
we're  really cookin'.  Maybe you have seen graphics that  seemed 
like  transparent  glass or that seemed to float in some  of  our 
programs.  Maybe  you  wondered  which  wonderful  and  difficult 
program sat behind it all.  Ha!  All wrong! I suppose you're just 
about used to it, but this is also covered by a sleazy trick. But 
to  understand  it,  you must know something  about  the  graphic 
buildup of the ST - so I will mention it here in short to refresh 
your memory.
 In low resolution, it looks like this: A certain piece of memory 
is referred to as 'screen memory'.  There, four sequential memory 
words  (1 word = 16 bits) always belong together,  and each  word 
represents a so-called 'plane'.  It's best to imagine these  four 
words  lying under each other;  this way you see best  that  each 
pixel is represented by four bits.  According to this combination 
of bits,  the color value is taken from one of the sixteen  color 
registers. With a resolution of 320x200 (640,000 pixels) of which 
each pixel can take one of 16 colors,  each plane is therefore  8 
Kb in size; an ST graphic screen thus costs 32 Kb.
  These planes do not only have to be used to  represent  colors, 
but  when you truly look upon them as 'planes' and use them  like 
that program-technically, there are some interesting aspects.
  Let's presume we made a piece of graphics that only uses  eight 
colors.  These  colors  can be realised with only 3  'planes'  (3 
'stacked'  bits  means 8 combinations possible),  so  that  their 
colors will be found in color registers 1 to 8.  But there's  one 
plane left!  In this plane, it is for example possible to display 
a piece of graphics that only uses one color.  When we set  color 
registers  9-16  to the same value,  we can move  this  piece  of 
graphics  in  just one plane (the program only uses  each  fourth 
word) and the corresponding bit combinations only give the colors 
in register 9-16. That's how it is possible to put a single-color 
piece  of  graphics  on  top of one that  has  8  colors  without 
difficult logical operations.
 That's all.

 Oh,  I hear you call:  "What's up then with transparent effects, 
and fore-and background,  eh?!" Well,  program-technical  nothing 
else  happens  than what I just described  above.  All  else   is 
simple brainmangling thought about setting proper color palettes. 
Again: Transparent-as well as back-and foreground effects are now 
only realised by simply setting proper color palettes!
 Therefore you must thoroughly realise what's happening with  the 
bit  combinations when a piece of graphics in one plane is  moved 
'over'  the  three  others.  The  colors  that  result  into  the 
corresponding effect are always the last eight (number 9-16), the 
colors   located  that  are  called  by  the  corresponding   bit 
combinations are located there.  These are the colors that appear 
when  the  separate plane is moved 'over' the other  three  -  in 
other words when the fourth bit (fourth plane) is set or cleared.
 When you understand this, it is easy to think of a way to create 
the 'transparent' effect:  Simply put intermediate colors in  the 
upper  half of the palette that correspond to the  brightness  of 
the other eight.  In our program example (present in the disk  in 
the  PROGRAMS folder as a .S file) a bright red 'plate of  glass' 
moves  over a background pattern that only uses shades  of  grey. 
The colors are hereby set as follows:  Color 1-8 are black  (000) 
along all shades of grey to white (777). The 'transparent colors' 
9-16  go from dark red (004) to yellow (770).  So when  the  one-
color  graphics block of the fourth plane goes 'over'  the  other 
three planes,  color 9 appears where 1 used to appear, 10 where 2 
used to appear,  etc.  Program-technically speaking, this is very 
simple, but about that we haven't even talked.
 Udo and the others were also quite blabbergasted when I came  up 
with the idea,  you'll believe me.  The whole back-and foreground 
business is very much the same;  just look at the B.I.G. scroller 
in  our "B.I.G.  Demo" where a scrolling text scrolls in  between 
the fore-and background.
  With  this effect,  one has to set the upper  eight  colors  as 
follows:  With  each of the colors that the one-colored piece  of 
graphics should go behind,  you set the corresponding upper color 
to  the same.  All colors that should be covered by the  graphics 
block  should get the value you want them to have when they  move 
'in front' of it.  So if you want the one-plane graphics block to 
move  all in the background of all three other planes,  one  sets 
the upper colors exactly the same as the lower ones.
 Not really simple, you think?
 Hmm.  You might be right.  But we do everything to get the  very 
last thing possible out of the ST, don't we?
  With this effects,  it is also not quite simple to put it  into 
words (sigh, ex-ED.). When you have a look at our listing (in the 
PROGRAMS folder), your last doubts will disappear.
 The program does the following:  It builds a background  pattern 
in three planes, thus using the first eight colors. It then makes 
a graphic block in the fourth plane move to and fro.  Using  keys 
1-4,  it is possible to call different color palettes,  that will 
support  the  description I have above.  By only  pressing  these 
keys, the following effects are realised:

 Key 1 : Palette 1, one-colored block moves over graphics
 Key 2 : Palette 2, block moves in background
 Key 3 : Palette 3, block moves through the pattern
 Key 4 : Palette 4, transparent block moves over graphics

  Have  fun  trying.  It is easy to use some of  your  own  color 
palettes; some extremely funny effects can be created that way.

 This almost made an end to this issue's "Wizards"  article.  But 
at the end I found it necessary to make a plea.  No! Nothing like 
"Tortured  ST users everywhere get together!";  it is  much  more 
about my favourite drawing program that I (and many others) think 
is one of the most grotesquely underestimated programs on the ST. 
I'm  talking about "Neochrome" here,  that was supplied with  the 
Atari ST in the early days (version 0.5).  It was supposed to  be 
sold  in  the  better version 1.0,  but  it  was  never  properly 
marketed.  Most salesmen also considered 1.0 to be Public  Domain 
and that's why just about every ST user could get the program.
  The reasons why the program is so gut will be explained to  you 
in just a little while,  when I will tell you something about the 
program  that  most of you probably didn't  know.  The  basis  is 
actually  brief:   "Neochrome"  already  includes  (almost)   all 
functions one would need for creating GOOD pictures;  unnecessary 
function  are  not present and it is  fast,  very  FAST.  It  has 
several  function that would even make "Degas Elite" look  rather 
basic.
 When you've drawn pictures yourself,  you'll have to admit  that 
the most important tool of all is the zoom mode.  On the contrary 
to all other drawing programs that are available, "Neochrome" has 
a  zoom  mode that is always present,  also when you  operate  on 
blocks,  draw lines,  fill,  etc. This zoom mode is very fast, by 
the  way,   because  it  uses  raster  interrupts.  Further,  the 
'Jackknife' function allows you to cut out whatever form you want 
(not  just  polygons),  and  these  can  also  be  moved  in  the 
background ("DPaint II" on the Amiga can't even do that!).
 I suppose you already know the functions that are implemented on 
the "Neochrome" menu. So I will now talk about some function that 
are not so obvious;  you might be in for a surprise! Many things, 
for  example,  are  hidden  in the right  mouse  button:  In  the 
'normal'  block  menu,  the current block is set on  the  current 
position,  but  with 'Jackknife' you can DRAW with  pressing  the 
right button, just like a brush (and, unlike other programs, this 
also  happens FAST)!  While in 'brush' mode,  pressing the  right 
mouse  button takes care that you draw with the colors that  have 
been installed between the 'color arrows' - this is also the case 
when using nozzles (highly effective when using color animation).
  When you're in 'grabber' mode,  you can get the color of  every 
pixel on the screen you want by pressing the right mouse  button. 
In  'line' mode,  the current line is deleted when you press  the 
right  button with the left one.  When double-clicking the  right 
mouse button on the eraser icon, the entire screen is erased.
 But now a very hot tip,  since only few people know that there's 
a  complete  animation tool in  "Neochrome"!  Dave  Staugas,  the 
programmer, had no time to make it completely bug-free so that he 
just hid it.  This is the way to get the new icon on the  screen: 
Go  to the 'grabber' mode and click with the right  mouse  button 
precisely in the curve of the last 'R' in the word 'GRABBER' that 
will  appear  on  the right side of  the  menu.  A  small  camera 
appears!
  You can now do the following after selecting that  camera:  You 
can define an animation area with the mouse. With the right mouse 
button  you  can now slide the whole picture through  this  area. 
When you have the right part,  you simply click on 'add' and  the 
part  of  the  picture is in  'animation  memory'.  Add  as  many 
pictures as you want,  and then you slide the cutout back on  the 
first cutout (only Dave knows why) and you can use the arrows  to 
play the animation forwards as well as backwards.  With 'Del', it 
is possible to delete the current screen,  and 'Load' and  'Save' 
also  work  (just don't get startled when  the  fileselector  box 
that's busted - stop animation before!). Just experiment a little 
with the animation tool; unlike all other animation tools for the 
ST, this one's EASY to use. The biggest advantage is that you can 
edit  a  figure  that has to be animated  right  in  the  drawing 
program.
 But be warned:  This new menu option is not bug free!  It is for 
example  not quite smart to press the Undo key or make  the  menu 
disappear while the camera is selected.  So it's probably  better 
to  save your picture before you enter the animation  tool.  When 
you  have the VERY OLD St demo with the flying  parrot,  you  can 
load  it  without  problems.  But  do  not  forget  to  load  the 
accompanying picture before (the shore landscape) with regard  to 
the color palette.

  Finally,  a little gag:  You can define the colors in the  menu 
yourself!  When started up,  "Neochrome" looks for a file  called 
"NEO.CMP"  in which 512 words with color values need to  be  that 
will replace the preset palette.
  When  you intend to use "Neochrome" more often in  the  future, 
look  into  your heart and give good ol' Dave something  for  his 
trouble  and his really good program.  He is currently  a  system 
programmer  at Atari and quite disappointed about the  fact  that 
his excellent program wasn't treated accordingly in the  magazine 
- and we're not even talking about the lousy marketing. Financial 
contributions can be sent to:

ATARI Corporation
Personal Mr. Dave Staugas
1196 Borregas Avenue
Sunnyvale, California 94088-3427
U.S.A.

  If you're a "Neochrome" fan,  do not falter!  Dave wrote to  me 
that  he  will consider rewriting old source stuff and  making  a 
better "Neochrome" version if the 'fanmail' is accordingly. I beg 
you: Do so!

 Well,  dear readers,  again we have told you some of our tricks, 
but  the  crown on our work of 'hardware-torturing'  has  yet  to 
come;  we're hereby talking about getting rid of the lower border 
so  that  graphics can be displayed there  as  well!  Using  this 
trick,  you  will be able to effectively display more lines  than 
ever before anticipated by the developers of the ST.
 Just wait for the next episode...
 Bye, bye.

  The  accompanying  source file is called  "WIZARD_4.S"  and  is 
located in the "PROGRAMS" folder on this issue's disk.

Disclaimer
The text of the articles is identical to the originals like they appeared in old ST NEWS issues. Please take into consideration that the author(s) was (were) a lot younger and less responsible back then. So bad jokes, bad English, youthful arrogance, insults, bravura, over-crediting and tastelessness should be taken with at least a grain of salt. Any contact and/or payment information, as well as deadlines/release dates of any kind should be regarded as outdated. Due to the fact that these pages are not actually contained in an Atari executable here, references to scroll texts, featured demo screens and hidden articles may also be irrelevant.