mirror of https://github.com/snes9xgit/snes9x.git
GTK: Add a couple animated background splashes.
This commit is contained in:
parent
ab4b9513f2
commit
19f7423f42
|
@ -382,7 +382,9 @@ srcs += [
|
|||
'src/gtk_netplay_dialog.cpp',
|
||||
'src/gtk_netplay_dialog.h',
|
||||
'src/gtk_netplay.cpp',
|
||||
'src/gtk_netplay.h'
|
||||
'src/gtk_netplay.h',
|
||||
'src/background_particles.cpp',
|
||||
'src/background_particles.h'
|
||||
]
|
||||
|
||||
libjma_srcs = [
|
||||
|
|
|
@ -44,7 +44,9 @@ enum {
|
|||
SPLASH_IMAGE_SMTPE = 1,
|
||||
SPLASH_IMAGE_PATTERN = 2,
|
||||
SPLASH_IMAGE_BLUE = 3,
|
||||
SPLASH_IMAGE_COMBO = 4
|
||||
SPLASH_IMAGE_COMBO = 4,
|
||||
SPLASH_IMAGE_STARFIELD = 5,
|
||||
SPLASH_IMAGE_SNOW = 6
|
||||
};
|
||||
|
||||
class Snes9xConfig
|
||||
|
|
|
@ -7,16 +7,17 @@
|
|||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
#include "gtk_2_3_compat.h"
|
||||
#include "gtk_config.h"
|
||||
#include "gtk_s9x.h"
|
||||
#include "gtk_control.h"
|
||||
#include "gtk_sound.h"
|
||||
#include "gtk_display.h"
|
||||
#include "gtk_netplay.h"
|
||||
#include "statemanager.h"
|
||||
|
||||
#include "background_particles.h"
|
||||
|
||||
void S9xPostRomInit ();
|
||||
static void S9xThrottle ();
|
||||
static void S9xThrottle (int);
|
||||
static void S9xCheckPointerTimer ();
|
||||
static gboolean S9xIdleFunc (gpointer data);
|
||||
static gboolean S9xPauseFunc (gpointer data);
|
||||
|
@ -28,6 +29,8 @@ StateManager state_manager;
|
|||
gint64 frame_clock = -1;
|
||||
gint64 pointer_timestamp = -1;
|
||||
|
||||
Background::Particles particles(Background::Particles::Mode::Snow);
|
||||
|
||||
void S9xTerm (int signal)
|
||||
{
|
||||
S9xExit ();
|
||||
|
@ -37,10 +40,7 @@ int main (int argc, char *argv[])
|
|||
{
|
||||
struct sigaction sig_callback;
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
g_set_prgname ("snes9x-gtk");
|
||||
g_set_application_name ("Snes9x");
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (GETTEXT_PACKAGE, SNES9XLOCALEDIR);
|
||||
|
@ -263,9 +263,6 @@ static gboolean S9xPauseFunc (gpointer data)
|
|||
{
|
||||
S9xProcessEvents (true);
|
||||
|
||||
if (!gui_config->rom_loaded)
|
||||
return true;
|
||||
|
||||
if (!S9xNetplayPush ())
|
||||
{
|
||||
S9xNetplayPop ();
|
||||
|
@ -292,12 +289,30 @@ static gboolean S9xPauseFunc (gpointer data)
|
|||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
if (!gui_config->rom_loaded)
|
||||
{
|
||||
if (gui_config->splash_image >= SPLASH_IMAGE_STARFIELD)
|
||||
{
|
||||
if (gui_config->splash_image == SPLASH_IMAGE_STARFIELD)
|
||||
particles.setmode(Background::Particles::Stars);
|
||||
else
|
||||
particles.setmode(Background::Particles::Snow);
|
||||
|
||||
S9xThrottle(THROTTLE_TIMER);
|
||||
particles.advance();
|
||||
particles.copyto(GFX.Screen, GFX.Pitch);
|
||||
S9xDeinitUpdate(256, 224);
|
||||
}
|
||||
}
|
||||
|
||||
g_timeout_add(8, S9xPauseFunc, NULL);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
gboolean S9xIdleFunc (gpointer data)
|
||||
{
|
||||
if (Settings.Paused)
|
||||
if (Settings.Paused && gui_config->rom_loaded)
|
||||
{
|
||||
S9xSetSoundMute (gui_config->mute_sound);
|
||||
S9xSoundStop ();
|
||||
|
@ -310,7 +325,7 @@ gboolean S9xIdleFunc (gpointer data)
|
|||
}
|
||||
|
||||
/* Move to a timer-based function to use less CPU */
|
||||
g_timeout_add (100, S9xPauseFunc, NULL);
|
||||
g_timeout_add (8, S9xPauseFunc, NULL);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -324,7 +339,7 @@ gboolean S9xIdleFunc (gpointer data)
|
|||
return true;
|
||||
}
|
||||
|
||||
S9xThrottle ();
|
||||
S9xThrottle (Settings.SkipFrames);
|
||||
|
||||
if (!S9xNetplayPush ())
|
||||
{
|
||||
|
@ -461,7 +476,7 @@ void S9xParseArg (char **argv, int &i, int argc)
|
|||
}
|
||||
}
|
||||
|
||||
static void S9xThrottle ()
|
||||
static void S9xThrottle (int method)
|
||||
{
|
||||
gint64 now;
|
||||
|
||||
|
@ -508,15 +523,15 @@ static void S9xThrottle ()
|
|||
frame_clock = now;
|
||||
}
|
||||
|
||||
if (Settings.SkipFrames == THROTTLE_SOUND_SYNC ||
|
||||
Settings.SkipFrames == THROTTLE_NONE)
|
||||
if (method == THROTTLE_SOUND_SYNC ||
|
||||
method == THROTTLE_NONE)
|
||||
{
|
||||
frame_clock = now;
|
||||
IPPU.SkippedFrames = 0;
|
||||
}
|
||||
else // THROTTLE_TIMER or THROTTLE_TIMER_FRAMESKIP
|
||||
{
|
||||
if (Settings.SkipFrames == THROTTLE_TIMER_FRAMESKIP)
|
||||
if (method == THROTTLE_TIMER_FRAMESKIP)
|
||||
{
|
||||
if (now - frame_clock > Settings.FrameTime)
|
||||
{
|
||||
|
|
|
@ -787,7 +787,7 @@ Snes9xWindow::expose ()
|
|||
config->window_height = get_height ();
|
||||
}
|
||||
|
||||
if (is_paused () || NetPlay.Paused)
|
||||
if ((is_paused () || NetPlay.Paused) && (gui_config->splash_image < SPLASH_IMAGE_STARFIELD || gui_config->rom_loaded))
|
||||
{
|
||||
S9xDeinitUpdate (last_width, last_height);
|
||||
}
|
||||
|
|
|
@ -166,7 +166,7 @@ bool gtk_shader_parameters_dialog(GtkWindow *parent)
|
|||
if (!params || params->size() == 0)
|
||||
return false;
|
||||
|
||||
dialog = gtk_dialog_new_with_buttons(_("GLSL Shader Parameters"),
|
||||
dialog = gtk_dialog_new_with_buttons(_("Shader Parameters"),
|
||||
parent,
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
"gtk-cancel",
|
||||
|
|
|
@ -823,6 +823,12 @@
|
|||
<row>
|
||||
<col id="0" translatable="yes">Color bars and patterns</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Starfield</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Snow</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="GtkListStore" id="liststore1">
|
||||
|
|
Loading…
Reference in New Issue