<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Bloobs!</title>
		<link>http://www.allegro.cc/forums/view/424832</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 04 Nov 2004 21:34:35 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here&#39;s a cool demo style effect I coded which I believe is called &quot;bloobs&quot;. I did not invent the technique, just so you know. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> It&#39;s basically additive lightning. Anyway, I like the result and I wanted to share. Demo and src attached.</p><p><span class="remote-thumbnail"><span class="json">{"name":"bloob.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/e\/8edc6f8cdf17defe98cca2142ac89253.png","w":458,"h":344,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/e\/8edc6f8cdf17defe98cca2142ac89253"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/8/e/8edc6f8cdf17defe98cca2142ac89253-240.jpg" alt="bloob.png" width="240" height="180" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Peitz)</author>
		<pubDate>Fri, 29 Oct 2004 17:23:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>wow, nice effect. and the stretching makes it look even better (I wish that was true for all graphics:P)<br />I think I&#39;ll try to find a place for that in my current project...<br />thanks for sharing
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (fox)</author>
		<pubDate>Fri, 29 Oct 2004 18:22:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Not bad, I see that effect a lot with compos, nice to see it done in software though, all the ones I see are pure OpenGL <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Fri, 29 Oct 2004 19:16:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The effect is quite cool, but I have some remarks about the code itself :</p><p>I have managed to compile it under linux, but I had to make some changes in the code :<br />- You are including winalleg.h whereas your code doesn&#39;t use any windows-specific code. Well, you might not care because you seem to only code for windows, but I think it should be pointed out anyway...<br />- I had to include math.h in order to make it work, because it otherwise uses the sin &amp; cos function built in allegro, which return &#39;fix&#39; and tus giving compile errors with gcc.</p><p>Well, one might think this is nitpicking, but I hope this could be useful <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /><br />( Of course, I must consider what a great coder and game maker you are, so I feel a bit ashamed to point out such things <img src="http://www.allegro.cc/forums/smileys/embarassed.gif" alt=":-[" /> )
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (da_flo)</author>
		<pubDate>Fri, 29 Oct 2004 19:23:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Great coders don&#39;t concern themselves with silly things like that. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>Marcello
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Marcello)</author>
		<pubDate>Fri, 29 Oct 2004 19:25:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>woah peitz! that is elite! <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gnatinator)</author>
		<pubDate>Fri, 29 Oct 2004 19:31:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The <i>scene</i> called, they want their effect back <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Sirocco)</author>
		<pubDate>Fri, 29 Oct 2004 19:51:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
You are including winalleg.h whereas your code doesn&#39;t use any windows-specific code. Well, you might not care because you seem to only code for windows, but I think it should be pointed out anyway...
</p></div></div><p>
Don&#39;t get Johan wrong, he&#39;s just trying to deter Linux users who are incapable of properly editting sourecode. I commend him for this.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>- I had to include math.h in order to make it work, because it otherwise uses the sin &amp; cos function built in allegro, which return &#39;fix&#39; and tus giving compile errors with gcc.</p></div></div><p>
I didn&#39;t have that problem, <b>shrugs</b>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Fri, 29 Oct 2004 22:17:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah I knew these remarks were quite silly... But I just felt like posting them <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /></p><p>My apologizes to our great Johan Peitz, great among the great... <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (da_flo)</author>
		<pubDate>Fri, 29 Oct 2004 22:35:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I had to include math.h in order to make it work, because it otherwise uses the sin &amp; cos function built in allegro, which return &#39;fix&#39; and tus giving compile errors with gcc.
</p></div></div><p>

I may be wrong, but I believe this depends on which flavor of GCC you are using (DJGPP, Ming, etc). Regardless, it might be better to skirt the issue entirely and include <i>math.h</i>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Sirocco)</author>
		<pubDate>Fri, 29 Oct 2004 22:35:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>very blooby, congrats <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /> </p><p>...Johan your code style is almost identical to mine! <img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kris Allen)</author>
		<pubDate>Fri, 29 Oct 2004 22:35:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
DemoHack!</p><p>Ahh.. I&#39;m feeling nostalgia for the ST/Amiga Vectorball demos. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Fri, 29 Oct 2004 22:37:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
So... are bloobs and blits related in any way? <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Fri, 29 Oct 2004 22:39:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Very nice <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> And very fast. I also did some blob effects, but mine was quite slower (not that there&#39;s a difference in a decent computer).</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
It&#39;s basically additive lightning
</p></div></div><p>
Then it&#39;s a similar effect to blobs. With blobs, you sum the <i>squares</i> of intensities, so you get an attraction effect. This and that you use a lookup table (good idea, btw, I&#39;ll try it, too) explain the speed boost in your demo <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>I attach mine. The effect is not as spectacular as yours, but if you run the blobs_inv.exe one, the effect is cool <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> You can move one of the blobs (the big one) with the mouse.</p><p>If you want to compile it yourself, the only difference between the two exes is the call to bs.draw() at the end of main, if the last parameter is true or false.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Oscar Giner)</author>
		<pubDate>Fri, 29 Oct 2004 23:22:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>both EXEs crashed for me oscar.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Fri, 29 Oct 2004 23:25:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Does your card support 640x480x16? I don&#39;t do any error checking, so if the call to set_gfx_mode fails... crash! I don&#39;t see any other reason that would crash on your computer but not on mine (but I&#39;m in win98 <img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" />).</p><p>[edit]<br />Make sure to execute in from explorer or a dos box, so it uses the alleg41.dll shipped and not the one you may have in windows folder (4.1 dll&#39;s are incompatible).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Oscar Giner)</author>
		<pubDate>Fri, 29 Oct 2004 23:30:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Works extracted from the zip, my bad.</p><p>Anyway, as I mentioned in the Asteriods thread in the Game concepts, blobs are good for modelling certain things, asteriods for example. With enough blobs you can create organic structures that don&#39;t look too terribly blobby. Blobs are good for trees that have that kind of fused truck look (2+ trucks fused together).</p><p>Taken to the extreme and with some nasty-good physiscs you could very well simulate rain and water with them as well.</p><p>Not to mention some neato ghost-through-wall effects <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Fri, 29 Oct 2004 23:37:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Heh, glad you like it!</p><p>da_flo: You&#39;re right. winalleg.h is not supposed to be there. I tried something and forgot to remove it. <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" /></p><p>Oscar: I think the main speed boosts I get is from the lookup table. I was fairly slow before that. But also, I&#39;m running 8bit in 320x240 which is always fast and nice to work in. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> Your inverse version looks really cool. Like cells or some other organisms.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Peitz)</author>
		<pubDate>Sat, 30 Oct 2004 00:36:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>can you make it into a screen saver, seems like i can starred at it all day, also it reminds me of the mac OS X screen saver, lots of graphic joy.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (flares)</author>
		<pubDate>Sat, 30 Oct 2004 00:39:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>da_flo: stick to your guns, man, I had exactly the same problems as you. Thanks for the fix!</p><p>I saw a very &#39;jumpy&#39; effect - was this intended? Look at this bit of code
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// move blobs</span>
 <span class="k1">for</span><span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>MAX_BLOOBS<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
  b<span class="k3">&lt;</span>i&gt;-&gt;x <span class="k3">=</span> <span class="n">160</span> <span class="k3">-</span> b<span class="k3">&lt;</span>i&gt;-&gt;bmp-&gt;w <span class="k3">/</span> <span class="n">2</span> <span class="k3">+</span> w <span class="k3">*</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>tick <span class="k3">+</span> i <span class="k3">*</span> <span class="n">3</span><span class="k2">)</span> <span class="k3">+</span> w <span class="k3">*</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>tick<span class="k3">/</span><span class="n">3</span> <span class="k3">-</span> i <span class="k3">*</span> <span class="n">7</span><span class="k2">)</span><span class="k2">;</span>
  b<span class="k3">&lt;</span>i&gt;-&gt;y <span class="k3">=</span> <span class="n">120</span> <span class="k3">-</span> b<span class="k3">&lt;</span>i&gt;-&gt;bmp-&gt;h <span class="k3">/</span> <span class="n">2</span> <span class="k3">+</span> h <span class="k3">*</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span>tick<span class="k3">/</span><span class="n">9</span> <span class="k3">-</span> i <span class="k3">*</span> <span class="n">5</span><span class="k2">)</span> <span class="k3">+</span> h <span class="k3">*</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span>tick <span class="k3">+</span> i <span class="k3">*</span> <span class="n">3</span><span class="k2">)</span><span class="k2">;</span>
 <span class="k2">}</span>
</pre></div></div><p>
&#39;tick&#39; is an integer that gets incremented 100 times per second. But, sin and cos wrap round every 2*pi (approx 6) so the bloob will oscillate very rapidly indeed.</p><p>imo it looks better if you put make tick a float (line 44) and put tick+=0.1 (line 95) </p><p>Maybe I just like my bloobs more chilled out that Johan <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>Pete
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Hull)</author>
		<pubDate>Sat, 30 Oct 2004 00:40:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Don&#39;t forget to divide by a float if you do that peter. And probably multiply by a float too, but I&#39;m not sure if multiply will cast it out to integer like division does.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Sat, 30 Oct 2004 00:56:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>WH: we&#39;re all friends here; a little implicit up-conversion can be excused, I hope. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>Actually, several warnings are detected but none because of that:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k2">[</span>iBook:~<span class="k3">/</span>Downloads<span class="k3">/</span>bloobs Folder<span class="k3">/</span>src<span class="k2">]</span> peterhull% g<span class="k3">+</span><span class="k3">+</span> <span class="k3">*</span>.cpp `allegro-config <span class="k3">-</span><span class="k3">-</span>libs` <span class="k3">-</span>O2 <span class="k3">-</span>W <span class="k3">-</span>Wall
CBloob.cpp: In member function `CBloob::CBloob<span class="k2">(</span><span class="k1">int</span>, <span class="k1">int</span>, <span class="k1">int</span><span class="k2">)</span><span class="s">':</span>
<span class="s">CBloob.cpp:17: warning: unused variable `int a'</span>
CBloob.cpp:17: warning: unused variable `<span class="k1">int</span> b<span class="s">'</span>
<span class="s">main.cpp: In function `int _mangled_main(int, char**)'</span><span class="k2">:</span>
main.cpp:51: warning: `text_mode<span class="s">' is deprecated (declared at </span>
<span class="s">   /usr/local/include/allegro/alcompat.h:167)</span>
<span class="s">main.cpp:57: warning: missing initializer for member `RGB::filler'</span>
main.cpp:113: warning: `textprintf<span class="s">' is deprecated (declared at </span>
<span class="s">   /usr/local/include/allegro/alcompat.h:189)</span>
<span class="s">main.cpp:42: warning: unused parameter `int argc'</span>
main.cpp:42: warning: unused parameter `<span class="k1">char</span><span class="k3">*</span><span class="k3">*</span>argv<span class="s">'</span>
</pre></div></div><p>

Pete
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Hull)</author>
		<pubDate>Sat, 30 Oct 2004 01:11:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hah, I had no idea this piece of code would get so much attention. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> The movement of the bloobs is a hack I simply adjusted until I got a nice effect. (Btw, I don&#39;t get tha jump on my screen.) As for the unused variables... I ripped out some code from the CBloob class and probably forgot some variables in there. It&#39;s part of the old Hellcarrier code.</p><p>I tried to make it a screensaver, but I couldn&#39;t get it to exit normally by just moving the mouse or hitting a key. Do I have to put that in manually or does windows handle it?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Peitz)</author>
		<pubDate>Sat, 30 Oct 2004 01:22:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>scrsave.c says:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="c">/*         ______   ___    ___ </span>
<span class="number">   2</span><span class="c"> *        /\  _  \ /_ \  /_ \ </span>
<span class="number">   3</span><span class="c"> *        \ \ \L\ \//\ \ //\ \      __     __   _ __   ___ </span>
<span class="number">   4</span><span class="c"> *         \ \  __ \ \ \ \  \ \ \   /'__`\ /'_ `/\`'__/ __`\</span>
<span class="number">   5</span><span class="c"> *          \ \ /\ \ _\ _ _\ _/\  __//\ \L\ \ \ //\ \L\ \</span>
<span class="number">   6</span><span class="c"> *           \ _\ _/____/____\ ____\ ____ \ _\\ ____/</span>
<span class="number">   7</span><span class="c"> *            /_//_//____//____//____//___L\ /_/ /___/</span>
<span class="number">   8</span><span class="c"> *                                           /____/</span>
<span class="number">   9</span><span class="c"> *                                           _/__/</span>
<span class="number">  10</span><span class="c"> *</span>
<span class="number">  11</span><span class="c"> *      Example program showing how to write a Windows screensaver. This</span>
<span class="number">  12</span><span class="c"> *      uses a fullscreen DirectX mode when activated normally, or the</span>
<span class="number">  13</span><span class="c"> *      GDI interface functions when it is running in preview mode from</span>
<span class="number">  14</span><span class="c"> *      inside the Windows screensaver selection dialog.</span>
<span class="number">  15</span><span class="c"> *</span>
<span class="number">  16</span><span class="c"> *      Compile this like a normal executable, but rename the output</span>
<span class="number">  17</span><span class="c"> *      program to have a .scr extension, and then copy it into your</span>
<span class="number">  18</span><span class="c"> *      windows directory.</span>
<span class="number">  19</span><span class="c"> *</span>
<span class="number">  20</span><span class="c"> *      By Shawn Hargreaves.</span>
<span class="number">  21</span><span class="c"> *</span>
<span class="number">  22</span><span class="c"> *      See readme.txt for copyright information.</span>
<span class="number">  23</span><span class="c"> */</span>
<span class="number">  24</span>
<span class="number">  25</span>
<span class="number">  26</span><span class="p">#include &lt;time.h&gt;</span>
<span class="number">  27</span>
<span class="number">  28</span><span class="p">#include "allegro.h"</span>
<span class="number">  29</span><span class="p">#include "winalleg.h"</span>
<span class="number">  30</span>
<span class="number">  31</span>
<span class="number">  32</span>
<span class="number">  33</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buf<span class="k2">;</span>
<span class="number">  34</span>
<span class="number">  35</span><span class="k1">int</span> xline<span class="k2">;</span>
<span class="number">  36</span><span class="k1">int</span> yline<span class="k2">;</span>
<span class="number">  37</span>
<span class="number">  38</span>
<span class="number">  39</span><span class="k1">typedef</span> <span class="k1">struct</span> BOUNCER
<span class="number">  40</span><span class="k2">{</span>
<span class="number">  41</span>   <span class="k1">float</span> x, y<span class="k2">;</span>
<span class="number">  42</span>   <span class="k1">float</span> dx, dy<span class="k2">;</span>
<span class="number">  43</span><span class="k2">}</span> BOUNCER<span class="k2">;</span>
<span class="number">  44</span>
<span class="number">  45</span>
<span class="number">  46</span><span class="p">#define NUM_BOUNCERS    3</span>
<span class="number">  47</span>
<span class="number">  48</span>BOUNCER bouncer<span class="k2">[</span>NUM_BOUNCERS<span class="k2">]</span><span class="k2">;</span>
<span class="number">  49</span>
<span class="number">  50</span>
<span class="number">  51</span>
<span class="number">  52</span><span class="c">/* initialises our graphical effect */</span>
<span class="number">  53</span><span class="k1">void</span> ss_init<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  54</span><span class="k2">{</span>
<span class="number">  55</span>   <span class="k1">int</span> i<span class="k2">;</span>
<span class="number">  56</span>
<span class="number">  57</span>   xline <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  58</span>   yline <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  59</span>
<span class="number">  60</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>
<span class="number">  62</span>   <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i<span class="k3">&lt;</span>NUM_BOUNCERS<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  63</span>      bouncer<span class="k3">&lt;</span>i&gt;.x <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % buf-&gt;w<span class="k2">;</span>
<span class="number">  64</span>      bouncer<span class="k3">&lt;</span>i&gt;.y <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % buf-&gt;h<span class="k2">;</span>
<span class="number">  65</span>
<span class="number">  66</span>      bouncer<span class="k3">&lt;</span>i&gt;.dx <span class="k3">=</span> <span class="n">0</span>.<span class="n">5</span> <span class="k3">+</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">255</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">256</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  67</span>      bouncer<span class="k3">&lt;</span>i&gt;.dy <span class="k3">=</span> <span class="n">0</span>.<span class="n">5</span> <span class="k3">+</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">255</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">256</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  68</span>
<span class="number">  69</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">255</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">128</span><span class="k2">)</span>
<span class="number">  70</span>   bouncer<span class="k3">&lt;</span>i&gt;.dx <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  71</span>
<span class="number">  72</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">255</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">128</span><span class="k2">)</span>
<span class="number">  73</span>   bouncer<span class="k3">&lt;</span>i&gt;.dy <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  74</span>   <span class="k2">}</span>
<span class="number">  75</span><span class="k2">}</span>
<span class="number">  76</span>
<span class="number">  77</span>
<span class="number">  78</span>
<span class="number">  79</span><span class="c">/* animates the graphical effect */</span>
<span class="number">  80</span><span class="k1">void</span> ss_update<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  81</span><span class="k2">{</span>
<span class="number">  82</span>   <span class="k1">int</span> i<span class="k2">;</span>
<span class="number">  83</span>
<span class="number">  84</span>   xline<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  85</span>   <span class="k1">if</span> <span class="k2">(</span>xline <span class="k3">&gt;</span> buf-&gt;w<span class="k2">)</span>
<span class="number">  86</span>      xline <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  87</span>
<span class="number">  88</span>   yline<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  89</span>   <span class="k1">if</span> <span class="k2">(</span>yline <span class="k3">&gt;</span> buf-&gt;h<span class="k2">)</span>
<span class="number">  90</span>      yline <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  91</span>
<span class="number">  92</span>   <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i<span class="k3">&lt;</span>NUM_BOUNCERS<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  93</span>      bouncer<span class="k3">&lt;</span>i&gt;.x <span class="k3">+</span><span class="k3">=</span> bouncer<span class="k3">&lt;</span>i&gt;.dx<span class="k2">;</span>
<span class="number">  94</span>      bouncer<span class="k3">&lt;</span>i&gt;.y <span class="k3">+</span><span class="k3">=</span> bouncer<span class="k3">&lt;</span>i&gt;.dy<span class="k2">;</span>
<span class="number">  95</span>
<span class="number">  96</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>bouncer<span class="k3">&lt;</span>i&gt;.x <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>bouncer<span class="k3">&lt;</span>i&gt;.x <span class="k3">&gt;</span> buf-&gt;w<span class="k2">)</span><span class="k2">)</span>
<span class="number">  97</span>   bouncer<span class="k3">&lt;</span>i&gt;.dx <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  98</span>
<span class="number">  99</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>bouncer<span class="k3">&lt;</span>i&gt;.y <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>bouncer<span class="k3">&lt;</span>i&gt;.y <span class="k3">&gt;</span> buf-&gt;h<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 100</span>   bouncer<span class="k3">&lt;</span>i&gt;.dy <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 101</span>   <span class="k2">}</span>
<span class="number"> 102</span><span class="k2">}</span>
<span class="number"> 103</span>
<span class="number"> 104</span>
<span class="number"> 105</span>
<span class="number"> 106</span><span class="c">/* draws the graphical effect */</span>
<span class="number"> 107</span><span class="k1">void</span> ss_draw<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 108</span><span class="k2">{</span>
<span class="number"> 109</span>   <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span>
<span class="number"> 111</span>   <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a><span class="k2">(</span>buf, <span class="n">0</span>, <span class="n">0</span>, buf-&gt;w, buf-&gt;h, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>   <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a><span class="k2">(</span>buf, buf-&gt;w, <span class="n">0</span>, <span class="n">0</span>, buf-&gt;h, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>
<span class="number"> 114</span>   <a href="http://www.allegro.cc/manual/vline" target="_blank"><span class="a">vline</span></a><span class="k2">(</span>buf, xline, <span class="n">0</span>, buf-&gt;h, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>   <a href="http://www.allegro.cc/manual/hline" target="_blank"><span class="a">hline</span></a><span class="k2">(</span>buf, <span class="n">0</span>, yline, buf-&gt;w, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">255</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 116</span>
<span class="number"> 117</span>   text_mode<span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 118</span>
<span class="number"> 119</span>   textout_centre<span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"Allegro"</span>, bouncer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.x, bouncer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">128</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 120</span>   textout_centre<span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"Screensaver"</span>, bouncer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.x, bouncer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">128</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 121</span>   textout_centre<span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"&lt;insert cool effect here&gt;"</span>, bouncer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.x, bouncer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 122</span><span class="k2">}</span>
<span class="number"> 123</span>
<span class="number"> 124</span>
<span class="number"> 125</span>
<span class="number"> 126</span><span class="c">/* shuts down the graphical effect */</span>
<span class="number"> 127</span><span class="k1">void</span> ss_exit<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 128</span><span class="k2">{</span>
<span class="number"> 129</span><span class="k2">}</span>
<span class="number"> 130</span>
<span class="number"> 131</span>
<span class="number"> 132</span>
<span class="number"> 133</span><span class="c">/* dialog procedure for the settings dialog */</span>
<span class="number"> 134</span>BOOL CALLBACK settings_dlg_proc<span class="k2">(</span>HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam<span class="k2">)</span>
<span class="number"> 135</span><span class="k2">{</span>
<span class="number"> 136</span>   <span class="k1">switch</span> <span class="k2">(</span>uMsg<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 137</span>
<span class="number"> 138</span>      <span class="k1">case</span> WM_COMMAND: 
<span class="number"> 139</span>   <span class="k1">switch</span> <span class="k2">(</span>HIWORD<span class="k2">(</span>wParam<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span> 
<span class="number"> 140</span>
<span class="number"> 141</span>      <span class="k1">case</span> BN_CLICKED:
<span class="number"> 142</span>         EndDialog<span class="k2">(</span>hwndDlg, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 143</span>         <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 144</span>   <span class="k2">}</span>
<span class="number"> 145</span>   <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 146</span>   <span class="k2">}</span>
<span class="number"> 147</span>
<span class="number"> 148</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 149</span><span class="k2">}</span>
<span class="number"> 150</span>
<span class="number"> 151</span>
<span class="number"> 152</span>
<span class="number"> 153</span><span class="c">/* the settings dialog function */</span>
<span class="number"> 154</span><span class="k1">int</span> do_settings<span class="k2">(</span>HANDLE hInstance, HANDLE hPrevInstance, HWND hParentWnd<span class="k2">)</span>
<span class="number"> 155</span><span class="k2">{</span>
<span class="number"> 156</span>   DialogBox<span class="k2">(</span>hInstance, <span class="s">"ID_CONFIG_DLG"</span>, hParentWnd, settings_dlg_proc<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>
<span class="number"> 158</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 159</span><span class="k2">}</span>
<span class="number"> 160</span>
<span class="number"> 161</span>
<span class="number"> 162</span>
<span class="number"> 163</span><span class="c">/* the password dialog function */</span>
<span class="number"> 164</span><span class="k1">int</span> do_password<span class="k2">(</span>HANDLE hInstance, HANDLE hPrevInstance, HWND hParentWnd<span class="k2">)</span>
<span class="number"> 165</span><span class="k2">{</span>
<span class="number"> 166</span>   MessageBox<span class="k2">(</span>hParentWnd, <span class="s">"Sorry, this screensaver doesn't implement the password stuff"</span>, <span class="s">"Allegro Screensaver"</span>, MB_OK<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 167</span>
<span class="number"> 168</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 169</span><span class="k2">}</span>
<span class="number"> 170</span>
<span class="number"> 171</span>
<span class="number"> 172</span>
<span class="number"> 173</span><span class="c">/* window procedure for the screensaver preview */</span>
<span class="number"> 174</span>LRESULT CALLBACK preview_wnd_proc<span class="k2">(</span>HWND hwnd, UINT message, UINT wParam, LONG lParam<span class="k2">)</span>
<span class="number"> 175</span><span class="k2">{</span>
<span class="number"> 176</span>   PAINTSTRUCT ps<span class="k2">;</span>
<span class="number"> 177</span>   HDC hdc<span class="k2">;</span>
<span class="number"> 178</span>
<span class="number"> 179</span>   <span class="k1">switch</span> <span class="k2">(</span>message<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 180</span>
<span class="number"> 181</span>      <span class="k1">case</span> WM_CREATE:
<span class="number"> 182</span>   SetTimer<span class="k2">(</span>hwnd, <span class="n">1</span>, <span class="n">15</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 183</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 184</span>
<span class="number"> 185</span>      <span class="k1">case</span> WM_TIMER:
<span class="number"> 186</span>   ss_update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 187</span>   InvalidateRect<span class="k2">(</span>hwnd, NULL, FALSE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 188</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 189</span>
<span class="number"> 190</span>      <span class="k1">case</span> WM_PAINT:
<span class="number"> 191</span>   hdc <span class="k3">=</span> BeginPaint<span class="k2">(</span>hwnd, <span class="k3">&amp;</span>ps<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 192</span>   ss_draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 193</span>   <a href="http://www.allegro.cc/manual/set_palette_to_hdc" target="_blank"><span class="a">set_palette_to_hdc</span></a><span class="k2">(</span>hdc, _current_palette<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 194</span>   <a href="http://www.allegro.cc/manual/draw_to_hdc" target="_blank"><span class="a">draw_to_hdc</span></a><span class="k2">(</span>hdc, buf, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 195</span>   EndPaint<span class="k2">(</span>hwnd, <span class="k3">&amp;</span>ps<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 196</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 197</span>
<span class="number"> 198</span>      <span class="k1">case</span> WM_DESTROY:
<span class="number"> 199</span>   KillTimer<span class="k2">(</span>hwnd, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 200</span>   PostQuitMessage<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 201</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 202</span>   <span class="k2">}</span>
<span class="number"> 203</span>
<span class="number"> 204</span>   <span class="k1">return</span> DefWindowProc<span class="k2">(</span>hwnd, message, wParam, lParam<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 205</span><span class="k2">}</span>
<span class="number"> 206</span>
<span class="number"> 207</span>
<span class="number"> 208</span>
<span class="number"> 209</span><span class="c">/* the screensaver preview function */</span>
<span class="number"> 210</span><span class="k1">int</span> do_preview<span class="k2">(</span>HANDLE hInstance, HANDLE hPrevInstance, HWND hParentWnd<span class="k2">)</span>
<span class="number"> 211</span><span class="k2">{</span>
<span class="number"> 212</span>   WNDCLASS wndclass<span class="k2">;</span>
<span class="number"> 213</span>   HWND hwnd<span class="k2">;</span>
<span class="number"> 214</span>   MSG msg<span class="k2">;</span>
<span class="number"> 215</span>   RECT rc<span class="k2">;</span>
<span class="number"> 216</span>
<span class="number"> 217</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>hPrevInstance<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 218</span>      wndclass.style <span class="k3">=</span> CS_HREDRAW <span class="k3">|</span> CS_VREDRAW<span class="k2">;</span>
<span class="number"> 219</span>      wndclass.lpfnWndProc <span class="k3">=</span> preview_wnd_proc<span class="k2">;</span>
<span class="number"> 220</span>      wndclass.cbClsExtra <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 221</span>      wndclass.cbWndExtra <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 222</span>      wndclass.hInstance <span class="k3">=</span> hInstance<span class="k2">;</span>
<span class="number"> 223</span>      wndclass.hIcon <span class="k3">=</span> LoadIcon<span class="k2">(</span>NULL, IDI_APPLICATION<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 224</span>      wndclass.hCursor <span class="k3">=</span> LoadCursor<span class="k2">(</span>NULL, IDC_ARROW<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 225</span>      wndclass.hbrBackground <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 226</span>      wndclass.lpszMenuName <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 227</span>      wndclass.lpszClassName <span class="k3">=</span> <span class="s">"sspreview"</span><span class="k2">;</span>
<span class="number"> 228</span>
<span class="number"> 229</span>      RegisterClass<span class="k2">(</span><span class="k3">&amp;</span>wndclass<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 230</span>   <span class="k2">}</span>
<span class="number"> 231</span>
<span class="number"> 232</span>   <span class="k1">if</span> <span class="k2">(</span>hParentWnd<span class="k2">)</span>
<span class="number"> 233</span>      GetClientRect<span class="k2">(</span>hParentWnd, <span class="k3">&amp;</span>rc<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 234</span>   <span class="k1">else</span>
<span class="number"> 235</span>      rc.right <span class="k3">=</span> rc.bottom <span class="k3">=</span> <span class="n">256</span><span class="k2">;</span>
<span class="number"> 236</span>
<span class="number"> 237</span>   <a href="http://www.allegro.cc/manual/install_allegro" target="_blank"><span class="a">install_allegro</span></a><span class="k2">(</span>SYSTEM_NONE, <span class="k3">&amp;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_293.html" target="_blank">errno</a>, <a href="http://www.delorie.com/djgpp/doc/libc/libc_52.html" target="_blank">atexit</a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 238</span>   <a href="http://www.allegro.cc/manual/set_palette" target="_blank"><span class="a">set_palette</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/default_palette" target="_blank"><span class="a">default_palette</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 239</span>   <a href="http://www.allegro.cc/manual/set_gdi_color_format" target="_blank"><span class="a">set_gdi_color_format</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 240</span>
<span class="number"> 241</span>   buf <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>rc.right, rc.bottom<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 242</span>
<span class="number"> 243</span>   ss_init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 244</span>   ss_update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 245</span>
<span class="number"> 246</span>   hwnd <span class="k3">=</span> CreateWindow<span class="k2">(</span><span class="s">"sspreview"</span>, NULL, WS_CHILD, 
<span class="number"> 247</span>           <span class="n">0</span>, <span class="n">0</span>, rc.right, rc.bottom, 
<span class="number"> 248</span>           hParentWnd, NULL, hInstance, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 249</span>
<span class="number"> 250</span>   ShowWindow<span class="k2">(</span>hwnd, SW_SHOW<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 251</span>   UpdateWindow<span class="k2">(</span>hwnd<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 252</span>
<span class="number"> 253</span>   <span class="k1">while</span> <span class="k2">(</span>GetMessage<span class="k2">(</span><span class="k3">&amp;</span>msg, NULL, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 254</span>      TranslateMessage<span class="k2">(</span><span class="k3">&amp;</span>msg<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 255</span>      DispatchMessage<span class="k2">(</span><span class="k3">&amp;</span>msg<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 256</span>   <span class="k2">}</span>
<span class="number"> 257</span>
<span class="number"> 258</span>   ss_exit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 259</span>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 260</span>
<span class="number"> 261</span>   <span class="k1">return</span> msg.wParam<span class="k2">;</span>
<span class="number"> 262</span><span class="k2">}</span>
<span class="number"> 263</span>
<span class="number"> 264</span>
<span class="number"> 265</span>
<span class="number"> 266</span><span class="c">/* display switch callback */</span>
<span class="number"> 267</span><span class="k1">static</span> <span class="k1">int</span> foreground <span class="k3">=</span> TRUE<span class="k2">;</span>
<span class="number"> 268</span>
<span class="number"> 269</span><span class="k1">static</span> <span class="k1">void</span> dispsw_callback<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 270</span><span class="k2">{</span>
<span class="number"> 271</span>   foreground <span class="k3">=</span> FALSE<span class="k2">;</span>
<span class="number"> 272</span><span class="k2">}</span>
<span class="number"> 273</span>
<span class="number"> 274</span>
<span class="number"> 275</span><span class="c">/* run the saver normally, in fullscreen mode */</span>
<span class="number"> 276</span><span class="k1">int</span> do_saver<span class="k2">(</span>HANDLE hInstance, HANDLE hPrevInstance, HWND hParentWnd<span class="k2">)</span>
<span class="number"> 277</span><span class="k2">{</span>
<span class="number"> 278</span>   HANDLE scrsaver_mutex<span class="k2">;</span>
<span class="number"> 279</span>   <span class="k1">int</span> mx, my, t<span class="k2">;</span>
<span class="number"> 280</span>
<span class="number"> 281</span>   <span class="c">/* prevent multiple instances from running */</span>
<span class="number"> 282</span>   scrsaver_mutex <span class="k3">=</span> CreateMutex<span class="k2">(</span>NULL, TRUE, <span class="s">"Allegro screensaver"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 283</span>
<span class="number"> 284</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>scrsaver_mutex <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>GetLastError<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> ERROR_ALREADY_EXISTS<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 285</span>      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 286</span>
<span class="number"> 287</span>   <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 288</span>   <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 289</span>   <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 290</span>   <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 291</span>   
<span class="number"> 292</span>   <span class="c">/* try to set a fullscreen mode */</span>
<span class="number"> 293</span>   <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_DIRECTX_ACCEL, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 294</span>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_DIRECTX_SOFT, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 295</span>         <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_DIRECTX_SAFE, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 296</span>            ReleaseMutex<span class="k2">(</span>scrsaver_mutex<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 297</span>            <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 298</span>         <span class="k2">}</span>
<span class="number"> 299</span>
<span class="number"> 300</span>   <a href="http://www.allegro.cc/manual/set_display_switch_mode" target="_blank"><span class="a">set_display_switch_mode</span></a><span class="k2">(</span>SWITCH_BACKAMNESIA<span class="k2">)</span><span class="k2">;</span>  <span class="c">/* not SWITCH_AMNESIA */</span>
<span class="number"> 301</span>   <a href="http://www.allegro.cc/manual/set_display_switch_callback" target="_blank"><span class="a">set_display_switch_callback</span></a><span class="k2">(</span>SWITCH_OUT, dispsw_callback<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 302</span>
<span class="number"> 303</span>   buf <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 304</span>
<span class="number"> 305</span>   ss_init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 306</span>   ss_update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 307</span>
<span class="number"> 308</span>   mx <span class="k3">=</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a><span class="k2">;</span>
<span class="number"> 309</span>   my <span class="k3">=</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a><span class="k2">;</span>
<span class="number"> 310</span>
<span class="number"> 311</span>   t <span class="k3">=</span> <a href="http://www.allegro.cc/manual/retrace_count" target="_blank"><span class="a">retrace_count</span></a><span class="k2">;</span>
<span class="number"> 312</span>
<span class="number"> 313</span>   <span class="k1">while</span> <span class="k2">(</span>foreground <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">=</span><span class="k3">=</span> mx<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">=</span><span class="k3">=</span> my<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 314</span>      <span class="k1">while</span> <span class="k2">(</span>t <span class="k3">&lt;</span> <a href="http://www.allegro.cc/manual/retrace_count" target="_blank"><span class="a">retrace_count</span></a><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 315</span>   ss_update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 316</span>   t<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 317</span>      <span class="k2">}</span>
<span class="number"> 318</span>
<span class="number"> 319</span>      ss_draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 320</span>      <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 321</span>
<span class="number"> 322</span>      <a href="http://www.allegro.cc/manual/poll_mouse" target="_blank"><span class="a">poll_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 323</span>   <span class="k2">}</span>
<span class="number"> 324</span>
<span class="number"> 325</span>   ss_exit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 326</span>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 327</span>
<span class="number"> 328</span>   ReleaseMutex<span class="k2">(</span>scrsaver_mutex<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 329</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 330</span><span class="k2">}</span>
<span class="number"> 331</span>
<span class="number"> 332</span>
<span class="number"> 333</span>
<span class="number"> 334</span><span class="c">/* the main program body */</span>
<span class="number"> 335</span><span class="k1">int</span> WINAPI WinMain<span class="k2">(</span>HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, <span class="k1">int</span> nCmdShow<span class="k2">)</span>
<span class="number"> 336</span><span class="k2">{</span>
<span class="number"> 337</span>   HWND hwnd<span class="k2">;</span>
<span class="number"> 338</span>   <span class="k1">char</span> <span class="k3">*</span>args<span class="k2">;</span>
<span class="number"> 339</span>
<span class="number"> 340</span>   args <span class="k3">=</span> lpszCmdParam<span class="k2">;</span>
<span class="number"> 341</span>
<span class="number"> 342</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>args<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="s">'-'</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>args<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="s">'/'</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 343</span>      args<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 344</span>
<span class="number"> 345</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>args<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><span class="k2">(</span>args<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="s">' '</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>args<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="s">':'</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 346</span>      hwnd <span class="k3">=</span> <span class="k2">(</span>HWND<span class="k2">)</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_54.html" target="_blank">atoi</a><span class="k2">(</span>args<span class="k3">+</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 347</span>   <span class="k1">else</span>
<span class="number"> 348</span>      hwnd <span class="k3">=</span> GetActiveWindow<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 349</span>
<span class="number"> 350</span>   <span class="k1">switch</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/utolower" target="_blank"><span class="a">utolower</span></a><span class="k2">(</span>args<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 351</span>
<span class="number"> 352</span>      <span class="k1">case</span> <span class="s">'c'</span><span class="k2">:</span>
<span class="number"> 353</span>   <span class="k1">return</span> do_settings<span class="k2">(</span>hInstance, hPrevInstance, hwnd<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 354</span>
<span class="number"> 355</span>      <span class="k1">case</span> <span class="s">'a'</span><span class="k2">:</span>
<span class="number"> 356</span>   <span class="k1">return</span> do_password<span class="k2">(</span>hInstance, hPrevInstance, hwnd<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 357</span>
<span class="number"> 358</span>      <span class="k1">case</span> <span class="s">'p'</span><span class="k2">:</span>
<span class="number"> 359</span>   <span class="k1">return</span> do_preview<span class="k2">(</span>hInstance, hPrevInstance, hwnd<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 360</span>
<span class="number"> 361</span>      <span class="k1">case</span> <span class="s">'s'</span><span class="k2">:</span>
<span class="number"> 362</span>   <span class="k1">return</span> do_saver<span class="k2">(</span>hInstance, hPrevInstance, hwnd<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 363</span>   <span class="k2">}</span>
<span class="number"> 364</span>
<span class="number"> 365</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 366</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Sat, 30 Oct 2004 01:34:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Am I the only one who keeps misreading this topic title?</p><p>Marcello
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Marcello)</author>
		<pubDate>Sat, 30 Oct 2004 02:31:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>But, sin and cos wrap round every 2*pi (approx 6) so the bloob will oscillate very rapidly indeed.</p></div></div><p>
No ... Johan didn&#39;t include math.h, so sin and cos wrap around every 255 as allegro&#39;s fixed point sin and cos are used implicitly (with mingw, anyway).</p><p>Edit: Marcello: No!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Zaphos)</author>
		<pubDate>Sat, 30 Oct 2004 02:33:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
It&#39;s nice code. I like! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Marcello: Certainly hot!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Sat, 30 Oct 2004 02:44:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Umm....was hot intentional, RP? <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>EDIT: </p><div class="quote_container"><div class="title">Richard Phipps said:</div><div class="quote"><p>Marcello: Certainly hot!</p></div></div><p>
There, just in case he changes it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Sat, 30 Oct 2004 02:52:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Of course! I think any body could see that. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Sat, 30 Oct 2004 02:58:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Just an ordinary Freudian tit.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sat, 30 Oct 2004 02:59:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Of course! I think any body could see that. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div></div><p>
Apparently everybody didn&#39;t. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Sat, 30 Oct 2004 03:00:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
No, they didn&#39;t getit. <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Sat, 30 Oct 2004 03:01:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s so easy to derail a thread, it&#39;s soo easy to derail a thread...<br />(Sung to the music of &quot;It&#39;s so easy to fall in love&quot;)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (spellcaster)</author>
		<pubDate>Sat, 30 Oct 2004 03:01:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">X-G said:</div><div class="quote"><p>So... are bloobs and blits related in any way? <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p></div></div><p>Well if &#39;blit&#39; is &#39;block image transfer&#39;, then &#39;bloob&#39; must be &#39;block oesophagus obstructus&#39;. It&#39;s a kind of snake, I think. <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /></p><p>I tried to download it but KGet is the most evil download manager in the world and I don&#39;t seem to be able to avoid it, short of loading Mozilla, and my X is being slow enough as it is. Maybe I should just go back to Windows <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Bruce Perry)</author>
		<pubDate>Sat, 30 Oct 2004 03:09:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>And Windows will be faster...how?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Sat, 30 Oct 2004 03:16:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think it should be &quot;bob&quot; and not &quot;bloob&quot;. Bob is short for blitter object the term used for sprites on the amiga. And this particular effect is called &quot;shadebob&quot;, AFAIK.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (spellcaster)</author>
		<pubDate>Sat, 30 Oct 2004 03:17:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>WH, I use it at work, and it&#39;s a lot more responsive.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Bruce Perry)</author>
		<pubDate>Sat, 30 Oct 2004 03:17:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Same computer speed?<br />latest version of X + latest version of KDE/Gnome shouldn&#39;t really be any less responsive than Windows XP.<br />If you&#39;re comparing it to a lesser version of Windows than you aren&#39;t making a good comparison.<br />If you&#39;re running on a low-end computer you shouldn&#39;t be using flashy and powerful window managers, gotta go for the efficent ones. You&#39;ll need to talk to a Linux expert about which ones will be best.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Sat, 30 Oct 2004 03:23:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>AthlonXP 1800+, 256 MB. I would expect it to be a lot more responsive than it is. I don&#39;t actually know the spec of the system I use at work, but it&#39;s a recent version of Windows. I also use Windows XP on my laptop, and that&#39;s a lot more responsive. It has a nice flashy and powerful windowing system, and the system spec is not much different from my desktop&#39;s (except it&#39;s Intel).</p><p>Why do I get the impression you&#39;re sticking up for Linux just for the sake of it? <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Bruce Perry)</author>
		<pubDate>Sat, 30 Oct 2004 03:48:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Now I&#39;m waiting for <a href="http://www.angelcode.com/dev/metaballs/">metaballs demo</a> done in software. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Krzysztof Kluczek)</author>
		<pubDate>Sat, 30 Oct 2004 04:40:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well then, I guess the Linux window manager and desktop managers suck.</p><p>EDIT: Metaballs can be done in software just fine. I read an article about them a few years ago (they were called metagoop). Same thing as this Bloobs, except in 3D.<br />I believe the article described the walking cubes or whatever method, which is patent and can&#39;t be used comercially <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Sat, 30 Oct 2004 07:56:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just in case anyone else wants it; I hacked (very quickly and unprofessionally) peitz&#39;s demo into the screensaver example.  I changed the ball movement in a very simple way; to change it back don&#39;t include math.h and change the tick increment back to one.<br />Source attached.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Zaphos)</author>
		<pubDate>Sat, 30 Oct 2004 21:36:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Johan Peitz said:</div><div class="quote"><p>
Hah, I had no idea this piece of code would get so much attention
</p></div></div><p>
More than that! Anyway I think I understand what has being going on, see my <a href="http://www.allegro.cc/forums/view_thread.php?_id=425233#target">other thread</a>.</p><p>Basically, Allegro 4.0 is implicitly converting to/from the &#39;fix&#39; data type in the trig functions (lines 99 and 100) but Allegro 4.1 won&#39;t do this and gives an error.</p><p>Johan, if you want to used Allegro&#39;s fixed point functions, you should strictly cast to &#39;fix&#39; there, or alternatively include math.h and cast to double. (if the latter, you&#39;ll need to tweak your parameters)</p><p>It is a cool effect, you can get something that looks like the moon reflected on moving water if you tweak the parameters.</p><p>Pete
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Hull)</author>
		<pubDate>Sat, 30 Oct 2004 22:34:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>I believe the article described the walking cubes or whatever method, which is patent and can&#39;t be used comercially <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /></p></div></div><p>
AFAIK you can&#39;t patent algorithms in EU at the moment and I hope you&#39;ll never be able to. Also I wonder how anyone would guess you&#39;ve used certain algorithm without having your source code? <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Krzysztof Kluczek)</author>
		<pubDate>Sun, 31 Oct 2004 03:39:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s &quot;marching cubes&quot;, and software patents are on their way in the EU unless a miracle occurs.</p><p>And metaballs have also been a standard Scene effect for many years... <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Sun, 31 Oct 2004 03:41:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>We were taught marching cubes at uni, and no one told us they were patented. Shinjirarenaaai!</p><p>Oh, I managed to download it. It&#39;s cool <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Bruce Perry)</author>
		<pubDate>Sun, 31 Oct 2004 03:53:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oh, awesome, found the article I read. It explains both meta-goop, marching cubes, and the patent <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /><br />[url <a href="http://www.gamasutra.com/features/20000523/lander_pfv.htm">http://www.gamasutra.com/features/20000523/lander_pfv.htm</a>]
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Sun, 31 Oct 2004 10:22:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>I like to imagine the state of the industry if Bresenham had patented his method for drawing a line on a graphic display and then charged a licensing fee for every line drawn.</p></div></div><p>
I have strange feeling that something like this (by probably in more subtle way) will happen if patents will be allowed.</p><p>btw. Do you have to prove you have invented the thing in order to patent it? If not, line drawing algorithm could probably still get patented. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /></p><p>(sorry for off-topic, but this entire patent thing is making me sick <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Krzysztof Kluczek)</author>
		<pubDate>Mon, 01 Nov 2004 04:18:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In theory, patents are void if prior art, i.e. the same technique provably used by someone else before the date of the patent (or the date of development or whatever), is found. I&#39;m not sure how much that applies in practice though. I&#39;m not well up on the whole patent thing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Bruce Perry)</author>
		<pubDate>Mon, 01 Nov 2004 04:23:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I read up on the U.S. gov&#39;s patent office site when I was contemplating patenting Progranisms, and if I read everything correctly, which I probably didn&#39;t: You can only patent something if you were the first to invent it, and you can only patent the invention within 1 year of its creation. If, after 1 year, you haven&#39;t patented the invention you cannot patent nor can anyone else. It becomes public domain.</p><p>Of course, a lot of patents get &quot;passed&quot; even though they aren&#39;t original. However, if you do take a patent to court and can prove the invention was used prior to the patent, then it&#39;ll be torn down.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Mon, 01 Nov 2004 04:44:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The problem, I think, is that proving prior art can be less than trivial, and so small companies without legal muscle to spare will pay off people who have invalid patents rather than go to court ...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Zaphos)</author>
		<pubDate>Mon, 01 Nov 2004 05:11:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>small companies without legal muscle to spare will pay off people who have invalid patents rather than go to court ...</p></div></div><p>
Small companies will pay, but what about freeware game developers? <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Krzysztof Kluczek)</author>
		<pubDate>Mon, 01 Nov 2004 05:29:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you can&#39;t pay at all ... that&#39;s pretty much a death toll isn&#39;t it?<br />Or perhaps the software could run to hosts in countries where the patent laws don&#39;t apply.  That could probably help...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Zaphos)</author>
		<pubDate>Mon, 01 Nov 2004 15:49:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>I was contemplating patenting Progranisms</p></div></div><p>

Haha, that&#39;s so siggable..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inphernic)</author>
		<pubDate>Mon, 01 Nov 2004 17:12:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Re: Marching cubes and metaballs.</p><p>I&#39;m quoting the <a href="http://www.home.zonnet.nl/petervenis/">Iehovah</a> FAQ:
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>Q<br />	Isn&#39;t the marching cubes algorithm patented?<br />	<br />A<br />	Why? Did you think I used the marching cubes algorithm to create my volumes? It surprises me that whenever there&#39;s a talk about voxels-to-polygons rendering, people start talking about the marching cubes algorithm. I didn&#39;t use the marching cubes algorithm. There are always a thousand ways to do one thing, the marching cubes is just one of them. I came up with my own algorithm which is unpatented and which I think is still new. But I wouldn&#39;t be suprised if some other clever <span class="cuss"><span>bastard</span></span> already did something similar. So relax, there are no patent issues involved with iehovah. If you need to look for an algorithm to code your own volumes, than look in the links section.</p></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trumgottist)</author>
		<pubDate>Thu, 04 Nov 2004 21:34:35 +0000</pubDate>
	</item>
</rss>
