<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Triple Buffering in Full Screen</title>
		<link>http://www.allegro.cc/forums/view/564396</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 06 Feb 2006 17:37:47 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#039;ve played other peoples examples using triple buffering in fullscreen mode, but I c an&#039;t seem to play mine in fullscreen mode. The exe will play, but once it get&#039;s to the function that uses triple buffering, it shuts down. </p><p>Here&#039;s the function (For those of you perfectionists out there: My code is a little messy and CAN be cleaned up, but I don&#039;t really do all of that until the function does what I want it to do. So please, don&#039;t waste my time telling me how I can clean it up or scolding me because it isn&#039;t clean. Thanks..)
</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="c">///FOREST STAGE FUNCTION///////////</span>
<span class="number">   2</span>
<span class="number">   3</span><span class="k1">void</span> forest_stage<span class="k2">(</span><span class="k2">)</span>
<span class="number">   4</span><span class="k2">{</span>
<span class="number">   5</span>  bgm bg_music<span class="k2">;</span>
<span class="number">   6</span>  Blue_ninja ninja<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">   7</span>  Layer layer<span class="k2">[</span><span class="n">9</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">   8</span>  bg_music.init<span class="k2">(</span>BMG_BAMBOO, <span class="n">0</span>, <span class="k3">-</span><span class="n">1</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   9</span>  exit_buffer <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><span class="n">256</span>, <span class="n">192</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  10</span>  exit_font <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_font" target="_blank"><span class="a">load_font</span></a><span class="k2">(</span><span class="s">"exit_font.bmp"</span>, NULL, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  11</span>  exit_font_small <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_font" target="_blank"><span class="a">load_font</span></a><span class="k2">(</span><span class="s">"exit_font_small.bmp"</span>, NULL, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  12</span>  <span class="k1">bool</span> run <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  13</span>    <span class="k1">bool</span> draw<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span>
<span class="number">  14</span>  <span class="k1">char</span> buf<span class="k2">[</span><span class="n">4096</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  15</span>  <span class="c">// between logic updates</span>
<span class="number">  16</span>    <span class="k1">int</span> fpsCount <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  17</span>  speed_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  18</span>    <span class="c">//BITMAP *test_pic;</span>
<span class="number">  19</span>    <span class="k1">int</span> stage_frame_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  20</span>  temp <span class="k3">=</span> load_png<span class="k2">(</span><span class="s">"keiku01f.png"</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  21</span>  bg <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">"forest-6.gif"</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  22</span>  grass<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> load_png<span class="k2">(</span><span class="s">"grass_1_2.png"</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>  grass<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> load_png<span class="k2">(</span><span class="s">"grass_2_2.png"</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  24</span>  grass<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> load_png<span class="k2">(</span><span class="s">"grass_3_2.png"</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>  grass<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> <span class="k3">=</span> load_png<span class="k2">(</span><span class="s">"grass_upper_2.png"</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>  foreground <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">"foreground-2.gif"</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span>  exit_back <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">"exit_back.gif"</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>  <span class="c">//test_pic = load_png("finalsamurair.png", NULL);</span>
<span class="number">  29</span>  front_trees <span class="k3">=</span> load_png<span class="k2">(</span><span class="s">"front_trees_2.png"</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span>  
<span class="number">  31</span>  layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.init<span class="k2">(</span>bg, <span class="n">0</span>, <span class="n">0</span>.<span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  32</span>  layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.init<span class="k2">(</span>foreground, <span class="n">0</span>, <span class="n">0</span>.<span class="n">4</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</span>  layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.init<span class="k2">(</span>grass<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>, <span class="n">335</span>, <span class="n">0</span>.<span class="n">6</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span>  layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.init<span class="k2">(</span>grass<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="n">355</span>, <span class="n">0</span>.<span class="n">8</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span>  <span class="c">//layer[4].init(map_layer, 0, 1.0);</span>
<span class="number">  36</span>  layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.init<span class="k2">(</span>grass<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="n">419</span>, <span class="n">1</span>.<span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>  layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.init<span class="k2">(</span>grass<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>, <span class="n">429</span>, <span class="n">1</span>.<span class="n">4</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>  layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.init<span class="k2">(</span>grass<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>, <span class="n">439</span>, <span class="n">1</span>.<span class="n">6</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</span>  layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.init<span class="k2">(</span>front_trees, <span class="n">0</span>, <span class="n">1</span>.<span class="n">8</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bg<span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>foreground<span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>front_trees<span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>grass<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>grass<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>grass<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  46</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>grass<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  47</span>  player.init<span class="k2">(</span>temp, <span class="n">88</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>  <span class="c">//enemy.init(temp_two, 88);</span>
<span class="number">  49</span>  <span class="c">//for(int o; o &lt; 5; o++)</span>
<span class="number">  50</span>  <span class="c">//{</span>
<span class="number">  51</span>  ninja<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.init<span class="k2">(</span><span class="n">4</span>, <span class="n">4</span>, <span class="n">4</span>, <span class="n">100</span>, <span class="n">285</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>  ninja<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.init<span class="k2">(</span><span class="n">4</span>, <span class="n">4</span>, <span class="n">4</span>, <span class="n">200</span>, <span class="n">285</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>  ninja<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.init<span class="k2">(</span><span class="n">4</span>, <span class="n">4</span>, <span class="n">4</span>, <span class="n">300</span>, <span class="n">285</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  54</span>  ninja<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.init<span class="k2">(</span><span class="n">4</span>, <span class="n">4</span>, <span class="n">4</span>, <span class="n">500</span>, <span class="n">265</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>  ninja<span class="k2">[</span><span class="n">4</span><span class="k2">]</span>.init<span class="k2">(</span><span class="n">4</span>, <span class="n">4</span>, <span class="n">4</span>, <span class="n">800</span>, <span class="n">265</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>  <span class="c">//}</span>
<span class="number">  57</span>  Screen background<span class="k2">;</span>
<span class="number">  58</span>  <span class="c">//set_palette(pal);</span>
<span class="number">  59</span>  <span class="k1">int</span> button <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  60</span>    <span class="c">//load the map</span>
<span class="number">  61</span>  <span class="k1">if</span> <span class="k2">(</span>MapLoad<span class="k2">(</span><span class="s">"sample-5.fmp"</span><span class="k2">)</span><span class="k2">)</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span>  <span class="c">//buffer = create_video_bitmap (WIDTH, HEIGHT);</span>
<span class="number">  63</span>  clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>  bg_music.play<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>    <span class="c">//main loop</span>
<span class="number">  66</span>  <span class="k1">while</span> <span class="k2">(</span>run<span class="k2">)</span>
<span class="number">  67</span>  <span class="k2">{</span>
<span class="number">  68</span>    <span class="k1">while</span><span class="k2">(</span>speed_counter<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="number">  69</span>    <span class="k2">{</span>
<span class="number">  70</span>    
<span class="number">  71</span>    <span class="c">//if (timer.check_timer(120) &gt; 0)</span>
<span class="number">  72</span>    <span class="c">//{</span>
<span class="number">  73</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>buf, <span class="s">"P: %d, C: %d, N: %d, FPS: %d"</span>, button, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>player.x <span class="k3">-</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed<span class="k2">)</span><span class="k2">)</span><span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed<span class="k2">)</span>, ninja<span class="k2">[</span><span class="n">4</span><span class="k2">]</span>.x, FpsTimer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  74</span>    player.do_action<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  75</span>    player.key_presser<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>    player.scroll<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>    ninja<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.do_action<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  78</span>    ninja<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.determine_direction<span class="k2">(</span>player.x<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>    ninja<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.start_strike<span class="k2">(</span>player.x, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  80</span>    ninja<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.do_action<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>    ninja<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.determine_direction<span class="k2">(</span>player.x<span class="k2">)</span><span class="k2">;</span>
<span class="number">  82</span>    ninja<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.start_strike<span class="k2">(</span>player.x, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  83</span>    ninja<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.do_action<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  84</span>    ninja<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.determine_direction<span class="k2">(</span>player.x<span class="k2">)</span><span class="k2">;</span>
<span class="number">  85</span>    ninja<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.start_strike<span class="k2">(</span>player.x, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span>    ninja<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.do_action<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>    ninja<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.determine_direction<span class="k2">(</span>player.x<span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>    ninja<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.start_strike<span class="k2">(</span>player.x, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>    ninja<span class="k2">[</span><span class="n">4</span><span class="k2">]</span>.do_action<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>    ninja<span class="k2">[</span><span class="n">4</span><span class="k2">]</span>.determine_direction<span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>player.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed<span class="k2">)</span><span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>    ninja<span class="k2">[</span><span class="n">4</span><span class="k2">]</span>.start_strike<span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>player.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed<span class="k2">)</span><span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>    <span class="c">//enemy.do_action();</span>
<span class="number">  93</span>    <span class="c">//enemy.key_presser();</span>
<span class="number">  94</span>    <span class="c">//enemy.scroll();</span>
<span class="number">  95</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_F<span class="k2">]</span><span class="k2">)</span>
<span class="number">  96</span>    <span class="k2">{</span>
<span class="number">  97</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>bg_music.fade_out<span class="k2">(</span><span class="n">0</span>, <span class="n">10</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  98</span>    <span class="k2">{</span>
<span class="number">  99</span>    bg_music.fade_out<span class="k2">(</span><span class="n">0</span>, <span class="n">10</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>    <span class="k2">}</span>
<span class="number"> 101</span>    <span class="k2">}</span>
<span class="number"> 102</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_G<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 103</span>    <span class="k2">{</span>
<span class="number"> 104</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>bg_music.fade_in<span class="k2">(</span><span class="n">255</span>, <span class="n">10</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 105</span>    <span class="k2">{</span>
<span class="number"> 106</span>    bg_music.fade_in<span class="k2">(</span><span class="n">255</span>, <span class="n">10</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 107</span>    <span class="k2">}</span>
<span class="number"> 108</span>    <span class="k2">}</span>
<span class="number"> 109</span>    <span class="k1">if</span><span class="k2">(</span>player.x <span class="k3">&lt;</span> <span class="n">5</span><span class="k2">)</span>
<span class="number"> 110</span>    <span class="k2">{</span>
<span class="number"> 111</span>      player.x <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span>
<span class="number"> 112</span>    <span class="k2">}</span>
<span class="number"> 113</span>    <span class="k1">if</span><span class="k2">(</span>player.x <span class="k3">&gt;</span> <span class="n">6340</span><span class="k2">)</span>
<span class="number"> 114</span>    <span class="k2">{</span>
<span class="number"> 115</span>      player.x <span class="k3">=</span> <span class="n">6340</span><span class="k2">;</span>
<span class="number"> 116</span>    <span class="k2">}</span>
<span class="number"> 117</span>    move_camera<span class="k2">(</span><span class="n">6400</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 118</span>    draw<span class="k3">=</span><span class="k1">true</span><span class="k2">;</span>
<span class="number"> 119</span>    speed_counter--<span class="k2">;</span>
<span class="number"> 120</span>    <span class="k2">}</span> 
<span class="number"> 121</span>    <span class="c">//This is the closing bracket for the (speed_counter &gt; 0) test</span>
<span class="number"> 122</span>    <span class="c">//blur(bg, 5);</span>
<span class="number"> 123</span>    <span class="c">//clear_to_color(buffer, makecol(255,0,255));</span>
<span class="number"> 124</span>    <span class="c">//draw_sprite(blurbuffer, bg, -player.mapxoff, -player.mapyoff);</span>
<span class="number"> 125</span>    <span class="c">//background.draw(bg, -player.mapxoff, -);</span>
<span class="number"> 126</span>    <span class="c">//background.add_layer(bg, 0, , -player.mapyoff);</span>
<span class="number"> 127</span>    <span class="c">//if (needToRedraw) {</span>
<span class="number"> 128</span>    <span class="k1">if</span><span class="k2">(</span>draw<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 129</span>    BeginDrawing<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 130</span>
<span class="number"> 131</span>        <span class="c">// draw, pard'ner!!</span>
<span class="number"> 132</span>        clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 133</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 134</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sprite-&gt;w <span class="k3">-</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 135</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 136</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.sprite-&gt;w <span class="k3">-</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 137</span>    ninja<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.draw<span class="k2">(</span>buffer, <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed<span class="k2">)</span><span class="k2">)</span>, camera.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 138</span>    ninja<span class="k2">[</span><span class="n">4</span><span class="k2">]</span>.draw<span class="k2">(</span>buffer, <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed<span class="k2">)</span><span class="k2">)</span>, camera.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 139</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 140</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.sprite-&gt;w <span class="k3">-</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 141</span>    ninja<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.draw<span class="k2">(</span>buffer, <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.speed<span class="k2">)</span><span class="k2">)</span>, camera.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 142</span>    ninja<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.draw<span class="k2">(</span>buffer, <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.speed<span class="k2">)</span><span class="k2">)</span>, camera.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 143</span>    ninja<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.draw<span class="k2">(</span>buffer, <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.speed<span class="k2">)</span><span class="k2">)</span>, camera.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 144</span>    
<span class="number"> 145</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 146</span>    
<span class="number"> 147</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.sprite-&gt;w <span class="k3">-</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 148</span>    
<span class="number"> 149</span>    MapDrawBGT<span class="k2">(</span>buffer, camera.x, camera.y, <span class="n">0</span>, <span class="n">0</span>, WIDTH-1, HEIGHT-1<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 150</span>    <span class="c">//draw foreground tiles</span>
<span class="number"> 151</span>    MapDrawFG<span class="k2">(</span>buffer, camera.x, camera.y, <span class="n">0</span>, <span class="n">0</span>, WIDTH-1, HEIGHT-1, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 152</span>    player.draw<span class="k2">(</span>buffer, camera.x, camera.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 153</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 154</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.sprite-&gt;w <span class="k3">-</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 155</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 156</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.sprite-&gt;w <span class="k3">-</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.sprite-&gt;w <span class="k3">-</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 159</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 160</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.sprite, buffer, <span class="n">0</span>, <span class="n">0</span>, layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.sprite-&gt;w <span class="k3">-</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span>camera.x<span class="k3">*</span>layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.speed<span class="k2">)</span>%layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.sprite-&gt;w<span class="k2">)</span>, layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.y <span class="k3">-</span> camera.y<span class="k3">*</span>layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.speed, layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.sprite-&gt;w, layer<span class="k2">[</span><span class="n">8</span><span class="k2">]</span>.sprite-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</span>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">200</span>, <span class="n">100</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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>, buf<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>    <span class="c">//draw_sprite(buffer, test_pic, 0, 0);</span>
<span class="number"> 163</span>    EndDrawing<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 164</span>    xframe_count<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 165</span>    <span class="k1">while</span><span class="k2">(</span>speed_counter <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">{</span><a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 166</span>    draw<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span>
<span class="number"> 167</span>    <span class="k2">}</span>
<span class="number"> 168</span>  
<span class="number"> 169</span>  <span class="k2">}</span> <span class="c">//while</span>
<span class="number"> 170</span>
<span class="number"> 171</span>  <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> k <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> k <span class="k3">&lt;</span> <span class="n">9</span><span class="k2">;</span> k<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 172</span>  <span class="k2">{</span>
<span class="number"> 173</span>  layer<span class="k2">[</span>k<span class="k2">]</span>.<a href="http://www.delorie.com/djgpp/doc/libc/libc_519.html" target="_blank">kill</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 174</span>  <span class="k2">}</span>
<span class="number"> 175</span><span class="k2">}</span>
</div></div><p>

BeginDrawing() function:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> BeginDrawing<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
        <a href="http://www.allegro.cc/manual/acquire_bitmap" target="_blank"><span class="a">acquire_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

EndDrawing() function:
</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="k1">void</span> EndDrawing<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>        <a href="http://www.allegro.cc/manual/release_bitmap" target="_blank"><span class="a">release_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span>        <span class="k1">switch</span><span class="k2">(</span>videoupdatemethod<span class="k2">)</span>
<span class="number">  6</span>        <span class="k2">{</span>
<span class="number">  7</span>                <span class="k1">case</span> DOUBLEBUFFERING:
<span class="number">  8</span>                <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</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>
<span class="number">  9</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>                <span class="k1">case</span> PAGEFLIPPING:
<span class="number"> 12</span>                <a href="http://www.allegro.cc/manual/show_video_bitmap" target="_blank"><span class="a">show_video_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>                <span class="k1">if</span><span class="k2">(</span>buffer <span class="k3">=</span><span class="k3">=</span> pages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span>
<span class="number"> 15</span>                buffer <span class="k3">=</span> pages<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 16</span>                <span class="k1">else</span>
<span class="number"> 17</span>                buffer <span class="k3">=</span> pages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 18</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>                <span class="k1">case</span> TRIPLEBUFFERING:
<span class="number"> 21</span>                <span class="k1">do</span> <span class="k2">{</span> <span class="k2">}</span> <span class="k1">while</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/poll_scroll" target="_blank"><span class="a">poll_scroll</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>
<span class="number"> 23</span>                <a href="http://www.allegro.cc/manual/request_video_bitmap" target="_blank"><span class="a">request_video_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>
<span class="number"> 25</span>                <span class="k1">if</span><span class="k2">(</span>buffer <span class="k3">=</span><span class="k3">=</span> pages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span>
<span class="number"> 26</span>        <span class="k2">{</span>
<span class="number"> 27</span>                buffer <span class="k3">=</span> pages<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 28</span>        <span class="k2">}</span>
<span class="number"> 29</span>                <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>buffer <span class="k3">=</span><span class="k3">=</span> pages<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span>
<span class="number"> 30</span>        <span class="k2">{</span>
<span class="number"> 31</span>                buffer <span class="k3">=</span> pages<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 32</span>        <span class="k2">}</span>
<span class="number"> 33</span>                <span class="k1">else</span>
<span class="number"> 34</span>        <span class="k2">{</span>
<span class="number"> 35</span>                buffer <span class="k3">=</span> pages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 36</span>        <span class="k2">}</span>
<span class="number"> 37</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 38</span>
<span class="number"> 39</span>                default:
<span class="number"> 40</span>
<span class="number"> 41</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 42</span>        <span class="k2">}</span>
<span class="number"> 43</span><span class="k2">}</span>
</div></div><p>

Is there anything that I&#039;m doing wrong in my forest_stage function that fullscreen doesn&#039;t like?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kevin Epps)</author>
		<pubDate>Mon, 06 Feb 2006 07:36:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Search on the forums for Chris Barrys &#39;screen update&#39; code. That lets you chose double buffering, page flipping, or triple buffering and returns error codes if it fails. Maybe that will help you.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Mon, 06 Feb 2006 16:12:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Have you checked to see if triple buffering is working? what you might also find useful is trying to store your sprites as video memory too. Anyway, you didn&#39;t post your code for your graphics initialisation, but you should do something like this, what it does is determine what mode I want and tries fallbacks if it can&#39;t, e.g. if it can&#39;t get triple then it tries paging, etc. Note the triple buffering code first sees if it is available and if not it attempts to kick-start it.</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>  <span class="k1">switch</span><span class="k2">(</span>GameConfiguration-&gt;CapsGraphics.GraphicsMode<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>    <span class="k1">case</span> MODE_TRIPLE:</td></tr><tr><td class="number">4</td><td>      <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/gfx_capabilities" target="_blank"><span class="a">gfx_capabilities</span></a> <span class="k3">&amp;</span> GFX_CAN_TRIPLE_BUFFER<span class="k2">)</span> CanDoIt<span class="k3">=</span><span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>      <span class="k1">else</span> CanDoIt<span class="k3">=</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/enable_triple_buffer" target="_blank"><span class="a">enable_triple_buffer</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><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="k1">if</span><span class="k2">(</span>CanDoIt<span class="k2">)</span> </td></tr><tr><td class="number">8</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>        Configuration::LogEntry<span class="k2">(</span><span class="s">"System Wanted and can do Triple buffering"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>        BitmapPages<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>GameConfiguration-&gt;CapsGraphics.ScrWidth,GameConfiguration-&gt;CapsGraphics.ScrHeight<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>        BitmapPages<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>GameConfiguration-&gt;CapsGraphics.ScrWidth,GameConfiguration-&gt;CapsGraphics.ScrHeight<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>        BitmapPages<span class="k2">[</span><span class="n">2</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>GameConfiguration-&gt;CapsGraphics.ScrWidth,GameConfiguration-&gt;CapsGraphics.ScrHeight<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>        <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>BitmapPages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>BitmapPages<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>BitmapPages<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">14</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>          Configuration::LogEntry<span class="k2">(</span><span class="s">"Failed creating the 3 video bitmaps for Triple Buffering. Trying Paging"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>          <span class="k1">if</span><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">0</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>BitmapPages<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">17</td><td>          <span class="k1">if</span><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">1</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>BitmapPages<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">18</td><td>          <span class="k1">if</span><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">2</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>BitmapPages<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>          BitmapPages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">=</span>BitmapPages<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k3">=</span>BitmapPages<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k3">=</span>NULL<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>          <span class="c">//then fall through to paged</span></td></tr><tr><td class="number">21</td><td>          CanDoIt<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">23</td><td>        <span class="k1">else</span></td></tr><tr><td class="number">24</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">25</td><td>          <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k2">;</span></td></tr><tr><td class="number">26</td><td>          <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k2">;</span></td></tr><tr><td class="number">27</td><td>          <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k2">;</span></td></tr><tr><td class="number">28</td><td>          Configuration::LogEntry<span class="k2">(</span><span class="s">"Got Triple Buffering"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>          GameConfiguration-&gt;CapsActualSystem.GraphicsMode<span class="k3">=</span>MODE_TRIPLE<span class="k2">;</span></td></tr><tr><td class="number">30</td><td>        <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>      <span class="k1">else</span></td></tr><tr><td class="number">33</td><td>        Configuration::LogEntry<span class="k2">(</span><span class="s">"Wanted Triple but System reported it cannot. Trying Paged"</span><span class="k2">)</span><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="k1">if</span><span class="k2">(</span>CanDoIt<span class="k2">)</span></td></tr><tr><td class="number">36</td><td>        <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>    <span class="k1">case</span> MODE_PAGED:</td></tr><tr><td class="number">38</td><td>      BitmapPages<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>GameConfiguration-&gt;CapsGraphics.ScrWidth,GameConfiguration-&gt;CapsGraphics.ScrHeight<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>      BitmapPages<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>GameConfiguration-&gt;CapsGraphics.ScrWidth,GameConfiguration-&gt;CapsGraphics.ScrHeight<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>      BitmapPages<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k3">=</span>NULL<span class="k2">;</span></td></tr><tr><td class="number">41</td><td>      <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>BitmapPages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>BitmapPages<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">42</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">43</td><td>        Configuration::LogEntry<span class="k2">(</span><span class="s">"Failed creating the 2 video bitmaps for Paged Buffering. Trying Double"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>        <span class="k1">if</span><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">0</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>BitmapPages<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">45</td><td>        <span class="k1">if</span><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">1</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>BitmapPages<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">46</td><td>        BitmapPages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">=</span>BitmapPages<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k3">=</span>BitmapPages<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k3">=</span>NULL<span class="k2">;</span></td></tr><tr><td class="number">47</td><td>        <span class="c">//then fall through to system</span></td></tr><tr><td class="number">48</td><td>        CanDoIt<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">50</td><td>      <span class="k1">else</span></td></tr><tr><td class="number">51</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">52</td><td>        <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k2">;</span></td></tr><tr><td class="number">53</td><td>        <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k2">;</span></td></tr><tr><td class="number">54</td><td>        Configuration::LogEntry<span class="k2">(</span><span class="s">"Got Paged Buffering"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">55</td><td>        GameConfiguration-&gt;CapsActualSystem.GraphicsMode<span class="k3">=</span>MODE_PAGED<span class="k2">;</span></td></tr><tr><td class="number">56</td><td>        CanDoIt<span class="k3">=</span><span class="k1">true</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>      <span class="k1">if</span><span class="k2">(</span>CanDoIt<span class="k2">)</span></td></tr><tr><td class="number">59</td><td>        <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>    <span class="k1">case</span> MODE_SYSTEMDOUBLE:</td></tr><tr><td class="number">61</td><td>      BitmapPages<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_system_bitmap" target="_blank"><span class="a">create_system_bitmap</span></a><span class="k2">(</span>GameConfiguration-&gt;CapsGraphics.ScrWidth,GameConfiguration-&gt;CapsGraphics.ScrHeight<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>      BitmapPages<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k3">=</span>BitmapPages<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k3">=</span>NULL<span class="k2">;</span></td></tr><tr><td class="number">63</td><td>      <span class="c">//should always be a bitmap as system falls back to memory bitmap if not available</span></td></tr><tr><td class="number">64</td><td>      <span class="k1">if</span><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">0</span><span class="k2">]</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/is_system_bitmap" target="_blank"><span class="a">is_system_bitmap</span></a><span class="k2">(</span>BitmapPages<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">67</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">68</td><td>          GameConfiguration-&gt;CapsActualSystem.GraphicsMode<span class="k3">=</span>MODE_SYSTEMDOUBLE<span class="k2">;</span></td></tr><tr><td class="number">69</td><td>          <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k2">;</span></td></tr><tr><td class="number">70</td><td>          Configuration::LogEntry<span class="k2">(</span><span class="s">"Got System Double Buffering."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>          CanDoIt<span class="k3">=</span><span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>          <span class="k1">break</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>        <span class="k1">else</span></td></tr><tr><td class="number">75</td><td>        <span class="k2">{</span></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>BitmapPages<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">77</td><td>          BitmapPages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">=</span>NULL<span class="k2">;</span></td></tr><tr><td class="number">78</td><td>          Configuration::LogEntry<span class="k2">(</span><span class="s">"Failed creating System bitmap. Trying Double"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">79</td><td>          CanDoIt<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">80</td><td>        <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>      <span class="k1">else</span></td></tr><tr><td class="number">83</td><td>        Configuration::LogEntry<span class="k2">(</span><span class="s">"Failed to get a System, trying double"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">84</td><td>    default:</td></tr><tr><td class="number">85</td><td>      <span class="c">//double - DR needs to be done by user</span></td></tr><tr><td class="number">86</td><td>      Configuration::LogEntry<span class="k2">(</span><span class="s">"Using double buffering"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">87</td><td>      BitmapPages<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_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>GameConfiguration-&gt;CapsGraphics.ScrWidth,GameConfiguration-&gt;CapsGraphics.ScrHeight<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">88</td><td>      <span class="k1">if</span><span class="k2">(</span>BitmapPages<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">89</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">90</td><td>        GameConfiguration-&gt;CapsActualSystem.GraphicsMode<span class="k3">=</span>MODE_DOUBLE<span class="k2">;</span></td></tr><tr><td class="number">91</td><td>        Configuration::LogEntry<span class="k2">(</span><span class="s">"Got Double Buffering"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">92</td><td>        CanDoIt<span class="k3">=</span><span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">93</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">94</td><td>      <span class="k1">else</span></td></tr><tr><td class="number">95</td><td>        Configuration::LogEntry<span class="k2">(</span><span class="s">"Failed to get a Double Buffer. Crikey!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">96</td><td>  <span class="k2">}</span></td></tr></tbody></table></div></div><p>

then in my drawing loop I do something like this:
</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="c">//set correct buffer</span></td></tr><tr><td class="number">2</td><td>        <span class="c">//double/system is always pointing at one and only page</span></td></tr><tr><td class="number">3</td><td>        <span class="c">//need to modify if using dirty.</span></td></tr><tr><td class="number">4</td><td>        <span class="k1">if</span><span class="k2">(</span>this-&gt;GameConfiguration-&gt;CapsActualSystem.GraphicsMode<span class="k3">&lt;</span><span class="k3">=</span>MODE_SYSTEMDOUBLE<span class="k2">)</span></td></tr><tr><td class="number">5</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">6</td><td>          <span class="c">//double buffering to either a memory or a system bitmap</span></td></tr><tr><td class="number">7</td><td>          <span class="k1">if</span><span class="k2">(</span>GameConfiguration-&gt;CapsGraphics.VSync<span class="k2">)</span> <a href="http://www.allegro.cc/manual/vsync" target="_blank"><span class="a">vsync</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>            <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>DrawingSurface, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>,GameConfiguration-&gt;CapsGraphics.ScrWidth,GameConfiguration-&gt;CapsGraphics.ScrHeight<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>        <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="k2">{</span></td></tr><tr><td class="number">12</td><td>          <span class="c">//release_bitmap(DrawingSurface);</span></td></tr><tr><td class="number">13</td><td>          <span class="k1">if</span><span class="k2">(</span>this-&gt;GameConfiguration-&gt;CapsActualSystem.GraphicsMode<span class="k3">=</span><span class="k3">=</span>MODE_PAGED<span class="k2">)</span></td></tr><tr><td class="number">14</td><td>          <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>            <a href="http://www.allegro.cc/manual/show_video_bitmap" target="_blank"><span class="a">show_video_bitmap</span></a><span class="k2">(</span>BitmapPages<span class="k2">[</span>BitmapPagesActive<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>            <span class="c">//show_video_bitmap(DrawingSurface);</span></td></tr><tr><td class="number">17</td><td>            BitmapPagesActive<span class="k3">=</span><span class="n">1</span><span class="k3">-</span>BitmapPagesActive<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>            DrawingSurface<span class="k3">=</span>BitmapPages<span class="k2">[</span>BitmapPagesActive<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>          <span class="k1">else</span></td></tr><tr><td class="number">21</td><td>          <span class="k2">{</span></td></tr><tr><td class="number">22</td><td>            <span class="c">//triple</span></td></tr><tr><td class="number">23</td><td>            <span class="k1">do</span><span class="k2">{</span><span class="k2">}</span><span class="k1">while</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/poll_scroll" target="_blank"><span class="a">poll_scroll</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>            <a href="http://www.allegro.cc/manual/request_video_bitmap" target="_blank"><span class="a">request_video_bitmap</span></a><span class="k2">(</span>BitmapPages<span class="k2">[</span>BitmapPagesActive<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>            <span class="c">//request_video_bitmap(DrawingSurface);</span></td></tr><tr><td class="number">26</td><td>            BitmapPagesActive<span class="k3">=</span><span class="k2">(</span>BitmapPagesActive<span class="k3">+</span><span class="n">1</span><span class="k2">)</span>%<span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>            DrawingSurface<span class="k3">=</span>BitmapPages<span class="k2">[</span>BitmapPagesActive<span class="k2">]</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>        <span class="k2">}</span></td></tr></tbody></table></div></div><p>

So when I&#39;m drawing my sprites and stuff before I call this code all I need worry about is blitting to &#39;DrawingSurface&#39; and it does it, regardless of whether I&#39;m using triple, paging, double, system double.</p><p>e.g. draw_sprite(DrawingSurface,somesprite,x,y);<br />The params may be the wrong way round, but you get the picture <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>the &#39;BitmapPagesActive&#39; is just an int that tells me which is the currently active drawing page. It is an index to the array of bitmaps created at top.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Mon, 06 Feb 2006 17:37:47 +0000</pubDate>
	</item>
</rss>
