⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 video_con.c

📁 RT-Thread是发展中的下一代微内核嵌入式实时操作系统
💻 C
字号:
/* * File      : video_con.c * This file is part of RT-Thread RTOS * COPYRIGHT (C) 2006, RT-Thread Development Team * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://openlab.rt-thread.com/license/LICENSE * * Change Logs: * Date           Author       Notes * 2006-09-03     Vai      first version */#include <rtthread.h>#include <rthw.h>#include "nds.h"#include "font.h"/** * @addtogroup nds *//*@{*///	Console variables#define CONSOLE_WIDTH 32#define CONSOLE_HEIGHT 24#define TAB_SIZE 3static int row = 0;static int col = 0;static void rt_video_putc(char c);static void rt_new_row();static void lcdSwap(void) {    POWER_CR ^= POWER_SWAP_LCDS;}static voidpower_on(int on){    POWER_CR |= on;}static voidvideo_set_mode(unsigned long mode){    DISPLAY_CR = mode;}static voidvideo_set_mode_sub(unsigned long mode){    SUB_DISPLAY_CR = mode;}static voidvram_set_bank_c (int c){    VRAM_C_CR = VRAM_ENABLE | c;}static void rt_new_row() {    volatile unsigned short *map = (unsigned short *)SCREEN_BASE_BLOCK_SUB(31);    int i;    row++;    if(row >= CONSOLE_HEIGHT)     {        row--;        for(i = CONSOLE_WIDTH; i < CONSOLE_HEIGHT * CONSOLE_WIDTH; i++)             map[i - CONSOLE_WIDTH] = map[i];        for(i = 0; i < CONSOLE_WIDTH; i++)             map[i + (CONSOLE_HEIGHT-1)*CONSOLE_WIDTH] = (' ' - 32);    }}static void rt_video_putc(char c){    volatile unsigned short *map = (unsigned short *)SCREEN_BASE_BLOCK_SUB(31);    if(col >= CONSOLE_WIDTH)     {        col = 0;        rt_new_row();    }    switch(c)     {        case 10:        case 11:        case 12:        case 13:            rt_new_row();            col = 0;            break;        case 9:            col += TAB_SIZE;            break;        default:            map[col + row * CONSOLE_WIDTH] = (c - 32);            col++;            break;    }    return;}static int video_strlen(const char *s){    const char *sc;    for (sc = s; *sc != '\0'; ++sc) /* nothing */        ;    return sc - s;}void rt_console_puts(const char *str){    int len = video_strlen(str);        while (len > 0)    {        rt_video_putc(*str++);        len--;    }    return;}void rt_video_init(void){      unsigned short *tile;    int i;    power_on (POWER_ALL);    vram_set_bank_c (4);    video_set_mode_sub(MODE_0_2D | DISPLAY_BG0_ACTIVE);    SUB_BG0_CR = 128 | BG_TILE_BASE(0) | BG_MAP_BASE(31);    SUB_BG_PALETTE[0] = RGB15(0, 0, 0);    SUB_BG_PALETTE[1] = RGB15(0, 31, 0);    tile = (unsigned short *)CHAR_BASE_BLOCK_SUB(0);    for (i = 0; i < 3040; i++)    {        tile[i] = font_tile[i];    }    return;}/*@}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -