📄 fs9660.h
字号:
#ifndef __FS9660_H
#define __FS9660_H
#define FILE_SYS_DEBUG
#define DIR_REC_LEN sizeof(DIR_REC) //20
//#define ISO9660_DIR_OFFSET (0x88000000 + (MP3_EVBYA_DEF-20)*1024)
//#define ISO9660_FILE_OFFSET (0x88000000 + (MP3_EVBYA_DEF-10)*1024)
#if CONFIG==CONFIG_COMBO_VCD
//#define ISO9660_DIR_OFFSET (0x88000000 + (310-20)*1024)
//#define ISO9660_FILE_OFFSET (0x88000000 + (310-15)*1024)
#define ISO9660_DIR_OFFSET (0x88000000 + (MP3_DIR_START*1024))//jhuang 2003/3/9
#define ISO9660_FILE_OFFSET (0x88000000 + (MP3_FILE_START *1024))//jhuang 2003/3/9
#else
#ifdef SUPPORT_CD_MOVE
#define ISO9660_DIR_OFFSET (0x88000000 + (MP3_DIR_START*1024))
#define ISO9660_FILE_OFFSET (0x88000000 + (MP3_FILE_START*1024))
#else
#define ISO9660_DIR_OFFSET (0x88000000 + (MP3_DIR_START*1024))
#define ISO9660_FILE_OFFSET (0x88000000 + (MP3_FILE_START*1024))
#endif /* SUPPORT_CD_MOVE */
#endif
#define iso9660_dir ((DIR_REC *)ISO9660_DIR_OFFSET)
#define iso9660_file ((FILE_REC *)ISO9660_FILE_OFFSET)
#ifdef SUPPORT_UDF
#define GRAPH_UDF_VAT (2033*1024)//(1953*1024) // 20020222 Matt Wang added for UDF VAT
//#define GRAPH_ISO9660_FILE ((358-26)*1024) // 20020809 Matt Wang added for fix file number bug
#define UDF_VAT_OFFSET (0x88000000 + GRAPH_UDF_VAT) // 20020222 Matt Wang added
#endif // SUPPORT_UDF
#define SHADOW_WID 2
#define LIGHT_WID 2
//background color
#define BKG_Y 0x15
#define BKG_CRCB 0x71a3
//black color
#define BLACK_Y 0x20
#define BLACK_CRCB 0x8080
//white color
#define WHITE_Y 0xeb
#define WHITE_CRCB 0x8080
//red color
#define RED_Y 0x23
#define RED_CRCB 0xd040
//yellow color
#define YELLOW_Y 0xa2
#define YELLOW_CRCB 0x8e2c
//light yellow color
#define LIGHTYELLOW_Y 0xd0
#define LIGHTYELLOW_CRCB 0x9050
// font color
#define FS_FONTCOLOR_FILE_Y1 0xa2
#define FS_FONTCOLOR_FILE_CrCb1 0x8e2c
#define FS_FONTCOLOR_FILE_Y2 0xa2
#define FS_FONTCOLOR_FILE_CrCb2 0x8e2c
// region definition
#define X1 160
#ifdef SUPPORT_ID3
#define Y1 50//80
#define FS_DIRLIST_YSTART (Y1+20)//100 //dir string start-y
#else
#define Y1 80
#define FS_DIRLIST_YSTART 100 //dir string start-y
#endif
#define Y3 252
#define FS_DIRLIST_XSTART 44 //dir string start-x
#define FS_FILELIST_YSTEP 16 //file(dir) list item height
#define FS_FILELIST_XSTART (X1+10) //file ICON start-x
#define DIRICON_X (FS_DIRLIST_XSTART-22)
#define DIRICON_Y FS_DIRLIST_YSTART
#define DIRICON_W 15
#define DIRICON_H (PER_PAGE*FS_FILELIST_YSTEP)
#define DIRITEM_X FS_DIRLIST_XSTART
#define DIRITEM_Y FS_DIRLIST_YSTART
#define DIRITEM_W X1-FS_DIRLIST_XSTART
#define DIRITEM_H PER_PAGE*FS_FILELIST_YSTEP
#define FILEICON_X (FS_FILELIST_XSTART-15)
#define FILEICON_Y FS_DIRLIST_YSTART
#define FILEICON_W 12
#define FILEICON_H 12
#define FILEITEM_X FS_FILELIST_XSTART
#define FILEITEM_Y FS_DIRLIST_YSTART
#define FILEITEM_W 140
#define FILEITEM_H PER_PAGE*FS_FILELIST_YSTEP
#define INFO_X_SFT 50 //jhuang 2002/4/23
#define INFO_X 30+INFO_X_SFT //jhuang 2002/4/23
#define INFO_Y (Y1-25)
#define INFO_W 250-INFO_X_SFT //jhuang 2002/4/23 //wyf add 2-5-30 20:44.
#define INFO_H 18
#define SLOT_X 310
#define SLOT_Y (FS_DIRLIST_YSTART-1)
#define SLOT_W 8
#define SLOT_H (PER_PAGE*FS_FILELIST_YSTEP)
#define BAR_X 311
#define BAR_Y FS_DIRLIST_YSTART
#define BAR_W 6
#define BAR_H (PER_PAGE*FS_FILELIST_YSTEP-2)
#define CONT_X1 (DIRITEM_X+10)
#define CONT_X2 (FILEITEM_X+10)
#define CONT_Y (Y1+6)
#define CONT_W 11
#define CONT_H 5
#define TIME_X (270)
#define TIME_Y (Y1-25)
#define TIME_W 60
#define TIME_H 18
#if CONFIG == CONFIG_COMBO_SVCD
#define ISO_DIR_MAX 80//150 //200
#define ISO_FILE_MAX 1250//extend mp3 file storage//1000 //1500
#else
#define ISO_DIR_MAX 150
#define ISO_FILE_MAX 800
#endif
#define ItemNum PER_PAGE // 8 YCH 00/12/07
#define HorzSpace 10
#define DIR_SIZE 32
#define MAX_DIR_CNT 64
#define bin2asc(x) ((x>9)?x+'A'-10:x+'0')
enum
{
ERROR_FILE_NOT_FOUND = -100,
ERROR_FILE_ENTRY_FULL = -101,
ERROR_FILE_ENTRY_INVALID = -102,
ERROR_FILE_PATH = -103,
ERROR_FILE_SUBPATH_TOO_LONG = -105,
ERROR_FILE_MSF_INVALID = -2,
ERROR_GENERIC = -1
};
enum
{
FS_FUNC_IDLE = 0,
FS_FUNC_MP3 = 1,
FS_FUNC_JPEG = 2,
FS_FUNC_GAME = 3,
#ifdef SUPPORT_FILE_SYSTEM_MODE
FS_FUNC_DAT =4,
#endif
};
enum
{
FS_STATE_INIT = 0,
FS_STATE_LIST = 1,
FS_STATE_MP3 = 2,
FS_STATE_JPEG = 3,
FS_STATE_GAME = 4,
};
typedef struct
{
UINT16 xStart;
UINT16 yStart;
UINT16 xSize;
UINT16 ySize;
}
BTNAREA;
enum
{
CNT_AREA_FILE = 0,
CNT_AREA_DIR = 1,
CNT_AREA_MP3BUTTON = 2,
CNT_AREA_JPEGBUTTON = 3,
CNT_AREA_GAMEBUTTON = 4,
};
enum
{
FS_AREA_BACKGROUND = 0,
FS_AREA_DIRICON = 1,
FS_AREA_DIRITEM = 2,
FS_AREA_FILEICON = 3,
FS_AREA_FILEITEM = 4,
FS_AREA_SLOT = 5,
FS_AREA_MOVEBAR = 6,
FS_AREA_PATHINFO = 7,
FS_AREA_PREVIEWJPG = 8,
FS_AREA_BUTTON = 9,
};
typedef struct
{
BYTE len_of_record;
BYTE len_of_attr;
BYTE location_le[4];
BYTE location_be[4];
BYTE length_le[4];
BYTE length_be[4];
BYTE time_stamp[7];
BYTE file_flag;
BYTE file_unit_size;
BYTE interleave_gap;
UINT16 volume_seq_le;
UINT16 volume_seq_be;
BYTE len_of_filename;
BYTE filename[31];
}
CDDirRecord;
typedef struct
{
BYTE len_of_dirid;
BYTE len_of_attr;
BYTE location_of_ext[4];
BYTE parent_dir_num[2];
BYTE dirname[31];
}
ISO_PATH_TABLE;
typedef struct
{
UINT32 loc; /* mmssff */
int size; /* in sectors */
short dir;
char name[9];
char ext[4];
}
FILE_REC;
typedef struct
{
UINT32 loc; /* mmssff */
short dir;
char name[9];
}
DIR_REC;
#ifdef SUPPORT_ID3
#define SECTOR_SIZE 2048
#ifdef SUPPORT_ID3_V10
typedef struct
{
char tag[3];
char song_title[30];
char artist[30];
char album[30];
char year[4];
char comment[30];
BYTE genre;
}ID3_TAG;
ID3_TAG id3_info;
void get_id3_v1();
void show_id3_v1();
#endif
#ifdef SUPPORT_ID3_V20
typedef struct
{
char id3[3];
BYTE main_version;
BYTE sub_version;
BYTE flag;
BYTE size[4];
}ID3_V2_HEADER; //10 bytes in total
typedef struct
{
char frame_id[4];
BYTE size[4];
BYTE flag[2];
//BYTE xxx;//padding
char content[30]; //In v2.3,the frame size is not fixed,but since the
//vcd osd has its limite,I cut them to a fixed size.
}ID3_FRAME; //30 bytes in total
void show_id3_v2(UINT16 mp3_track_num);
#endif
#ifdef SUPPORT_LYRICS
typedef struct
{
char t1;
BYTE timestamp_min[2];
char t2;
BYTE timestamp_sec[2];
char t3;
char text[56]; //the real length is not fixed,I set this for convinient
}LYRICS_TEXT;
UINT32 text_size;
UINT32 text_skip;
UINT32 lyrics_start_msf;
BYTE lyrics_represent_min,lyrics_represent_sec;
//char lyrics_text1[56];
void lyrics_init(UINT32 msf,UINT32 len);
//void get_lyrics_id();
void lyrics_get_text();
void lyrics_show_text();
#endif
#endif
#if 0
#if defined(SUPPORT_OKO_DISC)
#define MAX_MENU_NO 10
#define MAX_FILE_NAME_LEN 12
typedef struct
{
int trk_no; // how many files which a oko menu include
char filename[MAX_FILE_NAME_LEN];
} OKO_MENU_DATA;
OKO_MENU_DATA oko_menu[MAX_MENU_NO];
#endif
#endif
//#define BIGA 0
#define BIGA 0
#define NUM0 26
#define ARROW 0
#define HAND 1
#define DOT 36
#define SPACE 37
#define NEXT 38
#define PREV 39
#define QUESTION 40
#define PERCENT 41
#define LEFTB 42
#define RIGHTB 43
#define COLON 44
#define BLINE 45
#define CURV 46
/******************************************/
/* */
/* Function prototype declaration */
/******************************************/
void read_iso9660(void);
void DrawTime(UINT16,UINT16);
void check_name(char *, BYTE);
void ShowMP3Reading(BYTE);
//void DrawTrk(UINT16 trk,UINT16 tt);//reducde 11,no used
UINT8 ReadFile(int *);
void read_iso9660_init(void);
int read_iso9660_dir(void);
int read_iso9660_files(void);
int rec_dir_file(UINT32, int);
void iso9660_sort(void);
void iso9660_MSFSort(void);
void iso9660_assign_name(char *, char *, int, int, BYTE);
//int strtoint(char*);
//int strtoint(void); //Tony modified 02/05/06 prevent from warning at compiling time
//char *iso_search_str(char *, char *, int , char *);
int iso_search_str(char *, char *, int); //Tony modified 02/05/06 prevent from warning,
//unused the fourth parameter, at compiling time
void mp3_select(void);
void mp3_select_file(UINT16);
void FSGUI_Menu(void);
void mp3_dir_list(void);
void mp3_file_list(UINT16);
void calc_file_page(UINT16);
UINT32 mp3_file_msf(UINT16);
UINT32 mp3_file_length(UINT16);
///char *mp3_file_name(UINT16);//no used 2003/4/2 05:24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -