X-Git-Url: https://git.defcon.no/?a=blobdiff_plain;ds=sidebyside;f=fbosd.c;h=099e02f52a458553dfc9f709c93df2e67f7ea49a;hb=HEAD;hp=c30ee9b5aa3606601ef10f6c07168f890560ca64;hpb=a2859762b7c7dfd0f9aeffec6f87e7866e6fe1b5;p=avrfbosd diff --git a/fbosd.c b/fbosd.c index c30ee9b..099e02f 100644 --- a/fbosd.c +++ b/fbosd.c @@ -2,11 +2,14 @@ #include #include #include +#include #include "video_properties.h" #include "render.h" #include "draw.h" +#include "testimage.h" + void (*line_handler)( void ); const int vres_scale = ( SCREEN_LINES / VRES -1 ); @@ -124,7 +127,7 @@ int main(void) screen_buffer = (uint8_t*) malloc( hres_bytes * VRES * sizeof(uint8_t) ); // And make sure it's cleared fill(c_BLACK); - + /* LM1881 pins are connected to: INT0 / PCINT18 / PD2 <- VSYNC INT1 / PCINT19 / PD3 <- CSYNC @@ -137,58 +140,96 @@ int main(void) // Enable interrupts globally. sei(); - // Do some static drawing :P - set_pixel(28, 8, 1); - set_pixel(92, 82, 1); + // Switch ON status LED + PORTD |= (uint8_t)(1 << PD6); + + for (;;) + { + Delay_ms(100); + draw_string( 2, 2, "!\"#$%&'()*+-./"); + draw_string( 2, 10, "01234567890"); + draw_string( 2, 18, ":;<=>?@"); + draw_string( 2, 26, "ABCDEFGHIJKLM"); + draw_string( 2, 34, "NOPQRSTUVWXYZ"); + draw_string( 2, 42, "[\\]^_`"); + draw_string( 2, 50, "ABCDEFGHIJKLM"); + draw_string( 2, 58, "NOPQRSTUVWXYZ"); + draw_string( 2, 66, "{|}~"); + + draw_char( 10, 80, 127); + draw_char( 20, 80, 128); + draw_char( 30, 80, 129); + draw_char( 40, 80, 130); - set_pixel(92, 8, 1); - set_pixel(28, 82, 1); + Delay_ms(500); + clear_screen(); - draw_line(0, 0, 128, 92, 1); - draw_line(128, 0, 0, 92, 1); + // Do some static drawing :P + set_pixel(28, 8, 1); + set_pixel(92, 82, 1); - draw_rect( 0, 1, 127, 91, 1); + set_pixel(92, 8, 1); + set_pixel(28, 82, 1); - draw_rect( 34, 21, 60, 50, 1); - _draw_rect( 24, 11, 80, 70, 1, -1); - draw_rect( 34, 21, 60, 50, 1); + draw_line(0, 0, 128, 92, c_WHITE); + draw_line(128, 0, 0, 92, c_WHITE); - fill_circle( 64,46, 45, 1 ); - fill_circle( 64,46, 40, 0 ); + draw_rect( 0, 1, 127, 91, c_WHITE); - _draw_circle( 64,46, 35, 1, -1 ); - draw_circle( 64,46, 30, 1 ); - fill_rect( 38, 25, 52, 42, 1); - fill_rect( 41, 28, 46, 36, 0); + draw_rect( 34, 21, 60, 50, c_WHITE); + _draw_rect( 24, 11, 80, 70, 1, c_NONE); + draw_rect( 34, 21, 60, 50, c_WHITE); + + fill_circle( 64,46, 45, c_WHITE ); + fill_circle( 64,46, 40, c_BLACK ); + + _draw_circle( 64,46, 35, 1, c_NONE ); + draw_circle( 64,46, 30, c_WHITE ); + fill_rect( 38, 25, 52, 42, c_WHITE); + fill_rect( 41, 28, 46, 36, c_BLACK); - for (;;) - { - // Toggle status LED - PORTD ^= (uint8_t)(1 << PD6); - for ( int j = 0; j < 92; j++ ) { - draw_line(0,0,128,j, 2); - draw_line(128,0,0,j, 2); - draw_line(0,92,128,92-j, 2); - draw_line(128,92,0,92-j, 2); + draw_line(0,0,128,j, c_INVERT); + draw_line(128,0,0,j, c_INVERT); + draw_line(0,92,128,92-j, c_INVERT); + draw_line(128,92,0,92-j, c_INVERT); Delay_ms(2); } for ( int j = 0; j < 92; j++ ) { - draw_line(0,0,128,j, 2); - draw_line(128,0,0,j, 2); - draw_line(0,92,128,92-j, 2); - draw_line(128,92,0,92-j, 2); + draw_line(0,0,128,j, c_INVERT); + draw_line(128,0,0,j, c_INVERT); + draw_line(0,92,128,92-j, c_INVERT); + draw_line(128,92,0,92-j, c_INVERT); Delay_ms(2); } Delay_ms(250); + clear_screen(); + + int8_t hp = 10; + int8_t vp = 10; + + int counter = 0; + for (counter = 0; counter < 60; counter++) + { + hp += 2; + vp += 1; + + if ( hp > 125 ) hp = 10; + if ( vp > VRES ) vp = 10; + + pgm_draw_8bpp_bitmap(hp, vp, testimage_width, testimage_height, testimage); + Delay_ms(10); + //fill_rect(hp, vp, testimage_width, testimage_height, 0); + clear_screen(); + } + clear_screen(); + } } - -