#include <save_state_manager.h>

Classes | |
| struct | CacheKey |
| struct | CacheKeyHash |
Public Member Functions | |
| SaveStateManager (emu::Snes *snes, Rom *rom) | |
| ~SaveStateManager () | |
| absl::Status | Initialize () |
| absl::Status | LoadState (StateType type, int context_id=0) |
| absl::Status | GenerateRoomState (int room_id) |
| absl::Status | GenerateAllBaselineStates () |
| bool | HasCachedState (StateType type, int context_id=0) const |
| absl::StatusOr< StateMetadata > | GetStateMetadata (StateType type, int context_id=0) const |
| absl::Status | SaveStateToFile (const std::string &path, const StateMetadata &metadata) |
| absl::Status | LoadStateFromFile (const std::string &path) |
| void | SetStateDirectory (const std::string &path) |
| const std::string & | GetStateDirectory () const |
| uint32_t | CalculateRomChecksum () const |
Private Member Functions | |
| absl::Status | BootToTitleScreen () |
| absl::Status | NavigateToFileSelect () |
| absl::Status | StartNewGame () |
| absl::Status | NavigateToRoom (int room_id) |
| void | PressButton (int button, int frames=1) |
| void | ReleaseAllButtons () |
| void | WaitFrames (int frames) |
| bool | WaitForModule (uint8_t target, int max_frames) |
| absl::Status | TeleportToRoomViaWram (int room_id) |
| absl::Status | NavigateToRoomViaTas (int room_id) |
| uint8_t | ReadWram (uint32_t addr) |
| uint16_t | ReadWram16 (uint32_t addr) |
| int | GetCurrentRoom () |
| uint8_t | GetGameModule () |
| bool | IsRoomFullyLoaded () |
| std::string | GetStatePath (StateType type, int context_id) const |
| std::string | GetMetadataPath (StateType type, int context_id) const |
| bool | IsStateCompatible (const StateMetadata &metadata) const |
Private Attributes | |
| emu::Snes * | snes_ = nullptr |
| Rom * | rom_ = nullptr |
| std::string | state_directory_ |
| uint32_t | rom_checksum_ = 0 |
| std::unordered_map< CacheKey, StateMetadata, CacheKeyHash > | state_cache_ |
Definition at line 35 of file save_state_manager.h.
Definition at line 56 of file save_state_manager.cc.
References state_directory_.
|
default |
| absl::Status yaze::emu::render::SaveStateManager::Initialize | ( | ) |
Definition at line 64 of file save_state_manager.cc.
References CalculateRomChecksum(), rom_, rom_checksum_, snes_, and state_directory_.

| absl::Status yaze::emu::render::SaveStateManager::LoadState | ( | StateType | type, |
| int | context_id = 0 ) |
Definition at line 87 of file save_state_manager.cc.
References GetMetadataPath(), GetStateMetadata(), GetStatePath(), IsStateCompatible(), and LoadStateFromFile().
| absl::Status yaze::emu::render::SaveStateManager::GenerateRoomState | ( | int | room_id | ) |
Definition at line 107 of file save_state_manager.cc.
References BootToTitleScreen(), yaze::emu::render::StateMetadata::description, yaze::emu::render::StateMetadata::game_module, GetGameModule(), GetStatePath(), yaze::emu::render::kRoomLoaded, NavigateToFileSelect(), NavigateToRoom(), yaze::emu::render::StateMetadata::rom_checksum, rom_checksum_, yaze::emu::render::StateMetadata::rom_region, yaze::emu::render::StateMetadata::room_id, SaveStateToFile(), and StartNewGame().
Referenced by GenerateAllBaselineStates().
| absl::Status yaze::emu::render::SaveStateManager::GenerateAllBaselineStates | ( | ) |
Definition at line 146 of file save_state_manager.cc.
References GenerateRoomState().

| bool yaze::emu::render::SaveStateManager::HasCachedState | ( | StateType | type, |
| int | context_id = 0 ) const |
Definition at line 174 of file save_state_manager.cc.
References GetStatePath().

| absl::StatusOr< StateMetadata > yaze::emu::render::SaveStateManager::GetStateMetadata | ( | StateType | type, |
| int | context_id = 0 ) const |
Definition at line 179 of file save_state_manager.cc.
References yaze::emu::render::StateMetadata::description, yaze::emu::render::StateMetadata::game_module, GetMetadataPath(), yaze::emu::render::StateMetadata::rom_checksum, yaze::emu::render::StateMetadata::rom_region, yaze::emu::render::StateMetadata::room_id, and yaze::emu::render::StateMetadata::version.
Referenced by LoadState().

| absl::Status yaze::emu::render::SaveStateManager::SaveStateToFile | ( | const std::string & | path, |
| const StateMetadata & | metadata ) |
Definition at line 212 of file save_state_manager.cc.
References yaze::emu::render::StateMetadata::description, yaze::emu::render::StateMetadata::game_module, yaze::emu::render::StateMetadata::rom_checksum, yaze::emu::render::StateMetadata::rom_region, yaze::emu::render::StateMetadata::room_id, yaze::emu::Snes::saveState(), snes_, and yaze::emu::render::StateMetadata::version.
Referenced by GenerateRoomState().

| absl::Status yaze::emu::render::SaveStateManager::LoadStateFromFile | ( | const std::string & | path | ) |
Definition at line 255 of file save_state_manager.cc.
References yaze::emu::Snes::loadState(), and snes_.
Referenced by LoadState().

|
inline |
Definition at line 69 of file save_state_manager.h.
References state_directory_.
|
inline |
Definition at line 70 of file save_state_manager.h.
References state_directory_.
| uint32_t yaze::emu::render::SaveStateManager::CalculateRomChecksum | ( | ) | const |
Definition at line 264 of file save_state_manager.cc.
References yaze::emu::render::CalculateCRC32(), yaze::Rom::data(), yaze::Rom::is_loaded(), rom_, and yaze::Rom::size().
Referenced by Initialize().

|
private |
Definition at line 271 of file save_state_manager.cc.
References GetGameModule(), yaze::emu::render::buttons::kStart, yaze::emu::Snes::Reset(), yaze::emu::Snes::RunFrame(), yaze::emu::Snes::SetButtonState(), and snes_.
Referenced by GenerateRoomState().

|
private |
Definition at line 319 of file save_state_manager.cc.
References GetGameModule(), yaze::emu::render::buttons::kStart, yaze::emu::Snes::RunFrame(), yaze::emu::Snes::SetButtonState(), and snes_.
Referenced by GenerateRoomState().

|
private |
Definition at line 345 of file save_state_manager.cc.
References GetGameModule(), yaze::emu::render::buttons::kA, yaze::emu::render::buttons::kStart, yaze::emu::Snes::RunFrame(), yaze::emu::Snes::SetButtonState(), snes_, and yaze::emu::Snes::Write().
Referenced by GenerateRoomState().

|
private |
Definition at line 422 of file save_state_manager.cc.
References NavigateToRoomViaTas(), and TeleportToRoomViaWram().
Referenced by GenerateRoomState().

|
private |
Definition at line 504 of file save_state_manager.cc.
References yaze::emu::Snes::RunFrame(), yaze::emu::Snes::SetButtonState(), and snes_.

|
private |
Definition at line 512 of file save_state_manager.cc.
References yaze::emu::render::buttons::kA, yaze::emu::render::buttons::kB, yaze::emu::render::buttons::kDown, yaze::emu::render::buttons::kL, yaze::emu::render::buttons::kLeft, yaze::emu::render::buttons::kR, yaze::emu::render::buttons::kRight, yaze::emu::render::buttons::kSelect, yaze::emu::render::buttons::kStart, yaze::emu::render::buttons::kUp, yaze::emu::render::buttons::kX, yaze::emu::render::buttons::kY, yaze::emu::Snes::SetButtonState(), and snes_.

|
private |
Definition at line 521 of file save_state_manager.cc.
References yaze::emu::Snes::RunFrame(), and snes_.

|
private |
Definition at line 543 of file save_state_manager.cc.
References GetGameModule(), yaze::emu::Snes::RunFrame(), and snes_.

|
private |
Definition at line 435 of file save_state_manager.cc.
References GetCurrentRoom(), GetGameModule(), IsRoomFullyLoaded(), ReadWram(), yaze::emu::Snes::RunFrame(), snes_, and yaze::emu::Snes::Write().
Referenced by NavigateToRoom().
|
private |
Definition at line 481 of file save_state_manager.cc.
References GetCurrentRoom(), IsRoomFullyLoaded(), yaze::emu::Snes::RunFrame(), and snes_.
Referenced by NavigateToRoom().

|
private |
Definition at line 527 of file save_state_manager.cc.
References yaze::emu::Snes::Read(), and snes_.
Referenced by GetGameModule(), IsRoomFullyLoaded(), and TeleportToRoomViaWram().

|
private |
Definition at line 531 of file save_state_manager.cc.
References yaze::emu::Snes::Read(), and snes_.
Referenced by GetCurrentRoom().

|
private |
Definition at line 535 of file save_state_manager.cc.
References yaze::emu::render::wram_addresses::kRoomId, and ReadWram16().
Referenced by NavigateToRoomViaTas(), and TeleportToRoomViaWram().

|
private |
Definition at line 539 of file save_state_manager.cc.
References yaze::emu::render::wram_addresses::kGameModule, and ReadWram().
Referenced by BootToTitleScreen(), GenerateRoomState(), NavigateToFileSelect(), StartNewGame(), TeleportToRoomViaWram(), and WaitForModule().

|
private |
Definition at line 553 of file save_state_manager.cc.
References ReadWram().
Referenced by NavigateToRoomViaTas(), and TeleportToRoomViaWram().

|
private |
Definition at line 563 of file save_state_manager.cc.
References yaze::emu::render::kBlankCanvas, yaze::emu::render::kOverworldLoaded, yaze::emu::render::kRoomLoaded, and state_directory_.
Referenced by GenerateRoomState(), GetMetadataPath(), HasCachedState(), and LoadState().
|
private |
Definition at line 581 of file save_state_manager.cc.
References GetStatePath().
Referenced by GetStateMetadata(), and LoadState().

|
private |
Definition at line 586 of file save_state_manager.cc.
References yaze::emu::render::StateMetadata::rom_checksum, and rom_checksum_.
Referenced by LoadState().
|
private |
Definition at line 106 of file save_state_manager.h.
Referenced by BootToTitleScreen(), Initialize(), LoadStateFromFile(), NavigateToFileSelect(), NavigateToRoomViaTas(), PressButton(), ReadWram(), ReadWram16(), ReleaseAllButtons(), SaveStateToFile(), StartNewGame(), TeleportToRoomViaWram(), WaitForModule(), and WaitFrames().
|
private |
Definition at line 107 of file save_state_manager.h.
Referenced by CalculateRomChecksum(), and Initialize().
|
private |
Definition at line 109 of file save_state_manager.h.
Referenced by GetStateDirectory(), GetStatePath(), Initialize(), SaveStateManager(), and SetStateDirectory().
|
private |
Definition at line 110 of file save_state_manager.h.
Referenced by GenerateRoomState(), Initialize(), and IsStateCompatible().
|
private |
Definition at line 126 of file save_state_manager.h.