1 /* 2 SDL - Simple DirectMedia Layer 3 Copyright (C) 1997-2012 Sam Lantinga 4 5 This library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 This library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with this library; if not, write to the Free Software 17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 19 Sam Lantinga 20 slouken (at) libsdl.org 21 */ 22 #include "SDL_config.h" 23 24 #ifndef __SOUNDCOMMON_H 25 #define __SOUNDCOMMON_H 26 27 #include <nds.h> 28 29 #define CLOCK (1 << 25) 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 typedef enum 36 { 37 NONE = 0, 38 INIT = 1, 39 MIX = 2, 40 MIXING = 4, 41 STOP = 8 42 }CommandType; 43 44 typedef enum 45 { 46 FIFO_NONE = 0, 47 UPDATEON_ARM9 = 1, 48 MIXCOMPLETE_ONARM9 = 2, 49 }FifoType; 50 51 typedef struct 52 { 53 s8 *mixbuffer;//,*soundbuffer; 54 u32 rate; 55 u32 buffersize; 56 u32 cmd; 57 u8 channel,format; 58 u32 soundcursor,numsamples; 59 s32 prevtimer; 60 s16 period; 61 }S_SoundSystem; 62 63 #define soundsystem ((S_SoundSystem*)((u32)(IPC)+sizeof(TransferRegion))) 64 65 #ifdef ARM9 66 extern void SoundSystemInit(u32 rate,u32 buffersize,u8 channel,u8 format); 67 extern void SoundStartMixer(void); 68 extern void SendCommandToArm7(u32 command); 69 #else 70 extern void SoundVBlankIrq(void); 71 extern void SoundSwapAndMix(void); 72 extern void SoundSetTimer(int period); 73 extern void SoundFifoHandler(void); 74 extern void SendCommandToArm9(u32 command); 75 #endif 76 77 #ifdef __cplusplus 78 } 79 #endif 80 #endif 81