Version | Date | Changes |
2.00 Beta 5 | xx/08/2005 | Fixed silly bugs on pixel macros (yes, once more !).
Credits go to Sebastian and Kevin for the fixes (escape one of
the question marks that form trigraph ??!, etc.). |
| | Restructured the entire documentation, so that it
can be maintained and most of all read more easily. I
myself didn't even feel like browsing that 180K block
anymore, I guess ExtGraph users don't either. The main
documentation is following the way started by the tilemap
engine documentation - which is much smaller. |
| | updated the documentation, made the HTML code cleaner
using Firefox plugin HTML Validator. My schoolmate Yoann made
me aware a while ago that the HTML code I used and made was
poor (but at least, it uses CSS !). |
| | Fixed side clipping of GrayClipISprite8_MASK_R,
thanks to Jean-François Geyelin for the report. |
| | Added new TestCollide routines (request from TIGCC/TICT
board user "lachprog"), optimized existing ones. |
| | Added plane scaling routines. As all such routines,
they eat up a lot of CPU time, they are rather large due to
unrolled loops and/or lookup tables, they require doubling
the space allocated to planes, their effect is more or less
ugly (especially when there's text). Some games are more
playable on 89 using that technique, but others should be
adapted to the other screen size in order not to rely on
those rather slow routines. |
| | Optimized and added single sprite -> 2 plane routines.
Thanks to David Randall (Ranman) for the contribution and part
of the coding. |
| | Optimized extgraph.h for size: removed many useless
"extern" and "register" keywords, saving ~12 KB. |
| | Switched to TIGCC 0.96 and its GCC 4.x, which required
small changes in the build batchfile (which you should hardly
ever use anyway). |
| | Switched to a more general and powerful cleanup script
which uses GNU tools under an Unix shell. Requires Cygwin
or MSYS (untested) on Win32. |
| | Added a fork of the TIGCCLIB grayscale routine, which
can run the tilemap engine, and a mention of Grib. See
the root of this documentation
for more information. |
| | Added GrayClipISpriteX16_MASK_R, based on Genlib's
put_masked_big_sprite, made by Julien RF; made several other
X16 routines. |
| | Added three ClipSpriteX8 routines, based on code by
Geoffrey Anneheim (geogeo), which I significantly optimized;
it. |
| | Created GrayClipISprite16_TRAND/L_R as an example of
TRAND/L routines. The readme used to be wrong about making
TRAND/L from TRANB/W, and making TRAND/L was not so easy. |
| | On 12/08/2005, created a SVN repository for ExtGraph at
http://opensvn.csie.org/ExtGraph.
Anonymous checkout allowed, but recommended only to check if
particular bugs were fixed since the latest beta/release.
Indeed, the trunk may contain broken things or break the API
without notice (and it did multiple times in the few days
before this beta !). |
| | Fixed GrayClip(I)Sprite32_MASK_R. Thanks to Olivier
Givaudan for the report. |
| | Fixed *SpriteX8Get(_R), they used to crash the
calculator when bytewidth was < 2. Thanks to Geoffrey
Anneheim (geogeo) for the report. |
| | Fixed a long-hidden bug on FastFillRect(_R) in A_REVERSE
mode. Thanks to Olivier Givaudan for the report. |
| | Tested in unusual conditions (low bytewidths,
both dimensions odd) and eventually fixed
(Clip)SpriteX8(_R) routines. |
| | Changed several function names, only rarely-used ones. |
| | Fixed a number of simple rectangle functions. |
| | Added FastTestLine_*_R. |
| | Optimized FastLine_*_R for both size and speed. |
| | Fixed FastDrawLine(_R) in A_XOR mode and FastLine_Invert_R:
there was often a problem at the middle of the line. |
| | Added PixCollide*_R routines. |
| | Added (Gray)(Clip)FillTriangle_R and callbacks for them.
The architecture (routine + callback) is close to that of
Genlib, with good reason. The grayscale versions require
modified grayscale routines (see an item above). |
| | Added GrayFastDrawLine_R. |
2.00 Beta 4 | 25/12/2004 | removed (I)SHADOW(2) routines: they are nearly
useless thanks to Create(I)Sprite(I)Shadow and OR routines
(which require a small additional amount of space) and
they increase maintenance (more than one quarter of all
drawing modes). |
| | added Gray(Clip)S[ame]MASK routines. |
| | added a number of hints in the readme, to help
users customizing routines by themselves. |
| | added fast background save&restore routines,
with the corresponding demo (demo22): faster replacement
for Get + RPLC, i.e. another way to do without redrawing
everything all the time. This one can outperform all other
approaches under some conditions.
Thanks to the input of Julien, they are better. |
| | fixed once more pixel macros, thanks to Kevin. |
| | added missing "const" keyword to most prototypes:
at last, no more warnings about discarded qualifiers. |
| | nearly all occurences of ".data" were replaced by
".text". This suits better to the latest TIGCC Betas
(better code with -ffunction-sections -fdata-sections
--reorder-sections). No impact on compression ratio. |
| | Reduced length of all label names in most ASM
routines (unless this made the routines both unreadable
and impossible to maintain). This saved dozens of
kilobytes on extgraph.a (up to 500 bytes per function !)
and .s sources, and improved compression ratio ! |
| | ExtGraph doesn't force global imports (from the
external files added with GNU ar) anymore. This saves
~6 KB on the size of extgraph.a and won't interfere
with clients anymore. Thanks to Sebastian for the report. |
| | Julien told me about speed optimizations on TRANW
and TRANB sprite routines (found in programs by pad and
PpHd): +15% for TRANW, +>30 % for TRANB. |
| | small optimization (2 bytes, 4 clocks) on a number
of sprite routines. [A and B] is equivalent to [B and A]... |
| | small optimization on several routines: d3 or d4
can be saved to a1 instead of the stack. |
| | fixed long-hidden bugs. Most B/W Sprite32 routines
were buggy, thanks to Jesse Frey for the report. I found
other long-hidden bugs retesting the entire library. |
| | updated the tilemap engine. The API was reduced
somewhat: Julien took out with the most useless modes
to reduce maintenance. Two demos were added. However,
the tilemap engine is still incompatible with the
TIGCCLIB grayscale doublebuffering. |
| | brand-new pure ASM ttunpack routines by Samuel
Stearley. The fast version gives a huge speed increase
(now over 80 KB/sec !), interesting size decrease (while
the routine is definitely optimized for speed, with
code inlining, and we did not trade safety for speed
and size !) compared to the C routine Greg, him and
later I had optimized. The small version is 240 bytes
(more than 300 bytes smaller than the other version),
but it is slow (~<20 KB/sec). |
| | updated SpriteX8 functions, splitting them into
normal and slower versions. |
| | several new routines related to planes (Fill,
FillWithGarbage). To be fair, I want to mention that I
received suggestions and code from Dave Randall, but I
had already thought about implementing such routines,
and I made a different implementation. |
| | added GrayFastDrawHLine_R, done by Julien. |
| | probably added bugs, forgot fixes, forgot to
mention fixes... |
| | not updated the documentation much: most new
functions are not described, some prototypes in this
documentation may be wrong, etc... There are several
annoying bugs in ExtGraph, and I'm on holiday, so I'm
spending some time making a bugfix release |
| | translated and released the todo list. |
2.00 Beta 3 | 11/06/2004 | 4 distributions are now available. .tar.bz2 is
not the most powerful format, but it's OS-independent,
and significantly reduces the size of the library.
Other large TICT software distributions (mainly
TICT-Explorer, TI-Chess, FAT-Engine) will be
available in both formats too in next versions. |
| | New (I)SHADOW(2)/ISHADOW/ISHADOW2 sprite, clipped
sprite routines; not all 32 pixel-wide sprite
routines were written. |
| | demo12 and demo17 now also show the usage of SHADOW2
and ISHADOW2 functions. |
| | New Create(I)Sprite(I)Shadow routines: these
routines compute a shadowed sprite from another;
this shadowed sprite can be used with OR routines,
resulting in a huge speed improvement, since
(I)SHADOW(2) routines are rather slow. |
| | Optimized EXT_GETPIX_AN the same way as
EXT_SET/CLR/XORPIX_AN, fixed all these macros: they
used to have too wide constraints for inline ASM,
resulting into nonexistent instructions and therefore
errors while building projects. |
| | Improved macro EXT_XCHG: since the asm
exg instruction can exchange address
registers, address registers are now allowed too. |
| | Semi-preshifted sprite functions / macros are now
available (8x8 are lacking). |
| | Rewritten many BLIT_R routines to take blitmask in d3,
suppressing the inconsistency. |
| | Rewritten TestCollide... routines in ASM, added
__regparm__ versions. |
| | Bugfixed the exepack decompression function introduced
in Beta 2, thanks to maeyhem for the report. I
decreased the size of the decompression routines
a bit by turning two 4-byte branches into 2-byte
branches. |
| | Bugfixed SpriteX8 routines (bug reported by
Travis Fischer, "Fisch2"), thanks to Julien Richard-Foy
and step back to older C routines. They used to trigger
Address Errors when both height and bytewidth were odd.
The rather quick fix (due to lack of time) turns into
slightly slower routines (the larger the sprite is,
the higher the difference is). This will be improved
in next versions. |
| | Revamped the readme at the root of the distribution. |
| | Documentation update (nearly complete):
- fixed several problems (missing [END OF BOLD] at the
beginning messed up the entire documentation, added
[PARAGRAPH] and [END OF PARAGRAPH] everywhere);
- added prototypes and descriptions;
- made more compatible with that profusion of
browsers (suggestions by Kevin Kofler and Sebastian
Reichelt).
- now using free and native SciTE to edit this
documentation (I had to fix the formatting of
this changelog though).
- added tips, comparison between the different
approaches.
|
| | Changed several directory names to 8.3 format. |
2.00 Beta 2 | 28/03/2004 | Tilemap engine widely updated,
more functions and power (although currently incompatible with the "real"
TIGCCLIB doublebuffering); documentation now in English, thanks
to Malcolm Smith (TRGenius) for fixing our translation. |
| | Documentation update started, far from complete. |
| | Added a sprite function test program, see right above. |
| | Added another unpacking routine, the new one doesn't disable
interrupts (slower but doesn't mess up grayscale). |
| | demo6 now uses the full 92+/V200 screen. |
| | Fixed various bugs: thanks to Jordan Krage (jmank88), Nicolas Lalevée (hibou),
? (Vertyos) for the report. |
| | Slightly optimized many (Gray)(Clip)SpriteX functions (jackiechan), other
optimizations are on the way. |
| | Missing SpriteX8_MIRROR_HV_R written. |
| | New routines (GraySpriteX_SHADOW, transition effects, tile (aligned sprite)
routines, (Gray)(Clip)SpriteX_RPLC, non-clipped outlined circle drawing, etc.).
Various other routines are on the way (preshifted sprites, more rectangle-drawing
routines, more transition effects...). We're open to suggestions up to some
extent, too. |
2.00 Beta 1 | 19/12/2003 | Tilemap engine added (documentation currently in
French, it will be translated into English ASAP). |
| | Small changes in the documentation. |
2.00 "Beta 0" | 18/12/2003 | Massive update !
Credits for this version go to:
- Julien Richard-Foy (jackiechan): the vast majority
of sprite routines, the upcoming tilemap engine, new scaling
routines, several line routines... He's the main
contributor, of course. The majority of the work for
this version was done by him.
- Christophe Molon-Noblot (Ximoon): SpriteX8 routines.
- Olivier Armand (ExtendeD): generic line routine
supporting the three drawing modes (optimized a bit).
- Lionel Debroux: general maintaining, reorganization
of the library, tests.
- Greg Dietsche, Samuel Stearley: updated unpacking routine (safe and faster).
Current hexarray taken from SuperStart.
|
1.02 | 22/05/2002 | Stepped back to old version of decompression function, because the new one causes
random errors to be thrown. |
| | For TIGCC versions greater than 0.93 all functions are declared
with "__attribute__((__stkparm__))" in extgraph.h to work correctly with
commandline switch -mregparm |
1.01 | 08/05/2002 | Bug in exepack decompression function fixed. Thanks to MastaZog from the TIGCC Programming
Forum for the report. |
1.00 | 05/04/2002 | Address calculations in almost all routines changed for speedup (using 0x1e instead of 0xffffe).
Thanks to Francesco Orabona (bremen79@infinito.it) for this suggestion. |
| | Macros for bounding rectangle collision testing (BOUNDS_COLLIDE,BOUNDS_COLLIDE8,
BOUNDS_COLLIDE16 and BOUNDS_COLLIDE32) added |
| | Functions for Collision detection (TestCollide8() and TestCollide16()) added |
| | bug in macro EXT_PIXOFFSET (missing brackets) fixed.
Thanks to Greg Dietsche (greg@gregd.org) for the report. |
| | Demo11 added which shows how to use the collision detection functions TestCollide8() and TestCollide16() |
0.97 | 02/04/2002 | Function FastDrawVLine() added (thanks Lionel, for the original code) |
| | All functions which takes a color argument optimized by using internally the fact
that the color values are bit-flags |
| | Demo1 is built now separately for each calctype to reduce codesize |
| | 2 bugs in FastDrawHLine() fixed by Francesco Orabona (bremen79@infinito.it) |
0.95 | 25/02/2002 | FastDrawHLine: missing static keyword for local array added to gain speed and size reduction |
| | Local arrays in scaling function declared static to gain speed and size |
| | ClearGrayScreen2B - converted to ASM file (.s) |
| | FastCopyScreen - converted to ASM file (.s) |
| | Exepack decompression routine added (taken from TIGCC Tools Suite) |
| | ttunpack.h and ttarchive.h integrated into extgraph.h for ease of use |
| | Section about Exepack Decompression and TTArchives added to docs |
0.90 | 22/02/2002 | Demos modified by Lionel Debroux (lionel_debroux@yahoo.fr) |
| | Utilities: EXTGRAPH_VERSION_STR, EXTGRAPH_VERSION_PWDSTR, EXTGRAPH_VERSION_MAIN, EXTGRAPH_VERSION_SUB added |
| | Utilities: CheckHWMatch() and DESIRED_CALCTYPE added |
| | |
| | |
0.87 | 05/02/2002 | Adaptions to compile correctly with TIGCC 0.93 and beyond |
0.86 | 31/07/2001 | ClearGrayScreen2B and FastCopyScreen converted to pure ASM routines |
| | Function FastDrawHLine added (horizontal line drawing) |
| | Functions FastDrawGrayHLine/FastDrawGrayHLine2B added |
| | Misstyped -w option changed to -W in batch files |
| | Misstyped -w option changed to -W in batch files |
| | All problems reported by -W fixed |
| | Routines DrawGrayChar and DrawGrayChar2B added |
| | Warning added to docs of FastCopyScreen |
| | Grayscale variants of sprite drawing routines added |
| | Documentation of SpriteX_BLIT functions fixed |
| | Typo in macro EXT_PIXADDR fixed (thanks FlashZ for reporting) |
0.80 | 31/05/2001 | Routines FloodFill and FloodFillMF added |
| | Demo8 (floodfill demo) added |
| | Routines SpriteX8_MIRROR_H and SpriteX8_MIRROR_V added |
| | Demo9 (sprite x8 mirror demo) added |
| | ClearGrayScreen re-implemented as very fast ASM loop |
| | Routine FastCopyScreen added |
| | Demo10 (fastcopyscreen demo) added |
0.76 | 22/05/2001 | Format information of wide sprites added to X8 functions |
| | Mis-typed macro DrawGrayRect() fixed |
| | Second bug in treatment of x position in ALL scaling routines fixed |
| | ClearGrayScreen/ClearGrayScreen2B added |
| | SpriteX8_MASK and SpriteX8_BLIT fixed |
| | Usage info changed |
0.75 | 17/05/2001 | All TABs removed from the sources |
| | Grayscale support routines for doublebuffering added (DrawStr2B etc.) |
| | Problems with grayscale support routines fixed |
| | Demo6 and demo7 programs added |
| | Wide sprite routines (SpriteX8_OR/_AND/_XOR/_BLIT/_MASK/Get) added |
| | x position treatment in scaling routines fixed |
0.70 | 15/05/2001 | Fast Pixel Access Macros added |
| | FastDrawLine supports now A_NORMAL, too |
| | DrawGrayStrExt restores now previously active font |
| | Documentation of KronicDeth reformatted and incorporated |
0.51 | 07/05/2001 | Sprite scale routines added |
0.50 | 06/05/2001 | Sprite get routines added |
0.30 | 14/04/2001 | Grayscale routines added (taken from TI-Chess and slightly modified) |
0.20 | 13/04/2001 | Sprite routines added (formerly released as TSE) and library renamed to extgraph |
0.10 | 12/04/2001 | Project started (scroll routines and linedrawing routine) |