Ejemplo n.º 1
0
int __start() {

    printf("-- boot complete -- \r\n");

    refresh = 0;
    old_img_addr = SRAM_BASEADDR;
    new_img_addr = SRAM_BASEADDR + 0x80000;

    clr_screen(old_img_addr);
    clr_screen(new_img_addr);

    draw_gun(0, 30);

    /* blinker */
    set_pixel(old_img_addr, 20, 10, 1);
    set_pixel(old_img_addr, 20, 11, 1);
    set_pixel(old_img_addr, 20, 12, 1);

    /* another blinker */
    set_pixel(old_img_addr, 30, 10, 1);
    set_pixel(old_img_addr, 31, 10, 1);
    set_pixel(old_img_addr, 32, 10, 1);

    /* pixel alone, will die after the first iteration */
    set_pixel(old_img_addr, 32, 30, 1);

    /* start vga */
    write_mem(VGA_BASEADDR + VGA_CFG_OFFSET, old_img_addr);

    /* program timer: 0x01000000 / (50MHz) = 0.33554432 seconds */
    write_mem(TIMER_BASEADDR + TIMER_0_TLR_OFFSET, 0x04000000);
    write_mem(TIMER_BASEADDR + TIMER_0_CSR_OFFSET, TIMER_RELOAD);
    write_mem(TIMER_BASEADDR + TIMER_0_CSR_OFFSET, TIMER_START);

    /* program gpio to input */
    write_mem(GPIO_BASEADDR + GPIO_TRI_OFFSET, GPIO_INPUT);

    while (1) {
        /* glider */
        set_pixel(old_img_addr, 11, 10, 1);
        set_pixel(old_img_addr, 12, 11, 1);
        set_pixel(old_img_addr, 10, 12, 1);
        set_pixel(old_img_addr, 11, 12, 1);
        set_pixel(old_img_addr, 12, 12, 1);

        /* another glider */
        set_pixel(old_img_addr, 51, 10, 1);
        set_pixel(old_img_addr, 50, 11, 1);
        set_pixel(old_img_addr, 52, 12, 1);
        set_pixel(old_img_addr, 51, 12, 1);
        set_pixel(old_img_addr, 50, 12, 1);

        while (1) {
            uint32_t d = read_mem(GPIO_BASEADDR + GPIO_DATA_OFFSET);
            if (TEST_BIT(d, GPIO_BTN0)) {
                break;
            }

            // put cpu in a lower consumption state while waiting for an int
            wait_for_irq();
            //cpu_relax();
        }
    }

    return 0;
}
Ejemplo n.º 2
0
void
GAME_Render()
{
	
	LCD_SetTextColor( LCD_COLOR_WHITE );
	draw_me(me1[0]);
	draw_boss(boss1[0]);
	
	LCD_SetTextColor( LCD_COLOR_RED );
	draw_bossbullet(boss_bullet[0]);
	draw_gun(boss1[0]);

	LCD_SetTextColor( LCD_COLOR_BLUE );
	draw_mybullet(my_bullet[0]);

	LTDC_LayerAlpha(LTDC_Layer1, SHOW);
	LTDC_LayerAlpha(LTDC_Layer2, HIDE);	
	LTDC_ReloadConfig(LTDC_VBReload);
	vTaskDelay( 2.5 );


	LCD_SetLayer(LCD_BACKGROUND_LAYER);
	LCD_SetTextColor( LCD_COLOR_BLACK );
	draw_me(me1[1]);
	draw_boss(boss1[1]);
	draw_gun(boss1[1]);
	draw_mybullet(my_bullet[1]);
	draw_bossbullet(boss_bullet[1]);


	LCD_SetTextColor( LCD_COLOR_WHITE );
	draw_me(me1[0]);
	draw_boss(boss1[0]);
	
	LCD_SetTextColor( LCD_COLOR_RED );
	draw_bossbullet(boss_bullet[0]);
	draw_gun(boss1[0]);

	LCD_SetTextColor( LCD_COLOR_BLUE );
	draw_mybullet(my_bullet[0]);


	LTDC_LayerAlpha(LTDC_Layer2, SHOW);			
	LTDC_LayerAlpha(LTDC_Layer1, HIDE);
	LTDC_ReloadConfig(LTDC_VBReload);
	vTaskDelay( 2.5 );

	LCD_SetLayer(LCD_FOREGROUND_LAYER);

	LCD_SetTextColor( LCD_COLOR_BLACK );

	draw_me(me1[0]);
	draw_boss(boss1[0]);
	draw_gun(boss1[0]);
	draw_mybullet(my_bullet[0]);
	draw_bossbullet(boss_bullet[0]);
	
	boss_bullet[1]=boss_bullet[0];
	my_bullet[1]=my_bullet[0];
	me1[1]=me1[0];
	boss1[1]=boss1[0];
}