diff --git a/changelog.txt b/changelog.txt index a86ce028..4cf52133 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,4 @@ +24-jun-2009 - adelikat - win32 - Drag & Drop support for palette files 23-jun-2009 - adelikat - win32 - Drag & Drop support for savestates 22-jun-2009 - qeed - Revert IRQ inhibit fix, since this seems to break Dragon Warrior 4, added palette reading cases for the new PPU. diff --git a/src/drivers/win/palette.cpp b/src/drivers/win/palette.cpp index e7822484..e1e534a5 100644 --- a/src/drivers/win/palette.cpp +++ b/src/drivers/win/palette.cpp @@ -5,6 +5,24 @@ uint8 cpalette[192]; +bool SetPalette(const char* nameo) +{ + FILE *fp; + if((fp = FCEUD_UTF8fopen(nameo, "rb"))) + { + fread(cpalette, 1, 192, fp); + fclose(fp); + FCEUI_SetPaletteArray(cpalette); + eoptions |= EO_CPALETTE; + return true; + } + else + { + FCEUD_PrintError("Error opening palette file!"); + return false; + } +} + /** * Prompts the user for a palette file and opens that file. * @@ -14,7 +32,7 @@ int LoadPaletteFile() { const char filter[]="All usable files(*.pal)\0*.pal\0All files (*.*)\0*.*\0"; - FILE *fp; + bool success = false; char nameo[2048]; // Display open file dialog @@ -32,23 +50,10 @@ int LoadPaletteFile() if(GetOpenFileName(&ofn)) { - if((fp = FCEUD_UTF8fopen(nameo, "rb"))) - { - fread(cpalette, 1, 192, fp); - fclose(fp); - - FCEUI_SetPaletteArray(cpalette); - - eoptions |= EO_CPALETTE; - return 1; - } - else - { - FCEUD_PrintError("Error opening palette file!"); - } + success = SetPalette(nameo); } - return 0; + return success; } /** diff --git a/src/drivers/win/palette.h b/src/drivers/win/palette.h index 415d9075..6e42e29b 100644 --- a/src/drivers/win/palette.h +++ b/src/drivers/win/palette.h @@ -2,5 +2,6 @@ #define WIN_PALETTE_H void ConfigPalette(); +bool SetPalette(const char* nameo); #endif diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index 0bb2758b..d3064eae 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -1246,6 +1246,7 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { DragQueryFile((HDROP)wParam,0,ftmp,len); string fileDropped = ftmp; + //adelikat: Drag and Drop only checks file extension, the internal functions are responsible for file error checking //------------------------------------------------------- //Check if .fcm file, if so, convert it //------------------------------------------------------- @@ -1255,10 +1256,18 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) //I'm thinking it converts it to the original directory of the .fcm then loads the resulting .fm2 automatically //} + //------------------------------------------------------- + //Check if Palette file + //------------------------------------------------------- + /*else*/ if (!(fileDropped.find(".pal") == string::npos) && (fileDropped.find(".pal") == fileDropped.length()-4)) + { + SetPalette(fileDropped.c_str()); + } + //------------------------------------------------------- //Check if Movie file //------------------------------------------------------- - /*else*/ if (!(fileDropped.find(".fm2") == string::npos) && (fileDropped.find(".fm2") == fileDropped.length()-4)) //ROM is already loaded and .fm2 in filename + else if (!(fileDropped.find(".fm2") == string::npos) && (fileDropped.find(".fm2") == fileDropped.length()-4)) //ROM is already loaded and .fm2 in filename { if (GameInfo && !(fileDropped.find(".fm2") == string::npos)) //.fm2 is at the end of the filename so that must be the extension FCEUI_LoadMovie(ftmp, 1, false, false); //We are convinced it is a movie file, attempt to load it