Thank you very much!
Way to go, it works great! I see what has been done to make FT81x support greater resolutions now!
Super!
// Set up display list for bitmap - Cmd_SetBitmap - generate DL commands for bitmap parms
// FT81x Series Programmers Guide Section 5.65
ft_void_t FT813::SetBitmap(ft_int32_t addr, ft_int16_t fmt, ft_uint16_t width, ft_uint16_t height)
{
StartFunc(FT_CMD_SIZE*4);
SendCmd(CMD_SETBITMAP);
SendCmd(addr);
SendCmd((((ft_uint32_t)width<<16)|(fmt & 0xffff)));
SendCmd((((ft_uint32_t)0<<16)|(height & 0xffff)));
EndFunc();
}
void FT813::ShowBitmapAtAddress(ft_uint32_t addr, ft_int16_t fmt, ft_uint16_t x, ft_uint16_t y, ft_uint16_t width, ft_uint16_t height)
{
DL(BITMAP_SOURCE(addr));
SetBitmap(addr, fmt, width, height); // Stil 511 pixel limit, somehow, need to check my code
DL(VERTEX2F(x * 16, y * 16)); // Works fine
}
// Load the image into GRAM (works fine)
TFT.LoadInflateFile(0, "/fs/BACKGROUND_01.bin");
TFT.Swap(); // Swap the current display list
TFT.Flush_Co_Buffer(); // Download the command list into fifo
TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation
// Display the image above, it does display, but only a part of it
TFT.DLstart(); // start a new display command list
TFT.DL(CLEAR_COLOR_RGB(0x10, 0x10, 0x10)); // set the clear color to white
TFT.DL(CLEAR(1, 1, 1)); // clear buffers -> color buffer,stencil buffer, tag buffer
TFT.DL(COLOR_RGB(0xff, 0xff, 0xff)); // set the clear color to white
TFT.DL(BEGIN(BITMAPS));
TFT.ShowBitmapAtAddress(0, L8, 0, 0, 480, 800); // bitmap, fmt, x, y, w, h
TFT.DL(DISPLAY()); // Display the image
TFT.Swap(); // Swap the current display list
TFT.Flush_Co_Buffer(); // Download the command list into fifo
TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation
VERTEX2II is also limited to 511 pixels for position, but I now use VERTEX2F for that one.
Hope this helps others!