diff --git a/Source/Project64-core/3rdParty/zip.h b/Source/Project64-core/3rdParty/zip.h index babbc115e..fffc0cb69 100644 --- a/Source/Project64-core/3rdParty/zip.h +++ b/Source/Project64-core/3rdParty/zip.h @@ -2,3 +2,4 @@ #include "../../3rdParty/zlib/contrib/minizip/unzip.h" #include "../../3rdParty/zlib/contrib/minizip/zip.h" +#include "../../3rdParty/zlib/contrib/minizip/iowin32.h" \ No newline at end of file diff --git a/Source/Project64-core/N64System/N64Rom.cpp b/Source/Project64-core/N64System/N64Rom.cpp index f502f2e9f..1b2f42a94 100644 --- a/Source/Project64-core/N64System/N64Rom.cpp +++ b/Source/Project64-core/N64System/N64Rom.cpp @@ -136,7 +136,9 @@ bool CN64Rom::AllocateAndLoadN64Image(const char * FileLoc, bool LoadBootCodeOnl bool CN64Rom::AllocateAndLoadZipImage(const char * FileLoc, bool LoadBootCodeOnly) { - unzFile file = unzOpen(FileLoc); + zlib_filefunc64_def ffunc; + fill_win32_filefunc64W(&ffunc); + unzFile file = unzOpen2_64(stdstr(FileLoc).ToUTF16().c_str() , &ffunc); if (file == nullptr) { return false; diff --git a/Source/Project64-core/RomList/RomList.cpp b/Source/Project64-core/RomList/RomList.cpp index 5713258ea..5f0cae139 100644 --- a/Source/Project64-core/RomList/RomList.cpp +++ b/Source/Project64-core/RomList/RomList.cpp @@ -352,7 +352,9 @@ bool CRomList::LoadDataFromRomFile(const char * FileName, uint8_t * Data, int32_ unz_file_info info; char zname[132]; unzFile file; - file = unzOpen(FileName); + zlib_filefunc64_def ffunc; + fill_win32_filefunc64W(&ffunc); + file = unzOpen2_64(stdstr(FileName).ToUTF16().c_str(), &ffunc); if (file == nullptr) { return false; diff --git a/Source/Project64/UserInterface/RomBrowser.cpp b/Source/Project64/UserInterface/RomBrowser.cpp index 169b39cd0..a8710484c 100644 --- a/Source/Project64/UserInterface/RomBrowser.cpp +++ b/Source/Project64/UserInterface/RomBrowser.cpp @@ -1089,7 +1089,6 @@ void CRomBrowser::SelectRomDir(void) std::wstring title = wGS(SELECT_ROM_DIR); - WriteTrace(TraceUserInterface, TraceDebug, "1"); stdstr RomDir = g_Settings->LoadStringVal(RomList_GameDir).c_str(); bi.hwndOwner = m_MainWindow; bi.pidlRoot = nullptr; @@ -1098,28 +1097,15 @@ void CRomBrowser::SelectRomDir(void) bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS | BIF_USENEWUI; bi.lpfn = (BFFCALLBACK)SelectRomDirCallBack; bi.lParam = (UINT_PTR)RomDir.c_str(); - WriteTrace(TraceUserInterface, TraceDebug, "2"); if ((pidl = SHBrowseForFolder(&bi)) != nullptr) { - WriteTrace(TraceUserInterface, TraceDebug, "3"); - char Directory[_MAX_PATH]; - if (SHGetPathFromIDListA(pidl, Directory)) + wchar_t Directory[_MAX_PATH]; + if (SHGetPathFromIDList(pidl, Directory)) { - int32_t len = (int32_t)((UINT_PTR)strlen(Directory)); - - WriteTrace(TraceUserInterface, TraceDebug, "4"); - if (Directory[len - 1] != '\\') - { - strcat(Directory, "\\"); - } - WriteTrace(TraceUserInterface, TraceDebug, "5"); - WriteTrace(TraceUserInterface, TraceDebug, "6"); - g_Settings->SaveString(RomList_GameDir, Directory); - WriteTrace(TraceUserInterface, TraceDebug, "7"); - Notify().AddRecentDir(Directory); - WriteTrace(TraceUserInterface, TraceDebug, "8"); + CPath RomDir(stdstr().FromUTF16(Directory), ""); + g_Settings->SaveString(RomList_GameDir, RomDir.GetDriveDirectory()); + Notify().AddRecentDir(RomDir.GetDriveDirectory().c_str()); RefreshRomList(); - WriteTrace(TraceUserInterface, TraceDebug, "9"); } } }