basicly you shouldn't use a bmp for smoke, but a tga. so the alpha channel should actually contain the "body" of the smoke, where the RGB channel may contain no drawings, but only contain the color you want the smoke to be painted. So this way you can set the smoke color to whatever you like. This way you would also make simplyfied shadows.
An other method that may utilize a BMP would be to use writepixelfast to edit the RGB channels and use the initial pixel brightness for the alpha channel:
rgb=readpixelfast(x,y) and $FFFFFF
a=((rgb shr 16)+((rgb and $FFFF) shr 8) + (rgb and $FF))/3
grey=$777777
argb=grey or (a shl 24)
writepixelfast x,y,argb
of course, this requires to use the alpha flag.
argb=rgb
An other method that may utilize a BMP would be to use writepixelfast to edit the RGB channels and use the initial pixel brightness for the alpha channel:
rgb=readpixelfast(x,y) and $FFFFFF
a=((rgb shr 16)+((rgb and $FFFF) shr 8) + (rgb and $FF))/3
grey=$777777
argb=grey or (a shl 24)
writepixelfast x,y,argb
of course, this requires to use the alpha flag.
argb=rgb