Updated CSND header/.c, including enums for the looping/encoding fields.
This commit is contained in:
parent
7a54bb623a
commit
a1741254cf
@ -1,18 +1,30 @@
|
|||||||
#ifndef CSND_H
|
#ifndef CSND_H
|
||||||
#define CSND_H
|
#define CSND_H
|
||||||
|
|
||||||
|
//See here regarding CSND shared-mem commands, etc: http://3dbrew.org/wiki/CSND_Shared_Memory
|
||||||
|
|
||||||
#define CSND_SHAREDMEM_DEFAULT 0x10004000
|
#define CSND_SHAREDMEM_DEFAULT 0x10004000
|
||||||
|
|
||||||
//See here regarding CSND shared-mem commands, etc: http://3dbrew.org/wiki/CSND_Shared_Memory
|
typedef enum{
|
||||||
|
CSND_LOOP_DISABLE,
|
||||||
|
CSND_LOOP_ENABLE
|
||||||
|
} CSND_LOOPING;
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
CSND_ENCODING_PCM8,
|
||||||
|
CSND_ENCODING_PCM16,
|
||||||
|
CSND_ENCODING_IMA_ADPCM,
|
||||||
|
CSND_ENCODING_PSG//"3 = PSG, similar to DS?"
|
||||||
|
} CSND_ENCODING;
|
||||||
|
|
||||||
Result CSND_initialize(u32* sharedMem);
|
Result CSND_initialize(u32* sharedMem);
|
||||||
Result CSND_shutdown();
|
Result CSND_shutdown();
|
||||||
|
|
||||||
Result CSND_playsound(u32 channel, u32 looping, u32 encoding, u32 samplerate, u32 *vaddr0, u32 *vaddr1, u32 totalbytesize, u32 unk0, u32 unk1);
|
Result CSND_playsound(u32 channel, CSND_LOOPING looping, CSND_ENCODING encoding, u32 samplerate, u32 *vaddr0, u32 *vaddr1, u32 totalbytesize, u32 unk0, u32 unk1);//vaddr0 is the initial virtual-address of the audio-data. vaddr1 is the audio-data virtual-address used for looping, when playback is restarted for looping.
|
||||||
void CSND_setchannel_playbackstate(u32 channel, u32 value);
|
void CSND_setchannel_playbackstate(u32 channel, u32 value);//value0 = pause playback, value1 = resume playback.
|
||||||
void CSND_sharedmemtype0_cmd0(u32 channel, u32 value);
|
void CSND_sharedmemtype0_cmd0(u32 channel, u32 value);//value1 = start playback. value0 = stop playback, and reset the CSND registers for this channel.
|
||||||
void CSND_writesharedmem_cmdtype0(u16 cmdid, u8 *cmdparams);
|
void CSND_writesharedmem_cmdtype0(u16 cmdid, u8 *cmdparams);//This can be used to use arbitary CSND shared-memory commands.
|
||||||
Result CSND_sharedmemtype0_cmdupdatestate(int waitdone);
|
Result CSND_sharedmemtype0_cmdupdatestate(int waitdone);//This must be used after using CSND shared-memory commands in order for those commands to be processed. CSND_playsound() and CSND_getchannelstate() use this automatically.
|
||||||
|
|
||||||
Result CSND_getchannelstate(u32 entryindex, u32 *out);
|
Result CSND_getchannelstate(u32 entryindex, u32 *out);
|
||||||
Result CSND_getchannelstate_isplaying(u32 entryindex, u8 *status);
|
Result CSND_getchannelstate_isplaying(u32 entryindex, u8 *status);
|
||||||
|
@ -232,7 +232,7 @@ void CSND_sharedmemtype0_cmd8(u32 channel, u32 samplerate)
|
|||||||
CSND_writesharedmem_cmdtype0(0x8, (u8*)&cmdparams);
|
CSND_writesharedmem_cmdtype0(0x8, (u8*)&cmdparams);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSND_sharedmemtype0_cmde(u32 channel, u32 looping, u32 encoding, u32 samplerate, u32 unk0, u32 unk1, u32 physaddr0, u32 physaddr1, u32 totalbytesize)
|
void CSND_sharedmemtype0_cmde(u32 channel, CSND_LOOPING looping, CSND_ENCODING encoding, u32 samplerate, u32 unk0, u32 unk1, u32 physaddr0, u32 physaddr1, u32 totalbytesize)
|
||||||
{
|
{
|
||||||
u32 val;
|
u32 val;
|
||||||
u32 cmdparams[0x18>>2];
|
u32 cmdparams[0x18>>2];
|
||||||
@ -241,8 +241,8 @@ void CSND_sharedmemtype0_cmde(u32 channel, u32 looping, u32 encoding, u32 sample
|
|||||||
|
|
||||||
cmdparams[0] = channel & 0x1f;
|
cmdparams[0] = channel & 0x1f;
|
||||||
cmdparams[0] |= (unk0 & 0xf) << 6;
|
cmdparams[0] |= (unk0 & 0xf) << 6;
|
||||||
if(!looping)cmdparams[0] |= 2 << 10;
|
if(looping==CSND_LOOP_DISABLE)cmdparams[0] |= 2 << 10;
|
||||||
if(looping)cmdparams[0] |= 1 << 10;
|
if(looping==CSND_LOOP_ENABLE)cmdparams[0] |= 1 << 10;
|
||||||
cmdparams[0] |= (encoding & 3) << 12;
|
cmdparams[0] |= (encoding & 3) << 12;
|
||||||
cmdparams[0] |= (unk1 & 3) << 14;
|
cmdparams[0] |= (unk1 & 3) << 14;
|
||||||
|
|
||||||
@ -282,7 +282,7 @@ Result CSND_sharedmemtype0_cmdupdatestate(int waitdone)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result CSND_playsound(u32 channel, u32 looping, u32 encoding, u32 samplerate, u32 *vaddr0, u32 *vaddr1, u32 totalbytesize, u32 unk0, u32 unk1)
|
Result CSND_playsound(u32 channel, CSND_LOOPING looping, CSND_ENCODING encoding, u32 samplerate, u32 *vaddr0, u32 *vaddr1, u32 totalbytesize, u32 unk0, u32 unk1)
|
||||||
{
|
{
|
||||||
u32 physaddr0 = 0;
|
u32 physaddr0 = 0;
|
||||||
u32 physaddr1 = 0;
|
u32 physaddr1 = 0;
|
||||||
@ -292,7 +292,7 @@ Result CSND_playsound(u32 channel, u32 looping, u32 encoding, u32 samplerate, u3
|
|||||||
|
|
||||||
CSND_sharedmemtype0_cmde(channel, looping, encoding, samplerate, unk0, unk1, physaddr0, physaddr1, totalbytesize);
|
CSND_sharedmemtype0_cmde(channel, looping, encoding, samplerate, unk0, unk1, physaddr0, physaddr1, totalbytesize);
|
||||||
CSND_sharedmemtype0_cmd8(channel, samplerate);
|
CSND_sharedmemtype0_cmd8(channel, samplerate);
|
||||||
if(looping)CSND_sharedmemtype0_cmd3(channel, physaddr0, totalbytesize);
|
if(looping==CSND_LOOP_ENABLE)CSND_sharedmemtype0_cmd3(channel, physaddr0, totalbytesize);
|
||||||
CSND_sharedmemtype0_cmd8(channel, samplerate);
|
CSND_sharedmemtype0_cmd8(channel, samplerate);
|
||||||
CSND_sharedmemtype0_cmd9(channel, 0xffff);
|
CSND_sharedmemtype0_cmd9(channel, 0xffff);
|
||||||
CSND_setchannel_playbackstate(channel, 1);
|
CSND_setchannel_playbackstate(channel, 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user