<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>draw_sprite failure</title>
		<link>http://www.allegro.cc/forums/view/558393</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 09 Jan 2006 06:30:29 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>For the same image, if I draw_sprite, stretch_sprite, masked_blit or blit a bitmap onto the drawing buffer (whether it is a memory or a video or system bitmap) it is fine. However, if the image is a sub-bitmap of a system or video bitmap it doesn&#39;t show the correct image. This is literally my code, after each loop &#39;graphic&#39; points to the next graphic in the list.</p><p>blit(graphic,Buffer,0,0,270,270,w,h);<br />stretch_sprite(Buffer, graphic, 100,240,w*2,h*2);<br />draw_sprite(Buffer, graphic,570,270);<br />masked_blit(graphic,Buffer,0,0,670,270,w,h);</p><p>As mentioned above, draw_sprite() fails if it is a sub-bitmap of a video or system, but works fine for any other type.</p><p>What seems to be happening is every time it is called, stretch_sprite/blit/masked is showing the correct bitmap but draw_sprite is showing the one after next image (or a completely black image for one graphic and if I change graphic it is completely white!). This is when y=0 on the master image, if y is not 0 then it seems to double it&#39;s start position.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Mon, 09 Jan 2006 06:16:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Can you post the minimun code, and the bitmaps you use, to reproduce this?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Mon, 09 Jan 2006 06:25:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ll have to redo things as it&#39;s all part of a large bit of code to create sub-bitmaps, etc, so it will be tomorrow the earliest. I&#39;ve just editted my post to say GFX_HW_VRAM_BLIT_MASKED is set ok, btw.</p><p>Looking at the source code, draw_sprite is calling masked_blit with a bit of coding first to get the offsets. As a side issue, I guess this means masked_blit is faster than draw_sprite?</p><p>Anyway, I&#39;m off to bed now, but there must be something wrong with this bit of code within draw_sprite when the video/system bitmap is a sub-bitmap? If it helps the images in my bitmap are on the same y-position just are one after the other in the x, as attached bitmap.</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">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/is_video_bitmap" target="_blank"><span class="a">is_video_bitmap</span></a><span class="k2">(</span>sprite<span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <a href="http://www.allegro.cc/manual/is_system_bitmap" target="_blank"><span class="a">is_system_bitmap</span></a><span class="k2">(</span>sprite<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">2</td><td>      sx <span class="k3">=</span> sprite-&gt;x_ofs<span class="k2">;</span></td></tr><tr><td class="number">3</td><td>      sy <span class="k3">=</span> sprite-&gt;y_ofs<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>      w <span class="k3">=</span> sprite-&gt;w<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>      h <span class="k3">=</span> sprite-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td>      <span class="k1">if</span> <span class="k2">(</span>bmp-&gt;clip<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>   <span class="k1">if</span> <span class="k2">(</span>x <span class="k3">&lt;</span> bmp-&gt;cl<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>      sx <span class="k3">+</span><span class="k3">=</span> bmp-&gt;cl <span class="k3">-</span> x<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>      w <span class="k3">-</span><span class="k3">=</span> bmp-&gt;cl <span class="k3">-</span> x<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>      x <span class="k3">=</span> bmp-&gt;cl<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>   <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">if</span> <span class="k2">(</span>y <span class="k3">&lt;</span> bmp-&gt;ct<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>      sy <span class="k3">+</span><span class="k3">=</span> bmp-&gt;ct <span class="k3">-</span> y<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>      h <span class="k3">-</span><span class="k3">=</span> bmp-&gt;ct <span class="k3">-</span> y<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>      y <span class="k3">=</span> bmp-&gt;ct<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td>   <span class="k1">if</span> <span class="k2">(</span>x <span class="k3">+</span> w <span class="k3">&gt;</span> bmp-&gt;cr<span class="k2">)</span></td></tr><tr><td class="number">21</td><td>      w <span class="k3">=</span> bmp-&gt;cr <span class="k3">-</span> x<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>   <span class="k1">if</span> <span class="k2">(</span>w <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">24</td><td>      <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>   <span class="k1">if</span> <span class="k2">(</span>y <span class="k3">+</span> h <span class="k3">&gt;</span> bmp-&gt;cb<span class="k2">)</span></td></tr><tr><td class="number">27</td><td>      h <span class="k3">=</span> bmp-&gt;cb <span class="k3">-</span> y<span class="k2">;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>   <span class="k1">if</span> <span class="k2">(</span>h <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">30</td><td>      <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>      <span class="k2">}</span></td></tr></tbody></table></div></div><p>
After this it calls masked_blit.</p><p>[edit]<br />If you look at my attached image, when I show the first image (the alien) it jumps by two, if I show my second image (fuel) it actually shows the wavy black line below it!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Mon, 09 Jan 2006 06:30:29 +0000</pubDate>
	</item>
</rss>
