<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>(Fixed) Storing and reading sprite data from a linked list</title>
		<link>http://www.allegro.cc/forums/view/613149</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 19 Aug 2013 01:48:03 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><b>Note:</b> a character I pasted in my previous attempt killed the post. I hope someone can delete that one. Sorry. :/</p><p>I&#39;m writing a small sprite loading and management system for my game which reads sprite data out of Allegro config files which look like this:</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="k2">[</span>still_up_1<span class="k2">]</span>
<span class="number">  2</span>x <span class="k3">=</span> <span class="n">64</span>
<span class="number">  3</span>y <span class="k3">=</span> <span class="n">0</span>
<span class="number">  4</span>w <span class="k3">=</span> <span class="n">64</span>
<span class="number">  5</span>h <span class="k3">=</span> <span class="n">96</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="k2">[</span>still_down_1<span class="k2">]</span>
<span class="number">  8</span>x <span class="k3">=</span> <span class="n">192</span>
<span class="number">  9</span>y <span class="k3">=</span> <span class="n">0</span>
<span class="number"> 10</span>w <span class="k3">=</span> <span class="n">64</span>
<span class="number"> 11</span>h <span class="k3">=</span> <span class="n">96</span>
<span class="number"> 12</span>
<span class="number"> 13</span><span class="k2">[</span>still_left_1<span class="k2">]</span>
<span class="number"> 14</span>x <span class="k3">=</span> <span class="n">384</span>
<span class="number"> 15</span>y <span class="k3">=</span> <span class="n">0</span>
<span class="number"> 16</span>w <span class="k3">=</span> <span class="n">64</span>
<span class="number"> 17</span>h <span class="k3">=</span> <span class="n">96</span>
<span class="number"> 18</span>
<span class="number"> 19</span><span class="k2">[</span>still_right_1<span class="k2">]</span>
<span class="number"> 20</span>x <span class="k3">=</span> <span class="n">256</span>
<span class="number"> 21</span>y <span class="k3">=</span> <span class="n">480</span>
<span class="number"> 22</span>w <span class="k3">=</span> <span class="n">64</span>
<span class="number"> 23</span>h <span class="k3">=</span> <span class="n">96</span>
<span class="number"> 24</span>
<span class="number"> 25</span>
<span class="number"> 26</span><span class="k2">[</span>walk_up_1<span class="k2">]</span>
<span class="number"> 27</span>x <span class="k3">=</span> <span class="n">0</span>
<span class="number"> 28</span>y <span class="k3">=</span> <span class="n">0</span>
<span class="number"> 29</span>w <span class="k3">=</span> <span class="n">64</span>
<span class="number"> 30</span>h <span class="k3">=</span> <span class="n">96</span>
<span class="number"> 31</span>
<span class="number"> 32</span><span class="k2">[</span>walk_up_2<span class="k2">]</span>
<span class="number"> 33</span>x <span class="k3">=</span> <span class="n">64</span>
<span class="number"> 34</span>y <span class="k3">=</span> <span class="n">0</span>
<span class="number"> 35</span>w <span class="k3">=</span> <span class="n">64</span>
<span class="number"> 36</span>h <span class="k3">=</span> <span class="n">96</span>
<span class="number"> 37</span>
<span class="number"> 38</span><span class="k2">[</span>walk_up_3<span class="k2">]</span>
<span class="number"> 39</span>x <span class="k3">=</span> <span class="n">128</span>
<span class="number"> 40</span>y <span class="k3">=</span> <span class="n">0</span>
<span class="number"> 41</span>w <span class="k3">=</span> <span class="n">64</span>
<span class="number"> 42</span>h <span class="k3">=</span> <span class="n">96</span>
</div></div><p>

I store that data in a series of structs as follows:</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">const</span> <span class="k1">char</span> <span class="k3">*</span>sprite_directions<span class="k2">[</span><span class="k2">]</span>  <span class="k3">=</span> <span class="k2">{</span><span class="s">"up"</span>, <span class="s">"down"</span>, <span class="s">"left"</span>, <span class="s">"right"</span>, NULL<span class="k2">}</span><span class="k2">;</span>
<span class="number">  2</span><span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>sprite_states<span class="k2">[</span><span class="k2">]</span>    <span class="k3">=</span> <span class="k2">{</span> <span class="s">"still"</span>, <span class="s">"walk"</span>, NULL <span class="k2">}</span><span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">typedef</span> <span class="k1">struct</span>
<span class="number">  5</span><span class="k2">{</span>
<span class="number">  6</span>  <span class="k1">char</span>  state<span class="k2">[</span><span class="n">32</span><span class="k2">]</span><span class="k2">;</span>  <span class="c">// Textual identifier for animation (walk, run, etc)</span>
<span class="number">  7</span>  <span class="k1">char</span>  dir<span class="k2">[</span><span class="n">32</span><span class="k2">]</span><span class="k2">;</span>   <span class="c">// Direction (north, south, etc)</span>
<span class="number">  8</span>  <span class="k1">int</span>    cycle<span class="k2">;</span>    <span class="c">// Frame number</span>
<span class="number">  9</span>  <span class="k1">int</span>    x<span class="k2">;</span>      <span class="c">// Starting X of frame in bitmap</span>
<span class="number"> 10</span>  <span class="k1">int</span>    y<span class="k2">;</span>      <span class="c">// duh</span>
<span class="number"> 11</span>  <span class="k1">int</span>    h<span class="k2">;</span>      <span class="c">// Width on bitmap</span>
<span class="number"> 12</span>  <span class="k1">int</span>    w<span class="k2">;</span>      <span class="c">// yeah</span>
<span class="number"> 13</span><span class="k2">}</span> ANNE_SPRITE_FRAME<span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span><span class="k1">typedef</span> <span class="k1">struct</span>
<span class="number"> 16</span><span class="k2">{</span>
<span class="number"> 17</span>  GList <span class="k3">*</span>frame<span class="k2">;</span>
<span class="number"> 18</span><span class="k2">}</span> ANNE_SPRITE_ANIMATIONS<span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span><span class="k1">typedef</span> <span class="k1">struct</span>
<span class="number"> 21</span><span class="k2">{</span>
<span class="number"> 22</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bitmap<span class="k2">;</span>
<span class="number"> 23</span>  <span class="k1">char</span> name<span class="k2">[</span><span class="n">255</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 24</span>  ANNE_SPRITE_ANIMATIONS anim<span class="k2">;</span>
<span class="number"> 25</span>  ANNE_SPRITE_FRAME current<span class="k2">;</span>
<span class="number"> 26</span><span class="k2">}</span> ANNE_SPRITE<span class="k2">;</span>
</div></div><p>

As you can see, each frame has a direction, state, and animation index, and each state (walk, stand, run, etc) can have an indeterminate number of frames. I have several functions for working with these - to load a sprite:</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">// Loads a sprite from the filesystem and into memory, and initializes a starting</span>
<span class="number">   2</span><span class="c">// frame.</span>
<span class="number">   3</span>ANNE_SPRITE anne_sprite_load<span class="k2">(</span><span class="k1">char</span> sprite_name<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">   4</span>  ANNE_SPRITE        <span class="k3">*</span>sprite <span class="k3">=</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k3">*</span>sprite<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   5</span>  ANNE_SPRITE_ANIMATIONS  <span class="k3">*</span>anim <span class="k3">=</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k3">*</span>anim<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   6</span>  
<span class="number">   7</span>  anim-&gt;frame <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   8</span>  
<span class="number">   9</span>  <span class="k1">int</span> k <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  10</span>  
<span class="number">  11</span>  <span class="k1">char</span> def_file_name<span class="k2">[</span><span class="n">255</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  12</span>  <span class="k1">char</span> image_file_name<span class="k2">[</span><span class="n">255</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  13</span>  <span class="k1">char</span> current_anim_state<span class="k2">[</span><span class="n">64</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  14</span>  <span class="k1">char</span> current_anim_frame<span class="k2">[</span><span class="n">128</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  15</span>  
<span class="number">  16</span>  <span class="k1">char</span> state<span class="k2">[</span><span class="n">32</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  17</span>  <span class="k1">char</span> dir<span class="k2">[</span><span class="n">16</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  18</span>
<span class="number">  19</span>  <span class="k1">int</span> cycle <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  20</span>  <span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  21</span>  <span class="k1">int</span> y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  22</span>  <span class="k1">int</span> w <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  23</span>  <span class="k1">int</span> h <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  24</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>  
<span class="number">  26</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>def_file_name, <span class="s">"data/sprites/%s.spr"</span>, sprite_name<span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>image_file_name, <span class="s">"data/sprites/%s.png"</span>, sprite_name<span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>sprite-&gt;name, <span class="s">"%s"</span>, sprite_name<span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>sprite-&gt;current.state, <span class="s">"%s"</span>, sprite_states<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>sprite-&gt;current.dir, <span class="s">"%s"</span>, sprite_directions<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  31</span>  
<span class="number">  32</span>  <span class="c">// for convenience we use the config reader to parse the sprite definition file</span>
<span class="number">  33</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_CONFIG"><span class="a">ALLEGRO_CONFIG</span></a><span class="k3">*</span> sprite_definition <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_config_file"><span class="a">al_load_config_file</span></a><span class="k2">(</span>def_file_name<span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span>
<span class="number">  35</span>
<span class="number">  36</span>
<span class="number">  37</span>  <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="n">1</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  38</span>    
<span class="number">  39</span>    <span class="k1">if</span> <span class="k2">(</span>sprite_states<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span> <span class="k1">break</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number">  40</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>current_anim_state, <span class="s">"%s"</span>, sprite_states<span class="k2">[</span>i<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>    
<span class="number">  42</span>    <span class="p">#ifdef DEBUG</span>
<span class="number">  43</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"i | %s\n"</span>, sprite_states<span class="k2">[</span>i<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>    <span class="p">#endif</span>
<span class="number">  45</span>    
<span class="number">  46</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="n">1</span><span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  47</span>      <span class="c">// The center loop simply iterates through the directions with the</span>
<span class="number">  48</span>      <span class="c">// innermost loop.</span>
<span class="number">  49</span>      <span class="k1">if</span> <span class="k2">(</span>sprite_directions<span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span> <span class="k1">break</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number">  50</span>      <span class="k1">for</span> <span class="k2">(</span>k <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> <span class="n">1</span><span class="k2">;</span> k<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  51</span>        <span class="c">// In the innermost loop, we're stepping through a single state/direction</span>
<span class="number">  52</span>        <span class="c">// pair and extracting the bitmap coordinates and dimensions and feeding them</span>
<span class="number">  53</span>        <span class="c">// into a struct which we store in the animation.</span>
<span class="number">  54</span>        <span class="c">//</span>
<span class="number">  55</span>        <span class="c">// Let's get the current animation frame title from our lookups...</span>
<span class="number">  56</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>current_anim_frame, <span class="s">"%s_%s_%i"</span>, sprite_states<span class="k2">[</span>i<span class="k2">]</span>, sprite_directions<span class="k2">[</span>j<span class="k2">]</span>, k<span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>        
<span class="number">  58</span>        <span class="c">// If it's missing any values, we can't render it properly. In this case, we break</span>
<span class="number">  59</span>        <span class="c">// the current loop because chances are we've already read in all of this animation's</span>
<span class="number">  60</span>        <span class="c">// frames.</span>
<span class="number">  61</span>        <span class="k1">if</span> <span class="k2">(</span>  NULL <span class="k3">=</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_config_value"><span class="a">al_get_config_value</span></a><span class="k2">(</span>sprite_definition, current_anim_frame, <span class="s">"x"</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span>
<span class="number">  62</span>            NULL <span class="k3">=</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_config_value"><span class="a">al_get_config_value</span></a><span class="k2">(</span>sprite_definition, current_anim_frame, <span class="s">"y"</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span>
<span class="number">  63</span>            NULL <span class="k3">=</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_config_value"><span class="a">al_get_config_value</span></a><span class="k2">(</span>sprite_definition, current_anim_frame, <span class="s">"w"</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span>
<span class="number">  64</span>            NULL <span class="k3">=</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_config_value"><span class="a">al_get_config_value</span></a><span class="k2">(</span>sprite_definition, current_anim_frame, <span class="s">"h"</span><span class="k2">)</span>
<span class="number">  65</span>        <span class="k2">)</span> <span class="k2">{</span>  <span class="k1">break</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number">  66</span>        
<span class="number">  67</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>state, <span class="s">"%s"</span>, sprite_states<span class="k2">[</span>i<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>dir, <span class="s">"%s"</span>, sprite_directions<span class="k2">[</span>j<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>        x <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_54.html" target="_blank">atoi</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_config_value"><span class="a">al_get_config_value</span></a><span class="k2">(</span>sprite_definition, current_anim_frame, <span class="s">"x"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  70</span>        y <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_54.html" target="_blank">atoi</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_config_value"><span class="a">al_get_config_value</span></a><span class="k2">(</span>sprite_definition, current_anim_frame, <span class="s">"y"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>        w <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_54.html" target="_blank">atoi</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_config_value"><span class="a">al_get_config_value</span></a><span class="k2">(</span>sprite_definition, current_anim_frame, <span class="s">"w"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>        h <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_54.html" target="_blank">atoi</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_config_value"><span class="a">al_get_config_value</span></a><span class="k2">(</span>sprite_definition, current_anim_frame, <span class="s">"h"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>        
<span class="number">  74</span>        ANNE_SPRITE_FRAME thisFrame<span class="k2">;</span>
<span class="number">  75</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>thisFrame.state, <span class="s">"%s"</span>, sprite_states<span class="k2">[</span>i<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>thisFrame.dir, <span class="s">"%s"</span>, dir<span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>        thisFrame.x <span class="k3">=</span> x<span class="k2">;</span>
<span class="number">  78</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"&gt; x: %i | "</span>, x<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>        thisFrame.y <span class="k3">=</span> y<span class="k2">;</span>
<span class="number">  80</span>        thisFrame.w <span class="k3">=</span> w<span class="k2">;</span>
<span class="number">  81</span>        thisFrame.h <span class="k3">=</span> h<span class="k2">;</span>
<span class="number">  82</span>        thisFrame.cycle <span class="k3">=</span> k<span class="k2">;</span>
<span class="number">  83</span>        
<span class="number">  84</span>        
<span class="number">  85</span>        anim-&gt;frame <span class="k3">=</span> g_list_append<span class="k2">(</span>anim-&gt;frame, <span class="k3">&amp;</span>thisFrame<span class="k2">)</span><span class="k2">;</span> <span class="c">// Prepend would be more performant but performance is irrelevant for sprite loading :)</span>
<span class="number">  86</span>        
<span class="number">  87</span>        <span class="p">#ifdef DEBUG</span>
<span class="number">  88</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"j | state %s:%s, dir %s:%s | x %i:%i, y %i:%i, h %i:%i, w %i:%i, k %i:%i. | frame: %s\n"</span>,
<span class="number">  89</span>          <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> anim-&gt;frame-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>state,state,
<span class="number">  90</span>          <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> anim-&gt;frame-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>dir,dir,
<span class="number">  91</span>          <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> anim-&gt;frame-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>x,x,
<span class="number">  92</span>          <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> anim-&gt;frame-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>y,y,
<span class="number">  93</span>          <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> anim-&gt;frame-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>h,h,
<span class="number">  94</span>          <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> anim-&gt;frame-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>w,w,
<span class="number">  95</span>          <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> anim-&gt;frame-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>cycle,k,
<span class="number">  96</span>          current_anim_frame<span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>        <span class="p">#endif</span>
<span class="number">  98</span>      <span class="k2">}</span>
<span class="number">  99</span>    <span class="k2">}</span>
<span class="number"> 100</span>  <span class="k2">}</span>
</div></div><p>

This appears to work correctly, and the debug printout at the end would appear to indicate that all the data is being stored correctly. However, when I try to read that data out later:</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"frame | state: %s  dir: %s  cycle: %i  x: %i  y: %i  w: %i  h: %i\n"</span>,
      <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> search-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>state,
      <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> search-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>dir,
      <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> search-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>cycle,
      <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> search-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>x,
      <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> search-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>y,
      <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> search-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>w,
      <span class="k2">(</span><span class="k2">(</span>ANNE_SPRITE_FRAME <span class="k3">*</span><span class="k2">)</span> search-&gt;data<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>h
<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

I get garbage data like this:</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>frame <span class="k3">|</span> state: <span class="k2">(</span>Redacted<span class="k2">)</span>  dir: right  cycle: <span class="k3">-</span><span class="n">3446</span><span class="k3">&lt;</span>form action id<span class="k3">=</span><span class="s">"post_form"</span> name<span class="k3">=</span><span class="s">"post_form"</span> method<span class="k3">=</span><span class="s">"post"</span> onsubmit<span class="k3">=</span><span class="s">"return validate_post()​;​"</span><span class="k3">&gt;</span><span class="k3">&lt;</span>form xmlns<span class="k3">=</span><span class="s">"http://www.w3.org/1999/xhtml"</span> action<span class="k3">=</span><span class="s">""</span> id<span class="k3">=</span><span class="s">"post_form"</span> name<span class="k3">=</span><span class="s">"post_form"</span> method<span class="k3">=</span><span class="s">"post"</span> onsubmit<span class="k3">=</span><span class="s">"return validate_post();"</span><span class="k3">&gt;</span>
<span class="number">  2</span><span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"hidden"</span> name<span class="k3">=</span><span class="s">"forum_id"</span> value<span class="k3">=</span><span class="s">""</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k3">&lt;</span>table id<span class="k3">=</span><span class="s">"table-add-post-inner"</span> width<span class="k3">=</span><span class="s">"800"</span><span class="k3">&gt;</span>
<span class="number">  5</span><span class="k3">&lt;</span>tbody&gt;  
<span class="number">  6</span>    <span class="k3">&lt;</span>tr id<span class="k3">=</span><span class="s">"tr-topic"</span><span class="k3">&gt;</span>
<span class="number">  7</span>    <span class="k3">&lt;</span>td <span class="k1">class</span><span class="k3">=</span><span class="s">"label"</span><span class="k3">&gt;</span>Topic:<span class="k3">&lt;</span><span class="k3">/</span>td&gt;
<span class="number">  8</span>    <span class="k3">&lt;</span>td&gt;
<span class="number">  9</span><span class="k3">&lt;</span>input name<span class="k3">=</span><span class="s">"topic"</span> type<span class="k3">=</span><span class="s">"hidden"</span> value<span class="k3">=</span><span class="s">"Storing and reading sprite data from a linked list"</span> <span class="k3">/</span><span class="k3">&gt;</span>Storing <span class="k1">and</span> reading sprite data from a linked list    <span class="k3">&lt;</span><span class="k3">/</span>td&gt;
<span class="number"> 10</span>  <span class="k3">&lt;</span><span class="k3">/</span>tr&gt;
<span class="number"> 11</span>      <span class="k3">&lt;</span>tr id<span class="k3">=</span><span class="s">"tr-icon"</span><span class="k3">&gt;</span>
<span class="number"> 12</span>    <span class="k3">&lt;</span>td <span class="k1">class</span><span class="k3">=</span><span class="s">"label"</span><span class="k3">&gt;</span>Icon:<span class="k3">&lt;</span><span class="k3">/</span>td&gt;
<span class="number"> 13</span>    <span class="k3">&lt;</span>td&gt;
<span class="number"> 14</span>      <span class="k3">&lt;</span>div&gt;
<span class="number"> 15</span>      <span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"radio"</span> name<span class="k3">=</span><span class="s">"icon"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"checkbox"</span> tabindex<span class="k3">=</span><span class="s">"1"</span> value<span class="k3">=</span><span class="s">"default.gif"</span> checked<span class="k3">=</span><span class="s">"checked"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/forums/icons/default.gif"</span> width<span class="k3">=</span><span class="s">"16"</span> height<span class="k3">=</span><span class="s">"16"</span> alt<span class="k3">=</span><span class="s">"default"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 16</span>      <span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"radio"</span> name<span class="k3">=</span><span class="s">"icon"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"checkbox"</span> tabindex<span class="k3">=</span><span class="s">"1"</span> value<span class="k3">=</span><span class="s">"c.gif"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/forums/icons/c.gif"</span> width<span class="k3">=</span><span class="s">"16"</span> height<span class="k3">=</span><span class="s">"16"</span> alt<span class="k3">=</span><span class="s">"c"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 17</span>      <span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"radio"</span> name<span class="k3">=</span><span class="s">"icon"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"checkbox"</span> tabindex<span class="k3">=</span><span class="s">"1"</span> value<span class="k3">=</span><span class="s">"cpp.gif"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/forums/icons/cpp.gif"</span> width<span class="k3">=</span><span class="s">"16"</span> height<span class="k3">=</span><span class="s">"16"</span> alt<span class="k3">=</span><span class="s">"c++"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 18</span>      <span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"radio"</span> name<span class="k3">=</span><span class="s">"icon"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"checkbox"</span> tabindex<span class="k3">=</span><span class="s">"1"</span> value<span class="k3">=</span><span class="s">"display.gif"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/forums/icons/display.gif"</span> width<span class="k3">=</span><span class="s">"16"</span> height<span class="k3">=</span><span class="s">"16"</span> alt<span class="k3">=</span><span class="s">"display"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 19</span>      <span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"radio"</span> name<span class="k3">=</span><span class="s">"icon"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"checkbox"</span> tabindex<span class="k3">=</span><span class="s">"1"</span> value<span class="k3">=</span><span class="s">"joystick.gif"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/forums/icons/joystick.gif"</span> width<span class="k3">=</span><span class="s">"16"</span> height<span class="k3">=</span><span class="s">"16"</span> alt<span class="k3">=</span><span class="s">"joystick"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 20</span>      <span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"radio"</span> name<span class="k3">=</span><span class="s">"icon"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"checkbox"</span> tabindex<span class="k3">=</span><span class="s">"1"</span> value<span class="k3">=</span><span class="s">"mad.gif"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/forums/icons/mad.gif"</span> width<span class="k3">=</span><span class="s">"16"</span> height<span class="k3">=</span><span class="s">"16"</span> alt<span class="k3">=</span><span class="s">"mad"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 21</span>      <span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"radio"</span> name<span class="k3">=</span><span class="s">"icon"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"checkbox"</span> tabindex<span class="k3">=</span><span class="s">"1"</span> value<span class="k3">=</span><span class="s">"network.gif"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/forums/icons/network.gif"</span> width<span class="k3">=</span><span class="s">"16"</span> height<span class="k3">=</span><span class="s">"16"</span> alt<span class="k3">=</span><span class="s">"network"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 22</span>      <span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"radio"</span> name<span class="k3">=</span><span class="s">"icon"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"checkbox"</span> tabindex<span class="k3">=</span><span class="s">"1"</span> value<span class="k3">=</span><span class="s">"note.gif"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/forums/icons/note.gif"</span> width<span class="k3">=</span><span class="s">"16"</span> height<span class="k3">=</span><span class="s">"16"</span> alt<span class="k3">=</span><span class="s">"midi"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 23</span>      <span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"radio"</span> name<span class="k3">=</span><span class="s">"icon"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"checkbox"</span> tabindex<span class="k3">=</span><span class="s">"1"</span> value<span class="k3">=</span><span class="s">"question.gif"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/forums/icons/question.gif"</span> width<span class="k3">=</span><span class="s">"16"</span> height<span class="k3">=</span><span class="s">"16"</span> alt<span class="k3">=</span><span class="s">"question"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 24</span>      <span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"radio"</span> name<span class="k3">=</span><span class="s">"icon"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"checkbox"</span> tabindex<span class="k3">=</span><span class="s">"1"</span> value<span class="k3">=</span><span class="s">"smile.gif"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/forums/icons/smile.gif"</span> width<span class="k3">=</span><span class="s">"16"</span> height<span class="k3">=</span><span class="s">"16"</span> alt<span class="k3">=</span><span class="s">"smiley"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 25</span>      <span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"radio"</span> name<span class="k3">=</span><span class="s">"icon"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"checkbox"</span> tabindex<span class="k3">=</span><span class="s">"1"</span> value<span class="k3">=</span><span class="s">"speaker.gif"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/forums/icons/speaker.gif"</span> width<span class="k3">=</span><span class="s">"16"</span> height<span class="k3">=</span><span class="s">"16"</span> alt<span class="k3">=</span><span class="s">"sound"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 26</span>      <span class="k3">&lt;</span><span class="k3">/</span>div&gt;
<span class="number"> 27</span>    <span class="k3">&lt;</span><span class="k3">/</span>td&gt;
<span class="number"> 28</span>  <span class="k3">&lt;</span><span class="k3">/</span>tr&gt;
<span class="number"> 29</span>  <span class="k3">&lt;</span>tr id<span class="k3">=</span><span class="s">"tr-message"</span><span class="k3">&gt;</span>
<span class="number"> 30</span>    <span class="k3">&lt;</span>td width<span class="k3">=</span><span class="s">"100"</span> valign<span class="k3">=</span><span class="s">"top"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"label"</span><span class="k3">&gt;</span>Message:<span class="k3">&lt;</span><span class="k3">/</span>td&gt;
<span class="number"> 31</span>    <span class="k3">&lt;</span>td width<span class="k3">=</span><span class="s">"700"</span><span class="k3">&gt;</span>
<span class="number"> 32</span>
<span class="number"> 33</span><span class="k3">&lt;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_134.html" target="_blank">div</a> id<span class="k3">=</span><span class="s">"post-988957-upload-button"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"upload-button"</span> draggable<span class="k3">=</span><span class="s">"true"</span> style<span class="k3">=</span><span class="s">"position: relative; overflow: hidden;"</span><span class="k3">&gt;</span>Drop Attachments Here<span class="k3">&lt;</span>input multiple<span class="k3">=</span><span class="s">"multiple"</span> style<span class="k3">=</span><span class="s">"opacity: 0; position: absolute; top: 0; left: 0px; width: 500px; height: 32px; background: transparent; border: none;"</span> type<span class="k3">=</span><span class="s">"file"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span><span class="k3">/</span>div&gt;
<span class="number"> 34</span>
<span class="number"> 35</span><span class="k3">&lt;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_134.html" target="_blank">div</a> id<span class="k3">=</span><span class="s">"post-988957-files"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"upload-files"</span><span class="k3">&gt;</span>
<span class="number"> 36</span>
<span class="number"> 37</span>
<span class="number"> 38</span><span class="k3">&lt;</span><span class="k3">/</span>div&gt;
<span class="number"> 39</span>
<span class="number"> 40</span><span class="k3">&lt;</span>input id<span class="k3">=</span><span class="s">"btnPost"</span> name<span class="k3">=</span><span class="s">"submit_button"</span> tabindex<span class="k3">=</span><span class="s">"5"</span> type<span class="k3">=</span><span class="s">"submit"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"button"</span> value<span class="k3">=</span><span class="s">"Update Post"</span> <span class="k3">/</span><span class="k3">&gt;</span>
<span class="number"> 41</span>    
<span class="number"> 42</span><span class="k3">&lt;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_134.html" target="_blank">div</a> <span class="k1">class</span><span class="k3">=</span><span class="s">"mockup-box2"</span><span class="k3">&gt;</span><span class="k3">&lt;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_134.html" target="_blank">div</a> <span class="k1">class</span><span class="k3">=</span><span class="s">"toolbar"</span><span class="k3">&gt;</span><span class="k3">&lt;</span>span <span class="k1">class</span><span class="k3">=</span><span class="s">"button"</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/theme/default/icon/preview.png"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>span&gt; Preview<span class="k3">&lt;</span><span class="k3">/</span>span&gt;<span class="k3">&lt;</span><span class="k3">/</span>span&gt;<span class="k3">&lt;</span>span <span class="k1">class</span><span class="k3">=</span><span class="s">"button"</span><span class="k3">&gt;</span><span class="k3">&lt;</span>img src<span class="k3">=</span><span class="s">"/theme/default/icon/help.png"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>span&gt; Formatting Help<span class="k3">&lt;</span><span class="k3">/</span>span&gt;<span class="k3">&lt;</span><span class="k3">/</span>span&gt;<span class="k3">&lt;</span><span class="k3">/</span>div&gt;<span class="k3">&lt;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_134.html" target="_blank">div</a> <span class="k1">class</span><span class="k3">=</span><span class="s">"container"</span><span class="k3">&gt;</span><span class="k3">&lt;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_134.html" target="_blank">div</a> <span class="k1">class</span><span class="k3">=</span><span class="s">"compose"</span> style<span class="k3">=</span><span class="s">"visibility: visible;"</span><span class="k3">&gt;</span><span class="k3">&lt;</span>textarea id<span class="k3">=</span><span class="s">"mub-body"</span> <span class="k1">class</span><span class="k3">=</span><span class="s">"mockup-box2"</span> name<span class="k3">=</span><span class="s">"body"</span> tabindex<span class="k3">=</span><span class="s">"2"</span> rows<span class="k3">=</span><span class="s">"20"</span> cols<span class="k3">=</span><span class="s">"50"</span> style<span class="k3">=</span><span class="s">"height: 348px;"</span><span class="k3">&gt;</span><span class="k3">&lt;</span><span class="k3">/</span>textarea&gt;<span class="k3">&lt;</span><span class="k3">/</span>div&gt;<span class="k3">&lt;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_134.html" target="_blank">div</a> <span class="k1">class</span><span class="k3">=</span><span class="s">"preview"</span> style<span class="k3">=</span><span class="s">"visibility: hidden; display: block;"</span><span class="k3">&gt;</span><span class="k3">&lt;</span><span class="k3">/</span>div&gt;<span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"hidden"</span> name<span class="k3">=</span><span class="s">"recovery_token"</span> value<span class="k3">=</span><span class="s">"post-988957"</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span>input type<span class="k3">=</span><span class="s">"hidden"</span> name<span class="k3">=</span><span class="s">"attachments"</span> value<span class="k3">=</span><span class="s">""</span> <span class="k3">/</span><span class="k3">&gt;</span><span class="k3">&lt;</span><span class="k3">/</span>div&gt;<span class="k3">&lt;</span><span class="k3">/</span>div&gt;<span class="k3">&lt;</span><span class="k3">/</span>td&gt;<span class="k3">&lt;</span><span class="k3">/</span>tr&gt;<span class="k3">&lt;</span><span class="k3">/</span>tbody&gt;<span class="k3">&lt;</span><span class="k3">/</span>table&gt;<span class="k3">&lt;</span><span class="k3">/</span>form&gt;07570  x: <span class="n">0</span>  y: <span class="k3">-</span><span class="n">532077906</span>  w: <span class="k3">-</span><span class="n">1434671328</span>  h: <span class="n">32604</span>
<span class="number"> 43</span>frame <span class="k3">|</span> state: <span class="k2">(</span>Redacted<span class="k2">)</span>  dir: right  cycle: <span class="k3">-</span><span class="n">344607570</span>  x: <span class="n">0</span>  y: <span class="k3">-</span><span class="n">532077906</span>  w: <span class="k3">-</span><span class="n">1434671328</span>  h: <span class="n">32604</span>
<span class="number"> 44</span>frame <span class="k3">|</span> state: <span class="k2">(</span>Redacted<span class="k2">)</span>  dir: right  cycle: <span class="k3">-</span><span class="n">344607570</span>  x: <span class="n">0</span>  y: <span class="k3">-</span><span class="n">532077906</span>  w: <span class="k3">-</span><span class="n">1434671328</span>  h: <span class="n">32604</span>
</div></div><p>

My sanity check printf confirms that there are 17 frames in the frameset, as I expected, but I&#39;ve been trying to confirm whether the junk output is due to a mistake saving the data or a mistake <i>reading</i> it since last night. If anyone could take a look, I&#39;d really appreciate it. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>I would like to note that I&#39;m aware of hashmaps, and in particular I&#39;m considering rewriting in order to take advantage of Sparsehash. There are a couple reasons why I&#39;m putting that off.</p><p>Most importantly, I&#39;m concerned about adding more code I don&#39;t understand, to replace a problem I&#39;ve failed to diagnose. The flexibility of a linked list is also attractive and given the relatively small sets involved the performance penalty of iterating through them should be minimal.</p><p><b>Edit again:</b> It appears I&#39;m an idiot who allocated the variables on the stack.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Winfield)</author>
		<pubDate>Mon, 19 Aug 2013 01:48:03 +0000</pubDate>
	</item>
</rss>
