Cybergrafix supports some very fine functions to select a screenmode, for example BestCModeIDTagList, which gets the best screenmode for a specified tag list of screen attributes.

For writing pixels, reading Pixels and blitting, there are the functions FillPixelArray, MovePixelArray, ReadPixelArray, ScalePixelArray, SwapPixelArray, WritePixelArray and WriteRGBPixel.

For double buffering you use standard Double Buffering functions like the functions around AllocScreenBuffer.

Cybergrafix supports a function to get some information about the (modified) Bitmap structure, but (sadly) you do not get the address of the video memory. So you can't write directly to the video memory.