From 2c446018db31e7214128521fc19af2a3bcea287a Mon Sep 17 00:00:00 2001 From: karri Date: Tue, 6 Nov 2012 06:33:17 +0000 Subject: [PATCH] Add quadrant optimisation git-svn-id: svn://svn.cc65.org/cc65/trunk@5918 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/sp65/lynxsprite.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/sp65/lynxsprite.c b/src/sp65/lynxsprite.c index d1dff1284..6fdc9fc89 100644 --- a/src/sp65/lynxsprite.c +++ b/src/sp65/lynxsprite.c @@ -222,21 +222,7 @@ StrBuf* GenLynxSprite (const Bitmap* B, const Collection* A) * - Up left * - Down left * - * The data starts with a byte count. It tells the number of bytes on this - * line + 1. - * Special case is a count of 1. It will change to next quadrant. - * Other special case is 0. It will end the sprite. - * - * Ordinary data packet. These are bits in a stream. - * 1=literal 0=packed - * 4 bit count (+1) - * for literal you put "count" values - * for packed you repeat the value "count" times - * Never use packed mode for one pixel - * If the last bit on a line is 1 you need to add a byte of zeroes - * A sequence 00000 ends a scan line - * - * All data is high nybble first + * The sprite will end with a byte 0. */ { enum Mode M; @@ -342,6 +328,16 @@ StrBuf* GenLynxSprite (const Bitmap* B, const Collection* A) encodeSprite(D, M, ColorBits, ColorMask, LineBuffer, i, LastOpaquePixel); } + if (OX == 0) { + /* Special case only two quadrants */ + + /* Mark end of sprite */ + SB_AppendChar (D, 0); + + /* Return the converted bitmap */ + return D; + } + /* Next quadrant */ SB_AppendChar (D, 1);