<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Very slow while drawing to screen</title>
		<link>http://www.allegro.cc/forums/view/591130</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 23 Apr 2007 16:42:16 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m having a weird problem I know I shouldn&#39;t be running into with my program ... but I have basically a game engine that displays a character and a screen full of 32x32 tiles of &#39;grass&#39;.(These are place holder graphics for the real game ... no point in getting a bunch done when the engine doesn&#39;t even work) I can draw the character and move him around fine, but when I start drawing the tiles(even just one row slows it down considerably) it gets HORRIBLE ... I don&#39;t understand what could be going wrong here and would like some help.</p><p>Main program cpp file.
</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 &lt;string&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include "MapEngine.h"</span></td></tr><tr><td class="number">4</td><td><span class="c">//*************************************************************************</span></td></tr><tr><td class="number">5</td><td><span class="c">//Initialization</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer<span class="k2">;</span></td></tr><tr><td class="number">8</td><td><span class="k1">bool</span> updateMap<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>Test<span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k1">int</span> y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td><span class="k1">int</span> xBoundry <span class="k3">=</span> <span class="n">640</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td><span class="k1">int</span> yBoundry <span class="k3">=</span> <span class="n">480</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td><span class="c">//*************************************************************************</span></td></tr><tr><td class="number">15</td><td><span class="c">//Timer</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td><span class="k1">volatile</span> <span class="k1">long</span> speed_counter<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td><span class="k1">void</span> increment_speed_counter<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">19</td><td><span class="k2">{</span></td></tr><tr><td class="number">20</td><td>    speed_counter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td><span class="k2">}</span></td></tr><tr><td class="number">22</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>increment_speed_counter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td><span class="c">//*************************************************************************</span></td></tr><tr><td class="number">25</td><td><span class="c">//Engine</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td><span class="k1">void</span> engine<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">28</td><td><span class="k2">{</span></td></tr><tr><td class="number">29</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">30</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">31</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">32</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">33</td><td>    <a href="http://www.allegro.cc/manual/set_mouse_speed" target="_blank"><span class="a">set_mouse_speed</span></a><span class="k2">(</span><span class="n">1</span>,<span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>    <a href="http://www.allegro.cc/manual/set_mouse_range" target="_blank"><span class="a">set_mouse_range</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>, xBoundry, yBoundry<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</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,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>    <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>speed_counter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>    <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>increment_speed_counter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</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>increment_speed_counter, BPS_TO_TIMER<span class="k2">(</span><span class="n">60</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</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">40</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_WINDOWED,<span class="n">640</span>,<span class="n">480</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">41</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">42</td><td>        <a href="http://www.allegro.cc/manual/allegro_exit" target="_blank"><span class="a">allegro_exit</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">45</td><td>    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="n">640</span>,<span class="n">480</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>    <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>    Test <span class="k3">=</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">"Images\\Test.bmp"</span>, <a href="http://www.allegro.cc/manual/desktop_palette" target="_blank"><span class="a">desktop_palette</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>    loadMap<span class="k2">(</span><span class="s">"Test.map"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>    loadTiles<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td><span class="k2">}</span></td></tr><tr><td class="number">51</td><td><span class="c">//*************************************************************************</span></td></tr><tr><td class="number">52</td><td><span class="c">//Program for calling necessary functions</span></td></tr><tr><td class="number">53</td><td>&#160;</td></tr><tr><td class="number">54</td><td><span class="k1">void</span> program<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">55</td><td><span class="k2">{</span></td></tr><tr><td class="number">56</td><td>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> x <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">57</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">58</td><td>        x--<span class="k2">;</span></td></tr><tr><td class="number">59</td><td>        updateMap <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">61</td><td>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> x <span class="k3">&lt;</span> xBoundry <span class="k3">-</span> <span class="n">16</span><span class="k2">)</span></td></tr><tr><td class="number">62</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">63</td><td>        x<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>        updateMap <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">66</td><td>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_DOWN<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">&lt;</span> yBoundry <span class="k3">-</span> <span class="n">16</span><span class="k2">)</span></td></tr><tr><td class="number">67</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">68</td><td>        y<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">69</td><td>        updateMap <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">70</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">71</td><td>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">72</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">73</td><td>        y--<span class="k2">;</span></td></tr><tr><td class="number">74</td><td>        updateMap <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">76</td><td><span class="k2">}</span></td></tr><tr><td class="number">77</td><td><span class="c">//*************************************************************************</span></td></tr><tr><td class="number">78</td><td><span class="c">//Display</span></td></tr><tr><td class="number">79</td><td>&#160;</td></tr><tr><td class="number">80</td><td><span class="k1">void</span> display<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">81</td><td><span class="k2">{</span></td></tr><tr><td class="number">82</td><td>    <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, drawMap<span class="k2">(</span><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="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">83</td><td>    <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, Test, x, y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">84</td><td>    <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,buffer,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">85</td><td>    <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">86</td><td><span class="k2">}</span></td></tr><tr><td class="number">87</td><td>&#160;</td></tr><tr><td class="number">88</td><td><span class="c">//*************************************************************************</span></td></tr><tr><td class="number">89</td><td><span class="c">//Main Program</span></td></tr><tr><td class="number">90</td><td>&#160;</td></tr><tr><td class="number">91</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">92</td><td><span class="k2">{</span></td></tr><tr><td class="number">93</td><td>    engine<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">94</td><td>    </td></tr><tr><td class="number">95</td><td>    <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">96</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">97</td><td>        <span class="k1">while</span><span class="k2">(</span>speed_counter&gt;0<span class="k2">)</span></td></tr><tr><td class="number">98</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">99</td><td>            program<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>            speed_counter--<span class="k2">;</span></td></tr><tr><td class="number">101</td><td>        <span class="k2">}</span> </td></tr><tr><td class="number">102</td><td>        <span class="k1">if</span><span class="k2">(</span>updateMap<span class="k2">)</span></td></tr><tr><td class="number">103</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">104</td><td>            display<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">105</td><td>            updateMap <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">106</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">107</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">108</td><td>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">109</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">110</td><td>        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>Test<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">111</td><td>        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">112</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">113</td><td>    </td></tr><tr><td class="number">114</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">115</td><td><span class="k2">}</span></td></tr><tr><td class="number">116</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></td></tr></tbody></table></div></div><p>

Header file for MapEngine.</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#ifndef MapEngine_h_included</span>
<span class="p">#define MapEngine_h_included</span>
<span class="k1">int</span> loadMap<span class="k2">(</span>std::string s<span class="k2">)</span><span class="k2">;</span>
<span class="k1">int</span> loadTiles<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> drawMap<span class="k2">(</span><span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> a, <span class="k1">int</span> b<span class="k2">)</span><span class="k2">;</span>


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

Cpp file for MapEngine</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 &lt;fstream&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">4</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer1<span class="k2">;</span></td></tr><tr><td class="number">7</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></td></tr><tr><td class="number">8</td><td><span class="k1">int</span> length<span class="k2">;</span></td></tr><tr><td class="number">9</td><td><span class="k1">int</span> height<span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k1">int</span> tileX <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k1">int</span> tileY <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td><span class="k1">int</span> map<span class="k2">[</span><span class="n">1000</span><span class="k2">]</span><span class="k2">[</span><span class="n">1000</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>string tiles<span class="k2">[</span><span class="n">1000</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td><span class="k1">int</span> xBoundry1 <span class="k3">=</span> <span class="n">640</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k1">int</span> yBoundry1 <span class="k3">=</span> <span class="n">480</span><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">int</span> loadMap<span class="k2">(</span>string s<span class="k2">)</span></td></tr><tr><td class="number">18</td><td><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>    ifstream fileIn<span class="k2">(</span><span class="k2">(</span><span class="s">"Map\\"</span> <span class="k3">+</span> s<span class="k2">)</span>.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    fileIn <span class="k3">&gt;</span><span class="k3">&gt;</span> length<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    fileIn <span class="k3">&gt;</span><span class="k3">&gt;</span> height<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    map<span class="k2">[</span>length<span class="k2">]</span><span class="k2">[</span>height<span class="k2">]</span><span class="k2">;</span> <span class="c">// x, y</span></td></tr><tr><td class="number">23</td><td>    <span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    <span class="k1">int</span> y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    <span class="k1">while</span> <span class="k2">(</span>x <span class="k3">&lt;</span> length <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">26</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">27</td><td>        <span class="k1">while</span> <span class="k2">(</span>y <span class="k3">&lt;</span> height <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">28</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">29</td><td>            fileIn <span class="k3">&gt;</span><span class="k3">&gt;</span> map<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>            y<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">32</td><td>        x<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>        y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">35</td><td>    fileIn.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>    buffer1 <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">640</span>,<span class="n">480</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td><span class="k2">}</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td><span class="k1">int</span> loadTiles<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="c">//Sprite number</span></td></tr><tr><td class="number">41</td><td><span class="k2">{</span></td></tr><tr><td class="number">42</td><td>    ifstream fileIn<span class="k2">(</span><span class="s">"Tiles\\tiles.shl"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>    <span class="k1">int</span> y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>    fileIn <span class="k3">&gt;</span><span class="k3">&gt;</span> y<span class="k2">;</span></td></tr><tr><td class="number">45</td><td>    <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>    tiles<span class="k2">[</span>y<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>    <span class="k1">while</span> <span class="k2">(</span>i <span class="k3">&lt;</span> y<span class="k2">)</span></td></tr><tr><td class="number">48</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">49</td><td>        fileIn <span class="k3">&gt;</span><span class="k3">&gt;</span> tiles<span class="k3">&lt;</span>i&gt;<span class="k2">;</span></td></tr><tr><td class="number">50</td><td>        tiles<span class="k3">&lt;</span>i&gt; <span class="k3">=</span> <span class="s">"Tiles\\"</span> <span class="k3">+</span> tiles<span class="k3">&lt;</span>i&gt;<span class="k2">;</span></td></tr><tr><td class="number">51</td><td>        i<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">53</td><td>    fileIn.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">55</td><td><span class="k2">}</span></td></tr><tr><td class="number">56</td><td>&#160;</td></tr><tr><td class="number">57</td><td>string getTile<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span></td></tr><tr><td class="number">58</td><td><span class="k2">{</span></td></tr><tr><td class="number">59</td><td>    string s <span class="k3">=</span> tiles<span class="k2">[</span>x<span class="k2">]</span> <span class="k3">+</span> <span class="s">".bmp"</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>    <span class="k1">return</span> s<span class="k2">;</span></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><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> drawMap<span class="k2">(</span><span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> a, <span class="k1">int</span> b<span class="k2">)</span> <span class="c">//x is leftmost tile, y is upper most tile</span></td></tr><tr><td class="number">64</td><td>                        <span class="c">//(a,b) is start pixil for [x][y]</span></td></tr><tr><td class="number">65</td><td><span class="k2">{</span></td></tr><tr><td class="number">66</td><td>    <span class="k1">int</span> origA <span class="k3">=</span> a, origB <span class="k3">=</span> b<span class="k2">;</span></td></tr><tr><td class="number">67</td><td>    <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>buffer1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>    <span class="k1">while</span><span class="k2">(</span>a <span class="k3">&lt;</span><span class="k3">=</span> xBoundry1 <span class="k3">+</span> <span class="n">32</span><span class="k2">)</span></td></tr><tr><td class="number">69</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">70</td><td>        <span class="k1">while</span> <span class="k2">(</span>b <span class="k3">&lt;</span><span class="k3">=</span> yBoundry1 <span class="k3">+</span> <span class="n">32</span><span class="k2">)</span></td></tr><tr><td class="number">71</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">72</td><td>            Tile <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span>getTile<span class="k2">(</span>map<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span><span class="k2">)</span>.c_str<span class="k2">(</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/desktop_palette" target="_blank"><span class="a">desktop_palette</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">73</td><td>            <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer1, Tile, a, b<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">74</td><td>            b <span class="k3">+</span><span class="k3">=</span> <span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">76</td><td>        a <span class="k3">+</span><span class="k3">=</span> <span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">77</td><td>        b <span class="k3">=</span> origB<span class="k2">;</span></td></tr><tr><td class="number">78</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">79</td><td>    <span class="k1">return</span> buffer1<span class="k2">;</span></td></tr><tr><td class="number">80</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

and for the map file right now I&#39;m using 50x50 of grass, which it should only be displaying around half of that I think.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Quintinon)</author>
		<pubDate>Mon, 23 Apr 2007 06:13:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Tile = load_bitmap(getTile(map[x][y]).c_str(), desktop_palette);<br />            draw_sprite(buffer1, Tile, a, b);
</p></div></div><p>

What you should be doing here is drawing tiles from a pre-loaded array (or perhaps a vector if you&#39;re using C++) or tilemap. Loading from disk is much slower than loading from memory. So you need a function to load all the tiles into memory at the start of your game or level, storing them in a global array or vector. Then draw them directly.</p><p>[edit]</p><p>Don&#39;t forget to destroy the bitmaps where you&#39;re done with them. The code you have now will cause your computer to run out of memory in a hurry.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Mon, 23 Apr 2007 06:19:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>because you have Tile = load_bitmap(getTile(map[x][y]).c_str(), desktop_palette); in MapEngine.drawMap</p><p>Load the image once in MapEngine.loadMap</p><p>[edit]<br />Damn - beaten.<br />[/edit]
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HardTranceFan)</author>
		<pubDate>Mon, 23 Apr 2007 06:20:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Note also that desktop_palette is considered read-only.  Don&#39;t pass it to load_bitmap.  Supply your own PALETTE structure to receive the palette.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Mon, 23 Apr 2007 08:42:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>And don&#39;t copy your buffer to the screen with draw_sprite() - use blit().
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Mon, 23 Apr 2007 16:42:16 +0000</pubDate>
	</item>
</rss>
