<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Crash because of data file</title>
		<link>http://www.allegro.cc/forums/view/581977</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 28 Apr 2006 03:32:27 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I had a whole bunch of images and midi files, and decided to try using a data file. It&#39;s all fine and dandy when compiling, but crashes when it tries to &#39;draw_sprite()&#39;.</p><p>I&#39;ve commented what I think is relevant. As the code shown here was done in the heat of the moment, and I just did whatever popped into my brain for x&#39;s and o&#39;s. So any tips on fixing it up or efficiency is welcome.<br />[Note: I&#39;ve attached everything in a rar]</p><p>Here is a snippet: (max post size is 64k <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" /> so I just cut and pasted the relevant stuff)
</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><a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>data<span class="k2">;</span></td></tr><tr><td class="number">4</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>x_pic<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td>data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a> <span class="k2">(</span><span class="s">"game.dat"</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>x_pic <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.dat<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ENTER<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> squares<span class="k2">[</span>location<span class="k2">]</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> squares<span class="k2">[</span>location<span class="k2">]</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span></td></tr><tr><td class="number">12</td><td>               <span class="k2">{</span></td></tr><tr><td class="number">13</td><td>                <span class="k1">if</span><span class="k2">(</span>turn <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">14</td><td>                        <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>                         <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, x_pic, x, y<span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">16</td><td>                         squares<span class="k2">[</span>location<span class="k2">]</span> <span class="k3">=</span> turn<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>                         count<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>                        <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>                <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>turn <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span></td></tr><tr><td class="number">20</td><td>                        <span class="k2">{</span></td></tr><tr><td class="number">21</td><td>                         <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, o_pic, x, y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>                         squares<span class="k2">[</span>location<span class="k2">]</span> <span class="k3">=</span> turn<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>                         count<span class="k3">+</span><span class="k3">+</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>                  check_win<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>                     </td></tr><tr><td class="number">27</td><td>               <span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (yipster)</author>
		<pubDate>Fri, 28 Apr 2006 01:25:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Have you checked if x_pic is zero? Have you properly initialized everything?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Faerber)</author>
		<pubDate>Fri, 28 Apr 2006 01:28:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well I&#39;ve added</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>data <span class="k3">=</span> NULL<span class="k2">;</span>
<a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>x_pic <span class="k3">=</span> NULL<span class="k2">;</span>
</pre></div></div><p>

Still crashes when it tries to draw_sprite(). <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (yipster)</author>
		<pubDate>Fri, 28 Apr 2006 01:47:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Did oyu make sure data isn&#39;t null?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Fri, 28 Apr 2006 02:36:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are you sure the sprite is the first object in the datafile?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Fri, 28 Apr 2006 02:38:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">BAF said:</div><div class="quote"><p>
 Did oyu make sure data isn&#39;t null?
</p></div></div><p>
Not sure what you mean. I&#39;ve intialized data and made sure it was NULL. And then &quot;data = load_datafile (&quot;game.dat&quot;);&quot;</p><div class="quote_container"><div class="title">Kitty Cat said:</div><div class="quote"><p>
 Are you sure the sprite is the first object in the datafile?
</p></div></div><p>
Hmm...I used the grabber, and the &#39;x&#39; picture is at the top. So unless the grabber index&#39;s the last item as &#39;0&#39; , then I&#39;m pretty sure the &#39;x&#39; picture is at the top.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (yipster)</author>
		<pubDate>Fri, 28 Apr 2006 02:58:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Maybe it&#39;s failing to load?</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a> <span class="k2">(</span><span class="s">"game.dat"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"error loading data file!\n"</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="k2">}</span>

<span class="c">// --- or ---</span>

data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a> <span class="k2">(</span><span class="s">"game.dat"</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>data<span class="k2">)</span> <span class="k2">{</span>
  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"error loading data file!\n"</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (scriptX)</author>
		<pubDate>Fri, 28 Apr 2006 02:59:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Not sure what you mean. I&#39;ve intialized data and made sure it was NULL. And then &quot;data = load_datafile (&quot;game.dat&quot;);&quot;
</p></div></div><p>

I meant what scriptX meant in the example he posted.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Fri, 28 Apr 2006 03:08:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I did something like this to make sure and commented out all the game function calls. Compiled and ran, result: data file did not fail to load.
</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="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">2</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">3</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">4</td><td>    <a href="http://www.allegro.cc/manual/install_sound" target="_blank"><span class="a">install_sound</span></a><span class="k2">(</span><span class="n">0</span>,MIDI_AUTODETECT,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</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">16</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    <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></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>    data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a> <span class="k2">(</span><span class="s">"game.dat"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>data<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>    <a href="http://www.allegro.cc/manual/textout_centre_ex" target="_blank"><span class="a">textout_centre_ex</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"error loading"</span>,  <span class="n">320</span>, <span class="n">240</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>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>      </td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">17</td><td>      </td></tr><tr><td class="number">18</td><td>      <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (yipster)</author>
		<pubDate>Fri, 28 Apr 2006 03:09:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What is o_pic in your original source?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Fri, 28 Apr 2006 03:23:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>x_pic represents the bitmap for &#39;X&#39;<br />o_pic represents the bitmap for &#39;O&#39;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (yipster)</author>
		<pubDate>Fri, 28 Apr 2006 03:27:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Is it trying to draw o_pic and failing because it is null? (I dont see anything regarding it in your source so I cant be sure).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Fri, 28 Apr 2006 03:30:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>At the start of the game, X goes first. So I&#39;m pretty sure it has nothing to do with o_pic. As for the code posted at the beginning, there just snippets of what I thought was relevant. The entire source is attached.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (yipster)</author>
		<pubDate>Fri, 28 Apr 2006 03:32:27 +0000</pubDate>
	</item>
</rss>
