desk.c
来自「redboy for gba 是BPNS为GBA编写的一个小软件。软件的邹形是B」· C语言 代码 · 共 234 行
C
234 行
#include <csagb.h>
#include <rbasic.h>
#include <Qgraph.h>
#include <graph.h>
#define MSTRT 0x020020F0
extern int ico_bmp(u8 xp,u8 yp,u8 *bmes);
extern u32 find_file(char *fname,u32 loc);//查询
extern u32 get_floc(u32 fid);
extern void cbmp(u32 loc,u8 x,u8 y);
extern void load_scr(u16 *sav,u8 xp,u8 yp,u8 xsp,u8 ysp);
extern void show_text(char *tit,char *txt);
extern const char redboy_help[];
const u16 deicon[]={//默认图标
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,
1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,32767,32767,32767,32767,
32767,32767,1057,4763,4763,5820,6844,6844,9948,12060,13084,14109,16189,20349,26590,
26590,24510,20349,15165,14109,14109,11004,9948,7900,6844,5820,4763,1057,32767,32767,
32767,32767,32767,32767,1057,3739,4763,5820,6844,9948,9948,9948,14109,14109,16189,
20349,24510,26590,24510,20349,15165,14109,11004,23255,13741,7900,23255,13741,4763,
1057,32767,32767,32767,32767,32767,32767,1057,4763,4763,6844,6844,7900,9948,11004,
14109,14109,16189,20349,26590,29597,26590,20349,16189,14109,14109,11004,9948,7900,
7900,6844,4763,1057,32767,32767,32767,32767,32767,32767,1057,1057,1057,1057,1057,
1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,
1057,1057,1057,1057,1057,32767,32767,32767,32767,32767,32767,1057,23255,23255,23255,
22198,23254,22197,23254,22198,23254,22198,22198,22198,22197,21141,20084,21140,
20083,21140,20084,21140,20084,20084,20083,23255,0,32767,32767,32767,32767,32767,
32767,1057,23255,31710,30653,31710,30653,31710,30653,30653,30654,28540,29597,
29597,28539,29596,28539,29596,28540,28539,29596,27483,27483,26426,27482,31711,1057,
32767,32767,32767,32767,32767,32767,1057,23255,31711,30653,30653,31710,30653,
31710,30654,30654,29597,29597,28540,28539,29596,28539,29596,28539,29596,28539,27483,
27483,27483,26426,30653,1057,32767,32767,32767,32767,32767,32767,1057,22198,
31710,30654,31710,30653,30653,30654,30654,29597,29597,28539,29596,29596,28539,28540,
28539,28539,28540,28540,27483,27483,26425,27482,31711,1057,32767,32767,32767,
32767,32767,32767,1057,23255,30653,30653,30653,31710,30654,30654,29597,29597,28540,
29596,28539,28540,29596,28539,29596,28540,28540,27483,27483,26426,26425,27482,
30654,1057,32767,32767,32767,32767,32767,32767,1057,23254,30653,31710,30654,30654,
30654,28540,29597,29597,28539,29596,28539,29596,28539,28539,28540,28540,27483,
26426,27482,27482,27482,26425,31711,1057,32767,32767,32767,32767,32767,32767,1057,
23254,30654,30653,30653,31710,30654,29597,29597,28540,28539,29596,28539,28540,
29596,28539,29596,27483,26426,27483,26426,26425,26425,26426,30653,1057,32767,32767,
32767,32767,32767,32767,1057,23254,30653,31710,30654,30654,29597,28540,29596,
28539,29596,28539,29596,28539,28540,29596,27483,27483,27483,26425,27482,27482,
27482,26425,31711,1057,32767,32767,32767,32767,32767,32767,1057,23255,30653,30654,
30654,29597,28540,29597,28539,29596,28539,28540,28539,29596,28539,28540,27483,
27483,26426,27482,26425,26426,26425,26426,31710,1057,32767,32767,32767,32767,32767,
32767,1057,22198,31710,30654,29597,28540,29597,28539,29596,28539,29596,28539,
29596,28540,28540,26426,27483,27482,26425,27482,26426,26425,27482,26426,29597,1057,
32767,32767,32767,32767,32767,32767,1057,23255,30654,30654,29597,28540,29596,
29596,28539,29596,28539,28539,28540,28540,27483,27483,27483,26426,27482,26425,
27482,26425,26426,26426,29597,1057,32767,32767,32767,32767,32767,32767,1057,22198,
30654,29597,28540,29596,28539,29596,28539,28540,28539,29596,28540,28540,27483,26426,
27482,26425,27482,26426,26425,26425,27482,26426,29597,1057,32767,32767,32767,
32767,32767,32767,1057,23255,29597,28540,29597,28539,29596,28539,28539,29596,28539,
28540,28540,27483,27483,26426,26425,27482,26425,27482,26425,27482,26426,25369,
28540,1057,32767,32767,32767,32767,32767,32767,1057,22198,29597,28540,29596,28539,
29596,29596,28539,28539,28540,28540,26426,27483,26425,27482,27482,26425,26426,
26425,27482,26426,25369,25369,29597,1057,32767,32767,32767,32767,32767,32767,1057,
23254,28540,29596,28539,29596,28539,28540,29596,28539,29596,27483,27483,26426,
27482,26426,26425,27482,26425,26426,26426,26426,25369,25369,28540,1057,32767,32767,
32767,32767,32767,32767,1057,23254,28539,28539,29596,28539,28539,29596,28539,
28540,28540,27483,26426,27482,26425,27482,26425,26425,27482,26426,26426,25369,
25369,25369,29597,1057,32767,32767,32767,32767,32767,32767,1057,23255,29596,29596,
28540,29596,29596,28539,29596,28540,26426,27483,26426,27482,26425,26425,26426,
26426,26426,26426,25369,25369,25369,25369,28540,1057,32767,32767,32767,32767,32767,
32767,1057,25369,32767,32767,32767,32767,32767,32767,31711,31711,31711,31711,
31711,31711,31711,31711,31711,31711,29597,29597,29597,29597,29597,29597,29597,1057,
32767,32767,32767,32767,32767,32767,1057,1057,1057,1057,1057,1057,1057,1057,1057,
1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,1057,
1057,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767};
const char main_item[10][10]={
"我的文档","RBASIC", "英语学习","书签浏览","游戏娱乐",
"科学计算","记事本", "系统设置","附加功能","帮助说明"};
void sys_ico(u32 *_ico_loc)//摸索系统图标
{
int i=0;
u32 fdloc,fid;
char fd[20]="SYSTEM\0";
char icos[11][30]={
"FILES.BMP", "RBASIC.BMP", "ENGLISH.BMP", "BOOKMARK.BMP", "GAMES.BMP",
"CALCULATOR.BMP","EDITOR.BMP","SETS.BMP", "OTHER.BMP", "HELP.BMP",
"LOGO.BMP"};
for (i=0;i<11;i++) _ico_loc[i]=0;
fdloc=find_file(fd,0);
if (fdloc==0) return;
for (i=0;i<11;i++)
{
fid=find_file(icos[i],fdloc);
//if (fid==0) {arlt("AA","AA");break;}
_ico_loc[i]=get_floc(fid);
}
}
void redraw_desk()//桌面重绘
{
int i;
u32 bmps[11];
sys_ico(bmps);//获得桌面图标
if (bmps[10]) cbmp(bmps[10],255,0);//有壁纸
else DmaClear(3,RGB(7,13,20),mVRAM,240*160*2,16);//没有壁纸
for (i=0;i<5;i++)//画图标
{
if (bmps[i])
{
if (!ico_bmp(10+i*40,40,bmps[i]))
load_scr(deicon,10+i*40,40,10+31+i*40,40+31);
}
else load_scr(deicon,10+i*40,40,10+31+i*40,40+31);
if (bmps[i+5])
{
if (!ico_bmp(10+i*40,40+40,bmps[i+5]))
load_scr(deicon,10+i*40,40+40,10+31+i*40,40+40+31);
}
else load_scr(deicon,10+i*40,40+40,10+31+i*40,40+40+31);
}
DmaCopy(3,mVRAM,MSTRT,240*160*2,16);//保存屏幂到缓存
}
void cover_desk()
{
DmaCopy(3,MSTRT,mVRAM,240*160*2,16);//从缓存恢复屏幂
}
void desk()
{
u8 sel=0,old=0;
u8 done=1;
u8 xp,yp;
redraw_desk();
while(1)
{
readkey();
//if (CS_IsKeyDown(KEY_START)) SoftResetRom(0);
if (CS_IsKeyDown(KEY_UP) || CS_IsKeyDown(KEY_DOWN))
{
sel=(sel+5)%10;
done=1;
}
else if(CS_IsKeyDown(KEY_LEFT) || CS_IsKeyDown(KEY_L))
{
sel=(sel+9)%10;
done=1;
}
else if(CS_IsKeyDown(KEY_RIGHT) || CS_IsKeyDown(KEY_R))
{
sel=(sel+1)%10;
done=1;
}
else if(CS_IsKeyDown(KEY_A))
{
done=1;
old=sel;
myobj_stop();
switch (sel)
{
case 0://我的文件
dir();
redraw_desk();
break;
case 1://rbasic
Q_box(0,0,239,159,0);
rbasic();
redraw_desk();
break;
case 2://english
eng_menu();
break;
case 3://书签
list_bmark(0,0);
redraw_desk();
break;
case 4://games
game_menu();
break;
case 5://计算器
calc_menu();
break;
case 6://
cover_desk();
break;
case 7://系统设置
file_menu();
break;
case 8://其它功能
card_menu();
break;
case 9://帮助说明
show_text("REDBOY相关操作指南",redboy_help);
redraw_desk();
break;
}
myobj_restart();
}
if (done)
{
done=0;
xp=old%5;
if (old>4) yp=1;
else yp=0;
if (old!=sel) r_box(10+xp*40,40+yp*40,10+31+xp*40,40+yp*40+31,0,5);
old=sel;
xp=old%5;
if (old>4) yp=1;
else yp=0;
r_box(10+xp*40,40+yp*40,10+31+xp*40,40+yp*40+31,0,5);
r_box(10,10,120,26,0,0);
r_box(11,11,119,25,RGB(30,30,30),0);
Q_box(12,12,118,24,RGB(30,30,30));
cwrite(13,13,RGB(3,7,15),main_item[sel]);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?