(360) Build fixes

This commit is contained in:
twinaphex 2012-11-19 04:46:48 +01:00
parent f0ebecfc32
commit 52f52bc253
5 changed files with 115 additions and 118 deletions

View File

@ -38,7 +38,6 @@ HXUIOBJ hCur;
filebrowser_t browser;
filebrowser_t tmp_browser;
uint32_t set_shader = 0;
static const rmenu_context_t *context;
wchar_t strw_buffer[PATH_MAX];
char str_buffer[PATH_MAX];
@ -384,7 +383,7 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled)
m_settingslist.SetText(SETTING_GAMMA_CORRECTION_ENABLED, g_extern.console.screen.gamma_correction ? L"Gamma correction: ON" : L"Gamma correction: OFF");
m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER, g_settings.video.smooth ? L"Hardware filtering shader #1: Linear interpolation" : L"Hardware filtering shader #1: Point filtering");
m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER_2, g_settings.video.second_pass_smooth ? L"Hardware filtering shader #2: Linear interpolation" : L"Hardware filtering shader #2: Point filtering");
m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.fbo.enable ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF");
m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.render_to_texture ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF");
rarch_settings_create_menu_item_label_w(strw_buffer, S_LBL_SHADER, sizeof(strw_buffer));
m_settingslist.SetText(SETTING_SHADER, strw_buffer);
m_settingslist.SetText(SETTING_COLOR_FORMAT, g_settings.video.color_format ? L"Color format: 32bit ARGB" : L"Color format: 16bit RGBA");
@ -400,6 +399,7 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled)
HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled )
{
xdk_d3d_video_t *device_ptr = (xdk_d3d_video_t*)driver.video_data;
int current_index;
HRESULT hr;
@ -472,9 +472,9 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled
m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER_2, g_settings.video.second_pass_smooth ? L"Hardware filtering shader #2: Linear interpolation" : L"Hardware filtering shader #2: Point filtering");
break;
case SETTING_SCALE_ENABLED:
g_settings.video.fbo.enable = !g_settings.video.fbo.enable;
m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.fbo.enable ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF");
context->set_fbo_enable(g_settings.video.fbo.enable);
g_settings.video.render_to_texture = !g_settings.video.render_to_texture;
m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.render_to_texture ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF");
device_ptr->ctx_driver->set_fbo(g_settings.video.render_to_texture);
break;
case SETTING_ZIP_EXTRACT:
if(g_extern.file_state.zip_extract_mode < ZIP_EXTRACT_TO_CACHE_DIR)
@ -494,7 +494,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled
HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled)
{
int current_index;
xdk_d3d_video_t *vid = (xdk_d3d_video_t*)driver.video_data;
xdk_d3d_video_t *device_ptr = (xdk_d3d_video_t*)driver.video_data;
current_index = m_settingslist.GetCurSel();
@ -531,7 +531,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro
rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180);
break;
case SETTING_SCALE_FACTOR:
if(vid->fbo_enabled)
if(device_ptr->fbo_inited)
{
if((g_settings.video.fbo.scale_x > MIN_SCALING_FACTOR))
{
@ -557,9 +557,9 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro
m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER_2, g_settings.video.second_pass_smooth ? L"Hardware filtering shader #2: Linear interpolation" : L"Hardware filtering shader #2: Point filtering");
break;
case SETTING_SCALE_ENABLED:
g_settings.video.fbo.enable = !g_settings.video.fbo.enable;
m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.fbo.enable ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF");
context->set_fbo_enable(g_settings.video.fbo.enable);
g_settings.video.render_to_texture = !g_settings.video.render_to_texture;
m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.render_to_texture ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF");
device_ptr->ctx_driver->set_fbo(g_settings.video.render_to_texture);
break;
default:
break;
@ -596,7 +596,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro
rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180);
break;
case SETTING_SCALE_FACTOR:
if(vid->fbo_enabled)
if(device_ptr->fbo_inited)
{
if((g_settings.video.fbo.scale_x < MAX_SCALING_FACTOR))
{
@ -622,9 +622,9 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro
m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER_2, g_settings.video.second_pass_smooth ? L"Hardware filtering shader #2: Linear interpolation" : L"Hardware filtering shader #2: Point filtering");
break;
case SETTING_SCALE_ENABLED:
g_settings.video.fbo.enable = !g_settings.video.fbo.enable;
m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.fbo.enable ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF");
context->set_fbo_enable(g_settings.video.fbo.enable);
g_settings.video.render_to_texture = !g_settings.video.render_to_texture;
m_settingslist.SetText(SETTING_SCALE_ENABLED, g_settings.video.render_to_texture ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF");
device_ptr->ctx_driver->set_fbo(g_settings.video.render_to_texture);
break;
default:
break;
@ -739,7 +739,7 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr
if(aspectratio_changed)
{
context->set_aspect_ratio(g_settings.video.aspect_ratio_idx);
driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx);
rarch_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer));
m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, strw_buffer);
}
@ -763,7 +763,7 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr
HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled )
{
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
xdk_d3d_video_t *device_ptr = (xdk_d3d_video_t*)driver.video_data;
int current_index;
if ( hObjPressed == m_quickmenulist)
@ -788,7 +788,7 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled
break;
case MENU_ITEM_KEEP_ASPECT_RATIO:
rarch_settings_default(S_DEF_ASPECT_RATIO);
context->set_aspect_ratio(g_settings.video.aspect_ratio_idx);
driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx);
rarch_settings_create_menu_item_label_w(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer));
m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, strw_buffer);
break;
@ -814,7 +814,7 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled
break;
case MENU_ITEM_SCREENSHOT_MODE:
if (g_extern.console.rmenu.state.msg_info.enable)
gfx_ctx_xdk_screenshot_dump(NULL);
device_ptr->ctx_driver->rmenu_screenshot_dump(NULL);
break;
case MENU_ITEM_RESET:
if (g_extern.console.emulator_initialized)
@ -1042,13 +1042,11 @@ void menu_init (void)
{
HRESULT hr;
context = (rmenu_context_t*)&rmenu_ctx_xdk;
xdk_d3d_video_t *vid = (xdk_d3d_video_t*)driver.video_data;
xdk_d3d_video_t *device_ptr = (xdk_d3d_video_t*)driver.video_data;
bool hdmenus_allowed = g_extern.console.rmenu.state.rmenu_hd.enable;
hr = app.InitShared(vid->d3d_render_device, &vid->d3dpp, XuiPNGTextureLoader);
hr = app.InitShared(device_ptr->d3d_render_device, &device_ptr->d3dpp, XuiPNGTextureLoader);
if (hr < 0)
{
@ -1131,11 +1129,11 @@ static void ingame_menu_resize (void)
void menu_loop(void)
{
HRESULT hr;
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
xdk_d3d_video_t *device_ptr = (xdk_d3d_video_t*)driver.video_data;
g_extern.console.rmenu.state.rmenu.enable = true;
d3d->block_swap = true;
device_ptr->block_swap = true;
g_extern.console.rmenu.input_loop = INPUT_LOOP_MENU;
@ -1145,8 +1143,8 @@ void menu_loop(void)
rarch_render_cached_frame();
else
{
d3d->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0, 0, 0, 0), 1.0f, 0);
d3d->frame_count++;
device_ptr->ctx_driver->clear();
device_ptr->frame_count++;
}
XINPUT_STATE state;
@ -1154,7 +1152,7 @@ void menu_loop(void)
g_extern.console.rmenu.state.rmenu.enable = !((state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB)
&& (state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) && (g_extern.console.emulator_initialized)
&& IS_TIMER_EXPIRED(d3d));
&& IS_TIMER_EXPIRED(device_ptr));
g_extern.console.rmenu.mode = g_extern.console.rmenu.state.rmenu.enable ? MODE_MENU : MODE_EMULATION;
@ -1186,20 +1184,20 @@ void menu_loop(void)
if(g_extern.console.rmenu.mode == MODE_EMULATION && !g_extern.console.screen.state.frame_advance.enable)
{
SET_TIMER_EXPIRATION(d3d, 30);
SET_TIMER_EXPIRATION(device_ptr, 30);
}
const char *message = msg_queue_pull(g_extern.msg_queue);
if (message)
{
xdk_render_msg(d3d, message);
xdk_render_msg(device_ptr, message);
}
context->swap_buffers();
device_ptr->ctx_driver->swap_buffers();
}while(g_extern.console.rmenu.state.rmenu.enable);
d3d->block_swap = false;
device_ptr->block_swap = false;
g_extern.console.rmenu.state.ingame_menu.enable = false;
}

View File

@ -82,8 +82,8 @@ texture_image m_menuMainRomSelectPanel;
texture_image m_menuMainBG;
// Rom list coords
int m_menuMainRomListPos_x;
int m_menuMainRomListPos_y;
unsigned m_menuMainRomListPos_x;
unsigned m_menuMainRomListPos_y;
#endif
bool rmenu_inited = false;
@ -131,6 +131,53 @@ static void gfx_ctx_xdk_check_window(bool *quit,
static void gfx_ctx_xdk_set_resize(unsigned width, unsigned height) { }
static bool gfx_ctx_xdk_menu_init(void)
{
#ifdef _XBOX1
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
int width = d3d->d3dpp.BackBufferWidth;
// Load background image
if(width == 640)
{
texture_image_load("D:\\Media\\main-menu_480p.png", &m_menuMainBG);
m_menuMainRomListPos_x = 60;
m_menuMainRomListPos_y = 80;
}
else if(width == 1280)
{
texture_image_load("D:\\Media\\main-menu_720p.png", &m_menuMainBG);
m_menuMainRomListPos_x = 360;
m_menuMainRomListPos_y = 130;
}
// Load rom selector panel
texture_image_load("D:\\Media\\menuMainRomSelectPanel.png", &m_menuMainRomSelectPanel);
//Display some text
//Center the text (hardcoded)
xpos = width == 640 ? 65 : 400;
ypos = width == 640 ? 430 : 670;
#endif
rmenu_inited = false;
return true;
}
static void gfx_ctx_xdk_menu_frame(void* data)
{
(void)data;
}
static void gfx_ctx_xdk_menu_free(void)
{
#ifdef _XBOX1
texture_image_free(&m_menuMainBG);
texture_image_free(&m_menuMainRomSelectPanel);
#endif
}
static void gfx_ctx_menu_enable(bool enable)
{
if (enable)
@ -176,48 +223,6 @@ static bool gfx_ctx_xdk_window_has_focus(void)
return true;
}
static bool gfx_ctx_xdk_menu_init(void)
{
#ifdef _XBOX1
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
int width = d3d->d3dpp.BackBufferWidth;
// Load background image
if(width == 640)
{
texture_image_load("D:\\Media\\main-menu_480p.png", &m_menuMainBG);
m_menuMainRomListPos_x = 60;
m_menuMainRomListPos_y = 80;
}
else if(width == 1280)
{
texture_image_load("D:\\Media\\main-menu_720p.png", &m_menuMainBG);
m_menuMainRomListPos_x = 360;
m_menuMainRomListPos_y = 130;
}
// Load rom selector panel
texture_image_load("D:\\Media\\menuMainRomSelectPanel.png", &m_menuMainRomSelectPanel);
//Display some text
//Center the text (hardcoded)
xpos = width == 640 ? 65 : 400;
ypos = width == 640 ? 430 : 670;
#endif
rmenu_inited = false;
return true;
}
static void gfx_ctx_xdk_menu_free(void)
{
#ifdef _XBOX1
texture_image_free(&m_menuMainBG);
texture_image_free(&m_menuMainRomSelectPanel);
#endif
}
static void gfx_ctx_xdk_menu_draw_bg(rarch_position_t *position)
{
#ifdef _XBOX1
@ -277,7 +282,29 @@ static void gfx_ctx_xdk_menu_screenshot_enable(bool enable)
static void gfx_ctx_xdk_menu_screenshot_dump(void *data)
{
gfx_ctx_xdk_screenshot_dump(NULL);
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
HRESULT ret = S_OK;
char filename[PATH_MAX];
char shotname[PATH_MAX];
screenshot_generate_filename(shotname, sizeof(shotname));
snprintf(filename, sizeof(filename), "%s\\%s", default_paths.screenshots_dir, shotname);
#if defined(_XBOX1)
D3DSurface *surf = NULL;
d3d->d3d_render_device->GetBackBuffer(-1, D3DBACKBUFFER_TYPE_MONO, &surf);
ret = XGWriteSurfaceToFile(surf, filename);
surf->Release();
#elif defined(_XBOX360)
ret = 1; //false
//ret = D3DXSaveTextureToFile(filename, D3DXIFF_BMP, d3d->lpTexture, NULL);
#endif
if(ret == S_OK)
{
RARCH_LOG("Screenshot saved: %s.\n", filename);
msg_queue_push(g_extern.msg_queue, "Screenshot saved.", 1, 30);
}
}
static const char *gfx_ctx_xdk_menu_drive_mapping_previous(void)
@ -626,48 +653,18 @@ static void gfx_ctx_xdk_destroy(void)
static void gfx_ctx_xdk_input_driver(const input_driver_t **input, void **input_data) { }
static void gfx_ctx_xdk_set_filtering(unsigned index, bool set_smooth)
{
/* TODO: implement */
}
static void gfx_ctx_xdk_set_filtering(unsigned index, bool set_smooth) { }
static void gfx_ctx_xdk_set_fbo(bool enable)
static void gfx_ctx_xdk_set_fbo(unsigned enable)
{
#ifdef HAVE_FBO
/* TODO: implement properly */
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
xdk_d3d_video_t *device_ptr = (xdk_d3d_video_t*)driver.video_data;
d3d->fbo_enabled = enable;
device_ptr->fbo_inited = enable;
#endif
}
void gfx_ctx_xdk_screenshot_dump(void *data)
{
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
HRESULT ret = S_OK;
char filename[PATH_MAX];
char shotname[PATH_MAX];
screenshot_generate_filename(shotname, sizeof(shotname));
snprintf(filename, sizeof(filename), "%s\\%s", default_paths.screenshots_dir, shotname);
#if defined(_XBOX1)
D3DSurface *surf = NULL;
d3d->d3d_render_device->GetBackBuffer(-1, D3DBACKBUFFER_TYPE_MONO, &surf);
ret = XGWriteSurfaceToFile(surf, filename);
surf->Release();
#elif defined(_XBOX360)
ret = 1; //false
//ret = D3DXSaveTextureToFile(filename, D3DXIFF_BMP, d3d->lpTexture, NULL);
#endif
if(ret == S_OK)
{
RARCH_LOG("Screenshot saved: %s.\n", filename);
msg_queue_push(g_extern.msg_queue, "Screenshot saved.", 1, 30);
}
}
static bool gfx_ctx_xdk_bind_api(enum gfx_ctx_api api)
{
#if defined(_XBOX1)
@ -735,6 +732,7 @@ const gfx_ctx_driver_t gfx_ctx_xdk = {
gfx_ctx_xdk_check_resolution,
gfx_ctx_xdk_set_fbo,
#if defined(HAVE_RMENU) || defined(_XBOX360)
gfx_ctx_xdk_menu_init,
gfx_ctx_xdk_menu_frame,
gfx_ctx_xdk_menu_free,
@ -747,4 +745,5 @@ const gfx_ctx_driver_t gfx_ctx_xdk = {
gfx_ctx_xdk_menu_screenshot_dump,
gfx_ctx_xdk_menu_drive_mapping_previous,
gfx_ctx_xdk_menu_drive_mapping_next
#endif
};

View File

@ -113,7 +113,7 @@ typedef struct gfx_ctx_driver
void (*set_fbo)(unsigned);
#endif
#ifdef HAVE_RMENU
#if defined(HAVE_RMENU) || defined(_XBOX360)
bool (*rmenu_init)(void);
void (*rmenu_frame)(void *data);
void (*rmenu_free)(void);

View File

@ -321,7 +321,7 @@ static void xdk_d3d_init_fbo(xdk_d3d_video_t *d3d)
d3d->lpTexture_ot_as16srgb = *d3d->lpTexture_ot;
xdk_convert_texture_to_as16_srgb(d3d->lpTexture);
xdk_convert_texture_to_as16_srgb(&d3d->lpTexture_ot_as16srgb);
d3d->fbo_enabled = 1;
d3d->fbo_inited = 1;
}
#endif
@ -343,9 +343,9 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu
#if defined(_XBOX1)
d3d->driver = gfx_ctx_init_first(GFX_CTX_DIRECT3D8_API);
#elif defined(_XBOX360)
d3d->driver = gfx_ctx_init_first(GFX_CTX_DIRECT3D9_API);
d3d->ctx_driver = gfx_ctx_init_first(GFX_CTX_DIRECT3D9_API);
#endif
if (!d3d->driver)
if (!d3d->ctx_driver)
{
free(d3d);
return NULL;
@ -467,7 +467,7 @@ static bool xdk_d3d_frame(void *data, const void *frame,
}
#ifdef HAVE_FBO
if (d3d->fbo_enabled)
if (d3d->fbo_inited)
{
d3d->d3d_render_device->GetRenderTarget(0, &pRenderTarget0);
d3d->d3d_render_device->SetRenderTarget(0, d3d->lpSurface);
@ -490,7 +490,7 @@ static bool xdk_d3d_frame(void *data, const void *frame,
#endif
#ifdef HAVE_FBO
if(d3d->fbo_enabled)
if(d3d->fbo_inited)
{
#ifdef HAVE_HLSL
hlsl_set_params(width, height, 512, 512, g_settings.video.fbo.scale_x * width,
@ -560,7 +560,7 @@ static bool xdk_d3d_frame(void *data, const void *frame,
#endif
#ifdef HAVE_FBO
if(d3d->fbo_enabled)
if(d3d->fbo_inited)
{
d3d->d3d_render_device->Resolve(D3DRESOLVE_RENDERTARGET0, NULL, d3d->lpTexture_ot,
NULL, 0, 0, NULL, 0, 0, NULL);

View File

@ -57,7 +57,7 @@ typedef struct xdk_d3d_video
const gfx_ctx_driver_t *ctx_driver;
bool block_swap;
#ifdef HAVE_FBO
bool fbo_enabled;
bool fbo_inited;
#endif
bool should_resize;
bool quitting;