📄 video_con.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 + -