Adds draw mode
This commit is contained in:
parent
0f540211f6
commit
fbb34c1b5a
|
@ -108,6 +108,7 @@ int main(void)
|
||||||
|
|
||||||
/* USER CODE BEGIN 3 */
|
/* USER CODE BEGIN 3 */
|
||||||
ssd1306_Fill(Black);
|
ssd1306_Fill(Black);
|
||||||
|
//ssd1306_Fill(White);
|
||||||
/*
|
/*
|
||||||
int x, msg;
|
int x, msg;
|
||||||
|
|
||||||
|
|
|
@ -65,20 +65,31 @@ void ssd1306_LoadImage(void) {
|
||||||
fastlz_decompress(image, 1024, SSD1306_Buffer, 1024);
|
fastlz_decompress(image, 1024, SSD1306_Buffer, 1024);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ssd1306_DrawSprite(SpriteDef *sprite, int8_t x, int8_t y) {
|
void ssd1306_DrawSprite(SpriteDef *sprite, int x, int y, int mode) {
|
||||||
int spriteAddr = 0;
|
int spriteAddr = 0;
|
||||||
int currX, currY = 0;
|
int currX, currY = y;
|
||||||
|
|
||||||
for(int bank = y / 8; bank < sprite->height / 8; bank++) {
|
for(int bank = y / 8; bank < sprite->height / 8; bank++) {
|
||||||
int start = (bank * sprite->width) + (bank * sprite->height) + (x);
|
int start = (bank * sprite->width) + (bank * sprite->height) + (x);
|
||||||
currX = x;
|
currX = x;
|
||||||
int end = start + sprite->width;
|
int end = start + sprite->width;
|
||||||
for(int addr = start; addr < end; addr++) {
|
for(int addr = start; addr < end; addr++) {
|
||||||
|
if (currX >= 0 && currY >= 0 && currX < SSD1306_WIDTH && currY < SSD1306_HEIGHT) {
|
||||||
if (currX > 0 && currY > 0 && currX < SSD1306_WIDTH && currY < SSD1306_HEIGHT) {
|
switch(mode) {
|
||||||
|
case 0:
|
||||||
SSD1306_Buffer[addr] = sprite->buffer[spriteAddr];
|
SSD1306_Buffer[addr] = sprite->buffer[spriteAddr];
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
SSD1306_Buffer[addr] |= sprite->buffer[spriteAddr];
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
SSD1306_Buffer[addr] &= sprite->buffer[spriteAddr];
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
SSD1306_Buffer[addr] ^= sprite->buffer[spriteAddr];
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spriteAddr++;
|
spriteAddr++;
|
||||||
currX++;
|
currX++;
|
||||||
}
|
}
|
||||||
|
@ -107,7 +118,7 @@ void ssd1306_Anim(void) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssd1306_DrawSprite(sprite, x, 0);
|
ssd1306_DrawSprite(sprite, x, 0, 1);
|
||||||
|
|
||||||
anim++;
|
anim++;
|
||||||
x += 15;
|
x += 15;
|
||||||
|
|
Loading…
Reference in New Issue