From 70dbebcb5eca771f6910f4edf7c3855c7ff43e60 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Mon, 28 May 2012 14:05:28 +0200 Subject: [PATCH 01/70] (360) Clean up font code + remove some Win32-isms --- 360/fonts.cpp | 1137 ++++++++++++++++++++---------------------- 360/fonts.h | 9 +- 360/menu.cpp | 24 +- 360/xdk360_video.cpp | 2 +- 360/xdk360_video.h | 2 - gfx/shader_hlsl.c | 8 +- 6 files changed, 553 insertions(+), 629 deletions(-) diff --git a/360/fonts.cpp b/360/fonts.cpp index 2cd55da47c..67448d8884 100644 --- a/360/fonts.cpp +++ b/360/fonts.cpp @@ -16,7 +16,6 @@ #define NONET #include -#include #include "xdk360_video.h" #include "fonts.h" #include "../general.h" @@ -24,203 +23,12 @@ static video_console_t video_console; static xdk360_video_font_t m_Font; -void xdk360_console_draw(void) -{ - xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; - D3DDevice *m_pd3dDevice = vid->d3d_render_device; - - // The top line - unsigned int nTextLine = ( video_console.m_nCurLine - - video_console.m_cScreenHeight + video_console.m_cScreenHeightVirtual - - video_console.m_nScrollOffset + 1 ) - % video_console.m_cScreenHeightVirtual; - - xdk360_video_font_begin(&m_Font); - - for( unsigned int nScreenLine = 0; nScreenLine < video_console.m_cScreenHeight; nScreenLine++ ) - { - xdk360_video_font_draw_text(&m_Font, (float)( video_console.m_cxSafeAreaOffset ), - (float)( video_console.m_cySafeAreaOffset + - video_console.m_fLineHeight * nScreenLine ), - video_console.m_colTextColor, - video_console.m_Lines[nTextLine], 0.0f ); - - nTextLine = ( nTextLine + 1 ) % video_console.m_cScreenHeightVirtual; - } - - xdk360_video_font_end(&m_Font); -} - -HRESULT xdk360_console_init( LPCSTR strFontFileName, unsigned long colBackColor, - unsigned long colTextColor) -{ - xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; - D3DDevice *m_pd3dDevice = vid->d3d_render_device; - - video_console.first_message = true; - video_console.m_Buffer = NULL; - video_console.m_Lines = NULL; - video_console.m_nScrollOffset = 0; - - // Calculate the safe area - unsigned int uiSafeAreaPct = vid->video_mode.fIsHiDef ? SAFE_AREA_PCT_HDTV - : SAFE_AREA_PCT_4x3; - - video_console.m_cxSafeArea = ( vid->d3dpp.BackBufferWidth * uiSafeAreaPct ) / 100; - video_console.m_cySafeArea = ( vid->d3dpp.BackBufferHeight * uiSafeAreaPct ) / 100; - - video_console.m_cxSafeAreaOffset = ( vid->d3dpp.BackBufferWidth - video_console.m_cxSafeArea ) / 2; - video_console.m_cySafeAreaOffset = ( vid->d3dpp.BackBufferHeight - video_console.m_cySafeArea ) / 2; - - // Create the font - HRESULT hr = xdk360_video_font_init(&m_Font, strFontFileName ); - if( FAILED( hr ) ) - { - RARCH_ERR( "Could not create font.\n" ); - return -1; - } - - // Save the colors - video_console.m_colBackColor = colBackColor; - video_console.m_colTextColor = colTextColor; - - // Calculate the number of lines on the screen - float fCharWidth, fCharHeight; - xdk360_video_font_get_text_width(&m_Font, L"i", &fCharWidth, &fCharHeight, FALSE); - - video_console.m_cScreenHeight = (unsigned int)( video_console.m_cySafeArea / fCharHeight ); - video_console.m_cScreenWidth = (unsigned int)( video_console.m_cxSafeArea / fCharWidth ); - - video_console.m_cScreenHeightVirtual = video_console.m_cScreenHeight; - - video_console.m_fLineHeight = fCharHeight; - - // Allocate memory to hold the lines - video_console.m_Buffer = new wchar_t[ video_console.m_cScreenHeightVirtual * ( video_console.m_cScreenWidth + 1 ) ]; - video_console.m_Lines = new wchar_t *[ video_console.m_cScreenHeightVirtual ]; - - // Set the line pointers as indexes into the buffer - for( unsigned int i = 0; i < video_console.m_cScreenHeightVirtual; i++ ) - video_console.m_Lines[ i ] = video_console.m_Buffer + ( video_console.m_cScreenWidth + 1 ) * i; - - video_console.m_nCurLine = 0; - video_console.m_cCurLineLength = 0; - memset( video_console.m_Buffer, 0, video_console.m_cScreenHeightVirtual * ( video_console.m_cScreenWidth + 1 ) * sizeof( wchar_t ) ); - xdk360_console_draw(); - - return hr; -} - -void xdk360_console_deinit() -{ - // Delete the memory we've allocated - if(video_console.m_Lines) - { - delete[] video_console.m_Lines; - video_console.m_Lines = NULL; - } - - if(video_console.m_Buffer) - { - delete[] video_console.m_Buffer; - video_console.m_Buffer = NULL; - } - - // Destroy the font - xdk360_video_font_deinit(&m_Font); -} - -void xdk360_console_add( wchar_t wch ) -{ - // If this is a newline, just increment lines and move on - if( wch == L'\n' ) - { - video_console.m_nCurLine = ( video_console.m_nCurLine + 1 ) - % video_console.m_cScreenHeightVirtual; - video_console.m_cCurLineLength = 0; - memset(video_console.m_Lines[video_console.m_nCurLine], 0, - ( video_console.m_cScreenWidth + 1 ) * sizeof( wchar_t ) ); - return; - } - - int bIncrementLine = FALSE; // Whether to wrap to the next line - - if( video_console.m_cCurLineLength == video_console.m_cScreenWidth ) - bIncrementLine = TRUE; - else - { - // Try to append the character to the line - video_console.m_Lines[ video_console.m_nCurLine ][ video_console.m_cCurLineLength ] = wch; - - float fTextWidth, fTextHeight; - - xdk360_video_font_get_text_width(&m_Font, video_console.m_Lines[ video_console.m_nCurLine ], &fTextWidth, - &fTextHeight, 0); - - if( fTextHeight > video_console.m_cxSafeArea ) - { - // The line is too long, we need to wrap the character to the next line - video_console.m_Lines[video_console.m_nCurLine][ video_console.m_cCurLineLength ] = L'\0'; - bIncrementLine = TRUE; - } - } - - // If we need to skip to the next line, do so - if( bIncrementLine ) - { - video_console.m_nCurLine = ( video_console.m_nCurLine + 1 ) - % video_console.m_cScreenHeightVirtual; - video_console.m_cCurLineLength = 0; - memset( video_console.m_Lines[video_console.m_nCurLine], - 0, ( video_console.m_cScreenWidth + 1 ) * sizeof( wchar_t ) ); - video_console.m_Lines[video_console.m_nCurLine ][0] = wch; - } - - video_console.m_cCurLineLength++; -} - -void xdk360_console_format(_In_z_ _Printf_format_string_ LPCSTR strFormat, ... ) -{ - video_console.m_nCurLine = 0; - video_console.m_cCurLineLength = 0; - - memset( video_console.m_Buffer, 0, - video_console.m_cScreenHeightVirtual * - ( video_console.m_cScreenWidth + 1 ) * sizeof( wchar_t ) ); - - va_list pArgList; - va_start( pArgList, strFormat ); - - // Count the required length of the string - unsigned long dwStrLen = _vscprintf( strFormat, pArgList ) + 1; - // +1 = null terminator - char * strMessage = ( char * )_malloca( dwStrLen ); - vsprintf_s( strMessage, dwStrLen, strFormat, pArgList ); - - // Output the string to the console - unsigned long uStringLength = strlen( strMessage ); - for( unsigned long i = 0; i < uStringLength; i++ ) - { - wchar_t wch; - int ret = MultiByteToWideChar( - CP_ACP, // ANSI code page - 0, // No flags - &strMessage[i], // Character to convert - 1, // Convert one byte - &wch, // Target wide character buffer - 1 ); // One wide character - xdk360_console_add( wch ); - } - - _freea( strMessage ); - - va_end( pArgList ); -} +static PackedResource m_xprResource; #define CALCFONTFILEHEADERSIZE(x) ( sizeof(unsigned long) + (sizeof(float)* 4) + sizeof(unsigned short) + (sizeof(wchar_t)*(x)) ) #define FONTFILEVERSION 5 -typedef struct FontFileHeaderImage_t { +typedef struct { unsigned long m_dwFileVersion; // Version of the font file (Must match FONTFILEVERSION) float m_fFontHeight; // Height of the font strike in pixels float m_fFontTopPadding; // Padding above the strike zone @@ -233,26 +41,21 @@ typedef struct FontFileHeaderImage_t { // Font strike array. Immediately follows the FontFileHeaderImage_t // structure image -typedef struct FontFileStrikesImage_t { +typedef struct { unsigned long m_dwNumGlyphs; // Size of font strike array (First entry is the unknown glyph) GLYPH_ATTR m_Glyphs[1]; // Array of font strike uv's etc... NOTE: It's m_dwNumGlyphs in size } FontFileStrikesImage_t; -static PackedResource m_xprResource; - static const char g_strFontShader[] = "struct VS_IN\n" "{\n" "float2 Pos : POSITION;\n" "float2 Tex : TEXCOORD0;\n" - "float4 ChannelSelector : TEXCOORD1;\n" "};\n" "struct VS_OUT\n" "{\n" "float4 Position : POSITION;\n" - "float4 Diffuse : COLOR0_center;\n" "float2 TexCoord0 : TEXCOORD0;\n" - "float4 ChannelSelector : TEXCOORD1;\n" "};\n" "uniform float4 Color : register(c1);\n" "uniform float2 TexScale : register(c2);\n" @@ -264,30 +67,17 @@ static const char g_strFontShader[] = "Out.Position.y = (In.Pos.y-0.5);\n" "Out.Position.z = ( 0.0 );\n" "Out.Position.w = ( 1.0 );\n" - "Out.Diffuse = Color;\n" "Out.TexCoord0.x = In.Tex.x * TexScale.x;\n" "Out.TexCoord0.y = In.Tex.y * TexScale.y;\n" - "Out.ChannelSelector = In.ChannelSelector;\n" "return Out;\n" "}\n" "float4 main_fragment( VS_OUT In ) : COLOR0\n" "{\n" "float4 FontTexel = tex2D( FontTexture, In.TexCoord0 );\n" - "if( dot( In.ChannelSelector, float4(1,1,1,1) ) )\n" - "{\n" - "float value = dot( FontTexel, In.ChannelSelector );\n" - "float4 Color;\n" - "Color.rgb = ( value > 0.5f ? 2*value-1 : 0.0f );\n" - "Color.a = 2 * ( value > 0.5f ? 1.0f : value );\n" - "return Color * In.Diffuse;\n" - "}\n" - "else\n" - "{\n" - "return FontTexel * In.Diffuse;\n" - "}\n" + "return FontTexel;\n" "}\n"; -typedef struct Font_Locals_t { +typedef struct { D3DVertexDeclaration* m_pFontVertexDecl; // Shared vertex buffer D3DVertexShader* m_pFontVertexShader; // Created vertex shader D3DPixelShader* m_pFontPixelShader; // Created pixel shader @@ -296,390 +86,7 @@ typedef struct Font_Locals_t { // All elements are defaulted to NULL static Font_Locals_t s_FontLocals; // Global static instance -static HRESULT xdk360_video_font_create_shaders (xdk360_video_font_t * font) -{ - // - // There are only two states the globals could be in, - // Initialized, in which the ref count is increased, - // Uninialized, in which the vertex/pixel shaders need to be - // started up and a vertex array created. - /// - - HRESULT hr; - - if (!s_FontLocals.m_pFontVertexDecl) - { - // Use the do {} while(0); trick for a fake goto - // It simplies tear down on error conditions. - do - { - - // Step #1, create my vertex array with 16 bytes per entry - // Floats for the position, - // shorts for the uvs - // 32 bit packed ARGB 8:8:8:8 for color - - static const D3DVERTEXELEMENT9 decl[] = - { - { 0, 0, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 }, - { 0, 8, D3DDECLTYPE_USHORT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 }, - { 0, 12, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1 }, - D3DDECL_END() - }; - - // Cache this global into a register - xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; - D3DDevice *pd3dDevice = vid->d3d_render_device; - - hr = pd3dDevice->CreateVertexDeclaration( decl, &s_FontLocals.m_pFontVertexDecl ); - - if (SUCCEEDED(hr)) - { - // Step #2, create my vertex shader - ID3DXBuffer* pShaderCode; - - hr = D3DXCompileShader( g_strFontShader, sizeof(g_strFontShader)-1 , - NULL, NULL, "main_vertex", "vs.2.0", 0,&pShaderCode, NULL, NULL ); - if (SUCCEEDED(hr)) - { - hr = pd3dDevice->CreateVertexShader( ( unsigned long * )pShaderCode->GetBufferPointer(), - &s_FontLocals.m_pFontVertexShader ); - // Release the compiled shader - pShaderCode->Release(); - - if(SUCCEEDED(hr)) - { - // Step #3, create my pixel shader - hr = D3DXCompileShader( g_strFontShader, sizeof(g_strFontShader)-1 , - NULL, NULL, "main_fragment", "ps.2.0", 0,&pShaderCode, NULL, NULL ); - if ( SUCCEEDED(hr)) - { - hr = pd3dDevice->CreatePixelShader( ( DWORD* )pShaderCode->GetBufferPointer(), - &s_FontLocals.m_pFontPixelShader ); - // Release the compiled shader - pShaderCode->Release(); - - if (SUCCEEDED(hr)) - { - hr = S_OK; - break; // Skip the teardown code - } - } - - // If the code got to here, a fatal error has occured - // and a clean shutdown needs to be performed. - D3DResource_Release((D3DResource *)s_FontLocals.m_pFontVertexShader); - } - - // Ensure the pointer is NULL - s_FontLocals.m_pFontVertexShader = NULL; - } - - D3DResource_Release((D3DResource *)s_FontLocals.m_pFontVertexDecl); - } - // Ensure this pointer is NULL - s_FontLocals.m_pFontVertexDecl = NULL; - }while(0); // Exit point for the break command. - return hr; - } - else - { - D3DResource_AddRef((D3DResource *)s_FontLocals.m_pFontVertexDecl); - D3DResource_AddRef((D3DResource *)s_FontLocals.m_pFontVertexShader); - D3DResource_AddRef((D3DResource *)s_FontLocals.m_pFontPixelShader); - hr = S_OK; - } - return hr; // Return the error code if any -} - -void xdk360_video_font_set_size(xdk360_video_font_t * font, float x, float y) -{ - font->m_fXScaleFactor = x; - font->m_fYScaleFactor = y; -} - -HRESULT xdk360_video_font_init(xdk360_video_font_t * font, const char * strFontFileName) -{ - font->m_pFontTexture = NULL; - font->m_dwNumGlyphs = 0L; - font->m_Glyphs = NULL; - font->m_fCursorX = 0.0f; - font->m_fCursorY = 0.0f; - font->m_fXScaleFactor = 2.0f; - font->m_fYScaleFactor = 2.0f; - font->m_cMaxGlyph = 0; - font->m_TranslatorTable = NULL; - font->m_dwNestedBeginCount = 0L; - - // Create the font - if( FAILED( m_xprResource.Create( strFontFileName ) ) ) - return E_FAIL; - - D3DTexture * pFontTexture = m_xprResource.GetTexture( "FontTexture" ); - const void * pFontData = m_xprResource.GetData( "FontData"); - - // Save a copy of the texture - font->m_pFontTexture = pFontTexture; - - // Check version of file (to make sure it matches up with the FontMaker tool) - const unsigned char * pData = static_cast(pFontData); - unsigned long dwFileVersion = reinterpret_cast(pData)->m_dwFileVersion; - - if( dwFileVersion == FONTFILEVERSION ) - { - font->m_fFontHeight = reinterpret_cast(pData)->m_fFontHeight; - font->m_fFontTopPadding = reinterpret_cast(pData)->m_fFontTopPadding; - font->m_fFontBottomPadding = reinterpret_cast(pData)->m_fFontBottomPadding; - font->m_fFontYAdvance = reinterpret_cast(pData)->m_fFontYAdvance; - - // Point to the translator string which immediately follows the 4 floats - font->m_cMaxGlyph = reinterpret_cast(pData)->m_cMaxGlyph; - - font->m_TranslatorTable = const_cast(reinterpret_cast(pData))->m_TranslatorTable; - - pData += CALCFONTFILEHEADERSIZE( font->m_cMaxGlyph + 1 ); - - // Read the glyph attributes from the file - font->m_dwNumGlyphs = reinterpret_cast(pData)->m_dwNumGlyphs; - font->m_Glyphs = reinterpret_cast(pData)->m_Glyphs; // Pointer - } - else - { - RARCH_ERR( "Incorrect version number on font file.\n" ); - return E_FAIL; - } - - // Create the vertex and pixel shaders for rendering the font - if( FAILED( xdk360_video_font_create_shaders(font) ) ) - { - RARCH_ERR( "Could not create font shaders.\n" ); - return E_FAIL; - } - - xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; - D3DDevice *pd3dDevice = vid->d3d_render_device; - - // Initialize the window - D3DDISPLAYMODE DisplayMode; - pd3dDevice->GetDisplayMode( 0, &DisplayMode ); - font->m_rcWindow.x1 = 0; - font->m_rcWindow.y1 = 0; - font->m_rcWindow.x2 = DisplayMode.Width; - font->m_rcWindow.y2 = DisplayMode.Height; - - // Determine whether we should save/restore state - font->m_bSaveState = TRUE; - - return S_OK; -} - -void xdk360_video_font_deinit(xdk360_video_font_t * font) -{ - font->m_pFontTexture = NULL; - font->m_dwNumGlyphs = 0L; - font->m_Glyphs = NULL; - font->m_cMaxGlyph = 0; - font->m_TranslatorTable = NULL; - font->m_dwNestedBeginCount = 0L; - - // Safely release shaders - // NOTE: They are released in reverse order of creation - // to make sure any interdependencies are dealt with - - if( ( s_FontLocals.m_pFontPixelShader != NULL ) && ( s_FontLocals.m_pFontPixelShader->Release() == 0 ) ) - s_FontLocals.m_pFontPixelShader = NULL; - if( ( s_FontLocals.m_pFontVertexShader != NULL ) && ( s_FontLocals.m_pFontVertexShader->Release() == 0 ) ) - s_FontLocals.m_pFontVertexShader = NULL; - if( ( s_FontLocals.m_pFontVertexDecl != NULL ) && ( s_FontLocals.m_pFontVertexDecl->Release() == 0 ) ) - s_FontLocals.m_pFontVertexDecl = NULL; - - if( m_xprResource.m_bInitialized) - m_xprResource.Destroy(); -} - -void xdk360_video_font_set_cursor_position(xdk360_video_font_t *font, float fCursorX, float fCursorY ) -{ - font->m_fCursorX = floorf( fCursorX ); - font->m_fCursorY = floorf( fCursorY ); -} - -void xdk360_video_font_get_text_width(xdk360_video_font_t * font, const wchar_t * strText, float * pWidth, float * pHeight, int bFirstLineOnly) -{ - // Set default text extent in output parameters - int iWidth = 0; - float fHeight = 0.0f; - - if( strText ) - { - // Initialize counters that keep track of text extent - int ix = 0; - float fy = font->m_fFontHeight; // One character high to start - if( fy > fHeight ) - fHeight = fy; - - // Loop through each character and update text extent - unsigned long letter; - while( (letter = *strText) != 0 ) - { - ++strText; - - // Handle newline character - if( letter == L'\n' ) - { - if( bFirstLineOnly ) - break; - ix = 0; - fy += font->m_fFontYAdvance; - // since the height has changed, test against the height extent - if( fy > fHeight ) - fHeight = fy; - } - - // Handle carriage return characters by ignoring them. This helps when - // displaying text from a file. - if( letter == L'\r' ) - continue; - - // Translate unprintable characters - const GLYPH_ATTR* pGlyph; - - if( letter > font->m_cMaxGlyph ) - letter = 0; // Out of bounds? - else - letter = font->m_TranslatorTable[letter]; // Remap ASCII to glyph - - pGlyph = &font->m_Glyphs[letter]; // Get the requested glyph - - // Get text extent for this character's glyph - ix += pGlyph->wOffset; - ix += pGlyph->wAdvance; - - // Since the x widened, test against the x extent - - if( ix > iWidth ) - iWidth = ix; - } - } - - // Convert the width to a float here, load/hit/store. :( - float fWidth = static_cast(iWidth); // Delay the use if fWidth to reduce LHS pain - // Apply the scale factor to the result - fHeight *= font->m_fYScaleFactor; - // Store the final results - *pHeight = fHeight; - - fWidth *= font->m_fXScaleFactor; - *pWidth = fWidth; -} - -void xdk360_video_font_begin (xdk360_video_font_t * font) -{ - // Set state on the first call - if( font->m_dwNestedBeginCount == 0 ) - { - // Cache the global pointer into a register - xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; - D3DDevice *pD3dDevice = vid->d3d_render_device; - - // Save state - if( font->m_bSaveState ) - { - // Note, we are not saving the texture, vertex, or pixel shader, - // since it's not worth the performance. We're more interested - // in saving state that would cause hard to find problems. - pD3dDevice->GetRenderState( D3DRS_ALPHABLENDENABLE, - &font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHABLENDENABLE ] ); - pD3dDevice->GetRenderState( D3DRS_SRCBLEND, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_SRCBLEND ] ); - pD3dDevice->GetRenderState( D3DRS_DESTBLEND, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_DESTBLEND ] ); - pD3dDevice->GetRenderState( D3DRS_BLENDOP, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_BLENDOP ] ); - pD3dDevice->GetRenderState( D3DRS_ALPHATESTENABLE, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHATESTENABLE ] ); - pD3dDevice->GetRenderState( D3DRS_ALPHAREF, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHAREF ] ); - pD3dDevice->GetRenderState( D3DRS_ALPHAFUNC, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHAFUNC ] ); - pD3dDevice->GetRenderState( D3DRS_FILLMODE, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_FILLMODE ] ); - pD3dDevice->GetRenderState( D3DRS_CULLMODE, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_CULLMODE ] ); - pD3dDevice->GetRenderState( D3DRS_VIEWPORTENABLE, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_VIEWPORTENABLE ] ); - font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_MINFILTER ] = D3DDevice_GetSamplerState_MinFilter( pD3dDevice, 0 ); - font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_MAGFILTER ] = D3DDevice_GetSamplerState_MagFilter( pD3dDevice, 0 ); - font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_ADDRESSU ] = D3DDevice_GetSamplerState_AddressU( pD3dDevice, 0); - font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_ADDRESSV ] = D3DDevice_GetSamplerState_AddressV( pD3dDevice, 0); - } - - // Set the texture scaling factor as a vertex shader constant - D3DSURFACE_DESC TextureDesc; - D3DTexture_GetLevelDesc(font->m_pFontTexture, 0, &TextureDesc); // Get the description - - // Set render state - D3DDevice_SetTexture_Inline(pD3dDevice, 0, font->m_pFontTexture); - - // Read the TextureDesc here to ensure no load/hit/store from GetLevelDesc() - float vTexScale[4]; - vTexScale[0] = 1.0f / TextureDesc.Width; // LHS due to int->float conversion - vTexScale[1] = 1.0f / TextureDesc.Height; - vTexScale[2] = 0.0f; - vTexScale[3] = 0.0f; - - D3DDevice_SetRenderState_AlphaBlendEnable( pD3dDevice, TRUE ); - D3DDevice_SetRenderState_SrcBlend(pD3dDevice, D3DBLEND_SRCALPHA ); - D3DDevice_SetRenderState_DestBlend( pD3dDevice, D3DBLEND_INVSRCALPHA ); - D3DDevice_SetRenderState_BlendOp( pD3dDevice, D3DBLENDOP_ADD ); - pD3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE ); - pD3dDevice->SetRenderState( D3DRS_ALPHAREF, 0x08 ); - pD3dDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL ); - pD3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID ); - pD3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW ); - pD3dDevice->SetRenderState( D3DRS_VIEWPORTENABLE, FALSE ); - D3DDevice_SetSamplerState_MinFilter(pD3dDevice, 0, D3DTEXF_LINEAR ); - D3DDevice_SetSamplerState_MagFilter(pD3dDevice, 0, D3DTEXF_LINEAR ); - D3DDevice_SetSamplerState_AddressU_Inline(pD3dDevice, 0, D3DTADDRESS_CLAMP ); - D3DDevice_SetSamplerState_AddressV_Inline(pD3dDevice, 0, D3DTADDRESS_CLAMP ); - - D3DDevice_SetVertexDeclaration(pD3dDevice, s_FontLocals.m_pFontVertexDecl ); - D3DDevice_SetVertexShader(pD3dDevice, s_FontLocals.m_pFontVertexShader ); - D3DDevice_SetPixelShader(pD3dDevice, s_FontLocals.m_pFontPixelShader ); - - // Set the texture scaling factor as a vertex shader constant - // Call here to avoid load hit store from writing to vTexScale above - pD3dDevice->SetVertexShaderConstantF( 2, vTexScale, 1 ); - } - - // Keep track of the nested begin/end calls. - font->m_dwNestedBeginCount++; -} - -void xdk360_video_font_end(xdk360_video_font_t * font) -{ - if( --font->m_dwNestedBeginCount > 0 ) - return; - - // Restore state - if( font->m_bSaveState ) - { - // Cache the global pointer into a register - xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; - D3DDevice *pD3dDevice = vid->d3d_render_device; - - D3DDevice_SetTexture_Inline(pD3dDevice, 0, NULL); - D3DDevice_SetVertexDeclaration(pD3dDevice, NULL); - D3DDevice_SetVertexShader(pD3dDevice, NULL ); - D3DDevice_SetPixelShader(pD3dDevice, NULL ); - D3DDevice_SetRenderState_AlphaBlendEnable(pD3dDevice, font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHABLENDENABLE ]); - D3DDevice_SetRenderState_SrcBlend(pD3dDevice, font->m_dwSavedState[ SAVEDSTATE_D3DRS_SRCBLEND ] ); - D3DDevice_SetRenderState_DestBlend( pD3dDevice, font->m_dwSavedState[ SAVEDSTATE_D3DRS_DESTBLEND ] ); - D3DDevice_SetRenderState_BlendOp( pD3dDevice, font->m_dwSavedState[ SAVEDSTATE_D3DRS_BLENDOP ] ); - pD3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHATESTENABLE ] ); - pD3dDevice->SetRenderState( D3DRS_ALPHAREF, font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHAREF ] ); - pD3dDevice->SetRenderState( D3DRS_ALPHAFUNC, font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHAFUNC ] ); - pD3dDevice->SetRenderState( D3DRS_FILLMODE, font->m_dwSavedState[ SAVEDSTATE_D3DRS_FILLMODE ] ); - pD3dDevice->SetRenderState( D3DRS_CULLMODE, font->m_dwSavedState[ SAVEDSTATE_D3DRS_CULLMODE ] ); - pD3dDevice->SetRenderState( D3DRS_VIEWPORTENABLE, font->m_dwSavedState[ SAVEDSTATE_D3DRS_VIEWPORTENABLE ] ); - D3DDevice_SetSamplerState_MinFilter(pD3dDevice, 0, font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_MINFILTER ] ); - D3DDevice_SetSamplerState_MagFilter(pD3dDevice, 0, font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_MAGFILTER ] ); - D3DDevice_SetSamplerState_AddressU_Inline(pD3dDevice, 0, font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_ADDRESSU ] ); - D3DDevice_SetSamplerState_AddressV_Inline(pD3dDevice, 0, font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_ADDRESSV ] ); - } -} - -void xdk360_video_font_draw_text(xdk360_video_font_t * font, float fOriginX, float fOriginY, unsigned long dwColor, +static void xdk360_video_font_draw_text(xdk360_video_font_t * font, float fOriginX, float fOriginY, unsigned long dwColor, const wchar_t * strText, float fMaxPixelWidth ) { if( strText == NULL || strText[0] == L'\0') @@ -737,7 +144,7 @@ void xdk360_video_font_draw_text(xdk360_video_font_t * font, float fOriginX, flo // The ring buffer may run out of space when tiling, doing z-prepasses, // or using BeginCommandBuffer. If so, make the buffer larger. - if( FAILED( hr ) ) + if( hr < 0 ) RARCH_ERR( "Ring buffer out of memory.\n" ); // Draw four vertices for each glyph @@ -861,3 +268,533 @@ void xdk360_video_font_draw_text(xdk360_video_font_t * font, float fOriginX, flo // Call End() to complete the begin/end pair for drawing text xdk360_video_font_end(font); } + +void xdk360_console_draw(void) +{ + xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; + D3DDevice *m_pd3dDevice = vid->d3d_render_device; + + // The top line + unsigned int nTextLine = ( video_console.m_nCurLine - + video_console.m_cScreenHeight + video_console.m_cScreenHeightVirtual - + video_console.m_nScrollOffset + 1 ) + % video_console.m_cScreenHeightVirtual; + + xdk360_video_font_begin(&m_Font); + + for( unsigned int nScreenLine = 0; nScreenLine < video_console.m_cScreenHeight; nScreenLine++ ) + { + xdk360_video_font_draw_text(&m_Font, (float)( video_console.m_cxSafeAreaOffset ), + (float)( video_console.m_cySafeAreaOffset + + video_console.m_fLineHeight * nScreenLine ), + video_console.m_colTextColor, + video_console.m_Lines[nTextLine], 0.0f ); + + nTextLine = ( nTextLine + 1 ) % video_console.m_cScreenHeightVirtual; + } + + xdk360_video_font_end(&m_Font); +} + +static void xdk360_video_font_get_text_width(xdk360_video_font_t * font, const wchar_t * strText, float * pWidth, float * pHeight) +{ + // Set default text extent in output parameters + int iWidth = 0; + float fHeight = 0.0f; + + if( strText ) + { + // Initialize counters that keep track of text extent + int ix = 0; + float fy = font->m_fFontHeight; // One character high to start + if( fy > fHeight ) + fHeight = fy; + + // Loop through each character and update text extent + unsigned long letter; + while( (letter = *strText) != 0 ) + { + ++strText; + + // Handle newline character + if (letter == L'\n') + break; + + // Handle carriage return characters by ignoring them. This helps when + // displaying text from a file. + if( letter == L'\r' ) + continue; + + // Translate unprintable characters + const GLYPH_ATTR* pGlyph; + + if( letter > font->m_cMaxGlyph ) + letter = 0; // Out of bounds? + else + letter = font->m_TranslatorTable[letter]; // Remap ASCII to glyph + + pGlyph = &font->m_Glyphs[letter]; // Get the requested glyph + + // Get text extent for this character's glyph + ix += pGlyph->wOffset; + ix += pGlyph->wAdvance; + + // Since the x widened, test against the x extent + + if( ix > iWidth ) + iWidth = ix; + } + } + + float fWidth = (float)iWidth; + fHeight *= font->m_fYScaleFactor; // Apply the scale factor to the result + *pHeight = fHeight; // Store the final results + + fWidth *= font->m_fXScaleFactor; + *pWidth = fWidth; +} + +static HRESULT xdk360_video_font_create_shaders (xdk360_video_font_t * font) +{ + HRESULT hr; + + if (!s_FontLocals.m_pFontVertexDecl) + { + do + { + static const D3DVERTEXELEMENT9 decl[] = + { + { 0, 0, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 }, + { 0, 8, D3DDECLTYPE_USHORT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 }, + { 0, 12, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1 }, + D3DDECL_END() + }; + + xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; + D3DDevice *pd3dDevice = vid->d3d_render_device; + + hr = pd3dDevice->CreateVertexDeclaration( decl, &s_FontLocals.m_pFontVertexDecl ); + + if (hr >= 0) + { + ID3DXBuffer* pShaderCode; + + hr = D3DXCompileShader( g_strFontShader, sizeof(g_strFontShader)-1 , + NULL, NULL, "main_vertex", "vs.2.0", 0,&pShaderCode, NULL, NULL ); + + if (hr >= 0) + { + hr = pd3dDevice->CreateVertexShader( ( unsigned long * )pShaderCode->GetBufferPointer(), + &s_FontLocals.m_pFontVertexShader ); + pShaderCode->Release(); + + if (hr >= 0) + { + hr = D3DXCompileShader( g_strFontShader, sizeof(g_strFontShader)-1 , + NULL, NULL, "main_fragment", "ps.2.0", 0,&pShaderCode, NULL, NULL ); + + if (hr >= 0) + { + hr = pd3dDevice->CreatePixelShader( ( DWORD* )pShaderCode->GetBufferPointer(), + &s_FontLocals.m_pFontPixelShader ); + pShaderCode->Release(); + + if (hr >= 0) + { + hr = 0; + break; + } + } + D3DResource_Release((D3DResource *)s_FontLocals.m_pFontVertexShader); + } + + s_FontLocals.m_pFontVertexShader = NULL; + } + + D3DResource_Release((D3DResource *)s_FontLocals.m_pFontVertexDecl); + } + s_FontLocals.m_pFontVertexDecl = NULL; + }while(0); + return hr; + } + else + { + D3DResource_AddRef((D3DResource *)s_FontLocals.m_pFontVertexDecl); + D3DResource_AddRef((D3DResource *)s_FontLocals.m_pFontVertexShader); + D3DResource_AddRef((D3DResource *)s_FontLocals.m_pFontPixelShader); + hr = 0; + } + return hr; +} + +static HRESULT xdk360_video_font_init(xdk360_video_font_t * font, const char * strFontFileName) +{ + font->m_pFontTexture = NULL; + font->m_dwNumGlyphs = 0L; + font->m_Glyphs = NULL; + font->m_fCursorX = 0.0f; + font->m_fCursorY = 0.0f; + font->m_fXScaleFactor = 2.0f; + font->m_fYScaleFactor = 2.0f; + font->m_cMaxGlyph = 0; + font->m_TranslatorTable = NULL; + font->m_dwNestedBeginCount = 0L; + + // Create the font + if( FAILED( m_xprResource.Create( strFontFileName ) ) ) + return E_FAIL; + + D3DTexture * pFontTexture = m_xprResource.GetTexture( "FontTexture" ); + const void * pFontData = m_xprResource.GetData( "FontData"); + + // Save a copy of the texture + font->m_pFontTexture = pFontTexture; + + // Check version of file (to make sure it matches up with the FontMaker tool) + const unsigned char * pData = static_cast(pFontData); + unsigned long dwFileVersion = reinterpret_cast(pData)->m_dwFileVersion; + + if( dwFileVersion == FONTFILEVERSION ) + { + font->m_fFontHeight = reinterpret_cast(pData)->m_fFontHeight; + font->m_fFontTopPadding = reinterpret_cast(pData)->m_fFontTopPadding; + font->m_fFontBottomPadding = reinterpret_cast(pData)->m_fFontBottomPadding; + font->m_fFontYAdvance = reinterpret_cast(pData)->m_fFontYAdvance; + + // Point to the translator string which immediately follows the 4 floats + font->m_cMaxGlyph = reinterpret_cast(pData)->m_cMaxGlyph; + + font->m_TranslatorTable = const_cast(reinterpret_cast(pData))->m_TranslatorTable; + + pData += CALCFONTFILEHEADERSIZE( font->m_cMaxGlyph + 1 ); + + // Read the glyph attributes from the file + font->m_dwNumGlyphs = reinterpret_cast(pData)->m_dwNumGlyphs; + font->m_Glyphs = reinterpret_cast(pData)->m_Glyphs; // Pointer + } + else + { + RARCH_ERR( "Incorrect version number on font file.\n" ); + return E_FAIL; + } + + // Create the vertex and pixel shaders for rendering the font + if( FAILED( xdk360_video_font_create_shaders(font) ) ) + { + RARCH_ERR( "Could not create font shaders.\n" ); + return E_FAIL; + } + + xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; + D3DDevice *pd3dDevice = vid->d3d_render_device; + + // Initialize the window + D3DDISPLAYMODE DisplayMode; + pd3dDevice->GetDisplayMode( 0, &DisplayMode ); + font->m_rcWindow.x1 = 0; + font->m_rcWindow.y1 = 0; + font->m_rcWindow.x2 = DisplayMode.Width; + font->m_rcWindow.y2 = DisplayMode.Height; + + // Determine whether we should save/restore state + font->m_bSaveState = TRUE; + + return 0; +} + +HRESULT xdk360_console_init( LPCSTR strFontFileName, unsigned long colBackColor, + unsigned long colTextColor) +{ + xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; + D3DDevice *m_pd3dDevice = vid->d3d_render_device; + + video_console.first_message = true; + video_console.m_Buffer = NULL; + video_console.m_Lines = NULL; + video_console.m_nScrollOffset = 0; + + // Calculate the safe area + unsigned int uiSafeAreaPct = vid->video_mode.fIsHiDef ? SAFE_AREA_PCT_HDTV + : SAFE_AREA_PCT_4x3; + + video_console.m_cxSafeArea = ( vid->d3dpp.BackBufferWidth * uiSafeAreaPct ) / 100; + video_console.m_cySafeArea = ( vid->d3dpp.BackBufferHeight * uiSafeAreaPct ) / 100; + + video_console.m_cxSafeAreaOffset = ( vid->d3dpp.BackBufferWidth - video_console.m_cxSafeArea ) / 2; + video_console.m_cySafeAreaOffset = ( vid->d3dpp.BackBufferHeight - video_console.m_cySafeArea ) / 2; + + // Create the font + HRESULT hr = xdk360_video_font_init(&m_Font, strFontFileName ); + if (hr < 0) + { + RARCH_ERR( "Could not create font.\n" ); + return -1; + } + + // Save the colors + video_console.m_colBackColor = colBackColor; + video_console.m_colTextColor = colTextColor; + + // Calculate the number of lines on the screen + float fCharWidth, fCharHeight; + xdk360_video_font_get_text_width(&m_Font, L"i", &fCharWidth, &fCharHeight); + + video_console.m_cScreenHeight = (unsigned int)( video_console.m_cySafeArea / fCharHeight ); + video_console.m_cScreenWidth = (unsigned int)( video_console.m_cxSafeArea / fCharWidth ); + + video_console.m_cScreenHeightVirtual = video_console.m_cScreenHeight; + + video_console.m_fLineHeight = fCharHeight; + + // Allocate memory to hold the lines + video_console.m_Buffer = new wchar_t[ video_console.m_cScreenHeightVirtual * ( video_console.m_cScreenWidth + 1 ) ]; + video_console.m_Lines = new wchar_t *[ video_console.m_cScreenHeightVirtual ]; + + // Set the line pointers as indexes into the buffer + for( unsigned int i = 0; i < video_console.m_cScreenHeightVirtual; i++ ) + video_console.m_Lines[ i ] = video_console.m_Buffer + ( video_console.m_cScreenWidth + 1 ) * i; + + video_console.m_nCurLine = 0; + video_console.m_cCurLineLength = 0; + memset( video_console.m_Buffer, 0, video_console.m_cScreenHeightVirtual * ( video_console.m_cScreenWidth + 1 ) * sizeof( wchar_t ) ); + xdk360_console_draw(); + + return hr; +} + +static void xdk360_video_font_deinit(xdk360_video_font_t * font) +{ + font->m_pFontTexture = NULL; + font->m_dwNumGlyphs = 0L; + font->m_Glyphs = NULL; + font->m_cMaxGlyph = 0; + font->m_TranslatorTable = NULL; + font->m_dwNestedBeginCount = 0L; + + // Safely release shaders + // NOTE: They are released in reverse order of creation + // to make sure any interdependencies are dealt with + + if( ( s_FontLocals.m_pFontPixelShader != NULL ) && ( s_FontLocals.m_pFontPixelShader->Release() == 0 ) ) + s_FontLocals.m_pFontPixelShader = NULL; + if( ( s_FontLocals.m_pFontVertexShader != NULL ) && ( s_FontLocals.m_pFontVertexShader->Release() == 0 ) ) + s_FontLocals.m_pFontVertexShader = NULL; + if( ( s_FontLocals.m_pFontVertexDecl != NULL ) && ( s_FontLocals.m_pFontVertexDecl->Release() == 0 ) ) + s_FontLocals.m_pFontVertexDecl = NULL; + + if( m_xprResource.m_bInitialized) + m_xprResource.Destroy(); +} + +void xdk360_console_deinit() +{ + // Delete the memory we've allocated + if(video_console.m_Lines) + { + delete[] video_console.m_Lines; + video_console.m_Lines = NULL; + } + + if(video_console.m_Buffer) + { + delete[] video_console.m_Buffer; + video_console.m_Buffer = NULL; + } + + // Destroy the font + xdk360_video_font_deinit(&m_Font); +} + +static void xdk360_console_add( wchar_t wch ) +{ + // If this is a newline, just increment lines and move on + if( wch == L'\n' ) + { + video_console.m_nCurLine = ( video_console.m_nCurLine + 1 ) + % video_console.m_cScreenHeightVirtual; + video_console.m_cCurLineLength = 0; + memset(video_console.m_Lines[video_console.m_nCurLine], 0, + ( video_console.m_cScreenWidth + 1 ) * sizeof( wchar_t ) ); + return; + } + + int bIncrementLine = FALSE; // Whether to wrap to the next line + + if( video_console.m_cCurLineLength == video_console.m_cScreenWidth ) + bIncrementLine = TRUE; + else + { + // Try to append the character to the line + video_console.m_Lines[ video_console.m_nCurLine ][ video_console.m_cCurLineLength ] = wch; + + float fTextWidth, fTextHeight; + + xdk360_video_font_get_text_width(&m_Font, video_console.m_Lines[ video_console.m_nCurLine ], &fTextWidth, + &fTextHeight); + + if( fTextHeight > video_console.m_cxSafeArea ) + { + // The line is too long, we need to wrap the character to the next line + video_console.m_Lines[video_console.m_nCurLine][ video_console.m_cCurLineLength ] = L'\0'; + bIncrementLine = TRUE; + } + } + + // If we need to skip to the next line, do so + if( bIncrementLine ) + { + video_console.m_nCurLine = ( video_console.m_nCurLine + 1 ) + % video_console.m_cScreenHeightVirtual; + video_console.m_cCurLineLength = 0; + memset( video_console.m_Lines[video_console.m_nCurLine], + 0, ( video_console.m_cScreenWidth + 1 ) * sizeof( wchar_t ) ); + video_console.m_Lines[video_console.m_nCurLine ][0] = wch; + } + + video_console.m_cCurLineLength++; +} + +void xdk360_console_format(LPCSTR strFormat, ... ) +{ + video_console.m_nCurLine = 0; + video_console.m_cCurLineLength = 0; + + memset( video_console.m_Buffer, 0, + video_console.m_cScreenHeightVirtual * + ( video_console.m_cScreenWidth + 1 ) * sizeof( wchar_t ) ); + + va_list pArgList; + va_start( pArgList, strFormat ); + + // Count the required length of the string + unsigned long dwStrLen = _vscprintf( strFormat, pArgList ) + 1; + // +1 = null terminator + char * strMessage = ( char * )malloc( dwStrLen ); + vsprintf_s( strMessage, dwStrLen, strFormat, pArgList ); + + // Output the string to the console + unsigned long uStringLength = strlen( strMessage ); + for( unsigned long i = 0; i < uStringLength; i++ ) + { + wchar_t wch; + int ret = MultiByteToWideChar( + CP_ACP, // ANSI code page + 0, // No flags + &strMessage[i], // Character to convert + 1, // Convert one byte + &wch, // Target wide character buffer + 1 ); // One wide character + xdk360_console_add( wch ); + } + + free(strMessage); + + va_end( pArgList ); +} + +void xdk360_video_font_begin (xdk360_video_font_t * font) +{ + // Set state on the first call + if( font->m_dwNestedBeginCount == 0 ) + { + // Cache the global pointer into a register + xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; + D3DDevice *pD3dDevice = vid->d3d_render_device; + + // Save state + if( font->m_bSaveState ) + { + // Note, we are not saving the texture, vertex, or pixel shader, + // since it's not worth the performance. We're more interested + // in saving state that would cause hard to find problems. + pD3dDevice->GetRenderState( D3DRS_ALPHABLENDENABLE, + &font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHABLENDENABLE ] ); + pD3dDevice->GetRenderState( D3DRS_SRCBLEND, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_SRCBLEND ] ); + pD3dDevice->GetRenderState( D3DRS_DESTBLEND, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_DESTBLEND ] ); + pD3dDevice->GetRenderState( D3DRS_BLENDOP, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_BLENDOP ] ); + pD3dDevice->GetRenderState( D3DRS_ALPHATESTENABLE, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHATESTENABLE ] ); + pD3dDevice->GetRenderState( D3DRS_ALPHAREF, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHAREF ] ); + pD3dDevice->GetRenderState( D3DRS_ALPHAFUNC, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHAFUNC ] ); + pD3dDevice->GetRenderState( D3DRS_FILLMODE, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_FILLMODE ] ); + pD3dDevice->GetRenderState( D3DRS_CULLMODE, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_CULLMODE ] ); + pD3dDevice->GetRenderState( D3DRS_VIEWPORTENABLE, &font->m_dwSavedState[ SAVEDSTATE_D3DRS_VIEWPORTENABLE ] ); + font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_MINFILTER ] = D3DDevice_GetSamplerState_MinFilter( pD3dDevice, 0 ); + font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_MAGFILTER ] = D3DDevice_GetSamplerState_MagFilter( pD3dDevice, 0 ); + font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_ADDRESSU ] = D3DDevice_GetSamplerState_AddressU( pD3dDevice, 0); + font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_ADDRESSV ] = D3DDevice_GetSamplerState_AddressV( pD3dDevice, 0); + } + + // Set the texture scaling factor as a vertex shader constant + D3DSURFACE_DESC TextureDesc; + D3DTexture_GetLevelDesc(font->m_pFontTexture, 0, &TextureDesc); // Get the description + + // Set render state + D3DDevice_SetTexture_Inline(pD3dDevice, 0, font->m_pFontTexture); + + // Read the TextureDesc here to ensure no load/hit/store from GetLevelDesc() + float vTexScale[4]; + vTexScale[0] = 1.0f / TextureDesc.Width; // LHS due to int->float conversion + vTexScale[1] = 1.0f / TextureDesc.Height; + vTexScale[2] = 0.0f; + vTexScale[3] = 0.0f; + + D3DDevice_SetRenderState_AlphaBlendEnable( pD3dDevice, TRUE ); + D3DDevice_SetRenderState_SrcBlend(pD3dDevice, D3DBLEND_SRCALPHA ); + D3DDevice_SetRenderState_DestBlend( pD3dDevice, D3DBLEND_INVSRCALPHA ); + D3DDevice_SetRenderState_BlendOp( pD3dDevice, D3DBLENDOP_ADD ); + pD3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE ); + pD3dDevice->SetRenderState( D3DRS_ALPHAREF, 0x08 ); + pD3dDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL ); + pD3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID ); + pD3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW ); + pD3dDevice->SetRenderState( D3DRS_VIEWPORTENABLE, FALSE ); + D3DDevice_SetSamplerState_MinFilter(pD3dDevice, 0, D3DTEXF_LINEAR ); + D3DDevice_SetSamplerState_MagFilter(pD3dDevice, 0, D3DTEXF_LINEAR ); + D3DDevice_SetSamplerState_AddressU_Inline(pD3dDevice, 0, D3DTADDRESS_CLAMP ); + D3DDevice_SetSamplerState_AddressV_Inline(pD3dDevice, 0, D3DTADDRESS_CLAMP ); + + D3DDevice_SetVertexDeclaration(pD3dDevice, s_FontLocals.m_pFontVertexDecl ); + D3DDevice_SetVertexShader(pD3dDevice, s_FontLocals.m_pFontVertexShader ); + D3DDevice_SetPixelShader(pD3dDevice, s_FontLocals.m_pFontPixelShader ); + + // Set the texture scaling factor as a vertex shader constant + // Call here to avoid load hit store from writing to vTexScale above + pD3dDevice->SetVertexShaderConstantF( 2, vTexScale, 1 ); + } + + // Keep track of the nested begin/end calls. + font->m_dwNestedBeginCount++; +} + +void xdk360_video_font_end(xdk360_video_font_t * font) +{ + if( --font->m_dwNestedBeginCount > 0 ) + return; + + // Restore state + if( font->m_bSaveState ) + { + // Cache the global pointer into a register + xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; + D3DDevice *pD3dDevice = vid->d3d_render_device; + + D3DDevice_SetTexture_Inline(pD3dDevice, 0, NULL); + D3DDevice_SetVertexDeclaration(pD3dDevice, NULL); + D3DDevice_SetVertexShader(pD3dDevice, NULL ); + D3DDevice_SetPixelShader(pD3dDevice, NULL ); + D3DDevice_SetRenderState_AlphaBlendEnable(pD3dDevice, font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHABLENDENABLE ]); + D3DDevice_SetRenderState_SrcBlend(pD3dDevice, font->m_dwSavedState[ SAVEDSTATE_D3DRS_SRCBLEND ] ); + D3DDevice_SetRenderState_DestBlend( pD3dDevice, font->m_dwSavedState[ SAVEDSTATE_D3DRS_DESTBLEND ] ); + D3DDevice_SetRenderState_BlendOp( pD3dDevice, font->m_dwSavedState[ SAVEDSTATE_D3DRS_BLENDOP ] ); + pD3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHATESTENABLE ] ); + pD3dDevice->SetRenderState( D3DRS_ALPHAREF, font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHAREF ] ); + pD3dDevice->SetRenderState( D3DRS_ALPHAFUNC, font->m_dwSavedState[ SAVEDSTATE_D3DRS_ALPHAFUNC ] ); + pD3dDevice->SetRenderState( D3DRS_FILLMODE, font->m_dwSavedState[ SAVEDSTATE_D3DRS_FILLMODE ] ); + pD3dDevice->SetRenderState( D3DRS_CULLMODE, font->m_dwSavedState[ SAVEDSTATE_D3DRS_CULLMODE ] ); + pD3dDevice->SetRenderState( D3DRS_VIEWPORTENABLE, font->m_dwSavedState[ SAVEDSTATE_D3DRS_VIEWPORTENABLE ] ); + D3DDevice_SetSamplerState_MinFilter(pD3dDevice, 0, font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_MINFILTER ] ); + D3DDevice_SetSamplerState_MagFilter(pD3dDevice, 0, font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_MAGFILTER ] ); + D3DDevice_SetSamplerState_AddressU_Inline(pD3dDevice, 0, font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_ADDRESSU ] ); + D3DDevice_SetSamplerState_AddressV_Inline(pD3dDevice, 0, font->m_dwSavedState[ SAVEDSTATE_D3DSAMP_ADDRESSV ] ); + } +} diff --git a/360/fonts.h b/360/fonts.h index 033a464cf4..54ebecaaea 100644 --- a/360/fonts.h +++ b/360/fonts.h @@ -102,17 +102,10 @@ typedef struct HRESULT xdk360_console_init ( LPCSTR strFontFileName, D3DCOLOR colBackColor, D3DCOLOR colTextColor); void xdk360_console_deinit (void); -void xdk360_console_format (_In_z_ _Printf_format_string_ LPCSTR strFormat, ... ); +void xdk360_console_format (LPCSTR strFormat, ... ); void xdk360_console_draw (void); -HRESULT xdk360_video_font_init(xdk360_video_font_t * font, const char * strFontFileName); -void xdk360_video_font_get_text_width(xdk360_video_font_t * font, const wchar_t * strText, float * pWidth, float * pHeight, int bFirstLineOnly); -void xdk360_video_font_deinit(xdk360_video_font_t * font); -void xdk360_video_font_set_cursor_position(xdk360_video_font_t *font, float fCursorX, float fCursorY ); void xdk360_video_font_begin (xdk360_video_font_t * font); void xdk360_video_font_end (xdk360_video_font_t * font); -void xdk360_video_font_set_size(float x, float y); -void xdk360_video_font_draw_text(xdk360_video_font_t * font, float fOriginX, float fOriginY, unsigned long dwColor, -const wchar_t * strText, float fMaxPixelWidth ); #endif diff --git a/360/menu.cpp b/360/menu.cpp index 563bdd4f94..2d511664f7 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -625,7 +625,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled set_shader = 1; hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); - if (FAILED(hr)) + if (hr < 0) { RARCH_ERR("Failed to load scene.\n"); } @@ -638,7 +638,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled set_shader = 2; hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); - if (FAILED(hr)) + if (hr < 0) { RARCH_ERR("Failed to load scene.\n"); } @@ -679,7 +679,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_filebrowser.xur", NULL, &app.hFileBrowser); - if (FAILED(hr)) + if (hr < 0) { RARCH_ERR("Failed to load scene.\n"); } @@ -690,7 +690,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_quickmenu.xur", NULL, &app.hQuickMenu); - if (FAILED(hr)) + if (hr < 0) RARCH_ERR("Failed to load scene.\n"); hCur = app.hQuickMenu; NavigateForward(app.hQuickMenu); @@ -699,7 +699,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_controls.xur", NULL, &app.hControlsMenu); - if (FAILED(hr)) + if (hr < 0) RARCH_ERR("Failed to load scene.\n"); hCur = app.hControlsMenu; msg_queue_clear(g_extern.msg_queue); @@ -710,7 +710,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_libretrocore_browser.xur", NULL, &app.hCoreBrowser); - if (FAILED(hr)) + if (hr < 0) { RARCH_ERR("Failed to load scene.\n"); } @@ -723,7 +723,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) { hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_settings.xur", NULL, &app.hRetroArchSettings); - if (FAILED(hr)) + if (hr < 0) RARCH_ERR("Failed to load scene.\n"); hCur = app.hRetroArchSettings; NavigateForward(app.hRetroArchSettings); @@ -732,7 +732,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) return_to_dashboard(); bHandled = TRUE; - return S_OK; + return 0; } int menu_init (void) @@ -743,7 +743,7 @@ int menu_init (void) hr = app.InitShared(vid->d3d_render_device, &vid->d3dpp, XuiPNGTextureLoader); - if (FAILED(hr)) + if (hr < 0) { RARCH_ERR("Failed initializing XUI application.\n"); return 1; @@ -751,21 +751,21 @@ int menu_init (void) /* Register font */ hr = app.RegisterDefaultTypeface(L"Arial Unicode MS", L"file://game:/media/rarch.ttf" ); - if (FAILED(hr)) + if (hr < 0) { RARCH_ERR("Failed to register default typeface.\n"); return 1; } hr = app.LoadSkin( L"file://game:/media/rarch_scene_skin.xur"); - if (FAILED(hr)) + if (hr < 0) { RARCH_ERR("Failed to load skin.\n"); return 1; } hr = XuiSceneCreate(L"file://game:/media/sd/", L"rarch_main.xur", NULL, &app.hMainScene); - if (FAILED(hr)) + if (hr < 0) { RARCH_ERR("Failed to create scene 'rarch_main.xur'.\n"); return 1; diff --git a/360/xdk360_video.cpp b/360/xdk360_video.cpp index c60539b3be..65bd8ed5a8 100644 --- a/360/xdk360_video.cpp +++ b/360/xdk360_video.cpp @@ -736,7 +736,7 @@ static void xdk360_start(void) HRESULT hr = xdk360_console_init("game:\\media\\Arial_12.xpr", 0xff000000, 0xffffffff ); - if(FAILED(hr)) + if(hr < 0) { RARCH_ERR("Couldn't create debug console.\n"); } diff --git a/360/xdk360_video.h b/360/xdk360_video.h index 8cca3cc9d1..508e3ab832 100644 --- a/360/xdk360_video.h +++ b/360/xdk360_video.h @@ -64,6 +64,4 @@ typedef struct xdk360_video LPDIRECT3DSURFACE9 lpSurface; } xdk360_video_t; -void xdk360_gfx_init_fbo(xdk360_video_t *vid); - #endif diff --git a/gfx/shader_hlsl.c b/gfx/shader_hlsl.c index c931fe5afb..85f0ff662d 100644 --- a/gfx/shader_hlsl.c +++ b/gfx/shader_hlsl.c @@ -131,16 +131,12 @@ void hlsl_set_params(unsigned width, unsigned height, static bool load_program(unsigned index, const char *prog, bool path_is_file) { - bool ret, ret_fp, ret_vp; + HRESULT ret, ret_fp, ret_vp; ID3DXBuffer *listing_f = NULL; ID3DXBuffer *listing_v = NULL; ID3DXBuffer *code_f = NULL; ID3DXBuffer *code_v = NULL; - ret = true; - ret_fp = false; - ret_vp = false; - if (path_is_file) { ret_fp = D3DXCompileShaderFromFile(prog, NULL, NULL, @@ -157,7 +153,7 @@ static bool load_program(unsigned index, const char *prog, bool path_is_file) "main_vertex", "vs_3_0", 0, &code_v, &listing_v, &prg[index].v_ctable ); } - if (FAILED(ret_fp) || FAILED(ret_vp) || listing_v || listing_f) + if (ret_fp < 0 || ret_vp < 0 || listing_v || listing_f) { RARCH_ERR("HLSL error:\n"); if(listing_f) From 79d508b05ab1cf9a770a1e3cb49f1045d49cda03 Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 28 May 2012 14:05:03 +0200 Subject: [PATCH 02/70] Fix crash when only scale_type_x/y were used. --- gfx/shader_cg.c | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/gfx/shader_cg.c b/gfx/shader_cg.c index 17837fee71..73a2a82a03 100644 --- a/gfx/shader_cg.c +++ b/gfx/shader_cg.c @@ -805,30 +805,36 @@ static bool load_shader_params(unsigned i, config_file_t *conf) scale->abs_x = geom->base_width; scale->abs_y = geom->base_height; - if (strcmp(scale_type_x, "source") == 0) - scale->type_x = RARCH_SCALE_INPUT; - else if (strcmp(scale_type_x, "viewport") == 0) - scale->type_x = RARCH_SCALE_VIEWPORT; - else if (strcmp(scale_type_x, "absolute") == 0) - scale->type_x = RARCH_SCALE_ABSOLUTE; - else + if (scale_type_x) { - RARCH_ERR("Invalid attribute.\n"); - ret = false; - goto end; + if (strcmp(scale_type_x, "source") == 0) + scale->type_x = RARCH_SCALE_INPUT; + else if (strcmp(scale_type_x, "viewport") == 0) + scale->type_x = RARCH_SCALE_VIEWPORT; + else if (strcmp(scale_type_x, "absolute") == 0) + scale->type_x = RARCH_SCALE_ABSOLUTE; + else + { + RARCH_ERR("Invalid attribute.\n"); + ret = false; + goto end; + } } - if (strcmp(scale_type_y, "source") == 0) - scale->type_y = RARCH_SCALE_INPUT; - else if (strcmp(scale_type_y, "viewport") == 0) - scale->type_y = RARCH_SCALE_VIEWPORT; - else if (strcmp(scale_type_y, "absolute") == 0) - scale->type_y = RARCH_SCALE_ABSOLUTE; - else + if (scale_type_y) { - RARCH_ERR("Invalid attribute.\n"); - ret = false; - goto end; + if (strcmp(scale_type_y, "source") == 0) + scale->type_y = RARCH_SCALE_INPUT; + else if (strcmp(scale_type_y, "viewport") == 0) + scale->type_y = RARCH_SCALE_VIEWPORT; + else if (strcmp(scale_type_y, "absolute") == 0) + scale->type_y = RARCH_SCALE_ABSOLUTE; + else + { + RARCH_ERR("Invalid attribute.\n"); + ret = false; + goto end; + } } if (scale->type_x == RARCH_SCALE_ABSOLUTE) From 8889af2d199f8d90fd4a0e8e3eceb7cb9f17f474 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Mon, 28 May 2012 15:43:56 +0200 Subject: [PATCH 03/70] (360) Starts up with default generated config file again --- 360/main.c | 3 ++- 360/menu.cpp | 7 ++++++- 360/xdk360_video.cpp | 7 ++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/360/main.c b/360/main.c index c010ed7ad3..0b1d1680f8 100644 --- a/360/main.c +++ b/360/main.c @@ -134,6 +134,7 @@ static void set_default_settings (void) strlcpy(g_settings.video.cg_shader_path, DEFAULT_SHADER_FILE, sizeof(g_settings.video.cg_shader_path)); g_settings.video.fbo_scale_x = 2.0f; g_settings.video.fbo_scale_y = 2.0f; + strlcpy(g_settings.video.second_pass_shader, DEFAULT_SHADER_FILE, sizeof(g_settings.video.second_pass_shader)); g_settings.video.second_pass_smooth = true; g_settings.video.smooth = true; g_settings.video.vsync = true; @@ -190,7 +191,7 @@ static void init_settings (bool load_libretro_path) if(!path_file_exists(SYS_CONFIG_FILE)) { FILE * f; - RARCH_ERR("Config file \"%s\" desn't exist. Creating...\n", "game:\\retroarch.cfg"); + RARCH_ERR("Config file \"%s\" doesn't exist. Creating...\n", SYS_CONFIG_FILE); f = fopen(SYS_CONFIG_FILE, "w"); fclose(f); } diff --git a/360/menu.cpp b/360/menu.cpp index 2d511664f7..835c9742a7 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -797,7 +797,12 @@ void menu_loop(void) do { - rarch_render_cached_frame(); + if(!g_console.emulator_initialized) + d3d9->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0, 0, 0, 0), 1.0f, 0); + else + { + rarch_render_cached_frame(); + } XINPUT_STATE state; XInputGetState(0, &state); diff --git a/360/xdk360_video.cpp b/360/xdk360_video.cpp index 65bd8ed5a8..3ee3b8e7fd 100644 --- a/360/xdk360_video.cpp +++ b/360/xdk360_video.cpp @@ -689,11 +689,8 @@ static void xdk360_set_nonblock_state(void *data, bool state) { xdk360_video_t *d3d9 = (xdk360_video_t*)data; - if(d3d9->vsync) - { - RARCH_LOG("D3D Vsync => %s\n", state ? "off" : "on"); - gfx_ctx_set_swap_interval(state ? 0 : 1, TRUE); - } + RARCH_LOG("D3D Vsync => %s\n", state ? "off" : "on"); + gfx_ctx_set_swap_interval(state ? 0 : 1, TRUE); } static bool xdk360_alive(void *data) From c1143f9e2e2b1d0bc47824c9db212729eb4b61ed Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Mon, 28 May 2012 15:47:27 +0200 Subject: [PATCH 04/70] (360) Restore xdk360_set_nonblock_state --- 360/xdk360_video.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/360/xdk360_video.cpp b/360/xdk360_video.cpp index 3ee3b8e7fd..65bd8ed5a8 100644 --- a/360/xdk360_video.cpp +++ b/360/xdk360_video.cpp @@ -689,8 +689,11 @@ static void xdk360_set_nonblock_state(void *data, bool state) { xdk360_video_t *d3d9 = (xdk360_video_t*)data; - RARCH_LOG("D3D Vsync => %s\n", state ? "off" : "on"); - gfx_ctx_set_swap_interval(state ? 0 : 1, TRUE); + if(d3d9->vsync) + { + RARCH_LOG("D3D Vsync => %s\n", state ? "off" : "on"); + gfx_ctx_set_swap_interval(state ? 0 : 1, TRUE); + } } static bool xdk360_alive(void *data) From c9ce831e2237701a285db0620222684fd06aef04 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Mon, 28 May 2012 15:53:04 +0200 Subject: [PATCH 05/70] (360) Inits second shader in FBO mode on startup now --- 360/main.c | 1 + ps3/main.c | 1 + 2 files changed, 2 insertions(+) diff --git a/360/main.c b/360/main.c index 0b1d1680f8..274d6f9c20 100644 --- a/360/main.c +++ b/360/main.c @@ -134,6 +134,7 @@ static void set_default_settings (void) strlcpy(g_settings.video.cg_shader_path, DEFAULT_SHADER_FILE, sizeof(g_settings.video.cg_shader_path)); g_settings.video.fbo_scale_x = 2.0f; g_settings.video.fbo_scale_y = 2.0f; + g_settings.video.render_to_texture = true; strlcpy(g_settings.video.second_pass_shader, DEFAULT_SHADER_FILE, sizeof(g_settings.video.second_pass_shader)); g_settings.video.second_pass_smooth = true; g_settings.video.smooth = true; diff --git a/ps3/main.c b/ps3/main.c index c674c262f8..d5cee11026 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -91,6 +91,7 @@ static void set_default_settings(void) strlcpy(g_settings.video.cg_shader_path, DEFAULT_SHADER_FILE, sizeof(g_settings.video.cg_shader_path)); g_settings.video.fbo_scale_x = 2.0f; g_settings.video.fbo_scale_y = 2.0f; + g_settings.video.render_to_texture = true; strlcpy(g_settings.video.second_pass_shader, DEFAULT_SHADER_FILE, sizeof(g_settings.video.second_pass_shader)); g_settings.video.second_pass_smooth = true; g_settings.video.smooth = true; From 15b7e0fafccf0b07fe1faf4c1d165392650e0e50 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 16:50:18 +0200 Subject: [PATCH 06/70] (360/PS3) Use rarch_create_default_config_file --- 360/main.c | 13 ++----------- console/console_ext.c | 12 ++++++++++++ console/console_ext.h | 1 + ps3/main.c | 14 ++------------ 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/360/main.c b/360/main.c index 274d6f9c20..4696137d80 100644 --- a/360/main.c +++ b/360/main.c @@ -190,12 +190,7 @@ static void init_settings (bool load_libretro_path) char fname_tmp[MAX_PATH_LENGTH]; if(!path_file_exists(SYS_CONFIG_FILE)) - { - FILE * f; - RARCH_ERR("Config file \"%s\" doesn't exist. Creating...\n", SYS_CONFIG_FILE); - f = fopen(SYS_CONFIG_FILE, "w"); - fclose(f); - } + rarch_create_default_config_file(SYS_CONFIG_FILE); config_file_t * conf = config_file_new(SYS_CONFIG_FILE); @@ -281,11 +276,7 @@ static void init_settings (bool load_libretro_path) static void save_settings (void) { if(!path_file_exists(SYS_CONFIG_FILE)) - { - FILE * f; - f = fopen(SYS_CONFIG_FILE, "w"); - fclose(f); - } + rarch_create_default_config_file(SYS_CONFIG_FILE); config_file_t * conf = config_file_new(SYS_CONFIG_FILE); diff --git a/console/console_ext.c b/console/console_ext.c index 4e7ddff1f7..d78addc3b7 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -789,3 +789,15 @@ const char * rarch_convert_wchar_to_const_char(const wchar_t * wstr) wcstombs(str, wstr, sizeof(str)); return str; } + +/*============================================================ + CONFIG + ============================================================ */ + +void rarch_create_default_config_file(const char * conf_name) +{ + FILE * f; + RARCH_WARN("Config file \"%s\" doesn't exist. Creating...\n", conf_name); + f = fopen(conf_name, "w"); + fclose(f); +} diff --git a/console/console_ext.h b/console/console_ext.h index 3fabce5a31..59715fbf27 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -138,5 +138,6 @@ wchar_t * rarch_convert_char_to_wchar(const char * str); const char * rarch_convert_wchar_to_const_char(const wchar_t * wstr); +void rarch_create_default_config_file(const char * conf_name); #endif diff --git a/ps3/main.c b/ps3/main.c index d5cee11026..05cf0d1fe9 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -158,12 +158,7 @@ static void set_default_settings(void) static void init_settings(bool load_libretro_path) { if(!path_file_exists(SYS_CONFIG_FILE)) - { - RARCH_ERR("Config file \"%s\" doesn't exist. Creating...\n", SYS_CONFIG_FILE); - FILE * f; - f = fopen(SYS_CONFIG_FILE, "w"); - fclose(f); - } + rarch_create_default_config_file(SYS_CONFIG_FILE); else { config_file_t * conf = config_file_new(SYS_CONFIG_FILE); @@ -251,12 +246,7 @@ static void init_settings(bool load_libretro_path) static void save_settings(void) { if(!path_file_exists(SYS_CONFIG_FILE)) - { - RARCH_ERR("Config file \"%s\" doesn't exist. Creating...\n", SYS_CONFIG_FILE); - FILE * f; - f = fopen(SYS_CONFIG_FILE, "w"); - fclose(f); - } + rarch_create_default_config_file(SYS_CONFIG_FILE); else { config_file_t * conf = config_file_new(SYS_CONFIG_FILE); From c4e0e45722cb52d0a4e2df7015744734ce546880 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 17:28:29 +0200 Subject: [PATCH 07/70] (PS3/RARCH_CONSOLE) Replace strncpys with strlcpys --- console/fileio/file_browser.c | 4 +-- console/librsound/librsound.c | 2 +- ps3/main.c | 8 ++--- ps3/menu.c | 60 +++++++++++++++++------------------ xenon/main.c | 2 +- 5 files changed, 38 insertions(+), 38 deletions(-) diff --git a/console/fileio/file_browser.c b/console/fileio/file_browser.c index 1cafaf196c..b5fc50b23f 100644 --- a/console/fileio/file_browser.c +++ b/console/fileio/file_browser.c @@ -91,7 +91,7 @@ const char * path, const char * extensions) if(!(ffd.dwFileAttributes & FS_TYPES_DIRECTORY)) { char tmp_extensions[512]; - strncpy(tmp_extensions, extensions, sizeof(tmp_extensions)); + strlcpy(tmp_extensions, extensions, sizeof(tmp_extensions)); const char * current_extension = filebrowser_get_extension(ffd.cFileName); bool found_rom = false; @@ -158,7 +158,7 @@ const char * path, const char * extensions) if (dirent.d_type == FS_TYPES_FILE) { char tmp_extensions[512]; - strncpy(tmp_extensions, extensions, sizeof(tmp_extensions)); + strlcpy(tmp_extensions, extensions, sizeof(tmp_extensions)); const char * current_extension = filebrowser_get_extension(dirent.d_name); bool found_rom = false; diff --git a/console/librsound/librsound.c b/console/librsound/librsound.c index 4b18d46a8d..c7366b054f 100644 --- a/console/librsound/librsound.c +++ b/console/librsound/librsound.c @@ -1415,7 +1415,7 @@ int rsd_set_param(rsound_t *rd, enum rsd_settings option, void* param) break; case RSD_IDENTITY: - strncpy(rd->identity, param, sizeof(rd->identity)); + strlcpy(rd->identity, param, sizeof(rd->identity)); rd->identity[sizeof(rd->identity)-1] = '\0'; break; diff --git a/ps3/main.c b/ps3/main.c index 05cf0d1fe9..2d5024dfc2 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -343,7 +343,7 @@ static void get_environment_settings(int argc, char *argv[]) char dirName[CELL_GAME_DIRNAME_SIZE]; CellSysCacheParam param; memset(¶m, 0x00, sizeof(CellSysCacheParam)); - strncpy(param.cacheId,CACHE_ID, sizeof(CellSysCacheParam)); + strlcpy(param.cacheId,CACHE_ID, sizeof(CellSysCacheParam)); ret = cellSysCacheMount(¶m); if(ret != CELL_SYSCACHE_RET_OK_CLEARED) @@ -354,12 +354,12 @@ static void get_environment_settings(int argc, char *argv[]) if(argc > 1) { /* launched from external launcher */ - strncpy(MULTIMAN_EXECUTABLE, argv[2], sizeof(MULTIMAN_EXECUTABLE)); + strlcpy(MULTIMAN_EXECUTABLE, argv[2], sizeof(MULTIMAN_EXECUTABLE)); } else { /* not launched from external launcher, set default path */ - strncpy(MULTIMAN_EXECUTABLE, "/dev_hdd0/game/BLES80608/USRDIR/RELOAD.SELF", + strlcpy(MULTIMAN_EXECUTABLE, "/dev_hdd0/game/BLES80608/USRDIR/RELOAD.SELF", sizeof(MULTIMAN_EXECUTABLE)); } @@ -516,7 +516,7 @@ int main(int argc, char *argv[]) break; case EXTERN_LAUNCHER_MULTIMAN: RARCH_LOG("Started from multiMAN, will auto-start game.\n"); - strncpy(g_console.rom_path, argv[1], sizeof(g_console.rom_path)); + strlcpy(g_console.rom_path, argv[1], sizeof(g_console.rom_path)); g_console.initialize_rarch_enable = 1; g_console.mode_switch = MODE_EMULATION; rarch_startup(SYS_CONFIG_FILE); diff --git a/ps3/menu.c b/ps3/menu.c index 4462100eeb..3364dcc13a 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -815,43 +815,43 @@ static void select_file(uint32_t menu_id) switch(menu_id) { case SHADER_CHOICE: - strncpy(dir_path, SHADERS_DIR_PATH, sizeof(dir_path)); - strncpy(extensions, "cg|CG", sizeof(extensions)); - strncpy(title, "SHADER SELECTION", sizeof(title)); - strncpy(object, "Shader", sizeof(object)); - strncpy(comment, "INFO - Select a shader from the menu by pressing the X button.", sizeof(comment)); + strlcpy(dir_path, SHADERS_DIR_PATH, sizeof(dir_path)); + strlcpy(extensions, "cg|CG", sizeof(extensions)); + strlcpy(title, "SHADER SELECTION", sizeof(title)); + strlcpy(object, "Shader", sizeof(object)); + strlcpy(comment, "INFO - Select a shader from the menu by pressing the X button.", sizeof(comment)); break; case PRESET_CHOICE: - strncpy(dir_path, PRESETS_DIR_PATH, sizeof(dir_path)); - strncpy(extensions, "cgp|CGP", sizeof(extensions)); - strncpy(title, "SHADER PRESETS SELECTION", sizeof(title)); - strncpy(object, "Shader", sizeof(object)); - strncpy(object, "Shader preset", sizeof(object)); - strncpy(comment, "INFO - Select a shader preset from the menu by pressing the X button.", sizeof(comment)); + strlcpy(dir_path, PRESETS_DIR_PATH, sizeof(dir_path)); + strlcpy(extensions, "cgp|CGP", sizeof(extensions)); + strlcpy(title, "SHADER PRESETS SELECTION", sizeof(title)); + strlcpy(object, "Shader", sizeof(object)); + strlcpy(object, "Shader preset", sizeof(object)); + strlcpy(comment, "INFO - Select a shader preset from the menu by pressing the X button.", sizeof(comment)); break; case INPUT_PRESET_CHOICE: - strncpy(dir_path, INPUT_PRESETS_DIR_PATH, sizeof(dir_path)); - strncpy(extensions, "cfg|CFG", sizeof(extensions)); - strncpy(title, "INPUT PRESETS SELECTION", sizeof(title)); - strncpy(object, "Input", sizeof(object)); - strncpy(object, "Input preset", sizeof(object)); - strncpy(comment, "INFO - Select an input preset from the menu by pressing the X button.", sizeof(comment)); + strlcpy(dir_path, INPUT_PRESETS_DIR_PATH, sizeof(dir_path)); + strlcpy(extensions, "cfg|CFG", sizeof(extensions)); + strlcpy(title, "INPUT PRESETS SELECTION", sizeof(title)); + strlcpy(object, "Input", sizeof(object)); + strlcpy(object, "Input preset", sizeof(object)); + strlcpy(comment, "INFO - Select an input preset from the menu by pressing the X button.", sizeof(comment)); break; case BORDER_CHOICE: - strncpy(dir_path, BORDERS_DIR_PATH, sizeof(dir_path)); - strncpy(extensions, "png|PNG|jpg|JPG|JPEG|jpeg", sizeof(extensions)); - strncpy(title, "BORDER SELECTION", sizeof(title)); - strncpy(object, "Border", sizeof(object)); - strncpy(object, "Border image file", sizeof(object)); - strncpy(comment, "INFO - Select a border image file from the menu by pressing the X button.", sizeof(comment)); + strlcpy(dir_path, BORDERS_DIR_PATH, sizeof(dir_path)); + strlcpy(extensions, "png|PNG|jpg|JPG|JPEG|jpeg", sizeof(extensions)); + strlcpy(title, "BORDER SELECTION", sizeof(title)); + strlcpy(object, "Border", sizeof(object)); + strlcpy(object, "Border image file", sizeof(object)); + strlcpy(comment, "INFO - Select a border image file from the menu by pressing the X button.", sizeof(comment)); break; case LIBRETRO_CHOICE: - strncpy(dir_path, LIBRETRO_DIR_PATH, sizeof(dir_path)); - strncpy(extensions, "self|SELF|bin|BIN", sizeof(extensions)); - strncpy(title, "LIBRETRO CORE SELECTION", sizeof(title)); - strncpy(object, "Libretro", sizeof(object)); - strncpy(object, "Libretro core library", sizeof(object)); - strncpy(comment, "INFO - Select a Libretro core from the menu by pressing the X button.", sizeof(comment)); + strlcpy(dir_path, LIBRETRO_DIR_PATH, sizeof(dir_path)); + strlcpy(extensions, "self|SELF|bin|BIN", sizeof(extensions)); + strlcpy(title, "LIBRETRO CORE SELECTION", sizeof(title)); + strlcpy(object, "Libretro", sizeof(object)); + strlcpy(object, "Libretro core library", sizeof(object)); + strlcpy(comment, "INFO - Select a Libretro core from the menu by pressing the X button.", sizeof(comment)); break; } @@ -1086,7 +1086,7 @@ static void rarch_filename_input_and_save (unsigned filename_type) if(g_console.oskutil_handle.text_can_be_fetched) { - strncpy(filename_tmp, OUTPUT_TEXT_STRING(g_console.oskutil_handle), sizeof(filename_tmp)); + strlcpy(filename_tmp, OUTPUT_TEXT_STRING(g_console.oskutil_handle), sizeof(filename_tmp)); switch(filename_type) { case CONFIG_FILE: diff --git a/xenon/main.c b/xenon/main.c index 5cb606220d..7aedb5b39e 100644 --- a/xenon/main.c +++ b/xenon/main.c @@ -40,7 +40,7 @@ static void start_ssnes(const char *path) { char arg0[] = "ssnes"; char arg1[256]; - strncpy(arg1, path, sizeof(arg1)); + strlcpy(arg1, path, sizeof(arg1)); char *argv[3] = { arg0, arg1, NULL }; rarch_main(sizeof(argv) / sizeof(argv[0]) - 1, argv); } From 944ddc589ba26d41a599d034eb7eea57e9bf6e6f Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 17:34:58 +0200 Subject: [PATCH 08/70] (360/PS3) Use PATH_MAX instead of MAX_PATH_LENGTH --- 360/main.c | 6 +++--- 360/menu.cpp | 6 +++--- 360/shared.h | 2 -- console/fileio/file_browser.h | 1 - console/salamander/main.c | 16 +++++++--------- ps3/main.c | 32 +++++++++++++++----------------- ps3/menu.c | 16 ++++++++-------- ps3/shared.h | 30 ++++++++++++++---------------- 8 files changed, 50 insertions(+), 59 deletions(-) diff --git a/360/main.c b/360/main.c index 4696137d80..bc1e12cdff 100644 --- a/360/main.c +++ b/360/main.c @@ -49,8 +49,8 @@ typedef struct _STRING { char * Buffer; } STRING; -char DEFAULT_SHADER_FILE[MAX_PATH_LENGTH]; -char SYS_CONFIG_FILE[MAX_PATH_LENGTH]; +char DEFAULT_SHADER_FILE[PATH_MAX]; +char SYS_CONFIG_FILE[PATH_MAX]; extern "C" int __stdcall ObCreateSymbolicLink( STRING*, STRING*); @@ -187,7 +187,7 @@ static void set_default_settings (void) static void init_settings (bool load_libretro_path) { - char fname_tmp[MAX_PATH_LENGTH]; + char fname_tmp[PATH_MAX]; if(!path_file_exists(SYS_CONFIG_FILE)) rarch_create_default_config_file(SYS_CONFIG_FILE); diff --git a/360/menu.cpp b/360/menu.cpp index 835c9742a7..902a7fedcd 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -472,7 +472,7 @@ HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) { - char path[MAX_PATH_LENGTH]; + char path[PATH_MAX]; if(hObjPressed == m_romlist) { @@ -527,7 +527,7 @@ HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) { - char path[MAX_PATH_LENGTH]; + char path[PATH_MAX]; if(hObjPressed == m_shaderlist) { @@ -567,7 +567,7 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand HRESULT CRetroArchCoreBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) { - char path[MAX_PATH_LENGTH]; + char path[PATH_MAX]; if(hObjPressed == m_romlist) { diff --git a/360/shared.h b/360/shared.h index c6e0a82589..fd711c7e3a 100644 --- a/360/shared.h +++ b/360/shared.h @@ -17,8 +17,6 @@ #ifndef _360_SHARED_H #define _360_SHARED_H -#define MAX_PATH_LENGTH 1024 - enum { MENU_ITEM_LOAD_STATE = 0, MENU_ITEM_SAVE_STATE, diff --git a/console/fileio/file_browser.h b/console/fileio/file_browser.h index ef25ad1b92..8ebd074555 100644 --- a/console/fileio/file_browser.h +++ b/console/fileio/file_browser.h @@ -18,7 +18,6 @@ #define FILEBROWSER_H_ #define MAXJOLIET 255 -#define MAX_PATH_LENGTH 1024 #include #include diff --git a/console/salamander/main.c b/console/salamander/main.c index f9b84205fc..429ea54178 100644 --- a/console/salamander/main.c +++ b/console/salamander/main.c @@ -44,8 +44,6 @@ #define PATH_MAX 512 #endif -#define MAX_PATH_LENGTH 1024 - #ifdef HAVE_LOGGER #include "logger.h" #define RARCH_LOG(...) logger_send("RetroArch Salamander: " __VA_ARGS__); @@ -72,16 +70,16 @@ #if defined(__CELLOS_LV2__) static uint8_t np_pool[NP_POOL_SIZE]; -char contentInfoPath[MAX_PATH_LENGTH]; -char usrDirPath[MAX_PATH_LENGTH]; +char contentInfoPath[PATH_MAX]; +char usrDirPath[PATH_MAX]; SYS_PROCESS_PARAM(1001, 0x100000) #elif defined(_XBOX) DWORD volume_device_type; #endif -char LIBRETRO_DIR_PATH[MAX_PATH_LENGTH]; -char SYS_CONFIG_FILE[MAX_PATH_LENGTH]; -char libretro_path[MAX_PATH_LENGTH]; +char LIBRETRO_DIR_PATH[PATH_MAX]; +char SYS_CONFIG_FILE[PATH_MAX]; +char libretro_path[PATH_MAX]; static void find_and_set_first_file(void) { @@ -107,7 +105,7 @@ static void find_and_set_first_file(void) #ifdef _XBOX //Check if it's RetroArch Salamander itself - if so, first_executable needs to //be overridden - char fname_tmp[MAX_PATH_LENGTH]; + char fname_tmp[PATH_MAX]; fill_pathname_base(fname_tmp, first_executable, sizeof(fname_tmp)); @@ -140,7 +138,7 @@ static void find_and_set_first_file(void) static void init_settings(void) { - char tmp_str[MAX_PATH_LENGTH]; + char tmp_str[PATH_MAX]; bool config_file_exists; if(!path_file_exists(SYS_CONFIG_FILE)) diff --git a/ps3/main.c b/ps3/main.c index 2d5024dfc2..85e7760db5 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -52,8 +52,6 @@ #include "menu.h" -#define MAX_PATH_LENGTH 1024 - #define EMULATOR_CONTENT_DIR "SSNE10000" #define EMULATOR_CORE_DIR "cores" @@ -61,21 +59,21 @@ #define NP_POOL_SIZE (128*1024) static uint8_t np_pool[NP_POOL_SIZE]; -char contentInfoPath[MAX_PATH_LENGTH]; -char usrDirPath[MAX_PATH_LENGTH]; -char DEFAULT_PRESET_FILE[MAX_PATH_LENGTH]; -char DEFAULT_BORDER_FILE[MAX_PATH_LENGTH]; -char DEFAULT_MENU_BORDER_FILE[MAX_PATH_LENGTH]; -char PRESETS_DIR_PATH[MAX_PATH_LENGTH]; -char INPUT_PRESETS_DIR_PATH[MAX_PATH_LENGTH]; -char BORDERS_DIR_PATH[MAX_PATH_LENGTH]; -char SHADERS_DIR_PATH[MAX_PATH_LENGTH]; -char LIBRETRO_DIR_PATH[MAX_PATH_LENGTH]; -char DEFAULT_SHADER_FILE[MAX_PATH_LENGTH]; -char DEFAULT_MENU_SHADER_FILE[MAX_PATH_LENGTH]; -char SYS_CONFIG_FILE[MAX_PATH_LENGTH]; -char EMULATOR_CORE_SELF[MAX_PATH_LENGTH]; -char MULTIMAN_EXECUTABLE[MAX_PATH_LENGTH]; +char contentInfoPath[PATH_MAX]; +char usrDirPath[PATH_MAX]; +char DEFAULT_PRESET_FILE[PATH_MAX]; +char DEFAULT_BORDER_FILE[PATH_MAX]; +char DEFAULT_MENU_BORDER_FILE[PATH_MAX]; +char PRESETS_DIR_PATH[PATH_MAX]; +char INPUT_PRESETS_DIR_PATH[PATH_MAX]; +char BORDERS_DIR_PATH[PATH_MAX]; +char SHADERS_DIR_PATH[PATH_MAX]; +char LIBRETRO_DIR_PATH[PATH_MAX]; +char DEFAULT_SHADER_FILE[PATH_MAX]; +char DEFAULT_MENU_SHADER_FILE[PATH_MAX]; +char SYS_CONFIG_FILE[PATH_MAX]; +char EMULATOR_CORE_SELF[PATH_MAX]; +char MULTIMAN_EXECUTABLE[PATH_MAX]; int rarch_main(int argc, char *argv[]); diff --git a/ps3/menu.c b/ps3/menu.c index 3364dcc13a..1d835826fc 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -362,7 +362,7 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting) break; case SETTING_SHADER_PRESETS: { - char fname[MAX_PATH_LENGTH]; + char fname[PATH_MAX]; if(g_console.cgp_path == DEFAULT_PRESET_FILE) menu_obj->items[currentsetting].text_color = GREEN; else @@ -373,7 +373,7 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting) break; case SETTING_SHADER: { - char fname[MAX_PATH_LENGTH]; + char fname[PATH_MAX]; fill_pathname_base(fname, g_settings.video.cg_shader_path, sizeof(fname)); snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "%s", fname); @@ -385,7 +385,7 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting) break; case SETTING_SHADER_2: { - char fname[MAX_PATH_LENGTH]; + char fname[PATH_MAX]; fill_pathname_base(fname, g_settings.video.second_pass_shader, sizeof(fname)); snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "%s", fname); @@ -569,7 +569,7 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting) break; case SETTING_RARCH_DEFAULT_EMU: { - char fname[MAX_PATH_LENGTH]; + char fname[PATH_MAX]; fill_pathname_base(fname, g_settings.libretro, sizeof(fname)); snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "%s", fname); @@ -803,8 +803,8 @@ static void apply_scaling (unsigned init_mode) static void select_file(uint32_t menu_id) { - char extensions[256], title[256], object[256], comment[256], dir_path[MAX_PATH_LENGTH], - path[MAX_PATH_LENGTH], *separatorslash; + char extensions[256], title[256], object[256], comment[256], dir_path[PATH_MAX], + path[PATH_MAX], *separatorslash; uint64_t state, diff_state, button_was_pressed; gl_t * gl = driver.video_data; @@ -1069,7 +1069,7 @@ static void set_keybind_digital(uint64_t state, uint64_t default_retro_joypad_id static void rarch_filename_input_and_save (unsigned filename_type) { bool filename_entered = false; - char filename_tmp[256], filepath[MAX_PATH_LENGTH]; + char filename_tmp[256], filepath[PATH_MAX]; oskutil_write_initial_message(&g_console.oskutil_handle, L"example"); oskutil_write_message(&g_console.oskutil_handle, L"Enter filename for preset (with no file extension)"); @@ -1946,7 +1946,7 @@ static void select_rom(void) } else if (FILEBROWSER_IS_CURRENT_A_FILE(browser)) { - char rom_path_temp[MAX_PATH_LENGTH]; + char rom_path_temp[PATH_MAX]; struct retro_system_info info; retro_get_system_info(&info); bool block_zip_extract = info.block_extract; diff --git a/ps3/shared.h b/ps3/shared.h index 09b656d3ff..cafcc1f64f 100644 --- a/ps3/shared.h +++ b/ps3/shared.h @@ -17,8 +17,6 @@ #ifndef _PS3_SHARED_H #define _PS3_SHARED_H -#define MAX_PATH_LENGTH 1024 - /* ABGR color format */ #define WHITE 0xffffffffu @@ -73,19 +71,19 @@ enum { #define MENU_ITEM_LAST MENU_ITEM_RETURN_TO_XMB+1 -extern char contentInfoPath[MAX_PATH_LENGTH]; -extern char usrDirPath[MAX_PATH_LENGTH]; -extern char DEFAULT_PRESET_FILE[MAX_PATH_LENGTH]; -extern char DEFAULT_BORDER_FILE[MAX_PATH_LENGTH]; -extern char DEFAULT_MENU_BORDER_FILE[MAX_PATH_LENGTH]; -extern char PRESETS_DIR_PATH[MAX_PATH_LENGTH]; -extern char INPUT_PRESETS_DIR_PATH[MAX_PATH_LENGTH]; -extern char BORDERS_DIR_PATH[MAX_PATH_LENGTH]; -extern char SHADERS_DIR_PATH[MAX_PATH_LENGTH]; -extern char DEFAULT_SHADER_FILE[MAX_PATH_LENGTH]; -extern char DEFAULT_MENU_SHADER_FILE[MAX_PATH_LENGTH]; -extern char LIBRETRO_DIR_PATH[MAX_PATH_LENGTH]; -extern char SYS_CONFIG_FILE[MAX_PATH_LENGTH]; -extern char MULTIMAN_EXECUTABLE[MAX_PATH_LENGTH]; +extern char contentInfoPath[PATH_MAX]; +extern char usrDirPath[PATH_MAX]; +extern char DEFAULT_PRESET_FILE[PATH_MAX]; +extern char DEFAULT_BORDER_FILE[PATH_MAX]; +extern char DEFAULT_MENU_BORDER_FILE[PATH_MAX]; +extern char PRESETS_DIR_PATH[PATH_MAX]; +extern char INPUT_PRESETS_DIR_PATH[PATH_MAX]; +extern char BORDERS_DIR_PATH[PATH_MAX]; +extern char SHADERS_DIR_PATH[PATH_MAX]; +extern char DEFAULT_SHADER_FILE[PATH_MAX]; +extern char DEFAULT_MENU_SHADER_FILE[PATH_MAX]; +extern char LIBRETRO_DIR_PATH[PATH_MAX]; +extern char SYS_CONFIG_FILE[PATH_MAX]; +extern char MULTIMAN_EXECUTABLE[PATH_MAX]; #endif From 593376b9aab19dd94a0fff53ae1e57bf462a33c9 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 17:49:31 +0200 Subject: [PATCH 09/70] (360/PS3) Both ports use rarch_config_save now for saving settings to config file --- 360/main.c | 50 ++--------------------------- console/console_ext.c | 74 ++++++++++++++++++++++++++++++++++++++++++- console/console_ext.h | 3 +- ps3/main.c | 69 +++------------------------------------- 4 files changed, 81 insertions(+), 115 deletions(-) diff --git a/360/main.c b/360/main.c index bc1e12cdff..55d6daf8bb 100644 --- a/360/main.c +++ b/360/main.c @@ -190,7 +190,7 @@ static void init_settings (bool load_libretro_path) char fname_tmp[PATH_MAX]; if(!path_file_exists(SYS_CONFIG_FILE)) - rarch_create_default_config_file(SYS_CONFIG_FILE); + rarch_config_create_default(SYS_CONFIG_FILE); config_file_t * conf = config_file_new(SYS_CONFIG_FILE); @@ -273,52 +273,6 @@ static void init_settings (bool load_libretro_path) CONFIG_GET_INT_EXTERN(audio_data.mute, "audio_mute"); } -static void save_settings (void) -{ - if(!path_file_exists(SYS_CONFIG_FILE)) - rarch_create_default_config_file(SYS_CONFIG_FILE); - - config_file_t * conf = config_file_new(SYS_CONFIG_FILE); - - if(conf == NULL) - conf = config_file_new(NULL); - - // g_settings - config_set_string(conf, "libretro_path", g_settings.libretro); - config_set_bool(conf, "rewind_enable", g_settings.rewind_enable); - config_set_string(conf, "video_cg_shader", g_settings.video.cg_shader_path); - config_set_string(conf, "video_second_pass_shader", g_settings.video.second_pass_shader); - config_set_float(conf, "video_aspect_ratio", g_settings.video.aspect_ratio); - config_set_float(conf, "video_fbo_scale_x", g_settings.video.fbo_scale_x); - config_set_float(conf, "video_fbo_scale_y", g_settings.video.fbo_scale_y); - config_set_bool(conf, "video_render_to_texture", g_settings.video.render_to_texture); - config_set_bool(conf, "video_second_pass_smooth", g_settings.video.second_pass_smooth); - config_set_bool(conf, "video_smooth", g_settings.video.smooth); - config_set_bool(conf, "video_vsync", g_settings.video.vsync); - - // g_console - config_set_bool(conf, "fbo_enabled", g_console.fbo_enabled); - config_set_string(conf, "default_rom_startup_dir", g_console.default_rom_startup_dir); - config_set_bool(conf, "gamma_correction_enable", g_console.gamma_correction_enable); - config_set_bool(conf, "throttle_enable", g_console.throttle_enable); - config_set_int(conf, "aspect_ratio_index", g_console.aspect_ratio_index); - config_set_int(conf, "custom_viewport_width", g_console.viewports.custom_vp.width); - config_set_int(conf, "custom_viewport_height", g_console.viewports.custom_vp.height); - config_set_int(conf, "custom_viewport_x", g_console.viewports.custom_vp.x); - config_set_int(conf, "custom_viewport_y", g_console.viewports.custom_vp.y); - config_set_int(conf, "screen_orientation", g_console.screen_orientation); - config_set_int(conf, "color_format", g_console.color_format); - - // g_extern - config_set_int(conf, "state_slot", g_extern.state_slot); - config_set_int(conf, "audio_mute", g_extern.audio_data.mute); - - if (!config_file_write(conf, SYS_CONFIG_FILE)) - RARCH_ERR("Failed to write config file to \"%s\". Check permissions.\n", SYS_CONFIG_FILE); - - free(conf); -} - static void get_environment_settings (void) { DWORD ret; @@ -443,7 +397,7 @@ begin_loop: begin_shutdown: if(path_file_exists(SYS_CONFIG_FILE)) - save_settings(); + rarch_config_save(SYS_CONFIG_FILE); menu_deinit(); video_xdk360.stop(); diff --git a/console/console_ext.c b/console/console_ext.c index d78addc3b7..816fc3a607 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -794,10 +794,82 @@ const char * rarch_convert_wchar_to_const_char(const wchar_t * wstr) CONFIG ============================================================ */ -void rarch_create_default_config_file(const char * conf_name) +void rarch_config_create_default(const char * conf_name) { FILE * f; RARCH_WARN("Config file \"%s\" doesn't exist. Creating...\n", conf_name); f = fopen(conf_name, "w"); fclose(f); } + +void rarch_config_save(const char * conf_name) +{ + if(!path_file_exists(conf_name)) + rarch_config_create_default(conf_name); + else + { + config_file_t * conf = config_file_new(conf_name); + + if(conf == NULL) + conf = config_file_new(NULL); + + // g_settings + config_set_string(conf, "libretro_path", g_settings.libretro); +#ifdef HAVE_XML + config_set_string(conf, "cheat_database_path", g_settings.cheat_database); +#endif + config_set_bool(conf, "rewind_enable", g_settings.rewind_enable); + config_set_string(conf, "video_cg_shader", g_settings.video.cg_shader_path); + config_set_float(conf, "video_aspect_ratio", g_settings.video.aspect_ratio); +#ifdef HAVE_FBO + config_set_float(conf, "video_fbo_scale_x", g_settings.video.fbo_scale_x); + config_set_float(conf, "video_fbo_scale_y", g_settings.video.fbo_scale_y); + config_set_string(conf, "video_second_pass_shader", g_settings.video.second_pass_shader); + config_set_bool(conf, "video_render_to_texture", g_settings.video.render_to_texture); + config_set_bool(conf, "video_second_pass_smooth", g_settings.video.second_pass_smooth); +#endif + config_set_bool(conf, "video_smooth", g_settings.video.smooth); + config_set_bool(conf, "video_vsync", g_settings.video.vsync); + config_set_string(conf, "audio_device", g_settings.audio.device); + + for (unsigned i = 0; i < 7; i++) + { + char cfg[64]; + snprintf(cfg, sizeof(cfg), "input_dpad_emulation_p%u", i + 1); + config_set_int(conf, cfg, g_settings.input.dpad_emulation[i]); + } + +#ifdef RARCH_CONSOLE + config_set_bool(conf, "fbo_enabled", g_console.fbo_enabled); + config_set_bool(conf, "custom_bgm_enable", g_console.custom_bgm_enable); + config_set_bool(conf, "overscan_enable", g_console.overscan_enable); + config_set_bool(conf, "screenshots_enable", g_console.screenshots_enable); +#ifdef _XBOX + config_set_bool(conf, "gamma_correction_enable", g_console.gamma_correction_enable); + config_set_int(conf, "color_format", g_console.color_format); +#endif + config_set_bool(conf, "throttle_enable", g_console.throttle_enable); + config_set_bool(conf, "triple_buffering_enable", g_console.triple_buffering_enable); + config_set_int(conf, "sound_mode", g_console.sound_mode); + config_set_int(conf, "aspect_ratio_index", g_console.aspect_ratio_index); + config_set_int(conf, "current_resolution_id", g_console.current_resolution_id); + config_set_int(conf, "custom_viewport_width", g_console.viewports.custom_vp.width); + config_set_int(conf, "custom_viewport_height", g_console.viewports.custom_vp.height); + config_set_int(conf, "custom_viewport_x", g_console.viewports.custom_vp.x); + config_set_int(conf, "custom_viewport_y", g_console.viewports.custom_vp.y); + config_set_int(conf, "screen_orientation", g_console.screen_orientation); + config_set_string(conf, "default_rom_startup_dir", g_console.default_rom_startup_dir); + config_set_float(conf, "menu_font_size", g_console.menu_font_size); + config_set_float(conf, "overscan_amount", g_console.overscan_amount); +#endif + + // g_extern + config_set_int(conf, "state_slot", g_extern.state_slot); + config_set_int(conf, "audio_mute", g_extern.audio_data.mute); + + if (!config_file_write(conf, conf_name)) + RARCH_ERR("Failed to write config file to \"%s\". Check permissions.\n", conf_name); + + free(conf); + } +} diff --git a/console/console_ext.h b/console/console_ext.h index 59715fbf27..5af5414395 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -138,6 +138,7 @@ wchar_t * rarch_convert_char_to_wchar(const char * str); const char * rarch_convert_wchar_to_const_char(const wchar_t * wstr); -void rarch_create_default_config_file(const char * conf_name); +void rarch_config_create_default(const char * conf_name); +void rarch_config_save(const char * conf_name); #endif diff --git a/ps3/main.c b/ps3/main.c index 85e7760db5..d13651f89d 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -156,7 +156,7 @@ static void set_default_settings(void) static void init_settings(bool load_libretro_path) { if(!path_file_exists(SYS_CONFIG_FILE)) - rarch_create_default_config_file(SYS_CONFIG_FILE); + rarch_config_create_default(SYS_CONFIG_FILE); else { config_file_t * conf = config_file_new(SYS_CONFIG_FILE); @@ -241,69 +241,6 @@ static void init_settings(bool load_libretro_path) } } -static void save_settings(void) -{ - if(!path_file_exists(SYS_CONFIG_FILE)) - rarch_create_default_config_file(SYS_CONFIG_FILE); - else - { - config_file_t * conf = config_file_new(SYS_CONFIG_FILE); - - if(conf == NULL) - conf = config_file_new(NULL); - - // g_settings - config_set_string(conf, "libretro_path", g_settings.libretro); - config_set_string(conf, "cheat_database_path", g_settings.cheat_database); - config_set_bool(conf, "rewind_enable", g_settings.rewind_enable); - config_set_string(conf, "video_cg_shader", g_settings.video.cg_shader_path); - config_set_string(conf, "video_second_pass_shader", g_settings.video.second_pass_shader); - config_set_float(conf, "video_aspect_ratio", g_settings.video.aspect_ratio); - config_set_float(conf, "video_fbo_scale_x", g_settings.video.fbo_scale_x); - config_set_float(conf, "video_fbo_scale_y", g_settings.video.fbo_scale_y); - config_set_bool(conf, "video_render_to_texture", g_settings.video.render_to_texture); - config_set_bool(conf, "video_second_pass_smooth", g_settings.video.second_pass_smooth); - config_set_bool(conf, "video_smooth", g_settings.video.smooth); - config_set_bool(conf, "video_vsync", g_settings.video.vsync); - config_set_string(conf, "audio_device", g_settings.audio.device); - - for (unsigned i = 0; i < 7; i++) - { - char cfg[64]; - snprintf(cfg, sizeof(cfg), "input_dpad_emulation_p%u", i + 1); - config_set_int(conf, cfg, g_settings.input.dpad_emulation[i]); - } - - // g_console - config_set_bool(conf, "fbo_enabled", g_console.fbo_enabled); - config_set_bool(conf, "custom_bgm_enable", g_console.custom_bgm_enable); - config_set_bool(conf, "overscan_enable", g_console.overscan_enable); - config_set_bool(conf, "screenshots_enable", g_console.screenshots_enable); - config_set_bool(conf, "throttle_enable", g_console.throttle_enable); - config_set_bool(conf, "triple_buffering_enable", g_console.triple_buffering_enable); - config_set_int(conf, "sound_mode", g_console.sound_mode); - config_set_int(conf, "aspect_ratio_index", g_console.aspect_ratio_index); - config_set_int(conf, "current_resolution_id", g_console.current_resolution_id); - config_set_int(conf, "custom_viewport_width", g_console.viewports.custom_vp.width); - config_set_int(conf, "custom_viewport_height", g_console.viewports.custom_vp.height); - config_set_int(conf, "custom_viewport_x", g_console.viewports.custom_vp.x); - config_set_int(conf, "custom_viewport_y", g_console.viewports.custom_vp.y); - config_set_int(conf, "screen_orientation", g_console.screen_orientation); - config_set_string(conf, "default_rom_startup_dir", g_console.default_rom_startup_dir); - config_set_float(conf, "menu_font_size", g_console.menu_font_size); - config_set_float(conf, "overscan_amount", g_console.overscan_amount); - - // g_extern - config_set_int(conf, "state_slot", g_extern.state_slot); - config_set_int(conf, "audio_mute", g_extern.audio_data.mute); - - if (!config_file_write(conf, SYS_CONFIG_FILE)) - RARCH_ERR("Failed to write config file to \"%s\". Check permissions.\n", SYS_CONFIG_FILE); - - free(conf); - } -} - #ifdef HAVE_SYSUTILS static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdata) { @@ -546,9 +483,11 @@ begin_loop: begin_shutdown: if(path_file_exists(SYS_CONFIG_FILE)) - save_settings(); + rarch_config_save(SYS_CONFIG_FILE); + if(g_console.emulator_initialized) rarch_main_deinit(); + input_ps3.free(NULL); video_gl.stop(); From eca9b3ddc9d2f85b53eb76bf1dafbf20918f56c0 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 18:25:01 +0200 Subject: [PATCH 10/70] (360/PS3) 360 and PS3 both use rarch_manage_libretro_set_first_file now --- 360/main.c | 52 +++---------------------------- console/console_ext.c | 71 ++++++++++++++++++++++++++++++++++++++++++- console/console_ext.h | 7 ++++- ps3/main.c | 35 +++------------------ 4 files changed, 84 insertions(+), 81 deletions(-) diff --git a/360/main.c b/360/main.c index 55d6daf8bb..1582df7b69 100644 --- a/360/main.c +++ b/360/main.c @@ -187,60 +187,16 @@ static void set_default_settings (void) static void init_settings (bool load_libretro_path) { - char fname_tmp[PATH_MAX]; if(!path_file_exists(SYS_CONFIG_FILE)) rarch_config_create_default(SYS_CONFIG_FILE); config_file_t * conf = config_file_new(SYS_CONFIG_FILE); +#ifdef HAVE_LIBRETRO_MANAGEMENT if(load_libretro_path) - { - CONFIG_GET_STRING(libretro, "libretro_path"); - - if(!strcmp(g_settings.libretro, "")) - { - //We need to set libretro to the first entry in the cores - //directory so that it will be saved to the config file - char ** dir_list = dir_list_new("game:\\", ".xex"); - - if (!dir_list) - { - RARCH_ERR("Couldn't read directory.\n"); - return; - } - - const char * first_xex = dir_list[0]; - - if(first_xex) - { - fill_pathname_base(fname_tmp, first_xex, sizeof(fname_tmp)); - - if(strcmp(fname_tmp, "RetroArch-Salamander.xex") == 0) - { - RARCH_WARN("First entry is RetroArch Salamander itself, increment entry by one and check if it exists.\n"); - first_xex = dir_list[1]; - fill_pathname_base(fname_tmp, first_xex, sizeof(fname_tmp)); - - if(!first_xex) - { - //This is very unlikely to happen - RARCH_WARN("There is no second entry - no choice but to set it to RetroArch Salamander\n"); - first_xex = dir_list[0]; - fill_pathname_base(fname_tmp, first_xex, sizeof(fname_tmp)); - } - } - RARCH_LOG("Set first .xex entry in dir: [%s] to libretro path.\n", fname_tmp); - snprintf(g_settings.libretro, sizeof(g_settings.libretro), "game:\\%s", fname_tmp); - } - else - { - RARCH_ERR("Failed to set first .xex entry to libretro path.\n"); - } - - dir_list_free(dir_list); - } - } + rarch_manage_libretro_set_first_file(SYS_CONFIG_FILE, "game:\\", ".xex"); +#endif // g_settings CONFIG_GET_STRING(cheat_database, "cheat_database"); @@ -359,7 +315,7 @@ int main(int argc, char *argv[]) char full_path[1024]; snprintf(full_path, sizeof(full_path), "game:\\CORE.xex"); - bool load_libretro_path = rarch_manage_libretro_core(full_path, "game:\\", ".xex"); + bool load_libretro_path = rarch_manage_libretro_install(full_path, "game:\\", ".xex"); set_default_settings(); init_settings(load_libretro_path); diff --git a/console/console_ext.c b/console/console_ext.c index 816fc3a607..3d229c017b 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -27,6 +27,11 @@ #include "console_ext.h" #include "../file.h" +#ifdef HAVE_CONFIGFILE +#include "../conf/config_file.h" +#include "../conf/config_file_macros.h" +#endif + #ifdef HAVE_ZLIB #include "rzlib/zlib.h" #define WRITEBUFFERSIZE (1024 * 512) @@ -517,7 +522,7 @@ void rarch_set_auto_viewport(unsigned width, unsigned height) ============================================================ */ #ifdef HAVE_LIBRETRO_MANAGEMENT -bool rarch_manage_libretro_core(const char *full_path, const char *path, const char *exe_ext) +bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext) { g_extern.verbose = true; bool return_code; @@ -604,6 +609,68 @@ bool rarch_manage_libretro_core(const char *full_path, const char *path, const c return return_code; } + +#ifdef HAVE_CONFIGFILE +void rarch_manage_libretro_set_first_file(const char * conf_name, const char *libretro_path, const char * exe_ext) +{ +#ifdef _XBOX + char fname_tmp[PATH_MAX]; +#endif + + config_file_t * conf = config_file_new(conf_name); + + CONFIG_GET_STRING(libretro, "libretro_path"); + + if(!strcmp(g_settings.libretro, "")) + { + //We need to set libretro to the first entry in the cores + //directory so that it will be saved to the config file + + char ** dir_list = dir_list_new(libretro_path, exe_ext); + + if (!dir_list) + { + RARCH_ERR("Couldn't read directory.\n"); + return; + } + + const char * first_exe = dir_list[0]; + + if(first_exe) + { +#ifdef _XBOX + fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); + + if(strcmp(fname_tmp, "RetroArch-Salamander.xex") == 0) + { + RARCH_WARN("First entry is RetroArch Salamander itself, increment entry by one and check if it exists.\n"); + first_exe = dir_list[1]; + fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); + + if(!first_exe) + { + RARCH_ERR("Unlikely error happened - no second entry - no choice but to set it to RetroArch Salamander\n"); + first_exe = dir_list[0]; + fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); + } + } + + RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", fname_tmp); + snprintf(g_settings.libretro, sizeof(g_settings.libretro), "game:\\%s", fname_tmp); +#else + RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", first_exe); + strlcpy(g_settings.libretro, first_exe, sizeof(g_settings.libretro)); +#endif + } + else + { + RARCH_ERR("Failed to set first .xex entry to libretro path.\n"); + } + + dir_list_free(dir_list); + } +} +#endif #endif /*============================================================ @@ -794,6 +861,7 @@ const char * rarch_convert_wchar_to_const_char(const wchar_t * wstr) CONFIG ============================================================ */ +#ifdef HAVE_CONFIGFILE void rarch_config_create_default(const char * conf_name) { FILE * f; @@ -873,3 +941,4 @@ void rarch_config_save(const char * conf_name) free(conf); } } +#endif diff --git a/console/console_ext.h b/console/console_ext.h index 5af5414395..068e22acdb 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -101,7 +101,12 @@ void rarch_input_set_default_keybind_names_for_emulator(void); void rarch_input_set_keybind(unsigned player, unsigned keybind_action, uint64_t default_retro_joypad_id); #ifdef HAVE_LIBRETRO_MANAGEMENT -bool rarch_manage_libretro_core(const char *full_path, const char *path, const char *exe_ext); +/*============================================================ + LIBRETRO MANAGEMENT +============================================================ */ + +bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext); +void rarch_manage_libretro_set_first_file(const char * conf_name, const char *libretro_path, const char * exe_ext); #endif /*============================================================ diff --git a/ps3/main.c b/ps3/main.c index d13651f89d..1f5b4e4c49 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -163,37 +163,10 @@ static void init_settings(bool load_libretro_path) // g_settings +#ifdef HAVE_LIBRETRO_MANAGEMENT if(load_libretro_path) - { - CONFIG_GET_STRING(libretro, "libretro_path"); - - if(!strcmp(g_settings.libretro, "")) - { - //We need to set libretro to the first entry in the cores - //directory so that it will be saved to the config file - char ** dir_list = dir_list_new(LIBRETRO_DIR_PATH, ".SELF"); - - if (!dir_list) - { - RARCH_ERR("Couldn't read %s directory.\n", EMULATOR_CORE_DIR); - return; - } - - const char * first_self = dir_list[0]; - - if(first_self) - { - RARCH_LOG("Set first entry in libretro %s dir: [%s] to libretro path.\n", EMULATOR_CORE_DIR, first_self); - strlcpy(g_settings.libretro, first_self, sizeof(g_settings.libretro)); - } - else - { - RARCH_ERR("Failed to set first entry in libretro %s dir to libretro path.\n", EMULATOR_CORE_DIR); - } - - dir_list_free(dir_list); - } - } + rarch_manage_libretro_set_first_file(SYS_CONFIG_FILE, LIBRETRO_DIR_PATH, ".SELF"); +#endif CONFIG_GET_STRING(cheat_database, "cheat_database"); CONFIG_GET_BOOL(rewind_enable, "rewind_enable"); @@ -407,7 +380,7 @@ int main(int argc, char *argv[]) char full_path[1024], tmp_path[1024]; snprintf(full_path, sizeof(full_path), "%s/%s/CORE.SELF", usrDirPath, EMULATOR_CORE_DIR); snprintf(tmp_path, sizeof(tmp_path), "%s/%s/", usrDirPath, EMULATOR_CORE_DIR); - bool load_libretro_path = rarch_manage_libretro_core(full_path, tmp_path, ".SELF"); + bool load_libretro_path = rarch_manage_libretro_install(full_path, tmp_path, ".SELF"); set_default_settings(); init_settings(load_libretro_path); From 10ad19bf76fb2a5cbf44b8f24deabfd5e0648cc2 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 18:33:25 +0200 Subject: [PATCH 11/70] (360/PS3) rarch_manage_libretro_set_first_file - no more dependency on HAVE_CONFIGFILE --- 360/main.c | 7 +++- console/console_ext.c | 93 +++++++++++++++++++------------------------ console/console_ext.h | 2 +- ps3/main.c | 7 +++- 4 files changed, 55 insertions(+), 54 deletions(-) diff --git a/360/main.c b/360/main.c index 1582df7b69..8d202322a3 100644 --- a/360/main.c +++ b/360/main.c @@ -195,7 +195,12 @@ static void init_settings (bool load_libretro_path) #ifdef HAVE_LIBRETRO_MANAGEMENT if(load_libretro_path) - rarch_manage_libretro_set_first_file(SYS_CONFIG_FILE, "game:\\", ".xex"); + { + CONFIG_GET_STRING(libretro, "libretro_path"); + + if(!strcmp(g_settings.libretro, "")) + rarch_manage_libretro_set_first_file("game:\\", ".xex"); + } #endif // g_settings diff --git a/console/console_ext.c b/console/console_ext.c index 3d229c017b..303ebf8407 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -610,67 +610,58 @@ bool rarch_manage_libretro_install(const char *full_path, const char *path, cons return return_code; } -#ifdef HAVE_CONFIGFILE -void rarch_manage_libretro_set_first_file(const char * conf_name, const char *libretro_path, const char * exe_ext) +void rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext) { #ifdef _XBOX char fname_tmp[PATH_MAX]; #endif - config_file_t * conf = config_file_new(conf_name); + //We need to set libretro to the first entry in the cores + //directory so that it will be saved to the config file - CONFIG_GET_STRING(libretro, "libretro_path"); + char ** dir_list = dir_list_new(libretro_path, exe_ext); - if(!strcmp(g_settings.libretro, "")) + if (!dir_list) { - //We need to set libretro to the first entry in the cores - //directory so that it will be saved to the config file - - char ** dir_list = dir_list_new(libretro_path, exe_ext); - - if (!dir_list) - { - RARCH_ERR("Couldn't read directory.\n"); - return; - } - - const char * first_exe = dir_list[0]; - - if(first_exe) - { -#ifdef _XBOX - fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); - - if(strcmp(fname_tmp, "RetroArch-Salamander.xex") == 0) - { - RARCH_WARN("First entry is RetroArch Salamander itself, increment entry by one and check if it exists.\n"); - first_exe = dir_list[1]; - fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); - - if(!first_exe) - { - RARCH_ERR("Unlikely error happened - no second entry - no choice but to set it to RetroArch Salamander\n"); - first_exe = dir_list[0]; - fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); - } - } - - RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", fname_tmp); - snprintf(g_settings.libretro, sizeof(g_settings.libretro), "game:\\%s", fname_tmp); -#else - RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", first_exe); - strlcpy(g_settings.libretro, first_exe, sizeof(g_settings.libretro)); -#endif - } - else - { - RARCH_ERR("Failed to set first .xex entry to libretro path.\n"); - } - - dir_list_free(dir_list); + RARCH_ERR("Couldn't read directory.\n"); + return; } -} + + const char * first_exe = dir_list[0]; + + if(first_exe) + { +#ifdef _XBOX + fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); + + if(strcmp(fname_tmp, "RetroArch-Salamander.xex") == 0) + { + RARCH_WARN("First entry is RetroArch Salamander itself, increment entry by one and check if it exists.\n"); + first_exe = dir_list[1]; + fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); + + if(!first_exe) + { + RARCH_ERR("Unlikely error happened - no second entry - no choice but to set it to RetroArch Salamander\n"); + first_exe = dir_list[0]; + fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); + } + } + + RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", fname_tmp); + snprintf(g_settings.libretro, sizeof(g_settings.libretro), "game:\\%s", fname_tmp); +#else + RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", first_exe); + strlcpy(g_settings.libretro, first_exe, sizeof(g_settings.libretro)); #endif + } + else + { + RARCH_ERR("Failed to set first .xex entry to libretro path.\n"); + } + + dir_list_free(dir_list); +} #endif /*============================================================ diff --git a/console/console_ext.h b/console/console_ext.h index 068e22acdb..447c1d4820 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -106,7 +106,7 @@ void rarch_input_set_keybind(unsigned player, unsigned keybind_action, uint64_t ============================================================ */ bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext); -void rarch_manage_libretro_set_first_file(const char * conf_name, const char *libretro_path, const char * exe_ext); +void rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext); #endif /*============================================================ diff --git a/ps3/main.c b/ps3/main.c index 1f5b4e4c49..caaf68eba2 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -165,7 +165,12 @@ static void init_settings(bool load_libretro_path) #ifdef HAVE_LIBRETRO_MANAGEMENT if(load_libretro_path) - rarch_manage_libretro_set_first_file(SYS_CONFIG_FILE, LIBRETRO_DIR_PATH, ".SELF"); + { + CONFIG_GET_STRING(libretro, "libretro_path"); + + if(!strcmp(g_settings.libretro, "")) + rarch_manage_libretro_set_first_file(LIBRETRO_DIR_PATH, ".SELF"); + } #endif CONFIG_GET_STRING(cheat_database, "cheat_database"); From 4a7f10c94a9868b42ec62df81741b568e62cf274 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 18:50:30 +0200 Subject: [PATCH 12/70] (PS3/360) Split up libretro management code into file libretro_mgmt.c --- console/console_ext.c | 147 ---------------------------------- console/griffin/griffin.c | 4 + console/libretro_mgmt.c | 160 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 164 insertions(+), 147 deletions(-) create mode 100644 console/libretro_mgmt.c diff --git a/console/console_ext.c b/console/console_ext.c index 303ebf8407..58e38832aa 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -517,153 +517,6 @@ void rarch_set_auto_viewport(unsigned width, unsigned height) aspectratio_lut[ASPECT_RATIO_AUTO].value = (int)aspect_x / (int)aspect_y; } -/*============================================================ - LIBRETRO - ============================================================ */ - -#ifdef HAVE_LIBRETRO_MANAGEMENT -bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext) -{ - g_extern.verbose = true; - bool return_code; - - bool set_libretro_path = false; - char tmp_path2[1024], tmp_pathnewfile[1024]; - RARCH_LOG("Assumed path of CORE executable: [%s]\n", full_path); - - if (path_file_exists(full_path)) - { - // if CORE executable exists, this means we have just installed - // a new libretro port and therefore we need to change it to a more - // sane name. - -#if defined(__CELLOS_LV2__) - CellFsErrno ret; -#else - int ret; -#endif - - rarch_console_name_from_id(tmp_path2, sizeof(tmp_path2)); - strlcat(tmp_path2, exe_ext, sizeof(tmp_path2)); - snprintf(tmp_pathnewfile, sizeof(tmp_pathnewfile), "%s%s", path, tmp_path2); - - if (path_file_exists(tmp_pathnewfile)) - { - // if libretro core already exists, this means we are - // upgrading the libretro core - so delete pre-existing - // file first. - - RARCH_LOG("Upgrading emulator core...\n"); -#if defined(__CELLOS_LV2__) - ret = cellFsUnlink(tmp_pathnewfile); - if (ret == CELL_FS_SUCCEEDED) -#elif defined(_XBOX) - ret = DeleteFile(tmp_pathnewfile); - if (ret != 0) -#endif - { - RARCH_LOG("Succeeded in removing pre-existing libretro core: [%s].\n", tmp_pathnewfile); - } - else - RARCH_LOG("Failed to remove pre-existing libretro core: [%s].\n", tmp_pathnewfile); - } - - //now attempt the renaming. -#if defined(__CELLOS_LV2__) - ret = cellFsRename(full_path, tmp_pathnewfile); - - if (ret != CELL_FS_SUCCEEDED) -#elif defined(_XBOX) - ret = MoveFileExA(full_path, tmp_pathnewfile, NULL); - if (ret == 0) -#endif - { - RARCH_ERR("Failed to rename CORE executable.\n"); - } - else - { - RARCH_LOG("Libsnes core [%s] renamed to: [%s].\n", full_path, tmp_pathnewfile); - set_libretro_path = true; - } - } - else - { - RARCH_LOG("CORE executable was not found, libretro core path will be loaded from config file.\n"); - } - - if (set_libretro_path) - { - // CORE executable has been renamed, libretro path will now be set to the recently - // renamed new libretro core. - strlcpy(g_settings.libretro, tmp_pathnewfile, sizeof(g_settings.libretro)); - return_code = 0; - } - else - { - // There was no CORE executable present, or the CORE executable file was not renamed. - // The libretro core path will still be loaded from the config file. - return_code = 1; - } - - g_extern.verbose = false; - - return return_code; -} - -void rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext) -{ -#ifdef _XBOX - char fname_tmp[PATH_MAX]; -#endif - - //We need to set libretro to the first entry in the cores - //directory so that it will be saved to the config file - - char ** dir_list = dir_list_new(libretro_path, exe_ext); - - if (!dir_list) - { - RARCH_ERR("Couldn't read directory.\n"); - return; - } - - const char * first_exe = dir_list[0]; - - if(first_exe) - { -#ifdef _XBOX - fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); - - if(strcmp(fname_tmp, "RetroArch-Salamander.xex") == 0) - { - RARCH_WARN("First entry is RetroArch Salamander itself, increment entry by one and check if it exists.\n"); - first_exe = dir_list[1]; - fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); - - if(!first_exe) - { - RARCH_ERR("Unlikely error happened - no second entry - no choice but to set it to RetroArch Salamander\n"); - first_exe = dir_list[0]; - fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); - } - } - - RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", fname_tmp); - snprintf(g_settings.libretro, sizeof(g_settings.libretro), "game:\\%s", fname_tmp); -#else - RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", first_exe); - strlcpy(g_settings.libretro, first_exe, sizeof(g_settings.libretro)); -#endif - } - else - { - RARCH_ERR("Failed to set first .xex entry to libretro path.\n"); - } - - dir_list_free(dir_list); -} -#endif - /*============================================================ RetroArch MAIN WRAP ============================================================ */ diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index f2f8e4d0ce..42398c4412 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -23,6 +23,10 @@ CONSOLE EXTENSIONS ============================================================ */ #include "../console_ext.c" +#ifdef HAVE_LIBRETRO_MANAGEMENT +#include "../libretro_mgmt.c" +#endif + /*============================================================ COMPATIBILITY ============================================================ */ diff --git a/console/libretro_mgmt.c b/console/libretro_mgmt.c new file mode 100644 index 0000000000..bc7e4d62b8 --- /dev/null +++ b/console/libretro_mgmt.c @@ -0,0 +1,160 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2012 - Hans-Kristian Arntzen + * Copyright (C) 2011-2012 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include "console_ext.h" + +bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext) +{ + g_extern.verbose = true; + bool return_code; + + bool set_libretro_path = false; + char tmp_path2[1024], tmp_pathnewfile[1024]; + RARCH_LOG("Assumed path of CORE executable: [%s]\n", full_path); + + if (path_file_exists(full_path)) + { + // if CORE executable exists, this means we have just installed + // a new libretro port and therefore we need to change it to a more + // sane name. + +#if defined(__CELLOS_LV2__) + CellFsErrno ret; +#else + int ret; +#endif + + rarch_console_name_from_id(tmp_path2, sizeof(tmp_path2)); + strlcat(tmp_path2, exe_ext, sizeof(tmp_path2)); + snprintf(tmp_pathnewfile, sizeof(tmp_pathnewfile), "%s%s", path, tmp_path2); + + if (path_file_exists(tmp_pathnewfile)) + { + // if libretro core already exists, this means we are + // upgrading the libretro core - so delete pre-existing + // file first. + + RARCH_LOG("Upgrading emulator core...\n"); +#if defined(__CELLOS_LV2__) + ret = cellFsUnlink(tmp_pathnewfile); + if (ret == CELL_FS_SUCCEEDED) +#elif defined(_XBOX) + ret = DeleteFile(tmp_pathnewfile); + if (ret != 0) +#endif + { + RARCH_LOG("Succeeded in removing pre-existing libretro core: [%s].\n", tmp_pathnewfile); + } + else + RARCH_LOG("Failed to remove pre-existing libretro core: [%s].\n", tmp_pathnewfile); + } + + //now attempt the renaming. +#if defined(__CELLOS_LV2__) + ret = cellFsRename(full_path, tmp_pathnewfile); + + if (ret != CELL_FS_SUCCEEDED) +#elif defined(_XBOX) + ret = MoveFileExA(full_path, tmp_pathnewfile, NULL); + if (ret == 0) +#endif + { + RARCH_ERR("Failed to rename CORE executable.\n"); + } + else + { + RARCH_LOG("Libsnes core [%s] renamed to: [%s].\n", full_path, tmp_pathnewfile); + set_libretro_path = true; + } + } + else + { + RARCH_LOG("CORE executable was not found, libretro core path will be loaded from config file.\n"); + } + + if (set_libretro_path) + { + // CORE executable has been renamed, libretro path will now be set to the recently + // renamed new libretro core. + strlcpy(g_settings.libretro, tmp_pathnewfile, sizeof(g_settings.libretro)); + return_code = 0; + } + else + { + // There was no CORE executable present, or the CORE executable file was not renamed. + // The libretro core path will still be loaded from the config file. + return_code = 1; + } + + g_extern.verbose = false; + + return return_code; +} + +void rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext) +{ +#ifdef _XBOX + char fname_tmp[PATH_MAX]; +#endif + + //We need to set libretro to the first entry in the cores + //directory so that it will be saved to the config file + + char ** dir_list = dir_list_new(libretro_path, exe_ext); + + if (!dir_list) + { + RARCH_ERR("Couldn't read directory.\n"); + return; + } + + const char * first_exe = dir_list[0]; + + if(first_exe) + { +#ifdef _XBOX + fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); + + if(strcmp(fname_tmp, "RetroArch-Salamander.xex") == 0) + { + RARCH_WARN("First entry is RetroArch Salamander itself, increment entry by one and check if it exists.\n"); + first_exe = dir_list[1]; + fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); + + if(!first_exe) + { + RARCH_ERR("Unlikely error happened - no second entry - no choice but to set it to RetroArch Salamander\n"); + first_exe = dir_list[0]; + fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); + } + } + + RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", fname_tmp); + snprintf(g_settings.libretro, sizeof(g_settings.libretro), "game:\\%s", fname_tmp); +#else + RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", first_exe); + strlcpy(g_settings.libretro, first_exe, sizeof(g_settings.libretro)); +#endif + } + else + { + RARCH_ERR("Failed to set first .xex entry to libretro path.\n"); + } + + dir_list_free(dir_list); +} From b43d4a27b9ad97595c57a45e08e69ad2b21e9e28 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 18:58:34 +0200 Subject: [PATCH 13/70] (PS3/360) Add header file as well + cleanup --- console/console_ext.h | 12 ++++-------- console/libretro_mgmt.c | 4 ---- console/libretro_mgmt.h | 25 +++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 12 deletions(-) create mode 100644 console/libretro_mgmt.h diff --git a/console/console_ext.h b/console/console_ext.h index 447c1d4820..dca068c17d 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -17,6 +17,10 @@ #ifndef CONSOLE_EXT_H__ #define CONSOLE_EXT_H__ +#ifdef HAVE_LIBRETRO_MANAGEMENT +#include "libretro_mgmt.h" +#endif + #define IS_TIMER_NOT_EXPIRED(handle) (handle->frame_count < g_console.timer_expiration_frame_count) #define IS_TIMER_EXPIRED(handle) (!(IS_TIMER_NOT_EXPIRED(handle))) #define SET_TIMER_EXPIRATION(handle, value) (g_console.timer_expiration_frame_count = handle->frame_count + value) @@ -100,14 +104,6 @@ void rarch_input_set_default_keybind_names_for_emulator(void); void rarch_input_set_keybind(unsigned player, unsigned keybind_action, uint64_t default_retro_joypad_id); -#ifdef HAVE_LIBRETRO_MANAGEMENT -/*============================================================ - LIBRETRO MANAGEMENT -============================================================ */ - -bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext); -void rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext); -#endif /*============================================================ RetroArch diff --git a/console/libretro_mgmt.c b/console/libretro_mgmt.c index bc7e4d62b8..48fdca8f36 100644 --- a/console/libretro_mgmt.c +++ b/console/libretro_mgmt.c @@ -33,11 +33,7 @@ bool rarch_manage_libretro_install(const char *full_path, const char *path, cons // a new libretro port and therefore we need to change it to a more // sane name. -#if defined(__CELLOS_LV2__) - CellFsErrno ret; -#else int ret; -#endif rarch_console_name_from_id(tmp_path2, sizeof(tmp_path2)); strlcat(tmp_path2, exe_ext, sizeof(tmp_path2)); diff --git a/console/libretro_mgmt.h b/console/libretro_mgmt.h new file mode 100644 index 0000000000..4074af6b68 --- /dev/null +++ b/console/libretro_mgmt.h @@ -0,0 +1,25 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2012 - Hans-Kristian Arntzen + * Copyright (C) 2011-2012 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef LIBRETRO_MGMT_H__ +#define LIBRETRO_MGMT_H__ + +#include "../boolean.h" + +bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext); +void rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext); + +#endif From cf772338966f2ac419bab92981ada866462fd13f Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 19:39:31 +0200 Subject: [PATCH 14/70] Libretro management refactor --- 360/main.c | 6 +++++- console/libretro_mgmt.c | 30 +++++++++++++++--------------- console/libretro_mgmt.h | 2 +- ps3/main.c | 6 +++++- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/360/main.c b/360/main.c index 8d202322a3..9595d44a82 100644 --- a/360/main.c +++ b/360/main.c @@ -199,7 +199,11 @@ static void init_settings (bool load_libretro_path) CONFIG_GET_STRING(libretro, "libretro_path"); if(!strcmp(g_settings.libretro, "")) - rarch_manage_libretro_set_first_file("game:\\", ".xex"); + { + const char *first_file = rarch_manage_libretro_set_first_file("game:\\", ".xex"); + if(first_file != NULL) + strlcpy(g_settings.libretro, first_file, sizeof(g_settings.libretro)); + } } #endif diff --git a/console/libretro_mgmt.c b/console/libretro_mgmt.c index 48fdca8f36..798e4ab64f 100644 --- a/console/libretro_mgmt.c +++ b/console/libretro_mgmt.c @@ -102,28 +102,28 @@ bool rarch_manage_libretro_install(const char *full_path, const char *path, cons return return_code; } -void rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext) +const char * rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext) { -#ifdef _XBOX - char fname_tmp[PATH_MAX]; -#endif - //We need to set libretro to the first entry in the cores //directory so that it will be saved to the config file char ** dir_list = dir_list_new(libretro_path, exe_ext); + const char * retstr = NULL; + const char * first_exe; + if (!dir_list) { RARCH_ERR("Couldn't read directory.\n"); - return; + goto error; } - const char * first_exe = dir_list[0]; + first_exe = dir_list[0]; if(first_exe) { #ifdef _XBOX + char fname_tmp[PATH_MAX]; fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp)); if(strcmp(fname_tmp, "RetroArch-Salamander.xex") == 0) @@ -140,17 +140,17 @@ void rarch_manage_libretro_set_first_file(const char *libretro_path, const char } } - RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", fname_tmp); - snprintf(g_settings.libretro, sizeof(g_settings.libretro), "game:\\%s", fname_tmp); + retstr = fname_tmp; #else - RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", first_exe); - strlcpy(g_settings.libretro, first_exe, sizeof(g_settings.libretro)); + retstr = first_exe; #endif - } - else - { - RARCH_ERR("Failed to set first .xex entry to libretro path.\n"); + RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", retstr); + goto end; } +error: + RARCH_ERR("Failed to set first entry to libretro path.\n"); +end: dir_list_free(dir_list); + return retstr; } diff --git a/console/libretro_mgmt.h b/console/libretro_mgmt.h index 4074af6b68..df354c1547 100644 --- a/console/libretro_mgmt.h +++ b/console/libretro_mgmt.h @@ -20,6 +20,6 @@ #include "../boolean.h" bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext); -void rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext); +const char * rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext); #endif diff --git a/ps3/main.c b/ps3/main.c index caaf68eba2..b4e4883359 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -169,7 +169,11 @@ static void init_settings(bool load_libretro_path) CONFIG_GET_STRING(libretro, "libretro_path"); if(!strcmp(g_settings.libretro, "")) - rarch_manage_libretro_set_first_file(LIBRETRO_DIR_PATH, ".SELF"); + { + const char *first_file = rarch_manage_libretro_set_first_file(LIBRETRO_DIR_PATH, ".SELF"); + if(first_file != NULL) + strlcpy(g_settings.libretro, first_file, sizeof(g_settings.libretro)); + } } #endif From 3e7b2b8fd42d8ce06aceb3e60c74141d89efe8e0 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 20:07:08 +0200 Subject: [PATCH 15/70] (PS3/360) Refactor rarch_manage_libretro_install --- 360/main.c | 15 ++++++++++++-- console/libretro_mgmt.c | 44 +++++++++++------------------------------ console/libretro_mgmt.h | 4 ++-- ps3/main.c | 16 +++++++++++++-- 4 files changed, 41 insertions(+), 38 deletions(-) diff --git a/360/main.c b/360/main.c index 9595d44a82..b0bfb03918 100644 --- a/360/main.c +++ b/360/main.c @@ -324,10 +324,21 @@ int main(int argc, char *argv[]) char full_path[1024]; snprintf(full_path, sizeof(full_path), "game:\\CORE.xex"); - bool load_libretro_path = rarch_manage_libretro_install(full_path, "game:\\", ".xex"); + g_extern.verbose = true; + + const char *libretro_core_installed = rarch_manage_libretro_install(full_path, "game:\\", ".xex"); + + g_extern.verbose = false; + + bool find_libretro_file = false; + + if(libretro_core_installed != NULL) + strlcpy(g_settings.libretro, libretro_core_installed, sizeof(g_settings.libretro)); + else + find_libretro_file = true; set_default_settings(); - init_settings(load_libretro_path); + init_settings(find_libretro_file); init_libretro_sym(); video_xdk360.start(); diff --git a/console/libretro_mgmt.c b/console/libretro_mgmt.c index 798e4ab64f..b5995b4a24 100644 --- a/console/libretro_mgmt.c +++ b/console/libretro_mgmt.c @@ -18,13 +18,12 @@ #include "console_ext.h" -bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext) +const char *rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext) { - g_extern.verbose = true; - bool return_code; - - bool set_libretro_path = false; + int ret; + const char *retstr = NULL; char tmp_path2[1024], tmp_pathnewfile[1024]; + RARCH_LOG("Assumed path of CORE executable: [%s]\n", full_path); if (path_file_exists(full_path)) @@ -33,8 +32,6 @@ bool rarch_manage_libretro_install(const char *full_path, const char *path, cons // a new libretro port and therefore we need to change it to a more // sane name. - int ret; - rarch_console_name_from_id(tmp_path2, sizeof(tmp_path2)); strlcat(tmp_path2, exe_ext, sizeof(tmp_path2)); snprintf(tmp_pathnewfile, sizeof(tmp_pathnewfile), "%s%s", path, tmp_path2); @@ -50,14 +47,14 @@ bool rarch_manage_libretro_install(const char *full_path, const char *path, cons ret = cellFsUnlink(tmp_pathnewfile); if (ret == CELL_FS_SUCCEEDED) #elif defined(_XBOX) - ret = DeleteFile(tmp_pathnewfile); + ret = DeleteFile(tmp_pathnewfile); if (ret != 0) #endif { RARCH_LOG("Succeeded in removing pre-existing libretro core: [%s].\n", tmp_pathnewfile); } else - RARCH_LOG("Failed to remove pre-existing libretro core: [%s].\n", tmp_pathnewfile); + RARCH_ERR("Failed to remove pre-existing libretro core: [%s].\n", tmp_pathnewfile); } //now attempt the renaming. @@ -75,34 +72,17 @@ bool rarch_manage_libretro_install(const char *full_path, const char *path, cons else { RARCH_LOG("Libsnes core [%s] renamed to: [%s].\n", full_path, tmp_pathnewfile); - set_libretro_path = true; + retstr = tmp_pathnewfile; + goto done; } } - else - { - RARCH_LOG("CORE executable was not found, libretro core path will be loaded from config file.\n"); - } - if (set_libretro_path) - { - // CORE executable has been renamed, libretro path will now be set to the recently - // renamed new libretro core. - strlcpy(g_settings.libretro, tmp_pathnewfile, sizeof(g_settings.libretro)); - return_code = 0; - } - else - { - // There was no CORE executable present, or the CORE executable file was not renamed. - // The libretro core path will still be loaded from the config file. - return_code = 1; - } - - g_extern.verbose = false; - - return return_code; + RARCH_WARN("CORE executable was not found, or some other errors occurred. Will attempt to load libretro core path from config file.\n"); +done: + return retstr; } -const char * rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext) +const char *rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext) { //We need to set libretro to the first entry in the cores //directory so that it will be saved to the config file diff --git a/console/libretro_mgmt.h b/console/libretro_mgmt.h index df354c1547..4202441ce5 100644 --- a/console/libretro_mgmt.h +++ b/console/libretro_mgmt.h @@ -19,7 +19,7 @@ #include "../boolean.h" -bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext); -const char * rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext); +const char *rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext); +const char *rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext); #endif diff --git a/ps3/main.c b/ps3/main.c index b4e4883359..7b95332d6f 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -389,10 +389,22 @@ int main(int argc, char *argv[]) char full_path[1024], tmp_path[1024]; snprintf(full_path, sizeof(full_path), "%s/%s/CORE.SELF", usrDirPath, EMULATOR_CORE_DIR); snprintf(tmp_path, sizeof(tmp_path), "%s/%s/", usrDirPath, EMULATOR_CORE_DIR); - bool load_libretro_path = rarch_manage_libretro_install(full_path, tmp_path, ".SELF"); + + g_extern.verbose = true; + + const char *libretro_core_installed = rarch_manage_libretro_install(full_path, tmp_path, ".SELF"); + + g_extern.verbose = false; + + bool find_libretro_file = false; + + if(libretro_core_installed != NULL) + strlcpy(g_settings.libretro, libretro_core_installed, sizeof(g_settings.libretro)); + else + find_libretro_file = true; set_default_settings(); - init_settings(load_libretro_path); + init_settings(find_libretro_file); init_libretro_sym(); #if(CELL_SDK_VERSION > 0x340000) From 148526a638f54cabd586e26699a6a59687a4713b Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Mon, 28 May 2012 21:02:43 +0200 Subject: [PATCH 16/70] (360) Small build fix --- console/console_ext.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/console/console_ext.c b/console/console_ext.c index 58e38832aa..531ea37f5a 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -753,7 +753,9 @@ void rarch_config_save(const char * conf_name) #ifdef RARCH_CONSOLE config_set_bool(conf, "fbo_enabled", g_console.fbo_enabled); +#ifdef __CELLOS_LV2__ config_set_bool(conf, "custom_bgm_enable", g_console.custom_bgm_enable); +#endif config_set_bool(conf, "overscan_enable", g_console.overscan_enable); config_set_bool(conf, "screenshots_enable", g_console.screenshots_enable); #ifdef _XBOX From 472ac473449ce6262bb7f8e9937f56b9fd1b6020 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 21:20:39 +0200 Subject: [PATCH 17/70] (360/PS3) use rarch_config_load for PS3 and 360 --- 360/main.c | 55 +---------------------------- console/console_ext.c | 80 +++++++++++++++++++++++++++++++++++++++++++ console/console_ext.h | 1 + ps3/main.c | 72 +------------------------------------- 4 files changed, 83 insertions(+), 125 deletions(-) diff --git a/360/main.c b/360/main.c index b0bfb03918..88fad5147a 100644 --- a/360/main.c +++ b/360/main.c @@ -185,59 +185,6 @@ static void set_default_settings (void) g_extern.verbose = true; } -static void init_settings (bool load_libretro_path) -{ - - if(!path_file_exists(SYS_CONFIG_FILE)) - rarch_config_create_default(SYS_CONFIG_FILE); - - config_file_t * conf = config_file_new(SYS_CONFIG_FILE); - -#ifdef HAVE_LIBRETRO_MANAGEMENT - if(load_libretro_path) - { - CONFIG_GET_STRING(libretro, "libretro_path"); - - if(!strcmp(g_settings.libretro, "")) - { - const char *first_file = rarch_manage_libretro_set_first_file("game:\\", ".xex"); - if(first_file != NULL) - strlcpy(g_settings.libretro, first_file, sizeof(g_settings.libretro)); - } - } -#endif - - // g_settings - CONFIG_GET_STRING(cheat_database, "cheat_database"); - CONFIG_GET_BOOL(rewind_enable, "rewind_enable"); - CONFIG_GET_STRING(video.cg_shader_path, "video_cg_shader"); - CONFIG_GET_STRING(video.second_pass_shader, "video_second_pass_shader"); - CONFIG_GET_FLOAT(video.fbo_scale_x, "video_fbo_scale_x"); - CONFIG_GET_FLOAT(video.fbo_scale_y, "video_fbo_scale_y"); - CONFIG_GET_BOOL(video.render_to_texture, "video_render_to_texture"); - CONFIG_GET_BOOL(video.second_pass_smooth, "video_second_pass_smooth"); - CONFIG_GET_BOOL(video.smooth, "video_smooth"); - CONFIG_GET_BOOL(video.vsync, "video_vsync"); - CONFIG_GET_FLOAT(video.aspect_ratio, "video_aspect_ratio"); - - // g_console - CONFIG_GET_BOOL_CONSOLE(fbo_enabled, "fbo_enabled"); - CONFIG_GET_BOOL_CONSOLE(throttle_enable, "throttle_enable"); - CONFIG_GET_BOOL_CONSOLE(gamma_correction_enable, "gamma_correction_enable"); - CONFIG_GET_STRING_CONSOLE(default_rom_startup_dir, "default_rom_startup_dir"); - CONFIG_GET_INT_CONSOLE(aspect_ratio_index, "aspect_ratio_index"); - CONFIG_GET_INT_CONSOLE(viewports.custom_vp.x, "custom_viewport_x"); - CONFIG_GET_INT_CONSOLE(viewports.custom_vp.y, "custom_viewport_y"); - CONFIG_GET_INT_CONSOLE(viewports.custom_vp.width, "custom_viewport_width"); - CONFIG_GET_INT_CONSOLE(viewports.custom_vp.height, "custom_viewport_height"); - CONFIG_GET_INT_CONSOLE(screen_orientation, "screen_orientation"); - CONFIG_GET_INT_CONSOLE(color_format, "color_format"); - - // g_extern - CONFIG_GET_INT_EXTERN(state_slot, "state_slot"); - CONFIG_GET_INT_EXTERN(audio_data.mute, "audio_mute"); -} - static void get_environment_settings (void) { DWORD ret; @@ -338,7 +285,7 @@ int main(int argc, char *argv[]) find_libretro_file = true; set_default_settings(); - init_settings(find_libretro_file); + rarch_config_load(SYS_CONFIG_FILE, "game:\\", ".xex", find_libretro_file); init_libretro_sym(); video_xdk360.start(); diff --git a/console/console_ext.c b/console/console_ext.c index 531ea37f5a..b72abf4ab0 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -714,6 +714,86 @@ void rarch_config_create_default(const char * conf_name) fclose(f); } +void rarch_config_load(const char * conf_name, const char * libretro_dir_path, const char * exe_ext, bool find_libretro_path) +{ + if(!path_file_exists(conf_name)) + rarch_config_create_default(conf_name); + else + { + config_file_t * conf = config_file_new(conf_name); + + // g_settings + +#ifdef HAVE_LIBRETRO_MANAGEMENT + if(find_libretro_path) + { + CONFIG_GET_STRING(libretro, "libretro_path"); + + if(!strcmp(g_settings.libretro, "")) + { + const char *first_file = rarch_manage_libretro_set_first_file(libretro_dir_path, exe_ext); + if(first_file != NULL) + strlcpy(g_settings.libretro, first_file, sizeof(g_settings.libretro)); + } + } +#endif + + CONFIG_GET_STRING(cheat_database, "cheat_database"); + CONFIG_GET_BOOL(rewind_enable, "rewind_enable"); + CONFIG_GET_STRING(video.cg_shader_path, "video_cg_shader"); +#ifdef HAVE_FBO + CONFIG_GET_STRING(video.second_pass_shader, "video_second_pass_shader"); + CONFIG_GET_FLOAT(video.fbo_scale_x, "video_fbo_scale_x"); + CONFIG_GET_FLOAT(video.fbo_scale_y, "video_fbo_scale_y"); + CONFIG_GET_BOOL(video.render_to_texture, "video_render_to_texture"); + CONFIG_GET_BOOL(video.second_pass_smooth, "video_second_pass_smooth"); +#endif +#ifdef _XBOX + CONFIG_GET_BOOL_CONSOLE(gamma_correction_enable, "gamma_correction_enable"); + CONFIG_GET_INT_CONSOLE(color_format, "color_format"); +#endif + CONFIG_GET_BOOL(video.smooth, "video_smooth"); + CONFIG_GET_BOOL(video.vsync, "video_vsync"); + CONFIG_GET_FLOAT(video.aspect_ratio, "video_aspect_ratio"); + CONFIG_GET_STRING(audio.device, "audio_device"); + + for (unsigned i = 0; i < 7; i++) + { + char cfg[64]; + snprintf(cfg, sizeof(cfg), "input_dpad_emulation_p%u", i + 1); + CONFIG_GET_INT(input.dpad_emulation[i], cfg); + } + + // g_console + +#ifdef HAVE_FBO + CONFIG_GET_BOOL_CONSOLE(fbo_enabled, "fbo_enabled"); +#endif +#ifdef __CELLOS_LV2__ + CONFIG_GET_BOOL_CONSOLE(custom_bgm_enable, "custom_bgm_enable"); +#endif + CONFIG_GET_BOOL_CONSOLE(overscan_enable, "overscan_enable"); + CONFIG_GET_BOOL_CONSOLE(screenshots_enable, "screenshots_enable"); + CONFIG_GET_BOOL_CONSOLE(throttle_enable, "throttle_enable"); + CONFIG_GET_BOOL_CONSOLE(triple_buffering_enable, "triple_buffering_enable"); + CONFIG_GET_INT_CONSOLE(aspect_ratio_index, "aspect_ratio_index"); + CONFIG_GET_INT_CONSOLE(current_resolution_id, "current_resolution_id"); + CONFIG_GET_INT_CONSOLE(viewports.custom_vp.x, "custom_viewport_x"); + CONFIG_GET_INT_CONSOLE(viewports.custom_vp.y, "custom_viewport_y"); + CONFIG_GET_INT_CONSOLE(viewports.custom_vp.width, "custom_viewport_width"); + CONFIG_GET_INT_CONSOLE(viewports.custom_vp.height, "custom_viewport_height"); + CONFIG_GET_INT_CONSOLE(screen_orientation, "screen_orientation"); + CONFIG_GET_INT_CONSOLE(sound_mode, "sound_mode"); + CONFIG_GET_STRING_CONSOLE(default_rom_startup_dir, "default_rom_startup_dir"); + CONFIG_GET_FLOAT_CONSOLE(menu_font_size, "menu_font_size"); + CONFIG_GET_FLOAT_CONSOLE(overscan_amount, "overscan_amount"); + + // g_extern + CONFIG_GET_INT_EXTERN(state_slot, "state_slot"); + CONFIG_GET_INT_EXTERN(audio_data.mute, "audio_mute"); + } +} + void rarch_config_save(const char * conf_name) { if(!path_file_exists(conf_name)) diff --git a/console/console_ext.h b/console/console_ext.h index dca068c17d..4916de4d07 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -140,6 +140,7 @@ wchar_t * rarch_convert_char_to_wchar(const char * str); const char * rarch_convert_wchar_to_const_char(const wchar_t * wstr); void rarch_config_create_default(const char * conf_name); +void rarch_config_load(const char * conf_name, const char * libretro_dir_path, const char * exe_ext, bool find_libretro_path); void rarch_config_save(const char * conf_name); #endif diff --git a/ps3/main.c b/ps3/main.c index 7b95332d6f..9fb2f40cd9 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -153,76 +153,6 @@ static void set_default_settings(void) g_extern.verbose = true; } -static void init_settings(bool load_libretro_path) -{ - if(!path_file_exists(SYS_CONFIG_FILE)) - rarch_config_create_default(SYS_CONFIG_FILE); - else - { - config_file_t * conf = config_file_new(SYS_CONFIG_FILE); - - // g_settings - -#ifdef HAVE_LIBRETRO_MANAGEMENT - if(load_libretro_path) - { - CONFIG_GET_STRING(libretro, "libretro_path"); - - if(!strcmp(g_settings.libretro, "")) - { - const char *first_file = rarch_manage_libretro_set_first_file(LIBRETRO_DIR_PATH, ".SELF"); - if(first_file != NULL) - strlcpy(g_settings.libretro, first_file, sizeof(g_settings.libretro)); - } - } -#endif - - CONFIG_GET_STRING(cheat_database, "cheat_database"); - CONFIG_GET_BOOL(rewind_enable, "rewind_enable"); - CONFIG_GET_STRING(video.cg_shader_path, "video_cg_shader"); - CONFIG_GET_STRING(video.second_pass_shader, "video_second_pass_shader"); - CONFIG_GET_FLOAT(video.fbo_scale_x, "video_fbo_scale_x"); - CONFIG_GET_FLOAT(video.fbo_scale_y, "video_fbo_scale_y"); - CONFIG_GET_BOOL(video.render_to_texture, "video_render_to_texture"); - CONFIG_GET_BOOL(video.second_pass_smooth, "video_second_pass_smooth"); - CONFIG_GET_BOOL(video.smooth, "video_smooth"); - CONFIG_GET_BOOL(video.vsync, "video_vsync"); - CONFIG_GET_FLOAT(video.aspect_ratio, "video_aspect_ratio"); - CONFIG_GET_STRING(audio.device, "audio_device"); - - for (unsigned i = 0; i < 7; i++) - { - char cfg[64]; - snprintf(cfg, sizeof(cfg), "input_dpad_emulation_p%u", i + 1); - CONFIG_GET_INT(input.dpad_emulation[i], cfg); - } - - // g_console - - CONFIG_GET_BOOL_CONSOLE(fbo_enabled, "fbo_enabled"); - CONFIG_GET_BOOL_CONSOLE(custom_bgm_enable, "custom_bgm_enable"); - CONFIG_GET_BOOL_CONSOLE(overscan_enable, "overscan_enable"); - CONFIG_GET_BOOL_CONSOLE(screenshots_enable, "screenshots_enable"); - CONFIG_GET_BOOL_CONSOLE(throttle_enable, "throttle_enable"); - CONFIG_GET_BOOL_CONSOLE(triple_buffering_enable, "triple_buffering_enable"); - CONFIG_GET_INT_CONSOLE(aspect_ratio_index, "aspect_ratio_index"); - CONFIG_GET_INT_CONSOLE(current_resolution_id, "current_resolution_id"); - CONFIG_GET_INT_CONSOLE(viewports.custom_vp.x, "custom_viewport_x"); - CONFIG_GET_INT_CONSOLE(viewports.custom_vp.y, "custom_viewport_y"); - CONFIG_GET_INT_CONSOLE(viewports.custom_vp.width, "custom_viewport_width"); - CONFIG_GET_INT_CONSOLE(viewports.custom_vp.height, "custom_viewport_height"); - CONFIG_GET_INT_CONSOLE(screen_orientation, "screen_orientation"); - CONFIG_GET_INT_CONSOLE(sound_mode, "sound_mode"); - CONFIG_GET_STRING_CONSOLE(default_rom_startup_dir, "default_rom_startup_dir"); - CONFIG_GET_FLOAT_CONSOLE(menu_font_size, "menu_font_size"); - CONFIG_GET_FLOAT_CONSOLE(overscan_amount, "overscan_amount"); - - // g_extern - CONFIG_GET_INT_EXTERN(state_slot, "state_slot"); - CONFIG_GET_INT_EXTERN(audio_data.mute, "audio_mute"); - } -} - #ifdef HAVE_SYSUTILS static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdata) { @@ -404,7 +334,7 @@ int main(int argc, char *argv[]) find_libretro_file = true; set_default_settings(); - init_settings(find_libretro_file); + rarch_config_load(SYS_CONFIG_FILE, LIBRETRO_DIR_PATH, ".SELF", find_libretro_file); init_libretro_sym(); #if(CELL_SDK_VERSION > 0x340000) From 82b7d4d0469cd6d1e17ea0f1394db2a9f5887f36 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Mon, 28 May 2012 21:46:32 +0200 Subject: [PATCH 18/70] (360) remove g_first_msg --- 360/menu.cpp | 3 +-- 360/xdk360_video.cpp | 7 +------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 902a7fedcd..9199c90cd8 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -840,10 +840,9 @@ void menu_loop(void) if (msg) { - if(IS_TIMER_EXPIRED(d3d9) || g_first_msg) + if(IS_TIMER_EXPIRED(d3d9)) { xdk360_console_format(msg); - g_first_msg = 0; SET_TIMER_EXPIRATION(d3d9, 30); } diff --git a/360/xdk360_video.cpp b/360/xdk360_video.cpp index 65bd8ed5a8..3610e992fc 100644 --- a/360/xdk360_video.cpp +++ b/360/xdk360_video.cpp @@ -38,8 +38,6 @@ #include "config.h" #endif -static bool g_first_msg; - /* Xbox 360 specific code */ const DWORD g_MapLinearToSrgbGpuFormat[] = @@ -669,10 +667,9 @@ static bool xdk360_frame(void *data, const void *frame, /* XBox 360 specific font code */ if (msg && !menu_enabled) { - if(IS_TIMER_EXPIRED(d3d9) || g_first_msg) + if(IS_TIMER_EXPIRED(d3d9)) { xdk360_console_format(msg); - g_first_msg = 0; SET_TIMER_EXPIRATION(d3d9, 30); } @@ -730,8 +727,6 @@ static void xdk360_start(void) gfx_ctx_set_swap_interval(d3d9->vsync ? 1 : 0, false); - g_first_msg = true; - /* XBox 360 specific font code */ HRESULT hr = xdk360_console_init("game:\\media\\Arial_12.xpr", 0xff000000, 0xffffffff ); From 75c1e56edf5689ed21854f74a5d2623a3990cba7 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 22:18:50 +0200 Subject: [PATCH 19/70] (PS3) OSD messages using frame_count used in menu now - same as on 360 --- ps3/menu.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/ps3/menu.c b/ps3/menu.c index 1d835826fc..9eafb97aac 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -46,6 +46,7 @@ menu menuStack[25]; int menuStackindex = 0; static bool set_initial_dir_tmpbrowser; +static bool set_libretro_core_as_launch; char special_action_msg[256]; /* message which should be overlaid on top of the screen */ filebrowser_t browser; /* main file browser->for rom browser*/ @@ -920,10 +921,14 @@ static void select_file(uint32_t menu_id) break; case LIBRETRO_CHOICE: strlcpy(g_settings.libretro, path, sizeof(g_settings.libretro)); - strlcpy(g_console.launch_app_on_exit, path, sizeof(g_console.launch_app_on_exit)); - g_console.return_to_launcher = true; - g_console.menu_enable = false; - g_console.mode_switch = MODE_EXIT; + if(set_libretro_core_as_launch) + { + strlcpy(g_console.launch_app_on_exit, path, sizeof(g_console.launch_app_on_exit)); + set_libretro_core_as_launch = false; + g_console.return_to_launcher = true; + g_console.menu_enable = false; + g_console.mode_switch = MODE_EXIT; + } break; } @@ -1559,6 +1564,8 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) g_settings.rewind_enable = !g_settings.rewind_enable; set_delay = DELAY_MEDIUM; + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); } if(CTRL_START(state)) { @@ -1572,6 +1579,7 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) menuStack[menuStackindex] = menu_filebrowser; menuStack[menuStackindex].enum_id = LIBRETRO_CHOICE; set_initial_dir_tmpbrowser = true; + set_libretro_core_as_launch = false; set_delay = DELAY_LONG; } if(CTRL_START(state)) @@ -2401,6 +2409,7 @@ static void ingame_menu(uint32_t menu_id) menuStackindex++; menuStack[menuStackindex] = menu_filebrowser; menuStack[menuStackindex].enum_id = LIBRETRO_CHOICE; + set_libretro_core_as_launch = true; set_initial_dir_tmpbrowser = true; set_delay = DELAY_LONG; } @@ -2627,6 +2636,18 @@ void menu_loop(void) SET_TIMER_EXPIRATION(gl, 30); } + const char * message = msg_queue_pull(g_extern.msg_queue); + + if (message) + { + if(IS_TIMER_EXPIRED(gl)) + { + SET_TIMER_EXPIRATION(gl, 30); + } + cellDbgFontPrintf(g_settings.video.msg_pos_x, 0.75f, 1.05f, WHITE, message); + gl_render_msg_post(gl); + } + gfx_ctx_swap_buffers(); #ifdef HAVE_SYSUTILS cellSysutilCheckCallback(); From 705a0dd62eaa81436d509f001d8d2b30796f82d6 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 22:43:08 +0200 Subject: [PATCH 20/70] (PS3) Add info message enable/disable option --- 360/main.c | 1 + 360/menu.cpp | 196 +++++++++++++++++++++++++----------------- console/console_ext.c | 9 +- general.h | 3 +- ps3/main.c | 1 + ps3/menu-entries.h | 16 +++- ps3/menu.c | 31 ++++++- ps3/menu.h | 1 + 8 files changed, 172 insertions(+), 86 deletions(-) diff --git a/360/main.c b/360/main.c index 88fad5147a..26bba2a760 100644 --- a/360/main.c +++ b/360/main.c @@ -178,6 +178,7 @@ static void set_default_settings (void) g_console.viewports.custom_vp.x = 0; g_console.viewports.custom_vp.y = 0; g_console.color_format = 0; + g_console.info_msg_enable = true; //g_extern g_extern.state_slot = 0; diff --git a/360/menu.cpp b/360/menu.cpp index 9199c90cd8..2f61ac54fe 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -375,20 +375,24 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } break; case MENU_ITEM_OVERSCAN_AMOUNT: - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); + msg_queue_clear(g_extern.msg_queue); + if(g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); + } break; case MENU_ITEM_ORIENTATION: switch(g_console.screen_orientation) { case ORIENTATION_NORMAL: g_console.screen_orientation = ORIENTATION_VERTICAL; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical"); - break; - case ORIENTATION_VERTICAL: - g_console.screen_orientation = ORIENTATION_FLIPPED; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped"); - break; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical"); + break; + case ORIENTATION_VERTICAL: + g_console.screen_orientation = ORIENTATION_FLIPPED; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped"); + break; case ORIENTATION_FLIPPED: g_console.screen_orientation = ORIENTATION_FLIPPED_ROTATED; m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated"); @@ -401,9 +405,12 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled video_xdk360.set_rotation(driver.video_data, g_console.screen_orientation); break; case MENU_ITEM_RESIZE_MODE: - g_console.input_loop = INPUT_LOOP_RESIZE_MODE; - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Resize the screen by moving around the two analog sticks.\nPress Y to reset to default values, and B to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'.", 1, 270); + g_console.input_loop = INPUT_LOOP_RESIZE_MODE; + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - Resize the screen by moving around the two analog sticks.\nPress Y to reset to default values, and B to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'.", 1, 270); + } break; case MENU_ITEM_FRAME_ADVANCE: if (g_console.emulator_initialized) @@ -414,8 +421,11 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } break; case MENU_ITEM_SCREENSHOT_MODE: - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); + } break; case MENU_ITEM_RESET: if (g_console.emulator_initialized) @@ -516,8 +526,11 @@ HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle { filebrowser_new(&browser, "cache:", rarch_console_get_rom_ext()); filebrowser_fetch_directory_entries("cache:", &browser, &m_romlist, &m_rompathtitle); - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - All the contents of the ZIP files you have selected in the filebrowser\nare extracted to this partition.", 1, 180); + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - All the contents of the ZIP files you have selected in the filebrowser\nare extracted to this partition.", 1, 180); + } } bHandled = TRUE; @@ -534,29 +547,33 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand int index = m_shaderlist.GetCurSel(); if(tmp_browser.cur[index].d_type != FILE_ATTRIBUTE_DIRECTORY) { - const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_shaderlist.GetText(index)); + const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_shaderlist.GetText(index)); - switch(set_shader) - { - case 1: - snprintf(g_settings.video.cg_shader_path, sizeof(g_settings.video.cg_shader_path), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); - hlsl_load_shader(set_shader, g_settings.video.cg_shader_path); - break; - case 2: - snprintf (g_settings.video.second_pass_shader, sizeof(g_settings.video.second_pass_shader), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); - hlsl_load_shader(set_shader, g_settings.video.second_pass_shader); - break; - default: - break; - } - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Shader successfully loaded.", 1, 180); + switch(set_shader) + { + case 1: + snprintf(g_settings.video.cg_shader_path, sizeof(g_settings.video.cg_shader_path), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); + hlsl_load_shader(set_shader, g_settings.video.cg_shader_path); + break; + case 2: + snprintf (g_settings.video.second_pass_shader, sizeof(g_settings.video.second_pass_shader), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); + hlsl_load_shader(set_shader, g_settings.video.second_pass_shader); + break; + default: + break; + } + + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - Shader successfully loaded.", 1, 180); + } } else if(tmp_browser.cur[index].d_type == FILE_ATTRIBUTE_DIRECTORY) { - const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_shaderlist.GetText(index)); - snprintf(path, sizeof(path), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); - filebrowser_fetch_directory_entries(path, &tmp_browser, &m_shaderlist, &m_shaderpathtitle); + const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_shaderlist.GetText(index)); + snprintf(path, sizeof(path), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); + filebrowser_fetch_directory_entries(path, &tmp_browser, &m_shaderlist, &m_shaderpathtitle); } } @@ -606,8 +623,11 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled case SETTING_EMU_REWIND_ENABLED: g_settings.rewind_enable = !g_settings.rewind_enable; m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + } break; case SETTING_GAMMA_CORRECTION_ENABLED: g_console.gamma_correction_enable = !g_console.gamma_correction_enable; @@ -616,50 +636,58 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); break; case SETTING_COLOR_FORMAT: - g_console.color_format = !g_console.color_format; + g_console.color_format = !g_console.color_format; m_settingslist.SetText(SETTING_COLOR_FORMAT, g_console.color_format ? L"Color format: 32bit ARGB" : L"Color format: 16bit RGBA"); - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); - break; + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + } + break; case SETTING_SHADER: - set_shader = 1; - hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); + set_shader = 1; + hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); - if (hr < 0) - { - RARCH_ERR("Failed to load scene.\n"); - } - hCur = app.hShaderBrowser; - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Select a shader from the menu by pressing the A button.", 1, 180); - NavigateForward(app.hShaderBrowser); - break; + if (hr < 0) + { + RARCH_ERR("Failed to load scene.\n"); + } + hCur = app.hShaderBrowser; + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - Select a shader from the menu by pressing the A button.", 1, 180); + } + NavigateForward(app.hShaderBrowser); + break; case SETTING_SHADER_2: - set_shader = 2; - hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); - - if (hr < 0) - { - RARCH_ERR("Failed to load scene.\n"); - } - hCur = app.hShaderBrowser; - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Select a shader from the menu by pressing the A button.", 1, 180); - NavigateForward(app.hShaderBrowser); - break; + set_shader = 2; + hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); + if (hr < 0) + { + RARCH_ERR("Failed to load scene.\n"); + } + hCur = app.hShaderBrowser; + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - Select a shader from the menu by pressing the A button.", 1, 180); + } + NavigateForward(app.hShaderBrowser); + break; case SETTING_HW_TEXTURE_FILTER: g_settings.video.smooth = !g_settings.video.smooth; - 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, g_settings.video.smooth ? L"Hardware filtering shader #1: Linear interpolation" : L"Hardware filtering shader #1: Point filtering"); break; case SETTING_HW_TEXTURE_FILTER_2: g_settings.video.second_pass_smooth = !g_settings.video.second_pass_smooth; - 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_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_console.fbo_enabled = !g_console.fbo_enabled; - m_settingslist.SetText(SETTING_SCALE_ENABLED, g_console.fbo_enabled ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF"); - gfx_ctx_set_fbo(g_console.fbo_enabled); - break; + g_console.fbo_enabled = !g_console.fbo_enabled; + m_settingslist.SetText(SETTING_SCALE_ENABLED, g_console.fbo_enabled ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF"); + gfx_ctx_set_fbo(g_console.fbo_enabled); + break; } } @@ -680,10 +708,9 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_filebrowser.xur", NULL, &app.hFileBrowser); if (hr < 0) - { RARCH_ERR("Failed to load scene.\n"); - } - hCur = app.hFileBrowser; + + hCur = app.hFileBrowser; NavigateForward(app.hFileBrowser); } else if ( hObjPressed == m_quick_menu) @@ -692,7 +719,8 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) if (hr < 0) RARCH_ERR("Failed to load scene.\n"); - hCur = app.hQuickMenu; + + hCur = app.hQuickMenu; NavigateForward(app.hQuickMenu); } else if ( hObjPressed == m_controls) @@ -701,9 +729,13 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) if (hr < 0) RARCH_ERR("Failed to load scene.\n"); - hCur = app.hControlsMenu; - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Press LEFT/RIGHT to change the controls, and press\nSTART/A to reset a button to default values.", 1, 180); + + hCur = app.hControlsMenu; + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - Press LEFT/RIGHT to change the controls, and press\nSTART/A to reset a button to default values.", 1, 180); + } NavigateForward(app.hControlsMenu); } else if ( hObjPressed == m_change_libretro_core ) @@ -714,9 +746,12 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) { RARCH_ERR("Failed to load scene.\n"); } - hCur = app.hCoreBrowser; - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Select a Libretro core from the menu by pressing the A button.", 1, 180); + hCur = app.hCoreBrowser; + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - Select a Libretro core from the menu by pressing the A button.", 1, 180); + } NavigateForward(app.hCoreBrowser); } else if ( hObjPressed == m_settings ) @@ -725,7 +760,8 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) if (hr < 0) RARCH_ERR("Failed to load scene.\n"); - hCur = app.hRetroArchSettings; + + hCur = app.hRetroArchSettings; NavigateForward(app.hRetroArchSettings); } else if ( hObjPressed == m_quit ) diff --git a/console/console_ext.c b/console/console_ext.c index b72abf4ab0..fa55bbe726 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -200,8 +200,11 @@ int rarch_extract_zipfile(const char *zip_path) } } - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - ZIP file extracted to cache partition.", 1, 180); + if(g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - ZIP file extracted to cache partition.", 1, 180); + } return 0; } @@ -776,6 +779,7 @@ void rarch_config_load(const char * conf_name, const char * libretro_dir_path, c CONFIG_GET_BOOL_CONSOLE(screenshots_enable, "screenshots_enable"); CONFIG_GET_BOOL_CONSOLE(throttle_enable, "throttle_enable"); CONFIG_GET_BOOL_CONSOLE(triple_buffering_enable, "triple_buffering_enable"); + CONFIG_GET_BOOL_CONSOLE(info_msg_enable, "info_msg_enable"); CONFIG_GET_INT_CONSOLE(aspect_ratio_index, "aspect_ratio_index"); CONFIG_GET_INT_CONSOLE(current_resolution_id, "current_resolution_id"); CONFIG_GET_INT_CONSOLE(viewports.custom_vp.x, "custom_viewport_x"); @@ -844,6 +848,7 @@ void rarch_config_save(const char * conf_name) #endif config_set_bool(conf, "throttle_enable", g_console.throttle_enable); config_set_bool(conf, "triple_buffering_enable", g_console.triple_buffering_enable); + config_set_bool(conf, "info_msg_enable", g_console.info_msg_enable); config_set_int(conf, "sound_mode", g_console.sound_mode); config_set_int(conf, "aspect_ratio_index", g_console.aspect_ratio_index); config_set_int(conf, "current_resolution_id", g_console.current_resolution_id); diff --git a/general.h b/general.h index ae37043b7a..9a2ec4a612 100644 --- a/general.h +++ b/general.h @@ -207,8 +207,9 @@ struct console_settings bool default_savestate_dir_enable; bool fbo_enabled; bool frame_advance_enable; - bool gamma_correction_enable; bool initialize_rarch_enable; + bool info_msg_enable; + bool gamma_correction_enable; bool ingame_menu_enable; bool menu_enable; bool overscan_enable; diff --git a/ps3/main.c b/ps3/main.c index 9fb2f40cd9..967359359c 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -146,6 +146,7 @@ static void set_default_settings(void) g_console.viewports.custom_vp.x = 0; g_console.viewports.custom_vp.y = 0; g_console.custom_bgm_enable = true; + g_console.info_msg_enable = true; // g_extern g_extern.state_slot = 0; diff --git a/ps3/menu-entries.h b/ps3/menu-entries.h index 4c9b59c1e7..44f11df7a9 100644 --- a/ps3/menu-entries.h +++ b/ps3/menu-entries.h @@ -327,7 +327,6 @@ static item items_generalsettings[MAX_NO_OF_CONTROLS_SETTINGS] = 0, 1 }, - /* port-specific */ { SETTING_EMU_CURRENT_SAVE_STATE_SLOT, "Current save state slot", @@ -343,6 +342,21 @@ static item items_generalsettings[MAX_NO_OF_CONTROLS_SETTINGS] = 0, 1 }, + { + SETTING_EMU_SHOW_INFO_MSG, + "Info messages", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Show onscreen info messages in the menu.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 + }, { SETTING_RARCH_DEFAULT_EMU, "Default emulator core", diff --git a/ps3/menu.c b/ps3/menu.c index 9eafb97aac..1a16bbebe9 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -548,6 +548,18 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting) snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "%d", g_extern.state_slot); break; /* emu-specific */ + case SETTING_EMU_SHOW_INFO_MSG: + if(g_console.info_msg_enable) + { + snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "ON"); + menu_obj->items[currentsetting].text_color = GREEN; + } + else + { + snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "OFF"); + menu_obj->items[currentsetting].text_color = ORANGE; + } + break; case SETTING_EMU_DEFAULT_ALL: if(menu_obj->selected == currentsetting) menu_obj->items[currentsetting].text_color = GREEN; @@ -1558,14 +1570,29 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) if(CTRL_START(state)) g_extern.state_slot = 0; break; + case SETTING_EMU_SHOW_INFO_MSG: + if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) + { + g_console.info_msg_enable = !g_console.info_msg_enable; + set_delay = DELAY_MEDIUM; + } + if(CTRL_START(state)) + { + g_console.info_msg_enable = true; + set_delay = DELAY_MEDIUM; + } + break; case SETTING_EMU_REWIND_ENABLED: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { g_settings.rewind_enable = !g_settings.rewind_enable; set_delay = DELAY_MEDIUM; - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + if(g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + } } if(CTRL_START(state)) { diff --git a/ps3/menu.h b/ps3/menu.h index 0a1ebbc96f..5034605575 100644 --- a/ps3/menu.h +++ b/ps3/menu.h @@ -102,6 +102,7 @@ enum SETTING_ENABLE_CUSTOM_BGM, SETTING_DEFAULT_AUDIO_ALL, SETTING_EMU_CURRENT_SAVE_STATE_SLOT, + SETTING_EMU_SHOW_INFO_MSG, SETTING_RARCH_DEFAULT_EMU, SETTING_EMU_DEFAULT_ALL, SETTING_EMU_REWIND_ENABLED, From 6a48f1e1874c1e299f1419ffd1471959eb7a372d Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Mon, 28 May 2012 23:19:40 +0200 Subject: [PATCH 21/70] (360) Add menu toggle (between HD and SD) and add info message enable/disable option --- 360/media/hd/rarch_settings.xui | 14 ++++++++++++ 360/media/sd/rarch_settings.xui | 14 ++++++++++++ 360/menu.cpp | 40 +++++++++++++++++++++------------ 360/menu.h | 2 ++ 360/xdk360_video.cpp | 2 ++ general.h | 3 +++ 6 files changed, 61 insertions(+), 14 deletions(-) diff --git a/360/media/hd/rarch_settings.xui b/360/media/hd/rarch_settings.xui index 351e530561..df33f2460f 100644 --- a/360/media/hd/rarch_settings.xui +++ b/360/media/hd/rarch_settings.xui @@ -31,6 +31,8 @@ 383.040009 44.880005,64.959991,0.000000 Rewind: +Info messages: +Menus: Gamma Correction: Color Format: Shader #1: @@ -197,6 +199,18 @@ Custom Scaling Factor: 0.000000,10.000000,0.000000 + + +control_ListItem +226.000000 +45.000000 +7.000000,22.000000,0.000000 +5 +false +XuiButton +0.000000,10.000000,0.000000 + + diff --git a/360/media/sd/rarch_settings.xui b/360/media/sd/rarch_settings.xui index e04bd092bf..3b63a8a502 100644 --- a/360/media/sd/rarch_settings.xui +++ b/360/media/sd/rarch_settings.xui @@ -31,6 +31,8 @@ 232.720001 44.880005,64.959991,0.000000 Rewind: +Info messages: +Menus: Color Format: Gamma Correction: Shader #1: @@ -173,6 +175,18 @@ Cutom Scaling Factor: 0.000000,10.000000,0.000000 + + +control_ListItem +226.000000 +45.000000 +7.000000,22.000000,0.000000 +5 +false +XuiButton +0.000000,10.000000,0.000000 + + diff --git a/360/menu.cpp b/360/menu.cpp index 2f61ac54fe..21f5c187e2 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -31,7 +31,6 @@ CRetroArch app; HXUIOBJ hCur; filebrowser_t browser; filebrowser_t tmp_browser; -bool hdmenus_allowed; uint32_t set_shader = 0; static void return_to_game (void) @@ -239,6 +238,8 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); + m_settingslist.SetText(SETTING_EMU_SHOW_INFO_MSG, g_console.info_msg_enable ? L"Info messages: ON" : L"Info messages: OFF"); + m_settingslist.SetText(SETTING_EMU_MENUS, g_console.menus_hd_enable ? L"Menus: HD" : L"Menus: SD"); m_settingslist.SetText(SETTING_GAMMA_CORRECTION_ENABLED, g_console.gamma_correction_enable ? 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"); @@ -629,24 +630,35 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); } break; + case SETTING_EMU_SHOW_INFO_MSG: + g_console.info_msg_enable = !g_console.info_msg_enable; + m_settingslist.SetText(SETTING_EMU_SHOW_INFO_MSG, g_console.info_msg_enable ? L"Info messages: ON" : L"Info messages: OFF"); + break; + case SETTING_EMU_MENUS: + g_console.menus_hd_enable = !g_console.menus_hd_enable; + m_settingslist.SetText(SETTING_EMU_MENUS, g_console.menus_hd_enable ? L"Menus: HD" : L"Menus: SD"); + break; case SETTING_GAMMA_CORRECTION_ENABLED: g_console.gamma_correction_enable = !g_console.gamma_correction_enable; m_settingslist.SetText(SETTING_GAMMA_CORRECTION_ENABLED, g_console.gamma_correction_enable ? L"Gamma correction: ON" : L"Gamma correction: OFF"); - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + if(g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + } break; case SETTING_COLOR_FORMAT: g_console.color_format = !g_console.color_format; m_settingslist.SetText(SETTING_COLOR_FORMAT, g_console.color_format ? L"Color format: 32bit ARGB" : L"Color format: 16bit RGBA"); if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); - } + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + } break; case SETTING_SHADER: set_shader = 1; - hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); + hr = XuiSceneCreate(g_console.menus_hd_enable ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); if (hr < 0) { @@ -654,25 +666,25 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } hCur = app.hShaderBrowser; if (g_console.info_msg_enable) - { + { msg_queue_clear(g_extern.msg_queue); msg_queue_push(g_extern.msg_queue, "INFO - Select a shader from the menu by pressing the A button.", 1, 180); - } + } NavigateForward(app.hShaderBrowser); break; case SETTING_SHADER_2: set_shader = 2; - hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); + hr = XuiSceneCreate(g_console.menus_hd_enable ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); if (hr < 0) { RARCH_ERR("Failed to load scene.\n"); } hCur = app.hShaderBrowser; if (g_console.info_msg_enable) - { + { msg_queue_clear(g_extern.msg_queue); msg_queue_push(g_extern.msg_queue, "INFO - Select a shader from the menu by pressing the A button.", 1, 180); - } + } NavigateForward(app.hShaderBrowser); break; case SETTING_HW_TEXTURE_FILTER: @@ -699,7 +711,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) { xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; - hdmenus_allowed = vid->video_mode.fIsHiDef && (g_console.aspect_ratio_index >= ASPECT_RATIO_16_9); + bool hdmenus_allowed = g_console.menus_hd_enable; HRESULT hr; diff --git a/360/menu.h b/360/menu.h index fed2d54ca8..04152cc3d2 100644 --- a/360/menu.h +++ b/360/menu.h @@ -23,6 +23,8 @@ enum { SETTING_EMU_REWIND_ENABLED = 0, + SETTING_EMU_SHOW_INFO_MSG, + SETTING_EMU_MENUS, SETTING_GAMMA_CORRECTION_ENABLED, SETTING_COLOR_FORMAT, SETTING_SHADER, diff --git a/360/xdk360_video.cpp b/360/xdk360_video.cpp index 3610e992fc..fec1db6fd9 100644 --- a/360/xdk360_video.cpp +++ b/360/xdk360_video.cpp @@ -454,6 +454,8 @@ static void *xdk360_init(const video_info_t *video, const input_driver_t **input // unsupported if(!d3d9->video_mode.fIsWideScreen) d3d9->d3dpp.Flags |= D3DPRESENTFLAG_NO_LETTERBOX; + + g_console.menus_hd_enable = d3d9->video_mode.fIsHiDef; d3d9->d3dpp.BackBufferWidth = d3d9->video_mode.fIsHiDef ? 1280 : 640; d3d9->d3dpp.BackBufferHeight = d3d9->video_mode.fIsHiDef ? 720 : 480; diff --git a/general.h b/general.h index 9a2ec4a612..3a0c31a013 100644 --- a/general.h +++ b/general.h @@ -207,6 +207,9 @@ struct console_settings bool default_savestate_dir_enable; bool fbo_enabled; bool frame_advance_enable; +#ifdef _XBOX + bool menus_hd_enable; +#endif bool initialize_rarch_enable; bool info_msg_enable; bool gamma_correction_enable; From a171f4c9fd98e48b88bd78f1af9f708dfe18bd58 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 23:14:18 +0200 Subject: [PATCH 22/70] (RARCH_CONSOLE) We want to init the message queue way before RetroArch actually starts on consoles - therefore we add this ifdef - beats having to add this for every console port --- 360/main.c | 2 -- ps3/main.c | 2 -- settings.c | 4 ++++ wii/main.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/360/main.c b/360/main.c index 26bba2a760..58242aa5a1 100644 --- a/360/main.c +++ b/360/main.c @@ -267,8 +267,6 @@ int main(int argc, char *argv[]) rarch_main_clear_state(); config_set_defaults(); - rarch_assert(g_extern.msg_queue = msg_queue_new(8)); - char full_path[1024]; snprintf(full_path, sizeof(full_path), "game:\\CORE.xex"); diff --git a/ps3/main.c b/ps3/main.c index 967359359c..0d0334dafb 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -315,8 +315,6 @@ int main(int argc, char *argv[]) config_set_defaults(); - rarch_assert(g_extern.msg_queue = msg_queue_new(8)); - char full_path[1024], tmp_path[1024]; snprintf(full_path, sizeof(full_path), "%s/%s/CORE.SELF", usrDirPath, EMULATOR_CORE_DIR); snprintf(tmp_path, sizeof(tmp_path), "%s/%s/", usrDirPath, EMULATOR_CORE_DIR); diff --git a/settings.c b/settings.c index a5109d2b1c..e1b8f60996 100644 --- a/settings.c +++ b/settings.c @@ -208,6 +208,10 @@ void config_set_defaults(void) g_settings.input.netplay_client_swap_input = netplay_client_swap_input; for (int i = 0; i < MAX_PLAYERS; i++) g_settings.input.joypad_map[i] = i; + +#ifdef RARCH_CONSOLE + rarch_assert(g_extern.msg_queue = msg_queue_new(8)); +#endif } #ifdef HAVE_CONFIGFILE diff --git a/wii/main.c b/wii/main.c index 9a4fb96bbc..f3de106460 100644 --- a/wii/main.c +++ b/wii/main.c @@ -135,7 +135,7 @@ int main(void) log_fp = fopen("sd:/ssnes-log.txt", "w"); #endif - rarch_assert(g_extern.msg_queue = msg_queue_new(8)); + config_set_defaults(); wii_video_init(); input_wii.init(); From 6d1198bf55565217e193d7306e18be8f57a57913 Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 28 May 2012 23:30:29 +0200 Subject: [PATCH 23/70] Make rarch_init_msg_queue() public. --- general.h | 1 + retroarch.c | 4 ++-- settings.c | 4 +--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/general.h b/general.h index 3a0c31a013..0deca7841a 100644 --- a/general.h +++ b/general.h @@ -481,6 +481,7 @@ int rarch_main_init(int argc, char *argv[]); bool rarch_main_iterate(void); void rarch_main_deinit(void); void rarch_render_cached_frame(void); +void rarch_init_msg_queue(void); void rarch_load_state(void); void rarch_save_state(void); diff --git a/retroarch.c b/retroarch.c index 4184d660e2..3311ee1333 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1167,7 +1167,7 @@ static void deinit_recording(void) } #endif -static void init_msg_queue(void) +void rarch_init_msg_queue(void) { if (g_extern.msg_queue) return; @@ -2359,7 +2359,7 @@ int rarch_main_init(int argc, char *argv[]) goto error; init_system_av_info(); - init_msg_queue(); + rarch_init_msg_queue(); if (!g_extern.sram_load_disable) load_save_files(); diff --git a/settings.c b/settings.c index e1b8f60996..f3a9083def 100644 --- a/settings.c +++ b/settings.c @@ -209,9 +209,7 @@ void config_set_defaults(void) for (int i = 0; i < MAX_PLAYERS; i++) g_settings.input.joypad_map[i] = i; -#ifdef RARCH_CONSOLE - rarch_assert(g_extern.msg_queue = msg_queue_new(8)); -#endif + rarch_init_msg_queue(); } #ifdef HAVE_CONFIGFILE From a133d2ebb564a7b7e97264ff6c42bdcfe985a3b7 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 28 May 2012 23:41:06 +0200 Subject: [PATCH 24/70] (PS3) Menu speed tweaks --- ps3/menu.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/ps3/menu.c b/ps3/menu.c index 1a16bbebe9..1b6132913b 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -1897,7 +1897,7 @@ static void select_setting(menu * menu_obj) if (menu_obj->items[menu_obj->selected].page != menu_obj->page) menu_obj->page = menu_obj->items[menu_obj->selected].page; - set_delay = DELAY_MEDIUM; + set_delay = DELAY_SMALL; } /* up to previous setting */ @@ -1912,7 +1912,7 @@ static void select_setting(menu * menu_obj) if (menu_obj->items[menu_obj->selected].page != menu_obj->page) menu_obj->page = menu_obj->items[menu_obj->selected].page; - set_delay = DELAY_MEDIUM; + set_delay = DELAY_SMALL; } producesettingentry(menu_obj, menu_obj->selected); @@ -2081,13 +2081,13 @@ static void ingame_menu(uint32_t menu_id) if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state)) { rarch_state_slot_decrease(); - set_delay = DELAY_LONG; + set_delay = DELAY_MEDIUM; blocking = 0; } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { rarch_state_slot_increase(); - set_delay = DELAY_LONG; + set_delay = DELAY_MEDIUM; blocking = 0; } @@ -2102,13 +2102,13 @@ static void ingame_menu(uint32_t menu_id) if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state)) { rarch_state_slot_decrease(); - set_delay = DELAY_LONG; + set_delay = DELAY_MEDIUM; blocking = 0; } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { rarch_state_slot_increase(); - set_delay = DELAY_LONG; + set_delay = DELAY_MEDIUM; blocking = 0; } @@ -2121,7 +2121,7 @@ static void ingame_menu(uint32_t menu_id) { g_console.aspect_ratio_index--; gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); - set_delay = DELAY_LONG; + set_delay = DELAY_MEDIUM; } } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) @@ -2130,7 +2130,7 @@ static void ingame_menu(uint32_t menu_id) if(g_console.aspect_ratio_index < ASPECT_RATIO_END) { gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); - set_delay = DELAY_LONG; + set_delay = DELAY_MEDIUM; } else g_console.aspect_ratio_index = ASPECT_RATIO_END-1; @@ -2179,7 +2179,7 @@ static void ingame_menu(uint32_t menu_id) { g_console.screen_orientation--; video_gl.set_rotation(NULL, g_console.screen_orientation); - set_delay = DELAY_LONG; + set_delay = DELAY_MEDIUM; } } @@ -2189,7 +2189,7 @@ static void ingame_menu(uint32_t menu_id) { g_console.screen_orientation++; video_gl.set_rotation(NULL, g_console.screen_orientation); - set_delay = DELAY_LONG; + set_delay = DELAY_MEDIUM; } } @@ -2210,7 +2210,7 @@ static void ingame_menu(uint32_t menu_id) g_settings.video.fbo_scale_x -= 1.0f; g_settings.video.fbo_scale_y -= 1.0f; apply_scaling(FBO_REINIT); - set_delay = DELAY_LONG; + set_delay = DELAY_MEDIUM; } } } @@ -2223,7 +2223,7 @@ static void ingame_menu(uint32_t menu_id) g_settings.video.fbo_scale_x += 1.0f; g_settings.video.fbo_scale_y += 1.0f; apply_scaling(FBO_REINIT); - set_delay = DELAY_LONG; + set_delay = DELAY_MEDIUM; } } } @@ -2426,7 +2426,7 @@ static void ingame_menu(uint32_t menu_id) g_console.menu_enable = false; g_console.ingame_menu_item = 0; g_console.mode_switch = MODE_MENU; - set_delay = DELAY_LONG; + set_delay = DELAY_MEDIUM; } strlcpy(comment, "Press 'CROSS' to return to the ROM Browser menu.", sizeof(comment)); break; @@ -2470,7 +2470,7 @@ static void ingame_menu(uint32_t menu_id) if(g_console.ingame_menu_item > 0) { g_console.ingame_menu_item--; - set_delay = DELAY_MEDIUM; + set_delay = DELAY_SMALL; } } @@ -2479,7 +2479,7 @@ static void ingame_menu(uint32_t menu_id) if(g_console.ingame_menu_item < (MENU_ITEM_LAST-1)) { g_console.ingame_menu_item++; - set_delay = DELAY_MEDIUM; + set_delay = DELAY_SMALL; } } From f6f101b6ab8b69afaf5be994fafe503cf707127c Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 00:06:43 +0200 Subject: [PATCH 25/70] (360) rarch_convert_char_to_wchar - use malloc --- console/console_ext.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/console/console_ext.c b/console/console_ext.c index fa55bbe726..4161324ed5 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -691,7 +691,7 @@ void rarch_console_rsound_stop(void) wchar_t * rarch_convert_char_to_wchar(const char * str) { unsigned long dwNum = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); - wchar_t * w_str = new wchar_t[dwNum]; + wchar_t * w_str = (wchar_t*)malloc(sizeof(wchar_t*) * dwNum); MultiByteToWideChar(CP_ACP, 0, str, -1, w_str, dwNum); return w_str; } From 294e922ecc01c2ac6fe719f0053fa316465408be Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 00:08:58 +0200 Subject: [PATCH 26/70] (360) Small fix --- console/console_ext.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/console/console_ext.c b/console/console_ext.c index 4161324ed5..5be5eea72e 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -691,7 +691,7 @@ void rarch_console_rsound_stop(void) wchar_t * rarch_convert_char_to_wchar(const char * str) { unsigned long dwNum = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); - wchar_t * w_str = (wchar_t*)malloc(sizeof(wchar_t*) * dwNum); + wchar_t * w_str = (wchar_t*)malloc(sizeof(wchar_t) * dwNum); MultiByteToWideChar(CP_ACP, 0, str, -1, w_str, dwNum); return w_str; } From e0b85596f6db78d18c76c1841f096f0d2a9c82e2 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 01:27:45 +0200 Subject: [PATCH 27/70] (RARCH_CONSOLE) Add console_settings.c --- console/console_ext.h | 2 + console/console_settings.c | 105 ++++++++++++++++++++++++++++++++++ console/console_settings.h | 48 ++++++++++++++++ console/griffin/griffin.c | 1 + ps3/menu.c | 112 ++++++++++++++----------------------- 5 files changed, 199 insertions(+), 69 deletions(-) create mode 100644 console/console_settings.c create mode 100644 console/console_settings.h diff --git a/console/console_ext.h b/console/console_ext.h index 4916de4d07..51ea36f36f 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -21,6 +21,8 @@ #include "libretro_mgmt.h" #endif +#include "console_settings.h" + #define IS_TIMER_NOT_EXPIRED(handle) (handle->frame_count < g_console.timer_expiration_frame_count) #define IS_TIMER_EXPIRED(handle) (!(IS_TIMER_NOT_EXPIRED(handle))) #define SET_TIMER_EXPIRATION(handle, value) (g_console.timer_expiration_frame_count = handle->frame_count + value) diff --git a/console/console_settings.c b/console/console_settings.c new file mode 100644 index 0000000000..243b3d1cc4 --- /dev/null +++ b/console/console_settings.c @@ -0,0 +1,105 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2012 - Hans-Kristian Arntzen + * Copyright (C) 2011-2012 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include +#include + +#include "../general.h" +#include "console_settings.h" + +void rarch_settings_change(unsigned setting) +{ + switch(setting) + { + case S_OVERSCAN_DECREMENT: + g_console.overscan_amount -= 0.01f; + g_console.overscan_enable = true; + + if(g_console.overscan_amount == 0.0f) + g_console.overscan_enable = false; + break; + case S_OVERSCAN_INCREMENT: + g_console.overscan_amount += 0.01f; + g_console.overscan_enable = true; + + if(g_console.overscan_amount == 0.0f) + g_console.overscan_enable = 0; + break; + case S_ROTATION_DECREMENT: + if(g_console.screen_orientation > ORIENTATION_NORMAL) + g_console.screen_orientation--; + break; + case S_ROTATION_INCREMENT: + if((g_console.screen_orientation+1) < ORIENTATION_END) + g_console.screen_orientation++; + break; + case S_SAVESTATE_DECREMENT: + if(g_extern.state_slot != 0) + g_extern.state_slot--; + break; + case S_SAVESTATE_INCREMENT: + g_extern.state_slot++; + break; + case S_SCALE_ENABLED: + g_console.fbo_enabled = !g_console.fbo_enabled; + break; + case S_SCALE_FACTOR_DECREMENT: + g_settings.video.fbo_scale_x -= 1.0f; + g_settings.video.fbo_scale_y -= 1.0f; + break; + case S_SCALE_FACTOR_INCREMENT: + g_settings.video.fbo_scale_x += 1.0f; + g_settings.video.fbo_scale_y += 1.0f; + break; + case S_THROTTLE: + g_console.throttle_enable = !g_console.throttle_enable; + break; + case S_TRIPLE_BUFFERING: + g_console.triple_buffering_enable = !g_console.triple_buffering_enable; + break; + } +} + +void rarch_settings_default(unsigned setting) +{ + switch(setting) + { + case S_DEF_OVERSCAN: + g_console.overscan_amount = 0.0f; + g_console.overscan_enable = false; + break; + case S_DEF_THROTTLE: + g_console.throttle_enable = true; + break; + case S_DEF_TRIPLE_BUFFERING: + g_console.triple_buffering_enable = true; + break; + case S_DEF_SAVE_STATE: + g_extern.state_slot = 0; + break; + case S_DEF_SCALE_ENABLED: + g_console.fbo_enabled = true; + g_settings.video.fbo_scale_x = 2.0f; + g_settings.video.fbo_scale_y = 2.0f; + break; + case S_DEF_SCALE_FACTOR: + g_settings.video.fbo_scale_x = 2.0f; + g_settings.video.fbo_scale_y = 2.0f; + break; + } +} diff --git a/console/console_settings.h b/console/console_settings.h new file mode 100644 index 0000000000..ad72bfae21 --- /dev/null +++ b/console/console_settings.h @@ -0,0 +1,48 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2012 - Hans-Kristian Arntzen + * Copyright (C) 2011-2012 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef CONSOLE_SETTINGS_H +#define CONSOLE_SETTINGS_H + +enum +{ + S_OVERSCAN_DECREMENT = 0, + S_OVERSCAN_INCREMENT, + S_ROTATION_DECREMENT, + S_ROTATION_INCREMENT, + S_SAVESTATE_DECREMENT, + S_SAVESTATE_INCREMENT, + S_SCALE_ENABLED, + S_SCALE_FACTOR_DECREMENT, + S_SCALE_FACTOR_INCREMENT, + S_THROTTLE, + S_TRIPLE_BUFFERING, +} changed_settings; + +enum +{ + S_DEF_OVERSCAN = 0, + S_DEF_THROTTLE, + S_DEF_TRIPLE_BUFFERING, + S_DEF_SAVE_STATE, + S_DEF_SCALE_ENABLED, + S_DEF_SCALE_FACTOR, +} default_settings; + +void rarch_settings_change (unsigned setting); +void rarch_settings_default (unsigned setting); + +#endif diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index 42398c4412..1b3511d92e 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -22,6 +22,7 @@ CONSOLE EXTENSIONS ============================================================ */ #include "../console_ext.c" +#include "../console_settings.c" #ifdef HAVE_LIBRETRO_MANAGEMENT #include "../libretro_mgmt.c" diff --git a/ps3/menu.c b/ps3/menu.c index 1b6132913b..1387828ac8 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -1220,18 +1220,18 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_SHADER_PRESETS: if((CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_CROSS(state))) { - if(g_console.emulator_initialized) - { - menuStackindex++; - menuStack[menuStackindex] = menu_filebrowser; - menuStack[menuStackindex].enum_id = PRESET_CHOICE; - set_initial_dir_tmpbrowser = true; - set_delay = DELAY_LONG; - } + if(g_console.emulator_initialized) + { + menuStackindex++; + menuStack[menuStackindex] = menu_filebrowser; + menuStack[menuStackindex].enum_id = PRESET_CHOICE; + set_initial_dir_tmpbrowser = true; + set_delay = DELAY_LONG; + } } if(CTRL_START(state)) { - strlcpy(g_console.cgp_path, "", sizeof(g_console.cgp_path)); + strlcpy(g_console.cgp_path, "", sizeof(g_console.cgp_path)); } break; case SETTING_SHADER: @@ -1344,17 +1344,13 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_SCALE_ENABLED: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - g_console.fbo_enabled = !g_console.fbo_enabled; + rarch_settings_change(S_SCALE_ENABLED); gfx_ctx_set_fbo(g_console.fbo_enabled); - set_delay = DELAY_MEDIUM; - } if(CTRL_START(state)) { - g_console.fbo_enabled = true; - g_settings.video.fbo_scale_x = 2.0f; - g_settings.video.fbo_scale_y = 2.0f; + rarch_settings_default(S_DEF_SCALE_ENABLED); apply_scaling(FBO_DEINIT); apply_scaling(FBO_INIT); } @@ -1364,10 +1360,10 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) { if(g_console.fbo_enabled) { - if((g_settings.video.fbo_scale_x > MIN_SCALING_FACTOR)) + bool should_decrement = g_settings.video.fbo_scale_x > MIN_SCALING_FACTOR; + if(should_decrement) { - g_settings.video.fbo_scale_x -= 1.0f; - g_settings.video.fbo_scale_y -= 1.0f; + rarch_settings_change(S_SCALE_FACTOR_DECREMENT); apply_scaling(FBO_REINIT); set_delay = DELAY_MEDIUM; } @@ -1377,10 +1373,10 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) { if(g_console.fbo_enabled) { - if((g_settings.video.fbo_scale_x < MAX_SCALING_FACTOR)) + bool should_increment = g_settings.video.fbo_scale_x < MAX_SCALING_FACTOR; + if(should_increment) { - g_settings.video.fbo_scale_x += 1.0f; - g_settings.video.fbo_scale_y += 1.0f; + rarch_settings_change(S_SCALE_FACTOR_INCREMENT); apply_scaling(FBO_REINIT); set_delay = DELAY_MEDIUM; } @@ -1388,8 +1384,7 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) } if(CTRL_START(state)) { - g_settings.video.fbo_scale_x = 2.0f; - g_settings.video.fbo_scale_y = 2.0f; + rarch_settings_default(S_DEF_SCALE_FACTOR); apply_scaling(FBO_DEINIT); apply_scaling(FBO_INIT); } @@ -1397,43 +1392,32 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_HW_OVERSCAN_AMOUNT: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_CROSS(state)) { - g_console.overscan_amount -= 0.01f; - g_console.overscan_enable = true; - - if(g_console.overscan_amount == 0.0f) - g_console.overscan_enable = false; - + rarch_settings_change(S_OVERSCAN_DECREMENT); gfx_ctx_set_overscan(); set_delay = DELAY_SMALLEST; } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - g_console.overscan_amount += 0.01f; - g_console.overscan_enable = true; - - if(g_console.overscan_amount == 0.0f) - g_console.overscan_enable = 0; - + rarch_settings_change(S_OVERSCAN_INCREMENT); gfx_ctx_set_overscan(); set_delay = DELAY_SMALLEST; } if(CTRL_START(state)) { - g_console.overscan_amount = 0.0f; - g_console.overscan_enable = false; + rarch_settings_default(S_DEF_OVERSCAN); gfx_ctx_set_overscan(); } break; case SETTING_THROTTLE_MODE: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { - g_console.throttle_enable = !g_console.throttle_enable; + rarch_settings_change(S_THROTTLE); gfx_ctx_set_swap_interval(g_console.throttle_enable, true); set_delay = DELAY_MEDIUM; } if(CTRL_START(state)) { - g_console.throttle_enable = true; + rarch_settings_default(S_DEF_THROTTLE); gfx_ctx_set_swap_interval(g_console.throttle_enable, true); set_delay = DELAY_MEDIUM; } @@ -1441,17 +1425,17 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_TRIPLE_BUFFERING: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { - g_console.triple_buffering_enable = !g_console.triple_buffering_enable; + rarch_settings_change(S_TRIPLE_BUFFERING); video_gl.restart(); set_delay = DELAY_MEDIUM; } if(CTRL_START(state)) { - if(!g_console.triple_buffering_enable) - { - g_console.triple_buffering_enable = true; - video_gl.restart(); - } + bool old_state = g_console.triple_buffering_enable; + rarch_settings_default(S_DEF_TRIPLE_BUFFERING); + + if(!old_state) + video_gl.restart(); } break; case SETTING_ENABLE_SCREENSHOTS: @@ -1556,19 +1540,17 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_EMU_CURRENT_SAVE_STATE_SLOT: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_CROSS(state)) { - if(g_extern.state_slot != 0) - g_extern.state_slot--; - - set_delay = DELAY_MEDIUM; + rarch_settings_change(S_OVERSCAN_DECREMENT); + set_delay = DELAY_MEDIUM; } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - g_extern.state_slot++; - set_delay = DELAY_MEDIUM; + rarch_settings_change(S_OVERSCAN_INCREMENT); + set_delay = DELAY_MEDIUM; } if(CTRL_START(state)) - g_extern.state_slot = 0; + rarch_settings_default(S_DEF_SAVE_STATE); break; case SETTING_EMU_SHOW_INFO_MSG: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) @@ -2145,29 +2127,19 @@ static void ingame_menu(uint32_t menu_id) case MENU_ITEM_OVERSCAN_AMOUNT: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_CROSS(state) || CTRL_LSTICK_LEFT(state)) { - g_console.overscan_amount -= 0.01f; - g_console.overscan_enable = true; - - if(g_console.overscan_amount == 0.00f) - g_console.overscan_enable = false; - + rarch_settings_change(S_OVERSCAN_DECREMENT); gfx_ctx_set_overscan(); set_delay = DELAY_SMALLEST; } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state) || CTRL_LSTICK_RIGHT(state)) { - g_console.overscan_amount += 0.01f; - g_console.overscan_enable = true; - if(g_console.overscan_amount == 0.0f) - g_console.overscan_amount = false; - + rarch_settings_change(S_OVERSCAN_INCREMENT); gfx_ctx_set_overscan(); set_delay = DELAY_SMALLEST; } if(CTRL_START(state)) { - g_console.overscan_amount = 0.0f; - g_console.overscan_enable = false; + rarch_settings_default(S_DEF_OVERSCAN); gfx_ctx_set_overscan(); } strlcpy(comment, "Press LEFT or RIGHT to change the [Overscan] settings.\nPress START to reset back to default values.", sizeof(comment)); @@ -2175,9 +2147,10 @@ static void ingame_menu(uint32_t menu_id) case MENU_ITEM_ORIENTATION: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_CROSS(state) || CTRL_LSTICK_LEFT(state)) { - if(g_console.screen_orientation > ORIENTATION_NORMAL) + bool should_rotate_decrement = g_console.screen_orientation > ORIENTATION_NORMAL; + if(should_rotate_decrement) { - g_console.screen_orientation--; + rarch_settings_change(S_ROTATION_DECREMENT); video_gl.set_rotation(NULL, g_console.screen_orientation); set_delay = DELAY_MEDIUM; } @@ -2185,9 +2158,10 @@ static void ingame_menu(uint32_t menu_id) if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state) || CTRL_LSTICK_RIGHT(state)) { - if((g_console.screen_orientation+1) < ORIENTATION_END) + bool should_rotate_increment = (g_console.screen_orientation+1) < ORIENTATION_END; + if(should_rotate_increment) { - g_console.screen_orientation++; + rarch_settings_change(S_ROTATION_INCREMENT); video_gl.set_rotation(NULL, g_console.screen_orientation); set_delay = DELAY_MEDIUM; } From e49e23687a3fbd07fb6b93321d0713ca38fa0bfb Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 01:37:09 +0200 Subject: [PATCH 28/70] (RARCH_CONSOLE) Expand console_settings.c some more --- console/console_settings.c | 12 ++++++++++++ console/console_settings.h | 8 ++++++-- ps3/menu.c | 8 ++++---- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/console/console_settings.c b/console/console_settings.c index 243b3d1cc4..99b59be4f5 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -26,6 +26,12 @@ void rarch_settings_change(unsigned setting) { switch(setting) { + case S_HW_TEXTURE_FILTER: + g_settings.video.smooth = !g_settings.video.smooth; + break; + case S_HW_TEXTURE_FILTER_2: + g_settings.video.second_pass_smooth = !g_settings.video.second_pass_smooth; + break; case S_OVERSCAN_DECREMENT: g_console.overscan_amount -= 0.01f; g_console.overscan_enable = true; @@ -79,6 +85,12 @@ void rarch_settings_default(unsigned setting) { switch(setting) { + case S_DEF_HW_TEXTURE_FILTER: + g_settings.video.smooth = 1; + break; + case S_DEF_HW_TEXTURE_FILTER_2: + g_settings.video.second_pass_smooth = 1; + break; case S_DEF_OVERSCAN: g_console.overscan_amount = 0.0f; g_console.overscan_enable = false; diff --git a/console/console_settings.h b/console/console_settings.h index ad72bfae21..82bdc36959 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -19,7 +19,9 @@ enum { - S_OVERSCAN_DECREMENT = 0, + S_HW_TEXTURE_FILTER = 0, + S_HW_TEXTURE_FILTER_2, + S_OVERSCAN_DECREMENT, S_OVERSCAN_INCREMENT, S_ROTATION_DECREMENT, S_ROTATION_INCREMENT, @@ -34,7 +36,9 @@ enum enum { - S_DEF_OVERSCAN = 0, + S_DEF_HW_TEXTURE_FILTER = 0, + S_DEF_HW_TEXTURE_FILTER_2, + S_DEF_OVERSCAN, S_DEF_THROTTLE, S_DEF_TRIPLE_BUFFERING, S_DEF_SAVE_STATE, diff --git a/ps3/menu.c b/ps3/menu.c index 1387828ac8..110f5a7dd1 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -1318,26 +1318,26 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_HW_TEXTURE_FILTER: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - g_settings.video.smooth = !g_settings.video.smooth; + rarch_settings_change(S_HW_TEXTURE_FILTER); gfx_ctx_set_filtering(1, g_settings.video.smooth); set_delay = DELAY_LONG; } if(CTRL_START(state)) { - g_settings.video.smooth = 1; + rarch_settings_change(S_DEF_HW_TEXTURE_FILTER); gfx_ctx_set_filtering(1, g_settings.video.smooth); } break; case SETTING_HW_TEXTURE_FILTER_2: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - g_settings.video.second_pass_smooth = !g_settings.video.second_pass_smooth; + rarch_settings_change(S_HW_TEXTURE_FILTER_2); gfx_ctx_set_filtering(2, g_settings.video.second_pass_smooth); set_delay = DELAY_LONG; } if(CTRL_START(state)) { - g_settings.video.second_pass_smooth = 1; + rarch_settings_change(S_DEF_HW_TEXTURE_FILTER_2); gfx_ctx_set_filtering(2, g_settings.video.second_pass_smooth); } break; From 87d04b4bbd3a770bcbf2af6b41e4c3400eb830ca Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 02:05:23 +0200 Subject: [PATCH 29/70] (360) Replace static function return_to_game() with calls to new rarch_settings_change --- 360/menu.cpp | 75 ++++++++++++++++---------------------- console/console_settings.c | 63 ++++++++++++++++++-------------- console/console_settings.h | 4 +- 3 files changed, 71 insertions(+), 71 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 21f5c187e2..6eb356a24f 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -33,13 +33,6 @@ filebrowser_t browser; filebrowser_t tmp_browser; uint32_t set_shader = 0; -static void return_to_game (void) -{ - g_console.frame_advance_enable = false; - g_console.menu_enable = false; - g_console.mode_switch = MODE_EMULATION; -} - static void return_to_dashboard (void) { g_console.menu_enable = false; @@ -349,16 +342,16 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled { case MENU_ITEM_LOAD_STATE: if (g_console.emulator_initialized) - { + { rarch_load_state(); - return_to_game(); - } - break; + rarch_settings_change(S_RETURN_TO_GAME); + } + break; case MENU_ITEM_SAVE_STATE: if (g_console.emulator_initialized) { - rarch_save_state(); - return_to_game(); + rarch_save_state(); + rarch_settings_change(S_RETURN_TO_GAME); } break; case MENU_ITEM_KEEP_ASPECT_RATIO: @@ -386,22 +379,22 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled case MENU_ITEM_ORIENTATION: switch(g_console.screen_orientation) { - case ORIENTATION_NORMAL: - g_console.screen_orientation = ORIENTATION_VERTICAL; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical"); - break; - case ORIENTATION_VERTICAL: - g_console.screen_orientation = ORIENTATION_FLIPPED; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped"); - break; - case ORIENTATION_FLIPPED: - g_console.screen_orientation = ORIENTATION_FLIPPED_ROTATED; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated"); - break; - case ORIENTATION_FLIPPED_ROTATED: - g_console.screen_orientation = ORIENTATION_NORMAL; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Normal"); - break; + case ORIENTATION_NORMAL: + g_console.screen_orientation = ORIENTATION_VERTICAL; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical"); + break; + case ORIENTATION_VERTICAL: + g_console.screen_orientation = ORIENTATION_FLIPPED; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped"); + break; + case ORIENTATION_FLIPPED: + g_console.screen_orientation = ORIENTATION_FLIPPED_ROTATED; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated"); + break; + case ORIENTATION_FLIPPED_ROTATED: + g_console.screen_orientation = ORIENTATION_NORMAL; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Normal"); + break; } video_xdk360.set_rotation(driver.video_data, g_console.screen_orientation); break; @@ -415,29 +408,25 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled break; case MENU_ITEM_FRAME_ADVANCE: if (g_console.emulator_initialized) - { - g_console.frame_advance_enable = true; - g_console.menu_enable = false; - g_console.mode_switch = MODE_EMULATION; - } + rarch_settings_change(S_FRAME_ADVANCE); break; case MENU_ITEM_SCREENSHOT_MODE: - if (g_console.info_msg_enable) + if (g_console.info_msg_enable) { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); - } + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); + } break; case MENU_ITEM_RESET: - if (g_console.emulator_initialized) + if (g_console.emulator_initialized) { - return_to_game(); - rarch_game_reset(); + rarch_settings_change(S_RETURN_TO_GAME); + rarch_game_reset(); } break; case MENU_ITEM_RETURN_TO_GAME: if (g_console.emulator_initialized) - return_to_game(); + rarch_settings_change(S_RETURN_TO_GAME); break; case MENU_ITEM_RETURN_TO_DASHBOARD: return_to_dashboard(); @@ -506,7 +495,7 @@ HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle { memset(g_console.rom_path, 0, sizeof(g_console.rom_path)); snprintf(g_console.rom_path, sizeof(g_console.rom_path), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(browser), strbuffer); - return_to_game(); + rarch_settings_change(S_RETURN_TO_GAME); g_console.initialize_rarch_enable = 1; } } diff --git a/console/console_settings.c b/console/console_settings.c index 99b59be4f5..58fb0d17f3 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -26,26 +26,35 @@ void rarch_settings_change(unsigned setting) { switch(setting) { + case S_FRAME_ADVANCE: + g_console.frame_advance_enable = true; + g_console.menu_enable = false; + g_console.mode_switch = MODE_EMULATION; + break; case S_HW_TEXTURE_FILTER: g_settings.video.smooth = !g_settings.video.smooth; break; case S_HW_TEXTURE_FILTER_2: - g_settings.video.second_pass_smooth = !g_settings.video.second_pass_smooth; + g_settings.video.second_pass_smooth = !g_settings.video.second_pass_smooth; break; case S_OVERSCAN_DECREMENT: g_console.overscan_amount -= 0.01f; - g_console.overscan_enable = true; - - if(g_console.overscan_amount == 0.0f) + g_console.overscan_enable = true; + if(g_console.overscan_amount == 0.0f) g_console.overscan_enable = false; break; case S_OVERSCAN_INCREMENT: - g_console.overscan_amount += 0.01f; - g_console.overscan_enable = true; - - if(g_console.overscan_amount == 0.0f) + g_console.overscan_amount += 0.01f; + g_console.overscan_enable = true; + if(g_console.overscan_amount == 0.0f) g_console.overscan_enable = 0; break; + case S_RETURN_TO_GAME: + g_console.frame_advance_enable = false; + //g_console.ingame_menu_item = 0; + g_console.menu_enable = false; + g_console.mode_switch = MODE_EMULATION; + break; case S_ROTATION_DECREMENT: if(g_console.screen_orientation > ORIENTATION_NORMAL) g_console.screen_orientation--; @@ -55,28 +64,28 @@ void rarch_settings_change(unsigned setting) g_console.screen_orientation++; break; case S_SAVESTATE_DECREMENT: - if(g_extern.state_slot != 0) + if(g_extern.state_slot != 0) g_extern.state_slot--; break; case S_SAVESTATE_INCREMENT: - g_extern.state_slot++; + g_extern.state_slot++; break; case S_SCALE_ENABLED: - g_console.fbo_enabled = !g_console.fbo_enabled; + g_console.fbo_enabled = !g_console.fbo_enabled; break; case S_SCALE_FACTOR_DECREMENT: - g_settings.video.fbo_scale_x -= 1.0f; - g_settings.video.fbo_scale_y -= 1.0f; + g_settings.video.fbo_scale_x -= 1.0f; + g_settings.video.fbo_scale_y -= 1.0f; break; case S_SCALE_FACTOR_INCREMENT: - g_settings.video.fbo_scale_x += 1.0f; - g_settings.video.fbo_scale_y += 1.0f; + g_settings.video.fbo_scale_x += 1.0f; + g_settings.video.fbo_scale_y += 1.0f; break; case S_THROTTLE: - g_console.throttle_enable = !g_console.throttle_enable; + g_console.throttle_enable = !g_console.throttle_enable; break; case S_TRIPLE_BUFFERING: - g_console.triple_buffering_enable = !g_console.triple_buffering_enable; + g_console.triple_buffering_enable = !g_console.triple_buffering_enable; break; } } @@ -89,29 +98,29 @@ void rarch_settings_default(unsigned setting) g_settings.video.smooth = 1; break; case S_DEF_HW_TEXTURE_FILTER_2: - g_settings.video.second_pass_smooth = 1; + g_settings.video.second_pass_smooth = 1; break; case S_DEF_OVERSCAN: g_console.overscan_amount = 0.0f; - g_console.overscan_enable = false; + g_console.overscan_enable = false; break; case S_DEF_THROTTLE: - g_console.throttle_enable = true; + g_console.throttle_enable = true; break; case S_DEF_TRIPLE_BUFFERING: - g_console.triple_buffering_enable = true; + g_console.triple_buffering_enable = true; break; case S_DEF_SAVE_STATE: - g_extern.state_slot = 0; + g_extern.state_slot = 0; break; case S_DEF_SCALE_ENABLED: - g_console.fbo_enabled = true; - g_settings.video.fbo_scale_x = 2.0f; - g_settings.video.fbo_scale_y = 2.0f; + g_console.fbo_enabled = true; + g_settings.video.fbo_scale_x = 2.0f; + g_settings.video.fbo_scale_y = 2.0f; break; case S_DEF_SCALE_FACTOR: - g_settings.video.fbo_scale_x = 2.0f; - g_settings.video.fbo_scale_y = 2.0f; + g_settings.video.fbo_scale_x = 2.0f; + g_settings.video.fbo_scale_y = 2.0f; break; } } diff --git a/console/console_settings.h b/console/console_settings.h index 82bdc36959..9c56dae7c3 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -19,10 +19,12 @@ enum { - S_HW_TEXTURE_FILTER = 0, + S_FRAME_ADVANCE = 0, + S_HW_TEXTURE_FILTER, S_HW_TEXTURE_FILTER_2, S_OVERSCAN_DECREMENT, S_OVERSCAN_INCREMENT, + S_RETURN_TO_GAME, S_ROTATION_DECREMENT, S_ROTATION_INCREMENT, S_SAVESTATE_DECREMENT, From 60165d4cd71eb241a3fd292868f832bb9159781a Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 01:57:33 +0200 Subject: [PATCH 30/70] (PS3) Use rarch_settings_change for replacing return_to_game static function for PS3 too --- ps3/menu.c | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/ps3/menu.c b/ps3/menu.c index 110f5a7dd1..47f2536520 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -2014,14 +2014,6 @@ static void select_rom(void) #define MENU_ITEM_SELECTED(index) (menuitem_colors[index]) -static void return_to_game (void) -{ - g_console.frame_advance_enable = false; - g_console.ingame_menu_item = 0; - g_console.menu_enable = false; - g_console.mode_switch = MODE_EMULATION; -} - static void ingame_menu(uint32_t menu_id) { char comment[256], msg_temp[256]; @@ -2050,7 +2042,7 @@ static void ingame_menu(uint32_t menu_id) set_delay = DELAY_NONE; if(CTRL_CIRCLE(state)) - return_to_game(); + rarch_settings_change(S_RETURN_TO_GAME); switch(g_console.ingame_menu_item) { @@ -2058,7 +2050,7 @@ static void ingame_menu(uint32_t menu_id) if(CTRL_CROSS(state)) { rarch_load_state(); - return_to_game(); + rarch_settings_change(S_RETURN_TO_GAME); } if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state)) { @@ -2079,7 +2071,7 @@ static void ingame_menu(uint32_t menu_id) if(CTRL_CROSS(state)) { rarch_save_state(); - return_to_game(); + rarch_settings_change(S_RETURN_TO_GAME); } if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state)) { @@ -2212,10 +2204,8 @@ static void ingame_menu(uint32_t menu_id) case MENU_ITEM_FRAME_ADVANCE: if(CTRL_CROSS(state) || CTRL_R2(state) || CTRL_L2(state)) { - g_console.frame_advance_enable = true; + rarch_settings_change(S_FRAME_ADVANCE); g_console.ingame_menu_item = MENU_ITEM_FRAME_ADVANCE; - g_console.menu_enable = false; - g_console.mode_switch = MODE_EMULATION; } strlcpy(comment, "Press 'CROSS', 'L2' or 'R2' button to step one frame. Pressing the button\nrapidly will advance the frame more slowly.", sizeof(comment)); break; @@ -2382,14 +2372,14 @@ static void ingame_menu(uint32_t menu_id) break; case MENU_ITEM_RETURN_TO_GAME: if(CTRL_CROSS(state)) - return_to_game(); + rarch_settings_change(S_RETURN_TO_GAME); strlcpy(comment, "Press 'CROSS' to return back to the game.", sizeof(comment)); break; case MENU_ITEM_RESET: if(CTRL_CROSS(state)) { - return_to_game(); + rarch_settings_change(S_RETURN_TO_GAME); rarch_game_reset(); } strlcpy(comment, "Press 'CROSS' to reset the game.", sizeof(comment)); @@ -2458,9 +2448,7 @@ static void ingame_menu(uint32_t menu_id) } if(CTRL_L3(state) && CTRL_R3(state)) - { - return_to_game(); - } + rarch_settings_change(S_RETURN_TO_GAME); } From 396d57ae77e68d79ede124391ee98f2a6c253b5d Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 02:17:35 +0200 Subject: [PATCH 31/70] (360) Implemented S_RETURN_TO_DASHBOARD --- 360/menu.cpp | 11 ++--------- console/console_settings.c | 5 +++++ console/console_settings.h | 1 + 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 6eb356a24f..ea5d9d6a4c 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -33,13 +33,6 @@ filebrowser_t browser; filebrowser_t tmp_browser; uint32_t set_shader = 0; -static void return_to_dashboard (void) -{ - g_console.menu_enable = false; - g_console.mode_switch = MODE_EXIT; - g_console.initialize_rarch_enable = false; -} - /* Register custom classes */ HRESULT CRetroArch::RegisterXuiClasses (void) { @@ -429,7 +422,7 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled rarch_settings_change(S_RETURN_TO_GAME); break; case MENU_ITEM_RETURN_TO_DASHBOARD: - return_to_dashboard(); + rarch_settings_change(S_RETURN_TO_DASHBOARD); break; } } @@ -766,7 +759,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) NavigateForward(app.hRetroArchSettings); } else if ( hObjPressed == m_quit ) - return_to_dashboard(); + rarch_settings_change(S_RETURN_TO_DASHBOARD); bHandled = TRUE; return 0; diff --git a/console/console_settings.c b/console/console_settings.c index 58fb0d17f3..2a881fb352 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -48,6 +48,11 @@ void rarch_settings_change(unsigned setting) g_console.overscan_enable = true; if(g_console.overscan_amount == 0.0f) g_console.overscan_enable = 0; + break; + case S_RETURN_TO_DASHBOARD: + g_console.menu_enable = false; + g_console.initialize_rarch_enable = false; + g_console.mode_switch = MODE_EXIT; break; case S_RETURN_TO_GAME: g_console.frame_advance_enable = false; diff --git a/console/console_settings.h b/console/console_settings.h index 9c56dae7c3..3cd716612a 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -24,6 +24,7 @@ enum S_HW_TEXTURE_FILTER_2, S_OVERSCAN_DECREMENT, S_OVERSCAN_INCREMENT, + S_RETURN_TO_DASHBOARD, S_RETURN_TO_GAME, S_ROTATION_DECREMENT, S_ROTATION_INCREMENT, From 28e10c9ad4a99c780d91d252e489723ac839bf1b Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 02:08:54 +0200 Subject: [PATCH 32/70] (PS3) Implemented S_RETURN_TO_DASHBOARD --- ps3/menu.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ps3/menu.c b/ps3/menu.c index 47f2536520..e214cae102 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -2420,10 +2420,7 @@ static void ingame_menu(uint32_t menu_id) break; case MENU_ITEM_RETURN_TO_XMB: if(CTRL_CROSS(state)) - { - g_console.menu_enable = false; - g_console.mode_switch = MODE_EXIT; - } + rarch_settings_change(S_RETURN_TO_DASHBOARD); strlcpy(comment, "Press 'CROSS' to quit the emulator and return to the XMB.", sizeof(comment)); break; From 487856c2c3c6da6f916c3d1d1b9feb9e3f063ce7 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 02:32:34 +0200 Subject: [PATCH 33/70] (360) Indenting cleanups --- 360/menu.cpp | 71 ++++++++++++++++++++------------------ console/console_settings.c | 4 +-- 2 files changed, 39 insertions(+), 36 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index ea5d9d6a4c..5bb0609006 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -256,8 +256,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro { if((g_settings.video.fbo_scale_x > MIN_SCALING_FACTOR)) { - g_settings.video.fbo_scale_x -= 1.0f; - g_settings.video.fbo_scale_y -= 1.0f; + rarch_settings_change(S_SCALE_FACTOR_DECREMENT); //xdk360_gfx_init_fbo(vid); snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); m_settingslist.SetText(SETTING_SCALE_FACTOR, rarch_convert_char_to_wchar(scalefactor)); @@ -275,8 +274,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro { if((g_settings.video.fbo_scale_x < MAX_SCALING_FACTOR)) { - g_settings.video.fbo_scale_x += 1.0f; - g_settings.video.fbo_scale_y += 1.0f; + rarch_settings_change(S_SCALE_FACTOR_INCREMENT); //xdk360_gfx_init_fbo(vid); snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); m_settingslist.SetText(SETTING_SCALE_FACTOR, rarch_convert_char_to_wchar(scalefactor)); @@ -365,8 +363,11 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled msg_queue_clear(g_extern.msg_queue); if(g_console.info_msg_enable) { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); + if(g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); + } } break; case MENU_ITEM_ORIENTATION: @@ -393,11 +394,11 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled break; case MENU_ITEM_RESIZE_MODE: g_console.input_loop = INPUT_LOOP_RESIZE_MODE; - if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Resize the screen by moving around the two analog sticks.\nPress Y to reset to default values, and B to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'.", 1, 270); - } + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - Resize the screen by moving around the two analog sticks.\nPress Y to reset to default values, and B to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'.", 1, 270); + } break; case MENU_ITEM_FRAME_ADVANCE: if (g_console.emulator_initialized) @@ -512,7 +513,7 @@ HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle if (g_console.info_msg_enable) { msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - All the contents of the ZIP files you have selected in the filebrowser\nare extracted to this partition.", 1, 180); + msg_queue_push(g_extern.msg_queue, "INFO - All the contents of the ZIP files you have selected in the filebrowser\nare extracted to this partition.", 1, 180); } } @@ -531,32 +532,32 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand if(tmp_browser.cur[index].d_type != FILE_ATTRIBUTE_DIRECTORY) { const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_shaderlist.GetText(index)); - - switch(set_shader) - { + + switch(set_shader) + { case 1: snprintf(g_settings.video.cg_shader_path, sizeof(g_settings.video.cg_shader_path), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); - hlsl_load_shader(set_shader, g_settings.video.cg_shader_path); - break; - case 2: - snprintf (g_settings.video.second_pass_shader, sizeof(g_settings.video.second_pass_shader), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); - hlsl_load_shader(set_shader, g_settings.video.second_pass_shader); - break; - default: - break; - } + hlsl_load_shader(set_shader, g_settings.video.cg_shader_path); + break; + case 2: + snprintf (g_settings.video.second_pass_shader, sizeof(g_settings.video.second_pass_shader), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); + hlsl_load_shader(set_shader, g_settings.video.second_pass_shader); + break; + default: + break; + } if (g_console.info_msg_enable) { msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Shader successfully loaded.", 1, 180); + msg_queue_push(g_extern.msg_queue, "INFO - Shader successfully loaded.", 1, 180); } } else if(tmp_browser.cur[index].d_type == FILE_ATTRIBUTE_DIRECTORY) { const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_shaderlist.GetText(index)); - snprintf(path, sizeof(path), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); - filebrowser_fetch_directory_entries(path, &tmp_browser, &m_shaderlist, &m_shaderpathtitle); + snprintf(path, sizeof(path), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); + filebrowser_fetch_directory_entries(path, &tmp_browser, &m_shaderlist, &m_shaderpathtitle); } } @@ -604,14 +605,15 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled switch(current_index) { case SETTING_EMU_REWIND_ENABLED: - g_settings.rewind_enable = !g_settings.rewind_enable; - m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); - if (g_console.info_msg_enable) + g_settings.rewind_enable = !g_settings.rewind_enable; + m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); + + if (g_console.info_msg_enable) { msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); } - break; + break; case SETTING_EMU_SHOW_INFO_MSG: g_console.info_msg_enable = !g_console.info_msg_enable; m_settingslist.SetText(SETTING_EMU_SHOW_INFO_MSG, g_console.info_msg_enable ? L"Info messages: ON" : L"Info messages: OFF"); @@ -655,7 +657,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled NavigateForward(app.hShaderBrowser); break; case SETTING_SHADER_2: - set_shader = 2; + set_shader = 2; hr = XuiSceneCreate(g_console.menus_hd_enable ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); if (hr < 0) { @@ -741,10 +743,11 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) RARCH_ERR("Failed to load scene.\n"); } hCur = app.hCoreBrowser; + if (g_console.info_msg_enable) { msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Select a Libretro core from the menu by pressing the A button.", 1, 180); + msg_queue_push(g_extern.msg_queue, "INFO - Select a Libretro core from the menu by pressing the A button.", 1, 180); } NavigateForward(app.hCoreBrowser); } diff --git a/console/console_settings.c b/console/console_settings.c index 2a881fb352..eb027ea9d4 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -49,12 +49,12 @@ void rarch_settings_change(unsigned setting) if(g_console.overscan_amount == 0.0f) g_console.overscan_enable = 0; break; - case S_RETURN_TO_DASHBOARD: + case S_RETURN_TO_DASHBOARD: g_console.menu_enable = false; g_console.initialize_rarch_enable = false; g_console.mode_switch = MODE_EXIT; break; - case S_RETURN_TO_GAME: + case S_RETURN_TO_GAME: g_console.frame_advance_enable = false; //g_console.ingame_menu_item = 0; g_console.menu_enable = false; From 4bb5066691a543616dc7fb7199640d95e867ef2a Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 02:33:06 +0200 Subject: [PATCH 34/70] (PS3) Add S_RETURN_TO_MENU --- console/console_settings.c | 5 +++++ console/console_settings.h | 1 + ps3/menu.c | 4 +--- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/console/console_settings.c b/console/console_settings.c index eb027ea9d4..dd1c7793d4 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -60,6 +60,11 @@ void rarch_settings_change(unsigned setting) g_console.menu_enable = false; g_console.mode_switch = MODE_EMULATION; break; + case S_RETURN_TO_MENU: + g_console.menu_enable = false; + g_console.ingame_menu_item = 0; + g_console.mode_switch = MODE_MENU; + break; case S_ROTATION_DECREMENT: if(g_console.screen_orientation > ORIENTATION_NORMAL) g_console.screen_orientation--; diff --git a/console/console_settings.h b/console/console_settings.h index 3cd716612a..bf66fddab2 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -26,6 +26,7 @@ enum S_OVERSCAN_INCREMENT, S_RETURN_TO_DASHBOARD, S_RETURN_TO_GAME, + S_RETURN_TO_MENU, S_ROTATION_DECREMENT, S_ROTATION_INCREMENT, S_SAVESTATE_DECREMENT, diff --git a/ps3/menu.c b/ps3/menu.c index e214cae102..a59bb25d65 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -2387,9 +2387,7 @@ static void ingame_menu(uint32_t menu_id) case MENU_ITEM_RETURN_TO_MENU: if(CTRL_CROSS(state)) { - g_console.menu_enable = false; - g_console.ingame_menu_item = 0; - g_console.mode_switch = MODE_MENU; + rarch_settings_change(S_RETURN_TO_MENU); set_delay = DELAY_MEDIUM; } strlcpy(comment, "Press 'CROSS' to return to the ROM Browser menu.", sizeof(comment)); From 4f662ff0e2f31717161b9b7a7d84edaf72bfe582 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 02:48:13 +0200 Subject: [PATCH 35/70] (PS3) Implement S_RETURN_TO_LAUNCHER --- console/console_settings.c | 5 +++++ console/console_settings.h | 1 + ps3/menu.c | 17 +++++------------ 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/console/console_settings.c b/console/console_settings.c index dd1c7793d4..e94a6cd3f1 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -60,6 +60,11 @@ void rarch_settings_change(unsigned setting) g_console.menu_enable = false; g_console.mode_switch = MODE_EMULATION; break; + case S_RETURN_TO_LAUNCHER: + g_console.return_to_launcher = true; + g_console.menu_enable = false; + g_console.mode_switch = MODE_EXIT; + break; case S_RETURN_TO_MENU: g_console.menu_enable = false; g_console.ingame_menu_item = 0; diff --git a/console/console_settings.h b/console/console_settings.h index bf66fddab2..20cd1b6331 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -26,6 +26,7 @@ enum S_OVERSCAN_INCREMENT, S_RETURN_TO_DASHBOARD, S_RETURN_TO_GAME, + S_RETURN_TO_LAUNCHER, S_RETURN_TO_MENU, S_ROTATION_DECREMENT, S_ROTATION_INCREMENT, diff --git a/ps3/menu.c b/ps3/menu.c index a59bb25d65..561b7a475e 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -937,9 +937,7 @@ static void select_file(uint32_t menu_id) { strlcpy(g_console.launch_app_on_exit, path, sizeof(g_console.launch_app_on_exit)); set_libretro_core_as_launch = false; - g_console.return_to_launcher = true; - g_console.menu_enable = false; - g_console.mode_switch = MODE_EXIT; + rarch_settings_change(S_RETURN_TO_LAUNCHER); } break; } @@ -2173,8 +2171,7 @@ static void ingame_menu(uint32_t menu_id) { if((g_settings.video.fbo_scale_x > MIN_SCALING_FACTOR)) { - g_settings.video.fbo_scale_x -= 1.0f; - g_settings.video.fbo_scale_y -= 1.0f; + rarch_settings_change(S_SCALE_FACTOR_DECREMENT); apply_scaling(FBO_REINIT); set_delay = DELAY_MEDIUM; } @@ -2186,8 +2183,7 @@ static void ingame_menu(uint32_t menu_id) { if((g_settings.video.fbo_scale_x < MAX_SCALING_FACTOR)) { - g_settings.video.fbo_scale_x += 1.0f; - g_settings.video.fbo_scale_y += 1.0f; + rarch_settings_change(S_SCALE_FACTOR_INCREMENT); apply_scaling(FBO_REINIT); set_delay = DELAY_MEDIUM; } @@ -2195,8 +2191,7 @@ static void ingame_menu(uint32_t menu_id) } if(CTRL_START(state)) { - g_settings.video.fbo_scale_x = 2.0f; - g_settings.video.fbo_scale_y = 2.0f; + rarch_settings_default(S_DEF_SCALE_FACTOR); apply_scaling(FBO_REINIT); } strlcpy(comment, "Press LEFT or RIGHT to change the [Scaling] settings.\nPress START to reset back to default values.", sizeof(comment)); @@ -2410,9 +2405,7 @@ static void ingame_menu(uint32_t menu_id) strlcpy(g_console.launch_app_on_exit, MULTIMAN_EXECUTABLE, sizeof(g_console.launch_app_on_exit)); - g_console.return_to_launcher = true; - g_console.menu_enable = false; - g_console.mode_switch = MODE_EXIT; + rarch_settings_change(S_RETURN_TO_DASHBOARD); } strlcpy(comment, "Press 'CROSS' to quit the emulator and return to multiMAN.", sizeof(comment)); break; From b0cf650e97de4e79b390ffaacbc444165b27eb67 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 03:35:59 +0200 Subject: [PATCH 36/70] Implement S_REWIND --- console/console_settings.c | 3 +++ console/console_settings.h | 1 + 2 files changed, 4 insertions(+) diff --git a/console/console_settings.c b/console/console_settings.c index e94a6cd3f1..c95f25b3a9 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -70,6 +70,9 @@ void rarch_settings_change(unsigned setting) g_console.ingame_menu_item = 0; g_console.mode_switch = MODE_MENU; break; + case S_REWIND: + g_settings.rewind_enable = !g_settings.rewind_enable; + break; case S_ROTATION_DECREMENT: if(g_console.screen_orientation > ORIENTATION_NORMAL) g_console.screen_orientation--; diff --git a/console/console_settings.h b/console/console_settings.h index 20cd1b6331..49fb74e0cc 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -28,6 +28,7 @@ enum S_RETURN_TO_GAME, S_RETURN_TO_LAUNCHER, S_RETURN_TO_MENU, + S_REWIND, S_ROTATION_DECREMENT, S_ROTATION_INCREMENT, S_SAVESTATE_DECREMENT, From ca2e20be84d6d9afd767da2717dc0dc4493ac9dc Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 03:49:19 +0200 Subject: [PATCH 37/70] (360) Use S_REWIND --- 360/menu.cpp | 2 +- console/console_settings.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 5bb0609006..7236df9a92 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -605,7 +605,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled switch(current_index) { case SETTING_EMU_REWIND_ENABLED: - g_settings.rewind_enable = !g_settings.rewind_enable; + rarch_settings_change(S_REWIND); m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_console.info_msg_enable) diff --git a/console/console_settings.c b/console/console_settings.c index c95f25b3a9..c1b24634cc 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -62,8 +62,8 @@ void rarch_settings_change(unsigned setting) break; case S_RETURN_TO_LAUNCHER: g_console.return_to_launcher = true; - g_console.menu_enable = false; - g_console.mode_switch = MODE_EXIT; + g_console.menu_enable = false; + g_console.mode_switch = MODE_EXIT; break; case S_RETURN_TO_MENU: g_console.menu_enable = false; From 9edeec41b7db323b6a81528034fd2b36f4df5ed2 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 04:05:16 +0200 Subject: [PATCH 38/70] (PS3) cleanups to menu code, fixes --- ps3/menu.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ps3/menu.c b/ps3/menu.c index 561b7a475e..3cb860e55e 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -1538,12 +1538,12 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_EMU_CURRENT_SAVE_STATE_SLOT: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_CROSS(state)) { - rarch_settings_change(S_OVERSCAN_DECREMENT); + rarch_settings_change(S_SAVESTATE_DECREMENT); set_delay = DELAY_MEDIUM; } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - rarch_settings_change(S_OVERSCAN_INCREMENT); + rarch_settings_change(S_SAVESTATE_INCREMENT); set_delay = DELAY_MEDIUM; } @@ -1565,7 +1565,7 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_EMU_REWIND_ENABLED: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - g_settings.rewind_enable = !g_settings.rewind_enable; + rarch_settings_change(S_REWIND); set_delay = DELAY_MEDIUM; if(g_console.info_msg_enable) @@ -1575,9 +1575,7 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) } } if(CTRL_START(state)) - { g_settings.rewind_enable = false; - } break; case SETTING_RARCH_DEFAULT_EMU: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) @@ -2347,6 +2345,7 @@ static void ingame_menu(uint32_t menu_id) { while(stuck_in_loop && g_console.ingame_menu_enable) { + gl->menu_render = false; state = cell_pad_input_poll_device(0); if(CTRL_CIRCLE(state)) { @@ -2361,6 +2360,7 @@ static void ingame_menu(uint32_t menu_id) cellSysutilCheckCallback(); #endif } + gl->menu_render = true; } strlcpy(comment, "Allows you to take a screenshot without any text clutter.\nPress CIRCLE to go back to the in-game menu while in 'Screenshot Mode'.", sizeof(comment)); @@ -2615,7 +2615,7 @@ void menu_loop(void) const char * message = msg_queue_pull(g_extern.msg_queue); - if (message) + if (message && g_console.info_msg_enable) { if(IS_TIMER_EXPIRED(gl)) { From 7de2e41c323dafb550fc07c2b378b2f789d61935 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 04:16:38 +0200 Subject: [PATCH 39/70] (PS3) Add S_QUIT --- console/console_settings.c | 5 +++++ console/console_settings.h | 1 + ps3/main.c | 4 +--- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/console/console_settings.c b/console/console_settings.c index c1b24634cc..99e643995c 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -49,6 +49,11 @@ void rarch_settings_change(unsigned setting) if(g_console.overscan_amount == 0.0f) g_console.overscan_enable = 0; break; + case S_QUIT: + g_console.menu_enable = false; + g_console.ingame_menu_enable = false; + g_console.mode_switch = MODE_EXIT; + break; case S_RETURN_TO_DASHBOARD: g_console.menu_enable = false; g_console.initialize_rarch_enable = false; diff --git a/console/console_settings.h b/console/console_settings.h index 49fb74e0cc..caf0e75e32 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -24,6 +24,7 @@ enum S_HW_TEXTURE_FILTER_2, S_OVERSCAN_DECREMENT, S_OVERSCAN_INCREMENT, + S_QUIT, S_RETURN_TO_DASHBOARD, S_RETURN_TO_GAME, S_RETURN_TO_LAUNCHER, diff --git a/ps3/main.c b/ps3/main.c index 0d0334dafb..b289707017 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -164,10 +164,8 @@ static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdat switch (status) { case CELL_SYSUTIL_REQUEST_EXITGAME: - g_console.menu_enable = false; gl->quitting = true; - g_console.ingame_menu_enable = false; - g_console.mode_switch = MODE_EXIT; + rarch_settings_change(S_QUIT); break; case CELL_SYSUTIL_OSKDIALOG_FINISHED: oskutil_close(&g_console.oskutil_handle); From 0555a703a7697990759fc87437d1e812a128dc2a Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 04:39:54 +0200 Subject: [PATCH 40/70] (360) Cleanups --- 360/menu.cpp | 39 ++++++++++++++++++-------------------- console/console_settings.c | 4 ++-- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 7236df9a92..5c445d8f6b 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -44,7 +44,7 @@ HRESULT CRetroArch::RegisterXuiClasses (void) CRetroArchControls::Register(); CRetroArchSettings::Register(); - return S_OK; + return 0; } /* Unregister custom classes */ @@ -58,7 +58,7 @@ HRESULT CRetroArch::UnregisterXuiClasses (void) CRetroArchControls::Register(); CRetroArchSettings::Unregister(); - return S_OK; + return 0; } static void filebrowser_fetch_directory_entries(const char *path, filebrowser_t * browser, CXuiList * romlist, @@ -90,7 +90,7 @@ HRESULT CRetroArchFileBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled filebrowser_fetch_directory_entries(g_console.default_rom_startup_dir, &browser, &m_romlist, &m_rompathtitle); - return S_OK; + return 0; } HRESULT CRetroArchCoreBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) @@ -102,7 +102,7 @@ HRESULT CRetroArchCoreBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled filebrowser_new(&tmp_browser, "game:", "xex|XEX"); filebrowser_fetch_directory_entries("game:", &tmp_browser, &m_romlist, &m_rompathtitle); - return S_OK; + return 0; } HRESULT CRetroArchShaderBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) @@ -114,7 +114,7 @@ HRESULT CRetroArchShaderBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandl filebrowser_new(&tmp_browser, "game:\\media\\shaders", "cg|CG"); filebrowser_fetch_directory_entries("game:\\media\\shaders", &tmp_browser, &m_shaderlist, &m_shaderpathtitle); - return S_OK; + return 0; } HRESULT CRetroArchControls::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) @@ -136,7 +136,7 @@ HRESULT CRetroArchControls::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) m_controlslist.SetText(i, rarch_convert_char_to_wchar(buttons[i])); } - return S_OK; + return 0; } HRESULT CRetroArchControls::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) @@ -177,7 +177,7 @@ HRESULT CRetroArchControls::OnControlNavigate(XUIMessageControlNavigate *pContro break; } - return S_OK; + return 0; } HRESULT CRetroArchControls::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) @@ -210,7 +210,7 @@ HRESULT CRetroArchControls::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } bHandled = TRUE; - return S_OK; + return 0; } HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) @@ -235,7 +235,7 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) m_settingslist.SetText(SETTING_SHADER_2, rarch_convert_char_to_wchar(shader2str)); m_settingslist.SetText(SETTING_SCALE_FACTOR, rarch_convert_char_to_wchar(scalefactor)); - return S_OK; + return 0; } HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) @@ -289,7 +289,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro break; } - return S_OK; + return 0; } HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) @@ -317,7 +317,7 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, aspectratio_label_w); free(aspectratio_label_w); - return S_OK; + return 0; } HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) @@ -360,7 +360,6 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } break; case MENU_ITEM_OVERSCAN_AMOUNT: - msg_queue_clear(g_extern.msg_queue); if(g_console.info_msg_enable) { if(g_console.info_msg_enable) @@ -430,7 +429,7 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled bHandled = TRUE; - return S_OK; + return 0; } HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) @@ -461,7 +460,7 @@ HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) free(core_text_utf); free(package_version_utf); - return S_OK; + return 0; } HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) @@ -519,7 +518,7 @@ HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle bHandled = TRUE; - return S_OK; + return 0; } HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) @@ -563,7 +562,7 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand bHandled = TRUE; - return S_OK; + return 0; } HRESULT CRetroArchCoreBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) @@ -577,9 +576,7 @@ HRESULT CRetroArchCoreBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle { const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_romlist.GetText(index)); snprintf(g_console.launch_app_on_exit, sizeof(g_console.launch_app_on_exit), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); - g_console.return_to_launcher = true; - g_console.menu_enable = false; - g_console.mode_switch = MODE_EXIT; + rarch_settings_change(S_RETURN_TO_LAUNCHER); } else if(tmp_browser.cur[index].d_type == FILE_ATTRIBUTE_DIRECTORY) { @@ -590,7 +587,7 @@ HRESULT CRetroArchCoreBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle } bHandled = TRUE; - return S_OK; + return 0; } HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) @@ -688,7 +685,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } bHandled = TRUE; - return S_OK; + return 0; } HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) diff --git a/console/console_settings.c b/console/console_settings.c index 99e643995c..7a4b0ec3b8 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -51,8 +51,8 @@ void rarch_settings_change(unsigned setting) break; case S_QUIT: g_console.menu_enable = false; - g_console.ingame_menu_enable = false; - g_console.mode_switch = MODE_EXIT; + g_console.ingame_menu_enable = false; + g_console.mode_switch = MODE_EXIT; break; case S_RETURN_TO_DASHBOARD: g_console.menu_enable = false; From 0473785f65be2bdb4d121bc225acd135d000dea5 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 04:54:45 +0200 Subject: [PATCH 41/70] (360) Small cleanups --- 360/fonts.cpp | 4 ++-- 360/xdk360_video.cpp | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/360/fonts.cpp b/360/fonts.cpp index 67448d8884..5b6b4468b5 100644 --- a/360/fonts.cpp +++ b/360/fonts.cpp @@ -547,7 +547,7 @@ HRESULT xdk360_console_init( LPCSTR strFontFileName, unsigned long colBackColor, video_console.m_fLineHeight = fCharHeight; // Allocate memory to hold the lines - video_console.m_Buffer = new wchar_t[ video_console.m_cScreenHeightVirtual * ( video_console.m_cScreenWidth + 1 ) ]; + video_console.m_Buffer = (wchar_t*)malloc(sizeof(wchar_t*) * video_console.m_cScreenHeightVirtual * ( video_console.m_cScreenWidth + 1 )); video_console.m_Lines = new wchar_t *[ video_console.m_cScreenHeightVirtual ]; // Set the line pointers as indexes into the buffer @@ -597,7 +597,7 @@ void xdk360_console_deinit() if(video_console.m_Buffer) { - delete[] video_console.m_Buffer; + free(video_console.m_Buffer); video_console.m_Buffer = NULL; } diff --git a/360/xdk360_video.cpp b/360/xdk360_video.cpp index fec1db6fd9..e329dff198 100644 --- a/360/xdk360_video.cpp +++ b/360/xdk360_video.cpp @@ -150,7 +150,7 @@ void * PackedResource::GetData( const char * strName ) const HRESULT PackedResource::Create( const char * strFilename ) { unsigned long dwNumBytesRead; - HANDLE hFile = CreateFile( strFilename, GENERIC_READ, FILE_SHARE_READ, NULL, + void * hFile = CreateFile( strFilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL ); if( hFile == INVALID_HANDLE_VALUE ) { @@ -179,14 +179,14 @@ HRESULT PackedResource::Create( const char * strFilename ) m_dwVidMemDataSize = xprh.dwDataSize; // Allocate memory - m_pSysMemData = (BYTE*)malloc(m_dwSysMemDataSize); + m_pSysMemData = (unsigned char*)malloc(m_dwSysMemDataSize); if( m_pSysMemData == NULL ) { RARCH_ERR( "Could not allocate system memory.\n" ); m_dwSysMemDataSize = 0; return E_FAIL; } - m_pVidMemData = ( BYTE* )XMemAlloc( m_dwVidMemDataSize, MAKE_XALLOC_ATTRIBUTES( 0, 0, 0, 0, eXALLOCAllocatorId_GameMax, + m_pVidMemData = ( unsigned char* )XMemAlloc( m_dwVidMemDataSize, MAKE_XALLOC_ATTRIBUTES( 0, 0, 0, 0, eXALLOCAllocatorId_GameMax, XALLOC_PHYSICAL_ALIGNMENT_4K, XALLOC_MEMPROTECT_WRITECOMBINE, 0, XALLOC_MEMTYPE_PHYSICAL ) ); if( m_pVidMemData == NULL ) @@ -231,12 +231,12 @@ HRESULT PackedResource::Create( const char * strFilename ) m_bInitialized = TRUE; - return S_OK; + return 0; } void PackedResource::Destroy() { - delete[] m_pSysMemData; + free(m_pSysMemData); m_pSysMemData = NULL; m_dwSysMemDataSize = 0L; @@ -388,15 +388,15 @@ static void xdk360_set_rotation(void * data, unsigned orientation) static void xdk360_convert_texture_to_as16_srgb( D3DTexture *pTexture ) { - pTexture->Format.SignX = GPUSIGN_GAMMA; - pTexture->Format.SignY = GPUSIGN_GAMMA; - pTexture->Format.SignZ = GPUSIGN_GAMMA; + pTexture->Format.SignX = GPUSIGN_GAMMA; + pTexture->Format.SignY = GPUSIGN_GAMMA; + pTexture->Format.SignZ = GPUSIGN_GAMMA; - XGTEXTURE_DESC desc; - XGGetTextureDesc( pTexture, 0, &desc ); + XGTEXTURE_DESC desc; + XGGetTextureDesc( pTexture, 0, &desc ); - //convert to AS_16_16_16_16 format - pTexture->Format.DataFormat = g_MapLinearToSrgbGpuFormat[ (desc.Format & D3DFORMAT_TEXTUREFORMAT_MASK) >> D3DFORMAT_TEXTUREFORMAT_SHIFT ]; + //convert to AS_16_16_16_16 format + pTexture->Format.DataFormat = g_MapLinearToSrgbGpuFormat[ (desc.Format & D3DFORMAT_TEXTUREFORMAT_MASK) >> D3DFORMAT_TEXTUREFORMAT_SHIFT ]; } static void xdk360_init_fbo(xdk360_video_t *d3d9) From b995f8da9ff9221f3f276b8fd8ecd85e849d9c5a Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 04:53:42 +0200 Subject: [PATCH 42/70] (gl.c) Turned some functions inline --- gfx/gl.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index 37749d4669..97d492a764 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -612,7 +612,7 @@ static void gl_compute_fbo_geometry(gl_t *gl, unsigned width, unsigned height, } } -static void gl_start_frame_fbo(gl_t *gl) +static inline void gl_start_frame_fbo(gl_t *gl) { glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); pglBindFramebuffer(GL_FRAMEBUFFER, gl->fbo[0]); @@ -794,7 +794,7 @@ static void gl_update_input_size(gl_t *gl, unsigned width, unsigned height, unsi } #ifdef __CELLOS_LV2__ -static void gl_copy_frame(gl_t *gl, const void *frame, unsigned width, unsigned height, unsigned pitch) +static inline void gl_copy_frame(gl_t *gl, const void *frame, unsigned width, unsigned height, unsigned pitch) { if (!gl->fbo_inited) gl_set_viewport(gl, gl->win_width, gl->win_height, false, true); @@ -838,7 +838,7 @@ static void gl_init_textures(gl_t *gl) glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); } #else -static void gl_copy_frame(gl_t *gl, const void *frame, unsigned width, unsigned height, unsigned pitch) +static inline void gl_copy_frame(gl_t *gl, const void *frame, unsigned width, unsigned height, unsigned pitch) { glPixelStorei(GL_UNPACK_ROW_LENGTH, pitch / gl->base_size); glTexSubImage2D(GL_TEXTURE_2D, @@ -867,7 +867,7 @@ static void gl_init_textures(gl_t *gl) } #endif -static void gl_next_texture_index(gl_t *gl, const struct gl_tex_info *tex_info) +static inline void gl_next_texture_index(gl_t *gl, const struct gl_tex_info *tex_info) { memmove(gl->prev_info + 1, gl->prev_info, sizeof(*tex_info) * (TEXTURES - 1)); memcpy(&gl->prev_info[0], tex_info, sizeof(*tex_info)); From 68af1626d97f97d50b5c48585b2c20505ba7a347 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 15:25:39 +0200 Subject: [PATCH 43/70] Indentation fixes --- 360/fonts.cpp | 8 +- 360/menu.cpp | 337 +++++----- 360/menu.h | 244 ++++--- 360/xdk360_video.cpp | 290 +++++---- 360/xdk360_video_resources.h | 114 ++-- ps3/menu-entries.h | 1161 +++++++++++++++++----------------- ps3/menu.c | 458 +++++++------- ps3/ps3_audio.c | 4 +- 8 files changed, 1292 insertions(+), 1324 deletions(-) diff --git a/360/fonts.cpp b/360/fonts.cpp index 5b6b4468b5..61fb1b3441 100644 --- a/360/fonts.cpp +++ b/360/fonts.cpp @@ -86,8 +86,9 @@ typedef struct { // All elements are defaulted to NULL static Font_Locals_t s_FontLocals; // Global static instance -static void xdk360_video_font_draw_text(xdk360_video_font_t * font, float fOriginX, float fOriginY, unsigned long dwColor, - const wchar_t * strText, float fMaxPixelWidth ) +static void xdk360_video_font_draw_text(xdk360_video_font_t * font, + float fOriginX, float fOriginY, unsigned long dwColor, + const wchar_t * strText, float fMaxPixelWidth ) { if( strText == NULL || strText[0] == L'\0') return; @@ -164,7 +165,8 @@ static void xdk360_video_font_draw_text(xdk360_video_font_t * font, float fOrigi } // Translate unprintable characters - const GLYPH_ATTR * pGlyph = &font->m_Glyphs[ ( letter <= font->m_cMaxGlyph ) ? font->m_TranslatorTable[letter] : 0 ]; + const GLYPH_ATTR * pGlyph = &font->m_Glyphs[ ( letter <= font->m_cMaxGlyph ) + ? font->m_TranslatorTable[letter] : 0 ]; float fOffset = font->m_fXScaleFactor * (float)pGlyph->wOffset; float fAdvance = font->m_fXScaleFactor * (float)pGlyph->wAdvance; diff --git a/360/menu.cpp b/360/menu.cpp index 5c445d8f6b..9f035f0c1d 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -27,7 +27,7 @@ #include "../general.h" -CRetroArch app; +CRetroArch app; HXUIOBJ hCur; filebrowser_t browser; filebrowser_t tmp_browser; @@ -132,7 +132,7 @@ HRESULT CRetroArchControls::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) for(i = 0; i < RARCH_FIRST_META_KEY; i++) { - snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); + snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); m_controlslist.SetText(i, rarch_convert_char_to_wchar(buttons[i])); } @@ -150,32 +150,32 @@ HRESULT CRetroArchControls::OnControlNavigate(XUIMessageControlNavigate *pContro for(i = 0; i < RARCH_FIRST_META_KEY; i++) { - snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); + snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); m_controlslist.SetText(i, rarch_convert_char_to_wchar(buttons[i])); } - switch(pControlNavigateData->nControlNavigate) - { - case XUI_CONTROL_NAVIGATE_LEFT: - if(current_index > 0 && current_index != SETTING_CONTROLS_DEFAULT_ALL) - { - rarch_input_set_keybind(controlno, KEYBIND_DECREMENT, current_index); - snprintf(button, sizeof(button), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); - m_controlslist.SetText(current_index, rarch_convert_char_to_wchar(button)); - } - break; - case XUI_CONTROL_NAVIGATE_RIGHT: - if(current_index < RARCH_FIRST_META_KEY && current_index != SETTING_CONTROLS_DEFAULT_ALL) - { - rarch_input_set_keybind(controlno, KEYBIND_INCREMENT, current_index); - snprintf(button, sizeof(button), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); - m_controlslist.SetText(current_index, rarch_convert_char_to_wchar(button)); - } - break; - case XUI_CONTROL_NAVIGATE_UP: - case XUI_CONTROL_NAVIGATE_DOWN: - break; - } + switch(pControlNavigateData->nControlNavigate) + { + case XUI_CONTROL_NAVIGATE_LEFT: + if(current_index > 0 && current_index != SETTING_CONTROLS_DEFAULT_ALL) + { + rarch_input_set_keybind(controlno, KEYBIND_DECREMENT, current_index); + snprintf(button, sizeof(button), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); + m_controlslist.SetText(current_index, rarch_convert_char_to_wchar(button)); + } + break; + case XUI_CONTROL_NAVIGATE_RIGHT: + if(current_index < RARCH_FIRST_META_KEY && current_index != SETTING_CONTROLS_DEFAULT_ALL) + { + rarch_input_set_keybind(controlno, KEYBIND_INCREMENT, current_index); + snprintf(button, sizeof(button), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); + m_controlslist.SetText(current_index, rarch_convert_char_to_wchar(button)); + } + break; + case XUI_CONTROL_NAVIGATE_UP: + case XUI_CONTROL_NAVIGATE_DOWN: + break; + } return 0; } @@ -197,13 +197,13 @@ HRESULT CRetroArchControls::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled for(i = 0; i < RARCH_FIRST_META_KEY; i++) { - snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); + snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); m_controlslist.SetText(i, rarch_convert_char_to_wchar(buttons[i])); } break; default: rarch_input_set_keybind(controlno, KEYBIND_DEFAULT, current_index); - snprintf(buttons[current_index], sizeof(buttons[current_index]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); + snprintf(buttons[current_index], sizeof(buttons[current_index]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); m_controlslist.SetText(current_index, rarch_convert_char_to_wchar(buttons[current_index])); break; } @@ -246,48 +246,48 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro current_index = m_settingslist.GetCurSel(); - switch(pControlNavigateData->nControlNavigate) - { - case XUI_CONTROL_NAVIGATE_LEFT: - switch(current_index) - { - case SETTING_SCALE_FACTOR: - if(vid->fbo_enabled) - { - if((g_settings.video.fbo_scale_x > MIN_SCALING_FACTOR)) - { - rarch_settings_change(S_SCALE_FACTOR_DECREMENT); - //xdk360_gfx_init_fbo(vid); - snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); - m_settingslist.SetText(SETTING_SCALE_FACTOR, rarch_convert_char_to_wchar(scalefactor)); - } - } - default: - break; - } - break; - case XUI_CONTROL_NAVIGATE_RIGHT: - switch(current_index) - { - case SETTING_SCALE_FACTOR: - if(vid->fbo_enabled) - { - if((g_settings.video.fbo_scale_x < MAX_SCALING_FACTOR)) - { - rarch_settings_change(S_SCALE_FACTOR_INCREMENT); - //xdk360_gfx_init_fbo(vid); - snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); - m_settingslist.SetText(SETTING_SCALE_FACTOR, rarch_convert_char_to_wchar(scalefactor)); - } - } - default: - break; - } - break; - case XUI_CONTROL_NAVIGATE_UP: - case XUI_CONTROL_NAVIGATE_DOWN: - break; - } + switch(pControlNavigateData->nControlNavigate) + { + case XUI_CONTROL_NAVIGATE_LEFT: + switch(current_index) + { + case SETTING_SCALE_FACTOR: + if(vid->fbo_enabled) + { + if((g_settings.video.fbo_scale_x > MIN_SCALING_FACTOR)) + { + rarch_settings_change(S_SCALE_FACTOR_DECREMENT); + //xdk360_gfx_init_fbo(vid); + snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); + m_settingslist.SetText(SETTING_SCALE_FACTOR, rarch_convert_char_to_wchar(scalefactor)); + } + } + default: + break; + } + break; + case XUI_CONTROL_NAVIGATE_RIGHT: + switch(current_index) + { + case SETTING_SCALE_FACTOR: + if(vid->fbo_enabled) + { + if((g_settings.video.fbo_scale_x < MAX_SCALING_FACTOR)) + { + rarch_settings_change(S_SCALE_FACTOR_INCREMENT); + //xdk360_gfx_init_fbo(vid); + snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); + m_settingslist.SetText(SETTING_SCALE_FACTOR, rarch_convert_char_to_wchar(scalefactor)); + } + } + default: + break; + } + break; + case XUI_CONTROL_NAVIGATE_UP: + case XUI_CONTROL_NAVIGATE_DOWN: + break; + } return 0; } @@ -296,6 +296,7 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) { GetChildById(L"XuiQuickMenuList", &m_quickmenulist); GetChildById(L"XuiBackButton", &m_back); + switch(g_console.screen_orientation) { case ORIENTATION_NORMAL: @@ -311,6 +312,7 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated"); break; } + char aspectratio_label[32]; snprintf(aspectratio_label, sizeof(aspectratio_label), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); wchar_t * aspectratio_label_w = rarch_convert_char_to_wchar(aspectratio_label); @@ -346,80 +348,80 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } break; case MENU_ITEM_KEEP_ASPECT_RATIO: - { - g_console.aspect_ratio_index++; - if(g_console.aspect_ratio_index >= ASPECT_RATIO_END) - g_console.aspect_ratio_index = 0; + { + g_console.aspect_ratio_index++; + if(g_console.aspect_ratio_index >= ASPECT_RATIO_END) + g_console.aspect_ratio_index = 0; - gfx_ctx_set_aspect_ratio(d3d9, g_console.aspect_ratio_index); - char aspectratio_label[32]; - snprintf(aspectratio_label, sizeof(aspectratio_label), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); - wchar_t * aspectratio_label_w = rarch_convert_char_to_wchar(aspectratio_label); - m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, aspectratio_label_w); - free(aspectratio_label_w); - } + gfx_ctx_set_aspect_ratio(d3d9, g_console.aspect_ratio_index); + char aspectratio_label[32]; + snprintf(aspectratio_label, sizeof(aspectratio_label), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); + wchar_t * aspectratio_label_w = rarch_convert_char_to_wchar(aspectratio_label); + m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, aspectratio_label_w); + free(aspectratio_label_w); + } break; case MENU_ITEM_OVERSCAN_AMOUNT: if(g_console.info_msg_enable) { if(g_console.info_msg_enable) - { + { msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); - } + msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); + } } break; case MENU_ITEM_ORIENTATION: switch(g_console.screen_orientation) { - case ORIENTATION_NORMAL: - g_console.screen_orientation = ORIENTATION_VERTICAL; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical"); - break; - case ORIENTATION_VERTICAL: - g_console.screen_orientation = ORIENTATION_FLIPPED; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped"); - break; - case ORIENTATION_FLIPPED: - g_console.screen_orientation = ORIENTATION_FLIPPED_ROTATED; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated"); - break; - case ORIENTATION_FLIPPED_ROTATED: - g_console.screen_orientation = ORIENTATION_NORMAL; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Normal"); - break; + case ORIENTATION_NORMAL: + g_console.screen_orientation = ORIENTATION_VERTICAL; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical"); + break; + case ORIENTATION_VERTICAL: + g_console.screen_orientation = ORIENTATION_FLIPPED; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped"); + break; + case ORIENTATION_FLIPPED: + g_console.screen_orientation = ORIENTATION_FLIPPED_ROTATED; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated"); + break; + case ORIENTATION_FLIPPED_ROTATED: + g_console.screen_orientation = ORIENTATION_NORMAL; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Normal"); + break; } video_xdk360.set_rotation(driver.video_data, g_console.screen_orientation); break; case MENU_ITEM_RESIZE_MODE: g_console.input_loop = INPUT_LOOP_RESIZE_MODE; - if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Resize the screen by moving around the two analog sticks.\nPress Y to reset to default values, and B to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'.", 1, 270); - } + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - Resize the screen by moving around the two analog sticks.\nPress Y to reset to default values, and B to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'.", 1, 270); + } break; case MENU_ITEM_FRAME_ADVANCE: if (g_console.emulator_initialized) - rarch_settings_change(S_FRAME_ADVANCE); + rarch_settings_change(S_FRAME_ADVANCE); break; case MENU_ITEM_SCREENSHOT_MODE: - if (g_console.info_msg_enable) + if (g_console.info_msg_enable) { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); - } + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); + } break; case MENU_ITEM_RESET: - if (g_console.emulator_initialized) + if (g_console.emulator_initialized) { - rarch_settings_change(S_RETURN_TO_GAME); - rarch_game_reset(); + rarch_settings_change(S_RETURN_TO_GAME); + rarch_game_reset(); } break; case MENU_ITEM_RETURN_TO_GAME: if (g_console.emulator_initialized) - rarch_settings_change(S_RETURN_TO_GAME); + rarch_settings_change(S_RETURN_TO_GAME); break; case MENU_ITEM_RETURN_TO_DASHBOARD: rarch_settings_change(S_RETURN_TO_DASHBOARD); @@ -476,7 +478,7 @@ HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle retro_get_system_info(&info); bool block_zip_extract = info.block_extract; - const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t*)m_romlist.GetText(index)); + const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t*)m_romlist.GetText(index)); if((strstr(strbuffer, ".zip") || strstr(strbuffer, ".ZIP")) && !block_zip_extract) { @@ -574,15 +576,15 @@ HRESULT CRetroArchCoreBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle int index = m_romlist.GetCurSel(); if(tmp_browser.cur[index].d_type != FILE_ATTRIBUTE_DIRECTORY) { - const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_romlist.GetText(index)); - snprintf(g_console.launch_app_on_exit, sizeof(g_console.launch_app_on_exit), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); - rarch_settings_change(S_RETURN_TO_LAUNCHER); + const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_romlist.GetText(index)); + snprintf(g_console.launch_app_on_exit, sizeof(g_console.launch_app_on_exit), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); + rarch_settings_change(S_RETURN_TO_LAUNCHER); } else if(tmp_browser.cur[index].d_type == FILE_ATTRIBUTE_DIRECTORY) { - const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_romlist.GetText(index)); - snprintf(path, sizeof(path), "%s%s\\", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); - filebrowser_fetch_directory_entries(path, &tmp_browser, &m_romlist, &m_rompathtitle); + const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_romlist.GetText(index)); + snprintf(path, sizeof(path), "%s%s\\", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); + filebrowser_fetch_directory_entries(path, &tmp_browser, &m_romlist, &m_rompathtitle); } } @@ -616,26 +618,26 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled m_settingslist.SetText(SETTING_EMU_SHOW_INFO_MSG, g_console.info_msg_enable ? L"Info messages: ON" : L"Info messages: OFF"); break; case SETTING_EMU_MENUS: - g_console.menus_hd_enable = !g_console.menus_hd_enable; - m_settingslist.SetText(SETTING_EMU_MENUS, g_console.menus_hd_enable ? L"Menus: HD" : L"Menus: SD"); - break; + g_console.menus_hd_enable = !g_console.menus_hd_enable; + m_settingslist.SetText(SETTING_EMU_MENUS, g_console.menus_hd_enable ? L"Menus: HD" : L"Menus: SD"); + break; case SETTING_GAMMA_CORRECTION_ENABLED: g_console.gamma_correction_enable = !g_console.gamma_correction_enable; m_settingslist.SetText(SETTING_GAMMA_CORRECTION_ENABLED, g_console.gamma_correction_enable ? L"Gamma correction: ON" : L"Gamma correction: OFF"); - if(g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); - } + if(g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + } break; case SETTING_COLOR_FORMAT: g_console.color_format = !g_console.color_format; m_settingslist.SetText(SETTING_COLOR_FORMAT, g_console.color_format ? L"Color format: 32bit ARGB" : L"Color format: 16bit RGBA"); if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); - } + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + } break; case SETTING_SHADER: set_shader = 1; @@ -646,11 +648,12 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled RARCH_ERR("Failed to load scene.\n"); } hCur = app.hShaderBrowser; - if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); + + if (g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); msg_queue_push(g_extern.msg_queue, "INFO - Select a shader from the menu by pressing the A button.", 1, 180); - } + } NavigateForward(app.hShaderBrowser); break; case SETTING_SHADER_2: @@ -662,10 +665,10 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } hCur = app.hShaderBrowser; if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); + { + msg_queue_clear(g_extern.msg_queue); msg_queue_push(g_extern.msg_queue, "INFO - Select a shader from the menu by pressing the A button.", 1, 180); - } + } NavigateForward(app.hShaderBrowser); break; case SETTING_HW_TEXTURE_FILTER: @@ -811,7 +814,7 @@ int menu_init (void) void menu_deinit (void) { - app.Uninit(); + app.Uninit(); } void menu_loop(void) @@ -829,32 +832,31 @@ void menu_loop(void) { if(!g_console.emulator_initialized) d3d9->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0, 0, 0, 0), 1.0f, 0); - else - { + else rarch_render_cached_frame(); - } XINPUT_STATE state; XInputGetState(0, &state); g_console.menu_enable = !((state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB) - && (state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) && (g_console.emulator_initialized) - && IS_TIMER_EXPIRED(d3d9)); + && (state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) && (g_console.emulator_initialized) + && IS_TIMER_EXPIRED(d3d9)); + g_console.mode_switch = g_console.menu_enable ? MODE_MENU : MODE_EMULATION; - switch(g_console.input_loop) - { + switch(g_console.input_loop) + { case INPUT_LOOP_MENU: - app.RunFrame(); /* Update XUI */ - if(state.Gamepad.wButtons & XINPUT_GAMEPAD_B && hCur != app.hMainScene) + app.RunFrame(); /* Update XUI */ + if(state.Gamepad.wButtons & XINPUT_GAMEPAD_B && hCur != app.hMainScene) XuiSceneNavigateBack(hCur, app.hMainScene, XUSER_INDEX_ANY); - break; - case INPUT_LOOP_RESIZE_MODE: - xdk360_input_loop(); - break; - default: - break; - } + break; + case INPUT_LOOP_RESIZE_MODE: + xdk360_input_loop(); + break; + default: + break; + } hr = app.Render(); /* Render XUI */ hr = XuiTimersRun(); /* Update XUI timers */ @@ -864,21 +866,18 @@ void menu_loop(void) SET_TIMER_EXPIRATION(d3d9, 30); } - /* XBox 360 specific font code */ - { - const char *msg = msg_queue_pull(g_extern.msg_queue); + const char *msg = msg_queue_pull(g_extern.msg_queue); - if (msg) - { - if(IS_TIMER_EXPIRED(d3d9)) - { - xdk360_console_format(msg); - SET_TIMER_EXPIRATION(d3d9, 30); - } + if (msg) + { + if(IS_TIMER_EXPIRED(d3d9)) + { + xdk360_console_format(msg); + SET_TIMER_EXPIRATION(d3d9, 30); + } - xdk360_console_draw(); - } - } + xdk360_console_draw(); + } gfx_ctx_swap_buffers(); }while(g_console.menu_enable); diff --git a/360/menu.h b/360/menu.h index 04152cc3d2..f6087b81f2 100644 --- a/360/menu.h +++ b/360/menu.h @@ -37,23 +37,23 @@ enum enum { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_B = 0, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_Y, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_SELECT, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_START, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_UP, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_DOWN, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_LEFT, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_RIGHT, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_A, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_X, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L2, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R2, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L3, - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R3, - SETTING_CONTROLS_DEFAULT_ALL + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_B = 0, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_Y, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_SELECT, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_START, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_UP, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_DOWN, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_LEFT, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_RIGHT, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_A, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_X, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L2, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R2, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L3, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R3, + SETTING_CONTROLS_DEFAULT_ALL }; enum @@ -64,154 +64,152 @@ enum class CRetroArch : public CXuiModule { -public: - HXUIOBJ hMainScene; - HXUIOBJ hControlsMenu; - HXUIOBJ hFileBrowser; - HXUIOBJ hCoreBrowser; - HXUIOBJ hShaderBrowser; - HXUIOBJ hQuickMenu; - HXUIOBJ hRetroArchSettings; -protected: - /* Override so that Cssnes can register classes */ - virtual HRESULT RegisterXuiClasses(); - /* Override so that Cssnes can unregister classes */ - virtual HRESULT UnregisterXuiClasses(); + public: + HXUIOBJ hMainScene; + HXUIOBJ hControlsMenu; + HXUIOBJ hFileBrowser; + HXUIOBJ hCoreBrowser; + HXUIOBJ hShaderBrowser; + HXUIOBJ hQuickMenu; + HXUIOBJ hRetroArchSettings; + protected: + virtual HRESULT RegisterXuiClasses(); + virtual HRESULT UnregisterXuiClasses(); }; class CRetroArchMain: public CXuiSceneImpl { -protected: - CXuiControl m_filebrowser; - CXuiControl m_quick_menu; - CXuiControl m_controls; - CXuiControl m_settings; - CXuiControl m_change_libretro_core; - CXuiControl m_quit; - CXuiTextElement m_title; - CXuiTextElement m_core; -public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + protected: + CXuiControl m_filebrowser; + CXuiControl m_quick_menu; + CXuiControl m_controls; + CXuiControl m_settings; + CXuiControl m_change_libretro_core; + CXuiControl m_quit; + CXuiTextElement m_title; + CXuiTextElement m_core; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); - XUI_IMPLEMENT_CLASS(CRetroArchMain, L"RetroArchMain", XUI_CLASS_SCENE) + XUI_IMPLEMENT_CLASS(CRetroArchMain, L"RetroArchMain", XUI_CLASS_SCENE) }; class CRetroArchFileBrowser: public CXuiSceneImpl { -protected: - CXuiList m_romlist; - CXuiControl m_back; - CXuiControl m_dir_game; - CXuiControl m_dir_cache; - CXuiTextElement m_rompathtitle; -public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + protected: + CXuiList m_romlist; + CXuiControl m_back; + CXuiControl m_dir_game; + CXuiControl m_dir_cache; + CXuiTextElement m_rompathtitle; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); - XUI_IMPLEMENT_CLASS(CRetroArchFileBrowser, L"RetroArchFileBrowser", XUI_CLASS_SCENE) + XUI_IMPLEMENT_CLASS(CRetroArchFileBrowser, L"RetroArchFileBrowser", XUI_CLASS_SCENE) }; class CRetroArchCoreBrowser: public CXuiSceneImpl { -protected: - CXuiList m_romlist; - CXuiControl m_back; - CXuiTextElement m_rompathtitle; -public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + protected: + CXuiList m_romlist; + CXuiControl m_back; + CXuiTextElement m_rompathtitle; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); - XUI_IMPLEMENT_CLASS(CRetroArchCoreBrowser, L"RetroArchCoreBrowser", XUI_CLASS_SCENE) + XUI_IMPLEMENT_CLASS(CRetroArchCoreBrowser, L"RetroArchCoreBrowser", XUI_CLASS_SCENE) }; class CRetroArchShaderBrowser: public CXuiSceneImpl { -protected: - CXuiList m_shaderlist; - CXuiControl m_back; - CXuiTextElement m_shaderpathtitle; -public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + protected: + CXuiList m_shaderlist; + CXuiControl m_back; + CXuiTextElement m_shaderpathtitle; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); - XUI_IMPLEMENT_CLASS(CRetroArchShaderBrowser, L"RetroArchShaderBrowser", XUI_CLASS_SCENE) + XUI_IMPLEMENT_CLASS(CRetroArchShaderBrowser, L"RetroArchShaderBrowser", XUI_CLASS_SCENE) }; class CRetroArchQuickMenu: public CXuiSceneImpl { -protected: - CXuiList m_quickmenulist; - CXuiControl m_back; -public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + protected: + CXuiList m_quickmenulist; + CXuiControl m_back; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); - XUI_IMPLEMENT_CLASS(CRetroArchQuickMenu, L"RetroArchQuickMenu", XUI_CLASS_SCENE) + XUI_IMPLEMENT_CLASS(CRetroArchQuickMenu, L"RetroArchQuickMenu", XUI_CLASS_SCENE) }; class CRetroArchSettings: public CXuiSceneImpl { -protected: - CXuiList m_settingslist; - CXuiControl m_back; -public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled); + protected: + CXuiList m_settingslist; + CXuiControl m_back; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled); - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); - XUI_IMPLEMENT_CLASS(CRetroArchSettings, L"RetroArchSettings", XUI_CLASS_SCENE) + XUI_IMPLEMENT_CLASS(CRetroArchSettings, L"RetroArchSettings", XUI_CLASS_SCENE) }; class CRetroArchControls: public CXuiSceneImpl { -protected: - CXuiList m_controlslist; - CXuiControl m_back; - CXuiSlider m_controlnoslider; -public: - HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); - HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); - HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled); + protected: + CXuiList m_controlslist; + CXuiControl m_back; + CXuiSlider m_controlnoslider; + public: + HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); + HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled); - XUI_BEGIN_MSG_MAP() - XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) - XUI_END_MSG_MAP(); + XUI_BEGIN_MSG_MAP() + XUI_ON_XM_INIT( OnInit) + XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_END_MSG_MAP(); - XUI_IMPLEMENT_CLASS(CRetroArchControls, L"RetroArchControls", XUI_CLASS_SCENE) + XUI_IMPLEMENT_CLASS(CRetroArchControls, L"RetroArchControls", XUI_CLASS_SCENE) }; int menu_init (void); diff --git a/360/xdk360_video.cpp b/360/xdk360_video.cpp index e329dff198..3390fa8c63 100644 --- a/360/xdk360_video.cpp +++ b/360/xdk360_video.cpp @@ -14,7 +14,6 @@ * If not, see . */ -// Xbox 360-specific headers #ifdef _XBOX #include #include @@ -42,70 +41,70 @@ const DWORD g_MapLinearToSrgbGpuFormat[] = { - GPUTEXTUREFORMAT_1_REVERSE, - GPUTEXTUREFORMAT_1, - GPUTEXTUREFORMAT_8, - GPUTEXTUREFORMAT_1_5_5_5, - GPUTEXTUREFORMAT_5_6_5, - GPUTEXTUREFORMAT_6_5_5, - GPUTEXTUREFORMAT_8_8_8_8_AS_16_16_16_16, - GPUTEXTUREFORMAT_2_10_10_10_AS_16_16_16_16, - GPUTEXTUREFORMAT_8_A, - GPUTEXTUREFORMAT_8_B, - GPUTEXTUREFORMAT_8_8, - GPUTEXTUREFORMAT_Cr_Y1_Cb_Y0_REP, - GPUTEXTUREFORMAT_Y1_Cr_Y0_Cb_REP, - GPUTEXTUREFORMAT_16_16_EDRAM, - GPUTEXTUREFORMAT_8_8_8_8_A, - GPUTEXTUREFORMAT_4_4_4_4, - GPUTEXTUREFORMAT_10_11_11_AS_16_16_16_16, - GPUTEXTUREFORMAT_11_11_10_AS_16_16_16_16, - GPUTEXTUREFORMAT_DXT1_AS_16_16_16_16, - GPUTEXTUREFORMAT_DXT2_3_AS_16_16_16_16, - GPUTEXTUREFORMAT_DXT4_5_AS_16_16_16_16, - GPUTEXTUREFORMAT_16_16_16_16_EDRAM, - GPUTEXTUREFORMAT_24_8, - GPUTEXTUREFORMAT_24_8_FLOAT, - GPUTEXTUREFORMAT_16, - GPUTEXTUREFORMAT_16_16, - GPUTEXTUREFORMAT_16_16_16_16, - GPUTEXTUREFORMAT_16_EXPAND, - GPUTEXTUREFORMAT_16_16_EXPAND, - GPUTEXTUREFORMAT_16_16_16_16_EXPAND, - GPUTEXTUREFORMAT_16_FLOAT, - GPUTEXTUREFORMAT_16_16_FLOAT, - GPUTEXTUREFORMAT_16_16_16_16_FLOAT, - GPUTEXTUREFORMAT_32, - GPUTEXTUREFORMAT_32_32, - GPUTEXTUREFORMAT_32_32_32_32, - GPUTEXTUREFORMAT_32_FLOAT, - GPUTEXTUREFORMAT_32_32_FLOAT, - GPUTEXTUREFORMAT_32_32_32_32_FLOAT, - GPUTEXTUREFORMAT_32_AS_8, - GPUTEXTUREFORMAT_32_AS_8_8, - GPUTEXTUREFORMAT_16_MPEG, - GPUTEXTUREFORMAT_16_16_MPEG, - GPUTEXTUREFORMAT_8_INTERLACED, - GPUTEXTUREFORMAT_32_AS_8_INTERLACED, - GPUTEXTUREFORMAT_32_AS_8_8_INTERLACED, - GPUTEXTUREFORMAT_16_INTERLACED, - GPUTEXTUREFORMAT_16_MPEG_INTERLACED, - GPUTEXTUREFORMAT_16_16_MPEG_INTERLACED, - GPUTEXTUREFORMAT_DXN, - GPUTEXTUREFORMAT_8_8_8_8_AS_16_16_16_16, - GPUTEXTUREFORMAT_DXT1_AS_16_16_16_16, - GPUTEXTUREFORMAT_DXT2_3_AS_16_16_16_16, - GPUTEXTUREFORMAT_DXT4_5_AS_16_16_16_16, - GPUTEXTUREFORMAT_2_10_10_10_AS_16_16_16_16, - GPUTEXTUREFORMAT_10_11_11_AS_16_16_16_16, - GPUTEXTUREFORMAT_11_11_10_AS_16_16_16_16, - GPUTEXTUREFORMAT_32_32_32_FLOAT, - GPUTEXTUREFORMAT_DXT3A, - GPUTEXTUREFORMAT_DXT5A, - GPUTEXTUREFORMAT_CTX1, - GPUTEXTUREFORMAT_DXT3A_AS_1_1_1_1, - GPUTEXTUREFORMAT_8_8_8_8_GAMMA_EDRAM, - GPUTEXTUREFORMAT_2_10_10_10_FLOAT_EDRAM, + GPUTEXTUREFORMAT_1_REVERSE, + GPUTEXTUREFORMAT_1, + GPUTEXTUREFORMAT_8, + GPUTEXTUREFORMAT_1_5_5_5, + GPUTEXTUREFORMAT_5_6_5, + GPUTEXTUREFORMAT_6_5_5, + GPUTEXTUREFORMAT_8_8_8_8_AS_16_16_16_16, + GPUTEXTUREFORMAT_2_10_10_10_AS_16_16_16_16, + GPUTEXTUREFORMAT_8_A, + GPUTEXTUREFORMAT_8_B, + GPUTEXTUREFORMAT_8_8, + GPUTEXTUREFORMAT_Cr_Y1_Cb_Y0_REP, + GPUTEXTUREFORMAT_Y1_Cr_Y0_Cb_REP, + GPUTEXTUREFORMAT_16_16_EDRAM, + GPUTEXTUREFORMAT_8_8_8_8_A, + GPUTEXTUREFORMAT_4_4_4_4, + GPUTEXTUREFORMAT_10_11_11_AS_16_16_16_16, + GPUTEXTUREFORMAT_11_11_10_AS_16_16_16_16, + GPUTEXTUREFORMAT_DXT1_AS_16_16_16_16, + GPUTEXTUREFORMAT_DXT2_3_AS_16_16_16_16, + GPUTEXTUREFORMAT_DXT4_5_AS_16_16_16_16, + GPUTEXTUREFORMAT_16_16_16_16_EDRAM, + GPUTEXTUREFORMAT_24_8, + GPUTEXTUREFORMAT_24_8_FLOAT, + GPUTEXTUREFORMAT_16, + GPUTEXTUREFORMAT_16_16, + GPUTEXTUREFORMAT_16_16_16_16, + GPUTEXTUREFORMAT_16_EXPAND, + GPUTEXTUREFORMAT_16_16_EXPAND, + GPUTEXTUREFORMAT_16_16_16_16_EXPAND, + GPUTEXTUREFORMAT_16_FLOAT, + GPUTEXTUREFORMAT_16_16_FLOAT, + GPUTEXTUREFORMAT_16_16_16_16_FLOAT, + GPUTEXTUREFORMAT_32, + GPUTEXTUREFORMAT_32_32, + GPUTEXTUREFORMAT_32_32_32_32, + GPUTEXTUREFORMAT_32_FLOAT, + GPUTEXTUREFORMAT_32_32_FLOAT, + GPUTEXTUREFORMAT_32_32_32_32_FLOAT, + GPUTEXTUREFORMAT_32_AS_8, + GPUTEXTUREFORMAT_32_AS_8_8, + GPUTEXTUREFORMAT_16_MPEG, + GPUTEXTUREFORMAT_16_16_MPEG, + GPUTEXTUREFORMAT_8_INTERLACED, + GPUTEXTUREFORMAT_32_AS_8_INTERLACED, + GPUTEXTUREFORMAT_32_AS_8_8_INTERLACED, + GPUTEXTUREFORMAT_16_INTERLACED, + GPUTEXTUREFORMAT_16_MPEG_INTERLACED, + GPUTEXTUREFORMAT_16_16_MPEG_INTERLACED, + GPUTEXTUREFORMAT_DXN, + GPUTEXTUREFORMAT_8_8_8_8_AS_16_16_16_16, + GPUTEXTUREFORMAT_DXT1_AS_16_16_16_16, + GPUTEXTUREFORMAT_DXT2_3_AS_16_16_16_16, + GPUTEXTUREFORMAT_DXT4_5_AS_16_16_16_16, + GPUTEXTUREFORMAT_2_10_10_10_AS_16_16_16_16, + GPUTEXTUREFORMAT_10_11_11_AS_16_16_16_16, + GPUTEXTUREFORMAT_11_11_10_AS_16_16_16_16, + GPUTEXTUREFORMAT_32_32_32_FLOAT, + GPUTEXTUREFORMAT_DXT3A, + GPUTEXTUREFORMAT_DXT5A, + GPUTEXTUREFORMAT_CTX1, + GPUTEXTUREFORMAT_DXT3A_AS_1_1_1_1, + GPUTEXTUREFORMAT_8_8_8_8_GAMMA_EDRAM, + GPUTEXTUREFORMAT_2_10_10_10_FLOAT_EDRAM, }; struct XPR_HEADER @@ -149,89 +148,90 @@ void * PackedResource::GetData( const char * strName ) const HRESULT PackedResource::Create( const char * strFilename ) { - unsigned long dwNumBytesRead; - void * hFile = CreateFile( strFilename, GENERIC_READ, FILE_SHARE_READ, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL ); - if( hFile == INVALID_HANDLE_VALUE ) - { - RARCH_ERR( "File <%s> not found.\n", strFilename ); - return E_FAIL; - } + unsigned long dwNumBytesRead; + void * hFile = CreateFile( strFilename, GENERIC_READ, FILE_SHARE_READ, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL ); - // Read in and verify the XPR magic header - XPR_HEADER xprh; - if( !ReadFile( hFile, &xprh, sizeof( XPR_HEADER ), &dwNumBytesRead, NULL ) ) - { - RARCH_ERR( "Error reading XPR header in file <%s>.\n", strFilename ); - CloseHandle( hFile ); - return E_FAIL; - } + if( hFile == INVALID_HANDLE_VALUE ) + { + RARCH_ERR( "File <%s> not found.\n", strFilename ); + return E_FAIL; + } - if( xprh.dwMagic != XPR2_MAGIC_VALUE ) - { - RARCH_ERR( "Invalid Xbox Packed Resource (.xpr) file: Magic = 0x%08lx.\n", xprh.dwMagic ); - CloseHandle( hFile ); - return E_FAIL; - } + // Read in and verify the XPR magic header + XPR_HEADER xprh; + if( !ReadFile( hFile, &xprh, sizeof( XPR_HEADER ), &dwNumBytesRead, NULL ) ) + { + RARCH_ERR( "Error reading XPR header in file <%s>.\n", strFilename ); + CloseHandle( hFile ); + return E_FAIL; + } - // Compute memory requirements - m_dwSysMemDataSize = xprh.dwHeaderSize; - m_dwVidMemDataSize = xprh.dwDataSize; + if( xprh.dwMagic != XPR2_MAGIC_VALUE ) + { + RARCH_ERR( "Invalid Xbox Packed Resource (.xpr) file: Magic = 0x%08lx.\n", xprh.dwMagic ); + CloseHandle( hFile ); + return E_FAIL; + } - // Allocate memory - m_pSysMemData = (unsigned char*)malloc(m_dwSysMemDataSize); - if( m_pSysMemData == NULL ) - { - RARCH_ERR( "Could not allocate system memory.\n" ); - m_dwSysMemDataSize = 0; - return E_FAIL; - } - m_pVidMemData = ( unsigned char* )XMemAlloc( m_dwVidMemDataSize, MAKE_XALLOC_ATTRIBUTES( 0, 0, 0, 0, eXALLOCAllocatorId_GameMax, - XALLOC_PHYSICAL_ALIGNMENT_4K, XALLOC_MEMPROTECT_WRITECOMBINE, 0, XALLOC_MEMTYPE_PHYSICAL ) ); + // Compute memory requirements + m_dwSysMemDataSize = xprh.dwHeaderSize; + m_dwVidMemDataSize = xprh.dwDataSize; - if( m_pVidMemData == NULL ) - { - RARCH_ERR( "Could not allocate physical memory.\n" ); - m_dwSysMemDataSize = 0; - m_dwVidMemDataSize = 0; - free(m_pSysMemData); - m_pSysMemData = NULL; - return E_FAIL; - } + // Allocate memory + m_pSysMemData = (unsigned char*)malloc(m_dwSysMemDataSize); + if( m_pSysMemData == NULL ) + { + RARCH_ERR( "Could not allocate system memory.\n" ); + m_dwSysMemDataSize = 0; + return E_FAIL; + } + m_pVidMemData = ( unsigned char* )XMemAlloc( m_dwVidMemDataSize, MAKE_XALLOC_ATTRIBUTES( 0, 0, 0, 0, eXALLOCAllocatorId_GameMax, + XALLOC_PHYSICAL_ALIGNMENT_4K, XALLOC_MEMPROTECT_WRITECOMBINE, 0, XALLOC_MEMTYPE_PHYSICAL ) ); - // Read in the data from the file - if( !ReadFile( hFile, m_pSysMemData, m_dwSysMemDataSize, &dwNumBytesRead, NULL ) || - !ReadFile( hFile, m_pVidMemData, m_dwVidMemDataSize, &dwNumBytesRead, NULL ) ) - { - RARCH_ERR( "Unable to read Xbox Packed Resource (.xpr) file.\n" ); - CloseHandle( hFile ); - return E_FAIL; - } + if( m_pVidMemData == NULL ) + { + RARCH_ERR( "Could not allocate physical memory.\n" ); + m_dwSysMemDataSize = 0; + m_dwVidMemDataSize = 0; + free(m_pSysMemData); + m_pSysMemData = NULL; + return E_FAIL; + } - // Done with the file - CloseHandle( hFile ); + // Read in the data from the file + if( !ReadFile( hFile, m_pSysMemData, m_dwSysMemDataSize, &dwNumBytesRead, NULL ) || + !ReadFile( hFile, m_pVidMemData, m_dwVidMemDataSize, &dwNumBytesRead, NULL ) ) + { + RARCH_ERR( "Unable to read Xbox Packed Resource (.xpr) file.\n" ); + CloseHandle( hFile ); + return E_FAIL; + } - // Extract resource table from the header data - m_dwNumResourceTags = *( unsigned long * )( m_pSysMemData + 0 ); - m_pResourceTags = ( RESOURCE* )( m_pSysMemData + 4 ); + // Done with the file + CloseHandle( hFile ); - // Patch up the resources - for( unsigned long i = 0; i < m_dwNumResourceTags; i++ ) - { - m_pResourceTags[i].strName = ( char * )( m_pSysMemData + ( unsigned long )m_pResourceTags[i].strName ); + // Extract resource table from the header data + m_dwNumResourceTags = *( unsigned long * )( m_pSysMemData + 0 ); + m_pResourceTags = ( RESOURCE* )( m_pSysMemData + 4 ); - // Fixup the texture memory - if( ( m_pResourceTags[i].dwType & 0xffff0000 ) == ( RESOURCETYPE_TEXTURE & 0xffff0000 ) ) - { - D3DTexture* pTexture = ( D3DTexture* )&m_pSysMemData[m_pResourceTags[i].dwOffset]; - // Adjust Base address according to where memory was allocated - XGOffsetBaseTextureAddress( pTexture, m_pVidMemData, m_pVidMemData ); - } - } + // Patch up the resources + for( unsigned long i = 0; i < m_dwNumResourceTags; i++ ) + { + m_pResourceTags[i].strName = ( char * )( m_pSysMemData + ( unsigned long )m_pResourceTags[i].strName ); - m_bInitialized = TRUE; + // Fixup the texture memory + if( ( m_pResourceTags[i].dwType & 0xffff0000 ) == ( RESOURCETYPE_TEXTURE & 0xffff0000 ) ) + { + D3DTexture* pTexture = ( D3DTexture* )&m_pSysMemData[m_pResourceTags[i].dwOffset]; + // Adjust Base address according to where memory was allocated + XGOffsetBaseTextureAddress( pTexture, m_pVidMemData, m_pVidMemData ); + } + } - return 0; + m_bInitialized = TRUE; + + return 0; } void PackedResource::Destroy() @@ -241,8 +241,8 @@ void PackedResource::Destroy() m_dwSysMemDataSize = 0L; if( m_pVidMemData != NULL ) - XMemFree( m_pVidMemData, MAKE_XALLOC_ATTRIBUTES( 0, 0, 0, 0, eXALLOCAllocatorId_GameMax, - 0, 0, 0, XALLOC_MEMTYPE_PHYSICAL ) ); + XMemFree( m_pVidMemData, MAKE_XALLOC_ATTRIBUTES( 0, 0, 0, 0, eXALLOCAllocatorId_GameMax, + 0, 0, 0, XALLOC_MEMTYPE_PHYSICAL ) ); m_pVidMemData = NULL; m_dwVidMemDataSize = 0L; @@ -295,7 +295,7 @@ static void xdk360_set_viewport(bool force_full) xdk360_video_t *d3d9 = (xdk360_video_t*)driver.video_data; d3d9->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, - 0xff000000, 1.0f, 0); + 0xff000000, 1.0f, 0); int width = d3d9->video_mode.fIsHiDef ? 1280 : 640; int height = d3d9->video_mode.fIsHiDef ? 720 : 480; @@ -319,7 +319,7 @@ static void xdk360_set_viewport(bool force_full) // If the aspect ratios of screen and desired aspect ratio are sufficiently equal (floating point stuff), if(g_console.aspect_ratio_index == ASPECT_RATIO_CUSTOM) { - delta = (desired_aspect / device_aspect - 1.0) / 2.0 + 0.5; + delta = (desired_aspect / device_aspect - 1.0) / 2.0 + 0.5; m_viewport_x_temp = g_console.viewports.custom_vp.x; m_viewport_y_temp = g_console.viewports.custom_vp.y; m_viewport_width_temp = g_console.viewports.custom_vp.width; @@ -368,7 +368,7 @@ static void xdk360_set_rotation(void * data, unsigned orientation) { case ORIENTATION_NORMAL: angle = M_PI * 0 / 180; - break; + break; case ORIENTATION_VERTICAL: angle = M_PI * 270 / 180; break; @@ -459,6 +459,7 @@ static void *xdk360_init(const video_info_t *video, const input_driver_t **input d3d9->d3dpp.BackBufferWidth = d3d9->video_mode.fIsHiDef ? 1280 : 640; d3d9->d3dpp.BackBufferHeight = d3d9->video_mode.fIsHiDef ? 720 : 480; + if(g_console.gamma_correction_enable) { d3d9->d3dpp.BackBufferFormat = g_console.color_format ? (D3DFORMAT)MAKESRGBFMT(D3DFMT_A8R8G8B8) : (D3DFORMAT)MAKESRGBFMT(D3DFMT_LIN_A1R5G5B5); @@ -646,7 +647,7 @@ static bool xdk360_frame(void *data, const void *frame, if(d3d9->fbo_enabled) { d3d9->d3d_render_device->Resolve(D3DRESOLVE_RENDERTARGET0, NULL, d3d9->lpTexture_ot, - NULL, 0, 0, NULL, 0, 0, NULL); + NULL, 0, 0, NULL, 0, 0, NULL); d3d9->d3d_render_device->SetRenderTarget(0, pRenderTarget0); pRenderTarget0->Release(); @@ -708,11 +709,6 @@ static bool xdk360_focus(void *data) return gfx_ctx_window_has_focus(); } -// 360 needs a working graphics stack before RetroArch even starts. -// To deal with this main.c, -// the top level module owns the instance, and is created beforehand. -// When RetroArch gets around to init it, it is already allocated. -// When RetroArch wants to free it, it is ignored. static void xdk360_start(void) { video_info_t video_info = {0}; diff --git a/360/xdk360_video_resources.h b/360/xdk360_video_resources.h index 4196e3cb1f..bd75bb7140 100644 --- a/360/xdk360_video_resources.h +++ b/360/xdk360_video_resources.h @@ -19,11 +19,6 @@ #ifndef RARCH_360_RESOURCES_H #define RARCH_360_RESOURCES_H -//-------------------------------------------------------------------------------------- -// Name tag for resources. An app may initialize this structure, and pass -// it to the resource's Create() function. From then on, the app may call -// GetResource() to retrieve a resource using an ascii name. -//-------------------------------------------------------------------------------------- struct RESOURCE { unsigned long dwType; @@ -50,73 +45,74 @@ enum //-------------------------------------------------------------------------------------- class PackedResource { -protected: - unsigned char * m_pSysMemData; // Alloc'ed memory for resource headers etc. - unsigned long m_dwSysMemDataSize; + protected: + unsigned char * m_pSysMemData; // Alloc'ed memory for resource headers etc. + unsigned long m_dwSysMemDataSize; - unsigned char * m_pVidMemData; // Alloc'ed memory for resource data, etc. - unsigned long m_dwVidMemDataSize; + unsigned char * m_pVidMemData; // Alloc'ed memory for resource data, etc. + unsigned long m_dwVidMemDataSize; - RESOURCE* m_pResourceTags; // Tags to associate names with the resources - unsigned long m_dwNumResourceTags; // Number of resource tags -public: - int m_bInitialized; // Resource is fully initialized - HRESULT Create( const char * strFilename ); - void Destroy(); - D3DResource* RegisterResource( D3DResource* pResource ) const - { - return pResource; - } + RESOURCE* m_pResourceTags; // Tags to associate names with the resources + unsigned long m_dwNumResourceTags; // Number of resource tags + public: + int m_bInitialized; // Resource is fully initialized + HRESULT Create( const char * strFilename ); + void Destroy(); - void * GetData( unsigned long dwOffset ) const - { - return &m_pSysMemData[dwOffset]; - } + D3DResource* RegisterResource( D3DResource* pResource ) const + { + return pResource; + } - D3DResource* GetResource( unsigned long dwOffset ) const - { - return (( D3DResource* )GetData( dwOffset ) ); - } + void * GetData( unsigned long dwOffset ) const + { + return &m_pSysMemData[dwOffset]; + } - D3DTexture* GetTexture( unsigned long dwOffset ) const - { - return ( D3DTexture* )GetResource( dwOffset ); - } + D3DResource* GetResource( unsigned long dwOffset ) const + { + return (( D3DResource* )GetData( dwOffset ) ); + } - D3DArrayTexture* GetArrayTexture( unsigned long dwOffset ) const - { - return ( D3DArrayTexture* )GetResource( dwOffset ); - } + D3DTexture* GetTexture( unsigned long dwOffset ) const + { + return ( D3DTexture* )GetResource( dwOffset ); + } - D3DVertexBuffer* GetVertexBuffer( unsigned long dwOffset ) const - { - return ( D3DVertexBuffer* )GetResource( dwOffset ); - } + D3DArrayTexture* GetArrayTexture( unsigned long dwOffset ) const + { + return ( D3DArrayTexture* )GetResource( dwOffset ); + } - void * GetData( const char * strName ) const; + D3DVertexBuffer* GetVertexBuffer( unsigned long dwOffset ) const + { + return ( D3DVertexBuffer* )GetResource( dwOffset ); + } - D3DResource* GetResource( const char * strName ) const - { - return ( ( D3DResource* )GetData( strName ) ); - } + void * GetData( const char * strName ) const; - D3DTexture* GetTexture( const char * strName ) const - { - return ( D3DTexture* )GetResource( strName ); - } + D3DResource* GetResource( const char * strName ) const + { + return ( ( D3DResource* )GetData( strName ) ); + } - D3DArrayTexture* GetArrayTexture( const char * strName ) const - { - return ( D3DArrayTexture* )GetResource( strName ); - } + D3DTexture* GetTexture( const char * strName ) const + { + return ( D3DTexture* )GetResource( strName ); + } - D3DVertexBuffer* GetVertexBuffer( const char * strName ) const - { - return ( D3DVertexBuffer* )GetResource( strName ); - } + D3DArrayTexture* GetArrayTexture( const char * strName ) const + { + return ( D3DArrayTexture* )GetResource( strName ); + } - PackedResource(); - ~PackedResource(); + D3DVertexBuffer* GetVertexBuffer( const char * strName ) const + { + return ( D3DVertexBuffer* )GetResource( strName ); + } + + PackedResource(); + ~PackedResource(); }; #endif diff --git a/ps3/menu-entries.h b/ps3/menu-entries.h index 44f11df7a9..8968bd581e 100644 --- a/ps3/menu-entries.h +++ b/ps3/menu-entries.h @@ -103,679 +103,678 @@ static item items_generalsettings[MAX_NO_OF_CONTROLS_SETTINGS] = 1 }, { - SETTING_HW_TEXTURE_FILTER, - "Hardware Filtering shader #1", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Hardware filtering is set to 'Bilinear filtering' for [Shader #1].", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 1, - 1 + SETTING_HW_TEXTURE_FILTER, + "Hardware Filtering shader #1", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Hardware filtering is set to 'Bilinear filtering' for [Shader #1].", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 1, + 1 }, { - SETTING_HW_TEXTURE_FILTER_2, - "Hardware Filtering shader #2", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Hardware filtering is set to 'Bilinear filtering' for [Shader #2].", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 1, - 1 + SETTING_HW_TEXTURE_FILTER_2, + "Hardware Filtering shader #2", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Hardware filtering is set to 'Bilinear filtering' for [Shader #2].", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 1, + 1 }, { - SETTING_SCALE_ENABLED, - "Custom Scaling/Dual Shaders", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - [Custom Scaling] is set to 'ON' - 2x shaders will look much\nbetter, and you can select a shader for [Shader #2].", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 1, - 1 + SETTING_SCALE_ENABLED, + "Custom Scaling/Dual Shaders", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Custom Scaling] is set to 'ON' - 2x shaders will look much\nbetter, and you can select a shader for [Shader #2].", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 1, + 1 }, { - SETTING_SCALE_FACTOR, - "Custom Scaling Factor", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - [Custom Scaling Factor] is set to '2x'.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 2, - 1 + SETTING_SCALE_FACTOR, + "Custom Scaling Factor", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Custom Scaling Factor] is set to '2x'.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 2, + 1 }, { - SETTING_HW_OVERSCAN_AMOUNT, - "Overscan", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Adjust or decrease [Overscan]. Set this to higher than 0.000\nif the screen doesn't fit on your TV/monitor.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_HW_OVERSCAN_AMOUNT, + "Overscan", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Adjust or decrease [Overscan]. Set this to higher than 0.000\nif the screen doesn't fit on your TV/monitor.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_THROTTLE_MODE, - "Throttle Mode", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - [Throttle Mode] is set to 'ON' - VSync is enabled and sound\nis turned on.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 1, - 1 + SETTING_THROTTLE_MODE, + "Throttle Mode", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Throttle Mode] is set to 'ON' - VSync is enabled and sound\nis turned on.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 1, + 1 }, { - SETTING_TRIPLE_BUFFERING, - "Triple Buffering", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - [Triple Buffering] is set to 'ON' - faster graphics/shaders at\nthe possible expense of input lag.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 1, - 1 + SETTING_TRIPLE_BUFFERING, + "Triple Buffering", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Triple Buffering] is set to 'ON' - faster graphics/shaders at\nthe possible expense of input lag.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 1, + 1 }, { - SETTING_ENABLE_SCREENSHOTS, - "Enable Screenshots Feature", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - [Enable Screenshots] feature is set to 'OFF'.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 1, - 1 + SETTING_ENABLE_SCREENSHOTS, + "Enable Screenshots Feature", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Enable Screenshots] feature is set to 'OFF'.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 1, + 1 }, { - SETTING_SAVE_SHADER_PRESET, - "SAVE SETTINGS AS CGP PRESET ", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Save the current video settings to a [CG Preset] (CGP) file.", - GREEN, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_SAVE_SHADER_PRESET, + "SAVE SETTINGS AS CGP PRESET ", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Save the current video settings to a [CG Preset] (CGP) file.", + GREEN, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_APPLY_SHADER_PRESET_ON_STARTUP, - "APPLY SHADER PRESET ON STARTUP", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Automatically load the currently selected [CG Preset] file on startup.", - GREEN, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_APPLY_SHADER_PRESET_ON_STARTUP, + "APPLY SHADER PRESET ON STARTUP", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Automatically load the currently selected [CG Preset] file on startup.", + GREEN, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_DEFAULT_VIDEO_ALL, - "DEFAULT", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Set all [General Video Settings] back to their 'DEFAULT' values.", - GREEN, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_DEFAULT_VIDEO_ALL, + "DEFAULT", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Set all [General Video Settings] back to their 'DEFAULT' values.", + GREEN, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_SOUND_MODE, - "Sound Output", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - [Sound Output] is set to 'Normal' - normal audio output will be\nused.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_SOUND_MODE, + "Sound Output", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Sound Output] is set to 'Normal' - normal audio output will be\nused.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_RSOUND_SERVER_IP_ADDRESS, - "RSound Audio Server IP Address", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Enter the IP Address of the [RSound Audio Server]. IP address\nmust be an IPv4 32-bits address, eg: '192.168.1.7'.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_RSOUND_SERVER_IP_ADDRESS, + "RSound Audio Server IP Address", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Enter the IP Address of the [RSound Audio Server]. IP address\nmust be an IPv4 32-bits address, eg: '192.168.1.7'.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_ENABLE_CUSTOM_BGM, - "Enable Custom BGM Feature", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - [Enable Custom BGM] feature is set to 'ON'.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 1, - 1 + SETTING_ENABLE_CUSTOM_BGM, + "Enable Custom BGM Feature", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Enable Custom BGM] feature is set to 'ON'.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 1, + 1 }, { - SETTING_DEFAULT_AUDIO_ALL, - "DEFAULT", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Set all [General Audio Settings] back to their 'DEFAULT' values.", - GREEN, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_DEFAULT_AUDIO_ALL, + "DEFAULT", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Set all [General Audio Settings] back to their 'DEFAULT' values.", + GREEN, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_EMU_CURRENT_SAVE_STATE_SLOT, - "Current save state slot", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Set the current savestate slot (can also be configured ingame).", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_EMU_CURRENT_SAVE_STATE_SLOT, + "Current save state slot", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Set the current savestate slot (can also be configured ingame).", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_EMU_SHOW_INFO_MSG, - "Info messages", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Show onscreen info messages in the menu.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_EMU_SHOW_INFO_MSG, + "Info messages", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Show onscreen info messages in the menu.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_RARCH_DEFAULT_EMU, - "Default emulator core", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Select a default emulator core to launch at start-up.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_RARCH_DEFAULT_EMU, + "Default emulator core", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Select a default emulator core to launch at start-up.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_EMU_DEFAULT_ALL, - "DEFAULT", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Set [all RetroArch settings] back to their 'DEFAULT' values.", - GREEN, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_EMU_DEFAULT_ALL, + "DEFAULT", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Set [all RetroArch settings] back to their 'DEFAULT' values.", + GREEN, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_EMU_REWIND_ENABLED, - "Rewind", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - [Rewind] feature is set to 'OFF'.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_EMU_REWIND_ENABLED, + "Rewind", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Rewind] feature is set to 'OFF'.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_EMU_VIDEO_DEFAULT_ALL, - "DEFAULT", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Set [all RetroArch Video settings] back to their 'DEFAULT' values.", - GREEN, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_EMU_VIDEO_DEFAULT_ALL, + "DEFAULT", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Set [all RetroArch Video settings] back to their 'DEFAULT' values.", + GREEN, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_EMU_AUDIO_MUTE, - "Mute Audio", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - [Mute Audio] is set to 'OFF'.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 + SETTING_EMU_AUDIO_MUTE, + "Mute Audio", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Mute Audio] is set to 'OFF'.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_EMU_AUDIO_DEFAULT_ALL, - "DEFAULT", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Set [all RetroArch Audio settings] back to their 'DEFAULT' values.", - GREEN, - 0.91f, - 0.09f, - 0.83f, - 0, - 1 - }, - /* end of port-specific */ - { - SETTING_PATH_DEFAULT_ROM_DIRECTORY, - "Startup ROM Directory", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Set the default [Startup ROM directory]. NOTE: You will have to\nrestart the emulator for this change to have any effect.", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_EMU_AUDIO_DEFAULT_ALL, + "DEFAULT", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Set [all RetroArch Audio settings] back to their 'DEFAULT' values.", + GREEN, + 0.91f, + 0.09f, + 0.83f, + 0, + 1 }, { - SETTING_PATH_SAVESTATES_DIRECTORY, - "Savestate Directory", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Set the default path where all the savestate files will be saved to.", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_PATH_DEFAULT_ROM_DIRECTORY, + "Startup ROM Directory", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Set the default [Startup ROM directory]. NOTE: You will have to\nrestart the emulator for this change to have any effect.", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_PATH_SRAM_DIRECTORY, - "SRAM Directory", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Set the default SRAM (SaveRAM) directory path. All the\nbattery backup saves will be stored in this directory.", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_PATH_SAVESTATES_DIRECTORY, + "Savestate Directory", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Set the default path where all the savestate files will be saved to.", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_PATH_CHEATS, - "Cheatfile Directory", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Set the default [Cheatfile directory] path. All CHT (cheat) files\nwill be stored here.", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_PATH_SRAM_DIRECTORY, + "SRAM Directory", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Set the default SRAM (SaveRAM) directory path. All the\nbattery backup saves will be stored in this directory.", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_ENABLE_SRAM_PATH, - "Custom SRAM Dir Path", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - [Custom SRAM Dir Path] feature is set to 'OFF'.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 1, - 1 + SETTING_PATH_CHEATS, + "Cheatfile Directory", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Set the default [Cheatfile directory] path. All CHT (cheat) files\nwill be stored here.", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_ENABLE_STATE_PATH, - "Custom Save State Dir Path", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - [Custom Save State Dir Path] feature is set to 'OFF'.", - WHITE, - 0.91f, - 0.09f, - 0.83f, - 1, - 1 + SETTING_ENABLE_SRAM_PATH, + "Custom SRAM Dir Path", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Custom SRAM Dir Path] feature is set to 'OFF'.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 1, + 1 }, { - SETTING_PATH_DEFAULT_ALL, - "DEFAULT", - "", - 0.0f, - 0.0f, - YELLOW, - "INFO - Set [all Path settings] back to their 'DEFAULT' values.", - GREEN, - 0.91f, - 0.09f, - 0.83f, + SETTING_ENABLE_STATE_PATH, + "Custom Save State Dir Path", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - [Custom Save State Dir Path] feature is set to 'OFF'.", + WHITE, + 0.91f, + 0.09f, + 0.83f, + 1, + 1 }, { - SETTING_CONTROLS_SCHEME, - "Control Scheme Preset", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_PATH_DEFAULT_ALL, + "DEFAULT", + "", + 0.0f, + 0.0f, + YELLOW, + "INFO - Set [all Path settings] back to their 'DEFAULT' values.", + GREEN, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_NUMBER, - "Controller No", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_SCHEME, + "Control Scheme Preset", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_B, - "B Button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_NUMBER, + "Controller No", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_Y, - "Y Button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_B, + "B Button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_SELECT, - "Select button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_Y, + "Y Button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_START, - "Start button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_SELECT, + "Select button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_UP, - "D-Pad Up", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_START, + "Start button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_DOWN, - "D-Pad Down", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_UP, + "D-Pad Up", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_LEFT, - "D-Pad Left", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_DOWN, + "D-Pad Down", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_RIGHT, - "D-Pad Right", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_LEFT, + "D-Pad Left", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_A, - "A Button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_RIGHT, + "D-Pad Right", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_X, - "X Button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_A, + "A Button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L, - "L Button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_X, + "X Button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R, - "R Button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L, + "L Button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L2, - "L2 Button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R, + "R Button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R2, - "R2 Button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L2, + "L2 Button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L3, - "L3 Button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R2, + "R2 Button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { - SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R3, - "R3 Button", - "", - 0.0f, - 0.0f, - YELLOW, - "", - WHITE, - 0.91f, - 0.09f, - 0.83f, + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_L3, + "L3 Button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, + }, + { + SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_R3, + "R3 Button", + "", + 0.0f, + 0.0f, + YELLOW, + "", + WHITE, + 0.91f, + 0.09f, + 0.83f, }, { SETTING_CONTROLS_SAVE_CUSTOM_CONTROLS, diff --git a/ps3/menu.c b/ps3/menu.c index 3cb860e55e..b11b1b8268 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -318,9 +318,7 @@ static void browser_update(filebrowser_t * b) } if (CTRL_CIRCLE(button_was_pressed)) - { filebrowser_pop_directory(b); - } old_state = state; } @@ -355,45 +353,45 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting) { case SETTING_CHANGE_RESOLUTION: if(g_console.initial_resolution_id == g_console.supported_resolutions[g_console.current_resolution_index]) - menu_obj->items[currentsetting].text_color = GREEN; + menu_obj->items[currentsetting].text_color = GREEN; else - menu_obj->items[currentsetting].text_color = ORANGE; + menu_obj->items[currentsetting].text_color = ORANGE; snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), ps3_get_resolution_label(g_console.supported_resolutions[g_console.current_resolution_index])); break; case SETTING_SHADER_PRESETS: { - char fname[PATH_MAX]; - if(g_console.cgp_path == DEFAULT_PRESET_FILE) - menu_obj->items[currentsetting].text_color = GREEN; - else - menu_obj->items[currentsetting].text_color = ORANGE; - fill_pathname_base(fname, g_console.cgp_path, sizeof(fname)); - snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), fname); + char fname[PATH_MAX]; + if(g_console.cgp_path == DEFAULT_PRESET_FILE) + menu_obj->items[currentsetting].text_color = GREEN; + else + menu_obj->items[currentsetting].text_color = ORANGE; + fill_pathname_base(fname, g_console.cgp_path, sizeof(fname)); + snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), fname); } break; case SETTING_SHADER: { - char fname[PATH_MAX]; - fill_pathname_base(fname, g_settings.video.cg_shader_path, sizeof(fname)); - snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "%s", fname); + char fname[PATH_MAX]; + fill_pathname_base(fname, g_settings.video.cg_shader_path, sizeof(fname)); + snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "%s", fname); - if(strcmp(g_settings.video.cg_shader_path,DEFAULT_SHADER_FILE) == 0) - menu_obj->items[currentsetting].text_color = GREEN; - else - menu_obj->items[currentsetting].text_color = ORANGE; + if(strcmp(g_settings.video.cg_shader_path,DEFAULT_SHADER_FILE) == 0) + menu_obj->items[currentsetting].text_color = GREEN; + else + menu_obj->items[currentsetting].text_color = ORANGE; } break; case SETTING_SHADER_2: { - char fname[PATH_MAX]; - fill_pathname_base(fname, g_settings.video.second_pass_shader, sizeof(fname)); - snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "%s", fname); + char fname[PATH_MAX]; + fill_pathname_base(fname, g_settings.video.second_pass_shader, sizeof(fname)); + snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "%s", fname); - if(strcmp(g_settings.video.second_pass_shader,DEFAULT_SHADER_FILE) == 0) - menu_obj->items[currentsetting].text_color = GREEN; - else - menu_obj->items[currentsetting].text_color = ORANGE; + if(strcmp(g_settings.video.second_pass_shader,DEFAULT_SHADER_FILE) == 0) + menu_obj->items[currentsetting].text_color = GREEN; + else + menu_obj->items[currentsetting].text_color = ORANGE; } break; case SETTING_FONT_SIZE: @@ -737,15 +735,15 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting) break; case SETTING_CONTROLS_SAVE_CUSTOM_CONTROLS: if(menu_obj->selected == currentsetting) - menu_obj->items[currentsetting].text_color = GREEN; + menu_obj->items[currentsetting].text_color = GREEN; else - menu_obj->items[currentsetting].text_color = ORANGE; + menu_obj->items[currentsetting].text_color = ORANGE; break; case SETTING_CONTROLS_DEFAULT_ALL: if(menu_obj->selected == currentsetting) - menu_obj->items[currentsetting].text_color = GREEN; + menu_obj->items[currentsetting].text_color = GREEN; else - menu_obj->items[currentsetting].text_color = ORANGE; + menu_obj->items[currentsetting].text_color = ORANGE; break; default: break; @@ -888,9 +886,7 @@ static void select_file(uint32_t menu_id) /*if 'filename' is in fact '..' - then pop back directory instead of adding '..' to filename path */ if(tmpBrowser.currently_selected == 0) - { filebrowser_pop_directory(&tmpBrowser); - } else { separatorslash = (strcmp(FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmpBrowser),"/") == 0) ? "" : "/"; @@ -972,8 +968,8 @@ static void select_directory(uint32_t menu_id) if(set_initial_dir_tmpbrowser) { - filebrowser_new(&tmpBrowser, "/\0", "empty"); - set_initial_dir_tmpbrowser = false; + filebrowser_new(&tmpBrowser, "/\0", "empty"); + set_initial_dir_tmpbrowser = false; } browser_update(&tmpBrowser); @@ -1036,9 +1032,7 @@ static void select_directory(uint32_t menu_id) * adding '..' to filename path */ if(tmpBrowser.currently_selected == 0) - { filebrowser_pop_directory(&tmpBrowser); - } else { separatorslash = (strcmp(FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmpBrowser),"/") == 0) ? "" : "/"; @@ -1173,29 +1167,29 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_CHANGE_RESOLUTION: if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) ) { - ps3_next_resolution(); - set_delay = DELAY_SMALL; + ps3_next_resolution(); + set_delay = DELAY_SMALL; } if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) ) { - ps3_previous_resolution(); - set_delay = DELAY_SMALL; + ps3_previous_resolution(); + set_delay = DELAY_SMALL; } if(CTRL_CROSS(state)) { - if (g_console.supported_resolutions[g_console.current_resolution_index] == CELL_VIDEO_OUT_RESOLUTION_576) - { - if(ps3_check_resolution(CELL_VIDEO_OUT_RESOLUTION_576)) - { - //ps3graphics_set_pal60hz(Settings.PS3PALTemporalMode60Hz); - video_gl.restart(); - } - } - else - { - //ps3graphics_set_pal60hz(0); - video_gl.restart(); - } + if (g_console.supported_resolutions[g_console.current_resolution_index] == CELL_VIDEO_OUT_RESOLUTION_576) + { + if(ps3_check_resolution(CELL_VIDEO_OUT_RESOLUTION_576)) + { + //ps3graphics_set_pal60hz(Settings.PS3PALTemporalMode60Hz); + video_gl.restart(); + } + } + else + { + //ps3graphics_set_pal60hz(0); + video_gl.restart(); + } } break; /* @@ -1235,35 +1229,35 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_SHADER: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - menuStackindex++; - menuStack[menuStackindex] = menu_filebrowser; - menuStack[menuStackindex].enum_id = SHADER_CHOICE; - set_shader = 0; - set_initial_dir_tmpbrowser = true; - set_delay = DELAY_LONG; + menuStackindex++; + menuStack[menuStackindex] = menu_filebrowser; + menuStack[menuStackindex].enum_id = SHADER_CHOICE; + set_shader = 0; + set_initial_dir_tmpbrowser = true; + set_delay = DELAY_LONG; } if(CTRL_START(state)) { - gl_cg_load_shader(1, NULL); - strlcpy(g_settings.video.cg_shader_path, DEFAULT_SHADER_FILE, sizeof(g_settings.video.cg_shader_path)); - menu_reinit_settings(); + gl_cg_load_shader(1, NULL); + strlcpy(g_settings.video.cg_shader_path, DEFAULT_SHADER_FILE, sizeof(g_settings.video.cg_shader_path)); + menu_reinit_settings(); } break; case SETTING_SHADER_2: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - menuStackindex++; - menuStack[menuStackindex] = menu_filebrowser; - menuStack[menuStackindex].enum_id = SHADER_CHOICE; - set_shader = 1; - set_initial_dir_tmpbrowser = true; - set_delay = DELAY_LONG; + menuStackindex++; + menuStack[menuStackindex] = menu_filebrowser; + menuStack[menuStackindex].enum_id = SHADER_CHOICE; + set_shader = 1; + set_initial_dir_tmpbrowser = true; + set_delay = DELAY_LONG; } if(CTRL_START(state)) { - gl_cg_load_shader(2, NULL); - strlcpy(g_settings.video.second_pass_shader, DEFAULT_SHADER_FILE, sizeof(g_settings.video.second_pass_shader)); - menu_reinit_settings(); + gl_cg_load_shader(2, NULL); + strlcpy(g_settings.video.second_pass_shader, DEFAULT_SHADER_FILE, sizeof(g_settings.video.second_pass_shader)); + menu_reinit_settings(); } break; case SETTING_FONT_SIZE: @@ -1356,35 +1350,35 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_SCALE_FACTOR: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state)) { - if(g_console.fbo_enabled) - { - bool should_decrement = g_settings.video.fbo_scale_x > MIN_SCALING_FACTOR; - if(should_decrement) - { - rarch_settings_change(S_SCALE_FACTOR_DECREMENT); - apply_scaling(FBO_REINIT); - set_delay = DELAY_MEDIUM; - } - } + if(g_console.fbo_enabled) + { + bool should_decrement = g_settings.video.fbo_scale_x > MIN_SCALING_FACTOR; + if(should_decrement) + { + rarch_settings_change(S_SCALE_FACTOR_DECREMENT); + apply_scaling(FBO_REINIT); + set_delay = DELAY_MEDIUM; + } + } } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - if(g_console.fbo_enabled) - { - bool should_increment = g_settings.video.fbo_scale_x < MAX_SCALING_FACTOR; - if(should_increment) - { - rarch_settings_change(S_SCALE_FACTOR_INCREMENT); - apply_scaling(FBO_REINIT); - set_delay = DELAY_MEDIUM; - } - } + if(g_console.fbo_enabled) + { + bool should_increment = g_settings.video.fbo_scale_x < MAX_SCALING_FACTOR; + if(should_increment) + { + rarch_settings_change(S_SCALE_FACTOR_INCREMENT); + apply_scaling(FBO_REINIT); + set_delay = DELAY_MEDIUM; + } + } } if(CTRL_START(state)) { - rarch_settings_default(S_DEF_SCALE_FACTOR); - apply_scaling(FBO_DEINIT); - apply_scaling(FBO_INIT); + rarch_settings_default(S_DEF_SCALE_FACTOR); + apply_scaling(FBO_DEINIT); + apply_scaling(FBO_INIT); } break; case SETTING_HW_OVERSCAN_AMOUNT: @@ -1440,37 +1434,37 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { #if(CELL_SDK_VERSION > 0x340000) - g_console.screenshots_enable = !g_console.screenshots_enable; - if(g_console.screenshots_enable) - { - cellSysmoduleLoadModule(CELL_SYSMODULE_SYSUTIL_SCREENSHOT); - CellScreenShotSetParam screenshot_param = {0, 0, 0, 0}; + g_console.screenshots_enable = !g_console.screenshots_enable; + if(g_console.screenshots_enable) + { + cellSysmoduleLoadModule(CELL_SYSMODULE_SYSUTIL_SCREENSHOT); + CellScreenShotSetParam screenshot_param = {0, 0, 0, 0}; - screenshot_param.photo_title = EMULATOR_NAME; - screenshot_param.game_title = EMULATOR_NAME; - cellScreenShotSetParameter (&screenshot_param); - cellScreenShotEnable(); - } - else - { - cellScreenShotDisable(); - cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_SCREENSHOT); - } + screenshot_param.photo_title = EMULATOR_NAME; + screenshot_param.game_title = EMULATOR_NAME; + cellScreenShotSetParameter (&screenshot_param); + cellScreenShotEnable(); + } + else + { + cellScreenShotDisable(); + cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_SCREENSHOT); + } - set_delay = DELAY_MEDIUM; + set_delay = DELAY_MEDIUM; #endif } if(CTRL_START(state)) { #if(CELL_SDK_VERSION > 0x340000) - g_console.screenshots_enable = true; + g_console.screenshots_enable = true; #endif } break; case SETTING_SAVE_SHADER_PRESET: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) | CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - rarch_filename_input_and_save(SHADER_PRESET_FILE); + rarch_filename_input_and_save(SHADER_PRESET_FILE); } break; case SETTING_APPLY_SHADER_PRESET_ON_STARTUP: @@ -1480,58 +1474,54 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_SOUND_MODE: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state)) { - if(g_console.sound_mode != SOUND_MODE_NORMAL) - { - g_console.sound_mode--; - set_delay = DELAY_MEDIUM; - } + if(g_console.sound_mode != SOUND_MODE_NORMAL) + { + g_console.sound_mode--; + set_delay = DELAY_MEDIUM; + } } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - if(g_console.sound_mode < SOUND_MODE_HEADSET) - { - g_console.sound_mode++; - set_delay = DELAY_MEDIUM; - } + if(g_console.sound_mode < SOUND_MODE_HEADSET) + { + g_console.sound_mode++; + set_delay = DELAY_MEDIUM; + } } if(CTRL_UP(state) || CTRL_LSTICK_UP(state) || CTRL_DOWN(state) || CTRL_LSTICK_DOWN(state)) { - if(g_console.sound_mode != SOUND_MODE_RSOUND) - { - rarch_console_rsound_stop(); - } - else - { - rarch_console_rsound_start(g_settings.audio.device); - } + if(g_console.sound_mode != SOUND_MODE_RSOUND) + rarch_console_rsound_stop(); + else + rarch_console_rsound_start(g_settings.audio.device); } if(CTRL_START(state)) { - g_console.sound_mode = SOUND_MODE_NORMAL; - rarch_console_rsound_stop(); - set_delay = DELAY_MEDIUM; + g_console.sound_mode = SOUND_MODE_NORMAL; + rarch_console_rsound_stop(); + set_delay = DELAY_MEDIUM; } break; case SETTING_RSOUND_SERVER_IP_ADDRESS: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_CROSS(state) | CTRL_LSTICK_RIGHT(state) ) { - oskutil_write_initial_message(&g_console.oskutil_handle, L"192.168.1.1"); - oskutil_write_message(&g_console.oskutil_handle, L"Enter IP address for the RSound Server."); - oskutil_start(&g_console.oskutil_handle); - while(OSK_IS_RUNNING(g_console.oskutil_handle)) - { - glClear(GL_COLOR_BUFFER_BIT); - gfx_ctx_swap_buffers(); + oskutil_write_initial_message(&g_console.oskutil_handle, L"192.168.1.1"); + oskutil_write_message(&g_console.oskutil_handle, L"Enter IP address for the RSound Server."); + oskutil_start(&g_console.oskutil_handle); + while(OSK_IS_RUNNING(g_console.oskutil_handle)) + { + glClear(GL_COLOR_BUFFER_BIT); + gfx_ctx_swap_buffers(); #ifdef HAVE_SYSUTILS - cellSysutilCheckCallback(); + cellSysutilCheckCallback(); #endif - } + } - if(g_console.oskutil_handle.text_can_be_fetched) - strlcpy(g_settings.audio.device, OUTPUT_TEXT_STRING(g_console.oskutil_handle), sizeof(g_settings.audio.device)); + if(g_console.oskutil_handle.text_can_be_fetched) + strlcpy(g_settings.audio.device, OUTPUT_TEXT_STRING(g_console.oskutil_handle), sizeof(g_settings.audio.device)); } if(CTRL_START(state)) - strlcpy(g_settings.audio.device, "0.0.0.0", sizeof(g_settings.audio.device)); + strlcpy(g_settings.audio.device, "0.0.0.0", sizeof(g_settings.audio.device)); break; case SETTING_DEFAULT_AUDIO_ALL: break; @@ -1553,39 +1543,39 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_EMU_SHOW_INFO_MSG: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { - g_console.info_msg_enable = !g_console.info_msg_enable; - set_delay = DELAY_MEDIUM; + g_console.info_msg_enable = !g_console.info_msg_enable; + set_delay = DELAY_MEDIUM; } if(CTRL_START(state)) { - g_console.info_msg_enable = true; - set_delay = DELAY_MEDIUM; + g_console.info_msg_enable = true; + set_delay = DELAY_MEDIUM; } break; case SETTING_EMU_REWIND_ENABLED: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - rarch_settings_change(S_REWIND); + rarch_settings_change(S_REWIND); - set_delay = DELAY_MEDIUM; - if(g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); - } + set_delay = DELAY_MEDIUM; + if(g_console.info_msg_enable) + { + msg_queue_clear(g_extern.msg_queue); + msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); + } } if(CTRL_START(state)) - g_settings.rewind_enable = false; + g_settings.rewind_enable = false; break; case SETTING_RARCH_DEFAULT_EMU: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - menuStackindex++; - menuStack[menuStackindex] = menu_filebrowser; - menuStack[menuStackindex].enum_id = LIBRETRO_CHOICE; - set_initial_dir_tmpbrowser = true; - set_libretro_core_as_launch = false; - set_delay = DELAY_LONG; + menuStackindex++; + menuStack[menuStackindex] = menu_filebrowser; + menuStack[menuStackindex].enum_id = LIBRETRO_CHOICE; + set_initial_dir_tmpbrowser = true; + set_libretro_core_as_launch = false; + set_delay = DELAY_LONG; } if(CTRL_START(state)) { @@ -1594,26 +1584,23 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_EMU_AUDIO_MUTE: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - g_extern.audio_data.mute = !g_extern.audio_data.mute; - - set_delay = DELAY_MEDIUM; + g_extern.audio_data.mute = !g_extern.audio_data.mute; + set_delay = DELAY_MEDIUM; } if(CTRL_START(state)) - { - g_extern.audio_data.mute = false; - } + g_extern.audio_data.mute = false; break; case SETTING_ENABLE_CUSTOM_BGM: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { #if(CELL_SDK_VERSION > 0x340000) - g_console.custom_bgm_enable = !g_console.custom_bgm_enable; - if(g_console.custom_bgm_enable) - cellSysutilEnableBgmPlayback(); - else - cellSysutilDisableBgmPlayback(); + g_console.custom_bgm_enable = !g_console.custom_bgm_enable; + if(g_console.custom_bgm_enable) + cellSysutilEnableBgmPlayback(); + else + cellSysutilDisableBgmPlayback(); - set_delay = DELAY_MEDIUM; + set_delay = DELAY_MEDIUM; #endif } if(CTRL_START(state)) @@ -1630,11 +1617,11 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_PATH_DEFAULT_ROM_DIRECTORY: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - menuStackindex++; - menuStack[menuStackindex] = menu_filebrowser; - menuStack[menuStackindex].enum_id = PATH_DEFAULT_ROM_DIR_CHOICE; - set_initial_dir_tmpbrowser = true; - set_delay = DELAY_LONG; + menuStackindex++; + menuStack[menuStackindex] = menu_filebrowser; + menuStack[menuStackindex].enum_id = PATH_DEFAULT_ROM_DIR_CHOICE; + set_initial_dir_tmpbrowser = true; + set_delay = DELAY_LONG; } if(CTRL_START(state)) @@ -1643,113 +1630,111 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_PATH_SAVESTATES_DIRECTORY: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - menuStackindex++; - menuStack[menuStackindex] = menu_filebrowser; - menuStack[menuStackindex].enum_id = PATH_SAVESTATES_DIR_CHOICE; - set_initial_dir_tmpbrowser = true; - set_delay = DELAY_LONG; + menuStackindex++; + menuStack[menuStackindex] = menu_filebrowser; + menuStack[menuStackindex].enum_id = PATH_SAVESTATES_DIR_CHOICE; + set_initial_dir_tmpbrowser = true; + set_delay = DELAY_LONG; } if(CTRL_START(state)) - strlcpy(g_console.default_savestate_dir, usrDirPath, sizeof(g_console.default_savestate_dir)); + strlcpy(g_console.default_savestate_dir, usrDirPath, sizeof(g_console.default_savestate_dir)); break; case SETTING_PATH_SRAM_DIRECTORY: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - menuStackindex++; - menuStack[menuStackindex] = menu_filebrowser; - menuStack[menuStackindex].enum_id = PATH_SRAM_DIR_CHOICE; - set_initial_dir_tmpbrowser = true; - set_delay = DELAY_LONG; + menuStackindex++; + menuStack[menuStackindex] = menu_filebrowser; + menuStack[menuStackindex].enum_id = PATH_SRAM_DIR_CHOICE; + set_initial_dir_tmpbrowser = true; + set_delay = DELAY_LONG; } if(CTRL_START(state)) - strlcpy(g_console.default_sram_dir, "", sizeof(g_console.default_sram_dir)); + strlcpy(g_console.default_sram_dir, "", sizeof(g_console.default_sram_dir)); break; case SETTING_PATH_CHEATS: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - menuStackindex++; - menuStack[menuStackindex] = menu_filebrowser; - menuStack[menuStackindex].enum_id = PATH_CHEATS_DIR_CHOICE; - set_initial_dir_tmpbrowser = true; - set_delay = DELAY_LONG; + menuStackindex++; + menuStack[menuStackindex] = menu_filebrowser; + menuStack[menuStackindex].enum_id = PATH_CHEATS_DIR_CHOICE; + set_initial_dir_tmpbrowser = true; + set_delay = DELAY_LONG; } if(CTRL_START(state)) - strlcpy(g_settings.cheat_database, usrDirPath, sizeof(g_settings.cheat_database)); + strlcpy(g_settings.cheat_database, usrDirPath, sizeof(g_settings.cheat_database)); break; case SETTING_ENABLE_SRAM_PATH: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { - g_console.default_sram_dir_enable = !g_console.default_sram_dir_enable; - menu_reinit_settings(); - set_delay = DELAY_MEDIUM; + g_console.default_sram_dir_enable = !g_console.default_sram_dir_enable; + menu_reinit_settings(); + set_delay = DELAY_MEDIUM; } if(CTRL_START(state)) { - g_console.default_sram_dir_enable = true; - menu_reinit_settings(); + g_console.default_sram_dir_enable = true; + menu_reinit_settings(); } break; case SETTING_ENABLE_STATE_PATH: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { - g_console.default_savestate_dir_enable = !g_console.default_savestate_dir_enable; - menu_reinit_settings(); - set_delay = DELAY_MEDIUM; + g_console.default_savestate_dir_enable = !g_console.default_savestate_dir_enable; + menu_reinit_settings(); + set_delay = DELAY_MEDIUM; } if(CTRL_START(state)) { - g_console.default_savestate_dir_enable = true; - menu_reinit_settings(); + g_console.default_savestate_dir_enable = true; + menu_reinit_settings(); } break; case SETTING_PATH_DEFAULT_ALL: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state) || CTRL_START(state)) { - strlcpy(g_console.default_rom_startup_dir, "/", sizeof(g_console.default_rom_startup_dir)); - strlcpy(g_console.default_savestate_dir, usrDirPath, sizeof(g_console.default_savestate_dir)); - strlcpy(g_settings.cheat_database, usrDirPath, sizeof(g_settings.cheat_database)); - strlcpy(g_console.default_sram_dir, "", sizeof(g_console.default_sram_dir)); + strlcpy(g_console.default_rom_startup_dir, "/", sizeof(g_console.default_rom_startup_dir)); + strlcpy(g_console.default_savestate_dir, usrDirPath, sizeof(g_console.default_savestate_dir)); + strlcpy(g_settings.cheat_database, usrDirPath, sizeof(g_settings.cheat_database)); + strlcpy(g_console.default_sram_dir, "", sizeof(g_console.default_sram_dir)); - menu_reinit_settings(); + menu_reinit_settings(); } break; case SETTING_CONTROLS_SCHEME: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_CROSS(state) | CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - menuStackindex++; - menuStack[menuStackindex] = menu_filebrowser; - menuStack[menuStackindex].enum_id = INPUT_PRESET_CHOICE; - set_initial_dir_tmpbrowser = true; - set_delay = DELAY_LONG; + menuStackindex++; + menuStack[menuStackindex] = menu_filebrowser; + menuStack[menuStackindex].enum_id = INPUT_PRESET_CHOICE; + set_initial_dir_tmpbrowser = true; + set_delay = DELAY_LONG; } if(CTRL_START(state)) - { - menu_reinit_settings(); - } + menu_reinit_settings(); break; case SETTING_CONTROLS_NUMBER: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_CROSS(state)) { - if(currently_selected_controller_menu != 0) - currently_selected_controller_menu--; - menu_reinit_settings(); - set_delay = DELAY_MEDIUM; + if(currently_selected_controller_menu != 0) + currently_selected_controller_menu--; + menu_reinit_settings(); + set_delay = DELAY_MEDIUM; } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state)) { - if(currently_selected_controller_menu < 6) - currently_selected_controller_menu++; - menu_reinit_settings(); - set_delay = DELAY_MEDIUM; + if(currently_selected_controller_menu < 6) + currently_selected_controller_menu++; + menu_reinit_settings(); + set_delay = DELAY_MEDIUM; } if(CTRL_START(state)) - currently_selected_controller_menu = 0; + currently_selected_controller_menu = 0; break; case SETTING_CONTROLS_RETRO_DEVICE_ID_JOYPAD_UP: set_keybind_digital(state, RETRO_DEVICE_ID_JOYPAD_UP); @@ -1798,15 +1783,13 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) break; case SETTING_CONTROLS_SAVE_CUSTOM_CONTROLS: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state) || CTRL_START(state)) - { - rarch_filename_input_and_save(INPUT_PRESET_FILE); - } + rarch_filename_input_and_save(INPUT_PRESET_FILE); break; case SETTING_CONTROLS_DEFAULT_ALL: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state) || CTRL_START(state)) { - rarch_input_set_default_keybinds(currently_selected_controller_menu); - menu_reinit_settings(); + rarch_input_set_default_keybinds(currently_selected_controller_menu); + menu_reinit_settings(); } break; } @@ -2028,7 +2011,6 @@ static void ingame_menu(uint32_t menu_id) menuitem_colors[g_console.ingame_menu_item] = RED; - state = cell_pad_input_poll_device(0); stuck_in_loop = 1; blocking = 0; @@ -2221,13 +2203,9 @@ static void ingame_menu(uint32_t menu_id) rarch_render_cached_frame(); if(CTRL_SQUARE(state)) - { gl->menu_render = false; - } else - { gl->menu_render = true; - } if(CTRL_LSTICK_LEFT(state) || CTRL_LEFT(state)) g_console.viewports.custom_vp.x -= 1; @@ -2576,7 +2554,7 @@ void menu_loop(void) break; case INGAME_MENU: if(g_console.ingame_menu_enable) - ingame_menu(menuStack[menuStackindex].enum_id); + ingame_menu(menuStack[menuStackindex].enum_id); break; } diff --git a/ps3/ps3_audio.c b/ps3/ps3_audio.c index e5c8f9005b..95152daecf 100644 --- a/ps3/ps3_audio.c +++ b/ps3/ps3_audio.c @@ -90,9 +90,9 @@ static void *ps3_audio_init(const char *device, unsigned rate, unsigned latency) params.nChannel = AUDIO_CHANNELS; params.nBlock = AUDIO_BLOCKS; if(g_console.sound_mode == SOUND_MODE_HEADSET) - params.attr = CELL_AUDIO_PORTATTR_OUT_SECONDARY; + params.attr = CELL_AUDIO_PORTATTR_OUT_SECONDARY; else - params.attr = 0; + params.attr = 0; if (cellAudioPortOpen(¶ms, &data->audio_port) != CELL_OK) { From 1597c5a2cfab66f45e8e0c1508620e0820ff87d5 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 16:45:37 +0200 Subject: [PATCH 44/70] (360) Abstracted message queue push code for generating messages - seems to only work when Rarch is initialized - if not, it will keep returning the first message that was pushed in the queue. --- 360/menu.cpp | 146 ++++++++++++++----------------------- console/console_ext.c | 5 +- console/console_settings.c | 39 ++++++++++ console/console_settings.h | 20 +++++ 4 files changed, 115 insertions(+), 95 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 9f035f0c1d..e1f70e2476 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -349,9 +349,9 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled break; case MENU_ITEM_KEEP_ASPECT_RATIO: { - g_console.aspect_ratio_index++; + g_console.aspect_ratio_index++; if(g_console.aspect_ratio_index >= ASPECT_RATIO_END) - g_console.aspect_ratio_index = 0; + g_console.aspect_ratio_index = 0; gfx_ctx_set_aspect_ratio(d3d9, g_console.aspect_ratio_index); char aspectratio_label[32]; @@ -362,44 +362,35 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } break; case MENU_ITEM_OVERSCAN_AMOUNT: - if(g_console.info_msg_enable) - { - if(g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); - } - } + if(g_console.info_msg_enable) + rarch_settings_msg(S_MSG_NOT_IMPLEMENTED, S_DELAY_180); break; case MENU_ITEM_ORIENTATION: switch(g_console.screen_orientation) { - case ORIENTATION_NORMAL: - g_console.screen_orientation = ORIENTATION_VERTICAL; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical"); - break; + case ORIENTATION_NORMAL: + g_console.screen_orientation = ORIENTATION_VERTICAL; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical"); + break; case ORIENTATION_VERTICAL: - g_console.screen_orientation = ORIENTATION_FLIPPED; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped"); - break; - case ORIENTATION_FLIPPED: - g_console.screen_orientation = ORIENTATION_FLIPPED_ROTATED; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated"); - break; - case ORIENTATION_FLIPPED_ROTATED: - g_console.screen_orientation = ORIENTATION_NORMAL; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Normal"); - break; + g_console.screen_orientation = ORIENTATION_FLIPPED; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped"); + break; + case ORIENTATION_FLIPPED: + g_console.screen_orientation = ORIENTATION_FLIPPED_ROTATED; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated"); + break; + case ORIENTATION_FLIPPED_ROTATED: + g_console.screen_orientation = ORIENTATION_NORMAL; + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Normal"); + break; } video_xdk360.set_rotation(driver.video_data, g_console.screen_orientation); break; case MENU_ITEM_RESIZE_MODE: g_console.input_loop = INPUT_LOOP_RESIZE_MODE; if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Resize the screen by moving around the two analog sticks.\nPress Y to reset to default values, and B to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'.", 1, 270); - } + rarch_settings_msg(S_MSG_RESIZE_SCREEN, S_DELAY_270); break; case MENU_ITEM_FRAME_ADVANCE: if (g_console.emulator_initialized) @@ -407,16 +398,13 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled break; case MENU_ITEM_SCREENSHOT_MODE: if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "TODO - Not yet implemented.", 1, 180); - } + rarch_settings_msg(S_MSG_NOT_IMPLEMENTED, S_DELAY_180); break; case MENU_ITEM_RESET: if (g_console.emulator_initialized) { - rarch_settings_change(S_RETURN_TO_GAME); - rarch_game_reset(); + rarch_settings_change(S_RETURN_TO_GAME); + rarch_game_reset(); } break; case MENU_ITEM_RETURN_TO_GAME: @@ -512,10 +500,7 @@ HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle filebrowser_new(&browser, "cache:", rarch_console_get_rom_ext()); filebrowser_fetch_directory_entries("cache:", &browser, &m_romlist, &m_rompathtitle); if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - All the contents of the ZIP files you have selected in the filebrowser\nare extracted to this partition.", 1, 180); - } + rarch_settings_msg(S_MSG_CACHE_PARTITION, S_DELAY_180); } bHandled = TRUE; @@ -549,10 +534,7 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand } if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Shader successfully loaded.", 1, 180); - } + rarch_settings_msg(S_MSG_SHADER_LOADING_SUCCEEDED, S_DELAY_180); } else if(tmp_browser.cur[index].d_type == FILE_ATTRIBUTE_DIRECTORY) { @@ -608,10 +590,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); - } + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); break; case SETTING_EMU_SHOW_INFO_MSG: g_console.info_msg_enable = !g_console.info_msg_enable; @@ -625,19 +604,13 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled g_console.gamma_correction_enable = !g_console.gamma_correction_enable; m_settingslist.SetText(SETTING_GAMMA_CORRECTION_ENABLED, g_console.gamma_correction_enable ? L"Gamma correction: ON" : L"Gamma correction: OFF"); if(g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); - } + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); break; case SETTING_COLOR_FORMAT: g_console.color_format = !g_console.color_format; m_settingslist.SetText(SETTING_COLOR_FORMAT, g_console.color_format ? L"Color format: 32bit ARGB" : L"Color format: 16bit RGBA"); - if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); - } + if(g_console.info_msg_enable) + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); break; case SETTING_SHADER: set_shader = 1; @@ -649,11 +622,8 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } hCur = app.hShaderBrowser; - if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Select a shader from the menu by pressing the A button.", 1, 180); - } + if (g_console.info_msg_enable) + rarch_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); NavigateForward(app.hShaderBrowser); break; case SETTING_SHADER_2: @@ -665,10 +635,7 @@ HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled } hCur = app.hShaderBrowser; if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Select a shader from the menu by pressing the A button.", 1, 180); - } + rarch_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); NavigateForward(app.hShaderBrowser); break; case SETTING_HW_TEXTURE_FILTER: @@ -728,10 +695,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) hCur = app.hControlsMenu; if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Press LEFT/RIGHT to change the controls, and press\nSTART/A to reset a button to default values.", 1, 180); - } + rarch_settings_msg(S_MSG_CHANGE_CONTROLS, S_DELAY_180); NavigateForward(app.hControlsMenu); } else if ( hObjPressed == m_change_libretro_core ) @@ -745,10 +709,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) hCur = app.hCoreBrowser; if (g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - Select a Libretro core from the menu by pressing the A button.", 1, 180); - } + rarch_settings_msg(S_MSG_SELECT_LIBRETRO_CORE, S_DELAY_180); NavigateForward(app.hCoreBrowser); } else if ( hObjPressed == m_settings ) @@ -830,10 +791,14 @@ void menu_loop(void) do { - if(!g_console.emulator_initialized) - d3d9->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0, 0, 0, 0), 1.0f, 0); - else + if(g_console.emulator_initialized) + { rarch_render_cached_frame(); + } + else + { + d3d9->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0, 0, 0, 0), 1.0f, 0); + } XINPUT_STATE state; XInputGetState(0, &state); @@ -848,14 +813,14 @@ void menu_loop(void) { case INPUT_LOOP_MENU: app.RunFrame(); /* Update XUI */ - if(state.Gamepad.wButtons & XINPUT_GAMEPAD_B && hCur != app.hMainScene) + if(state.Gamepad.wButtons & XINPUT_GAMEPAD_B && hCur != app.hMainScene) XuiSceneNavigateBack(hCur, app.hMainScene, XUSER_INDEX_ANY); - break; - case INPUT_LOOP_RESIZE_MODE: - xdk360_input_loop(); - break; - default: - break; + break; + case INPUT_LOOP_RESIZE_MODE: + xdk360_input_loop(); + break; + default: + break; } hr = app.Render(); /* Render XUI */ @@ -866,17 +831,16 @@ void menu_loop(void) SET_TIMER_EXPIRATION(d3d9, 30); } - const char *msg = msg_queue_pull(g_extern.msg_queue); + const char *message = msg_queue_pull(g_extern.msg_queue); - if (msg) + if (message) { if(IS_TIMER_EXPIRED(d3d9)) - { - xdk360_console_format(msg); - SET_TIMER_EXPIRATION(d3d9, 30); - } - - xdk360_console_draw(); + { + xdk360_console_format(message); + SET_TIMER_EXPIRATION(d3d9, 30); + } + xdk360_console_draw(); } gfx_ctx_swap_buffers(); diff --git a/console/console_ext.c b/console/console_ext.c index 5be5eea72e..df0c813282 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -201,10 +201,7 @@ int rarch_extract_zipfile(const char *zip_path) } if(g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - ZIP file extracted to cache partition.", 1, 180); - } + rarch_settings_msg(S_MSG_EXTRACTED_ZIPFILE, S_DELAY_180); return 0; } diff --git a/console/console_settings.c b/console/console_settings.c index 7a4b0ec3b8..bc92d0094b 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -147,3 +147,42 @@ void rarch_settings_default(unsigned setting) break; } } + +void rarch_settings_msg(unsigned setting, unsigned delay) +{ + char str[PATH_MAX]; + msg_queue_clear(g_extern.msg_queue); + + switch(setting) + { + case S_MSG_CACHE_PARTITION: + snprintf(str, sizeof(str), "INFO - All the contents of the ZIP files you have selected in the filebrowser\nare extracted to this partition."); + break; + case S_MSG_CHANGE_CONTROLS: + snprintf(str, sizeof(str), "INFO - Press LEFT/RIGHT to change the controls, and press\n[RetroPad Start] to reset a button to default values."); + break; + case S_MSG_EXTRACTED_ZIPFILE: + snprintf(str, sizeof(str), "INFO - ZIP file extracted to cache partition."); + break; + case S_MSG_NOT_IMPLEMENTED: + snprintf(str, sizeof(str), "TODO - Not yet implemented."); + break; + case S_MSG_RESIZE_SCREEN: + snprintf(str, sizeof(str), "INFO - Resize the screen by moving around the two analog sticks.\nPress [RetroPad X] to reset to default values, and [RetroPad A] to go back.\nTo select the resized screen mode, set Aspect Ratio to: 'Custom'."); + break; + case S_MSG_RESTART_RARCH: + snprintf(str, sizeof(str), "INFO - You need to restart RetroArch for this change to take effect."); + break; + case S_MSG_SELECT_LIBRETRO_CORE: + snprintf(str, sizeof(str), "INFO - Select a Libretro core from the menu by pressing [RetroPad B]."); + break; + case S_MSG_SELECT_SHADER: + snprintf(str, sizeof(str), "INFO - Select a shader from the menu by pressing [RetroPad A]."); + break; + case S_MSG_SHADER_LOADING_SUCCEEDED: + snprintf(str, sizeof(str), "INFO - Shader successfully loaded."); + break; + } + + msg_queue_push(g_extern.msg_queue, str, 1, delay); +} \ No newline at end of file diff --git a/console/console_settings.h b/console/console_settings.h index caf0e75e32..f4b568a858 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -17,6 +17,12 @@ #ifndef CONSOLE_SETTINGS_H #define CONSOLE_SETTINGS_H +enum +{ + S_DELAY_180 = 180, + S_DELAY_270 = 270, +} delays; + enum { S_FRAME_ADVANCE = 0, @@ -53,7 +59,21 @@ enum S_DEF_SCALE_FACTOR, } default_settings; +enum +{ + S_MSG_CACHE_PARTITION = 0, + S_MSG_CHANGE_CONTROLS, + S_MSG_EXTRACTED_ZIPFILE, + S_MSG_NOT_IMPLEMENTED, + S_MSG_RESIZE_SCREEN, + S_MSG_RESTART_RARCH, + S_MSG_SELECT_LIBRETRO_CORE, + S_MSG_SELECT_SHADER, + S_MSG_SHADER_LOADING_SUCCEEDED, +}; + void rarch_settings_change (unsigned setting); void rarch_settings_default (unsigned setting); +void rarch_settings_msg(unsigned setting, unsigned delay); #endif From 8f6c4f30c3aadb15cf7cb8612347baa6baa52f0a Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 16:51:08 +0200 Subject: [PATCH 45/70] (PS3) Use rarch_settings_msg --- ps3/menu.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ps3/menu.c b/ps3/menu.c index b11b1b8268..5ffd97d1ad 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -1559,10 +1559,7 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) set_delay = DELAY_MEDIUM; if(g_console.info_msg_enable) - { - msg_queue_clear(g_extern.msg_queue); - msg_queue_push(g_extern.msg_queue, "INFO - You need to restart RetroArch for this change to take effect.", 1, 180); - } + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); } if(CTRL_START(state)) g_settings.rewind_enable = false; From 27aa887fcbf3a8ca82964c46346b94c1a6827729 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 17:20:23 +0200 Subject: [PATCH 46/70] (PS3) gl_restart works properly now --- gfx/gl.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gfx/gl.c b/gfx/gl.c index 97d492a764..dc34406b41 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1267,14 +1267,38 @@ static void gl_stop(void) static void gl_restart(void) { +#ifdef HAVE_CG_MENU + bool should_menu_render; +#endif +#ifdef RARCH_CONSOLE + bool should_block_swap; +#endif gl_t *gl = driver.video_data; if (!gl) return; +#ifdef RARCH_CONSOLE + should_block_swap = gl->block_swap; +#endif +#ifdef HAVE_CG_MENU + should_menu_render = gl->menu_render; +#endif + gl_stop(); gl_cg_invalidate_context(); gl_start(); + +#ifdef HAVE_CG_MENU + gl->menu_render = should_menu_render; +#endif + + gl->frame_count = 0; + +#ifdef RARCH_CONSOLE + gl->block_swap = should_block_swap; + SET_TIMER_EXPIRATION(gl, 30); +#endif } #endif From 0c4f14a14f40bedf94ace71ed80208130c65b23a Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 17:44:07 +0200 Subject: [PATCH 47/70] (360) message queue stuff works properly now before Rarch is inited --- 360/menu.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/360/menu.cpp b/360/menu.cpp index e1f70e2476..6fafc5c1b4 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -798,6 +798,7 @@ void menu_loop(void) else { d3d9->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0, 0, 0, 0), 1.0f, 0); + d3d9->frame_count++; } XINPUT_STATE state; From ef3adc7c42d580ba929d6329335aa22a0e622c3e Mon Sep 17 00:00:00 2001 From: Themaister Date: Tue, 29 May 2012 17:45:32 +0200 Subject: [PATCH 48/70] Not supposed to declare variables. --- console/console_settings.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/console/console_settings.h b/console/console_settings.h index f4b568a858..a10461eecf 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -20,8 +20,8 @@ enum { S_DELAY_180 = 180, - S_DELAY_270 = 270, -} delays; + S_DELAY_270 = 270 +}; enum { @@ -44,8 +44,8 @@ enum S_SCALE_FACTOR_DECREMENT, S_SCALE_FACTOR_INCREMENT, S_THROTTLE, - S_TRIPLE_BUFFERING, -} changed_settings; + S_TRIPLE_BUFFERING +}; enum { @@ -56,8 +56,8 @@ enum S_DEF_TRIPLE_BUFFERING, S_DEF_SAVE_STATE, S_DEF_SCALE_ENABLED, - S_DEF_SCALE_FACTOR, -} default_settings; + S_DEF_SCALE_FACTOR +}; enum { @@ -69,11 +69,11 @@ enum S_MSG_RESTART_RARCH, S_MSG_SELECT_LIBRETRO_CORE, S_MSG_SELECT_SHADER, - S_MSG_SHADER_LOADING_SUCCEEDED, + S_MSG_SHADER_LOADING_SUCCEEDED }; -void rarch_settings_change (unsigned setting); -void rarch_settings_default (unsigned setting); +void rarch_settings_change(unsigned setting); +void rarch_settings_default(unsigned setting); void rarch_settings_msg(unsigned setting, unsigned delay); #endif From f7bf8e97253a74e6a8d8190e642aa6858e01161e Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 18:03:58 +0200 Subject: [PATCH 49/70] (360) Add S_ASPECT_RATIO_INCREMENT and S_ASPECT_RATIO_DECREMENT --- 360/menu.cpp | 4 ++-- console/console_settings.c | 19 +++++++++++++++---- console/console_settings.h | 7 +++++-- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 6fafc5c1b4..ba24aca407 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -349,8 +349,8 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled break; case MENU_ITEM_KEEP_ASPECT_RATIO: { - g_console.aspect_ratio_index++; - if(g_console.aspect_ratio_index >= ASPECT_RATIO_END) + rarch_settings_change(S_ASPECT_RATIO_INCREMENT); + if(g_console.aspect_ratio_index == ASPECT_RATIO_END) g_console.aspect_ratio_index = 0; gfx_ctx_set_aspect_ratio(d3d9, g_console.aspect_ratio_index); diff --git a/console/console_settings.c b/console/console_settings.c index bc92d0094b..ef3fc5d953 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -26,6 +26,14 @@ void rarch_settings_change(unsigned setting) { switch(setting) { + case S_ASPECT_RATIO_DECREMENT: + if(g_console.aspect_ratio_index > 0) + g_console.aspect_ratio_index--; + break; + case S_ASPECT_RATIO_INCREMENT: + if(g_console.aspect_ratio_index < ASPECT_RATIO_END-1) + g_console.aspect_ratio_index++; + break; case S_FRAME_ADVANCE: g_console.frame_advance_enable = true; g_console.menu_enable = false; @@ -117,6 +125,9 @@ void rarch_settings_default(unsigned setting) { switch(setting) { + case S_DEF_ASPECT_RATIO: + g_console.aspect_ratio_index = ASPECT_RATIO_4_3; + break; case S_DEF_HW_TEXTURE_FILTER: g_settings.video.smooth = 1; break; @@ -158,11 +169,11 @@ void rarch_settings_msg(unsigned setting, unsigned delay) case S_MSG_CACHE_PARTITION: snprintf(str, sizeof(str), "INFO - All the contents of the ZIP files you have selected in the filebrowser\nare extracted to this partition."); break; - case S_MSG_CHANGE_CONTROLS: + case S_MSG_CHANGE_CONTROLS: snprintf(str, sizeof(str), "INFO - Press LEFT/RIGHT to change the controls, and press\n[RetroPad Start] to reset a button to default values."); - break; - case S_MSG_EXTRACTED_ZIPFILE: - snprintf(str, sizeof(str), "INFO - ZIP file extracted to cache partition."); + break; + case S_MSG_EXTRACTED_ZIPFILE: + snprintf(str, sizeof(str), "INFO - ZIP file successfully extracted to cache partition."); break; case S_MSG_NOT_IMPLEMENTED: snprintf(str, sizeof(str), "TODO - Not yet implemented."); diff --git a/console/console_settings.h b/console/console_settings.h index a10461eecf..817d11fbdd 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -25,7 +25,9 @@ enum enum { - S_FRAME_ADVANCE = 0, + S_ASPECT_RATIO_DECREMENT = 0, + S_ASPECT_RATIO_INCREMENT, + S_FRAME_ADVANCE, S_HW_TEXTURE_FILTER, S_HW_TEXTURE_FILTER_2, S_OVERSCAN_DECREMENT, @@ -49,7 +51,8 @@ enum enum { - S_DEF_HW_TEXTURE_FILTER = 0, + S_DEF_ASPECT_RATIO = 0, + S_DEF_HW_TEXTURE_FILTER, S_DEF_HW_TEXTURE_FILTER_2, S_DEF_OVERSCAN, S_DEF_THROTTLE, From 7ce9e4f9b0bc66b5d8d6397f50badfb1177a0445 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 17:55:45 +0200 Subject: [PATCH 50/70] (PS3) Use S_ASPECT_RATIO_DECREMENT / S_ASPECT_RATIO_INCREMENT --- ps3/menu.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/ps3/menu.c b/ps3/menu.c index 5ffd97d1ad..077098eeac 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -1285,25 +1285,23 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) { if(g_console.aspect_ratio_index > 0) { - g_console.aspect_ratio_index--; + rarch_settings_change(S_ASPECT_RATIO_DECREMENT); gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); set_delay = DELAY_SMALL; } } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { - g_console.aspect_ratio_index++; - if(g_console.aspect_ratio_index < ASPECT_RATIO_END) + if(g_console.aspect_ratio_index < ASPECT_RATIO_END-1) { + rarch_settings_change(S_ASPECT_RATIO_INCREMENT); gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); set_delay = DELAY_SMALL; } - else - g_console.aspect_ratio_index = ASPECT_RATIO_END-1; } if(CTRL_START(state)) { - g_console.aspect_ratio_index = ASPECT_RATIO_4_3; + rarch_settings_default(S_DEF_ASPECT_RATIO); gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); } break; @@ -2068,25 +2066,23 @@ static void ingame_menu(uint32_t menu_id) { if(g_console.aspect_ratio_index > 0) { - g_console.aspect_ratio_index--; + rarch_settings_change(S_ASPECT_RATIO_DECREMENT); gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); set_delay = DELAY_MEDIUM; } } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { - g_console.aspect_ratio_index++; - if(g_console.aspect_ratio_index < ASPECT_RATIO_END) + if(g_console.aspect_ratio_index < ASPECT_RATIO_END-1) { + rarch_settings_change(S_ASPECT_RATIO_INCREMENT); gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); set_delay = DELAY_MEDIUM; } - else - g_console.aspect_ratio_index = ASPECT_RATIO_END-1; } if(CTRL_START(state)) { - g_console.aspect_ratio_index = ASPECT_RATIO_4_3; + rarch_settings_default(S_DEF_ASPECT_RATIO); gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); } strlcpy(comment, "Press LEFT or RIGHT to change the [Aspect Ratio].\nPress START to reset back to default values.", sizeof(comment)); From 67ffd5226ad027788af30de9656105a235ba8474 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 19:00:13 +0200 Subject: [PATCH 51/70] (360) Properly implement OnControlNavigate --- 360/menu.cpp | 78 ++++++++++++++++++++++++++++++++++++-- 360/menu.h | 18 +++++---- console/console_settings.c | 2 +- 3 files changed, 86 insertions(+), 12 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index ba24aca407..3f1935fe7c 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -289,6 +289,18 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro break; } + bHandled = TRUE; + + switch(pControlNavigateData->nControlNavigate) + { + case XUI_CONTROL_NAVIGATE_LEFT: + case XUI_CONTROL_NAVIGATE_RIGHT: + case XUI_CONTROL_NAVIGATE_UP: + case XUI_CONTROL_NAVIGATE_DOWN: + pControlNavigateData->hObjDest = pControlNavigateData->hObjSource; + break; + } + return 0; } @@ -322,6 +334,68 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) return 0; } +HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) +{ + bool aspectratio_changed = false; + int current_index; + xdk360_video_t *d3d9 = (xdk360_video_t*)driver.video_data; + + current_index = m_quickmenulist.GetCurSel(); + + switch(pControlNavigateData->nControlNavigate) + { + case XUI_CONTROL_NAVIGATE_LEFT: + switch(current_index) + { + case MENU_ITEM_KEEP_ASPECT_RATIO: + rarch_settings_change(S_ASPECT_RATIO_DECREMENT); + aspectratio_changed = true; + break; + default: + break; + } + break; + case XUI_CONTROL_NAVIGATE_RIGHT: + switch(current_index) + { + case MENU_ITEM_KEEP_ASPECT_RATIO: + rarch_settings_change(S_ASPECT_RATIO_INCREMENT); + aspectratio_changed = true; + break; + default: + break; + } + break; + case XUI_CONTROL_NAVIGATE_UP: + case XUI_CONTROL_NAVIGATE_DOWN: + break; + } + + if(aspectratio_changed) + { + gfx_ctx_set_aspect_ratio(d3d9, g_console.aspect_ratio_index); + char aspectratio_label[32]; + snprintf(aspectratio_label, sizeof(aspectratio_label), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); + wchar_t * aspectratio_label_w = rarch_convert_char_to_wchar(aspectratio_label); + m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, aspectratio_label_w); + free(aspectratio_label_w); + } + + bHandled = TRUE; + + switch(pControlNavigateData->nControlNavigate) + { + case XUI_CONTROL_NAVIGATE_LEFT: + case XUI_CONTROL_NAVIGATE_RIGHT: + case XUI_CONTROL_NAVIGATE_UP: + case XUI_CONTROL_NAVIGATE_DOWN: + pControlNavigateData->hObjDest = pControlNavigateData->hObjSource; + break; + } + + return 0; +} + HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) { xdk360_video_t *d3d9 = (xdk360_video_t*)driver.video_data; @@ -349,9 +423,7 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled break; case MENU_ITEM_KEEP_ASPECT_RATIO: { - rarch_settings_change(S_ASPECT_RATIO_INCREMENT); - if(g_console.aspect_ratio_index == ASPECT_RATIO_END) - g_console.aspect_ratio_index = 0; + rarch_settings_default(S_DEF_ASPECT_RATIO); gfx_ctx_set_aspect_ratio(d3d9, g_console.aspect_ratio_index); char aspectratio_label[32]; diff --git a/360/menu.h b/360/menu.h index f6087b81f2..fbb3978eea 100644 --- a/360/menu.h +++ b/360/menu.h @@ -94,7 +94,7 @@ class CRetroArchMain: public CXuiSceneImpl XUI_BEGIN_MSG_MAP() XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) XUI_END_MSG_MAP(); XUI_IMPLEMENT_CLASS(CRetroArchMain, L"RetroArchMain", XUI_CLASS_SCENE) @@ -114,7 +114,7 @@ class CRetroArchFileBrowser: public CXuiSceneImpl XUI_BEGIN_MSG_MAP() XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) XUI_END_MSG_MAP(); XUI_IMPLEMENT_CLASS(CRetroArchFileBrowser, L"RetroArchFileBrowser", XUI_CLASS_SCENE) @@ -150,7 +150,7 @@ class CRetroArchShaderBrowser: public CXuiSceneImpl XUI_BEGIN_MSG_MAP() XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) XUI_END_MSG_MAP(); XUI_IMPLEMENT_CLASS(CRetroArchShaderBrowser, L"RetroArchShaderBrowser", XUI_CLASS_SCENE) @@ -164,10 +164,12 @@ class CRetroArchQuickMenu: public CXuiSceneImpl public: HRESULT OnInit( XUIMessageInit* pInitData, int & bHandled ); HRESULT OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ); + HRESULT OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled); XUI_BEGIN_MSG_MAP() XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) XUI_END_MSG_MAP(); XUI_IMPLEMENT_CLASS(CRetroArchQuickMenu, L"RetroArchQuickMenu", XUI_CLASS_SCENE) @@ -185,8 +187,8 @@ class CRetroArchSettings: public CXuiSceneImpl XUI_BEGIN_MSG_MAP() XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) XUI_END_MSG_MAP(); XUI_IMPLEMENT_CLASS(CRetroArchSettings, L"RetroArchSettings", XUI_CLASS_SCENE) @@ -205,8 +207,8 @@ class CRetroArchControls: public CXuiSceneImpl XUI_BEGIN_MSG_MAP() XUI_ON_XM_INIT( OnInit) - XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) - XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) + XUI_ON_XM_CONTROL_NAVIGATE( OnControlNavigate ) + XUI_ON_XM_NOTIFY_PRESS( OnNotifyPress ) XUI_END_MSG_MAP(); XUI_IMPLEMENT_CLASS(CRetroArchControls, L"RetroArchControls", XUI_CLASS_SCENE) diff --git a/console/console_settings.c b/console/console_settings.c index ef3fc5d953..e8911ee8b9 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -31,7 +31,7 @@ void rarch_settings_change(unsigned setting) g_console.aspect_ratio_index--; break; case S_ASPECT_RATIO_INCREMENT: - if(g_console.aspect_ratio_index < ASPECT_RATIO_END-1) + if(g_console.aspect_ratio_index < LAST_ASPECT_RATIO) g_console.aspect_ratio_index++; break; case S_FRAME_ADVANCE: From 6c7e3ec571b4c162d78d1910243b4d18d64d405e Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 19:51:35 +0200 Subject: [PATCH 52/70] (360) char to wchar helper revisions - now uses a wchar_t buffer in menu.cpp - buffer is passed to helper functions --- 360/menu.cpp | 152 +++++++++++++++++++------------------ console/console_ext.c | 8 +- console/console_ext.h | 2 +- console/console_settings.c | 18 ++++- console/console_settings.h | 9 +++ 5 files changed, 109 insertions(+), 80 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 3f1935fe7c..ca5a1590cf 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -32,6 +32,7 @@ HXUIOBJ hCur; filebrowser_t browser; filebrowser_t tmp_browser; uint32_t set_shader = 0; +wchar_t strw_buffer[PATH_MAX]; /* Register custom classes */ HRESULT CRetroArch::RegisterXuiClasses (void) @@ -66,17 +67,15 @@ static void filebrowser_fetch_directory_entries(const char *path, filebrowser_t { filebrowser_push_directory(browser, path, true); - wchar_t * rompath_name = rarch_convert_char_to_wchar(path); - rompath_title->SetText(rompath_name); - free(rompath_name); + rarch_convert_char_to_wchar(strw_buffer, path, sizeof(strw_buffer)); + rompath_title->SetText(strw_buffer); romlist->DeleteItems(0, romlist->GetItemCount()); romlist->InsertItems(0, browser->file_count); for(unsigned i = 0; i < browser->file_count; i++) { - wchar_t * entry_name = rarch_convert_char_to_wchar(browser->cur[i].d_name); - romlist->SetText(i, entry_name); - free(entry_name); + rarch_convert_char_to_wchar(strw_buffer, browser->cur[i].d_name, sizeof(strw_buffer)); + romlist->SetText(i, strw_buffer); } } @@ -132,8 +131,9 @@ HRESULT CRetroArchControls::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) for(i = 0; i < RARCH_FIRST_META_KEY; i++) { + rarch_convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); - m_controlslist.SetText(i, rarch_convert_char_to_wchar(buttons[i])); + m_controlslist.SetText(i, strw_buffer); } return 0; @@ -150,31 +150,34 @@ HRESULT CRetroArchControls::OnControlNavigate(XUIMessageControlNavigate *pContro for(i = 0; i < RARCH_FIRST_META_KEY; i++) { + rarch_convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); - m_controlslist.SetText(i, rarch_convert_char_to_wchar(buttons[i])); + m_controlslist.SetText(i, strw_buffer); } switch(pControlNavigateData->nControlNavigate) { case XUI_CONTROL_NAVIGATE_LEFT: if(current_index > 0 && current_index != SETTING_CONTROLS_DEFAULT_ALL) - { + { rarch_input_set_keybind(controlno, KEYBIND_DECREMENT, current_index); - snprintf(button, sizeof(button), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); - m_controlslist.SetText(current_index, rarch_convert_char_to_wchar(button)); - } - break; + rarch_convert_char_to_wchar(strw_buffer, button, sizeof(strw_buffer)); + snprintf(button, sizeof(button), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); + m_controlslist.SetText(current_index, strw_buffer); + } + break; case XUI_CONTROL_NAVIGATE_RIGHT: - if(current_index < RARCH_FIRST_META_KEY && current_index != SETTING_CONTROLS_DEFAULT_ALL) - { + if(current_index < RARCH_FIRST_META_KEY && current_index != SETTING_CONTROLS_DEFAULT_ALL) + { rarch_input_set_keybind(controlno, KEYBIND_INCREMENT, current_index); - snprintf(button, sizeof(button), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); - m_controlslist.SetText(current_index, rarch_convert_char_to_wchar(button)); - } - break; + rarch_convert_char_to_wchar(strw_buffer, button, sizeof(strw_buffer)); + snprintf(button, sizeof(button), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); + m_controlslist.SetText(current_index, strw_buffer); + } + break; case XUI_CONTROL_NAVIGATE_UP: case XUI_CONTROL_NAVIGATE_DOWN: - break; + break; } return 0; @@ -197,14 +200,16 @@ HRESULT CRetroArchControls::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled for(i = 0; i < RARCH_FIRST_META_KEY; i++) { + rarch_convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); - m_controlslist.SetText(i, rarch_convert_char_to_wchar(buttons[i])); + m_controlslist.SetText(i, strw_buffer); } break; default: + rarch_convert_char_to_wchar(strw_buffer, buttons[current_index], sizeof(strw_buffer)); rarch_input_set_keybind(controlno, KEYBIND_DEFAULT, current_index); snprintf(buttons[current_index], sizeof(buttons[current_index]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); - m_controlslist.SetText(current_index, rarch_convert_char_to_wchar(buttons[current_index])); + m_controlslist.SetText(current_index, strw_buffer); break; } } @@ -223,6 +228,7 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) snprintf(shader2str, sizeof(shader2str), "Shader #2: %s", g_settings.video.second_pass_shader); snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); + m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); m_settingslist.SetText(SETTING_EMU_SHOW_INFO_MSG, g_console.info_msg_enable ? L"Info messages: ON" : L"Info messages: OFF"); m_settingslist.SetText(SETTING_EMU_MENUS, g_console.menus_hd_enable ? L"Menus: HD" : L"Menus: SD"); @@ -230,10 +236,13 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) 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_console.fbo_enabled ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF"); - m_settingslist.SetText(SETTING_SHADER, rarch_convert_char_to_wchar(shader1str)); + rarch_convert_char_to_wchar(strw_buffer, shader1str, sizeof(strw_buffer)); + m_settingslist.SetText(SETTING_SHADER, strw_buffer); m_settingslist.SetText(SETTING_COLOR_FORMAT, g_console.color_format ? L"Color format: 32bit ARGB" : L"Color format: 16bit RGBA"); - m_settingslist.SetText(SETTING_SHADER_2, rarch_convert_char_to_wchar(shader2str)); - m_settingslist.SetText(SETTING_SCALE_FACTOR, rarch_convert_char_to_wchar(scalefactor)); + rarch_convert_char_to_wchar(strw_buffer, shader2str, sizeof(strw_buffer)); + m_settingslist.SetText(SETTING_SHADER_2, strw_buffer); + rarch_convert_char_to_wchar(strw_buffer, scalefactor, sizeof(strw_buffer)); + m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); return 0; } @@ -250,43 +259,45 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro { case XUI_CONTROL_NAVIGATE_LEFT: switch(current_index) - { + { case SETTING_SCALE_FACTOR: if(vid->fbo_enabled) - { + { if((g_settings.video.fbo_scale_x > MIN_SCALING_FACTOR)) - { + { rarch_settings_change(S_SCALE_FACTOR_DECREMENT); - //xdk360_gfx_init_fbo(vid); - snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); - m_settingslist.SetText(SETTING_SCALE_FACTOR, rarch_convert_char_to_wchar(scalefactor)); - } - } - default: - break; - } - break; - case XUI_CONTROL_NAVIGATE_RIGHT: - switch(current_index) - { + //xdk360_gfx_init_fbo(vid); + snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); + rarch_convert_char_to_wchar(strw_buffer, scalefactor, sizeof(strw_buffer)); + m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); + } + } + default: + break; + } + break; + case XUI_CONTROL_NAVIGATE_RIGHT: + switch(current_index) + { case SETTING_SCALE_FACTOR: - if(vid->fbo_enabled) - { - if((g_settings.video.fbo_scale_x < MAX_SCALING_FACTOR)) - { - rarch_settings_change(S_SCALE_FACTOR_INCREMENT); - //xdk360_gfx_init_fbo(vid); - snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); - m_settingslist.SetText(SETTING_SCALE_FACTOR, rarch_convert_char_to_wchar(scalefactor)); - } - } - default: - break; - } - break; - case XUI_CONTROL_NAVIGATE_UP: - case XUI_CONTROL_NAVIGATE_DOWN: - break; + if(vid->fbo_enabled) + { + if((g_settings.video.fbo_scale_x < MAX_SCALING_FACTOR)) + { + rarch_settings_change(S_SCALE_FACTOR_INCREMENT); + //xdk360_gfx_init_fbo(vid); + snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); + rarch_convert_char_to_wchar(strw_buffer, scalefactor, sizeof(strw_buffer)); + m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); + } + } + default: + break; + } + break; + case XUI_CONTROL_NAVIGATE_UP: + case XUI_CONTROL_NAVIGATE_DOWN: + break; } bHandled = TRUE; @@ -327,9 +338,8 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) char aspectratio_label[32]; snprintf(aspectratio_label, sizeof(aspectratio_label), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); - wchar_t * aspectratio_label_w = rarch_convert_char_to_wchar(aspectratio_label); - m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, aspectratio_label_w); - free(aspectratio_label_w); + rarch_convert_char_to_wchar(strw_buffer, aspectratio_label, sizeof(strw_buffer)); + m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, strw_buffer); return 0; } @@ -374,11 +384,8 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr if(aspectratio_changed) { gfx_ctx_set_aspect_ratio(d3d9, g_console.aspect_ratio_index); - char aspectratio_label[32]; - snprintf(aspectratio_label, sizeof(aspectratio_label), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); - wchar_t * aspectratio_label_w = rarch_convert_char_to_wchar(aspectratio_label); - m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, aspectratio_label_w); - free(aspectratio_label_w); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, strw_buffer); } bHandled = TRUE; @@ -428,9 +435,8 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled gfx_ctx_set_aspect_ratio(d3d9, g_console.aspect_ratio_index); char aspectratio_label[32]; snprintf(aspectratio_label, sizeof(aspectratio_label), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); - wchar_t * aspectratio_label_w = rarch_convert_char_to_wchar(aspectratio_label); - m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, aspectratio_label_w); - free(aspectratio_label_w); + rarch_convert_char_to_wchar(strw_buffer, aspectratio_label, sizeof(strw_buffer)); + m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, strw_buffer); } break; case MENU_ITEM_OVERSCAN_AMOUNT: @@ -515,12 +521,10 @@ HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) char package_version[32]; snprintf(package_version, sizeof(core_text), "RetroArch %s", PACKAGE_VERSION); - wchar_t * core_text_utf = rarch_convert_char_to_wchar(core_text); - wchar_t * package_version_utf = rarch_convert_char_to_wchar(package_version); - m_core.SetText(core_text_utf); - m_title.SetText(package_version_utf); - free(core_text_utf); - free(package_version_utf); + rarch_convert_char_to_wchar(strw_buffer, core_text, sizeof(strw_buffer)); + m_core.SetText(strw_buffer); + rarch_convert_char_to_wchar(strw_buffer, package_version, sizeof(strw_buffer)); + m_title.SetText(strw_buffer); return 0; } diff --git a/console/console_ext.c b/console/console_ext.c index df0c813282..186f7fcfa2 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -685,12 +685,12 @@ void rarch_console_rsound_stop(void) ============================================================ */ #ifdef _XBOX -wchar_t * rarch_convert_char_to_wchar(const char * str) +void rarch_convert_char_to_wchar(wchar_t *buf, const char * str, size_t size) { unsigned long dwNum = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); - wchar_t * w_str = (wchar_t*)malloc(sizeof(wchar_t) * dwNum); - MultiByteToWideChar(CP_ACP, 0, str, -1, w_str, dwNum); - return w_str; + size /= sizeof(wchar_t); + rarch_assert(size >= dwNum); + MultiByteToWideChar(CP_ACP, 0, str, -1, buf, dwNum); } #endif diff --git a/console/console_ext.h b/console/console_ext.h index 51ea36f36f..4e5cfe52ae 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -136,7 +136,7 @@ void rarch_console_rsound_stop(void); #endif #ifdef _XBOX -wchar_t * rarch_convert_char_to_wchar(const char * str); +void rarch_convert_char_to_wchar(wchar_t *buf, const char * str, size_t size); #endif const char * rarch_convert_wchar_to_const_char(const wchar_t * wstr); diff --git a/console/console_settings.c b/console/console_settings.c index e8911ee8b9..6b9c751237 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -196,4 +196,20 @@ void rarch_settings_msg(unsigned setting, unsigned delay) } msg_queue_push(g_extern.msg_queue, str, 1, delay); -} \ No newline at end of file +} + +#ifdef _XBOX +void rarch_settings_create_menu_item_label(wchar_t * strwbuf, unsigned setting, size_t size) +{ + char str[PATH_MAX]; + + switch (setting) + { + case S_LBL_ASPECT_RATIO: + snprintf(str, sizeof(str), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); + break; + } + + rarch_convert_char_to_wchar(strwbuf, str, size); +} +#endif \ No newline at end of file diff --git a/console/console_settings.h b/console/console_settings.h index 817d11fbdd..d74cd0980b 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -75,8 +75,17 @@ enum S_MSG_SHADER_LOADING_SUCCEEDED }; +enum +{ + S_LBL_ASPECT_RATIO = 0, +}; + void rarch_settings_change(unsigned setting); void rarch_settings_default(unsigned setting); void rarch_settings_msg(unsigned setting, unsigned delay); +#ifdef _XBOX +void rarch_settings_create_menu_item_label(wchar_t * strwbuf, unsigned setting, size_t size); +#endif + #endif From 4e6b50b8ee4e1430914716157314e0cb5795d24b Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 19:54:05 +0200 Subject: [PATCH 53/70] (360) Fixed placement of some rarch_convert_char_to_wchar calls --- 360/menu.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index ca5a1590cf..e3f98140dc 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -200,15 +200,15 @@ HRESULT CRetroArchControls::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled for(i = 0; i < RARCH_FIRST_META_KEY; i++) { - rarch_convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); + rarch_convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); m_controlslist.SetText(i, strw_buffer); } break; default: - rarch_convert_char_to_wchar(strw_buffer, buttons[current_index], sizeof(strw_buffer)); rarch_input_set_keybind(controlno, KEYBIND_DEFAULT, current_index); snprintf(buttons[current_index], sizeof(buttons[current_index]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); + rarch_convert_char_to_wchar(strw_buffer, buttons[current_index], sizeof(strw_buffer)); m_controlslist.SetText(current_index, strw_buffer); break; } From 346745e24b2a2e4fa91f15c13766be426cf34325 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 20:01:29 +0200 Subject: [PATCH 54/70] (360) Use rarch_settings_create_menu_item_label --- 360/menu.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index e3f98140dc..e989ab4ff5 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -161,8 +161,8 @@ HRESULT CRetroArchControls::OnControlNavigate(XUIMessageControlNavigate *pContro if(current_index > 0 && current_index != SETTING_CONTROLS_DEFAULT_ALL) { rarch_input_set_keybind(controlno, KEYBIND_DECREMENT, current_index); - rarch_convert_char_to_wchar(strw_buffer, button, sizeof(strw_buffer)); snprintf(button, sizeof(button), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); + rarch_convert_char_to_wchar(strw_buffer, button, sizeof(strw_buffer)); m_controlslist.SetText(current_index, strw_buffer); } break; @@ -170,8 +170,8 @@ HRESULT CRetroArchControls::OnControlNavigate(XUIMessageControlNavigate *pContro if(current_index < RARCH_FIRST_META_KEY && current_index != SETTING_CONTROLS_DEFAULT_ALL) { rarch_input_set_keybind(controlno, KEYBIND_INCREMENT, current_index); - rarch_convert_char_to_wchar(strw_buffer, button, sizeof(strw_buffer)); snprintf(button, sizeof(button), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[current_index], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); + rarch_convert_char_to_wchar(strw_buffer, button, sizeof(strw_buffer)); m_controlslist.SetText(current_index, strw_buffer); } break; @@ -336,9 +336,7 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) break; } - char aspectratio_label[32]; - snprintf(aspectratio_label, sizeof(aspectratio_label), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); - rarch_convert_char_to_wchar(strw_buffer, aspectratio_label, sizeof(strw_buffer)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, strw_buffer); return 0; @@ -433,9 +431,7 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled rarch_settings_default(S_DEF_ASPECT_RATIO); gfx_ctx_set_aspect_ratio(d3d9, g_console.aspect_ratio_index); - char aspectratio_label[32]; - snprintf(aspectratio_label, sizeof(aspectratio_label), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); - rarch_convert_char_to_wchar(strw_buffer, aspectratio_label, sizeof(strw_buffer)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, strw_buffer); } break; @@ -635,14 +631,14 @@ HRESULT CRetroArchCoreBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle if(tmp_browser.cur[index].d_type != FILE_ATTRIBUTE_DIRECTORY) { const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_romlist.GetText(index)); - snprintf(g_console.launch_app_on_exit, sizeof(g_console.launch_app_on_exit), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); - rarch_settings_change(S_RETURN_TO_LAUNCHER); + snprintf(g_console.launch_app_on_exit, sizeof(g_console.launch_app_on_exit), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); + rarch_settings_change(S_RETURN_TO_LAUNCHER); } else if(tmp_browser.cur[index].d_type == FILE_ATTRIBUTE_DIRECTORY) { const char * strbuffer = rarch_convert_wchar_to_const_char((const wchar_t *)m_romlist.GetText(index)); - snprintf(path, sizeof(path), "%s%s\\", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); - filebrowser_fetch_directory_entries(path, &tmp_browser, &m_romlist, &m_rompathtitle); + snprintf(path, sizeof(path), "%s%s\\", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(tmp_browser), strbuffer); + filebrowser_fetch_directory_entries(path, &tmp_browser, &m_romlist, &m_rompathtitle); } } From 37140c1cd967a31794fccd37b6ba47c54bcdd743 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 20:34:06 +0200 Subject: [PATCH 55/70] (360) Use rarch_settings_set_menu_item_label more --- 360/menu.cpp | 19 +++++-------------- console/console_settings.c | 9 +++++++++ console/console_settings.h | 3 +++ 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index e989ab4ff5..02c3125651 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -220,15 +220,9 @@ HRESULT CRetroArchControls::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) { - char shader1str[128], shader2str[128], scalefactor[128]; GetChildById(L"XuiSettingsList", &m_settingslist); GetChildById(L"XuiBackButton", &m_back); - snprintf(shader1str, sizeof(shader1str), "Shader #1: %s", g_settings.video.cg_shader_path); - snprintf(shader2str, sizeof(shader2str), "Shader #2: %s", g_settings.video.second_pass_shader); - snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); - - m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); m_settingslist.SetText(SETTING_EMU_SHOW_INFO_MSG, g_console.info_msg_enable ? L"Info messages: ON" : L"Info messages: OFF"); m_settingslist.SetText(SETTING_EMU_MENUS, g_console.menus_hd_enable ? L"Menus: HD" : L"Menus: SD"); @@ -236,12 +230,12 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) 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_console.fbo_enabled ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF"); - rarch_convert_char_to_wchar(strw_buffer, shader1str, sizeof(strw_buffer)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SHADER, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SHADER, strw_buffer); m_settingslist.SetText(SETTING_COLOR_FORMAT, g_console.color_format ? L"Color format: 32bit ARGB" : L"Color format: 16bit RGBA"); - rarch_convert_char_to_wchar(strw_buffer, shader2str, sizeof(strw_buffer)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SHADER_2, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SHADER_2, strw_buffer); - rarch_convert_char_to_wchar(strw_buffer, scalefactor, sizeof(strw_buffer)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); return 0; @@ -249,7 +243,6 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) { - char scalefactor[128]; int current_index; xdk360_video_t *vid = (xdk360_video_t*)driver.video_data; @@ -267,8 +260,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro { rarch_settings_change(S_SCALE_FACTOR_DECREMENT); //xdk360_gfx_init_fbo(vid); - snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); - rarch_convert_char_to_wchar(strw_buffer, scalefactor, sizeof(strw_buffer)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); } } @@ -286,8 +278,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro { rarch_settings_change(S_SCALE_FACTOR_INCREMENT); //xdk360_gfx_init_fbo(vid); - snprintf(scalefactor, sizeof(scalefactor), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); - rarch_convert_char_to_wchar(strw_buffer, scalefactor, sizeof(strw_buffer)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); m_settingslist.SetText(SETTING_SCALE_FACTOR, strw_buffer); } } diff --git a/console/console_settings.c b/console/console_settings.c index 6b9c751237..87386dcb24 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -208,6 +208,15 @@ void rarch_settings_create_menu_item_label(wchar_t * strwbuf, unsigned setting, case S_LBL_ASPECT_RATIO: snprintf(str, sizeof(str), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); break; + case S_LBL_SHADER: + snprintf(str, sizeof(str), "Shader #1: %s", g_settings.video.cg_shader_path); + break; + case S_LBL_SHADER_2: + snprintf(str, sizeof(str), "Shader #2: %s", g_settings.video.second_pass_shader); + break; + case S_LBL_SCALE_FACTOR: + snprintf(str, sizeof(str), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); + break; } rarch_convert_char_to_wchar(strwbuf, str, size); diff --git a/console/console_settings.h b/console/console_settings.h index d74cd0980b..cd5baaba9e 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -78,6 +78,9 @@ enum enum { S_LBL_ASPECT_RATIO = 0, + S_LBL_SHADER, + S_LBL_SHADER_2, + S_LBL_SCALE_FACTOR }; void rarch_settings_change(unsigned setting); From 321697f029d6acb20e4acd6cb478499ea43f2db4 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 21:29:32 +0200 Subject: [PATCH 56/70] (360) Add changing of rotation / aspect ratio with left/right D-pad buttons --- 360/menu.cpp | 51 +++++++++++++------------------------- console/console_ext.c | 8 ++++++ console/console_ext.h | 4 +++ console/console_settings.c | 20 +++++++++------ console/console_settings.h | 4 ++- 5 files changed, 45 insertions(+), 42 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 02c3125651..014a9aa80c 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -311,21 +311,8 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) GetChildById(L"XuiQuickMenuList", &m_quickmenulist); GetChildById(L"XuiBackButton", &m_back); - switch(g_console.screen_orientation) - { - case ORIENTATION_NORMAL: - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Normal"); - break; - case ORIENTATION_VERTICAL: - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical"); - break; - case ORIENTATION_FLIPPED: - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped"); - break; - case ORIENTATION_FLIPPED_ROTATED: - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated"); - break; - } + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, strw_buffer); rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, strw_buffer); @@ -350,6 +337,12 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr rarch_settings_change(S_ASPECT_RATIO_DECREMENT); aspectratio_changed = true; break; + case MENU_ITEM_ORIENTATION: + rarch_settings_change(S_ROTATION_DECREMENT); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, strw_buffer); + video_xdk360.set_rotation(driver.video_data, g_console.screen_orientation); + break; default: break; } @@ -361,6 +354,12 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr rarch_settings_change(S_ASPECT_RATIO_INCREMENT); aspectratio_changed = true; break; + case MENU_ITEM_ORIENTATION: + rarch_settings_change(S_ROTATION_INCREMENT); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, strw_buffer); + video_xdk360.set_rotation(driver.video_data, g_console.screen_orientation); + break; default: break; } @@ -431,25 +430,9 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled rarch_settings_msg(S_MSG_NOT_IMPLEMENTED, S_DELAY_180); break; case MENU_ITEM_ORIENTATION: - switch(g_console.screen_orientation) - { - case ORIENTATION_NORMAL: - g_console.screen_orientation = ORIENTATION_VERTICAL; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Vertical"); - break; - case ORIENTATION_VERTICAL: - g_console.screen_orientation = ORIENTATION_FLIPPED; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped"); - break; - case ORIENTATION_FLIPPED: - g_console.screen_orientation = ORIENTATION_FLIPPED_ROTATED; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Flipped Rotated"); - break; - case ORIENTATION_FLIPPED_ROTATED: - g_console.screen_orientation = ORIENTATION_NORMAL; - m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, L"Orientation: Normal"); - break; - } + rarch_settings_default(S_DEF_ROTATION); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + m_quickmenulist.SetText(MENU_ITEM_ORIENTATION, strw_buffer); video_xdk360.set_rotation(driver.video_data, g_console.screen_orientation); break; case MENU_ITEM_RESIZE_MODE: diff --git a/console/console_ext.c b/console/console_ext.c index 186f7fcfa2..af6041b13e 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -495,6 +495,14 @@ struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = { { "Custom", 0.0f } }; +char rotation_lut[ASPECT_RATIO_END][PATH_MAX] = +{ + "Normal", + "Vertical", + "Flipped", + "Flipped Rotated" +}; + void rarch_set_auto_viewport(unsigned width, unsigned height) { if(width == 0 || height == 0) diff --git a/console/console_ext.h b/console/console_ext.h index 4e5cfe52ae..e307b85da1 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -65,6 +65,10 @@ enum rotation ORIENTATION_END }; +#define LAST_ORIENTATION (ORIENTATION_END-1) + +extern char rotation_lut[ASPECT_RATIO_END][PATH_MAX]; + struct aspect_ratio_elem { char name[64]; diff --git a/console/console_settings.c b/console/console_settings.c index 87386dcb24..f233fc938f 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -83,17 +83,17 @@ void rarch_settings_change(unsigned setting) g_console.ingame_menu_item = 0; g_console.mode_switch = MODE_MENU; break; - case S_REWIND: - g_settings.rewind_enable = !g_settings.rewind_enable; - break; - case S_ROTATION_DECREMENT: - if(g_console.screen_orientation > ORIENTATION_NORMAL) + case S_ROTATION_DECREMENT: + if(g_console.screen_orientation > 0) g_console.screen_orientation--; break; - case S_ROTATION_INCREMENT: - if((g_console.screen_orientation+1) < ORIENTATION_END) + case S_ROTATION_INCREMENT: + if(g_console.screen_orientation < LAST_ORIENTATION) g_console.screen_orientation++; break; + case S_REWIND: + g_settings.rewind_enable = !g_settings.rewind_enable; + break; case S_SAVESTATE_DECREMENT: if(g_extern.state_slot != 0) g_extern.state_slot--; @@ -138,6 +138,9 @@ void rarch_settings_default(unsigned setting) g_console.overscan_amount = 0.0f; g_console.overscan_enable = false; break; + case S_DEF_ROTATION: + g_console.screen_orientation = ORIENTATION_NORMAL; + break; case S_DEF_THROTTLE: g_console.throttle_enable = true; break; @@ -217,6 +220,9 @@ void rarch_settings_create_menu_item_label(wchar_t * strwbuf, unsigned setting, case S_LBL_SCALE_FACTOR: snprintf(str, sizeof(str), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); break; + case S_LBL_ROTATION: + snprintf(str, sizeof(str), "Rotation: %s", rotation_lut[g_console.screen_orientation]); + break; } rarch_convert_char_to_wchar(strwbuf, str, size); diff --git a/console/console_settings.h b/console/console_settings.h index cd5baaba9e..fc9faa679f 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -37,9 +37,9 @@ enum S_RETURN_TO_GAME, S_RETURN_TO_LAUNCHER, S_RETURN_TO_MENU, - S_REWIND, S_ROTATION_DECREMENT, S_ROTATION_INCREMENT, + S_REWIND, S_SAVESTATE_DECREMENT, S_SAVESTATE_INCREMENT, S_SCALE_ENABLED, @@ -55,6 +55,7 @@ enum S_DEF_HW_TEXTURE_FILTER, S_DEF_HW_TEXTURE_FILTER_2, S_DEF_OVERSCAN, + S_DEF_ROTATION, S_DEF_THROTTLE, S_DEF_TRIPLE_BUFFERING, S_DEF_SAVE_STATE, @@ -78,6 +79,7 @@ enum enum { S_LBL_ASPECT_RATIO = 0, + S_LBL_ROTATION, S_LBL_SHADER, S_LBL_SHADER_2, S_LBL_SCALE_FACTOR From 5f0991c0521df384e9cbff32a33311d7b91c8891 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 21:40:45 +0200 Subject: [PATCH 57/70] (360) Can increment/decrement save state slots now in Quick Menu --- 360/menu.cpp | 18 ++++++++++++++++++ console/console_settings.c | 3 +++ console/console_settings.h | 3 ++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/360/menu.cpp b/360/menu.cpp index 014a9aa80c..f4eb0bdd25 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -316,6 +316,10 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, strw_buffer); + + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_STATE_SLOT, sizeof(strw_buffer)); + m_quickmenulist.SetText(MENU_ITEM_LOAD_STATE, strw_buffer); + m_quickmenulist.SetText(MENU_ITEM_SAVE_STATE, strw_buffer); return 0; } @@ -333,6 +337,13 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr case XUI_CONTROL_NAVIGATE_LEFT: switch(current_index) { + case MENU_ITEM_LOAD_STATE: + case MENU_ITEM_SAVE_STATE: + rarch_state_slot_decrease(); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_STATE_SLOT, sizeof(strw_buffer)); + m_quickmenulist.SetText(MENU_ITEM_LOAD_STATE, strw_buffer); + m_quickmenulist.SetText(MENU_ITEM_SAVE_STATE, strw_buffer); + break; case MENU_ITEM_KEEP_ASPECT_RATIO: rarch_settings_change(S_ASPECT_RATIO_DECREMENT); aspectratio_changed = true; @@ -350,6 +361,13 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr case XUI_CONTROL_NAVIGATE_RIGHT: switch(current_index) { + case MENU_ITEM_LOAD_STATE: + case MENU_ITEM_SAVE_STATE: + rarch_state_slot_increase(); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_STATE_SLOT, sizeof(strw_buffer)); + m_quickmenulist.SetText(MENU_ITEM_LOAD_STATE, strw_buffer); + m_quickmenulist.SetText(MENU_ITEM_SAVE_STATE, strw_buffer); + break; case MENU_ITEM_KEEP_ASPECT_RATIO: rarch_settings_change(S_ASPECT_RATIO_INCREMENT); aspectratio_changed = true; diff --git a/console/console_settings.c b/console/console_settings.c index f233fc938f..e80e232fd1 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -223,6 +223,9 @@ void rarch_settings_create_menu_item_label(wchar_t * strwbuf, unsigned setting, case S_LBL_ROTATION: snprintf(str, sizeof(str), "Rotation: %s", rotation_lut[g_console.screen_orientation]); break; + case S_LBL_STATE_SLOT: + snprintf(str, sizeof(str), "Load State #%d", g_extern.state_slot); + break; } rarch_convert_char_to_wchar(strwbuf, str, size); diff --git a/console/console_settings.h b/console/console_settings.h index fc9faa679f..72ded2555c 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -82,7 +82,8 @@ enum S_LBL_ROTATION, S_LBL_SHADER, S_LBL_SHADER_2, - S_LBL_SCALE_FACTOR + S_LBL_SCALE_FACTOR, + S_LBL_STATE_SLOT, }; void rarch_settings_change(unsigned setting); From 074ff4b2fcb0df5579b9c05ab7f1a83e025af6bd Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 21:47:53 +0200 Subject: [PATCH 58/70] (360) Add S_LBL_RARCH_VERSION --- 360/menu.cpp | 5 +---- console/console_settings.c | 3 +++ console/console_settings.h | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index f4eb0bdd25..143ff5440b 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -506,12 +506,9 @@ HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) char core_text[256]; snprintf(core_text, sizeof(core_text), "%s (v%s)", id, info.library_version); - char package_version[32]; - snprintf(package_version, sizeof(core_text), "RetroArch %s", PACKAGE_VERSION); - rarch_convert_char_to_wchar(strw_buffer, core_text, sizeof(strw_buffer)); m_core.SetText(strw_buffer); - rarch_convert_char_to_wchar(strw_buffer, package_version, sizeof(strw_buffer)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_RARCH_VERSION, sizeof(strw_buffer)); m_title.SetText(strw_buffer); return 0; diff --git a/console/console_settings.c b/console/console_settings.c index e80e232fd1..9b5c8a319f 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -216,6 +216,9 @@ void rarch_settings_create_menu_item_label(wchar_t * strwbuf, unsigned setting, break; case S_LBL_SHADER_2: snprintf(str, sizeof(str), "Shader #2: %s", g_settings.video.second_pass_shader); + break; + case S_LBL_RARCH_VERSION: + snprintf(str, sizeof(str), "RetroArch %s", PACKAGE_VERSION); break; case S_LBL_SCALE_FACTOR: snprintf(str, sizeof(str), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); diff --git a/console/console_settings.h b/console/console_settings.h index 72ded2555c..4e9f6d90ff 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -79,6 +79,7 @@ enum enum { S_LBL_ASPECT_RATIO = 0, + S_LBL_RARCH_VERSION, S_LBL_ROTATION, S_LBL_SHADER, S_LBL_SHADER_2, From fcdeed2a823a94148e435f322eea6b41576c4509 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 21:59:03 +0200 Subject: [PATCH 59/70] (RARCH_CONSOLE) Non-unicode version of rarch_settings_create_menu_item_label if _XBOX is undefined --- console/console_settings.c | 27 ++++++++++++++++++--------- console/console_settings.h | 2 ++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/console/console_settings.c b/console/console_settings.c index 9b5c8a319f..86a4c2f00a 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -203,34 +203,43 @@ void rarch_settings_msg(unsigned setting, unsigned delay) #ifdef _XBOX void rarch_settings_create_menu_item_label(wchar_t * strwbuf, unsigned setting, size_t size) +#else +void rarch_settings_create_menu_item_label(char * str, unsigned setting, size_t size) +#endif { +#ifdef _XBOX char str[PATH_MAX]; + size_t SIZEOF_STR = sizeof(str); +#else + size_t SIZEOF_STR = size; +#endif switch (setting) { case S_LBL_ASPECT_RATIO: - snprintf(str, sizeof(str), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); + snprintf(str, SIZEOF_STR, "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); break; case S_LBL_SHADER: - snprintf(str, sizeof(str), "Shader #1: %s", g_settings.video.cg_shader_path); + snprintf(str, SIZEOF_STR, "Shader #1: %s", g_settings.video.cg_shader_path); break; case S_LBL_SHADER_2: - snprintf(str, sizeof(str), "Shader #2: %s", g_settings.video.second_pass_shader); + snprintf(str, SIZEOF_STR, "Shader #2: %s", g_settings.video.second_pass_shader); break; case S_LBL_RARCH_VERSION: - snprintf(str, sizeof(str), "RetroArch %s", PACKAGE_VERSION); + snprintf(str, SIZEOF_STR, "RetroArch %s", PACKAGE_VERSION); break; case S_LBL_SCALE_FACTOR: - snprintf(str, sizeof(str), "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); + snprintf(str, SIZEOF_STR, "Scale Factor: %f (X) / %f (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y); break; case S_LBL_ROTATION: - snprintf(str, sizeof(str), "Rotation: %s", rotation_lut[g_console.screen_orientation]); + snprintf(str, SIZEOF_STR, "Rotation: %s", rotation_lut[g_console.screen_orientation]); break; case S_LBL_STATE_SLOT: - snprintf(str, sizeof(str), "Load State #%d", g_extern.state_slot); + snprintf(str, SIZEOF_STR, "Load State #%d", g_extern.state_slot); break; } +#ifdef _XBOX rarch_convert_char_to_wchar(strwbuf, str, size); -} -#endif \ No newline at end of file +#endif +} \ No newline at end of file diff --git a/console/console_settings.h b/console/console_settings.h index 4e9f6d90ff..734e0f44fe 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -93,6 +93,8 @@ void rarch_settings_msg(unsigned setting, unsigned delay); #ifdef _XBOX void rarch_settings_create_menu_item_label(wchar_t * strwbuf, unsigned setting, size_t size); +#else +void rarch_settings_create_menu_item_label(char * str, unsigned setting, size_t size); #endif #endif From 841304619d763876843570f42472c3fe5f18e7c1 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 22:12:28 +0200 Subject: [PATCH 60/70] (360) Add LBL_LOAD_STATE_SLOT and LBL_SAVE_STATE_SLOT --- 360/menu.cpp | 10 +++++++--- console/console_settings.c | 7 +++++-- console/console_settings.h | 3 ++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 143ff5440b..b5113a3fa1 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -317,8 +317,10 @@ HRESULT CRetroArchQuickMenu::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_ITEM_KEEP_ASPECT_RATIO, strw_buffer); - rarch_settings_create_menu_item_label(strw_buffer, S_LBL_STATE_SLOT, sizeof(strw_buffer)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_ITEM_LOAD_STATE, strw_buffer); + + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_ITEM_SAVE_STATE, strw_buffer); return 0; @@ -340,8 +342,9 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr case MENU_ITEM_LOAD_STATE: case MENU_ITEM_SAVE_STATE: rarch_state_slot_decrease(); - rarch_settings_create_menu_item_label(strw_buffer, S_LBL_STATE_SLOT, sizeof(strw_buffer)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_ITEM_LOAD_STATE, strw_buffer); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_ITEM_SAVE_STATE, strw_buffer); break; case MENU_ITEM_KEEP_ASPECT_RATIO: @@ -364,8 +367,9 @@ HRESULT CRetroArchQuickMenu::OnControlNavigate(XUIMessageControlNavigate *pContr case MENU_ITEM_LOAD_STATE: case MENU_ITEM_SAVE_STATE: rarch_state_slot_increase(); - rarch_settings_create_menu_item_label(strw_buffer, S_LBL_STATE_SLOT, sizeof(strw_buffer)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_ITEM_LOAD_STATE, strw_buffer); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); m_quickmenulist.SetText(MENU_ITEM_SAVE_STATE, strw_buffer); break; case MENU_ITEM_KEEP_ASPECT_RATIO: diff --git a/console/console_settings.c b/console/console_settings.c index 86a4c2f00a..d65bf37f96 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -234,12 +234,15 @@ void rarch_settings_create_menu_item_label(char * str, unsigned setting, size_t case S_LBL_ROTATION: snprintf(str, SIZEOF_STR, "Rotation: %s", rotation_lut[g_console.screen_orientation]); break; - case S_LBL_STATE_SLOT: + case S_LBL_LOAD_STATE_SLOT: snprintf(str, SIZEOF_STR, "Load State #%d", g_extern.state_slot); break; + case S_LBL_SAVE_STATE_SLOT: + snprintf(str, SIZEOF_STR, "Save State #%d", g_extern.state_slot); + break; } #ifdef _XBOX rarch_convert_char_to_wchar(strwbuf, str, size); #endif -} \ No newline at end of file +} diff --git a/console/console_settings.h b/console/console_settings.h index 734e0f44fe..42739d8037 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -84,7 +84,8 @@ enum S_LBL_SHADER, S_LBL_SHADER_2, S_LBL_SCALE_FACTOR, - S_LBL_STATE_SLOT, + S_LBL_LOAD_STATE_SLOT, + S_LBL_SAVE_STATE_SLOT, }; void rarch_settings_change(unsigned setting); From 369e99efa82d6d4910bc4d3dde53f44f905e05e1 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 22:22:47 +0200 Subject: [PATCH 61/70] (PS3) Use rarch_settings_create_menu_item_label in PS3 port now too --- console/console_settings.c | 13 +++-- console/console_settings.h | 1 + ps3/menu.c | 102 +++++++++++++------------------------ 3 files changed, 45 insertions(+), 71 deletions(-) diff --git a/console/console_settings.c b/console/console_settings.c index d65bf37f96..d3cd8bf268 100644 --- a/console/console_settings.c +++ b/console/console_settings.c @@ -83,14 +83,19 @@ void rarch_settings_change(unsigned setting) g_console.ingame_menu_item = 0; g_console.mode_switch = MODE_MENU; break; - case S_ROTATION_DECREMENT: - if(g_console.screen_orientation > 0) + case S_ROTATION_DECREMENT: + if(g_console.screen_orientation > 0) g_console.screen_orientation--; break; - case S_ROTATION_INCREMENT: - if(g_console.screen_orientation < LAST_ORIENTATION) + case S_ROTATION_INCREMENT: + if(g_console.screen_orientation < LAST_ORIENTATION) g_console.screen_orientation++; break; + case S_START_RARCH: + g_console.menu_enable = false; + g_console.initialize_rarch_enable = 1; + g_console.mode_switch = MODE_EMULATION; + break; case S_REWIND: g_settings.rewind_enable = !g_settings.rewind_enable; break; diff --git a/console/console_settings.h b/console/console_settings.h index 42739d8037..d2ef16c157 100644 --- a/console/console_settings.h +++ b/console/console_settings.h @@ -45,6 +45,7 @@ enum S_SCALE_ENABLED, S_SCALE_FACTOR_DECREMENT, S_SCALE_FACTOR_INCREMENT, + S_START_RARCH, S_THROTTLE, S_TRIPLE_BUFFERING }; diff --git a/ps3/menu.c b/ps3/menu.c index 077098eeac..cd6095d27f 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -53,6 +53,7 @@ filebrowser_t browser; /* main file browser->for rom browser*/ filebrowser_t tmpBrowser; /* tmp file browser->for everything else*/ uint32_t set_shader = 0; static uint32_t currently_selected_controller_menu = 0; +static char strw_buffer[PATH_MAX]; static menu menu_filebrowser = { "FILE BROWSER |", /* title*/ @@ -1283,26 +1284,20 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) case SETTING_KEEP_ASPECT_RATIO: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state)) { - if(g_console.aspect_ratio_index > 0) - { - rarch_settings_change(S_ASPECT_RATIO_DECREMENT); - gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); - set_delay = DELAY_SMALL; - } + rarch_settings_change(S_ASPECT_RATIO_DECREMENT); + gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); + set_delay = DELAY_SMALL; } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { - if(g_console.aspect_ratio_index < ASPECT_RATIO_END-1) - { - rarch_settings_change(S_ASPECT_RATIO_INCREMENT); - gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); - set_delay = DELAY_SMALL; - } + rarch_settings_change(S_ASPECT_RATIO_INCREMENT); + gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); + set_delay = DELAY_SMALL; } if(CTRL_START(state)) { - rarch_settings_default(S_DEF_ASPECT_RATIO); - gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); + rarch_settings_default(S_DEF_ASPECT_RATIO); + gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); } break; case SETTING_HW_TEXTURE_FILTER: @@ -1948,10 +1943,8 @@ static void select_rom(void) rarch_extract_zipfile(rom_path_temp); else { - g_console.menu_enable = false; snprintf(g_console.rom_path, sizeof(g_console.rom_path), "%s/%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(browser), FILEBROWSER_GET_CURRENT_FILENAME(browser)); - g_console.initialize_rarch_enable = 1; - g_console.mode_switch = MODE_EMULATION; + rarch_settings_change(S_START_RARCH); } } } @@ -1990,7 +1983,7 @@ static void select_rom(void) static void ingame_menu(uint32_t menu_id) { - char comment[256], msg_temp[256]; + char comment[256]; static uint32_t menuitem_colors[MENU_ITEM_LAST]; uint64_t state, stuck_in_loop; static uint64_t blocking; @@ -2064,21 +2057,15 @@ static void ingame_menu(uint32_t menu_id) case MENU_ITEM_KEEP_ASPECT_RATIO: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state)) { - if(g_console.aspect_ratio_index > 0) - { - rarch_settings_change(S_ASPECT_RATIO_DECREMENT); - gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); - set_delay = DELAY_MEDIUM; - } + rarch_settings_change(S_ASPECT_RATIO_DECREMENT); + gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); + set_delay = DELAY_MEDIUM; } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state)) { - if(g_console.aspect_ratio_index < ASPECT_RATIO_END-1) - { - rarch_settings_change(S_ASPECT_RATIO_INCREMENT); - gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); - set_delay = DELAY_MEDIUM; - } + rarch_settings_change(S_ASPECT_RATIO_INCREMENT); + gfx_ctx_set_aspect_ratio(NULL, g_console.aspect_ratio_index); + set_delay = DELAY_MEDIUM; } if(CTRL_START(state)) { @@ -2110,29 +2097,21 @@ static void ingame_menu(uint32_t menu_id) case MENU_ITEM_ORIENTATION: if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_CROSS(state) || CTRL_LSTICK_LEFT(state)) { - bool should_rotate_decrement = g_console.screen_orientation > ORIENTATION_NORMAL; - if(should_rotate_decrement) - { - rarch_settings_change(S_ROTATION_DECREMENT); - video_gl.set_rotation(NULL, g_console.screen_orientation); - set_delay = DELAY_MEDIUM; - } + rarch_settings_change(S_ROTATION_DECREMENT); + video_gl.set_rotation(NULL, g_console.screen_orientation); + set_delay = DELAY_MEDIUM; } if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state) || CTRL_LSTICK_RIGHT(state)) { - bool should_rotate_increment = (g_console.screen_orientation+1) < ORIENTATION_END; - if(should_rotate_increment) - { - rarch_settings_change(S_ROTATION_INCREMENT); - video_gl.set_rotation(NULL, g_console.screen_orientation); - set_delay = DELAY_MEDIUM; - } + rarch_settings_change(S_ROTATION_INCREMENT); + video_gl.set_rotation(NULL, g_console.screen_orientation); + set_delay = DELAY_MEDIUM; } if(CTRL_START(state)) { - g_console.screen_orientation = ORIENTATION_NORMAL; + rarch_settings_default(S_DEF_ROTATION); video_gl.set_rotation(NULL, g_console.screen_orientation); } strlcpy(comment, "Press LEFT or RIGHT to change the [Orientation] settings.\nPress START to reset back to default values.", sizeof(comment)); @@ -2241,7 +2220,7 @@ static void ingame_menu(uint32_t menu_id) cellDbgFontPuts (0.09f, 0.05f, FONT_SIZE, RED, "QUICK MENU"); cellDbgFontPrintf (0.3f, 0.05f, 0.82f, WHITE, "Libretro core: %s", id); - cellDbgFontPrintf (0.9f, 0.09f, 0.82f, WHITE, "v%s", EMULATOR_VERSION); + cellDbgFontPrintf (0.8f, 0.09f, 0.82f, WHITE, "v%s", EMULATOR_VERSION); cellDbgFontPrintf(x_position, 0.14f, 1.4f, WHITE, "Resize Mode"); cellDbgFontPrintf(x_position, ypos, font_size, GREEN, "Viewport X: #%d", g_console.viewports.custom_vp.x); @@ -2411,37 +2390,26 @@ static void ingame_menu(uint32_t menu_id) } - switch(g_console.screen_orientation) - { - case ORIENTATION_NORMAL: - snprintf(msg_temp, sizeof(msg_temp), "Normal"); - break; - case ORIENTATION_VERTICAL: - snprintf(msg_temp, sizeof(msg_temp), "Vertical"); - break; - case ORIENTATION_FLIPPED: - snprintf(msg_temp, sizeof(msg_temp), "Flipped"); - break; - case ORIENTATION_FLIPPED_ROTATED: - snprintf(msg_temp, sizeof(msg_temp), "Flipped Rotated"); - break; - } - cellDbgFontPrintf(x_position, 0.14f, 1.4f, WHITE, "Quick Menu"); - cellDbgFontPrintf(x_position, ypos, font_size, MENU_ITEM_SELECTED(MENU_ITEM_LOAD_STATE), "Load State #%d", g_extern.state_slot); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_LOAD_STATE_SLOT, sizeof(strw_buffer)); + cellDbgFontPrintf(x_position, ypos, font_size, MENU_ITEM_SELECTED(MENU_ITEM_LOAD_STATE), strw_buffer); - cellDbgFontPrintf(x_position, ypos+(ypos_increment*MENU_ITEM_SAVE_STATE), font_size, MENU_ITEM_SELECTED(MENU_ITEM_SAVE_STATE), "Save State #%d", g_extern.state_slot); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); + cellDbgFontPrintf(x_position, ypos+(ypos_increment*MENU_ITEM_SAVE_STATE), font_size, MENU_ITEM_SELECTED(MENU_ITEM_SAVE_STATE), strw_buffer); cellDbgFontDraw(); - cellDbgFontPrintf(x_position, (ypos+(ypos_increment*MENU_ITEM_KEEP_ASPECT_RATIO)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_KEEP_ASPECT_RATIO), "Aspect Ratio: %s", aspectratio_lut[g_console.aspect_ratio_index].name); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); + cellDbgFontPrintf(x_position, (ypos+(ypos_increment*MENU_ITEM_KEEP_ASPECT_RATIO)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_KEEP_ASPECT_RATIO), strw_buffer); cellDbgFontPrintf(x_position, (ypos+(ypos_increment*MENU_ITEM_OVERSCAN_AMOUNT)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_OVERSCAN_AMOUNT), "Overscan: %f", g_console.overscan_amount); - cellDbgFontPrintf (x_position, (ypos+(ypos_increment*MENU_ITEM_ORIENTATION)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_ORIENTATION), "Orientation: %s", msg_temp); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); + cellDbgFontPrintf (x_position, (ypos+(ypos_increment*MENU_ITEM_ORIENTATION)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_ORIENTATION), strw_buffer); cellDbgFontDraw(); - cellDbgFontPrintf (x_position, (ypos+(ypos_increment*MENU_ITEM_SCALE_FACTOR)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_SCALE_FACTOR), "Scale Factor: %d", (int)(g_settings.video.fbo_scale_x)); + rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); + cellDbgFontPrintf (x_position, (ypos+(ypos_increment*MENU_ITEM_SCALE_FACTOR)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_SCALE_FACTOR), strw_buffer); cellDbgFontDraw(); cellDbgFontPrintf(x_position, (ypos+(ypos_increment*MENU_ITEM_RESIZE_MODE)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RESIZE_MODE), "Resize Mode"); From 8e37cd4d89f7c802764955cf9c8bc6baa0f754c5 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 29 May 2012 22:36:17 +0200 Subject: [PATCH 62/70] (360/PS3) Make Quick Menu enums universal for console ports --- 360/main.c | 1 - 360/menu.cpp | 1 - 360/shared.h | 36 ------------------------------------ 360/xdk360_input.c | 1 - 360/xdk360_video.cpp | 1 - console/console_ext.h | 24 ++++++++++++++++++++++++ ps3/menu.c | 4 ++-- ps3/shared.h | 20 -------------------- 8 files changed, 26 insertions(+), 62 deletions(-) delete mode 100644 360/shared.h diff --git a/360/main.c b/360/main.c index 58242aa5a1..05b8c8fa47 100644 --- a/360/main.c +++ b/360/main.c @@ -29,7 +29,6 @@ #include "../conf/config_file_macros.h" #include "../file.h" #include "../general.h" -#include "shared.h" #define DEVICE_MEMORY_UNIT0 1 #define DEVICE_MEMORY_UNIT1 2 diff --git a/360/menu.cpp b/360/menu.cpp index b5113a3fa1..05f2f4047d 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -23,7 +23,6 @@ #include "xdk360_video.h" #include "menu.h" #include "../message.h" -#include "shared.h" #include "../general.h" diff --git a/360/shared.h b/360/shared.h deleted file mode 100644 index fd711c7e3a..0000000000 --- a/360/shared.h +++ /dev/null @@ -1,36 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2012 - Hans-Kristian Arntzen - * Copyright (C) 2011-2012 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#ifndef _360_SHARED_H -#define _360_SHARED_H - -enum { - MENU_ITEM_LOAD_STATE = 0, - MENU_ITEM_SAVE_STATE, - MENU_ITEM_KEEP_ASPECT_RATIO, - MENU_ITEM_OVERSCAN_AMOUNT, - MENU_ITEM_ORIENTATION, - MENU_ITEM_RESIZE_MODE, - MENU_ITEM_FRAME_ADVANCE, - MENU_ITEM_SCREENSHOT_MODE, - MENU_ITEM_RESET, - MENU_ITEM_RETURN_TO_GAME, - MENU_ITEM_RETURN_TO_DASHBOARD -}; - -#define MENU_ITEM_LAST MENU_ITEM_RETURN_TO_DASHBOARD+1 - -#endif diff --git a/360/xdk360_input.c b/360/xdk360_input.c index ea9a249d6c..58a85c6940 100644 --- a/360/xdk360_input.c +++ b/360/xdk360_input.c @@ -22,7 +22,6 @@ #include "../libretro.h" #include "../console/console_ext.h" #include "xdk360_input.h" -#include "shared.h" #include "menu.h" static uint64_t state[4]; diff --git a/360/xdk360_video.cpp b/360/xdk360_video.cpp index 3390fa8c63..b13a42d827 100644 --- a/360/xdk360_video.cpp +++ b/360/xdk360_video.cpp @@ -31,7 +31,6 @@ #include "../console/console_ext.h" #include "../general.h" #include "../message.h" -#include "shared.h" #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/console/console_ext.h b/console/console_ext.h index e307b85da1..c192ab9b6b 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -115,6 +115,30 @@ void rarch_input_set_keybind(unsigned player, unsigned keybind_action, uint64_t RetroArch ============================================================ */ +enum { + MENU_ITEM_LOAD_STATE = 0, + MENU_ITEM_SAVE_STATE, + MENU_ITEM_KEEP_ASPECT_RATIO, + MENU_ITEM_OVERSCAN_AMOUNT, + MENU_ITEM_ORIENTATION, +#ifdef __CELLOS_LV2__ + MENU_ITEM_SCALE_FACTOR, +#endif + MENU_ITEM_RESIZE_MODE, + MENU_ITEM_FRAME_ADVANCE, + MENU_ITEM_SCREENSHOT_MODE, + MENU_ITEM_RESET, + MENU_ITEM_RETURN_TO_GAME, +#ifdef __CELLOS_LV2__ + MENU_ITEM_RETURN_TO_MENU, + MENU_ITEM_CHANGE_LIBRETRO, + MENU_ITEM_RETURN_TO_MULTIMAN, +#endif + MENU_ITEM_RETURN_TO_DASHBOARD +}; + +#define MENU_ITEM_LAST MENU_ITEM_RETURN_TO_DASHBOARD+1 + #ifdef HAVE_RARCH_MAIN_WRAP struct rarch_main_wrap diff --git a/ps3/menu.c b/ps3/menu.c index cd6095d27f..edfb2160b2 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -2359,7 +2359,7 @@ static void ingame_menu(uint32_t menu_id) } strlcpy(comment, "Press 'CROSS' to quit the emulator and return to multiMAN.", sizeof(comment)); break; - case MENU_ITEM_RETURN_TO_XMB: + case MENU_ITEM_RETURN_TO_DASHBOARD: if(CTRL_CROSS(state)) rarch_settings_change(S_RETURN_TO_DASHBOARD); @@ -2433,7 +2433,7 @@ static void ingame_menu(uint32_t menu_id) cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_MULTIMAN)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_MULTIMAN), "Return to multiMAN"); - cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_XMB)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_XMB), "Return to XMB"); + cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_DASHBOARD)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_DASHBOARD), "Return to XMB"); cellDbgFontDraw(); struct retro_system_info info; diff --git a/ps3/shared.h b/ps3/shared.h index cafcc1f64f..632be12571 100644 --- a/ps3/shared.h +++ b/ps3/shared.h @@ -51,26 +51,6 @@ enum SOUND_MODE_HEADSET }; -enum { - MENU_ITEM_LOAD_STATE = 0, - MENU_ITEM_SAVE_STATE, - MENU_ITEM_KEEP_ASPECT_RATIO, - MENU_ITEM_OVERSCAN_AMOUNT, - MENU_ITEM_ORIENTATION, - MENU_ITEM_SCALE_FACTOR, - MENU_ITEM_RESIZE_MODE, - MENU_ITEM_FRAME_ADVANCE, - MENU_ITEM_SCREENSHOT_MODE, - MENU_ITEM_RESET, - MENU_ITEM_RETURN_TO_GAME, - MENU_ITEM_RETURN_TO_MENU, - MENU_ITEM_CHANGE_LIBRETRO, - MENU_ITEM_RETURN_TO_MULTIMAN, - MENU_ITEM_RETURN_TO_XMB -}; - -#define MENU_ITEM_LAST MENU_ITEM_RETURN_TO_XMB+1 - extern char contentInfoPath[PATH_MAX]; extern char usrDirPath[PATH_MAX]; extern char DEFAULT_PRESET_FILE[PATH_MAX]; From 6222329a7bad4e4bd5a6708888ceb0613f4b0b95 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 22:52:08 +0200 Subject: [PATCH 63/70] (360) Fixed control strings in Controls menu --- 360/menu.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 05f2f4047d..3bef324116 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -130,8 +130,8 @@ HRESULT CRetroArchControls::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) for(i = 0; i < RARCH_FIRST_META_KEY; i++) { - rarch_convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); + rarch_convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); m_controlslist.SetText(i, strw_buffer); } @@ -149,8 +149,8 @@ HRESULT CRetroArchControls::OnControlNavigate(XUIMessageControlNavigate *pContro for(i = 0; i < RARCH_FIRST_META_KEY; i++) { - rarch_convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_default_libretro_keybind_name_lut[i], controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); + rarch_convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); m_controlslist.SetText(i, strw_buffer); } From 502fd8ff54dfa72343b0e7e950f19731f820850d Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 29 May 2012 23:00:38 +0200 Subject: [PATCH 64/70] (360) Use S_START_RARCH setting --- 360/menu.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/360/menu.cpp b/360/menu.cpp index 3bef324116..444e6bbf64 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -542,8 +542,7 @@ HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle { memset(g_console.rom_path, 0, sizeof(g_console.rom_path)); snprintf(g_console.rom_path, sizeof(g_console.rom_path), "%s\\%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(browser), strbuffer); - rarch_settings_change(S_RETURN_TO_GAME); - g_console.initialize_rarch_enable = 1; + rarch_settings_change(S_START_RARCH); } } else if(browser.cur[index].d_type == FILE_ATTRIBUTE_DIRECTORY) From 2f8c4c10a9d60f46c55142df768531b357d30f84 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 30 May 2012 01:19:25 +0200 Subject: [PATCH 65/70] (PS3) Fix reentrant ROM loading - input wasn't being brought up again after deiniting input - will just comment out cellPadEnd for now --- ps3/ps3_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ps3/ps3_input.c b/ps3/ps3_input.c index f92dd7fd8d..546d8c7312 100644 --- a/ps3/ps3_input.c +++ b/ps3/ps3_input.c @@ -244,7 +244,7 @@ void oskutil_unload(oskutil_params *params) static void ps3_free_input(void *data) { (void)data; - cellPadEnd(); + //cellPadEnd(); } static void* ps3_input_initialize(void) From f600bf437c353b8e1f71eff7e6ca24799c693055 Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 30 May 2012 01:20:14 +0200 Subject: [PATCH 66/70] Move message queue out of RetroArch core's control. --- general.h | 1 + retroarch.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/general.h b/general.h index 0deca7841a..40c75fe97a 100644 --- a/general.h +++ b/general.h @@ -482,6 +482,7 @@ bool rarch_main_iterate(void); void rarch_main_deinit(void); void rarch_render_cached_frame(void); void rarch_init_msg_queue(void); +void rarch_deinit_msg_queue(void); void rarch_load_state(void); void rarch_save_state(void); diff --git a/retroarch.c b/retroarch.c index 3311ee1333..0589e19257 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1148,7 +1148,12 @@ static void init_recording(void) params.fb_height = next_pow2(max_height); } - RARCH_LOG("Recording with FFmpeg to %s @ %ux%u. (FB size: %ux%u 32-bit: %s)\n", g_extern.record_path, params.out_width, params.out_height, params.fb_width, params.fb_height, params.rgb32 ? "yes" : "no"); + RARCH_LOG("Recording with FFmpeg to %s @ %ux%u. (FB size: %ux%u 32-bit: %s)\n", + g_extern.record_path, + params.out_width, params.out_height, + params.fb_width, params.fb_height, + params.rgb32 ? "yes" : "no"); + g_extern.rec = ffemu_new(¶ms); if (!g_extern.rec) { @@ -1175,7 +1180,7 @@ void rarch_init_msg_queue(void) rarch_assert(g_extern.msg_queue = msg_queue_new(8)); } -static void deinit_msg_queue(void) +void rarch_deinit_msg_queue(void) { if (g_extern.msg_queue) { @@ -2359,7 +2364,6 @@ int rarch_main_init(int argc, char *argv[]) goto error; init_system_av_info(); - rarch_init_msg_queue(); if (!g_extern.sram_load_disable) load_save_files(); @@ -2539,7 +2543,6 @@ void rarch_main_deinit(void) #ifdef HAVE_BSV_MOVIE deinit_movie(); #endif - deinit_msg_queue(); pretro_unload_game(); pretro_deinit(); @@ -2553,8 +2556,10 @@ int main(int argc, char *argv[]) { int init_ret; if ((init_ret = rarch_main_init(argc, argv))) return init_ret; + rarch_init_msg_queue(); while (rarch_main_iterate()); rarch_main_deinit(); + rarch_deinit_msg_queue(); rarch_main_clear_state(); return 0; } From 3fd10a723daf95c1e01c0831ad03d4d81fc79ca1 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 30 May 2012 16:30:25 +0200 Subject: [PATCH 67/70] (PS3) Cleanups --- Makefile.ps3 | 2 +- console/console_ext.h | 33 +++++++++++++++++++++ console/libretro_mgmt.h | 8 +++++ gfx/context/ps3_ctx.c | 2 +- gfx/context/xdk360_ctx.c | 4 +++ gfx/gfx_context.h | 1 + ps3/main.c | 13 +++++++-- ps3/menu.c | 63 +++++++++++++++++++++------------------- ps3/ps3_video_psgl.h | 1 - ps3/shared.h | 27 ----------------- 10 files changed, 92 insertions(+), 62 deletions(-) diff --git a/Makefile.ps3 b/Makefile.ps3 index 7ea9033349..f42249d76b 100644 --- a/Makefile.ps3 +++ b/Makefile.ps3 @@ -68,7 +68,7 @@ endif PPU_LDLIBS = -ldbgfont $(GL_LIBS) -lretro -lcgc -lgcm_cmd -lgcm_sys_stub -lresc_stub -lm -lio_stub -lfs_stub -lsysutil_stub -lsysutil_game_stub -lsysutil_screenshot_stub -lsysutil_np_stub -lpngdec_stub -ljpgdec_stub -lsysmodule_stub -laudio_stub -lnet_stub -lnetctl_stub -lpthread -DEFINES += -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_OPENGL_TEXREF -DHAVE_VID_CONTEXT -DHAVE_OPENGLES -DHAVE_CG -DHAVE_CG_MENU -DHAVE_FILEBROWSER -DHAVE_FBO -DHAVE_RARCH_MAIN_WRAP -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_RGL -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RSOUND -DHAVE_ZLIB -D__CELLOS_LV2__ -DHAVE_CONFIGFILE=1 -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_GRIFFIN=1 -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Dmain=rarch_main -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) +DEFINES += -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_OPENGL_TEXREF -DHAVE_HEADSET -DHAVE_VID_CONTEXT -DHAVE_OPENGLES -DHAVE_CG -DHAVE_CG_MENU -DHAVE_FILEBROWSER -DHAVE_FBO -DHAVE_RARCH_MAIN_WRAP -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_RGL -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RSOUND -DHAVE_ZLIB -D__CELLOS_LV2__ -DHAVE_CONFIGFILE=1 -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_GRIFFIN=1 -DHAVE_MULTIMAN=1 -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Dmain=rarch_main -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) ifeq ($(DEBUG), 1) PPU_OPTIMIZE_LV := -O0 -g diff --git a/console/console_ext.h b/console/console_ext.h index c192ab9b6b..299c8f33e8 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -27,6 +27,10 @@ #define IS_TIMER_EXPIRED(handle) (!(IS_TIMER_NOT_EXPIRED(handle))) #define SET_TIMER_EXPIRATION(handle, value) (g_console.timer_expiration_frame_count = handle->frame_count + value) +/*============================================================ + VIDEO +============================================================ */ + enum aspect_ratio { ASPECT_RATIO_1_1 = 0, @@ -69,6 +73,20 @@ enum rotation extern char rotation_lut[ASPECT_RATIO_END][PATH_MAX]; +/* ABGR color format defines */ + +#define WHITE 0xffffffffu +#define RED 0xff0000ffu +#define GREEN 0xff00ff00u +#define BLUE 0xffff0000u +#define YELLOW 0xff00ffffu +#define PURPLE 0xffff00ffu +#define CYAN 0xffffff00u +#define ORANGE 0xff0063ffu +#define SILVER 0xff8c848cu +#define LIGHTBLUE 0xFFFFE0E0U +#define LIGHTORANGE 0xFFE0EEFFu + struct aspect_ratio_elem { char name[64]; @@ -81,6 +99,21 @@ extern void rarch_set_auto_viewport(unsigned width, unsigned height); #include "console_ext_input.h" +/*============================================================ + SOUND +============================================================ */ + +enum +{ + SOUND_MODE_NORMAL, +#ifdef HAVE_RSOUND + SOUND_MODE_RSOUND, +#endif +#ifdef HAVE_HEADSET + SOUND_MODE_HEADSET, +#endif +}; + /*============================================================ ROM EXTENSIONS ============================================================ */ diff --git a/console/libretro_mgmt.h b/console/libretro_mgmt.h index 4202441ce5..b32db42850 100644 --- a/console/libretro_mgmt.h +++ b/console/libretro_mgmt.h @@ -19,6 +19,14 @@ #include "../boolean.h" +enum +{ + EXTERN_LAUNCHER_SALAMANDER, +#ifdef HAVE_MULTIMAN + EXTERN_LAUNCHER_MULTIMAN +#endif +}; + const char *rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext); const char *rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext); diff --git a/gfx/context/ps3_ctx.c b/gfx/context/ps3_ctx.c index 0822cbc4ee..9ceb59059b 100644 --- a/gfx/context/ps3_ctx.c +++ b/gfx/context/ps3_ctx.c @@ -324,7 +324,7 @@ void ps3_previous_resolution (void) } } -int ps3_check_resolution(uint32_t resolution_id) +int gfx_ctx_check_resolution(unsigned resolution_id) { return cellVideoOutGetResolutionAvailability(CELL_VIDEO_OUT_PRIMARY, resolution_id, CELL_VIDEO_OUT_ASPECT_AUTO, 0); } diff --git a/gfx/context/xdk360_ctx.c b/gfx/context/xdk360_ctx.c index 31d7453d40..0d4bbc4241 100644 --- a/gfx/context/xdk360_ctx.c +++ b/gfx/context/xdk360_ctx.c @@ -133,3 +133,7 @@ void gfx_ctx_set_overscan(void) d3d9->should_resize = true; } +int gfx_ctx_check_resolution(unsigned resolution_id) +{ + return 0; +} diff --git a/gfx/gfx_context.h b/gfx/gfx_context.h index cd1ba4cb52..a72fa0e6c2 100644 --- a/gfx/gfx_context.h +++ b/gfx/gfx_context.h @@ -75,6 +75,7 @@ bool gfx_ctx_menu_init(void); #ifdef RARCH_CONSOLE void gfx_ctx_set_filtering(unsigned index, bool set_smooth); void gfx_ctx_get_available_resolutions(void); +int gfx_ctx_check_resolution(unsigned resolution_id); #endif #if defined(HAVE_OPENGL) || defined(HAVE_D3D9) diff --git a/ps3/main.c b/ps3/main.c index b289707017..9a5fb096d6 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -73,7 +73,9 @@ char DEFAULT_SHADER_FILE[PATH_MAX]; char DEFAULT_MENU_SHADER_FILE[PATH_MAX]; char SYS_CONFIG_FILE[PATH_MAX]; char EMULATOR_CORE_SELF[PATH_MAX]; +#ifdef HAVE_MULTIMAN char MULTIMAN_EXECUTABLE[PATH_MAX]; +#endif int rarch_main(int argc, char *argv[]); @@ -197,6 +199,7 @@ static void get_environment_settings(int argc, char *argv[]) RARCH_ERR("System cache partition could not be mounted, it might be already mounted.\n"); } +#ifdef HAVE_MULTIMAN if(argc > 1) { /* launched from external launcher */ @@ -215,6 +218,7 @@ static void get_environment_settings(int argc, char *argv[]) RARCH_LOG("Started from multiMAN, auto-game start enabled.\n"); } else +#endif { g_console.external_launcher_support = EXTERN_LAUNCHER_SALAMANDER; RARCH_WARN("Not started from multiMAN, auto-game start disabled.\n"); @@ -248,11 +252,13 @@ static void get_environment_settings(int argc, char *argv[]) ret = cellGameContentPermit(contentInfoPath, usrDirPath); +#ifdef HAVE_MULTIMAN if(g_console.external_launcher_support == EXTERN_LAUNCHER_MULTIMAN) { snprintf(contentInfoPath, sizeof(contentInfoPath), "/dev_hdd0/game/%s", EMULATOR_CONTENT_DIR); snprintf(usrDirPath, sizeof(usrDirPath), "/dev_hdd0/game/%s/USRDIR", EMULATOR_CONTENT_DIR); } +#endif if(ret < 0) { @@ -370,13 +376,16 @@ int main(int argc, char *argv[]) case EXTERN_LAUNCHER_SALAMANDER: g_console.mode_switch = MODE_MENU; break; +#ifdef HAVE_MULTIMAN case EXTERN_LAUNCHER_MULTIMAN: RARCH_LOG("Started from multiMAN, will auto-start game.\n"); strlcpy(g_console.rom_path, argv[1], sizeof(g_console.rom_path)); - g_console.initialize_rarch_enable = 1; - g_console.mode_switch = MODE_EMULATION; + rarch_settings_change(S_START_RARCH); rarch_startup(SYS_CONFIG_FILE); break; +#endif + default: + break; } begin_loop: diff --git a/ps3/menu.c b/ps3/menu.c index edfb2160b2..c1704387f3 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -48,7 +48,6 @@ int menuStackindex = 0; static bool set_initial_dir_tmpbrowser; static bool set_libretro_core_as_launch; -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 tmpBrowser; /* tmp file browser->for everything else*/ uint32_t set_shader = 0; @@ -151,6 +150,8 @@ static menu menu_controlssettings = { static void display_menubar(uint32_t menu_enum) { + gl_t *gl = driver.video_data; + cellDbgFontPuts (0.09f, 0.05f, FONT_SIZE, menu_enum == GENERAL_VIDEO_MENU ? RED : GREEN, menu_generalvideosettings.title); cellDbgFontPuts (0.19f, 0.05f, FONT_SIZE, menu_enum == GENERAL_AUDIO_MENU ? RED : GREEN, menu_generalaudiosettings.title); cellDbgFontPuts (0.29f, 0.05f, FONT_SIZE, menu_enum == EMU_GENERAL_MENU ? RED : GREEN, menu_emu_settings.title); @@ -159,7 +160,7 @@ static void display_menubar(uint32_t menu_enum) cellDbgFontPuts (0.09f, 0.09f, FONT_SIZE, menu_enum == PATH_MENU ? RED : GREEN, menu_pathsettings.title); cellDbgFontPuts (0.19f, 0.09f, FONT_SIZE, menu_enum == CONTROLS_MENU ? RED : GREEN, menu_controlssettings.title); cellDbgFontPrintf (0.8f, 0.09f, 0.82f, WHITE, "v%s", EMULATOR_VERSION); - cellDbgFontDraw(); + gl_render_msg_post(gl); } enum @@ -199,7 +200,6 @@ static void set_delay_speed(unsigned delaymode) break; } - strlcpy(special_action_msg, "", sizeof(special_action_msg)); SET_TIMER_EXPIRATION(gl, speed); } @@ -327,6 +327,7 @@ static void browser_update(filebrowser_t * b) static void browser_render(filebrowser_t * b) { + gl_t *gl = driver.video_data; uint32_t file_count = b->file_count; int current_index, page_number, page_base, i; float currentX, currentY, ySpacing; @@ -343,9 +344,9 @@ static void browser_render(filebrowser_t * b) { currentY = currentY + ySpacing; cellDbgFontPuts(currentX, currentY, FONT_SIZE, i == current_index ? RED : b->cur[i].d_type == CELL_FS_TYPE_DIRECTORY ? GREEN : WHITE, b->cur[i].d_name); - cellDbgFontDraw(); + gl_render_msg_post(gl); } - cellDbgFontDraw(); + gl_render_msg_post(gl); } static void set_setting_label(menu * menu_obj, uint64_t currentsetting) @@ -951,7 +952,7 @@ static void select_file(uint32_t menu_id) cellDbgFontPuts (0.09f, 0.05f, FONT_SIZE, RED, title); cellDbgFontPrintf(0.09f, 0.92f, 0.92, YELLOW, "X - Select %s /\\ - return to settings START - Reset Startdir", object); cellDbgFontPrintf(0.09f, 0.83f, 0.91f, LIGHTBLUE, "%s", comment); - cellDbgFontDraw(); + gl_render_msg_post(gl); browser_render(&tmpBrowser); old_state = state; @@ -1051,7 +1052,7 @@ static void select_directory(uint32_t menu_id) "X - Enter dir /\\ - return to settings START - Reset Startdir"); cellDbgFontPrintf(0.09f, 0.83f, 0.91f, LIGHTBLUE, "%s", "INFO - Browse to a directory and assign it as the path by\npressing SQUARE button."); - cellDbgFontDraw(); + gl_render_msg_post(gl); browser_render(&tmpBrowser); old_state = state; @@ -1180,7 +1181,7 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) { if (g_console.supported_resolutions[g_console.current_resolution_index] == CELL_VIDEO_OUT_RESOLUTION_576) { - if(ps3_check_resolution(CELL_VIDEO_OUT_RESOLUTION_576)) + if(gfx_ctx_check_resolution(CELL_VIDEO_OUT_RESOLUTION_576)) { //ps3graphics_set_pal60hz(Settings.PS3PALTemporalMode60Hz); video_gl.restart(); @@ -1870,7 +1871,7 @@ static void select_setting(menu * menu_obj) } display_menubar(menu_obj->enum_id); - cellDbgFontDraw(); + gl_render_msg_post(gl); for ( i = menu_obj->first_setting; i < menu_obj->max_settings; i++) { @@ -1878,7 +1879,7 @@ static void select_setting(menu * menu_obj) { cellDbgFontPuts(menu_obj->items[i].text_xpos, menu_obj->items[i].text_ypos, FONT_SIZE, menu_obj->selected == menu_obj->items[i].enum_id ? YELLOW : menu_obj->items[i].item_color, menu_obj->items[i].text); cellDbgFontPuts(0.5f, menu_obj->items[i].text_ypos, FONT_SIZE, menu_obj->items[i].text_color, menu_obj->items[i].setting_text); - cellDbgFontDraw(); + gl_render_msg_post(gl); } } @@ -1886,7 +1887,7 @@ static void select_setting(menu * menu_obj) cellDbgFontPuts(0.09f, 0.91f, FONT_SIZE, YELLOW, "UP/DOWN - select L3+R3 - resume game X/LEFT/RIGHT - change"); cellDbgFontPuts(0.09f, 0.95f, FONT_SIZE, YELLOW, "START - default L1/CIRCLE - go back R1 - go forward"); - cellDbgFontDraw(); + gl_render_msg_post(gl); old_state = state; } @@ -1973,7 +1974,7 @@ static void select_rom(void) "PATH: %s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(browser)); cellDbgFontPuts (0.09f, 0.93f, FONT_SIZE, YELLOW, "L3 + R3 - resume game SELECT - Settings screen"); - cellDbgFontDraw(); + gl_render_msg_post(gl); browser_render(&browser); old_state = state; @@ -2235,7 +2236,7 @@ static void ingame_menu(uint32_t menu_id) cellDbgFontPrintf (0.09f, 0.46f, font_size, LIGHTBLUE, "LEFT or LSTICK UP"); cellDbgFontPrintf (0.5f, 0.46f, font_size, LIGHTBLUE, "- Decrease Viewport X"); - cellDbgFontDraw(); + gl_render_msg_post(gl); cellDbgFontPrintf (0.09f, 0.48f, font_size, LIGHTBLUE, "RIGHT or LSTICK RIGHT"); cellDbgFontPrintf (0.5f, 0.48f, font_size, LIGHTBLUE, "- Increase Viewport X"); @@ -2243,7 +2244,7 @@ static void ingame_menu(uint32_t menu_id) cellDbgFontPrintf (0.09f, 0.50f, font_size, LIGHTBLUE, "UP or LSTICK UP"); cellDbgFontPrintf (0.5f, 0.50f, font_size, LIGHTBLUE, "- Increase Viewport Y"); - cellDbgFontDraw(); + gl_render_msg_post(gl); cellDbgFontPrintf (0.09f, 0.52f, font_size, LIGHTBLUE, "DOWN or LSTICK DOWN"); cellDbgFontPrintf (0.5f, 0.52f, font_size, LIGHTBLUE, "- Decrease Viewport Y"); @@ -2251,7 +2252,7 @@ static void ingame_menu(uint32_t menu_id) cellDbgFontPrintf (0.09f, 0.54f, font_size, LIGHTBLUE, "L1 or RSTICK LEFT"); cellDbgFontPrintf (0.5f, 0.54f, font_size, LIGHTBLUE, "- Decrease Viewport Width"); - cellDbgFontDraw(); + gl_render_msg_post(gl); cellDbgFontPrintf (0.09f, 0.56f, font_size, LIGHTBLUE, "R1 or RSTICK RIGHT"); cellDbgFontPrintf (0.5f, 0.56f, font_size, LIGHTBLUE, "- Increase Viewport Width"); @@ -2259,7 +2260,7 @@ static void ingame_menu(uint32_t menu_id) cellDbgFontPrintf (0.09f, 0.58f, font_size, LIGHTBLUE, "L2 or RSTICK UP"); cellDbgFontPrintf (0.5f, 0.58f, font_size, LIGHTBLUE, "- Increase Viewport Height"); - cellDbgFontDraw(); + gl_render_msg_post(gl); cellDbgFontPrintf (0.09f, 0.60f, font_size, LIGHTBLUE, "R2 or RSTICK DOWN"); cellDbgFontPrintf (0.5f, 0.60f, font_size, LIGHTBLUE, "- Decrease Viewport Height"); @@ -2273,10 +2274,10 @@ static void ingame_menu(uint32_t menu_id) cellDbgFontPrintf (0.09f, 0.70f, font_size, LIGHTBLUE, "CIRCLE"); cellDbgFontPrintf (0.5f, 0.70f, font_size, LIGHTBLUE, "- Return to Ingame Menu"); - cellDbgFontDraw(); + gl_render_msg_post(gl); cellDbgFontPrintf (0.09f, 0.83f, 0.91f, LIGHTBLUE, "Allows you to resize the screen by moving around the two analog sticks.\nPress TRIANGLE to reset to default values, and CIRCLE to go back to the menu."); - cellDbgFontDraw(); + gl_render_msg_post(gl); } gfx_ctx_swap_buffers(); #ifdef HAVE_SYSUTILS @@ -2349,6 +2350,7 @@ static void ingame_menu(uint32_t menu_id) } strlcpy(comment, "Press 'CROSS' to choose a different emulator core.", sizeof(comment)); break; +#ifdef HAVE_MULTIMAN case MENU_ITEM_RETURN_TO_MULTIMAN: if(CTRL_CROSS(state) && path_file_exists(MULTIMAN_EXECUTABLE)) { @@ -2359,6 +2361,7 @@ static void ingame_menu(uint32_t menu_id) } strlcpy(comment, "Press 'CROSS' to quit the emulator and return to multiMAN.", sizeof(comment)); break; +#endif case MENU_ITEM_RETURN_TO_DASHBOARD: if(CTRL_CROSS(state)) rarch_settings_change(S_RETURN_TO_DASHBOARD); @@ -2397,7 +2400,7 @@ static void ingame_menu(uint32_t menu_id) rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SAVE_STATE_SLOT, sizeof(strw_buffer)); cellDbgFontPrintf(x_position, ypos+(ypos_increment*MENU_ITEM_SAVE_STATE), font_size, MENU_ITEM_SELECTED(MENU_ITEM_SAVE_STATE), strw_buffer); - cellDbgFontDraw(); + gl_render_msg_post(gl); rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ASPECT_RATIO, sizeof(strw_buffer)); cellDbgFontPrintf(x_position, (ypos+(ypos_increment*MENU_ITEM_KEEP_ASPECT_RATIO)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_KEEP_ASPECT_RATIO), strw_buffer); @@ -2406,11 +2409,11 @@ static void ingame_menu(uint32_t menu_id) rarch_settings_create_menu_item_label(strw_buffer, S_LBL_ROTATION, sizeof(strw_buffer)); cellDbgFontPrintf (x_position, (ypos+(ypos_increment*MENU_ITEM_ORIENTATION)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_ORIENTATION), strw_buffer); - cellDbgFontDraw(); + gl_render_msg_post(gl); rarch_settings_create_menu_item_label(strw_buffer, S_LBL_SCALE_FACTOR, sizeof(strw_buffer)); cellDbgFontPrintf (x_position, (ypos+(ypos_increment*MENU_ITEM_SCALE_FACTOR)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_SCALE_FACTOR), strw_buffer); - cellDbgFontDraw(); + gl_render_msg_post(gl); cellDbgFontPrintf(x_position, (ypos+(ypos_increment*MENU_ITEM_RESIZE_MODE)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RESIZE_MODE), "Resize Mode"); @@ -2418,23 +2421,25 @@ static void ingame_menu(uint32_t menu_id) cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_SCREENSHOT_MODE)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_SCREENSHOT_MODE), "Screenshot Mode"); - cellDbgFontDraw(); + gl_render_msg_post(gl); cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RESET)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RESET), "Reset"); cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_GAME)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_GAME), "Return to Game"); - cellDbgFontDraw(); + gl_render_msg_post(gl); cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_MENU)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_MENU), "Return to Menu"); - cellDbgFontDraw(); + gl_render_msg_post(gl); cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_CHANGE_LIBRETRO)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_CHANGE_LIBRETRO), "Change libretro core"); - cellDbgFontDraw(); + gl_render_msg_post(gl); +#ifdef HAVE_MULTIMAN cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_MULTIMAN)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_MULTIMAN), "Return to multiMAN"); +#endif cellDbgFontPuts(x_position, (ypos+(ypos_increment*MENU_ITEM_RETURN_TO_DASHBOARD)), font_size, MENU_ITEM_SELECTED(MENU_ITEM_RETURN_TO_DASHBOARD), "Return to XMB"); - cellDbgFontDraw(); + gl_render_msg_post(gl); struct retro_system_info info; retro_get_system_info(&info); @@ -2443,11 +2448,9 @@ static void ingame_menu(uint32_t menu_id) cellDbgFontPuts(0.09f, 0.05f, FONT_SIZE, RED, "QUICK MENU"); cellDbgFontPrintf (0.3f, 0.05f, 0.82f, WHITE, "Libretro core: %s", id); cellDbgFontPrintf (0.8f, 0.09f, 0.82f, WHITE, "v%s", EMULATOR_VERSION); - cellDbgFontDraw(); - cellDbgFontPrintf (0.05f, 0.90f, 1.10f, WHITE, special_action_msg); - cellDbgFontDraw(); + gl_render_msg_post(gl); cellDbgFontPrintf(0.09f, 0.83f, 0.91f, LIGHTBLUE, comment); - cellDbgFontDraw(); + gl_render_msg_post(gl); old_state = state; } diff --git a/ps3/ps3_video_psgl.h b/ps3/ps3_video_psgl.h index eb4a935ee6..f0dceb6187 100644 --- a/ps3/ps3_video_psgl.h +++ b/ps3/ps3_video_psgl.h @@ -33,7 +33,6 @@ enum #define MAX_SCALING_FACTOR (4.0f) const char * ps3_get_resolution_label(uint32_t resolution); -int ps3_check_resolution(uint32_t resolution_id); void ps3_previous_resolution (void); void ps3_next_resolution (void); diff --git a/ps3/shared.h b/ps3/shared.h index 632be12571..7f6bb507ca 100644 --- a/ps3/shared.h +++ b/ps3/shared.h @@ -17,26 +17,6 @@ #ifndef _PS3_SHARED_H #define _PS3_SHARED_H -/* ABGR color format */ - -#define WHITE 0xffffffffu -#define RED 0xff0000ffu -#define GREEN 0xff00ff00u -#define BLUE 0xffff0000u -#define YELLOW 0xff00ffffu -#define PURPLE 0xffff00ffu -#define CYAN 0xffffff00u -#define ORANGE 0xff0063ffu -#define SILVER 0xff8c848cu -#define LIGHTBLUE 0xFFFFE0E0U -#define LIGHTORANGE 0xFFE0EEFFu - -enum -{ - EXTERN_LAUNCHER_SALAMANDER, - EXTERN_LAUNCHER_MULTIMAN -}; - enum { CONFIG_FILE, @@ -44,13 +24,6 @@ enum INPUT_PRESET_FILE }; -enum -{ - SOUND_MODE_NORMAL, - SOUND_MODE_RSOUND, - SOUND_MODE_HEADSET -}; - extern char contentInfoPath[PATH_MAX]; extern char usrDirPath[PATH_MAX]; extern char DEFAULT_PRESET_FILE[PATH_MAX]; From 3902bc19b3bfcd402d363c9c6cf503116d5df264 Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 30 May 2012 16:55:23 +0200 Subject: [PATCH 68/70] Fix strange newlines. --- gfx/gfx_context.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/gfx/gfx_context.h b/gfx/gfx_context.h index a72fa0e6c2..b71bedd1ff 100644 --- a/gfx/gfx_context.h +++ b/gfx/gfx_context.h @@ -1,8 +1,6 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2012 - Hans-Kristian Arntzen * - - * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. From 3e6a10ffb6d5d5c1d382eee043d7a99bebc7bb52 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 30 May 2012 17:02:38 +0200 Subject: [PATCH 69/70] (PS3) Add some Griffin overrides --- console/griffin/hook.h | 7 +++++++ gfx/context/ps3_ctx.c | 8 +++++--- gfx/context/xdk360_ctx.c | 2 ++ gfx/fonts/ps3_libdbgfont.c | 1 - gfx/gfx_context.h | 6 ++++-- gfx/gl.c | 28 +++++++++++++--------------- gfx/gl_font.h | 1 + 7 files changed, 32 insertions(+), 21 deletions(-) diff --git a/console/griffin/hook.h b/console/griffin/hook.h index 00748010a0..a7b6890503 100644 --- a/console/griffin/hook.h +++ b/console/griffin/hook.h @@ -40,6 +40,9 @@ #define video_set_rotation_func(rotation) gl_set_rotation(driver.video_data, rotation) #define video_set_aspect_ratio_func(aspectratio_idx) gfx_ctx_set_aspect_ratio(driver.video_data, aspectratio_idx) +#define gfx_ctx_window_has_focus() (true) +#define gfx_ctx_swap_buffers() (psglSwap()) + #define input_init_func() ps3_input_initialize() #define input_poll_func() ps3_input_poll(driver.input_data) #define input_input_state_func(snes_keybinds, port, device, index, id) \ @@ -65,6 +68,9 @@ #define video_set_rotation_func(rotation) xdk360_set_rotation(driver.video_data, rotation) #define video_set_aspect_ratio_func(aspectratio_idx) gfx_ctx_set_aspect_ratio(driver.video_data, aspectratio_idx) +#define gfx_ctx_window_has_focus() (true) +#define gfx_ctx_swap_buffers() (d3d9->d3d_render_device->Present(NULL, NULL, NULL, NULL)) + #define input_init_func() xdk360_input_initialize() #define input_poll_func() xdk360_input_poll(driver.input_data) #define input_input_state_func(snes_keybinds, port, device, index, id) \ @@ -95,5 +101,6 @@ wii_input_state(driver.input_data, snes_keybinds, port, device, index, id) #define input_key_pressed_func(key) wii_key_pressed(driver.input_data, key) #define input_free_func() wii_free_input(driver.input_data) +#define gfx_ctx_window_has_focus() (true) #endif diff --git a/gfx/context/ps3_ctx.c b/gfx/context/ps3_ctx.c index 9ceb59059b..4d137d574f 100644 --- a/gfx/context/ps3_ctx.c +++ b/gfx/context/ps3_ctx.c @@ -95,17 +95,20 @@ void gfx_ctx_check_window(bool *quit, *resize = true; } +#ifndef HAVE_GRIFFIN bool gfx_ctx_window_has_focus(void) { return true; } -void gfx_ctx_set_resize(unsigned width, unsigned height) { } - void gfx_ctx_swap_buffers(void) { psglSwap(); } +#endif + +void gfx_ctx_set_resize(unsigned width, unsigned height) { } + bool gfx_ctx_menu_init(void) { @@ -408,4 +411,3 @@ void gfx_ctx_set_overscan(void) gl->should_resize = true; } - diff --git a/gfx/context/xdk360_ctx.c b/gfx/context/xdk360_ctx.c index 0d4bbc4241..2d74278040 100644 --- a/gfx/context/xdk360_ctx.c +++ b/gfx/context/xdk360_ctx.c @@ -58,11 +58,13 @@ bool gfx_ctx_window_has_focus(void) void gfx_ctx_set_resize(unsigned width, unsigned height) { } +#ifndef HAVE_GRIFFIN void gfx_ctx_swap_buffers(void) { xdk360_video_t *d3d9 = (xdk360_video_t*)driver.video_data; d3d9->d3d_render_device->Present(NULL, NULL, NULL, NULL); } +#endif bool gfx_ctx_menu_init(void) { diff --git a/gfx/fonts/ps3_libdbgfont.c b/gfx/fonts/ps3_libdbgfont.c index 3279d9fc0b..9ed58d8f34 100644 --- a/gfx/fonts/ps3_libdbgfont.c +++ b/gfx/fonts/ps3_libdbgfont.c @@ -46,4 +46,3 @@ void gl_render_msg_post(gl_t *gl) { cellDbgFontDraw(); } - diff --git a/gfx/gfx_context.h b/gfx/gfx_context.h index b71bedd1ff..56961e97e3 100644 --- a/gfx/gfx_context.h +++ b/gfx/gfx_context.h @@ -49,8 +49,6 @@ void gfx_ctx_destroy(void); void gfx_ctx_get_video_size(unsigned *width, unsigned *height); void gfx_ctx_update_window_title(bool reset); -void gfx_ctx_swap_buffers(void); - bool gfx_ctx_key_pressed(int key); void gfx_ctx_check_window(bool *quit, @@ -62,8 +60,12 @@ void gfx_ctx_set_resize(unsigned width, unsigned height); bool gfx_ctx_get_wm_info(SDL_SysWMinfo *info); #endif +#ifndef HAVE_GRIFFIN bool gfx_ctx_window_has_focus(void); +void gfx_ctx_swap_buffers(void); +#endif + void gfx_ctx_input_driver(const input_driver_t **input, void **input_data); #ifdef HAVE_CG_MENU diff --git a/gfx/gl.c b/gfx/gl.c index dc34406b41..1b3352bb43 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -542,20 +542,6 @@ static inline void set_texture_coords(GLfloat *coords, GLfloat xamt, GLfloat yam coords[7] = yamt; } -static void check_window(gl_t *gl) -{ - bool quit, resize; - - gfx_ctx_check_window(&quit, - &resize, &gl->win_width, &gl->win_height, - gl->frame_count); - - if (quit) - gl->quitting = true; - else if (resize) - gl->should_resize = true; -} - #ifdef HAVE_FBO static void gl_compute_fbo_geometry(gl_t *gl, unsigned width, unsigned height, unsigned vp_width, unsigned vp_height) @@ -958,7 +944,9 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei gl_render_msg_post(gl); } +#ifndef RARCH_CONSOLE gfx_ctx_update_window_title(false); +#endif #ifdef RARCH_CONSOLE if (!gl->block_swap) @@ -1189,7 +1177,17 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo static bool gl_alive(void *data) { gl_t *gl = (gl_t*)data; - check_window(gl); + bool quit, resize; + + gfx_ctx_check_window(&quit, + &resize, &gl->win_width, &gl->win_height, + gl->frame_count); + + if (quit) + gl->quitting = true; + else if (resize) + gl->should_resize = true; + return !gl->quitting; } diff --git a/gfx/gl_font.h b/gfx/gl_font.h index cc74950e93..b355b91642 100644 --- a/gfx/gl_font.h +++ b/gfx/gl_font.h @@ -22,6 +22,7 @@ void gl_init_font(gl_t *gl, const char *font_path, unsigned font_size); void gl_deinit_font(gl_t *gl); void gl_render_msg(gl_t *gl, const char *msg); + void gl_render_msg_post(gl_t *gl); #endif From e9cf861f7fceb36c59032a69c5dfc63af94a5bdd Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Wed, 30 May 2012 17:24:02 +0200 Subject: [PATCH 70/70] (360) fix 360 build --- gfx/context/xdk360_ctx.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gfx/context/xdk360_ctx.c b/gfx/context/xdk360_ctx.c index 2d74278040..4f09da154f 100644 --- a/gfx/context/xdk360_ctx.c +++ b/gfx/context/xdk360_ctx.c @@ -51,11 +51,6 @@ void gfx_ctx_check_window(bool *quit, *resize = true; } -bool gfx_ctx_window_has_focus(void) -{ - return true; -} - void gfx_ctx_set_resize(unsigned width, unsigned height) { } #ifndef HAVE_GRIFFIN @@ -64,6 +59,11 @@ void gfx_ctx_swap_buffers(void) xdk360_video_t *d3d9 = (xdk360_video_t*)driver.video_data; d3d9->d3d_render_device->Present(NULL, NULL, NULL, NULL); } + +bool gfx_ctx_window_has_focus(void) +{ + return true; +} #endif bool gfx_ctx_menu_init(void)