1 /****************************************************************************
3 * ____ ___ ____ __ ______ ___ ____ ____/ / *
4 * / __ `__ \/ __ `/ |/ / __ `__ \/ __ \/ __ / *
5 * / / / / / / /_/ /> </ / / / / / /_/ / /_/ / *
6 * /_/ /_/ /_/\__,_/_/|_/_/ /_/ /_/\____/\__,_/ *
8 * Nintendo DS & Gameboy Advance Sound System *
10 * Copyright (c) 2008, Mukunda Johnson (mukunda@maxmod.org) *
12 * Permission to use, copy, modify, and/or distribute this software for any *
13 * purpose with or without fee is hereby granted, provided that the above *
14 * copyright notice and this permission notice appear in all copies. *
16 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES *
17 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF *
18 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR *
19 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES *
20 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN *
21 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF *
22 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *
23 ****************************************************************************/
27 @----------------------------------------------------------------------------
29 #include "mp_defs.inc"
31 .equ mixlen, 1056 // 16khz
43 #define MM_SIZEOF_MODCH 40
44 #define MM_SIZEOF_ACTCH 28
45 #define MM_SIZEOF_MIXCH 24
47 /****************************************************************************
48 * mmInitDefault( soundbank, #channels )
50 * Init maxmod with default settings.
51 ****************************************************************************/
55 push {r0,r4,r5,r6,r7,lr} // preserve regs, push soundbank
58 //1 mchcount (#channels)
59 //2 achcount (#channels)
63 //6 mixmem (__mixbuffer)
66 mov r6, r1 // r6=#channels
67 ldr r0,=MM_SIZEOF_MODCH+MM_SIZEOF_ACTCH+MM_SIZEOF_MIXCH
73 mov r7, r0 // wavemem = beginning of buffer
74 add r3, r0, r4 // split up buffer into addresses [r3,r4,r5]
75 mov r0, #MM_SIZEOF_MODCH //
78 mov r0, #MM_SIZEOF_ACTCH //
84 ldr r6,=__mixbuffer // r6 = mixbuffer (iwram)
88 mov r0, sp // init maxmod, pass init struct
91 add sp, #MM_GBA_SYSTEM_SIZE // restore stack