mirror of https://github.com/sm64pc/sm64pc.git
commit
b1b3fef112
|
@ -107,6 +107,9 @@
|
||||||
#define TEXT_OPT_NEAREST _("Nearest")
|
#define TEXT_OPT_NEAREST _("Nearest")
|
||||||
#define TEXT_OPT_LINEAR _("Linear")
|
#define TEXT_OPT_LINEAR _("Linear")
|
||||||
#define TEXT_OPT_MVOLUME _("Master Volume")
|
#define TEXT_OPT_MVOLUME _("Master Volume")
|
||||||
|
#define TEXT_OPT_MUSIC_VOLUME _("Music Volume")
|
||||||
|
#define TEXT_OPT_SFX_VOLUME _("Sfx Volume")
|
||||||
|
#define TEXT_OPT_ENV_VOLUME _("Env Volume")
|
||||||
#define TEXT_OPT_VSYNC _("Vertical Sync")
|
#define TEXT_OPT_VSYNC _("Vertical Sync")
|
||||||
#define TEXT_OPT_DOUBLE _("Double")
|
#define TEXT_OPT_DOUBLE _("Double")
|
||||||
#define TEXT_RESET_WINDOW _("Reset Window")
|
#define TEXT_RESET_WINDOW _("Reset Window")
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "seq_ids.h"
|
#include "seq_ids.h"
|
||||||
#include "dialog_ids.h"
|
#include "dialog_ids.h"
|
||||||
#include "level_table.h"
|
#include "level_table.h"
|
||||||
|
#include "pc/configfile.h"
|
||||||
|
|
||||||
#ifdef VERSION_EU
|
#ifdef VERSION_EU
|
||||||
#define EU_FLOAT(x) x ## f
|
#define EU_FLOAT(x) x ## f
|
||||||
|
@ -2061,6 +2062,10 @@ void play_dialog_sound(u8 dialogID) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setSequencePlayerVolume(s32 player, s32 volume){
|
||||||
|
func_8031D838(player, 0, volume);
|
||||||
|
}
|
||||||
|
|
||||||
void play_music(u8 player, u16 seqArgs, u16 fadeTimer) {
|
void play_music(u8 player, u16 seqArgs, u16 fadeTimer) {
|
||||||
u8 seqId = seqArgs & 0xff;
|
u8 seqId = seqArgs & 0xff;
|
||||||
u8 priority = seqArgs >> 8;
|
u8 priority = seqArgs >> 8;
|
||||||
|
@ -2069,6 +2074,7 @@ void play_music(u8 player, u16 seqArgs, u16 fadeTimer) {
|
||||||
|
|
||||||
// Except for the background music player, we don't support queued
|
// Except for the background music player, we don't support queued
|
||||||
// sequences. Just play them immediately, stopping any old sequence.
|
// sequences. Just play them immediately, stopping any old sequence.
|
||||||
|
|
||||||
if (player != 0) {
|
if (player != 0) {
|
||||||
play_sequence(player, seqId, fadeTimer);
|
play_sequence(player, seqId, fadeTimer);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -37,6 +37,7 @@ void sound_banks_disable(u8 player, u16 bankMask);
|
||||||
void sound_banks_enable(u8 player, u16 bankMask);
|
void sound_banks_enable(u8 player, u16 bankMask);
|
||||||
void func_80320A4C(u8 bankIndex, u8 arg1);
|
void func_80320A4C(u8 bankIndex, u8 arg1);
|
||||||
void play_dialog_sound(u8 dialogID);
|
void play_dialog_sound(u8 dialogID);
|
||||||
|
void setSequencePlayerVolume(s32 player, s32 volume);
|
||||||
void play_music(u8 player, u16 seqArgs, u16 fadeTimer);
|
void play_music(u8 player, u16 seqArgs, u16 fadeTimer);
|
||||||
void stop_background_music(u16 seqId);
|
void stop_background_music(u16 seqId);
|
||||||
void fadeout_background_music(u16 arg0, u16 fadeOut);
|
void fadeout_background_music(u16 arg0, u16 fadeOut);
|
||||||
|
|
|
@ -9,6 +9,7 @@ void sequence_channel_disable(struct SequenceChannel *seqPlayer);
|
||||||
void sequence_player_disable(struct SequencePlayer* seqPlayer);
|
void sequence_player_disable(struct SequencePlayer* seqPlayer);
|
||||||
void audio_list_push_back(struct AudioListItem *list, struct AudioListItem *item);
|
void audio_list_push_back(struct AudioListItem *list, struct AudioListItem *item);
|
||||||
void *audio_list_pop_back(struct AudioListItem *list);
|
void *audio_list_pop_back(struct AudioListItem *list);
|
||||||
|
void sequence_channel_set_volume(struct SequenceChannel *seqChannel, u8 volume);
|
||||||
void process_sequences(s32 iterationsRemaining);
|
void process_sequences(s32 iterationsRemaining);
|
||||||
void init_sequence_player(u32 player);
|
void init_sequence_player(u32 player);
|
||||||
void init_sequence_players(void);
|
void init_sequence_players(void);
|
||||||
|
|
|
@ -86,6 +86,9 @@ static const u8 optsVideoStr[][32] = {
|
||||||
|
|
||||||
static const u8 optsAudioStr[][32] = {
|
static const u8 optsAudioStr[][32] = {
|
||||||
{ TEXT_OPT_MVOLUME },
|
{ TEXT_OPT_MVOLUME },
|
||||||
|
{ TEXT_OPT_MUSIC_VOLUME },
|
||||||
|
{ TEXT_OPT_SFX_VOLUME },
|
||||||
|
{ TEXT_OPT_ENV_VOLUME },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 optsCheatsStr[][64] = {
|
static const u8 optsCheatsStr[][64] = {
|
||||||
|
@ -259,6 +262,9 @@ static struct Option optsVideo[] = {
|
||||||
|
|
||||||
static struct Option optsAudio[] = {
|
static struct Option optsAudio[] = {
|
||||||
DEF_OPT_SCROLL( optsAudioStr[0], &configMasterVolume, 0, MAX_VOLUME, 1 ),
|
DEF_OPT_SCROLL( optsAudioStr[0], &configMasterVolume, 0, MAX_VOLUME, 1 ),
|
||||||
|
DEF_OPT_SCROLL( optsAudioStr[1], &configMusicVolume, 0, MAX_VOLUME, 1),
|
||||||
|
DEF_OPT_SCROLL( optsAudioStr[2], &configSfxVolume, 0, MAX_VOLUME, 1),
|
||||||
|
DEF_OPT_SCROLL( optsAudioStr[3], &configEnvVolume, 0, MAX_VOLUME, 1),
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct Option optsCheats[] = {
|
static struct Option optsCheats[] = {
|
||||||
|
|
|
@ -51,6 +51,9 @@ ConfigWindow configWindow = {
|
||||||
};
|
};
|
||||||
unsigned int configFiltering = 1; // 0=force nearest, 1=linear, (TODO) 2=three-point
|
unsigned int configFiltering = 1; // 0=force nearest, 1=linear, (TODO) 2=three-point
|
||||||
unsigned int configMasterVolume = MAX_VOLUME; // 0 - MAX_VOLUME
|
unsigned int configMasterVolume = MAX_VOLUME; // 0 - MAX_VOLUME
|
||||||
|
unsigned int configMusicVolume = MAX_VOLUME;
|
||||||
|
unsigned int configSfxVolume = MAX_VOLUME;
|
||||||
|
unsigned int configEnvVolume = MAX_VOLUME;
|
||||||
|
|
||||||
// Keyboard mappings (VK_ values, by default keyboard/gamepad/mouse)
|
// Keyboard mappings (VK_ values, by default keyboard/gamepad/mouse)
|
||||||
unsigned int configKeyA[MAX_BINDS] = { 0x0026, 0x1000, 0x1103 };
|
unsigned int configKeyA[MAX_BINDS] = { 0x0026, 0x1000, 0x1103 };
|
||||||
|
@ -99,6 +102,9 @@ static const struct ConfigOption options[] = {
|
||||||
{.name = "vsync", .type = CONFIG_TYPE_UINT, .uintValue = &configWindow.vsync},
|
{.name = "vsync", .type = CONFIG_TYPE_UINT, .uintValue = &configWindow.vsync},
|
||||||
{.name = "texture_filtering", .type = CONFIG_TYPE_UINT, .uintValue = &configFiltering},
|
{.name = "texture_filtering", .type = CONFIG_TYPE_UINT, .uintValue = &configFiltering},
|
||||||
{.name = "master_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume},
|
{.name = "master_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume},
|
||||||
|
{.name = "music_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMusicVolume},
|
||||||
|
{.name = "sfx_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configSfxVolume},
|
||||||
|
{.name = "env_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configEnvVolume},
|
||||||
{.name = "key_a", .type = CONFIG_TYPE_BIND, .uintValue = configKeyA},
|
{.name = "key_a", .type = CONFIG_TYPE_BIND, .uintValue = configKeyA},
|
||||||
{.name = "key_b", .type = CONFIG_TYPE_BIND, .uintValue = configKeyB},
|
{.name = "key_b", .type = CONFIG_TYPE_BIND, .uintValue = configKeyB},
|
||||||
{.name = "key_start", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStart},
|
{.name = "key_start", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStart},
|
||||||
|
|
|
@ -21,6 +21,9 @@ typedef struct {
|
||||||
extern ConfigWindow configWindow;
|
extern ConfigWindow configWindow;
|
||||||
extern unsigned int configFiltering;
|
extern unsigned int configFiltering;
|
||||||
extern unsigned int configMasterVolume;
|
extern unsigned int configMasterVolume;
|
||||||
|
extern unsigned int configMusicVolume;
|
||||||
|
extern unsigned int configSfxVolume;
|
||||||
|
extern unsigned int configEnvVolume;
|
||||||
extern unsigned int configKeyA[];
|
extern unsigned int configKeyA[];
|
||||||
extern unsigned int configKeyB[];
|
extern unsigned int configKeyB[];
|
||||||
extern unsigned int configKeyStart[];
|
extern unsigned int configKeyStart[];
|
||||||
|
|
|
@ -75,7 +75,13 @@ void send_display_list(struct SPTask *spTask) {
|
||||||
#define printf
|
#define printf
|
||||||
|
|
||||||
void produce_one_frame(void) {
|
void produce_one_frame(void) {
|
||||||
|
|
||||||
gfx_start_frame();
|
gfx_start_frame();
|
||||||
|
|
||||||
|
setSequencePlayerVolume(SEQ_PLAYER_LEVEL, (s32)configMusicVolume);
|
||||||
|
setSequencePlayerVolume(SEQ_PLAYER_SFX, (s32)configSfxVolume);
|
||||||
|
setSequencePlayerVolume(SEQ_PLAYER_ENV, (s32)configEnvVolume);
|
||||||
|
|
||||||
game_loop_one_iteration();
|
game_loop_one_iteration();
|
||||||
thread6_rumble_loop(NULL);
|
thread6_rumble_loop(NULL);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue