Code: | | | //-------------------------------------------------------------------------------------------------------------- void displayMenu(void) { slInitSystem(TV_320x224,NULL,1); SetVblank(); SndIniDt snd_init; SndPcmStartPrm pcm_start; SndPcmChgPrm pcm_chg; SYS_CHGUIPR(pri_tbl); /* 轄槹D先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); /* TEh願込ン */ INT_SetScuFunc(INT_SCU_SND, PcmIntr); /* 願込ン傷o^ */ INT_ChgMsk(INT_MSK_SND,INT_MSK_NULL); /* TEh願込ン */ 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); /* TEh願込ン */ INT_SetScuFunc(INT_SCU_SND, PcmIntr); /* 願込ン傷o^ */ INT_ChgMsk(INT_MSK_SND,INT_MSK_NULL); /* TEh願込ン */ 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(); /* 轄槹Xeー^X鎧bg */ SND_SET_ENA_INT(SND_INT_PCM_ADR); /* PCM轄槹(TEh) */ 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 // ケ色 #define SND_KD_SEQ 0x1 // VーPX #define SND_KD_DSP_PRG 0x2 // DSPv弘 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開始 */ 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){ /* rfkーh場 */ BlankIn(); } void GameVblankOut(void){ /* rfkーh場 */ BlankOut(); /* pbhfー^取セ */ // 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(); } /*****************************************************************************/ /* TEh願込ン傷 */ /*****************************************************************************/ void PcmIntr(void) { SND_RESET_INT(); /* 轄槹Xeー^X鎧bg */ if(SND_GET_FCT_INT() == SND_FCT_PCM_ADR){ /* PCM adress更新轄槹ゥ? */ if(SND_GET_INT_STAT() == 0x4){ r_PcmIntr(); l_PcmIntr(); } } } /*****************************************************************************/ /* E`l] */ /*****************************************************************************/ void r_PcmIntr(void) { SND_MoveData(move_pcm_adr, // PCMfー^] (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, // PCMfー^] (Uint32)0x2000, // 32bitアイン SND_KD_TONE, l_move_bnk + 2); l_move_bnk = ~l_move_bnk & 1; l_move_pcm_adr += 0x1000; } |
|