Skip to content

Commit

Permalink
cellGame: update SFO management with new interface
Browse files Browse the repository at this point in the history
  • Loading branch information
elad335 committed Apr 3, 2021
1 parent 45c1957 commit 9f90355
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions rpcs3/Emu/Cell/Modules/cellGame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,9 @@ error_code cellHddGameCheck(ppu_thread& ppu, u32 version, vm::cptr<char> dirName

const std::string dir = "/dev_hdd0/game/" + game_dir;

psf::registry sfo = psf::load(fs::file(vfs::get(dir + "/PARAM.SFO"))).sfo;
auto [sfo, psf_error] = psf::load(fs::file(vfs::get(dir + "/PARAM.SFO")));

const u32 new_data = sfo.empty() && !fs::is_file(vfs::get(dir + "/PARAM.SFO")) ? CELL_GAMEDATA_ISNEWDATA_YES : CELL_GAMEDATA_ISNEWDATA_NO;
const u32 new_data = psf_error == psf::error::stream ? CELL_GAMEDATA_ISNEWDATA_YES : CELL_GAMEDATA_ISNEWDATA_NO;

if (!new_data)
{
Expand Down Expand Up @@ -589,7 +589,7 @@ error_code cellGameDataCheck(u32 type, vm::cptr<char> dirName, vm::ptr<CellGameC
return CELL_GAME_ERROR_BUSY;
}

auto sfo = psf::load(fs::file(vfs::get(dir + "/PARAM.SFO"))).sfo;
auto [sfo, psf_error] = psf::load(fs::file(vfs::get(dir + "/PARAM.SFO")));

if (psf::get_string(sfo, "CATEGORY") != [&]()
{
Expand All @@ -602,7 +602,7 @@ error_code cellGameDataCheck(u32 type, vm::cptr<char> dirName, vm::ptr<CellGameC
}
}())
{
if (fs::is_file(vfs::get(dir + "/PARAM.SFO")))
if (psf_error != psf::error::stream)
{
init.cancel();
return CELL_GAME_ERROR_BROKEN;
Expand Down Expand Up @@ -717,9 +717,9 @@ error_code cellGameDataCheckCreate2(ppu_thread& ppu, u32 version, vm::cptr<char>
const std::string game_dir = dirName.get_ptr();
const std::string dir = "/dev_hdd0/game/"s + game_dir;

psf::registry sfo = psf::load(fs::file(vfs::get(dir + "/PARAM.SFO"))).sfo;
auto [sfo, psf_error] = psf::load(fs::file(vfs::get(dir + "/PARAM.SFO")));

const u32 new_data = sfo.empty() && !fs::is_file(vfs::get(dir + "/PARAM.SFO")) ? CELL_GAMEDATA_ISNEWDATA_YES : CELL_GAMEDATA_ISNEWDATA_NO;
const u32 new_data = psf_error == psf::error::stream ? CELL_GAMEDATA_ISNEWDATA_YES : CELL_GAMEDATA_ISNEWDATA_NO;

if (!new_data)
{
Expand Down Expand Up @@ -964,9 +964,9 @@ error_code cellGameDeleteGameData(vm::cptr<char> dirName)
return CELL_GAME_ERROR_NOTSUPPORTED;
}

psf::registry sfo = psf::load(fs::file(dir + "/PARAM.SFO")).sfo;
const auto [sfo, psf_error] = psf::load(fs::file(dir + "/PARAM.SFO"));

if (psf::get_string(sfo, "CATEGORY") != "GD" && fs::is_file(dir + "/PARAM.SFO"))
if (psf::get_string(sfo, "CATEGORY") != "GD" && psf_error != psf::error::stream)
{
return CELL_GAME_ERROR_NOTSUPPORTED;
}
Expand Down

0 comments on commit 9f90355

Please sign in to comment.