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@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 32extern "C" { 33#endif 34 35typedef enum 36{ 37 NONE = 0, 38 INIT = 1, 39 MIX = 2, 40 MIXING = 4, 41 STOP = 8 42}CommandType; 43 44typedef enum 45{ 46 FIFO_NONE = 0, 47 UPDATEON_ARM9 = 1, 48 MIXCOMPLETE_ONARM9 = 2, 49}FifoType; 50 51typedef 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 66extern void SoundSystemInit(u32 rate,u32 buffersize,u8 channel,u8 format); 67extern void SoundStartMixer(void); 68extern void SendCommandToArm7(u32 command); 69#else 70extern void SoundVBlankIrq(void); 71extern void SoundSwapAndMix(void); 72extern void SoundSetTimer(int period); 73extern void SoundFifoHandler(void); 74extern void SendCommandToArm9(u32 command); 75#endif 76 77#ifdef __cplusplus 78} 79#endif 80#endif 81