CopySpriteNBit
From WikiPrizm
Jump to navigationJump to searchSynopsis
Copy an N-bit (for N=8, 2, or 1) sprite/image to the VRAM buffer.
Definition
#include <fxcg/display.h> void CopySpriteNbit(const unsigned char* data, int x, int y, int width, int height, color_t* palette, unsigned int bitwidth) { color_t* VRAM = (color_t*) GetVRAMAddress(); VRAM += (LCD_WIDTH_PX*y + x); int offset = 0; unsigned char buf; for(int j=y; j<y+height; j++) { int availbits = 0; for(int i=x; i<x+width; i++) { if (!availbits) { buf = data[offset++]; availbits = 8; } color_t this = ((color_t)buf>>(8-bitwidth)); *VRAM = palette[(color_t)this]; VRAM++; buf<<=bitwidth; availbits-=bitwidth; } VRAM += (LCD_WIDTH_PX-width); } }
Inputs
const unsigned char* data:
- int x: X-coordinate of top-left of sprite
- int y: Y-coordinate of top-left of sprite
- int width: Width of sprite, in pixels
- int height: Height of sprite, in pixels
- color_t* palette: A palette, returned from SourceCoder
- unsigned int bitwidth: The bit-width. This is designed for 8-, 2-, and 1-bit images, but it would also work with 4-bit.
Outputs
Sprite drawn to VRAM
Comments
SourceCoder can be used to convert .png, .bmp, and .gif images to arrays that you can use with this routine.