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

📄

📁 JAPAN "RTOS technology that learns with TOPPERS"
💻
字号:
/****************************************************
    gba_draw_main.c
****************************************************/

#include "gba_draw.h"

#define GBA_DRAW_SCREEN_WIDTH   240
#define GBA_DRAW_SCREEN_HEIGHT  160
#define GBA_DRAW_MODE3_VRAM_ADR ((unsigned short*)0x06000000)

/*
    怓曄姺
*/
unsigned short GBA_DRAW_get_color_win2gba(
    unsigned long color )
{
    return((((color&0xFF0000)>>16)>>3)|
           ((((color&0x00FF00)>>8)>>3)<<5)|
           (((color&0x0000FF)>>3)<<10)) ;
}
/*
    揰偺昤夋
*/
void GBA_DRAW_point(unsigned short x, unsigned short y,
    unsigned short color)
{
    unsigned short* p = GBA_DRAW_MODE3_VRAM_ADR ;

    if( x <= 240 || y <= 160 ){
        p[x+GBA_DRAW_SCREEN_WIDTH*y] = color ;
    }
}

/*
    僼僅儞僩昞帵
*/
void GBA_DRAW_character( unsigned short x, unsigned short y, 
    unsigned short color, char ascii, unsigned char cover,
    unsigned short bgcolor )
{
    unsigned short i, j ;
    const unsigned short* p = moji_all[ascii-' '] ;

    /* 攚宨傪揾傝偮傇偡側傜嵟弶偵慡晹揾偭偰偟傑偆 */
    if( cover ){
        for( i = 0 ; i < GBA_DRAW_FONT_HEIGHT ; i++ ){
            for( j = 0 ; j < GBA_DRAW_FONT_WIDTH ; j++ ){
                GBA_DRAW_point( x + j, y + i, bgcolor ) ;
            }
        }
    }

    /* 暥帤傪昤夋 */
    for( i = 0 ; i < GBA_DRAW_FONT_HEIGHT ; i++ ){
        for( j = 0 ; j < GBA_DRAW_FONT_WIDTH ; j++ ){
            if( p[i*GBA_DRAW_FONT_WIDTH+j] == 0xFFFF ){
                GBA_DRAW_point( x + j, y + i, color ) ;
            }
        }
    }
}
/*
   暥帤楍昞帵
*/
void GBA_DRAW_draw_string( unsigned short x, unsigned short y,
    unsigned short color, char* string, unsigned char cover,
    unsigned short bgcolor )
{
    char* ptr ;
    unsigned short i ;
    unsigned short max_char_num ;
    
    if( string == 0 ){
        return ;
    }

    ptr = string ;

    /* 嵟戝暥帤悢 */
    max_char_num = ( GBA_DRAW_SCREEN_WIDTH - x )
                       / GBA_DRAW_FONT_WIDTH ;

    for( i = 0 ; i < max_char_num || *ptr != 0 ;i++ ){
        if( *ptr < ' ' || *ptr > '~' ){
            break ;
        }
        GBA_DRAW_character( x+i*GBA_DRAW_FONT_WIDTH, y,
            color, *ptr, cover, bgcolor ) ;
        ptr++;
    }
}

void GBA_print(char *string)
{
    static y = 0;
    GBA_DRAW_draw_string(0,y,0x7FFF,string,0,0);
    if(y >= 156){
        y = 0;
    }else{
        y+=12;
    }
}

⌨️ 快捷键说明

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