<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Another al_load_bitmap NOT working out...</title>
		<link>http://www.allegro.cc/forums/view/610587</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 09 Jul 2012 04:00:28 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello, I&#39;ve been over the passed couple of days setting up Visual Studio with Allegro 5.0.7 and have been learning about the Allegro library. I am a seasoned in c++ but don&#39;t usually create gaming codes with it; however, on a colleagues advice I&#39;ve taken the plunge! While running through some tutorials I&#39;ve encountered some problems...</p><p> THE ISSUE: I am having trouble loading bitmaps/resources in the MSVS 2010 IDE using Allegro 5 without using absolute paths to the directory in which they are stored.<br /> So I did some research and found some code snippets within these forums and others that resolve these issues. These have not worked for me, unfortunately. I will post the code below. Any advice will be well received. Thanks!
</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="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;allegro5/allegro_native_dialog.h&gt;</span>
<span class="number">  4</span>
<span class="number">  5</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  6</span> 
<span class="number">  7</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> 
<span class="number">  8</span>  <a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 11</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a>  <span class="k3">*</span>image   <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 12</span>  
<span class="number"> 13</span>  ALLEGRO_PATH <span class="k3">*</span>path <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_standard_path"><span class="a">al_get_standard_path</span></a><span class="k2">(</span>ALLEGRO_RESOURCES_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_92.html" target="_blank">chdir</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_path_cstr"><span class="a">al_path_cstr</span></a><span class="k2">(</span>path, <span class="s">'/'</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>  <a href="http://www.allegro.cc/manual/al_destroy_path"><span class="a">al_destroy_path</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>
<span class="number"> 17</span>    image <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"pandaHill.bmp"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>    
<span class="number"> 19</span>  <span class="c">//image = al_load_bitmap("C:/bitmaps/pandaHill.bmp");</span>
<span class="number"> 20</span>  
<span class="number"> 21</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 22</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>display, <span class="s">"Error"</span>, <span class="s">"Error"</span>, <span class="s">"Failed to initialize allegro!"</span>, 
<span class="number"> 23</span>                                 NULL, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 25</span>  <span class="k2">}</span>
<span class="number"> 26</span> 
<span class="number"> 27</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 28</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>display, <span class="s">"Error"</span>, <span class="s">"Error"</span>, <span class="s">"Failed to initialize al_init_image_addon!"</span>, 
<span class="number"> 29</span>                                 NULL, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 31</span>  <span class="k2">}</span>
<span class="number"> 32</span> 
<span class="number"> 33</span>  display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">800</span>,<span class="n">600</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span> 
<span class="number"> 35</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 36</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>display, <span class="s">"Error"</span>, <span class="s">"Error"</span>, <span class="s">"Failed to initialize display!"</span>, 
<span class="number"> 37</span>                                 NULL, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>      <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 39</span>   <span class="k2">}</span>
<span class="number"> 40</span> 
<span class="number"> 41</span>   
<span class="number"> 42</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>image<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 43</span>      <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>display, <span class="s">"Error"</span>, <span class="s">"Error"</span>, <span class="s">"Failed to load image!"</span>, 
<span class="number"> 44</span>                                 NULL, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>      <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>      <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 47</span>   <span class="k2">}</span>
<span class="number"> 48</span> 
<span class="number"> 49</span>   <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>image, <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"> 50</span> 
<span class="number"> 51</span>   <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</span>   <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 53</span> 
<span class="number"> 54</span>   <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 55</span>   <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>image<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</span> 
<span class="number"> 57</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 58</span><span class="k2">}</span>
</div></div><p>

I have also tried using these to no avail as well... I gotta be doing something simply wrong:-/</p><div class="source-code snippet"><div class="inner"><pre>ALLEGRO_PATH <span class="k3">*</span>path <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_standard_path"><span class="a">al_get_standard_path</span></a><span class="k2">(</span>ALLEGRO_RESOURCES_PATH<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_append_path_component"><span class="a">al_append_path_component</span></a><span class="k2">(</span>path, <span class="s">"resources"</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_change_directory"><span class="a">al_change_directory</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_path_cstr"><span class="a">al_path_cstr</span></a><span class="k2">(</span>path, <span class="s">'/'</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>  
<a href="http://www.allegro.cc/manual/al_destroy_path"><span class="a">al_destroy_path</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
 
image <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"pandaHill.bmp"</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

AND</p><div class="source-code snippet"><div class="inner"><pre>ALLEGRO_PATH <span class="k3">*</span>path <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_standard_path"><span class="a">al_get_standard_path</span></a><span class="k2">(</span>ALLEGRO_RESOURCES_PATH<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_append_path_component"><span class="a">al_append_path_component</span></a><span class="k2">(</span>path, <span class="s">"resources"</span><span class="k2">)</span><span class="k2">;</span>
 
<a href="http://www.allegro.cc/manual/al_set_path_filename"><span class="a">al_set_path_filename</span></a><span class="k2">(</span>path, <span class="s">"pandaHill.bmp"</span><span class="k2">)</span><span class="k2">;</span>
image <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_path_cstr"><span class="a">al_path_cstr</span></a><span class="k2">(</span>path, <span class="s">'/'</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
 
<a href="http://www.allegro.cc/manual/al_destroy_path"><span class="a">al_destroy_path</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (blackbeard)</author>
		<pubDate>Sun, 08 Jul 2012 06:48:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Is your executable <i>really</i> in &quot;C:/bitmaps/&quot;?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sun, 08 Jul 2012 08:03:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>One thing that strikes me is calling al_init and al_init_image_addon twice. (Shouldn&#39;t be a problem...) Also, calling al_create_display can better be done before loading.(Might be a problem?)<br />The code posted should work. The only thing I can think of is there might be space in the real filename?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (weapon_S)</author>
		<pubDate>Sun, 08 Jul 2012 09:31:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If what the others have said doesn&#39;t help, you could run <a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx">Process Monitor</a> and see exactly what path and file your game is trying to load.  It&#39;s a very useful debugging tool.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (torhu)</author>
		<pubDate>Sun, 08 Jul 2012 14:57:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If I recall correctly, it is VERY important that you create the display first, otherwise the bitmaps will be created in memory instead of in the display, and blitting operations will be MUCH slower.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Luiji99)</author>
		<pubDate>Mon, 09 Jul 2012 02:52:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>try:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">char</span> thepath<span class="k2">[</span><span class="n">200</span><span class="k2">]</span>

<a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>thepath,<span class="s">"%spandaHill.bmp"</span>,<a href="http://www.allegro.cc/manual/al_path_cstr"><span class="a">al_path_cstr</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_standard_path"><span class="a">al_get_standard_path</span></a><span class="k2">(</span>ALLEGRO_RESOURCES_PATH<span class="k2">)</span>, <span class="s">'/'</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>

<a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span>thepath<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

If it doesn&#39;t work, try printing the directory variable and see where it is(by using <span class="source-code"><a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, directory<span class="k2">)</span></span> or something similar). Move your image to that folder and it should work fine, even without adding all this stuff.</p><p>EDIT: Thanks, Thomas <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />EDIT2: Just checked that this code shouldn&#39;t work, due to the return value of  al_get_standart_path() not being a char*. Forget about it <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /><br />EDIT3(I&#39;m done editing): now it should work.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cassio Renan)</author>
		<pubDate>Mon, 09 Jul 2012 03:54:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>current directory won&#39;t work when you run the application via windows explorer or an IDE. They all run with a current directory that is not your application&#39;s folder.</p><p>The ALLEGRO_RESOURCES_PATH path should get you the proper directory.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Mon, 09 Jul 2012 03:55:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Given the commented code <span class="source-code"><span class="s">"C:/bitmaps/pandaHill.bmp"</span></span>, the duplicate initialize calls,  blindly trying to use the <span class="source-code"><span class="s">"resources"</span></span> directory, I would guess he is copy-pasting code without even attempting to understand what is going on.</p><p>All he probably needs to do is copy his bitmap into the same folder as the executable, and use his original code after fixing the obvious problem of calling functions in the wrong order and multiple times.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Mon, 09 Jul 2012 04:00:28 +0000</pubDate>
	</item>
</rss>
