<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>HOW TO LOAD DAT FILE IN PACK FILE</title>
		<link>http://www.allegro.cc/forums/view/579339</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 16 Apr 2006 21:34:13 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi guys..</p><p>I have been trying to load dat file in a pack file...but i couldn&#39;t able to do it..though..after much fiddling..i could able to load a bitmap in packfile..so..could you guys..please tell me how to load dat file in a packfile..</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><a href="http://www.allegro.cc/manual/PACKFILE" target="_blank"><span class="a">PACKFILE</span></a> <span class="k3">*</span>pf<span class="k2">;</span></td></tr><tr><td class="number">5</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp<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">void</span> set_graphic<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td><span class="k1">void</span> make_memory<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td><span class="k1">void</span> load_file_pf<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k1">void</span> load_pf_bmp<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k1">void</span> show_bmp<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td><span class="k1">void</span> free_memory<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">15</td><td><span class="k2">{</span></td></tr><tr><td class="number">16</td><td>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>  </td></tr><tr><td class="number">19</td><td>  set_graphic<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>  </td></tr><tr><td class="number">21</td><td>  make_memory<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>  </td></tr><tr><td class="number">23</td><td>  load_file_pf<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>  </td></tr><tr><td class="number">25</td><td>  load_pf_bmp<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>  </td></tr><tr><td class="number">27</td><td>  show_bmp<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>  </td></tr><tr><td class="number">29</td><td>  free_memory<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">30</td><td>                  </td></tr><tr><td class="number">31</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>                     </td></tr><tr><td class="number">32</td><td><span class="k2">}</span></td></tr><tr><td class="number">33</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</td><td><span class="k1">void</span> set_graphic<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">36</td><td><span class="k2">{</span></td></tr><tr><td class="number">37</td><td>  <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></td></tr><tr><td class="number">38</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_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></td></tr><tr><td class="number">39</td><td>  </td></tr><tr><td class="number">40</td><td><span class="k2">}</span></td></tr><tr><td class="number">41</td><td>&#160;</td></tr><tr><td class="number">42</td><td><span class="k1">void</span> make_memory<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">43</td><td><span class="k2">{</span></td></tr><tr><td class="number">44</td><td>  bmp <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><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></td></tr><tr><td class="number">45</td><td>  clear<span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>   </td></tr><tr><td class="number">46</td><td><span class="k2">}</span></td></tr><tr><td class="number">47</td><td>&#160;</td></tr><tr><td class="number">48</td><td><span class="k1">void</span> load_file_pf<span class="k2">(</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>  pf <span class="k3">=</span>  <a href="http://www.allegro.cc/manual/pack_fopen" target="_blank"><span class="a">pack_fopen</span></a> <span class="k2">(</span><span class="s">"frog.bmp"</span>, F_READ<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>pf<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">52</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">"could not read bitmap file!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>  <span class="k2">}</span>     </td></tr><tr><td class="number">55</td><td><span class="k2">}</span></td></tr><tr><td class="number">56</td><td>&#160;</td></tr><tr><td class="number">57</td><td><span class="k1">void</span> load_pf_bmp<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">58</td><td><span class="k2">{</span></td></tr><tr><td class="number">59</td><td>  bmp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bmp_pf" target="_blank"><span class="a">load_bmp_pf</span></a><span class="k2">(</span>pf, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>bmp<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">61</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 in loading pf into bmp!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>  <span class="k2">}</span></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="k1">void</span> show_bmp<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>  <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">69</td><td>  <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>bmp, <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">100</span>, <span class="n">100</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></td></tr><tr><td class="number">70</td><td>  <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>     </td></tr><tr><td class="number">71</td><td><span class="k2">}</span></td></tr><tr><td class="number">72</td><td>&#160;</td></tr><tr><td class="number">73</td><td><span class="k1">void</span> free_memory<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">74</td><td><span class="k2">{</span></td></tr><tr><td class="number">75</td><td>  <a href="http://www.allegro.cc/manual/pack_fclose" target="_blank"><span class="a">pack_fclose</span></a><span class="k2">(</span>pf<span class="k2">)</span><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>bmp<span class="k2">)</span><span class="k2">;</span>           </td></tr><tr><td class="number">77</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (tibgamer)</author>
		<pubDate>Sat, 15 Apr 2006 11:46:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You could simply put the bitmap in a datafile and use global compression.</p><p>Regards
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (umperio)</author>
		<pubDate>Sat, 15 Apr 2006 12:56:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You seriously need to read the manual. It looks like you have no idea what you&#39;re talking about. I have neither but if I made a wild guess, I&#39;d say you&#39;re looking for this function: <span class="source-code"><a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/load_datafile_object" target="_blank"><span class="a">load_datafile_object</span></a><span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>filename, <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>objectname<span class="k2">)</span><span class="k2">;</span></span><br />You use it like this (probably):</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>object <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile_object" target="_blank"><span class="a">load_datafile_object</span></a><span class="k2">(</span><span class="s">"datafile.dat"</span>, <span class="s">"MYBITMAP"</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">if</span> <span class="k2">(</span>object <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/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp <span class="k3">=</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>object-&gt;dat<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
Of course I could be wrong and this is not what you&#39;re asking about. It&#39;s hard to tell from your post...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Sat, 15 Apr 2006 12:56:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>hi guys..</p><p>i already know how to put bitmap into dat file and know how to load object of dat file...but only thing i am looking for is some specific PACKFILE routines from where you can load dat file and blit it. For example..in my code i used:</p><p><span class="source-code"> pf <span class="k3">=</span>  <a href="http://www.allegro.cc/manual/pack_fopen" target="_blank"><span class="a">pack_fopen</span></a> <span class="k2">(</span><span class="s">"frog.bmp"</span>, F_READ<span class="k2">)</span><span class="k2">;</span></span></p><p>which i guess..reads a bitmap file from disk and puts it into compressed packfile..rite..so..like that..i am looking for packfile routine..which loads a datfile...assuming..there must be a PACKFILE routine for such thing...!</p><p>Miran:</p><p>i guess.urs code only loads object of datfile and puts it into bmp..and then blit it..rite...so there is no mention of any PACKFILE routines...hope you guys know what i am looking for in particular....</p><p>Regards
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (tibgamer)</author>
		<pubDate>Sat, 15 Apr 2006 13:20:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
hope you guys know what i am looking for in particular....
</p></div></div><p>
No.</p><p>But why is <span class="source-code"><a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="k2">)</span></span> not good enough for you?</p><p>EDIT: Or you could use <span class="source-code"><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/load_bmp_pf" target="_blank"><span class="a">load_bmp_pf</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/PACKFILE" target="_blank"><span class="a">PACKFILE</span></a> <span class="k3">*</span>f, <a href="http://www.allegro.cc/manual/RGB" target="_blank"><span class="a">RGB</span></a> <span class="k3">*</span>pal<span class="k2">)</span><span class="k2">;</span></span></p><p>When I said you seriously need to read the manual, I was serious. This is all in there.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Sat, 15 Apr 2006 13:40:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
EDIT: Or you could use <br />BITMAP *load_bmp_pf(PACKFILE *f, RGB *pal);
</p></div></div><p>
He does. He&#39;s asking for something similar for datafiles.</p><p>The answer is, there&#39;s no need. pack_fopen doesn&#39;t load the file into memory. It buffers a small bit of the file (about 4K) for slightly quicker access, but it&#39;s still read from disk as-needed. Given your code, there&#39;s no reason not to use load_bitmap, or load_datafile[_object].
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Sat, 15 Apr 2006 13:58:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
When I said you seriously need to read the manual, I was serious. This is all in there.
</p></div></div><p>

i have been reading manual very carefully...Before coming here..i always..reads manual...n..if i couldn&#39;t able to understand it..then i come here for you guys help..</p><p>load_bitmap() <br />it is good enough for me...however..i just wanted to learn PACKFILE concept..so..i wrote the code to load bitmap using PACKFILE..and when i tried to load datfile using PACKFILE...i am finding hard to find any PACKFILE ROUTINE to load datfile...now..it seems like there aren&#39;t any PACKFILE ROUTINE to load datfile...disappointed...!</p><p>BITMAP *load_bmp_pf(PACKFILE *f, RGB *pal); </p><p>i already used it in my first post...you can find it in the function <br />void load_pf_bmp() in my code...</p><p>thanks anyway....
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (tibgamer)</author>
		<pubDate>Sat, 15 Apr 2006 13:59:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ah, now I get it. Well, the load_datafile() function as far as I know internally uses the packfile routines, so what you&#39;re looking for wouldn&#39;t really make much sense.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Sat, 15 Apr 2006 14:32:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
and when i tried to load datfile using PACKFILE...i am finding hard to find any PACKFILE ROUTINE to load datfile...now..it seems like there aren&#39;t any PACKFILE ROUTINE to load datfile...disappointed...!
</p></div></div><p>

Because, again, there&#39;s no need for them, if you need a compressed datafile, just create a compressed one with grabber and load it normally with load_datafile.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (umperio)</author>
		<pubDate>Sat, 15 Apr 2006 14:35:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Do you understand what a packfile really is? Basically, it&#39;s just a plain vanilla libc FILE*, with a few extra features:<br />- PACKFILE supports endian-safe reading across all supported platforms. Using pack_mgetw() for example will correctly load a Motorola-aligned short from the same file on all platforms.<br />- PACKFILE supports compressed file i/o, using a special &quot;magic&quot; byte sequence at the start of a file, and the appropriate flag when opening a file. After opening a compressed file, the PACKFILE* pointer will behave like a normal one, except that the data is compressed on disk.</p><p>A DATAFILE is allegro&#39;s implementation of a resource file. It is organized in chunks, each of which can hold an object of various types. The datafile routines internally use the packfile API for i/o, but you don&#39;t need to know this.</p><p>So for all datafiles (files that you created using grabber or dat), use the datafile api. For all other files, use the packfile api.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Sun, 16 Apr 2006 21:34:13 +0000</pubDate>
	</item>
</rss>
