use monsoon_core::emulation::ppu_util::EmulatorFetchable;
use monsoon_core::emulation::rom::RomFile;
use monsoon_core::emulation::savestate::SaveState;
use crate::frontend::messages::LoadedRom;
#[derive(Debug, Clone, Eq, PartialEq, Hash)]
pub enum FrontendMessage {
Quit,
ControllerInput(ControllerEvent),
Reset,
Power(bool),
StepFrame,
RequestDebugData(EmulatorFetchable),
LoadRom((LoadedRom, String)),
WritePpu(u16, u8),
WriteCpu(u16, u8),
CreateSaveState(SaveType),
LoadSaveState(Box<SaveState>),
StepPpuCycle,
StepCpuCycle,
StepMasterCycle,
StepScanline,
}
#[derive(Debug, Default, Eq, PartialEq, Copy, Clone, Hash)]
pub enum SaveType {
#[default]
Manual,
Quicksave,
Autosave,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ControllerEvent {
Left,
Right,
Up,
Down,
Start,
Select,
A,
B,
}
#[derive(Debug, Eq, PartialEq, Clone, Hash)]
pub enum EmulatorMessage {
FrameReady(Vec<u16>),
Stopped,
DebugData(EmulatorFetchable),
SaveState(Box<SaveState>, SaveType),
RomLoaded(Option<(RomFile, LoadedRom)>),
}