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; }
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]; }