<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>draw_trans_sprite, Devcpp and optimizations</title>
		<link>http://www.allegro.cc/forums/view/589770</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 31 Jan 2007 19:13:52 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am writting a game using only sprites with alpha channel, obviously I am using only draw_trans_sprite for blitting.<br />The weird thing is that without optimization my game runs at 60fps, but when I use the compiler optimization options(devcpp): -O1, -O2 or -O3  the fps drops to 35 or less! what´s wrong here? code compiled with optimization options should run faster, I think.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Sun, 28 Jan 2007 22:45:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It should run faster, unless there is a compiler bug. What is the version of gcc? It doesn&#39;t happen often to hit a bug with just a -O1.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Milan Mimica)</author>
		<pubDate>Mon, 29 Jan 2007 00:14:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Dev-C++ 5.0 beta 9.2 (4.9.9.2) with Mingw/GCC 3.4.2<br />I get it from <a href="http://www.bloodshed.net/dev/devcpp.html">here</a><br />The frame drop happens with draw_trans_sprite only, I am also using Fladimir´s blender routines and they run faster(as expected) with -O3, so I am not sure about the compiler bug.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Mon, 29 Jan 2007 00:42:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sounds like a compiler bug that is triggered by allegro&#39;s draw_trans_sprite(). But someone with the same compiler version should confirm.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Milan Mimica)</author>
		<pubDate>Mon, 29 Jan 2007 00:51:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Could you try out with -O2? -O3 may turn on some experimental stuff, that may or may not speed things up...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Fladimir da Gorf)</author>
		<pubDate>Mon, 29 Jan 2007 01:27:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Could you try out with -O2?
</p></div></div><p>

draw_trans_sprite runs slower with optimizations enabled, I tried -O1, -O2, -O3, there is no difference it works slower, really slower, 60fps went to 35 fps.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Mon, 29 Jan 2007 23:40:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Maybe there&#39;s something fishy in your FPS calculations? After all, I bet you&#39;re not compiling Allegro with different settings...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Fladimir da Gorf)</author>
		<pubDate>Tue, 30 Jan 2007 02:53:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Do you do a complete recompile each time you switch the -On?</p><p>Try recompiling allegro with all asm turned off and see if the difference still occurs.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Tue, 30 Jan 2007 03:53:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I compiled exalpha.c example 3 times, with -O3, -O2, and without optimization, these 3 files are attached, try them in your PCs.</p><p>Here is the exalpha source (slightly modified) I used.</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"> *    Example program for the Allegro library, by Shawn Hargreaves.</span>
<span class="number">   3</span><span class="c"> *</span>
<span class="number">   4</span><span class="c"> *    This program demonstrates how to use the 32 bit RGBA</span>
<span class="number">   5</span><span class="c"> *    translucency functions to store an alpha channel along with</span>
<span class="number">   6</span><span class="c"> *    a bitmap graphic.  Two images are loaded from disk. One will</span>
<span class="number">   7</span><span class="c"> *    be used for the background and the other as a sprite. The</span>
<span class="number">   8</span><span class="c"> *    example generates an alpha channel for the sprite image,</span>
<span class="number">   9</span><span class="c"> *    composing the 32 bit RGBA bitmap during runtime, and draws</span>
<span class="number">  10</span><span class="c"> *    it at the position of the mouse cursor.</span>
<span class="number">  11</span><span class="c"> */</span>
<span class="number">  12</span>
<span class="number">  13</span>
<span class="number">  14</span><span class="p">#include &lt;allegro.h&gt;</span>
<span class="number">  15</span>
<span class="number">  16</span>  
<span class="number">  17</span> 
<span class="number">  18</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  19</span><span class="k2">{</span>
<span class="number">  20</span>   <span class="k1">char</span> buf<span class="k2">[</span><span class="n">256</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  21</span>   <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>background<span class="k2">;</span>
<span class="number">  22</span>   <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>alpha<span class="k2">;</span>
<span class="number">  23</span>   <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite<span class="k2">;</span>
<span class="number">  24</span>   <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer<span class="k2">;</span>
<span class="number">  25</span>   <span class="k1">int</span> bpp <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  26</span>   <span class="k1">int</span> ret <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  27</span>   <span class="k1">int</span> x, y, c, a<span class="k2">;</span>
<span class="number">  28</span>
<span class="number">  29</span>   <span class="k1">if</span> <span class="k2">(</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="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  30</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  31</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">  32</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">  33</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">  34</span>
<span class="number">  35</span>   <span class="c">/* what color depth should we use? */</span>
<span class="number">  36</span>   <span class="k1">if</span> <span class="k2">(</span>argc <span class="k3">&gt;</span> <span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  37</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>argv<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><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>argv<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><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">  38</span>   argv<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  39</span>      bpp <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_54.html" target="_blank">atoi</a><span class="k2">(</span>argv<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>bpp <span class="k3">!</span><span class="k3">=</span> <span class="n">15</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>bpp <span class="k3">!</span><span class="k3">=</span> <span class="n">16</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>bpp <span class="k3">!</span><span class="k3">=</span> <span class="n">24</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>bpp <span class="k3">!</span><span class="k3">=</span> <span class="n">32</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  41</span>   <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Invalid color depth '%s'\n"</span>, argv<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>   <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  43</span>      <span class="k2">}</span>
<span class="number">  44</span>   <span class="k2">}</span>
<span class="number">  45</span>
<span class="number">  46</span>   <span class="k1">if</span> <span class="k2">(</span>bpp <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  47</span>      <span class="c">/* set a user-requested color depth */</span>
<span class="number">  48</span>      <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span>bpp<span class="k2">)</span><span class="k2">;</span>
<span class="number">  49</span>      ret <span class="k3">=</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_AUTODETECT, <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="k2">;</span>
<span class="number">  50</span>   <span class="k2">}</span>
<span class="number">  51</span>   <span class="k1">else</span> <span class="k2">{</span>
<span class="number">  52</span>      <span class="c">/* autodetect what color depths are available */</span>
<span class="number">  53</span>      <span class="k1">static</span> <span class="k1">int</span> color_depths<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span> <span class="n">16</span>, <span class="n">15</span>, <span class="n">32</span>, <span class="n">24</span>, <span class="n">0</span> <span class="k2">}</span><span class="k2">;</span>
<span class="number">  54</span>      <span class="k1">for</span> <span class="k2">(</span>a<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> color_depths<span class="k2">[</span>a<span class="k2">]</span><span class="k2">;</span> a<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  55</span>   bpp <span class="k3">=</span> color_depths<span class="k2">[</span>a<span class="k2">]</span><span class="k2">;</span>
<span class="number">  56</span>   <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span>bpp<span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>   ret <span class="k3">=</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_AUTODETECT, <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="k2">;</span>
<span class="number">  58</span>   <span class="k1">if</span> <span class="k2">(</span>ret <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  59</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number">  60</span>      <span class="k2">}</span>
<span class="number">  61</span>   <span class="k2">}</span>
<span class="number">  62</span>
<span class="number">  63</span>   <span class="c">/* did the video mode set properly? */</span>
<span class="number">  64</span>   <span class="k1">if</span> <span class="k2">(</span>ret <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  65</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_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  66</span>      <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error setting %d bit graphics mode\n%s\n"</span>, bpp,
<span class="number">  67</span>          <a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  69</span>   <span class="k2">}</span>
<span class="number">  70</span>
<span class="number">  71</span>   <span class="c">/* load the background picture */</span>
<span class="number">  72</span>   <a href="http://www.allegro.cc/manual/replace_filename" target="_blank"><span class="a">replace_filename</span></a><span class="k2">(</span>buf, argv<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="s">"allegro.pcx"</span>, <span class="k1">sizeof</span><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>   background <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span>buf, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  74</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>background<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  75</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_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>      <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error reading %s!\n"</span>, buf<span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  78</span>   <span class="k2">}</span>
<span class="number">  79</span>
<span class="number">  80</span>   <span class="c">/* make a copy of it */</span>
<span class="number">  81</span>   <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  82</span>   sprite <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>background-&gt;w, background-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  83</span>   <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>background, sprite, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, background-&gt;w, background-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  84</span>
<span class="number">  85</span>   <span class="c">/* load the alpha sprite image. Note that we specifically force this</span>
<span class="number">  86</span><span class="c">    * to load in a 32 bit format by calling set_color_depth(). That is</span>
<span class="number">  87</span><span class="c">    * because the disk file is actually only a 256 color graphic: if it</span>
<span class="number">  88</span><span class="c">    * was already a 32 bit RGBA sprite, we would probably want to use</span>
<span class="number">  89</span><span class="c">    * set_color_conversion(COLORCONV_NONE) instead.</span>
<span class="number">  90</span><span class="c">    */</span>
<span class="number">  91</span>   <a href="http://www.allegro.cc/manual/replace_filename" target="_blank"><span class="a">replace_filename</span></a><span class="k2">(</span>buf, argv<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="s">"mysha.pcx"</span>, <span class="k1">sizeof</span><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>   alpha <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span>buf, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>alpha<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  94</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_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  95</span>      <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error reading %s!\n"</span>, buf<span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  97</span>   <span class="k2">}</span>
<span class="number">  98</span>
<span class="number">  99</span>   <span class="c">/* normally we would have loaded an RGBA image directly from disk. Since</span>
<span class="number"> 100</span><span class="c">    * I don't have one lying around, and am too lazy to draw one (or I could</span>
<span class="number"> 101</span><span class="c">    * rationalise this by saying that I'm trying to save download size by</span>
<span class="number"> 102</span><span class="c">    * reusing graphics :-) I'll just have to generate an alpha channel in</span>
<span class="number"> 103</span><span class="c">    * code. I do this by using greyscale values from the mouse picture as an</span>
<span class="number"> 104</span><span class="c">    * alpha channel for the Allegro image. Don't worry about this code: you</span>
<span class="number"> 105</span><span class="c">    * wouldn't normally need to write anything like this, because you'd just</span>
<span class="number"> 106</span><span class="c">    * get the right graphics directly out of a datafile.</span>
<span class="number"> 107</span><span class="c">    */</span>
<span class="number"> 108</span>   <a href="http://www.allegro.cc/manual/drawing_mode" target="_blank"><span class="a">drawing_mode</span></a><span class="k2">(</span>DRAW_MODE_TRANS, NULL, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</span>   <a href="http://www.allegro.cc/manual/set_write_alpha_blender" target="_blank"><span class="a">set_write_alpha_blender</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span>
<span class="number"> 111</span>   <span class="k1">for</span> <span class="k2">(</span>y<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> y<span class="k3">&lt;</span>sprite-&gt;h<span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 112</span>      <span class="k1">for</span> <span class="k2">(</span>x<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> x<span class="k3">&lt;</span>sprite-&gt;w<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 113</span>   c <span class="k3">=</span> <a href="http://www.allegro.cc/manual/getpixel" target="_blank"><span class="a">getpixel</span></a><span class="k2">(</span>alpha, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 114</span>   a <span class="k3">=</span> <a href="http://www.allegro.cc/manual/getr" target="_blank"><span class="a">getr</span></a><span class="k2">(</span>c<span class="k2">)</span> <span class="k3">+</span> <a href="http://www.allegro.cc/manual/getg" target="_blank"><span class="a">getg</span></a><span class="k2">(</span>c<span class="k2">)</span> <span class="k3">+</span> <a href="http://www.allegro.cc/manual/getb" target="_blank"><span class="a">getb</span></a><span class="k2">(</span>c<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>   a <span class="k3">=</span> MID<span class="k2">(</span><span class="n">0</span>, a<span class="k3">/</span><span class="n">2</span><span class="k3">-</span><span class="n">128</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 116</span>
<span class="number"> 117</span>   <a href="http://www.allegro.cc/manual/putpixel" target="_blank"><span class="a">putpixel</span></a><span class="k2">(</span>sprite, x, y, a<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 118</span>      <span class="k2">}</span>
<span class="number"> 119</span>   <span class="k2">}</span>
<span class="number"> 120</span>
<span class="number"> 121</span>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>alpha<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 122</span>
<span class="number"> 123</span>   <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span>bpp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 124</span>
<span class="number"> 125</span>   <span class="c">/* darken the background image down a bit */</span>
<span class="number"> 126</span>   <a href="http://www.allegro.cc/manual/drawing_mode" target="_blank"><span class="a">drawing_mode</span></a><span class="k2">(</span>DRAW_MODE_TRANS, NULL, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 127</span>   <a href="http://www.allegro.cc/manual/set_multiply_blender" target="_blank"><span class="a">set_multiply_blender</span></a><span class="k2">(</span><span class="n">0</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="number"> 128</span>   <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>background, <span class="n">0</span>, <span class="n">0</span>, background-&gt;w, background-&gt;h,
<span class="number"> 129</span>      <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">32</span>, <span class="n">16</span>, <span class="n">128</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 130</span>   <a href="http://www.allegro.cc/manual/solid_mode" target="_blank"><span class="a">solid_mode</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>
<span class="number"> 132</span>   <span class="c">/* create a double buffer bitmap */</span>
<span class="number"> 133</span>   buffer <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"> 134</span>
<span class="number"> 135</span>   <span class="c">/* scale the background image to be the same size as the screen */</span>
<span class="number"> 136</span>   <a href="http://www.allegro.cc/manual/stretch_blit" target="_blank"><span class="a">stretch_blit</span></a><span class="k2">(</span>background, buffer, <span class="n">0</span>, <span class="n">0</span>, background-&gt;w, background-&gt;h,
<span class="number"> 137</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"> 138</span>
<span class="number"> 139</span>   <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">0</span>, <span class="n">0</span>, <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="k3">-</span><span class="n">1</span>,
<span class="number"> 140</span>     <span class="s">"%dx%d, %dbpp"</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>, bpp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 141</span>
<span class="number"> 142</span>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>background<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 143</span>   background <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"> 144</span>   <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, background, <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"> 145</span>
<span class="number"> 146</span>      <a href="http://www.allegro.cc/manual/set_alpha_blender" target="_blank"><span class="a">set_alpha_blender</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 147</span>   <span class="k1">while</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="k2">{</span>
<span class="number"> 148</span>      <span class="c">/* draw the alpha sprite */</span>
<span class="number"> 149</span>      x <span class="k3">=</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">-</span> sprite-&gt;w<span class="k3">/</span><span class="n">2</span><span class="k2">;</span>
<span class="number"> 150</span>      y <span class="k3">=</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">-</span> sprite-&gt;h<span class="k3">/</span><span class="n">2</span><span class="k2">;</span>
<span class="number"> 151</span>  
<span class="number"> 152</span>  <span class="c">//    set_alpha_blender(); </span>
<span class="number"> 153</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 154</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 155</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 156</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 159</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 160</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 163</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 164</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 166</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 167</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 168</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 169</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 170</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 171</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 172</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 173</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 174</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 175</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 176</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 177</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 178</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 179</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 180</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>      
<span class="number"> 181</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 182</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 183</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 184</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 185</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 186</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 187</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 188</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 189</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 190</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 191</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 192</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 193</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 194</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 195</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 196</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 197</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 198</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 199</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 200</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 201</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 202</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 203</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 204</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 205</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 206</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 207</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 208</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>      
<span class="number"> 209</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 210</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 211</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 212</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 213</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 214</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 215</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 216</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 217</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 218</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 219</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 220</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 221</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 222</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 223</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 224</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 225</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 226</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 227</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 228</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 229</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 230</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 231</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 232</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 233</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 234</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 235</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 236</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>      
<span class="number"> 237</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 238</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 239</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 240</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 241</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 242</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 243</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 244</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 245</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 246</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 247</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 248</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 249</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 250</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 251</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 252</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 253</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 254</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 255</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 256</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 257</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 258</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 259</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 260</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 261</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 262</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 263</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 264</span>      <a href="http://www.allegro.cc/manual/draw_trans_sprite" target="_blank"><span class="a">draw_trans_sprite</span></a><span class="k2">(</span>buffer, sprite, x, y<span class="k2">)</span><span class="k2">;</span>      
<span class="number"> 265</span>      
<span class="number"> 266</span>                                                                               
<span class="number"> 267</span>                                                                              
<span class="number"> 268</span>             
<span class="number"> 269</span>
<span class="number"> 270</span>      <span class="c">/* flip it across to the screen */</span>
<span class="number"> 271</span>      <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <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"> 272</span>
<span class="number"> 273</span>      <span class="c">/* replace the background where we drew the sprite */</span>
<span class="number"> 274</span>      <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>background, buffer, x, y, x, y, sprite-&gt;w, sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 275</span>   <span class="k2">}</span>
<span class="number"> 276</span>
<span class="number"> 277</span>   <a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 278</span>
<span class="number"> 279</span>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>background<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 280</span>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>sprite<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 281</span>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 282</span>
<span class="number"> 283</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 284</span><span class="k2">}</span>
<span class="number"> 285</span>
<span class="number"> 286</span><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span>
</div></div><p>


</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
After all, I bet you&#039;re not compiling Allegro with different settings...
</p></div></div><p>

I don&#039;t understand what you meant, can you reword it please?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Wed, 31 Jan 2007 00:10:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>He means, are you recompiling Allegro along with your program?<br />If not, then what optimisation options you specify should not influence draw_trans_sprite.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Wed, 31 Jan 2007 00:12:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think he means, that you only compile your <b>project</b> with different settings, not allegro.</p><p>Edit: beaten...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kauhiz)</author>
		<pubDate>Wed, 31 Jan 2007 00:14:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am only compiling my project, I am using pre-built binaries for MinGW.<br />here is the compile log:</p><p><tt>
Building Makefile: &quot;C:\Documents and Settings\pablo\Escritorio\Makefile.win&quot;
Finding dependencies for file: C:\Documents and Settings\pablo\Escritorio\allegro-misc-4.2.1\examples\exalpha.c
Executing  make...
make.exe -f &quot;C:\Documents and Settings\pablo\Escritorio\Makefile.win&quot; all
g++.exe -c allegro-misc-4.2.1/examples/exalpha.c -o allegro-misc-4.2.1/examples/exalpha.o -I&quot;C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include&quot;  -I&quot;C:/Dev-Cpp/include/c++/3.4.2/backward&quot;  -I&quot;C:/Dev-Cpp/include/c++/3.4.2/mingw32&quot;  -I&quot;C:/Dev-Cpp/include/c++/3.4.2&quot;  -I&quot;C:/Dev-Cpp/include&quot;    -O3

g++.exe allegro-misc-4.2.1/examples/exalpha.o  -o &quot;draw_alpha.exe&quot; -L&quot;C:/Dev-Cpp/lib&quot; -mwindows ../../../Dev-Cpp/lib/liballeg.a  

Execution terminated
Compilation successful
</tt></p><p>Am I doing something wrong? if yes, then how should I compile my project with optimizations in devcpp?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Wed, 31 Jan 2007 00:29:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Paul, by the way, my routines are optimized for anti-aliased sprite rendering, so they perform best when the percentage of translucent pixels is low.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Fladimir da Gorf)</author>
		<pubDate>Wed, 31 Jan 2007 00:33:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Do you know how to use a profiler? That could help determine what&#39;s going on.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Wed, 31 Jan 2007 00:34:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Paul, by the way, my routines are optimized for anti-aliased sprite rendering, so they perform best when the percentage of translucent pixels is low.
</p></div></div><p>

Anti-aliased sprites is exactly what I am using.:)<br />.<br /><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/3/7/372086a704234f24d84e01dcf4b8a9ae.png" alt="591104" width="100" height="100" /><br />.<br />And your routines(with -O3) are faster than draw_trans_sprite(without optimization), but they are much much much more faster than draw_trans_sprite(with -O3).</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Do you know how to use a profiler? That could help determine what&#39;s going on.
</p></div></div><p>
Yes, I&#39;ll profile it, however I don&#39;t need to profile anything to appreciate the speed lose in draw_trans_sprite with -On.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Wed, 31 Jan 2007 00:52:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In fact, I could implement a run-length encoding of translucent sprites which might be even faster... but it&#39;d be some work. However, it seems that these days the memory speed plays even a bigger role than before, so the MMX logic doesn&#39;t speed things up as drastically as in my old Pentium 800Mhz...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Fladimir da Gorf)</author>
		<pubDate>Wed, 31 Jan 2007 01:25:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>draw_trans_sprite wont change when you change your -On parameter.  The problem would have to be somewhere else...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Wed, 31 Jan 2007 02:52:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
In fact, I could implement a run-length encoding of translucent sprites which might be even faster... but it&#39;d be some work. However, it seems that these days the memory speed plays even a bigger role than before, so the MMX logic doesn&#39;t speed things up as drastically as in my old Pentium 800Mhz...
</p></div></div><p>

That would be great! more speed == more sprites on the screen.<br />I don&#39;t know, you are the expert, but if the RLE works on the alpha channel as I think it should, then blitting a big sprite, with an alpha channel like the one I posted below, should obtain a significant gain in speed, or not?</p><p>.<br /><span class="remote-thumbnail"><span class="json">{"name":"591106","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/6\/26ca77ddda0e128005fa9f427b2fabba.png","w":320,"h":240,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/6\/26ca77ddda0e128005fa9f427b2fabba"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/2/6/26ca77ddda0e128005fa9f427b2fabba-240.jpg" alt="591106" width="240" height="180" /></span><br />.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
draw_trans_sprite wont change when you change your -On parameter. The problem would have to be somewhere else...
</p></div></div><p>

Yes, but does someone know why -On in Devcpp makes exalpha.c run slower? without optimization it runs faster, what is wrong then?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Wed, 31 Jan 2007 05:08:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I see no difference with gcc-3.4.6.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Milan Mimica)</author>
		<pubDate>Wed, 31 Jan 2007 05:30:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I see no difference with gcc-3.4.6.
</p></div></div><p>

I am using devcpp with GCC 3.4.2.<br />Did you try the binaries I posted in my previous post? they run at different speeds in my P4 2400Mhz, if you have a faster PC probably you would not notice the difference.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Wed, 31 Jan 2007 06:28:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
if the RLE works on the alpha channel as I think it should, then blitting a big sprite, with an alpha channel like the one I posted below, should obtain a significant gain in speed
</p></div></div><p>
Yes, indeed. The more there&#39;s either transparent or solid pixels, the faster it&#39;d be.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Fladimir da Gorf)</author>
		<pubDate>Wed, 31 Jan 2007 19:13:52 +0000</pubDate>
	</item>
</rss>
