<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Getting Started</title>
		<link>http://www.allegro.cc/forums/view/617096</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 21 Oct 2017 20:11:47 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m working my way through the Allegro tutorials and every time I try to call al_draw_bitmap() the program crashes. I&#39;m not sure why. After some further testing I&#39;ve found that drawing primitives also crashes the program.</p><p>I&#39;ve created a bitmap and set it as the target bitmap, I&#39;m not sure what else needs to be done before I can draw to it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Black)</author>
		<pubDate>Fri, 20 Oct 2017 12:57:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>post your code...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Fri, 20 Oct 2017 13:57:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I betcha a weeks supply of Pepsi(TM)(Nectar of the Godz)that you forgot to do al_init_image_addon(void).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Fri, 20 Oct 2017 17:29:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m really starting to wonder if Allegro 5+/&quot;6&quot; should have a different API mentality. Ever since I learned about &quot;the common case should be default/easy&quot; for data-oriented design, it really makes sense. In my opinion, everything in Allegro should be defaulted unless you <b>opt out</b>.</p><p>allegro_init() should give you every common case &quot;for free&quot;. (Or at least have one new function that does that.) Graphics (at default desktop depth), primitives, jpeg/png/whatever input, sound, a single event queue with the mouse/keyboard/joysticks attached, and even a FPS timer occurring once a second with a variable you can send to print (or even have one that hijacks onto al_flip_display and overlays it automatically in the corner).</p><p>And, when you want something <u>different</u> than the default, you override those defaults. Default depth is desktop depth, until you manually ask for it. etc.</p><p>This would likely be easier in C++ with default arguments, but perhaps with some kind of C method/functioning chaining it could be done.</p><p>The people who know what they&#39;re doing, are used to writing lines of code for &quot;on the metal&quot; features. The people who don&#39;t, should already be in an environment that lets them play around <b>instead of a crash.</b> Maybe the color depth &quot;is wrong&quot;, and they can google it/ask about it. <i>But there will still be pixels on the screen</i> which will help them diagnose the problem.</p><p>Also, one great thing about D (not suggesting we port it for everyone) is the built-in asserts that allow you to pack a message in. In debug mode, asserts catch a file missing, or a addon not initialized, and halts the program. But you also get a custom message with the assert. &quot;You failed to initialize the addon!&quot; Instead of just a line number in a piece of code. Maybe C supports that (with macros?), but IIRC it doesn&#39;t.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Fri, 20 Oct 2017 21:26:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Eagle 5 does all this for you. It&#39;s super simple, and super easy. Here&#39;s the code it takes to display Hello World :</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include "Eagle/backends/Allegro5Backend.hpp"</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="k1">int</span> hello_main<span class="k2">(</span><span class="k1">int</span> argc , <span class="k1">char</span><span class="k3">*</span><span class="k3">*</span> argv<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  4</span>   
<span class="number">  5</span>   <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>argc<span class="k2">;</span>
<span class="number">  6</span>   <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>argv<span class="k2">;</span>
<span class="number">  7</span>   
<span class="number">  8</span>   Allegro5System<span class="k3">*</span> a5sys <span class="k3">=</span> GetAllegro5System<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>   
<span class="number"> 10</span>   a5sys-&gt;Initialize<span class="k2">(</span>EAGLE_FULL_SETUP<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>   
<span class="number"> 12</span>   EagleGraphicsContext<span class="k3">*</span> win <span class="k3">=</span> a5sys-&gt;GetWindowManager<span class="k2">(</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>CreateWindow<span class="k2">(</span><span class="s">"hello_main::win"</span> , <span class="n">800</span> , <span class="n">600</span> , EAGLE_OPENGL <span class="k3">|</span> EAGLE_WINDOWED<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>   
<span class="number"> 14</span>   win-&gt;Clear<span class="k2">(</span>EagleColor<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>
<span class="number"> 15</span>   
<span class="number"> 16</span>   win-&gt;DrawTextString<span class="k2">(</span>win-&gt;DefaultFont<span class="k2">(</span><span class="k2">)</span> , <span class="s">"Hello World"</span> , win-&gt;Width<span class="k2">(</span><span class="k2">)</span><span class="k3">/</span><span class="n">2</span> , win-&gt;Height<span class="k2">(</span><span class="k2">)</span><span class="k3">/</span><span class="n">2</span> , EagleColor<span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span> , HALIGN_CENTER , VALIGN_CENTER<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>   
<span class="number"> 18</span>   win-&gt;FlipDisplay<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>   a5sys-&gt;Rest<span class="k2">(</span><span class="n">3</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>   
<span class="number"> 22</span>   Eagle::EagleLibrary::ShutdownEagle<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>   
<span class="number"> 24</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 25</span><span class="k2">}</span>
</div></div><p>

Of course, this is overkill for hello world, but the thing is, it sets up and installs and registers every single input and addon there is for you without having to do it over and over again.</p><p>There is a default system timer, queue, input handler, and window manager that does pretty much everything for you.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 21 Oct 2017 00:20:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think an official add-on with such an &quot;easy&quot; API would be a nice addition to Allegro5. Even with just C, there is quite a bit we could do.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (beoran)</author>
		<pubDate>Sat, 21 Oct 2017 02:36:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Edgar that Eagle 5 thing looks interesting. Where can I read up on it?</p><p>Here&#39;s my code, which I&#39;m modifying from a basic A5 sample I found somewhere. I did in fact do al_init_image_addon() on line 22. Or rather, the sample did.</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;allegro5/allegro_native_dialog.h&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  7</span><span class="k2">{</span>
<span class="number">  8</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 11</span>    <span class="k2">{</span>
<span class="number"> 12</span>        <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>NULL,NULL,NULL,<span class="s">"Could not initialize Allegro 5"</span>, NULL, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>    <span class="k2">}</span>
<span class="number"> 14</span>
<span class="number"> 15</span>    display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">800</span>,<span class="n">600</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>
<span class="number"> 17</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span>
<span class="number"> 18</span>    <span class="k2">{</span>
<span class="number"> 19</span>        <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>display, <span class="s">"Sample Title"</span>, <span class="s">"Display Settings"</span>, <span class="s">"Display Window Was Not Created"</span>, NULL, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>    <span class="k2">}</span>
<span class="number"> 21</span>
<span class="number"> 22</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 23</span>    <span class="k2">{</span>
<span class="number"> 24</span>        <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>NULL,NULL,NULL,<span class="s">"Could not initialize Image Addon"</span>, NULL, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>    <span class="k2">}</span>
<span class="number"> 26</span>
<span class="number"> 27</span>    <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>
<span class="number"> 29</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> Square <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 30</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> Screen <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 31</span>
<span class="number"> 32</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> Black <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</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="number"> 33</span>
<span class="number"> 34</span>    Screen <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">800</span>,<span class="n">600</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span>    Square <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"Square.bmp"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>
<span class="number"> 37</span>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>Screen<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>
<span class="number"> 39</span>    <span class="c">//al_clear_to_color(Black);</span>
<span class="number"> 40</span>
<span class="number"> 41</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a><span class="k3">*</span> Queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_SOURCE"><span class="a">ALLEGRO_EVENT_SOURCE</span></a><span class="k3">*</span> KeySource <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 43</span>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>Queue, KeySource<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span>
<span class="number"> 45</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>Queue, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>
<span class="number"> 47</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>NULL,NULL,NULL,<span class="s">"Program Complete"</span>, NULL, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 48</span>
<span class="number"> 49</span>    <span class="c">//al_draw_rectangle(20, 20, 100, 100, al_map_rgb(255,255,255), 10);</span>
<span class="number"> 50</span>
<span class="number"> 51</span>    <span class="c">//al_draw_bitmap(Square, 20, 20, ALLEGRO_FLIP_HORIZONTAL);</span>
<span class="number"> 52</span>
<span class="number"> 53</span>
<span class="number"> 54</span>
<span class="number"> 55</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</span>
<span class="number"> 57</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 58</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Black)</author>
		<pubDate>Sat, 21 Oct 2017 03:19:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You don&#39;t check if Square is null.</p><p>It you&#39;re on Linux, filenames are case sensitive too so make sure the name AND the extension match both in letters and case.</p><p> And if you&#39;re on windows, sometimes the &quot;Base&quot; directory, isn&#39;t the one with your files. It could be my_project/bin/ or some other directory. It&#39;s called the &quot;Working directory&quot; in Windows.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Sat, 21 Oct 2017 03:43:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The problem persists even if I comment out all the references to the Square variable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Black)</author>
		<pubDate>Sat, 21 Oct 2017 03:51:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are you sure running with the same version of the library you linked with? I had problems where they didn&#39;t match before and it exploded. Try compiling monolithic so there&#39;s no DLL/SO.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Sat, 21 Oct 2017 04:30:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>al_init_primitives_addon is required for al_draw_rectangle
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Sat, 21 Oct 2017 04:33:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Success! I have it drawing a thing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Black)</author>
		<pubDate>Sat, 21 Oct 2017 05:12:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/617096/1033124#target">Elias</a> said:</div><div class="quote"><p>
al_init_primitives_addon is required for al_draw_rectangle
</p></div></div><p>
I thought we covered that already. <img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Sat, 21 Oct 2017 06:06:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Also, free software debugger 101:</p><p>1. Find gdb on your system. Or if it didn&#39;t come with your toolchain you can find a download for it.<br />2. <span class="source-code">gdb .\game.exe</span><br />3. <span class="source-code">run</span><br />4. After a crash occurs, <span class="source-code">bt</span> to view the call stack, ending at the point in your code where it crashed.</p><p>You should get a function name in C, and a line number too if you have debugging symbols built in. C++ might be a mess unless you have debugging symbols due to name mangling though.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Sat, 21 Oct 2017 06:42:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>We did cover that Chris. But I tried adding it without the if statement and it worked.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Black)</author>
		<pubDate>Sat, 21 Oct 2017 07:55:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can find Eagle here : <a href="http://members.allegro.cc/EdgarReynaldo/Eagle.html">http://members.allegro.cc/EdgarReynaldo/Eagle.html</a></p><p>Some of the GUI functionality is still undone, but you can do many things with Eagle. Graphics, input, and event handling are all much simplified.</p><p>Right now it takes CodeBlocks to build, with MinGW on Windows, gcc on Linux, and I haven&#39;t had the opportunity to try and build Eagle on OSX. I wanted to release binaries but I&#39;m still working out a few bugs in the multi threaded aspect of Eagle, trying to make the essentials thread safe.</p><p>It works fine for single window (thread) apps though.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 21 Oct 2017 20:11:47 +0000</pubDate>
	</item>
</rss>
