SdTransIntrHandler TransIntrHandlers[2]; IntrCallback TransIntrCallbacks[2]; #ifndef ISJPCM u16 SpdifSettings; void *Spu2IntrData; SdSpu2IntrHandler Spu2IntrHandler; IntrCallback Spu2IrqCallback; #endif IntrData TransIntrData[2]; #ifndef ISJPCM volatile u16 *ParamRegList[] = { SD_VP_VOLL(0, 0), SD_VP_VOLR(0, 0), SD_VP_PITCH(0, 0), SD_VP_ADSR1(0, 0), SD_VP_ADSR2(0, 0), SD_VP_ENVX(0, 0), SD_VP_VOLXL(0, 0), SD_VP_VOLXR(0, 0), SD_P_MMIX(0), SD_P_MVOLL(0), SD_P_MVOLR(0), SD_P_EVOLL(0), SD_P_EVOLR(0), SD_P_AVOLL(0), SD_P_AVOLR(0), SD_P_BVOLL(0), SD_P_BVOLR(0), SD_P_MVOLXL(0), SD_P_MVOLXR(0), SD_S_PMON_HI(0), SD_S_NON_HI(0), SD_A_KON_HI(0), SD_A_KON_HI(0), SD_S_ENDX_HI(0), SD_S_VMIXL_HI(0), SD_S_VMIXEL_HI(0), SD_S_VMIXR_HI(0), SD_S_VMIXER_HI(0), SD_A_ESA_HI(0), SD_A_EEA_HI(0), SD_A_TSA_HI(0), SD_CORE_IRQA(0), SD_VA_SSA_HI(0, 0), SD_VA_LSAX(0, 0), SD_VA_NAX(0, 0), SD_CORE_ATTR(0), SD_A_TSA_HI(0), SD_A_STD(0), // 1AE & 1B0 are both related to core attr & dma somehow U16_REGISTER(0x1AE), U16_REGISTER(0x1B0), (u16 *)0xBF900334 }; #endif s32 TransInterrupt(void *data)
// Core / Volume Registers void InitCoreVolume(s32 flag) { *SD_C_SPDIF_OUT = 0xC032; if(flag) { *SD_CORE_ATTR(0) = SD_SPU2_ON | SD_ENABLE_EFFECTS | SD_MUTE; *SD_CORE_ATTR(1) = SD_SPU2_ON | SD_ENABLE_EFFECTS | SD_MUTE | SD_ENABLE_EX_INPUT; } else { *SD_CORE_ATTR(0) = SD_SPU2_ON | SD_MUTE; *SD_CORE_ATTR(1) = SD_SPU2_ON | SD_MUTE | SD_ENABLE_EX_INPUT; } // HIgh is voices 0-15, LOw is 16-23, representing voices 0..23 (24) *SD_S_VMIXL_HI(0) = 0xFFFF; *SD_S_VMIXL_LO(0) = 0xFF; *SD_S_VMIXR_HI(0) = 0xFFFF; *SD_S_VMIXR_LO(0) = 0xFF; *SD_S_VMIXEL_HI(0) = 0xFFFF; *SD_S_VMIXEL_LO(0) = 0xFF; *SD_S_VMIXER_HI(0) = 0xFFFF; *SD_S_VMIXER_LO(0) = 0xFF; *SD_S_VMIXL_HI(1) = 0xFFFF; *SD_S_VMIXL_LO(1) = 0xFF; *SD_S_VMIXR_HI(1) = 0xFFFF; *SD_S_VMIXR_LO(1) = 0xFF; *SD_S_VMIXEL_HI(1) = 0xFFFF; *SD_S_VMIXEL_LO(1) = 0xFF; *SD_S_VMIXER_HI(1) = 0xFFFF; *SD_S_VMIXER_LO(1) = 0xFF; *SD_P_MMIX(0) = 0xFF0; *SD_P_MMIX(1) = 0xFFC; if(flag == 0) { *SD_P_MVOLL(0) = 0; *SD_P_MVOLR(0) = 0; *SD_P_MVOLL(1) = 0; *SD_P_MVOLR(1) = 0; *SD_P_EVOLL(0) = 0; *SD_P_EVOLL(1) = 0; *SD_P_EVOLR(0) = 0; *SD_P_EVOLR(1) = 0; // Effect End Address, Upper part *SD_A_EEA_HI(0) = 0xE; *SD_A_EEA_HI(1) = 0xF; } *SD_P_AVOLL(0) = 0; *SD_P_AVOLR(0) = 0; // Core 1 External Input Volume. // The external Input is Core 0's output. *SD_P_AVOLL(1) = 0x7FFF; *SD_P_AVOLR(1) = 0x7FFF; *SD_P_BVOLL(0) = 0; *SD_P_BVOLR(0) = 0; *SD_P_BVOLL(1) = 0; *SD_P_BVOLR(1) = 0; }