pbk.c

来自「redboy for gba 是BPNS为GBA编写的一个小软件。软件的邹形是B」· C语言 代码 · 共 72 行

C
72
字号
#include <csagb.h>
#include <string.h>
#include <rb_string.h>
#include <rb_stdio.h>
#define TBAS 0x8100000
extern void cbmp(u32 loc,u8 x,u8 y);
typedef struct
{
	char ftype[4];//"PBK"
	u32 pcnt;//图片个数
	u32 size;//文件大小
	u32 marsk;//密码
	u32 re;//保留区
}pbk_head;

typedef struct
{
	u32 loc;//图片地址
	u32 text;//文本地址(没有则为0)
	u32 mus;//音乐地地(没有则为0)
} pbk_item;

void pbk(u32 loc)
{
   int sel=0;
   int done=1;
   int start=0;
   pbk_head head;
   pbk_item item;
   get_data(&head,(void *)loc,sizeof(pbk_head));
   str_up(head.ftype);
   if (strcmp(head.ftype,"PBK")!=0)
   {
      arlt("系统提示:","您打开的不是PBK文件或者文件已经损坏.");
      return;
   }
   while(1)
   {
      if (start) {CS_ReadKey();start=0;}
      else readkey();
      if (CS_IsKeyDown(KEY_UP) && sel)
      {
         sel--;
         done=1;
      }
      else if(CS_IsKeyDown(KEY_DOWN) && sel+1<head.pcnt)
      {
         sel++;
         done=1;
      }
      else if(CS_IsKeyDown(KEY_R)) done=2;
      else if(CS_IsKeyDown(KEY_L)) done=1;
      else if(CS_IsKeyDown(KEY_B)) return;
      if (done==2)
      {
         done=0;
         if (item.text)
         {
            r_box(1,70,238,158,0,0);
            Q_box(2,71,237,157,RGB(30,30,30));
            box_text(4,73,235,157,0,(char *)(loc+item.text));
         }
      }
      if (done)
      {
         done=0;
         get_data(&item,(void *)(loc+sizeof(pbk_head)+sel*sizeof(pbk_item)),sizeof(pbk_item));
         cbmp(loc+item.loc,255,255);
      }
   }
}

⌨️ 快捷键说明

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