<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>making a datafile, but it won&#39;t load..?</title>
		<link>http://www.allegro.cc/forums/view/588532</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 14 Nov 2006 04:29:25 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, yeah, I know I&#39;m taking over the forums <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />  But I&#39;m trying to learn how to make data files and uhh I followed this tutorial but it didn&#39;t work.  A <a href="http://www.allegro.cc/files/attachment/590491">zip</a> file is attached, please check it out.</p><p>I found Grabber, opened it up, Right-clicked in white side, clicked on New, for a bitmap, names it linksawakening.  Then I gave it the header, linkawakes.h.  The file with no name is the .dat file.</p><p>The original linksawakening.bmp was 24-bit.  Could the problem be in here somewhere:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/set_color_conversion" target="_blank"><span class="a">set_color_conversion</span></a><span class="k2">(</span>COLORCONV_24_TO_32<span class="k2">)</span><span class="k2">;</span><span class="c">//??</span>
<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">32</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Set the color depth</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="k2">;</span>
</pre></div></div><p>

If so, what am I doing wrong?</p><p>Lastly, is there a tutorial on how to make a Mappy level into a .dat file?  If you&#39;ve done it, can you give me clear, precise instructions?  I&#39;d REALLY appreciate it.  REALLLLLY! <img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (red-dragon)</author>
		<pubDate>Mon, 13 Nov 2006 07:43:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
But I&#39;m trying to learn how to make data files and uhh I followed this tutorial but it didn&#39;t work.
</p></div></div><p>
Define &quot;didn&#39;t work&quot;. Did the program crash? Did load_datafile() return NULL? Was the bitmap full of garbage? Did your computer explode? Did you spontaneously burst into flames? Did Timmy fall down the well?</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
DATAFILE *my_datafile = load_datafile(&quot;linksawakening.dat&quot;);
</p></div></div><p>
And the file is actually just called &quot;.dat&quot;? <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Mon, 13 Nov 2006 07:57:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>haha, hey gnolam,<br />Ok, it said it couldn&#39;t load the datafile.  I forgot to include that.<br />And you&#39;re right... I renamed the nameless .dat file to linksawakening.dat and now it works.  How come.. it doesn&#39;t name the .dat file automatically?</p><p>It is very important that I find out how to do this for a map created in mappy, so I can follow a tutorial and finish the scrolling part of the project.  SO, I beg someone.. please.  I&#39;ll give you a $1 <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p>EDIT: I need to mainly know what type to make it as.. obviously it&#39;s not a bitmap or sprite..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (red-dragon)</author>
		<pubDate>Mon, 13 Nov 2006 08:09:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>red-dragon, may I suggest that you simply start from scratch and play with Allegro for a while. You will learn more that way than any of us can teach you by giving you lines of code to plug into your program. There is a program in the example folder called &#39;exdata&#39; that shows you the basics of using datafiles. Adding your own user-defined maps to a datafile is a more complex subject and you will need to have a good understanding of the grabber utility and datafiles in order to do that. The tutorial will still be there waiting for you when you&#39;re ready for it. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edward Sheets)</author>
		<pubDate>Mon, 13 Nov 2006 11:11:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>hey Edward,<br />thanks for the input.  THe way I&#39;m putting up questions, it makes me look retarded.  I had my mind set to solve a problem in a specific way, when you can do the same thing a lot easier.</p><p>i.e. why don&#39;t i just use store my maps as a 2d array and work on scrolling from there?  I need to get some sleep!  I Just got pulled in too many directions.</p><p>And now I&#39;m gonna sound even moreso retarded... after I export a mappy file as &quot;map array as comma values only (.csv)&quot;, I rename it as .txt and open it up in Notepad.  Now, I&#39;m trying to save it as &quot;Map Array (.MAR)&quot; and it saves it as a MS Access shortcut? What do I do with that?  I swear I&#39;ve searched and can&#39;t find an answer.  </p><p>Game programming as a whole is frustrating!  Lessons learned though <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (red-dragon)</author>
		<pubDate>Mon, 13 Nov 2006 11:19:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>red-dragon, you are not retarded at all (and we would like you even if you were <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />). Programming is a complex thing and game programming is one of the most challenging programming tasks there is. </p><p>I think this is the perfect time to &quot;reinvent the wheel&quot; a little bit. Mappy is a great tool but you could write a simple, elegant solution to this problem in half the time it would take to figure out the inner-workings of Mappy. And in the process of writing your own simple map loading and saving functions, you would get a much better understanding of how Mappy works under the hood.</p><p>Take a look at how simple it can be:
</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">//we'll use simple stdio functions for handling file input and output</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;stdio.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="c">//define your map and tile dimensions here</span></td></tr><tr><td class="number">4</td><td><span class="p">#define MAP_W 100</span></td></tr><tr><td class="number">5</td><td><span class="p">#define MAP_H 100</span></td></tr><tr><td class="number">6</td><td><span class="p">#define TILE_W 32</span></td></tr><tr><td class="number">7</td><td><span class="p">#define TILE_H 32</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td><span class="c">//create a simple 2d array to hold your map - works like a charm :P</span></td></tr><tr><td class="number">10</td><td><span class="k1">int</span> my_map<span class="k2">[</span>MAP_W<span class="k2">]</span><span class="k2">[</span>MAP_H<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="c">//don't forget to initialize the map or use the load_map() function to put meaningful data in the map array before using it. </span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td><span class="c">//map x and y position</span></td></tr><tr><td class="number">14</td><td><span class="k1">int</span> map_x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k1">int</span> map_y <span class="k3">=</span> <span class="n">0</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="c">//this function will load a saved map into your 2d array</span></td></tr><tr><td class="number">18</td><td><span class="k1">int</span> load_map<span class="k2">(</span><span class="k1">char</span> file<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> tile_map<span class="k2">[</span>MAP_W<span class="k2">]</span><span class="k2">[</span>MAP_H<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td> FILE <span class="k3">*</span>p_file<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td> p_file <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a><span class="k2">(</span>file, <span class="s">"rb"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td> <span class="k1">if</span><span class="k2">(</span>p_file <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">24</td><td>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Unable to load specified map file...\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>  <span class="k1">return</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>&#160;</td></tr><tr><td class="number">28</td><td> <a href="http://www.delorie.com/djgpp/doc/libc/libc_349.html" target="_blank">fread</a><span class="k2">(</span>tile_map, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>, MAP_W <span class="k3">*</span> MAP_H, p_file<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td> <a href="http://www.delorie.com/djgpp/doc/libc/libc_308.html" target="_blank">fclose</a><span class="k2">(</span>p_file<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td> <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Map successfully loaded...\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td> <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td><span class="k2">}</span> </td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</td><td><span class="c">//this function will save your map to file using the filename you pass to it. You can use this to create your own simple, but very useful map editor. </span></td></tr><tr><td class="number">36</td><td><span class="k1">int</span> save_map<span class="k2">(</span><span class="k1">char</span> file<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> tile_map<span class="k2">[</span>MAP_W<span class="k2">]</span><span class="k2">[</span>MAP_H<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">37</td><td> </td></tr><tr><td class="number">38</td><td> FILE <span class="k3">*</span>p_file<span class="k2">;</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td> p_file <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a><span class="k2">(</span>file, <span class="s">"wb"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td> <span class="k1">if</span><span class="k2">(</span>p_file <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">42</td><td> <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Unable to open file for writing...\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td> <span class="k1">return</span> <span class="n">1</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>&#160;</td></tr><tr><td class="number">46</td><td> <a href="http://www.delorie.com/djgpp/doc/libc/libc_371.html" target="_blank">fwrite</a><span class="k2">(</span>tile_map, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>, MAP_W <span class="k3">*</span> MAP_H, p_file<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>&#160;</td></tr><tr><td class="number">48</td><td> <a href="http://www.delorie.com/djgpp/doc/libc/libc_308.html" target="_blank">fclose</a><span class="k2">(</span>p_file<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td> <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Map saved...\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td> <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td><span class="k2">}</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td><span class="c">//you'll want to add features you need to the drawing function to suit your game, but this will get you started:</span></td></tr><tr><td class="number">54</td><td><span class="k1">void</span> draw_map<span class="k2">(</span><span class="k1">int</span> tile_map<span class="k2">[</span>MAP_W<span class="k2">]</span><span class="k2">[</span>MAP_H<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">55</td><td>&#160;</td></tr><tr><td class="number">56</td><td>  <span class="k1">int</span> x, y, bmp<span class="k2">;</span></td></tr><tr><td class="number">57</td><td>  <span class="k1">for</span> <span class="k2">(</span>x <span class="k3">=</span> map_x<span class="k2">;</span> x <span class="k3">&lt;</span> <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a> <span class="k3">/</span> TILE_W<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">58</td><td>   <span class="k1">for</span> <span class="k2">(</span>y <span class="k3">=</span> map_y<span class="k2">;</span> y <span class="k3">&lt;</span> <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a> <span class="k3">/</span> TILE_H<span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">59</td><td>    bmp <span class="k3">=</span> tile_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">60</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><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><span class="k2">)</span>data<span class="k2">[</span>bmp<span class="k2">]</span>.dat, buffer, <span class="n">0</span>, <span class="n">0</span>, x <span class="k3">*</span> TILE_W, y <span class="k3">*</span> TILE_H, TILE_W, TILE_H<span class="k2">)</span><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>  <span class="k2">}</span></td></tr><tr><td class="number">63</td><td>&#160;</td></tr><tr><td class="number">64</td><td><span class="k2">}</span></td></tr><tr><td class="number">65</td><td>&#160;</td></tr><tr><td class="number">66</td><td><span class="c">// then you can use these simple functions like this:</span></td></tr><tr><td class="number">67</td><td>&#160;</td></tr><tr><td class="number">68</td><td>save_map<span class="k2">(</span><span class="s">"level3"</span>, my_map<span class="k2">)</span><span class="k2">;</span> <span class="c">//this will create a file named level3 if it does not already exist. If it exists, it will be overwritten.</span></td></tr><tr><td class="number">69</td><td> </td></tr><tr><td class="number">70</td><td>load_map<span class="k2">(</span><span class="s">"level3"</span>, my_map<span class="k2">)</span><span class="k2">;</span> <span class="c">//this will load your saved map right into your array and you're good to go :)</span></td></tr><tr><td class="number">71</td><td>&#160;</td></tr><tr><td class="number">72</td><td>draw_map<span class="k2">(</span>my_map<span class="k2">)</span><span class="k2">;</span> <span class="c">//simply draws the map to your buffer</span></td></tr><tr><td class="number">73</td><td><span class="c">//</span></td></tr></tbody></table></div></div><p>

I&#39;d play with something like that and maybe add some features to this simple tile engine and in no time you&#39;ll know exactly how Mappy works and you might even decide that your own simple version of Mappy works good enough <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Also, you can get rid of that set_color_conversion() call. Just make sure you set the color depth with set_color_depth(32) before loading any graphics. That way when you call load_datafile() it will <i>automatically</i> load everything in the color depth you passed to set_color_depth(). Here&#39;s a handy way to set color depth based on the local color depth of the computer your game is running on: 
</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">int</span> local_color_depth<span class="k2">;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td>local_color_depth <span class="k3">=</span> <a href="http://www.allegro.cc/manual/desktop_color_depth" target="_blank"><span class="a">desktop_color_depth</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</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>local_color_depth<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="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><span class="k2">{</span></td></tr><tr><td class="number">7</td><td> <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td> <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Unable to set graphics mode.\n%s\n"</span>, <a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td><span class="k2">}</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td>data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a><span class="k2">(</span><span class="s">"data.dat"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td><span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>data<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">13</td><td> <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td> <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error loading data. Try reinstalling the game.\n%s\n"</span>, <a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td> <span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edward Sheets)</author>
		<pubDate>Mon, 13 Nov 2006 12:13:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Edward,<br />Thanks for the kind words.  I feel better today and more focused.  <br />That&#39;s cool how you showed me how simple map saving/loading functions can be.  However, I&#39;m on a very tight schedule and have to turn these assignments in.  This is my first attempt at some form of game programming, and I&#39;d rather have my focus on that than the &quot;tools&quot;.  </p><p>I wanted to save my map into a 2d array.  So I was trying the .MAR option.  It saves it as a MS Access <b>REPORT</b> shortcut.  I open it and and it opens up the Access application and that&#39;s it.  Nothing else.  What am I suppose to do that I&#39;m not doing?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (red-dragon)</author>
		<pubDate>Tue, 14 Nov 2006 04:29:25 +0000</pubDate>
	</item>
</rss>
