aboutsummaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorNebuleon Fumika2013-02-01 20:09:24 -0500
committerNebuleon Fumika2013-02-01 20:09:24 -0500
commitd4dd98e8c180532f24de342482e54f28874f06ef (patch)
tree17da3f95be8552681c29fe411e1266d422bb252a /source
parente61731a524028f8286f83a82686b2f4e236c1a9d (diff)
downloadsnesemu-d4dd98e8c180532f24de342482e54f28874f06ef.tar.gz
snesemu-d4dd98e8c180532f24de342482e54f28874f06ef.tar.bz2
snesemu-d4dd98e8c180532f24de342482e54f28874f06ef.zip
Add an option that controls which element should be more fluid, per game: video or audio.
This makes most games playable, but the player can choose to get fluid audio instead of fluid video in sound-test modes or games with epic soundtracks.
Diffstat (limited to 'source')
-rw-r--r--source/nds/entry.cpp12
-rw-r--r--source/nds/gui.c13
-rw-r--r--source/nds/gui.h4
-rw-r--r--source/nds/message.h19
4 files changed, 36 insertions, 12 deletions
diff --git a/source/nds/entry.cpp b/source/nds/entry.cpp
index a55c10d..1cf31df 100644
--- a/source/nds/entry.cpp
+++ b/source/nds/entry.cpp
@@ -350,6 +350,18 @@ void game_set_frameskip()
Settings.SkipFrames = game_config.frameskip_value - 1 /* 1 -> 0 and so on */;
}
}
+
+void game_set_fluidity()
+{
+ if( game_config.SoundSync == 1)
+ {
+ Settings.SoundSync = TRUE;
+ }
+ else
+ {
+ Settings.SoundSync = FALSE;
+ }
+}
void init_sfc_setting(void)
{
diff --git a/source/nds/gui.c b/source/nds/gui.c
index b529b9f..b6bd0f4 100644
--- a/source/nds/gui.c
+++ b/source/nds/gui.c
@@ -2814,6 +2814,8 @@ u32 menu(u16 *screen, bool8 FirstInvocation)
char *frameskip_options[] = { (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_AUTOMATIC], (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_0], (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_1], (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_2], (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_3], (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_4], (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_5], (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_6], (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_7], (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_8], (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_9], (char*)&msg[MSG_VIDEO_FRAME_SKIPPING_10] };
+ char *fluidity_options[] = { (char*)&msg[MSG_VIDEO_AUDIO_FLUIDITY_PREFER_VIDEO], (char*)&msg[MSG_VIDEO_AUDIO_FLUIDITY_PREFER_AUDIO] };
+
char *on_off_options[] = { (char*)&msg[MSG_GENERAL_OFF], (char*)&msg[MSG_GENERAL_ON] };
char *sound_seletion[] = { (char*)&msg[MSG_AUDIO_MUTED], (char*)&msg[MSG_AUDIO_ENABLED] };
@@ -2838,8 +2840,11 @@ u32 menu(u16 *screen, bool8 FirstInvocation)
/* 03 */ STRING_SELECTION_OPTION(game_disableAudio, NULL, &msg[FMT_AUDIO_SOUND], sound_seletion,
&game_enable_audio, 2, NULL, ACTION_TYPE, 3),
- /* 04 */ STRING_SELECTION_OPTION(game_set_frameskip, NULL, &msg[FMT_VIDEO_FRAME_SKIPPING], frameskip_options,
- &game_config.frameskip_value, 12 /* auto (0) and 0..10 (1..11) make 12 option values */, NULL, ACTION_TYPE, 4)
+ /* 04 */ STRING_SELECTION_OPTION(game_set_fluidity, NULL, &msg[FMT_VIDEO_AUDIO_FLUIDITY_PREFERENCE], fluidity_options,
+ &game_config.SoundSync, 2, NULL, ACTION_TYPE, 4),
+
+ /* 05 */ STRING_SELECTION_OPTION(game_set_frameskip, NULL, &msg[FMT_VIDEO_FRAME_SKIPPING], frameskip_options,
+ &game_config.frameskip_value, 12 /* auto (0) and 0..10 (1..11) make 12 option values */, NULL, ACTION_TYPE, 5)
};
MAKE_MENU(graphics, NULL, NULL, NULL, NULL, 0, 0);
@@ -4253,6 +4258,7 @@ void init_game_config(void)
clock_speed_number = 5;
game_config.graphic = 3; // By default, have a good-looking aspect ratio
game_config.frameskip_value = 0; // Automatic frame skipping
+ game_config.SoundSync = 0; // Prefer fluid images by default
game_config.backward = 0; //time backward disable
game_config.backward_time = 2; //time backward granularity 1s
@@ -4306,7 +4312,8 @@ void load_game_config_file(void)
fread(&game_config, 1, sizeof(GAME_CONFIG), fp);
clock_speed_number = game_config.clock_speed_number;
- Settings.SkipFrames = (game_config.frameskip_value == 0 ? AUTO_FRAMERATE : game_config.frameskip_value - 1 /* 1 -> 0 and so on */);
+ game_set_frameskip();
+ game_set_fluidity();
}
fclose(fp);
diff --git a/source/nds/gui.h b/source/nds/gui.h
index 482ceec..0b91758 100644
--- a/source/nds/gui.h
+++ b/source/nds/gui.h
@@ -59,7 +59,8 @@ struct _GAME_CONFIG
u32 HotkeyReturnToMenu;
u32 HotkeyTemporaryFastForward;
u32 HotkeyToggleSound;
- u32 Reserved2[45];
+ u32 SoundSync;
+ u32 Reserved2[44];
};
typedef enum
@@ -127,6 +128,7 @@ extern void gui_init(u32 lang_id);
extern u32 menu(u16 *original_screen, bool8 FirstInvocation);
extern void game_disableAudio();
extern void game_set_frameskip();
+extern void game_set_fluidity();
extern void set_cpu_clock(u32 num);
extern int load_language_msg(char *filename, u32 language);
diff --git a/source/nds/message.h b/source/nds/message.h
index 0aff8d9..3eb9e74 100644
--- a/source/nds/message.h
+++ b/source/nds/message.h
@@ -31,6 +31,9 @@ enum MSG
MSG_MAIN_MENU_TOOLS,
MSG_MAIN_MENU_OPTIONS,
MSG_MAIN_MENU_EXIT,
+ FMT_VIDEO_AUDIO_FLUIDITY_PREFERENCE,
+ MSG_VIDEO_AUDIO_FLUIDITY_PREFER_VIDEO,
+ MSG_VIDEO_AUDIO_FLUIDITY_PREFER_AUDIO,
FMT_VIDEO_ASPECT_RATIO,
FMT_VIDEO_FAST_FORWARD,
FMT_VIDEO_FRAME_SKIPPING,
@@ -41,8 +44,8 @@ enum MSG
FMT_CHEAT_PAGE,
MSG_CHEAT_LOAD_FROM_FILE,
MSG_TOOLS_SCREENSHOT_GENERAL,
- MSG_TOOLS_GLOBAL_HOTKEY_GENERAL, // currently unused
- MSG_TOOLS_GAME_HOTKEY_GENERAL, // currently unused
+ MSG_TOOLS_GLOBAL_HOTKEY_GENERAL,
+ MSG_TOOLS_GAME_HOTKEY_GENERAL,
FMT_OPTIONS_LANGUAGE,
FMT_OPTIONS_CPU_FREQUENCY,
MSG_OPTIONS_CARD_CAPACITY,
@@ -50,12 +53,12 @@ enum MSG
MSG_OPTIONS_VERSION,
MSG_SCREENSHOT_CREATE,
MSG_SCREENSHOT_BROWSE,
- MSG_HOTKEY_MAIN_MENU, // currently unused
- MSG_HOTKEY_TEMPORARY_FAST_FORWARD, // currently unused
- MSG_HOTKEY_SOUND_TOGGLE, // currently unused
- MSG_PROGRESS_HOTKEY_WAITING_FOR_KEYS, // currently unused
- MSG_HOTKEY_DELETE_WITH_A, // currently unused
- MSG_HOTKEY_CANCEL_WITH_B, // currently unused
+ MSG_HOTKEY_MAIN_MENU,
+ MSG_HOTKEY_TEMPORARY_FAST_FORWARD,
+ MSG_HOTKEY_SOUND_TOGGLE,
+ MSG_PROGRESS_HOTKEY_WAITING_FOR_KEYS,
+ MSG_HOTKEY_DELETE_WITH_A,
+ MSG_HOTKEY_CANCEL_WITH_B,
MSG_LOAD_GAME_RECENTLY_PLAYED,
MSG_LOAD_GAME_FROM_CARD,
MSG_LOAD_GAME_MENU_TITLE,