<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Problems with BITMAP*s</title>
		<link>http://www.allegro.cc/forums/view/561109</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 23 Jan 2006 03:59:36 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My code uses a class that I made called SPRITE. Now SPRITE contains an array of BITMAP*s, the problem is that the first time I come to try and blit one of those BITMAP*s the whole programme crashes.<br />Now it didn&#39;t used to do this, so I don&#39;t know why it is doing it now.</p><p>This is the header and constructor for the SPRITE class:
</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">class</span> SPRITE <span class="k2">{</span></td></tr><tr><td class="number">2</td><td>      public:</td></tr><tr><td class="number">3</td><td>         <span class="k1">int</span> offset_x<span class="k2">;</span> <span class="c">//Draw offset x</span></td></tr><tr><td class="number">4</td><td>         <span class="k1">int</span> offset_y<span class="k2">;</span> <span class="c">//Draw offset y</span></td></tr><tr><td class="number">5</td><td>         <span class="k1">int</span> max_frames<span class="k2">;</span> <span class="c">//Frames in sprite (array bounds 0 - max_frames)</span></td></tr><tr><td class="number">6</td><td>         <span class="k1">int</span> width<span class="k2">;</span> <span class="c">//Sprite width (all frames)</span></td></tr><tr><td class="number">7</td><td>         <span class="k1">int</span> height<span class="k2">;</span> <span class="c">//Sprite height (all frames)</span></td></tr><tr><td class="number">8</td><td>         <span class="k1">int</span> id<span class="k2">;</span> <span class="c">//Individual sprite ID</span></td></tr><tr><td class="number">9</td><td>         <span class="k1">bool</span> <span class="k1">operator</span> <span class="k3">=</span><span class="k3">=</span> <span class="k2">(</span>SPRITE <span class="k3">&amp;</span>class1<span class="k2">)</span><span class="k2">;</span> <span class="c">//Comparison (checks IDs)</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> spr_sheet<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//Returns a BITMAP of the entire sprite sheet, horizontally.</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><span class="k3">*</span> frames<span class="k2">;</span>  <span class="c">//The pointer to the array of BITMAP*s, the main point of this</span></td></tr><tr><td class="number">12</td><td>         SPRITE<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> load_sprite, <span class="k1">int</span> load_width, <span class="k1">int</span> load_height, <span class="k1">int</span> frame_num, <span class="k1">int</span> load_offset_x <span class="k3">=</span> <span class="n">0</span>, <span class="k1">int</span> load_offset_y  <span class="k3">=</span> <span class="n">0</span>, <span class="k1">int</span> offset_x <span class="k3">=</span> <span class="n">0</span>, <span class="k1">int</span> offset_y <span class="k3">=</span> <span class="n">0</span>, <span class="k1">bool</span> debug_me <span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//The constructor, self explanitory</span></td></tr><tr><td class="number">13</td><td>         SPRITE<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//Empty Constructor</span></td></tr><tr><td class="number">14</td><td>         ~SPRITE<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//Destructor</span></td></tr><tr><td class="number">15</td><td>         <span class="k1">void</span> draw<span class="k2">(</span><span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> frame, <span class="k1">int</span> alpha <span class="k3">=</span> <span class="n">255</span>, <span class="k1">bool</span> debug_me <span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//Normal draw function</span></td></tr><tr><td class="number">16</td><td>      </td></tr><tr><td class="number">17</td><td><span class="k2">}</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>

</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>SPRITE::SPRITE<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> load_sprite, <span class="k1">int</span> load_width, <span class="k1">int</span> load_height, <span class="k1">int</span> frame_num, <span class="k1">int</span> load_offset_x, <span class="k1">int</span> load_offset_y, <span class="k1">int</span> draw_offset_x, <span class="k1">int</span> draw_offset_y, <span class="k1">bool</span> debug_me <span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">2</td><td>   <span class="k1">if</span> <span class="k2">(</span>load_sprite <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>      id <span class="k3">=</span> spr::get_safe_id<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>      </td></tr><tr><td class="number">5</td><td>      frames <span class="k3">=</span> <span class="k1">new</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>frame_num<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>      width <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>std::abs<span class="k2">(</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span><span class="k2">(</span>load_width<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>      height <span class="k3">=</span> load_height<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>      max_frames <span class="k3">=</span> frame_num<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>      offset_x <span class="k3">=</span> draw_offset_x<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>      offset_y <span class="k3">=</span> draw_offset_y<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>      <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> a <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> a <span class="k3">&lt;</span> frame_num<span class="k2">;</span> a<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">12</td><td>          frames<span class="k2">[</span>a<span class="k2">]</span> <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>width, height<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>          <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>load_sprite, frames<span class="k2">[</span>a<span class="k2">]</span>, load_offset_x <span class="k3">+</span> a<span class="k3">*</span>width, load_offset_y, <span class="n">0</span>, <span class="n">0</span>, width, height<span class="k2">)</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/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>load_sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">17</td><td>   <span class="k1">else</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 loading a certain sprite"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>


This is the init() function, which is the first one called within main():</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</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">3</td><td>  <span class="k1">int</span> depth, res<span class="k2">;</span></td></tr><tr><td class="number">4</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">5</td><td>  depth <span class="k3">=</span> <a href="http://www.allegro.cc/manual/desktop_color_depth" target="_blank"><span class="a">desktop_color_depth</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>  <span class="k1">if</span> <span class="k2">(</span>depth <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> depth <span class="k3">=</span> <span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">7</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>depth<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</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">480</span>, <span class="n">320</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">9</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">10</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">11</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">12</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</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">15</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">16</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">17</td><td>  load_bitmaps<span class="k2">(</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/install_sound" target="_blank"><span class="a">install_sound</span></a><span class="k2">(</span> DIGI_AUTODETECT, MIDI_AUTODETECT, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>  load_sounds<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>  <span class="c">/* add other initializations here */</span></td></tr><tr><td class="number">21</td><td>  <a href="http://www.allegro.cc/manual/set_close_button_callback" target="_blank"><span class="a">set_close_button_callback</span></a><span class="k2">(</span>End<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>  </td></tr><tr><td class="number">23</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_531.html" target="_blank">link</a> <span class="k3">=</span> OBJ_LINK<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//Construct link</span></td></tr><tr><td class="number">24</td><td>    helmaroc <span class="k3">=</span> OBJ_HELMAROC<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//Construct the helmaroc</span></td></tr><tr><td class="number">25</td><td>    heart_system <span class="k3">=</span> OBJ_HEARTS<span class="k2">(</span><span class="n">8</span>, <span class="n">8</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//Construct the heart system</span></td></tr><tr><td class="number">26</td><td>    SoundMeter <span class="k3">=</span> soundMeter<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//Construct the sound meter</span></td></tr><tr><td class="number">27</td><td>    rupees <span class="k3">=</span> rupeeSystem<span class="k2">(</span><span class="n">8</span>, <span class="n">142</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//construct the rupee system</span></td></tr><tr><td class="number">28</td><td>    rmtower <span class="k3">=</span> clROOM<span class="k2">(</span>tower<span class="k2">)</span><span class="k2">;</span> <span class="c">//create the tower room</span></td></tr><tr><td class="number">29</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

Now I cannot see any way that a BITMAP* could go astray and create a pointer error, unless it happens in one of those constructors (which I don&#39;t think it does, but if you want to see them you can).<br />The problem comes later when this code is run:
</p><div class="source-code snippet"><div class="inner"><pre>   link.spr_link_right_walk.draw<span class="k2">(</span><span class="n">105</span> <span class="k3">+</span> <span class="n">0</span>, <span class="n">40</span>, <span class="n">0</span>, <span class="n">255</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
This calls the draw function in the SPRITE class, which simply draws a translucent copy of that frame.</p><p>I don&#39;t know what could be going wrong, so could someone please help me? I&#39;ve been stuck on this bug for a while, and it completely stops the programme <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Miles Lombardi)</author>
		<pubDate>Mon, 23 Jan 2006 01:52:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>i hear somewhere the story of the <span class="cuss"><span>Fuck</span></span>ing Manual and the Evil &#39;I contain bitmap and contruct them before allegro is loaded&#39; Class.</p><p>Maybe you should search more on my story.</p><p>I&#39;m sorry but i use C, so i do not have the problem you got.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Mon, 23 Jan 2006 02:29:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are you compiling with gcc? Try to debug that, it should give you the answer.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Mon, 23 Jan 2006 02:44:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Gull, although that is most likely to be the problem all of the constructors are called after allegro_init(), only the declarations of the classes are called before allegro_init(), and that does not involve any creation of BITMAPs, i think.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Miles Lombardi)</author>
		<pubDate>Mon, 23 Jan 2006 03:28:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>if your program crashes, and you dont know how to find the bug, you need to learn how to use a debugger.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (A J)</author>
		<pubDate>Mon, 23 Jan 2006 03:36:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes I do, Dev-C++s tells me where it goes wrong, but I don&#39;t know how to do anything else.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Miles Lombardi)</author>
		<pubDate>Mon, 23 Jan 2006 03:37:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
all of the constructors are called after allegro_init()
</p></div></div><p>
It is my understanding that constructors are called when the variable is declared. Your variables look to be declared before allegro_init(). But even if you do declare them below allegro_init(), I&#39;m not sure if it is guarenteed that the constructors are called after it (it might be though).</p><p>As a rule of thumb, don&#39;t call Allegro functions from inside a constructor function. There are cases where you can do this, but when in doubt, don&#39;t do it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Mon, 23 Jan 2006 03:40:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well there are actually two constructors for all of those things, and when they are declared globally, and pre allegro_init() it doesn&#39;t run any allegro functions because it&#39;s just a blank constructor.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Miles Lombardi)</author>
		<pubDate>Mon, 23 Jan 2006 03:48:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What does Draw do? Are you sure you are not running out of memory when allocating bitmaps? Can you attach the code? Or debug it to see inside the Draw function to see exactly in which line it crashes, and not only the function.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Mon, 23 Jan 2006 03:50:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I know exactly where it crashes, on the draw_trans_sprite.<br />And how can you run out of memory? :S<br />The computer doesn&#39;t crash, just the programme.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Miles Lombardi)</author>
		<pubDate>Mon, 23 Jan 2006 03:52:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>But can you examine if the pointer is NULL, if the trans table is broken in some way, etc?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Mon, 23 Jan 2006 03:53:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>...<br />It is NULL, which is weird.<br />Why is it weird? Cause it&#39;s not NULL in the constructor.<br />How did this happen?</p><p>(top of main.cpp if you need it)</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><span class="p">#include "vardec.h"</span></td></tr><tr><td class="number">3</td><td><span class="p">#include "timeline.h"</span></td></tr><tr><td class="number">4</td><td><span class="p">#include "link.h"</span></td></tr><tr><td class="number">5</td><td><span class="p">#include "helmaroc.h"</span></td></tr><tr><td class="number">6</td><td><span class="p">#include "systems.h"</span></td></tr><tr><td class="number">7</td><td><span class="p">#include "keypress.h"</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</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">11</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">12</td><td><span class="k1">void</span> Buffer2Screen<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td><span class="k1">void</span> load_sounds<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td><span class="k1">void</span> unload_sounds<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k1">void</span> load_bitmaps<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k1">void</span> unload_bitmaps<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td><span class="k1">void</span> allrooms<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td><span class="k1">void</span> room_change<span class="k2">(</span><span class="k1">int</span> newroom<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>OBJ_LINK <a href="http://www.delorie.com/djgpp/doc/libc/libc_531.html" target="_blank">link</a><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>OBJ_HEARTS heart_system<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>OBJ_HELMAROC helmaroc<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>soundMeter SoundMeter<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>rupeeSystem rupees<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td>clROOM rmtower<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>press_start, <span class="k3">*</span>title_screen, <span class="k3">*</span>sbuffer, <span class="k3">*</span>tower, <span class="k3">*</span>rock, <span class="k3">*</span>door_way<span class="k2">;</span></td></tr><tr><td class="number">28</td><td><a href="http://www.allegro.cc/manual/SAMPLE" target="_blank"><span class="a">SAMPLE</span></a> <span class="k3">*</span>sndLinkHurt, <span class="k3">*</span>sndswordSwipe<span class="k2">;</span></td></tr><tr><td class="number">29</td><td><a href="http://www.allegro.cc/manual/MIDI" target="_blank"><span class="a">MIDI</span></a> <span class="k3">*</span> tower_music<span class="k2">;</span></td></tr><tr><td class="number">30</td><td><span class="k1">bool</span> run <span class="k3">=</span> <span class="n">1</span>, B2S <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td><span class="k1">int</span> stepcounter <span class="k3">=</span> <span class="n">4</span>, room <span class="k3">=</span> ROOM_TITLE, view_x <span class="k3">=</span> <span class="n">0</span>, view_y<span class="k2">;</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</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">34</td><td>    init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>

Edit:<br />Whoops, I just found that my OBJ_LINK doesn&#39;t have a blank constructor.<br />And now that it does, it doesn&#39;t make any difference.<br />It looks like this:
</p><div class="source-code snippet"><div class="inner"><pre>OBJ_LINK::OBJ_LINK<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
vary <span class="k3">=</span> varx <span class="k3">=</span> direction <span class="k3">=</span> mode <span class="k3">=</span> frame <span class="k3">=</span> speed <span class="k3">=</span> key_length_up <span class="k3">=</span> key_length_down <span class="k3">=</span> key_length_right <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_43.html" target="_blank">alarm</a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> attacked <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

As opposed to:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>OBJ_LINK::OBJ_LINK<span class="k2">(</span><span class="k1">int</span> x, <span class="k1">int</span> y<span class="k2">)</span><span class="k2">:</span></td></tr><tr><td class="number">2</td><td>spr_link_up_walk<span class="k2">(</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">"link_dir_up.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">18</span>, <span class="n">28</span>, <span class="n">10</span>, <span class="n">18</span>, <span class="n">0</span><span class="k2">)</span>,</td></tr><tr><td class="number">3</td><td>spr_link_down_walk<span class="k2">(</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">"link_dir_down.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">18</span>, <span class="n">28</span>, <span class="n">11</span>, <span class="n">18</span>, <span class="n">0</span><span class="k2">)</span>,</td></tr><tr><td class="number">4</td><td>spr_link_left_walk<span class="k2">(</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">"link_dir_left.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">22</span>, <span class="n">27</span>, <span class="n">10</span>, <span class="n">19</span>, <span class="n">0</span><span class="k2">)</span>,</td></tr><tr><td class="number">5</td><td>spr_link_right_walk<span class="k2">(</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">"link_dir_right.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">22</span>, <span class="n">27</span>, <span class="n">10</span>, <span class="n">19</span>, <span class="n">0</span><span class="k2">)</span>,</td></tr><tr><td class="number">6</td><td>spr_link_up_stand<span class="k2">(</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">"link_dir_up.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">18</span>, <span class="n">28</span>, <span class="n">1</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span>,</td></tr><tr><td class="number">7</td><td>spr_link_down_stand<span class="k2">(</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">"link_dir_down.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">18</span>, <span class="n">28</span>, <span class="n">1</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span>,</td></tr><tr><td class="number">8</td><td>spr_link_left_stand<span class="k2">(</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">"link_dir_left.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">19</span>, <span class="n">27</span>, <span class="n">1</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span>,</td></tr><tr><td class="number">9</td><td>spr_link_right_stand<span class="k2">(</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">"link_dir_right.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">19</span>, <span class="n">27</span>, <span class="n">1</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span>,</td></tr><tr><td class="number">10</td><td>spr_link_up_sword<span class="k2">(</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">"link_dir_up.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">37</span>, <span class="n">31</span>, <span class="n">6</span>, <span class="n">0</span>, <span class="n">28</span>, <span class="n">13</span>, <span class="n">2</span><span class="k2">)</span>, </td></tr><tr><td class="number">11</td><td>spr_link_down_sword<span class="k2">(</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">"link_dir_down.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">41</span>, <span class="n">40</span>, <span class="n">6</span>, <span class="n">0</span>, <span class="n">28</span>, <span class="n">9</span>, <span class="n">0</span><span class="k2">)</span>, </td></tr><tr><td class="number">12</td><td>spr_link_left_sword<span class="k2">(</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">"link_dir_left.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">33</span>, <span class="n">42</span>, <span class="n">7</span>, <span class="n">0</span>, <span class="n">27</span>, <span class="n">15</span>, <span class="n">3</span><span class="k2">)</span>, </td></tr><tr><td class="number">13</td><td>spr_link_right_sword<span class="k2">(</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">"link_dir_right.bmp"</span>, NULL<span class="k2">)</span>, <span class="n">33</span>, <span class="n">42</span>, <span class="n">7</span>, <span class="n">0</span>, <span class="n">27</span>, <span class="k3">-</span><span class="n">1</span>, <span class="n">2</span><span class="k2">)</span>,</td></tr><tr><td class="number">14</td><td>sprite_index<span class="k2">(</span><span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">15</td><td><span class="k2">{</span></td></tr><tr><td class="number">16</td><td>               </td></tr><tr><td class="number">17</td><td>varx <span class="k3">=</span> x<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>vary <span class="k3">=</span> y<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>direction <span class="k3">=</span> LINK_DIR_DOWN<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>mode <span class="k3">=</span> MODE_STAND<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td>frame <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>speed <span class="k3">=</span> <span class="n">4</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>key_length_up <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>key_length_down <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>key_length_left <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>key_length_right <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_43.html" target="_blank">alarm</a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>attacked <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

Is it still running the sprite constructors?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Miles Lombardi)</author>
		<pubDate>Mon, 23 Jan 2006 03:59:36 +0000</pubDate>
	</item>
</rss>
