From 7cfe0fef400c412f8039bba8c842b5235b3719d2 Mon Sep 17 00:00:00 2001 From: freakdave Date: Sun, 15 Jul 2012 20:49:34 +0200 Subject: [PATCH 1/2] (Xbox 1) Fixed debug output not showing correctly on HDTV's (Xbox 1) Fixed debug output in debug mode not showing the second line (FPS/Frames) --- msvc/RetroArch-Xbox1/RetroArch-Xbox1.vcproj | 6 +++--- xbox1/xdk_d3d8.cpp | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/msvc/RetroArch-Xbox1/RetroArch-Xbox1.vcproj b/msvc/RetroArch-Xbox1/RetroArch-Xbox1.vcproj index a0736faea7..463b0679ef 100644 --- a/msvc/RetroArch-Xbox1/RetroArch-Xbox1.vcproj +++ b/msvc/RetroArch-Xbox1/RetroArch-Xbox1.vcproj @@ -19,18 +19,18 @@ CharacterSet="2"> + DebugInformationFormat="3"/> d3d_render_device->SetViewport(&vp); + font_x = vp.X; + font_y = vp.Y; + //if(gl->overscan_enable && !force_full) //{ // m_left = -gl->overscan_amount/2; @@ -346,6 +350,9 @@ static void *xdk_d3d_init(const video_info_t *video, const input_driver_t **inpu d3d->debug_font->SetBkColor(D3DCOLOR_ARGB(100,0,0,0)); d3d->debug_font->SetTextHeight(14); d3d->debug_font->SetTextAntialiasLevel(d3d->debug_font->GetTextAntialiasLevel()); + + font_x = 0; + font_y = 0; #endif return d3d; @@ -448,10 +455,10 @@ static bool xdk_d3d_frame(void *data, const void *frame, bool ret = false; sprintf(buf, "%.2f MB free / %.2f MB total", stat.dwAvailPhys/(1024.0f*1024.0f), stat.dwTotalPhys/(1024.0f*1024.0f)); rarch_convert_char_to_wchar(strw_buffer, buf, sizeof(strw_buffer)); - d3d->debug_font->TextOut(d3d->pFrontBuffer, strw_buffer, (unsigned)-1, 30, 50 ); - d3d->debug_font->TextOut(d3d->pBackBuffer, strw_buffer, (unsigned)-1, 30, 50 ); + d3d->debug_font->TextOut(d3d->pFrontBuffer, strw_buffer, (unsigned)-1, font_x + 30, font_y + 50 ); + d3d->debug_font->TextOut(d3d->pBackBuffer, strw_buffer, (unsigned)-1, font_x + 30, font_y + 50 ); - if(ret = gfx_window_title(buf2, sizeof(buf2)) || buf_fps_last) + if(ret = gfx_window_title(buf2, sizeof(buf2)) || sizeof(buf_fps_last)) { if(ret) { @@ -459,10 +466,12 @@ static bool xdk_d3d_frame(void *data, const void *frame, rarch_convert_char_to_wchar(strw_buffer, buf2, sizeof(strw_buffer)); } else if(buf_fps_last) + { rarch_convert_char_to_wchar(strw_buffer, buf_fps_last, sizeof(strw_buffer)); + } - d3d->debug_font->TextOut(d3d->pFrontBuffer, strw_buffer, (unsigned)-1, 30, 70 ); - d3d->debug_font->TextOut(d3d->pBackBuffer, strw_buffer, (unsigned)-1, 30, 70 ); + d3d->debug_font->TextOut(d3d->pFrontBuffer, strw_buffer, (unsigned)-1, font_x + 30, font_y + 70 ); + d3d->debug_font->TextOut(d3d->pBackBuffer, strw_buffer, (unsigned)-1, font_x + 30, font_y + 70 ); d3d->pFrontBuffer->Release(); d3d->pBackBuffer->Release(); } From 64378ea0725634a81f3d542518d5f41dc80fa48f Mon Sep 17 00:00:00 2001 From: freakdave Date: Thu, 19 Jul 2012 16:53:24 +0200 Subject: [PATCH 2/2] (Xbox 1) Fixed low volume issue --- audio/dsound.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/audio/dsound.c b/audio/dsound.c index c4b5bdae89..d3668cf037 100644 --- a/audio/dsound.c +++ b/audio/dsound.c @@ -21,6 +21,18 @@ // The caller does not have the priority level required for the function to // succeed #define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT(70) +// Send the audio signal (stereo, without attenuation) to all existing speakers +DSMIXBINVOLUMEPAIR dsmbvp[8] = { + {DSMIXBIN_FRONT_LEFT, DSBVOLUME_MAX}, + {DSMIXBIN_FRONT_RIGHT, DSBVOLUME_MAX}, + {DSMIXBIN_FRONT_CENTER, DSBVOLUME_MAX}, + {DSMIXBIN_FRONT_CENTER, DSBVOLUME_MAX}, + {DSMIXBIN_BACK_LEFT, DSBVOLUME_MAX}, + {DSMIXBIN_BACK_RIGHT, DSBVOLUME_MAX}, + {DSMIXBIN_LOW_FREQUENCY, DSBVOLUME_MAX}, + {DSMIXBIN_LOW_FREQUENCY, DSBVOLUME_MAX}}; + +DSMIXBINS dsmb; #endif #include "../driver.h" @@ -338,6 +350,16 @@ static void *dsound_init(const char *device, unsigned rate, unsigned latency) if (IDirectSound_CreateSoundBuffer(ds->ds, &bufdesc, &ds->dsb, 0) != DS_OK) goto error; + IDirectSoundBuffer_SetVolume(ds->dsb, DSBVOLUME_MAX); + +#ifdef _XBOX + dsmb.dwMixBinCount = 8; + dsmb.lpMixBinVolumePairs = dsmbvp; + + IDirectSoundBuffer_SetHeadroom(ds->dsb, DSBHEADROOM_MIN); + IDirectSoundBuffer_SetMixBins(ds->dsb, &dsmb); +#endif + IDirectSoundBuffer_SetCurrentPosition(ds->dsb, 0); dsound_clear_buffer(ds);