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

📄 fs9660.c

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 C
字号:
/*
*/
#include "global.h"
#include "func.h"
#include "util.h"
#include "cd.h"
#include "hwsetup.h"
#include "fs9660.h"
#include "cdfs.h"
#include "graph.h"
#include "framebuf.h"
#include "macro.h"
#include "stc.h"
#include "cdfunc.h"
#include "osd.h"
#include "memmap.h"
#include "regmap.h"
#include "user_init.h"
#include "auctrl.h"
#include "stdlib.h"
#include "iop.h"
#include "irconfig.h"
#include "vfd.h"
#include "vpp.h"
#include "game.h"

#ifdef SUPPORT_FILE_SYSTEM_MODE
#include "dsa.h"
extern  UINT16  unDriverFlag;
#endif

#ifdef SUPPORT_MP3STOP_SCREEN_SAFE    
extern void Fs9660DrvInit(void);
#endif

#ifdef COMPRESS_MODULE
extern  void LoadJpegDrv(void);
extern  void LoadMp3drv(void); 
#endif


#ifdef SUPPORT_ESP                          //zhg 2002/10/16
#define MP3_DIRECT_SELECT               //zhg 2002/09/25 16:43
#endif
//#define MONE_READ_DIR
//#define MONE_READ_FILES
//#define MONE_ERR_CMD
//#define MONE_FLOW_CTRL
//#define DEBUG_MP3

//#define MSF_PVD  0x00000210         /*.. */
//#define SHADE  2                                // ADD SHADE
//#define OFFSET_FONT_Y  3


#if VFD_DRIVER==SPL10                       //zhyf 2002/10/25
#ifdef IR_INTRO_ON
extern BYTE Select_Dir_flag;        //zhg 2002/10/2513:50
#endif
#endif

#ifdef SUPPORT_LYRICS
static BYTE buff[64];
char lyrics_text1[56];
#endif

#ifdef SUPPORT_UDF
#define  _MSF2l(mm,ss,ff)        (((mm)*60+(ss))*75+(ff)-150)
#endif

//#define iso9660_dir           ((DIR_REC *)ISO9660_DIR_OFFSET)
//#define iso9660_file          ((DIR_REC *)ISO9660_FILE_OFFSET)

const UINT16 folderFont[][12] = {
    // folder unopened
    {
     0x1f00, 0x3180,
     0x60c0, 0x7ffe,
     0x4002, 0x4002,
     0x4002, 0x4002,
     0x4002, 0x4002,
     0x4002, 0x7ffe,
     },
    // folder opened
    {
     0x1f80, 0x30c0,
     0x607e, 0x4002,
     0xffe2, 0x8022,
     0x4012, 0x4012,
     0x200a, 0x200a,
     0x1006, 0x1ffe,
     },

};


BYTE    ReadPercent = 0;
#if 0
/********************************************************************/
/*     Global variable declaration                                                          */
/********************************************************************/
//t_primary_volume_descriptor *pvd;

//move to global.h//static UINT16 Dir_entry[MAX_DIR_CNT];   /* map to real track number *///Jeff 20010805 BYTE->UINT16
static BYTE buf[64];
//extern BYTE isover256;
//extern unsigned char audio_step;
UINT32  drv_loc;
UINT32  drv_size;
#endif
/********************************************************************/
/*          EXPORT FUNCTIONS                                                                                        */
/********************************************************************/
#ifdef SUPPORT_JPG                          //Jeff 20010806
#ifdef SUPPORT_JPG_DOUBLE_BUFFER
extern int Jpg_Main(UINT32 msf, UINT32 len, int jvid);
#else
extern int Jpg_Main(UINT32 msf, UINT32 len);
#endif
#endif /*  */
extern void prog_next(void);
extern void ShowTitle(void);
extern int ReadSessionData(BYTE);
extern int load_game_drv(UINT32, int);
extern int load_game_code(UINT32, int);
extern void stop_video_engine(void);
extern void stop_audio_engine(void);
extern int cd_func_stop(void);
extern void ClearSystem(void);
extern void ircmd_3dsound(void);
extern void get_cdkit_time(BYTE);

/********************************************************************/
/*          FUNCTIONS PROTOTYPE                                                                                 */
/********************************************************************/
char   *file_ext_name(UINT16);

/*
** FUNCTION
**
** DESCRIPTION
**
*/

#ifdef SUPPORT_ESP
void esp_get_ID3(UINT16 mp3_trk_now_,UINT32 start_msf_,UINT32 end_msf_,UINT32 len_)
{
    
    
}
#endif

#if 1
void osd_flush_cache()                  /*jjding 02/20 */
{
    volatile int i;
    volatile BYTE *a = (BYTE *) (SDRAM_BASE + MEM_OSDYA_DEF * 1024);

    for(i = 0; i < 1024 * (int)(OBV_H); i++)
    {
        *a = 0x0;
        a++;
    }
}
#endif

/*
** FUNCTION
**
** DESCRIPTION
**
*/
extern void stop_video_engine(void);
extern void stop_audio_engine(void);

void read_iso9660(void)
{


#if 1
    int     Res = 0;
    //BYTE    bErrMsf = 0;

    ircmd_callback_check = NULL;//jhuang 2002/11/30 for 702 gamedisc eject->vcd ir select

    t_disp = ON;


#if CONFIG==CONFIG_COMBO_VCD
    Offset_line = 3;                            //3;  //wyf /jhuang 708
    CacheLineNs = 9;                            //MP3SECT_CACHE_LINES;//wyf/jhuang 708
#else
    Offset_line = 3;
    CacheLineNs = MP3SECT_CACHE_LINES;
#endif

#if !defined(FILE_SYS_DEBUG)
    psprintf(linebuf, "Path TAB %x\n", Gmem.gmp3.extent_dir);
    epp_write_slow(linebuf);
#endif /*  */
    //Clear CACHE Tag first
    //JJDing 2002/05/07
    {
        int     i;

        for(i = 0; i < CacheLineNs; i++)
            tag_msf[i] = -1;
    }

    #ifndef COMPRESS_MODULE
    config_framebuffer(MEM_CONFIG_MP3);
    clrFrameBuffer(FRAME_REF0);
    #endif
    
    
    //JJDing 2002/10/8 04:14PM
    //OSD display uncompletely problem.
#if CONFIG==CONFIG_COMBO_SVCD//jhuang 2003/1/3 delete
    //ABV_YS = MP3_EABYA_DEF;
    //ABV_YE = MP3_AUDYA_DEF;
    
    //ABV_YS = MP3_EABYA_START;//MP3_EABYA_DEF;
    //ABV_YE = MP3_EABYA_END;//MP3_AUDYA_DEF;
#endif

    osd_init();

#if CONFIG==CONFIG_COMBO_SVCD       // panxing, 2002-3-25, blue background
    FSGUI_FillFrameBuf(0, 0, 480, 576, BKG_Y, BKG_CRCB);
#else
    FSGUI_FillFrameBuf(0, 0, 352, 288, BKG_Y, BKG_CRCB);
#endif

    psd_st.psd_list_id = 0xffff;

    if(Gmem.gmp3.mp3readfinish || ReadFile(&Res))
    {
        if(Gmem.gmp3.iso9660_file_cnt)
        {
            Gmem.gmp3.mp3readfinish = 1;
            FSGUI_Menu();
            mp3_select();
            Gmem.gmp3.mp3readfinish = 0;
            Gmem.gmp3.mp3_kbitrate = 0;
            UISetNMNorm();
#ifdef MONE_FLOW_CTRL
            epp_write("out mp3_select \n");
#endif
        }
        else
        {
            play_state = VCD_STATE_STOP;
        }
    }
        
    //?  ClearOsdRam ();
    osd_flush_cache();
    //HexDump(SDRAM_BASE+MEM_OSDYA_DEF*1024,128);
   #ifdef POWER_KEY   //zhyf test 2-9-12 17:13 
   if(GetCmdSrc(sys_cmd) == CMD_FUNC_POWER)
    { 
      ClearOsdMsg(0);
      //cd_func_stop();
     }
   else                                      
   #endif    
    do_cd_pause();
    stop_video_engine();
    stop_audio_engine();
    //clrFrameBuffer(FRAME_REF0); //Tony 02/04/24 add//jhuang 2002/9/14 mark


#if 1                                                       //jhuang 2002/9/14 reopen
    /*******DON't Change************/
    if(Gmem.gmp3.iso9660_file_cnt == 0) //jhuang 2002/8/22 for open logo皗脅//戈

⌨️ 快捷键说明

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