From ee77a2dac7d173c2638b995ba8dbceb4b5973531 Mon Sep 17 00:00:00 2001 From: freakdave Date: Tue, 7 Aug 2012 14:39:27 +0200 Subject: [PATCH 1/3] (Xbox 1) Fixed screen rotation code --- console/salamander/main.c | 2 +- xbox1/xdk_d3d8.cpp | 27 +++++++++++++-------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/console/salamander/main.c b/console/salamander/main.c index d5b944ac19..be23b1573f 100644 --- a/console/salamander/main.c +++ b/console/salamander/main.c @@ -249,7 +249,7 @@ static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdat int main(int argc, char *argv[]) { #if defined(_XBOX) - XINPUT_STATE state; + XINPUT_STATE state; //C4101 get_environment_settings(); diff --git a/xbox1/xdk_d3d8.cpp b/xbox1/xdk_d3d8.cpp index 462b266153..90c7e49bfb 100644 --- a/xbox1/xdk_d3d8.cpp +++ b/xbox1/xdk_d3d8.cpp @@ -33,6 +33,7 @@ wchar_t strw_buffer[128]; unsigned font_x, font_y; +FLOAT angle; static void check_window(xdk_d3d_video_t *d3d) { @@ -147,31 +148,26 @@ static void xdk_d3d_set_rotation(void * data, unsigned orientation) { (void)data; xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)data; - FLOAT angle; switch(orientation) { case ORIENTATION_NORMAL: angle = M_PI * 0 / 180; + RARCH_LOG("D3D8: Set rotation to ORIENTATION_NORMAL\n"); break; case ORIENTATION_VERTICAL: angle = M_PI * 270 / 180; + RARCH_LOG("D3D8: Set rotation to ORIENTATION_VERTICAL\n"); break; case ORIENTATION_FLIPPED: angle = M_PI * 180 / 180; + RARCH_LOG("D3D8: Set rotation to ORIENTATION_FLIPPED\n"); break; case ORIENTATION_FLIPPED_ROTATED: angle = M_PI * 90 / 180; + RARCH_LOG("D3D8: Set rotation to ORIENTATION_FLIPPED_ROTATED\n"); break; } - - /* - D3DXMATRIX p_out; - D3DXMatrixIdentity(&p_out); - d3d->d3d_render_device->SetTransform(D3DTS_PROJECTION, &p_out); - - d3d->should_resize = TRUE; - */ } static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **input, void **input_data) @@ -187,7 +183,7 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu if (!d3d->d3d_device) { free(d3d); - RARCH_ERR("Failed to create a D3D8 object.\n"); + RARCH_ERR("D3D8: Failed to create a D3D8 object.\n"); return NULL; } @@ -429,13 +425,16 @@ static bool xdk_d3d_frame(void *data, const void *frame, d3d->d3d_render_device->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER); d3d->d3d_render_device->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER); - D3DXMATRIX p_out; + d3d->d3d_render_device->SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX1); + + D3DXMATRIX p_out, p_rotate; D3DXMatrixIdentity(&p_out); - d3d->d3d_render_device->SetTransform(D3DTS_WORLD, &p_out); + D3DXMatrixRotationZ(&p_rotate, angle); + + d3d->d3d_render_device->SetTransform(D3DTS_WORLD, &p_rotate); d3d->d3d_render_device->SetTransform(D3DTS_VIEW, &p_out); d3d->d3d_render_device->SetTransform(D3DTS_PROJECTION, &p_out); - d3d->d3d_render_device->SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX1); d3d->d3d_render_device->SetStreamSource(0, d3d->vertex_buf, sizeof(DrawVerticeFormats)); d3d->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, 0xff000000, 1.0f, 0); @@ -483,7 +482,7 @@ static void xdk_d3d_set_nonblock_state(void *data, bool state) if(d3d->vsync) { - RARCH_LOG("D3D Vsync => %s\n", state ? "off" : "on"); + RARCH_LOG("D3D8: Vsync => %s\n", state ? "off" : "on"); gfx_ctx_set_swap_interval(state ? 0 : 1, TRUE); } } From b174eb3f7a312f69926911573e96481bfa24e1a6 Mon Sep 17 00:00:00 2001 From: freakdave Date: Tue, 7 Aug 2012 16:26:12 +0200 Subject: [PATCH 2/3] (Xbox 1) Small but necessary bug fix in screen resize code (rmenu) --- console/rmenu/rmenu.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/console/rmenu/rmenu.c b/console/rmenu/rmenu.c index bcdd202ddb..ae8671141e 100644 --- a/console/rmenu/rmenu.c +++ b/console/rmenu/rmenu.c @@ -1868,15 +1868,23 @@ static void ingame_menu_resize(item *items, menu *current_menu, uint64_t input) gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); if(input & (1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_LEFT_DPAD_LEFT)) -#ifdef _XBOX1 + { +#ifdef _XBOX if(g_console.viewports.custom_vp.x >= 4) #endif + { g_console.viewports.custom_vp.x -= 4; + } + } else if(input & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) -#ifdef _XBOX1 + { +#ifdef _XBOX if(g_console.viewports.custom_vp.x > 0) #endif + { g_console.viewports.custom_vp.x -= 1; + } + } if(input & (1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_LEFT_DPAD_RIGHT)) g_console.viewports.custom_vp.x += 4; @@ -1889,15 +1897,23 @@ static void ingame_menu_resize(item *items, menu *current_menu, uint64_t input) g_console.viewports.custom_vp.y += 1; if(input & (1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_LEFT_DPAD_DOWN)) -#ifdef _XBOX1 + { +#ifdef _XBOX if(g_console.viewports.custom_vp.y >= 4) #endif + { g_console.viewports.custom_vp.y -= 4; + } + } else if(input & (1 << RETRO_DEVICE_ID_JOYPAD_DOWN)) -#ifdef _XBOX1 + { +#ifdef _XBOX if(g_console.viewports.custom_vp.y > 0) #endif + { g_console.viewports.custom_vp.y -= 1; + } + } if(input & (1 << RETRO_DEVICE_ID_JOYPAD_ANALOG_RIGHT_DPAD_LEFT)) g_console.viewports.custom_vp.width -= 4; From 565e7e0a6dcd1a196581a2db87fcee631951bce1 Mon Sep 17 00:00:00 2001 From: freakdave Date: Tue, 7 Aug 2012 16:36:29 +0200 Subject: [PATCH 3/3] (Xbox 1) Set SDFilter to default value (disabled), leave FFilter at 1 though --- gfx/context/xdk_ctx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gfx/context/xdk_ctx.c b/gfx/context/xdk_ctx.c index 8b69a01594..67e4ae0878 100644 --- a/gfx/context/xdk_ctx.c +++ b/gfx/context/xdk_ctx.c @@ -88,7 +88,7 @@ void gfx_ctx_clear(void) #ifdef _XBOX1 device_ptr->d3d_render_device->BeginScene(); device_ptr->d3d_render_device->SetFlickerFilter(1); - device_ptr->d3d_render_device->SetSoftDisplayFilter(1); + device_ptr->d3d_render_device->SetSoftDisplayFilter(false); #endif }