Made Sound.cpp more accurate
This commit is contained in:
parent
8f5370ea81
commit
add4e69374
3 changed files with 29 additions and 13 deletions
|
@ -1066,6 +1066,21 @@ addr = 0x41FE70
|
|||
name = "PlaySoundObject"
|
||||
addr = 0x420640
|
||||
|
||||
[[func]]
|
||||
name = "ChangeSoundFrequency"
|
||||
addr = 0x420720
|
||||
size = 0x34
|
||||
|
||||
[[func]]
|
||||
name = "ChangeSoundVolume"
|
||||
addr = 0x420760
|
||||
size = 0x35
|
||||
|
||||
[[func]]
|
||||
name = "ChangeSoundPan"
|
||||
addr = 0x4207A0
|
||||
size = 0x36
|
||||
|
||||
[[func]]
|
||||
name = "TransferStage"
|
||||
addr = 0x420BE0
|
||||
|
|
|
@ -221,7 +221,7 @@ void AudioCallback(void *userdata, Uint8 *stream, int len)
|
|||
}
|
||||
|
||||
//Sound things
|
||||
SOUNDBUFFER* lpSECONDARYBUFFER[SOUND_NO];
|
||||
SOUNDBUFFER* lpSECONDARYBUFFER[SE_MAX];
|
||||
|
||||
BOOL InitDirectSound()
|
||||
{
|
||||
|
@ -250,6 +250,9 @@ BOOL InitDirectSound()
|
|||
//Unpause audio device
|
||||
SDL_PauseAudioDevice(audioDevice, 0);
|
||||
|
||||
for (unsigned int i = 0; i < SE_MAX; ++i)
|
||||
lpSECONDARYBUFFER[i] = NULL;
|
||||
|
||||
//Start organya
|
||||
StartOrganya();
|
||||
return TRUE;
|
||||
|
@ -257,14 +260,15 @@ BOOL InitDirectSound()
|
|||
|
||||
void EndDirectSound()
|
||||
{
|
||||
//Quit sub-system
|
||||
EndOrganya();
|
||||
|
||||
for (unsigned int i = 0; i < SE_MAX; ++i)
|
||||
lpSECONDARYBUFFER[i]->Release();
|
||||
|
||||
SDL_QuitSubSystem(SDL_INIT_AUDIO);
|
||||
|
||||
//Close audio device
|
||||
SDL_CloseAudioDevice(audioDevice);
|
||||
|
||||
//End organya
|
||||
EndOrganya();
|
||||
}
|
||||
|
||||
//Sound effects playing
|
||||
|
@ -293,20 +297,17 @@ void PlaySoundObject(int no, int mode)
|
|||
|
||||
void ChangeSoundFrequency(int no, unsigned long rate)
|
||||
{
|
||||
if (lpSECONDARYBUFFER[no])
|
||||
lpSECONDARYBUFFER[no]->SetFrequency(10 * rate + 100);
|
||||
lpSECONDARYBUFFER[no]->SetFrequency((rate * 10) + 100);
|
||||
}
|
||||
|
||||
void ChangeSoundVolume(int no, long volume)
|
||||
{
|
||||
if (lpSECONDARYBUFFER[no])
|
||||
lpSECONDARYBUFFER[no]->SetVolume(8 * volume - 2400);
|
||||
lpSECONDARYBUFFER[no]->SetVolume((volume - 300) * 8);
|
||||
}
|
||||
|
||||
void ChangeSoundPan(int no, long pan)
|
||||
{
|
||||
if (lpSECONDARYBUFFER[no])
|
||||
lpSECONDARYBUFFER[no]->SetPan(10 * (pan - 256));
|
||||
lpSECONDARYBUFFER[no]->SetPan((pan - 256) * 10);
|
||||
}
|
||||
|
||||
int MakePixToneObject(const PIXTONEPARAMETER *ptp, int ptp_num, int no)
|
||||
|
|
|
@ -90,8 +90,8 @@ enum MUSIC_IDS
|
|||
mus_White = 0x29
|
||||
};
|
||||
|
||||
#define SOUND_NO 0x100
|
||||
extern SOUNDBUFFER* lpSECONDARYBUFFER[SOUND_NO];
|
||||
#define SE_MAX 160 // According to the Organya source code release, this is the real name for this constant
|
||||
extern SOUNDBUFFER* lpSECONDARYBUFFER[SE_MAX];
|
||||
|
||||
BOOL InitDirectSound();
|
||||
void EndDirectSound();
|
||||
|
|
Loading…
Add table
Reference in a new issue