<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Problems displaying Allegro&#39;s global variables</title>
		<link>http://www.allegro.cc/forums/view/561415</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 24 Jan 2006 22:24:07 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I purchased a game programming book recently that uses Allegro as it&#39;s library. One of the first exercises after setting up Allegro is creating a program that displays some of Allegro&#39;s global variables, such as the library version, OS name and version, etc. However other than the library version, nothing is displayed correctly and anything beyond the OS name and version crashes the program. I&#39;ve tried two different compilers and get the same results. This is the source code to the small program.
</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">#define ALLEGRO_USE_CONSOLE //Needed for MSVC8 for some reason</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;stdio.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;conio.h&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#include "allegro.h"</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">char</span> <span class="k3">*</span>YesNo<span class="k2">(</span><span class="k1">int</span> num<span class="k2">)</span></td></tr><tr><td class="number">7</td><td><span class="k2">{</span></td></tr><tr><td class="number">8</td><td>     <span class="k1">if</span> <span class="k2">(</span>num <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">9</td><td>        <span class="k1">return</span> <span class="s">"No"</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>     <span class="k1">else</span> </td></tr><tr><td class="number">11</td><td>        <span class="k1">return</span> <span class="s">"Yes"</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><span class="k1">char</span> <span class="k3">*</span>OSName<span class="k2">(</span><span class="k1">int</span> number<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>     <span class="k1">switch</span><span class="k2">(</span>number<span class="k2">)</span></td></tr><tr><td class="number">17</td><td>     <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>                   <span class="k1">case</span> OSTYPE_UNKNOWN:return <span class="s">"Unknown or MS-DOS"</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>                   <span class="k1">case</span> OSTYPE_WIN3: <span class="k1">return</span> <span class="s">"Windows"</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>                   <span class="k1">case</span> OSTYPE_WIN95: <span class="k1">return</span> <span class="s">"Windows 95"</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>                   <span class="k1">case</span> OSTYPE_WIN98: <span class="k1">return</span> <span class="s">"Windows 98"</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>                   <span class="k1">case</span> OSTYPE_WINME: <span class="k1">return</span> <span class="s">"Windows ME"</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>                   <span class="k1">case</span> OSTYPE_WINNT: <span class="k1">return</span> <span class="s">"Windows NT"</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>                   <span class="k1">case</span> OSTYPE_WIN2000: <span class="k1">return</span> <span class="s">"Windows 2000"</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>                   <span class="k1">case</span> OSTYPE_WINXP: <span class="k1">return</span> <span class="s">"Windows XP"</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>                   <span class="k1">case</span> OSTYPE_OS2: <span class="k1">return</span> <span class="s">"OS/2"</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>                   <span class="k1">case</span> OSTYPE_WARP: <span class="k1">return</span> <span class="s">"OS/2 Warp 3"</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>                   <span class="k1">case</span> OSTYPE_DOSEMU: <span class="k1">return</span> <span class="s">"Linux DOSEMU"</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>                   <span class="k1">case</span> OSTYPE_OPENDOS: <span class="k1">return</span> <span class="s">"Caldera OpenDOS"</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>                   <span class="k1">case</span> OSTYPE_LINUX: <span class="k1">return</span> <span class="s">"Linux"</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>                   <span class="k1">case</span> OSTYPE_FREEBSD: <span class="k1">return</span> <span class="s">"FreeBSD"</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>                   <span class="k1">case</span> OSTYPE_QNX: <span class="k1">return</span> <span class="s">"QNX"</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>                   <span class="k1">case</span> OSTYPE_UNIX: <span class="k1">return</span> <span class="s">"Unix variant"</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>                   <span class="k1">case</span> OSTYPE_BEOS: <span class="k1">return</span> <span class="s">"BeOS"</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>                   <span class="k1">case</span> OSTYPE_MACOS: <span class="k1">return</span> <span class="s">"MacOS"</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>                   <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>&#160;</td></tr><tr><td class="number">39</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">40</td><td><span class="k2">{</span></td></tr><tr><td class="number">41</td><td>    <span class="k1">int</span> width, height<span class="k2">;</span></td></tr><tr><td class="number">42</td><td>    <span class="k1">int</span> caps <span class="k3">=</span> <a href="http://www.allegro.cc/manual/cpu_capabilities" target="_blank"><span class="a">cpu_capabilities</span></a><span class="k2">;</span>    </td></tr><tr><td class="number">43</td><td>&#160;</td></tr><tr><td class="number">44</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Allegro version:   %s\n"</span>, <a href="http://www.allegro.cc/manual/allegro_id" target="_blank"><span class="a">allegro_id</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Operating system:  %s\n"</span>, OSName<span class="k2">(</span><a href="http://www.allegro.cc/manual/os_type" target="_blank"><span class="a">os_type</span></a><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">46</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"OS version:        %d.%d\n"</span>, <a href="http://www.allegro.cc/manual/os_version" target="_blank"><span class="a">os_version</span></a>, <a href="http://www.allegro.cc/manual/os_revision" target="_blank"><span class="a">os_revision</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Multitasking:      %s\n"</span>, YesNo<span class="k2">(</span><a href="http://www.allegro.cc/manual/os_multitasking" target="_blank"><span class="a">os_multitasking</span></a><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>    </td></tr><tr><td class="number">49</td><td>    <span class="c">//Anything past here is not displayed and the program crashes, even if I remove</span></td></tr><tr><td class="number">50</td><td>    <span class="c">//certain lines such as the following two or three</span></td></tr><tr><td class="number">51</td><td>    <a href="http://www.allegro.cc/manual/get_desktop_resolution" target="_blank"><span class="a">get_desktop_resolution</span></a><span class="k2">(</span><span class="k3">&amp;</span>width, <span class="k3">&amp;</span>height<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Desktop resolution:%d x %d\n"</span>, width, height<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Color depth:       %d bits\n"</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><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>    </td></tr><tr><td class="number">55</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"CPU vendor:        %s\n"</span>, <a href="http://www.allegro.cc/manual/cpu_vendor" target="_blank"><span class="a">cpu_vendor</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"CPU family:        %d\n"</span>, <a href="http://www.allegro.cc/manual/cpu_family" target="_blank"><span class="a">cpu_family</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_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"CPU model:         %d\n"</span>, <a href="http://www.allegro.cc/manual/cpu_model" target="_blank"><span class="a">cpu_model</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>    </td></tr><tr><td class="number">59</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Processor ID:      %s\n"</span>, YesNo<span class="k2">(</span><span class="k2">(</span>caps <span class="k3">&amp;</span> CPU_ID<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> CPU_ID<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"x87 FPU:           %s\n"</span>, YesNo<span class="k2">(</span><span class="k2">(</span>caps <span class="k3">&amp;</span> CPU_FPU<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> CPU_FPU<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.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"MMX:               %s\n"</span>, YesNo<span class="k2">(</span><span class="k2">(</span>caps <span class="k3">&amp;</span> CPU_MMX<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> CPU_MMX<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.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"MMX+:              %s\n"</span>, YesNo<span class="k2">(</span><span class="k2">(</span>caps <span class="k3">&amp;</span> CPU_MMXPLUS<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> CPU_MMXPLUS<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"SSE:               %s\n"</span>, YesNo<span class="k2">(</span><span class="k2">(</span>caps <span class="k3">&amp;</span> CPU_SSE<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> CPU_SSE<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"SSE2:              %s\n"</span>, YesNo<span class="k2">(</span><span class="k2">(</span>caps <span class="k3">&amp;</span> CPU_SSE2<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> CPU_SSE2<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"3D Now:            %s\n"</span>, YesNo<span class="k2">(</span><span class="k2">(</span>caps <span class="k3">&amp;</span> CPU_3DNOW<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> CPU_3DNOW<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Enhanced 3D Now:   %s\n"</span>, YesNo<span class="k2">(</span><span class="k2">(</span>caps <span class="k3">&amp;</span> CPU_ENH3DNOW<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> CPU_ENH3DNOW<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>        </td></tr><tr><td class="number">68</td><td>  </td></tr><tr><td class="number">69</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Press any key to exit...\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">70</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_383.html" target="_blank">getch</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>&#160;</td></tr><tr><td class="number">72</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">73</td><td><span class="k2">}</span></td></tr><tr><td class="number">74</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><span class="k2">;</span></td></tr></tbody></table></div></div><p>

When the program runs, it displays my OS as Unknown (even though I&#39;m running Win XP SP2), the version as -1.-1, and multithreading as No.</p><p>I&#39;m running a Compaq Presario R3200 AMD Athlon XP Mobile 2800+ 1.6Ghz with 256mb RAM with Win XP SP2.</p><p>Is it a problem with my setup, my laptop hardware, or a bug in allegro?</p><p><b>EDIT</b>: I just realized I&#39;m retarded and forgot the most important thing - allegro_init(); Duh.<br />I&#39;ll leave this post up as a reminder not to forget certain important things <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jeff Something)</author>
		<pubDate>Tue, 24 Jan 2006 08:30:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Run allegro_init() first.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kazzmir)</author>
		<pubDate>Tue, 24 Jan 2006 08:30:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><i>allegro_init</i> initializes those variables.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Tue, 24 Jan 2006 08:36:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yea, I just realized that after I posted it.. fast replies <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p>Maybe you guys could help me out with something else though. In MSVC8 when I compile any allegro program I always get 12 warnings, even with the warning level set at 1:
</p><div class="source-code snippet"><div class="inner"><pre>c:\program files\microsoft visual studio <span class="n">8</span>\vc\include\allegro\internal<span class="k3">/</span>alconfig.h<span class="k2">(</span><span class="n">378</span><span class="k2">)</span> <span class="k2">:</span> warning C4312: <span class="s">'type cast'</span> <span class="k2">:</span> conversion from <span class="s">'unsigned int'</span> to <span class="s">'unsigned char *'</span> of greater size
c:\program files\microsoft visual studio <span class="n">8</span>\vc\include\allegro\internal<span class="k3">/</span>alconfig.h<span class="k2">(</span><span class="n">385</span><span class="k2">)</span> <span class="k2">:</span> warning C4312: <span class="s">'type cast'</span> <span class="k2">:</span> conversion from <span class="s">'unsigned int'</span> to <span class="s">'unsigned char *'</span> of greater size
c:\program files\microsoft visual studio <span class="n">8</span>\vc\include\allegro\<span class="k1">inline</span><span class="k3">/</span>draw.inl<span class="k2">(</span><span class="n">421</span><span class="k2">)</span> <span class="k2">:</span> warning C4312: <span class="s">'type cast'</span> <span class="k2">:</span> conversion from <span class="s">'unsigned int'</span> to <span class="s">'unsigned char *'</span> of greater size
c:\program files\microsoft visual studio <span class="n">8</span>\vc\include\allegro\<span class="k1">inline</span><span class="k3">/</span>draw.inl<span class="k2">(</span><span class="n">435</span><span class="k2">)</span> <span class="k2">:</span> warning C4312: <span class="s">'type cast'</span> <span class="k2">:</span> conversion from <span class="s">'unsigned int'</span> to <span class="s">'unsigned char *'</span> of greater size
c:\program files\microsoft visual studio <span class="n">8</span>\vc\include\allegro\<span class="k1">inline</span><span class="k3">/</span>draw.inl<span class="k2">(</span><span class="n">446</span><span class="k2">)</span> <span class="k2">:</span> warning C4312: <span class="s">'type cast'</span> <span class="k2">:</span> conversion from <span class="s">'unsigned int'</span> to <span class="s">'unsigned short *'</span> of greater size
c:\program files\microsoft visual studio <span class="n">8</span>\vc\include\allegro\<span class="k1">inline</span><span class="k3">/</span>draw.inl<span class="k2">(</span><span class="n">460</span><span class="k2">)</span> <span class="k2">:</span> warning C4312: <span class="s">'type cast'</span> <span class="k2">:</span> conversion from <span class="s">'unsigned int'</span> to <span class="s">'unsigned short *'</span> of greater size
c:\program files\microsoft visual studio <span class="n">8</span>\vc\include\allegro\<span class="k1">inline</span><span class="k3">/</span>draw.inl<span class="k2">(</span><span class="n">471</span><span class="k2">)</span> <span class="k2">:</span> warning C4312: <span class="s">'type cast'</span> <span class="k2">:</span> conversion from <span class="s">'unsigned int'</span> to <span class="s">'unsigned short *'</span> of greater size
c:\program files\microsoft visual studio <span class="n">8</span>\vc\include\allegro\<span class="k1">inline</span><span class="k3">/</span>draw.inl<span class="k2">(</span><span class="n">485</span><span class="k2">)</span> <span class="k2">:</span> warning C4312: <span class="s">'type cast'</span> <span class="k2">:</span> conversion from <span class="s">'unsigned int'</span> to <span class="s">'unsigned short *'</span> of greater size
c:\program files\microsoft visual studio <span class="n">8</span>\vc\include\allegro\<span class="k1">inline</span><span class="k3">/</span>draw.inl<span class="k2">(</span><span class="n">521</span><span class="k2">)</span> <span class="k2">:</span> warning C4312: <span class="s">'type cast'</span> <span class="k2">:</span> conversion from <span class="s">'unsigned int'</span> to <span class="s">'unsigned int *'</span> of greater size
c:\program files\microsoft visual studio <span class="n">8</span>\vc\include\allegro\<span class="k1">inline</span><span class="k3">/</span>draw.inl<span class="k2">(</span><span class="n">535</span><span class="k2">)</span> <span class="k2">:</span> warning C4312: <span class="s">'type cast'</span> <span class="k2">:</span> conversion from <span class="s">'unsigned int'</span> to <span class="s">'unsigned int *'</span> of greater size
.\test.c<span class="k2">(</span><span class="n">69</span><span class="k2">)</span> <span class="k2">:</span> warning C4996: <span class="s">'getch'</span> was declared deprecated
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jeff Something)</author>
		<pubDate>Tue, 24 Jan 2006 08:44:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The last message is probably easy to remove: don&#39;t include conio.h, and don&#39;t use the function getch(). If you really want the program to wait for a keypress, you could use system(&quot;PAUSE&quot;) instead. Both ways are not very portable and will only work on the Windows platform.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Faerber)</author>
		<pubDate>Tue, 24 Jan 2006 13:04:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>When you&#39;re cleaning that up, get rid of conio.h. You neither need nor want it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Tue, 24 Jan 2006 15:15:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>To disable the warnings:</p><p><span class="source-code"><span class="p">#pragma warning( disable : 4312 );</span></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Tue, 24 Jan 2006 22:24:07 +0000</pubDate>
	</item>
</rss>
