(PS3) Proper FBO scales now
This commit is contained in:
parent
0023b4b2ce
commit
be3839a9df
|
@ -198,6 +198,7 @@ struct console_settings
|
||||||
uint32_t mode_switch;
|
uint32_t mode_switch;
|
||||||
uint32_t *supported_resolutions;
|
uint32_t *supported_resolutions;
|
||||||
uint32_t supported_resolutions_count;
|
uint32_t supported_resolutions_count;
|
||||||
|
uint32_t control_timer_expiration_frame_count;
|
||||||
uint32_t timer_expiration_frame_count;
|
uint32_t timer_expiration_frame_count;
|
||||||
#ifdef _XBOX
|
#ifdef _XBOX
|
||||||
DWORD volume_device_type;
|
DWORD volume_device_type;
|
||||||
|
|
|
@ -45,8 +45,6 @@
|
||||||
|
|
||||||
#define EMULATOR_CONTENT_DIR "SSNE10000"
|
#define EMULATOR_CONTENT_DIR "SSNE10000"
|
||||||
|
|
||||||
char special_action_msg[256]; /* message which should be overlaid on top of the screen*/
|
|
||||||
|
|
||||||
char contentInfoPath[MAX_PATH_LENGTH];
|
char contentInfoPath[MAX_PATH_LENGTH];
|
||||||
char usrDirPath[MAX_PATH_LENGTH];
|
char usrDirPath[MAX_PATH_LENGTH];
|
||||||
char DEFAULT_PRESET_FILE[MAX_PATH_LENGTH];
|
char DEFAULT_PRESET_FILE[MAX_PATH_LENGTH];
|
||||||
|
@ -69,12 +67,6 @@ SYS_PROCESS_PARAM(1001, 0x100000)
|
||||||
|
|
||||||
#undef main
|
#undef main
|
||||||
|
|
||||||
void set_text_message(const char * message, uint32_t speed)
|
|
||||||
{
|
|
||||||
snprintf(special_action_msg, sizeof(special_action_msg), message);
|
|
||||||
SET_TIMER_EXPIRATION(speed);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void set_default_settings(void)
|
static void set_default_settings(void)
|
||||||
{
|
{
|
||||||
// g_settings
|
// g_settings
|
||||||
|
|
29
ps3/menu.c
29
ps3/menu.c
|
@ -44,6 +44,8 @@
|
||||||
menu menuStack[25];
|
menu menuStack[25];
|
||||||
int menuStackindex = 0;
|
int menuStackindex = 0;
|
||||||
static bool set_initial_dir_tmpbrowser;
|
static bool set_initial_dir_tmpbrowser;
|
||||||
|
|
||||||
|
char special_action_msg[256]; /* message which should be overlaid on top of the screen */
|
||||||
filebrowser_t browser; /* main file browser->for rom browser*/
|
filebrowser_t browser; /* main file browser->for rom browser*/
|
||||||
filebrowser_t tmpBrowser; /* tmp file browser->for everything else*/
|
filebrowser_t tmpBrowser; /* tmp file browser->for everything else*/
|
||||||
uint32_t set_shader = 0;
|
uint32_t set_shader = 0;
|
||||||
|
@ -155,6 +157,12 @@ static void display_menubar(uint32_t menu_enum)
|
||||||
cellDbgFontDraw();
|
cellDbgFontDraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void set_text_message(const char * message, unsigned speed)
|
||||||
|
{
|
||||||
|
strlcpy(special_action_msg, message, sizeof(special_action_msg));
|
||||||
|
SET_TIMER_EXPIRATION(g_console.control_timer_expiration_frame_count, speed);
|
||||||
|
}
|
||||||
|
|
||||||
static void browser_update(filebrowser_t * b)
|
static void browser_update(filebrowser_t * b)
|
||||||
{
|
{
|
||||||
static uint64_t old_state = 0;
|
static uint64_t old_state = 0;
|
||||||
|
@ -164,7 +172,7 @@ static void browser_update(filebrowser_t * b)
|
||||||
diff_state = old_state ^ state;
|
diff_state = old_state ^ state;
|
||||||
button_was_pressed = old_state & diff_state;
|
button_was_pressed = old_state & diff_state;
|
||||||
|
|
||||||
if(IS_TIMER_EXPIRED())
|
if(IS_TIMER_EXPIRED(g_console.control_timer_expiration_frame_count))
|
||||||
{
|
{
|
||||||
if (CTRL_LSTICK_DOWN(state))
|
if (CTRL_LSTICK_DOWN(state))
|
||||||
{
|
{
|
||||||
|
@ -678,6 +686,8 @@ static void menu_reinit_settings (void)
|
||||||
menu_init_settings_pages(&menu_controlssettings);
|
menu_init_settings_pages(&menu_controlssettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define INPUT_SCALE 2
|
||||||
|
|
||||||
static void apply_scaling (unsigned init_mode)
|
static void apply_scaling (unsigned init_mode)
|
||||||
{
|
{
|
||||||
switch(init_mode)
|
switch(init_mode)
|
||||||
|
@ -686,13 +696,13 @@ static void apply_scaling (unsigned init_mode)
|
||||||
gl_deinit_fbo(g_gl);
|
gl_deinit_fbo(g_gl);
|
||||||
break;
|
break;
|
||||||
case FBO_INIT:
|
case FBO_INIT:
|
||||||
gl_init_fbo(g_gl, SSNES_SCALE_BASE * (unsigned)(g_settings.video.fbo_scale_x),
|
gl_init_fbo(g_gl, SSNES_SCALE_BASE * INPUT_SCALE,
|
||||||
SSNES_SCALE_BASE * (unsigned)(g_settings.video.fbo_scale_y));
|
SSNES_SCALE_BASE * INPUT_SCALE);
|
||||||
break;
|
break;
|
||||||
case FBO_REINIT:
|
case FBO_REINIT:
|
||||||
gl_deinit_fbo(g_gl);
|
gl_deinit_fbo(g_gl);
|
||||||
gl_init_fbo(g_gl, SSNES_SCALE_BASE * (unsigned)(g_settings.video.fbo_scale_x),
|
gl_init_fbo(g_gl, SSNES_SCALE_BASE * INPUT_SCALE,
|
||||||
SSNES_SCALE_BASE * (unsigned)(g_settings.video.fbo_scale_y));
|
SSNES_SCALE_BASE * INPUT_SCALE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1444,7 +1454,7 @@ static void select_setting(menu * menu_obj)
|
||||||
button_was_pressed = old_state & diff_state;
|
button_was_pressed = old_state & diff_state;
|
||||||
|
|
||||||
|
|
||||||
if(IS_TIMER_EXPIRED())
|
if(IS_TIMER_EXPIRED(g_console.control_timer_expiration_frame_count))
|
||||||
{
|
{
|
||||||
/* back to ROM menu if CIRCLE is pressed */
|
/* back to ROM menu if CIRCLE is pressed */
|
||||||
if (CTRL_L1(button_was_pressed) || CTRL_CIRCLE(button_was_pressed))
|
if (CTRL_L1(button_was_pressed) || CTRL_CIRCLE(button_was_pressed))
|
||||||
|
@ -1670,7 +1680,7 @@ static void ingame_menu(uint32_t menu_id)
|
||||||
uint64_t stuck_in_loop = 1;
|
uint64_t stuck_in_loop = 1;
|
||||||
static uint64_t blocking = 0;
|
static uint64_t blocking = 0;
|
||||||
|
|
||||||
if(IS_TIMER_EXPIRED() && blocking == false)
|
if(IS_TIMER_EXPIRED(g_console.control_timer_expiration_frame_count) && blocking == false)
|
||||||
{
|
{
|
||||||
if(CTRL_CIRCLE(state))
|
if(CTRL_CIRCLE(state))
|
||||||
return_to_game();
|
return_to_game();
|
||||||
|
@ -2005,11 +2015,8 @@ static void ingame_menu(uint32_t menu_id)
|
||||||
cellDbgFontPrintf (0.3f, 0.05f, 0.82f, WHITE, "Libsnes core: %s", snes_library_id());
|
cellDbgFontPrintf (0.3f, 0.05f, 0.82f, WHITE, "Libsnes core: %s", snes_library_id());
|
||||||
cellDbgFontPrintf (0.7f, 0.05f, 0.82f, WHITE, "%s v%s", EMULATOR_NAME, EMULATOR_VERSION);
|
cellDbgFontPrintf (0.7f, 0.05f, 0.82f, WHITE, "%s v%s", EMULATOR_NAME, EMULATOR_VERSION);
|
||||||
cellDbgFontDraw();
|
cellDbgFontDraw();
|
||||||
if(IS_TIMER_NOT_EXPIRED())
|
|
||||||
{
|
|
||||||
cellDbgFontPrintf (0.05f, 0.90f, 1.10f, WHITE, special_action_msg);
|
cellDbgFontPrintf (0.05f, 0.90f, 1.10f, WHITE, special_action_msg);
|
||||||
cellDbgFontDraw();
|
cellDbgFontDraw();
|
||||||
}
|
|
||||||
cellDbgFontPrintf(0.09f, 0.83f, 0.91f, LIGHTBLUE, comment);
|
cellDbgFontPrintf(0.09f, 0.83f, 0.91f, LIGHTBLUE, comment);
|
||||||
cellDbgFontDraw();
|
cellDbgFontDraw();
|
||||||
}
|
}
|
||||||
|
@ -2084,7 +2091,7 @@ void menu_loop(void)
|
||||||
|
|
||||||
if(g_console.mode_switch == MODE_EMULATION && !g_console.frame_advance_enable)
|
if(g_console.mode_switch == MODE_EMULATION && !g_console.frame_advance_enable)
|
||||||
{
|
{
|
||||||
SET_TIMER_EXPIRATION(30);
|
SET_TIMER_EXPIRATION(g_console.timer_expiration_frame_count, 30);
|
||||||
}
|
}
|
||||||
|
|
||||||
video_gl.swap(NULL);
|
video_gl.swap(NULL);
|
||||||
|
|
|
@ -106,18 +106,18 @@ static bool ps3_key_pressed(void *data, int key)
|
||||||
case SSNES_REWIND:
|
case SSNES_REWIND:
|
||||||
return CTRL_RSTICK_UP(state[0]) && CTRL_R2(~state[0]);
|
return CTRL_RSTICK_UP(state[0]) && CTRL_R2(~state[0]);
|
||||||
case SSNES_QUIT_KEY:
|
case SSNES_QUIT_KEY:
|
||||||
if(IS_TIMER_EXPIRED())
|
if(IS_TIMER_EXPIRED(g_console.timer_expiration_frame_count))
|
||||||
{
|
{
|
||||||
uint32_t r3_pressed = CTRL_R3(state[0]);
|
uint32_t r3_pressed = CTRL_R3(state[0]);
|
||||||
uint32_t l3_pressed = CTRL_L3(state[0]);
|
uint32_t l3_pressed = CTRL_L3(state[0]);
|
||||||
bool retval = false;
|
bool retval = false;
|
||||||
g_console.menu_enable = (r3_pressed && l3_pressed && IS_TIMER_EXPIRED());
|
g_console.menu_enable = (r3_pressed && l3_pressed && IS_TIMER_EXPIRED(g_console.timer_expiration_frame_count));
|
||||||
g_console.ingame_menu_enable = r3_pressed && !l3_pressed;
|
g_console.ingame_menu_enable = r3_pressed && !l3_pressed;
|
||||||
|
|
||||||
if(g_console.menu_enable || (g_console.ingame_menu_enable && !g_console.menu_enable))
|
if(g_console.menu_enable || (g_console.ingame_menu_enable && !g_console.menu_enable))
|
||||||
{
|
{
|
||||||
g_console.mode_switch = MODE_MENU;
|
g_console.mode_switch = MODE_MENU;
|
||||||
SET_TIMER_EXPIRATION(30);
|
SET_TIMER_EXPIRATION(g_console.control_timer_expiration_frame_count, 30);
|
||||||
retval = g_console.menu_enable;
|
retval = g_console.menu_enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -627,8 +627,6 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei
|
||||||
|
|
||||||
glDrawArrays(GL_QUADS, 0, 4);
|
glDrawArrays(GL_QUADS, 0, 4);
|
||||||
|
|
||||||
if (gl->fbo_inited)
|
|
||||||
{
|
|
||||||
if (gl->fbo_inited)
|
if (gl->fbo_inited)
|
||||||
{
|
{
|
||||||
// Render the rest of our passes.
|
// Render the rest of our passes.
|
||||||
|
@ -702,7 +700,6 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei
|
||||||
|
|
||||||
glTexCoordPointer(2, GL_FLOAT, 0, gl->tex_coords);
|
glTexCoordPointer(2, GL_FLOAT, 0, gl->tex_coords);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
memmove(gl->prev_info + 1, gl->prev_info, sizeof(tex_info) * (TEXTURES - 1));
|
memmove(gl->prev_info + 1, gl->prev_info, sizeof(tex_info) * (TEXTURES - 1));
|
||||||
memcpy(&gl->prev_info[0], &tex_info, sizeof(tex_info));
|
memcpy(&gl->prev_info[0], &tex_info, sizeof(tex_info));
|
||||||
|
|
|
@ -37,9 +37,9 @@
|
||||||
#define MIN_SCALING_FACTOR (1.0f)
|
#define MIN_SCALING_FACTOR (1.0f)
|
||||||
#define MAX_SCALING_FACTOR (4.0f)
|
#define MAX_SCALING_FACTOR (4.0f)
|
||||||
|
|
||||||
#define IS_TIMER_NOT_EXPIRED() (g_frame_count < g_console.timer_expiration_frame_count)
|
#define IS_TIMER_NOT_EXPIRED(getter) (g_frame_count < getter)
|
||||||
#define IS_TIMER_EXPIRED() (!(IS_TIMER_NOT_EXPIRED()))
|
#define IS_TIMER_EXPIRED(getter) (!(IS_TIMER_NOT_EXPIRED(getter)))
|
||||||
#define SET_TIMER_EXPIRATION(value) g_console.timer_expiration_frame_count = g_frame_count + value;
|
#define SET_TIMER_EXPIRATION(setter, value) setter = g_frame_count + value;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
|
|
@ -57,7 +57,6 @@ enum {
|
||||||
|
|
||||||
#define MENU_ITEM_LAST MENU_ITEM_RETURN_TO_XMB+1
|
#define MENU_ITEM_LAST MENU_ITEM_RETURN_TO_XMB+1
|
||||||
|
|
||||||
extern char special_action_msg[256];
|
|
||||||
extern unsigned g_frame_count;
|
extern unsigned g_frame_count;
|
||||||
extern bool g_quitting;
|
extern bool g_quitting;
|
||||||
|
|
||||||
|
@ -75,5 +74,3 @@ extern char DEFAULT_SHADER_FILE[MAX_PATH_LENGTH];
|
||||||
extern char DEFAULT_MENU_SHADER_FILE[MAX_PATH_LENGTH];
|
extern char DEFAULT_MENU_SHADER_FILE[MAX_PATH_LENGTH];
|
||||||
extern char SYS_CONFIG_FILE[MAX_PATH_LENGTH];
|
extern char SYS_CONFIG_FILE[MAX_PATH_LENGTH];
|
||||||
extern char MULTIMAN_GAME_TO_BOOT[MAX_PATH_LENGTH];
|
extern char MULTIMAN_GAME_TO_BOOT[MAX_PATH_LENGTH];
|
||||||
|
|
||||||
extern void set_text_message(const char * message, uint32_t speed);
|
|
||||||
|
|
Loading…
Reference in New Issue