- Some games will load into a different executable from EBOOT.BIN, and
attempting to restore those games from savestate causes the game to
crash immediately.
- This commit repurposes the disc_info field in a savestate generated
from an ISO game to store the running game executable at the time of the
save state.
- Due to GetCallbacks().resolve_path behaviour being reverted in a prior
commit, resolved_path will not have the path to the game executable.
This causes issues when setting argv[0] to the game executable path and
apparently breaks some games which may rely on this value.
- After undoing the changes to do with resolve_path, loading game
updates was broken. This required the condition to be changed to check
for launching_from_disc_archive.
- When attempting to load an update for an ISO game,
inherited_ps3_game_path needs to be set otherwise launching the updated
game will fail.
- An additional check was added to ensure that the inherited vitual game
directory isn't saved as the game path in games.yml.
- Fixed attempting to load an updated ISO game by launching its updated
executable, which can happen when loading a savestate for a game with
updates, the emulator would crash before.
- Unload ISO file when Load() fails, otherwise ISO loading might be
stuck in a broken state.
- When dragging and dropping ISO files, they will be treated the same as
game directories currently are and added to the game list rather than
immediately being opened.
Some games will load into another game and continuous mode will be set.
Currently, if this happens the ISO will get unloaded in the shutdown
function. This commit adds an additional check before calling the unload
function to fix this.
- Don't use floating point when advancing sectors
- Remove redudndant seek in iso_archive constructor
- Drop error code checks in iso_file::read_at
- Don't use lexically_normal for handling path in iso_archive::retrieve.
More complete directory search implementation.
This commit modifies code in System.cpp to allow games to boot from ISO
images. Game data is loaded by leveraging fs::set_virtual_device, and
setting the m_path to the ISO device location.
This commit also modifies the resolve_path callback to return the path
it was given if it wasn't found in the OS. This is necessary as
Emulator::GetFakeCat will return "HG" on disc games, making games
unplayable through ISO.
Adds infrastructure to read files/data from ISOs.
Also adds classes extending fs::device_base and fs::file_base in order
to allow reading files through fs namespace functions. This approach
should allow ISO data to be read by the emulator with the least changes
to existing code.