Picture File Format
The cybiko internal graphics memory format is very simple. It is exactly 4000 bytes. (160×100/4) It is formatted left to right, top to bottom, 4 pixels per byte, most significant bits to the left, 0=white,1=light,2=dark,3=black:
This is an exact representation of the 2bpp used by the LCD graphics display.
i.e. $E4 = pixel 0,0 = black pixel 1,0 = dark pixel 2,0 = light pixel 3,0 = white
The full screen *.pic files that are created with the SDK Converter or the CyberLoad Converter are the same format except 8 header bytes are added or 4008 bytes total.
Example code snippet that will save the screen to a file.
void SaveScreenShot(struct DisplayGraphics* gfx,char* filename) { int err; //output file struct FileOutput* pFile; //allocate output file structure pFile=(struct FileOutput*)malloc(sizeof(struct FileOutput)); //construct output file FileOutput_ctor(pFile); //open output file FileOutput_open(pFile,filename,TRUE); //write the header FileOutput_write_byte(pFile,0x02);//this is a pic file FileOutput_write_byte(pFile,0x01);//only one picture in file FileOutput_write_byte(pFile,0xA0);//width of 160 FileOutput_write_byte(pFile,0x64);//height of 100 FileOutput_write_byte(pFile,0x00);//left side FileOutput_write_byte(pFile,0x00);//top side FileOutput_write_byte(pFile,0xA0);//width FileOutput_write_byte(pFile,0x64);//height //write pixel information err = FileOutput_write(pFile,DisplayGraphics_get_buf_addr(gfx),4000) != 4000; //destroy the file struct FileOutput_dtor(pFile,FREE_MEMORY); beep( err ? BEEP_ERROR : BEEP_OK ); }