about project alpha

*note* I'm no longer working on this library, but I still get a surprising number of emails from interested parties, so I'll leave this page in place. Send me an email if you'd like the source to it!

I am currently working on project alpha, a 2D special effects blitting library for the directx environment. The current focus is on 16 bit graphics, but 24 and 32 bit modes are planned for the near future. The library is coded almost entirely in assembly for speed (4000+ lines and counting). Several different methods for achieving most effects have been implemented, each having different speed and quality benefits.

I believe source code is intellectual property, but information shouldn't be. You will find a little bit of both in my programming notes.

new features - alpha6, 1-11-99
FAST rotation, sizing, and alpha blending- Depending on your hardware setup the scaling and rotation are nearly as fast as alpha blending alone. I am really proud of this one.

current features - alpha5, 9-3-98
A variety of alpha blending modes
Shadows and lighting effect
Color change and replacement effects
Support for dirty rectangles
Support for 16 bit 555 and 565 modes

possible upcoming features, in order of priority
pixel arrays and partical effects-almost done
texture masking-almost done
RLE image formats
custom sizing
mmx support
support for 24 and 32 bit graphics modes

Feel free to suggest, request, or comment on any feature. There are many special cases which can be highly optimized for speed-50% alpha blending for example. Special cases can be easy to code, and new ideas help everybody.

availability
I have been busy creating new modes and getting the library going. Although lots of things are working well, there are aspects which aren't robust enough for me to feel comforatable with distributing the source or a functioning library quite yet. For now you will have to be satisified with a demo using the currently available modes, and my programming notes. If you want to use this library for something other than your own personal edification, please contact me.

Alpha Demo

Project Alpha Programming Notes

currently implemented blit modes
0: BltFast
1: Asm Blit
2: BltFast + Clipping *
3: Asm Blit + Clipping *
4: BlitFast + Passed Rectangle *
5: Asm Blit + Passed Rectangle *

10: BltFast + Color Keying
11: Asm Blit + Color Keying
12: Asm Blit + Color Keying + Rectangle *

13: Asm Blit + Color Keying + ROTATE + SCALE
14: Alpha Blending + Color Keying + ROTATE + SCALE
20: Alpha Blending 50%

30: Alpha Blending + Color Keying
31: Alpha Blending + Color Keying Using LUT
32: Alpha Blending + Color Keying 4 Levels
33: Alpha Blending + Color Keying Addition No Check
34: Alpha Blending + Color Keying 2 Imuls
35: Alpha Blending + Color Keying Addition + Check
36: Alpha Blending + Color Keying 2 Imuls 2 Alpha
37: Alpha Blending 50% + Color Keying

40: Darken 50%

50: Darken 50%+ Color Keying
51: Darken Color Keying Using Imul
52: Darken Color Keying Using Shift

60: Shadow
61: Lighten No Check
62: Shadow 50%
63: Lighten Check
64: Variable Lighten Check

70: Replace Blue
71: Replace Green
72: Replace Red
73: Replace Blue Green
74: Replace Blue Red
75: Replace Red Green
76: Replace Greyscale
77: Replace Orange

*The library now supports passed rectangles and clipping for all modes. Marked modes are redundant, but remain in the library due to different coding implementation.