<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>What&#39;s going on here ?</title>
		<link>http://www.allegro.cc/forums/view/590292</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 28 Feb 2007 04:48:29 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>allegro_wrapper.h :
</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">volatile</span> <span class="k1">int</span> ticks <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="c">// timer</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="c">/* current sprite frame number */</span></td></tr><tr><td class="number">4</td><td><span class="k1">int</span> frame, frame_number <span class="k3">=</span> <span class="n">0</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="c">/* pointer to a sprite buffer, two screen buffers, tile, map, chat window */</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite_buffer<span class="k2">;</span></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>page<span class="k2">[</span><span class="n">2</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>tile<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>, <span class="k3">*</span>map<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>trees<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>chat_window<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="c">/* a boolean - if true, skip to next part */</span></td></tr><tr><td class="number">15</td><td><span class="k1">int</span> next<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td><span class="k1">void</span> ticker<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="k1">int</span> init_bitmaps<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td><span class="k1">void</span> destroy_bitmaps<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>

allegro_wrapper.cpp
</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">void</span> ticker<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td> ticks <span class="k3">=</span> ticks <span class="k3">+</span> <span class="n">100</span> <span class="k2">;</span></td></tr><tr><td class="number">4</td><td><span class="k2">}</span></td></tr><tr><td class="number">5</td><td><a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>ticker<span class="k2">)</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="c">// initializes the various bitmaps we will be using.</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td><span class="k1">int</span> init_bitmaps <span class="k2">(</span><span class="k1">void</span><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="k2">{</span></td></tr><tr><td class="number">12</td><td>   <span class="k1">char</span> datafile_name<span class="k2">[</span><span class="n">256</span><span class="k2">]</span><span class="k2">;</span>   </td></tr><tr><td class="number">13</td><td>   <a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a> pal<span class="k2">;</span> </td></tr><tr><td class="number">14</td><td>    </td></tr><tr><td class="number">15</td><td>   <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">16</td><td>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>     </td></tr><tr><td class="number">17</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">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_NONE, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</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">20</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">21</td><td>   <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>ticker<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>   <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>ticks<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>   <a href="http://www.allegro.cc/manual/install_int_ex" target="_blank"><span class="a">install_int_ex</span></a><span class="k2">(</span>ticker, BPS_TO_TIMER<span class="k2">(</span><span class="n">30</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</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">26</td><td>   <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT, <span class="n">1024</span>, <span class="n">768</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <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">27</td><td>      <span class="k1">if</span> <span class="k2">(</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_SAFE, <span class="n">320</span>, <span class="n">200</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <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">28</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_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</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 set any graphic mode\n%s\n"</span>,</td></tr><tr><td class="number">30</td><td>       <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">31</td><td>   <span class="k1">return</span> <span class="n">2</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>   <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="c">/* create two video memory bitmaps for page flipping */</span></td></tr><tr><td class="number">36</td><td>   page<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_video_bitmap" target="_blank"><span class="a">create_video_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>   page<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_video_bitmap" target="_blank"><span class="a">create_video_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>     </td></tr><tr><td class="number">39</td><td>   <span class="c">// create a bitmap for sprite buffering</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td>   sprite_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="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span><span class="n">82</span> <span class="k3">*</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_738.html" target="_blank">sqrt</a><span class="k2">(</span><span class="n">2</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">2</span><span class="k2">)</span>,</td></tr><tr><td class="number">42</td><td>      <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span><span class="n">82</span> <span class="k3">*</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_738.html" target="_blank">sqrt</a><span class="k2">(</span><span class="n">2</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">2</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>&#160;</td></tr><tr><td class="number">44</td><td><span class="c">// create a bitmap for the map and the tile</span></td></tr><tr><td class="number">45</td><td>&#160;</td></tr><tr><td class="number">46</td><td>   map <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">1280</span>,<span class="n">640</span><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="c">// create a bitmap for the chat window;</span></td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>   chat_window <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">680</span>, <span class="n">272</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>&#160;</td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td>   <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">!</span>page<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k3">|</span><span class="k3">|</span><span class="k2">(</span><span class="k3">!</span>page<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k3">|</span><span class="k3">|</span><span class="k2">(</span><span class="k3">!</span>sprite_buffer<span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span><span class="k2">(</span><span class="k3">!</span>map<span class="k2">)</span><span class="k3">|</span><span class="k3">|</span><span class="k2">(</span><span class="k3">!</span>chat_window<span class="k2">)</span><span class="k2">)</span><span class="k1">return</span> <span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>&#160;</td></tr><tr><td class="number">55</td><td><span class="c">// clear what needs clearing</span></td></tr><tr><td class="number">56</td><td>&#160;</td></tr><tr><td class="number">57</td><td>   <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>chat_window<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>&#160;</td></tr><tr><td class="number">59</td><td>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>&#160;</td></tr><tr><td class="number">61</td><td><span class="k2">}</span>     </td></tr><tr><td class="number">62</td><td>&#160;</td></tr><tr><td class="number">63</td><td><span class="c">// destroys the various bitmaps we have been using.</span></td></tr><tr><td class="number">64</td><td>&#160;</td></tr><tr><td class="number">65</td><td><span class="k1">void</span> destroy_bitmaps <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">66</td><td>&#160;</td></tr><tr><td class="number">67</td><td><span class="k2">{</span></td></tr><tr><td class="number">68</td><td>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>sprite_buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">69</td><td>&#160;</td></tr><tr><td class="number">70</td><td>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>page<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>page<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>&#160;</td></tr><tr><td class="number">73</td><td>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>tile<span class="k2">[</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/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>tile<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">74</td><td>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>map<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>   </td></tr><tr><td class="number">76</td><td>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>chat_window<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">77</td><td>   </td></tr><tr><td class="number">78</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

when #included from main file, compiler dies a flaming death of </p><p>...\game\source\allegro_wrapper.o(.bss+0x8) In function `Z6tickerv&#39;: <br />...\game\source\allegro_wrapper.cpp multiple definition of `frame_number&#39; </p><p>and so again and again for every single variable defined. what the hell, i&#39;ve been trying to figure it out for the past three hours. any ideas ?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (zenofeller_)</author>
		<pubDate>Tue, 27 Feb 2007 10:14:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You want extern before your variables in the header, then declare them as normal in the top of ONE file (usually the one you use it in most). If that var is only used in one file, it should be local to that file, and not global with the header file.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Tue, 27 Feb 2007 10:21:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Before each variable declared in the header files, add the keyword &quot;extern&quot;.  Then duplicate their declaration in one and only one non-header file, but without the &quot;extern&quot;.  </p><p>Also, remove the value assignment (&quot;= 0&quot;) from the ones in the header file, leave that only on the ones in non-header files.  </p><p>Otherwise, every file that #includes a header creates a duplicate of each variable, and the multiple copies conflict with each other.  </p><p>edit: beaten!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (orz)</author>
		<pubDate>Tue, 27 Feb 2007 10:21:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>o god almighty.</p><p>(why was i thinking that&#39;d be handled automatically by the compiler ?)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (zenofeller_)</author>
		<pubDate>Tue, 27 Feb 2007 10:30:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m not sure why it was telling you it was in the ticker function, but I suppose that may be something cookey with the C++ mangling or something.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Tue, 27 Feb 2007 19:55:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>wrap your header in these statememts to keep it from defining multiple variables.</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#ifndef _HEADER_FILE_NAME_H_</span>
<span class="p">#define _HEADER_FILE_NAME_H_</span>

<span class="c">//put your header here</span>

<span class="p">#endif</span>
</pre></div></div><p>

you shouldn&#39;t initialize the variables in the header either.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Taiko Keiji)</author>
		<pubDate>Tue, 27 Feb 2007 23:14:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I&#39;m not sure why it was telling you it was in the ticker function, but I suppose that may be something cookey with the C++ mangling or something.
</p></div></div><p>

i don&#39;t think anything&#39;s the matter with the mangling. ticker just happens to be the first function right after the #include, it has to point to something (the compiler, i mean).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (zenofeller_)</author>
		<pubDate>Wed, 28 Feb 2007 01:52:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Why would it report it in a function that it&#39;s not in? I&#39;d think it would just say global, or nothing at all.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Wed, 28 Feb 2007 02:52:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>i&#39;m pretty sure the error could be replicated without using the allegro libraries tho. if i hit a wall and need a break writing for the game i&#39;ll try it out.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (zenofeller_)</author>
		<pubDate>Wed, 28 Feb 2007 04:48:29 +0000</pubDate>
	</item>
</rss>
