Esempio n. 1
0
/**
 * Load a voice file to a malloc'd buffer.
 * @param filename The name of the file to load.
 * @return Where the file is loaded.
 */
static void *Sound_LoadVoc(const char *filename, uint32 *retFileSize)
{
	uint32 fileSize;
	void *res;

	if (filename == NULL) return NULL;
	if (!File_Exists_GetSize(filename, &fileSize)) return NULL;

	fileSize += 1;
	fileSize &= 0xFFFFFFFE;

	*retFileSize = fileSize;
	res = malloc(fileSize);
	Driver_Voice_LoadFile(filename, res, fileSize);

	return res;
}
Esempio n. 2
0
/**
 * ??.
 * @param filename The name of the file to load.
 * @return Where the file is loaded.
 */
void *Sound_Unknown0823(const char *filename, uint32 *retFileSize)
{
    uint8 fileIndex;
    uint32 fileSize;
    void *res;

    if (filename == NULL || !File_Exists(filename)) return NULL;

    fileIndex = File_Open(filename, 1);
    fileSize  = File_GetSize(fileIndex);
    File_Close(fileIndex);

    fileSize += 1;
    fileSize &= 0xFFFFFFFE;

    *retFileSize = fileSize;
    res = malloc(fileSize);
    Driver_Voice_LoadFile(filename, res, fileSize);

    return res;
}
Esempio n. 3
0
/**
 * Start playing a sound sample.
 * @param index Sample to play.
 */
void Sound_StartSound(uint16 index)
{
    if (index == 0xFFFF || g_gameConfig.sounds == 0 || (int16)g_table_voices[index].variable_04 < (int16)s_variable_4060) return;

    s_variable_4060 = g_table_voices[index].variable_04;

    if (g_variable_3E54[index] != NULL) {
        Driver_Voice_Play(g_variable_3E54[index], 0xFF);
    } else {
        char filenameBuffer[16];
        const char *filename;

        filename = g_table_voices[index].string;
        if (filename[0] == '?') {
            snprintf(filenameBuffer, sizeof(filenameBuffer), filename + 1, g_playerHouseID < HOUSE_MAX ? g_table_houseInfo[g_playerHouseID].prefixChar : ' ');

            Driver_Voice_LoadFile(filenameBuffer, g_readBuffer, g_readBufferSize);

            Driver_Voice_Play(g_readBuffer, 0xFF);
        }
    }
}