<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>getpixel() crashes program?</title>
		<link>http://www.allegro.cc/forums/view/588282</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 01 Nov 2006 02:31:19 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m trying to put together a Tetris clone called Bubbles using the Allegro library. It was all going swimmingly until I tried to display the bubbles (the blocks that make up the shapes).</p><p>See, I&#39;m storing both the grid area and the current shape as small bitmaps a few pixels wide and tall, where one pixel corresponds to one block on screen. As such, I have to check what colour a given pixel is so that I can print the appropriate colour of block onto the screen. And that&#39;s where the problem lies.</p><p>I try to grab the pixel in question and compare it to my pre-defined colours in some way, to decide what to print to the screen. But every way I try to use to compare the two colours ends up crashing my program. I&#39;ve tried defining RGB colours and comparing them to the colour grabbed with getpixel(), directly comparing the pixel grabbed to a pixel from a bitmap that exists for the sole purpose of being an example of all of the colours... everything crashes it.</p><p>Here&#39;s the relevant bit of code (actually, the real thing has more ifs, but they&#39;re mostly the same as the first anyway). The loops cycle through all the pixels in the shape bitmap, and the if statement SHOULD print a red bubble in the correct place if the pixel is red. The draw_sprite() by itself works like a charm, but trying any kind of colour comparison makes it crash.</p><div class="source-code snippet"><div class="inner"><pre>         <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> y <span class="k3">&lt;</span> c_height<span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
              <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> x <span class="k3">&lt;</span> c_width<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
                   <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/_getpixel" target="_blank"><span class="a">_getpixel</span></a><span class="k2">(</span>cluster, x, y<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</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">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
                         <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, red, <span class="k2">(</span>left <span class="k3">+</span> <span class="k2">(</span><span class="k2">(</span>c_x <span class="k3">+</span> x<span class="k2">)</span> <span class="k3">*</span> b_width<span class="k2">)</span><span class="k2">)</span>, <span class="k2">(</span>top <span class="k3">+</span> <span class="k2">(</span><span class="k2">(</span>c_y <span class="k3">+</span> y<span class="k2">)</span> <span class="k3">*</span> b_height<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
                   <span class="k2">}</span>
              <span class="k2">}</span>
         <span class="k2">}</span>
</pre></div></div><p>

I&#39;ve been experimenting with trial and error for the past few hours, and searching these forums for likely topics, but nothing so far has worked. So a little wisdom from all you Allegro experts would be greatly appreciated.</p><p>P.S., try to keep explanations insultingly simple - I&#39;m an Allegro newbie. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Crystylla)</author>
		<pubDate>Mon, 30 Oct 2006 22:24:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are your bitmaps 8 bit?<br />_getpixel() only works for 8 bit bitmaps. For higher colour depths, you need to use the proper version (be sure to check the manual for other caveats).</p><p>There are better waysto accomplish what you want than what you&#39;re doing now, but I&#39;ll leave it at the above for now.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Mon, 30 Oct 2006 22:36:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
P.S., try to keep explanations insultingly simple - I&#39;m an Allegro newbie.
</p></div></div><p>
First off and foremost, have you stepped through it using a debugger of any kind?  I think _getpixel() crashes if it tries to get a pixel outside the bitmap, but getpixel() will return a -1.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Onewing)</author>
		<pubDate>Mon, 30 Oct 2006 22:37:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The bitmaps are all 24-bit (or they should be; that&#39;s what I saved them saved as). I tried the regular getpixel() as well (in fact, I only tried changing it to _getpixel() recently, in desperation), but that crashes just the same.</p><p>The point I&#39;m checking is definitely inside the bitmap. I tried commenting out the loop and just giving it some test co-ordinates to make sure that the loop&#39;s x and y values weren&#39;t messing it up. And I&#39;ll know if it&#39;s returning the right thing, because the red bubbles should appear on screen (the Dev-C++ debugger doesn&#39;t seem to want to co-operate with me right now).</p><p>EDIT: Actually, the bubble and background bitmaps, which are loaded from bitmap files, are 24-bit... but the bitmaps I don&#39;t load from files, I don&#39;t know.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Crystylla)</author>
		<pubDate>Mon, 30 Oct 2006 22:49: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 the bitmaps I don&#39;t load from files, I don&#39;t know.
</p></div></div><p>

Their bit depth will be whatever you set with <tt>set_color_depth</tt>. If you didn&#39;t set a color depth, they will be 8bit.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Mon, 30 Oct 2006 22:54:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The bitmaps are all 24-bit (or they should be; that&#39;s what I saved them saved as).
</p></div></div><p>
Doesn&#39;t work with _getpixel then.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I tried the regular getpixel() as well (in fact, I only tried changing it to _getpixel() recently, in desperation), but that crashes just the same.
</p></div></div><p>
Odd. Check that cluster, buffer and red are valid bitmaps. Try making a small example program that reproduces the error.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Mon, 30 Oct 2006 23:03:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Okay, I just tried setting it to 24-bit, and I still get a crash.</p><p>(In other news: On closer inspection, I noticed that yeah, setting to x and y to zero at the start of the loops wasn&#39;t going to get me far in terms of bitmap co-ordinates, so I&#39;ve changed that. Also, make x &lt; c_width into x &lt;= c_width to accomodate for that. Same with y.)</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> y <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> y <span class="k3">&lt;</span><span class="k3">=</span> c_height<span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
              <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> x <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> x <span class="k3">&lt;</span><span class="k3">=</span> c_width<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
                   <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/getpixel" target="_blank"><span class="a">getpixel</span></a><span class="k2">(</span>cluster, x, y<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</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">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
                         <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, blue, <span class="k2">(</span>left <span class="k3">+</span> <span class="k2">(</span><span class="k2">(</span>c_x <span class="k3">+</span> x<span class="k2">)</span> <span class="k3">*</span> b_width<span class="k2">)</span><span class="k2">)</span>, <span class="k2">(</span>top <span class="k3">+</span> <span class="k2">(</span><span class="k2">(</span>c_y <span class="k3">+</span> y<span class="k2">)</span> <span class="k3">*</span> b_height<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
                   <span class="k2">}</span>
</pre></div></div><p>

You know, I&#39;ve tried this project before, and then I used char arrays instead of bitmaps to do this (and switch statements instead of if statements). That worked, but I thought this seemed neater somehow. What do you reckon?</p><p>EDIT: Trying your advice now, Evert...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Crystylla)</author>
		<pubDate>Mon, 30 Oct 2006 23:10:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
On closer inspection, I noticed that yeah, setting to x and y to zero at the start of the loops wasn&#39;t going to get me far in terms of bitmap co-ordinates, so I&#39;ve changed that.
</p></div></div><p>

You had it right the first time. The top-left pixel in a bitmap is co-ordinate 0,0.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Mon, 30 Oct 2006 23:14:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I did? Hmm, thanks. I&#39;ll change it back...</p><p>As far as I can see, cluster, buffer and red are valid. I tried throwing together a small test program, but this crashes, too...</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">void</span> init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td><span class="k1">void</span> deinit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">7</td><td>  init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    </td></tr><tr><td class="number">9</td><td>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">10</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>red<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    <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></td></tr><tr><td class="number">12</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>grid<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    <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></td></tr><tr><td class="number">14</td><td>    </td></tr><tr><td class="number">15</td><td>        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><span class="s">"images/background.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>        red <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><span class="s">"images/bubble_red.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>        <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>grid, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>        <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>buffer, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    </td></tr><tr><td class="number">20</td><td>    <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, background, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    </td></tr><tr><td class="number">22</td><td>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/getpixel" target="_blank"><span class="a">getpixel</span></a><span class="k2">(</span>grid, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">23</td><td>             <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, red, <span class="n">5</span>, <span class="n">5</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">25</td><td>    </td></tr><tr><td class="number">26</td><td>        <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>, <span class="n">320</span>, <span class="n">400</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>        <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">29</td><td>    </td></tr><tr><td class="number">30</td><td>  deinit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td><span class="k2">}</span></td></tr><tr><td class="number">33</td><td><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></td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</td><td><span class="k1">void</span> init<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">36</td><td>  <span class="k1">int</span> depth, res<span class="k2">;</span></td></tr><tr><td class="number">37</td><td>  <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></td></tr><tr><td class="number">38</td><td>  <span class="c">//depth = desktop_color_depth();</span></td></tr><tr><td class="number">39</td><td>  <span class="c">//if (depth == 0) depth = 32;</span></td></tr><tr><td class="number">40</td><td>  <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">24</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>  res <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_WINDOWED, <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></td></tr><tr><td class="number">42</td><td>  <span class="k1">if</span> <span class="k2">(</span>res <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">43</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</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></td></tr><tr><td class="number">44</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">46</td><td>    </td></tr><tr><td class="number">47</td><td>  <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></td></tr><tr><td class="number">48</td><td>  <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></td></tr><tr><td class="number">49</td><td>  <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></td></tr><tr><td class="number">50</td><td>  <span class="c">/* add other initializations here */</span></td></tr><tr><td class="number">51</td><td><span class="k2">}</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td><span class="k1">void</span> deinit<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">54</td><td>  <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></td></tr><tr><td class="number">55</td><td>  <span class="c">/* add other deinitializations here */</span></td></tr><tr><td class="number">56</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Crystylla)</author>
		<pubDate>Mon, 30 Oct 2006 23:23:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The only way you can make getpixel crash is if you give it an invalid bitmap pointer. Are you sure cluster is an actual valid pointer to a BITMAP? If cluster is a bitmap that you load from disk, then maybe this is the right moment to start checking if load_bitmap() was actually successful or not.</p><p>EDIT: In the example above grid is uninitialized.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Mon, 30 Oct 2006 23:25:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Also remove:
</p><div class="source-code snippet"><div class="inner"><pre>  <span class="k1">if</span> <span class="k2">(</span>res <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</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>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k2">}</span>
</pre></div></div><p>

Since you haven&#39;t defined <tt>res</tt>.</p><p>edit: Never mind that. I just missed where you did.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Mon, 30 Oct 2006 23:27:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Also you made a huge enourmous gigantic memory leak.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Mon, 30 Oct 2006 23:29:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The only way you can make getpixel crash is if you give it an invalid bitmap pointer. Are you sure cluster is an actual valid pointer to a BITMAP? If cluster is a bitmap that you load from disk, then maybe this is the right moment to start checking if load_bitmap() was actually successful or not.
</p></div></div><p>
Ah... now that I look at it, I think it <i>is</i> the cluster that&#39;s causing it to crash. I&#39;ll see if I can&#39;t fiddle with the cluster to make it work. Huge thanks!</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Also you made a huge enourmous gigantic memory leak.
</p></div></div><p>
By putting everything into the loop? Oops. Sorry about that, I was being rushed to get off the PC for a while.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Crystylla)</author>
		<pubDate>Tue, 31 Oct 2006 00:34:15 +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 being rushed to get off the PC for a <b>while</b>.
</p></div></div><p>

So you decided to put everything in a <tt>while {}</tt> then? <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Tue, 31 Oct 2006 00:41:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">void</span> init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td><span class="k1">void</span> deinit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">7</td><td>  init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>red<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <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></td></tr><tr><td class="number">11</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>grid<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    <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></td></tr><tr><td class="number">13</td><td>    </td></tr><tr><td class="number">14</td><td>        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><span class="s">"images/background.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>        red <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><span class="s">"images/bubble_red.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>        grid <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><span class="n">320</span>, <span class="n">400</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>        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><span class="n">640</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>        <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>grid, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>        <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>buffer, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>        <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>background<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">22</td><td>            <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">"Unable to load \"images/background.bmp\".\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>        <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>red<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">27</td><td>            <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">"Unable to load \"images/bubble_red.bmp\".\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">30</td><td>    </td></tr><tr><td class="number">31</td><td>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">32</td><td>    </td></tr><tr><td class="number">33</td><td>    <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, background, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>    </td></tr><tr><td class="number">35</td><td>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/getpixel" target="_blank"><span class="a">getpixel</span></a><span class="k2">(</span>grid, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">36</td><td>             <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, red, <span class="n">5</span>, <span class="n">5</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">38</td><td>    </td></tr><tr><td class="number">39</td><td>        <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>, <span class="n">320</span>, <span class="n">400</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>        <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">42</td><td>    </td></tr><tr><td class="number">43</td><td>  deinit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td><span class="k2">}</span></td></tr><tr><td class="number">46</td><td><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></td></tr><tr><td class="number">47</td><td>&#160;</td></tr><tr><td class="number">48</td><td><span class="k1">void</span> init<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">49</td><td>  <span class="k1">int</span> depth, res<span class="k2">;</span></td></tr><tr><td class="number">50</td><td>  <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></td></tr><tr><td class="number">51</td><td>  <span class="c">//depth = desktop_color_depth();</span></td></tr><tr><td class="number">52</td><td>  <span class="c">//if (depth == 0) depth = 32;</span></td></tr><tr><td class="number">53</td><td>  <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">24</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>  res <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_WINDOWED, <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></td></tr><tr><td class="number">55</td><td>  <span class="k1">if</span> <span class="k2">(</span>res <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">56</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</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></td></tr><tr><td class="number">57</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">59</td><td>    </td></tr><tr><td class="number">60</td><td>  <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></td></tr><tr><td class="number">61</td><td>  <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></td></tr><tr><td class="number">62</td><td>  <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></td></tr><tr><td class="number">63</td><td>  <span class="c">/* add other initializations here */</span></td></tr><tr><td class="number">64</td><td><span class="k2">}</span></td></tr><tr><td class="number">65</td><td>&#160;</td></tr><tr><td class="number">66</td><td><span class="k1">void</span> deinit<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">67</td><td>  <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></td></tr><tr><td class="number">68</td><td>  <span class="c">/* add other deinitializations here */</span></td></tr><tr><td class="number">69</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Tue, 31 Oct 2006 00:44:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks guys, it works beautifully now! <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><p>(Yeah, it was the cluster that was breaking it... heh.)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Crystylla)</author>
		<pubDate>Wed, 01 Nov 2006 02:31:19 +0000</pubDate>
	</item>
</rss>
