//--------------------------------------------------------------------------------------------------------------
void displayMenu(void)
{
slInitSystem(TV_320x224,NULL,1);
SetVblank();
SndIniDt snd_init;
SndPcmStartPrm pcm_start;
SndPcmChgPrm pcm_chg;
SYS_CHGUIPR(pri_tbl); /* Å âžâÃâDÂæÆÅÆxÆâ¹âÃâ¢ÃÂX */
move_pcm_adr = (Uint16 *)0x06030000; /* â°EÆ`ÆÆÆlÆâ¹â]ââų */
l_move_pcm_adr = (Uint16 *)0x06065000; /* ¶Æ`ÆÆÆlÆâ¹â]ââų */
set_imask(0);
INT_ChgMsk(INT_MSK_NULL, INT_MSK_SND); /* ÆTÆEÆâÆhÅ ââèžâÃâ¹ââ°Ã */
INT_SetScuFunc(INT_SCU_SND, PcmIntr); /* Å ââèžâÃÂËâÂâoË^ */
INT_ChgMsk(INT_MSK_SND,INT_MSK_NULL); /* ÆTÆEÆâÆhÅ ââèžâÃâ¹ââ°Ã */
CDC_CdInit(0x00,0x00,0x05,0x0f);
GFS_DIRTBL_TYPE(&dirtbl) = GFS_DIR_NAME;
GFS_DIRTBL_DIRNAME(&dirtbl) = dirname;
GFS_DIRTBL_NDIR(&dirtbl) = MAX_DIR;
GFS_Init(MAX_OPEN, lib_work, &dirtbl);
slSynch();
int fid = GFS_NameToId(SDDRV_NAME);
char toto[80];
int ii=0;
for (ii = 0; ii<12; ii++)
{
sprintf(toto,"fid=%d 1 :%s",fid,GFS_IdToName(ii));
DBG_SetCursol( 15, ii+5 );
DBG_Printf(toto);
}
GFS_Load(GFS_NameToId(SDDRV_NAME),0,(void *) SDDRV_ADDR,SDDRV_SIZE);
GFS_Load(GFS_NameToId(SDMAP_NAME),0,(void *) SDMAP_ADDR,SDMAP_SIZE);
if (GFS_Load(GFS_NameToId(SDDRV_NAME),0,(void *) SDDRV_ADDR,SDDRV_SIZE)<0)
DBG_Printf("drv not loaded");
if (GFS_Load(GFS_NameToId(SDMAP_NAME),0,(void *) SDMAP_ADDR,SDMAP_SIZE)<0)
DBG_Printf("map not loaded");
move_pcm_adr = (Uint16 *)0x6020000; /* â°EÆ`ÆÆÆlÆâ¹â]ââų */
set_imask(0);
INT_ChgMsk(INT_MSK_NULL, INT_MSK_SND); /* ÆTÆEÆâÆhÅ ââèžâÃâ¹ââ°Ã */
INT_SetScuFunc(INT_SCU_SND, PcmIntr); /* Å ââèžâÃÂËâÂâoË^ */ INT_ChgMsk(INT_MSK_SND,INT_MSK_NULL); /* ÆTÆEÆâÆhÅ ââèžâÃâ¹ââ°Ã */
SND_INI_PRG_ADR(snd_init) = (Uint16 *)SDDRV_ADDR;
SND_INI_PRG_SZ(snd_init) = (Uint16) SDDRV_SIZE;
SND_INI_ARA_ADR(snd_init) = (Uint16 *)SDMAP_ADDR;
SND_INI_ARA_SZ(snd_init) = (Uint16) SDMAP_SIZE;
SND_Init(&snd_init);
SND_ChgMap(0);
SND_Init(&snd_init);
// FNT_Print256_2bpp((volatile Uint8 *)SCL_VDP2_VRAM_A1,
// (Uint8 *)"init done",40,2,colors);
//SCL_DisplayFrame();
SND_ChgMap(0);
slSynch();
SND_RESET_INT(); /* Å âžâÃÆXÆeÂ[Æ^ÆXÆÅ ÆZÆbÆg */
SND_SET_ENA_INT(SND_INT_PCM_ADR); /* PCMÅ âžâÃâ¹ââ°Ã(ÆTÆEÆâÆh) */
move_bnk = 0;
l_move_bnk = 0;
/* RIGHTÆ`ÆÆÆlÆâ¹ */
r_PcmIntr(); /* â°EÆ`ÆÆÆlÆâ¹â]ââ */
r_PcmIntr(); /* â°EÆ`ÆÆÆlÆâ¹â]ââ */
/* LEFTÆ`ÆÆÆlÆâ¹ */
l_PcmIntr(); /* ¶Æ`ÆÆÆlÆâ¹â]ââ */
l_PcmIntr(); /* ¶Æ`ÆÆÆlÆâ¹â]ââ */
SND_PRM_MODE(pcm_start) = SND_MD_STEREO | SND_MD_16;
SND_PRM_SADR(pcm_start) = 0x1000;
SND_PRM_SIZE(pcm_start) = 0x2000;
SND_PRM_NUM(pcm_chg) = 2;
SND_PRM_LEV(pcm_chg) = 7;
SND_PRM_PAN(pcm_chg) = 0;
SND_PRM_PICH(pcm_chg) = 0;
SND_L_EFCT_IN(pcm_chg) = 0;
SND_L_EFCT_LEV(pcm_chg) = 7;
SND_R_EFCT_IN(pcm_chg) = 0;
SND_R_EFCT_LEV(pcm_chg) = 7;
//CyberWarriorX> It's basically like a kind of lookup table for the driver
//<CyberWarriorX> You tell it what parts of sound ram are tone bank, sequence banks, dsp program,
#define SND_KD_TONE 0x0 // â°Â¹ÂF
#define SND_KD_SEQ 0x1 // ÆVÂ[ÆPÆâÆX
#define SND_KD_DSP_PRG 0x2 // DSPÆvÆÂÆOÆâ°Æâ¬
if (GFS_Load(GFS_NameToId("AUDIO2.PCM"),0,(void *) 0x6030000,0x40000)<0)
DBG_Printf("AUDIO2.PCM B not loaded");
SND_StartPcm(&pcm_start, &pcm_chg); /* PCMŠJŽn */
while(1){
if(l_move_pcm_adr > (Uint16 * volatile)0x06080000 ||
move_pcm_adr > (Uint16 * volatile)0x06080000 ){
SND_StopPcm(2);
DBG_Printf("Finished");
}
}
}
#ifndef ACTION_REPLAY
//-------------------------------------------------------------------------------------------------------------------------------------
void ClrVram(volatile Uint8 *buff)
{
Uint32 i;
for(i=0;i<(512 * 512);i++) buff[i]=0x00;
}
void wait(long wait)
{
long i=0;
while(i<wait)
{
i++;
}
}
#endif
void SndIntr(void) {
SND_RESET_INT();
}
static Uint16 dummy_pad=0;
void GameVblankIn(void){
/* ârâfâkÆâÂ[ÆhâÃÂêÂâ¡ */
BlankIn();
}
void GameVblankOut(void){
/* ârâfâkÆâÂ[ÆhâÃÂêÂâ¡ */
BlankOut();
/* ÆpÆbÆhÆfÂ[Æ^Žæâ¾ */
// PER_GetPort(PortData);
}
void SetVblank(void){
/* V-BlankÅ ââèžâÃÆâ¹Â[Æ`ÆââÃâoË^ */
INT_ChgMsk(INT_MSK_NULL,INT_MSK_VBLK_IN | INT_MSK_VBLK_OUT);
INT_SetScuFunc(INT_SCU_VBLK_IN,GameVblankIn);
INT_SetScuFunc(INT_SCU_VBLK_OUT,GameVblankOut);
INT_ChgMsk(INT_MSK_VBLK_IN | INT_MSK_VBLK_OUT,INT_MSK_NULL);
DBG_Initial(&dummy_pad,RGB16_COLOR(31,31,31),0);
DBG_DisplayOn();
/* DBG_SetCursol(9, 3 );
DBG_Printf("SBL6 SAMPLE GAME XXX");
*/
// PortData = PER_OpenPort();
}
/*****************************************************************************/
/* ÆTÆEÆâÆhÅ ââèžâÃÂËâ */
/*****************************************************************************/
void PcmIntr(void)
{
SND_RESET_INT(); /* Å âžâÃÆXÆeÂ[Æ^ÆXÆÅ ÆZÆbÆg */
if(SND_GET_FCT_INT() == SND_FCT_PCM_ADR){ /* PCM adressÂXÂVÅ âžâÃâ©ÂH */
if(SND_GET_INT_STAT() == 0x4){
r_PcmIntr();
l_PcmIntr();
}
}
}
/*****************************************************************************/
/* â°EÆ`ÆÆÆlÆâ¹â]ââ */
/*****************************************************************************/
void r_PcmIntr(void)
{
SND_MoveData(move_pcm_adr, // PCMÆfÂ[Æ^â]ââ
(Uint32)0x2000, // 32bit±Ã²ÃÃÃ
SND_KD_TONE,
move_bnk);
move_bnk = ~move_bnk & 1;
move_pcm_adr += 0x1000;
}
void l_PcmIntr(void)
{
SND_MoveData(l_move_pcm_adr, // PCMÆfÂ[Æ^â]ââ
(Uint32)0x2000, // 32bit±Ã²ÃÃÃ
SND_KD_TONE,
l_move_bnk + 2);
l_move_bnk = ~l_move_bnk & 1;
l_move_pcm_adr += 0x1000;
}