This commit is contained in:
Nilton Constantino 2026-01-16 17:51:45 +00:00
parent f472aeaa29
commit 293d1029a2
No known key found for this signature in database
6 changed files with 22 additions and 20 deletions

View File

@ -1,4 +1,4 @@
use crate::firmware::firmware_state::{FirmwareState, InitAppStep, ResetStep};
use crate::firmware::firmware_state::{FirmwareState, LoadGameStep, ResetStep};
use crate::firmware::prometeu_context::PrometeuContext;
use crate::hardware::{HardwareBridge, InputSignals};
use crate::model::Cartridge;
@ -59,8 +59,8 @@ impl Firmware {
FirmwareState::SplashScreen(s) => s.on_enter(&mut req),
FirmwareState::LaunchHub(s) => s.on_enter(&mut req),
FirmwareState::HubHome(s) => s.on_enter(&mut req),
FirmwareState::LoadApp(s) => s.on_enter(&mut req),
FirmwareState::AppRunning(s) => s.on_enter(&mut req),
FirmwareState::LoadGame(s) => s.on_enter(&mut req),
FirmwareState::GameRunning(s) => s.on_enter(&mut req),
FirmwareState::AppCrashes(s) => s.on_enter(&mut req),
}
}
@ -78,8 +78,8 @@ impl Firmware {
FirmwareState::SplashScreen(s) => s.on_update(&mut req),
FirmwareState::LaunchHub(s) => s.on_update(&mut req),
FirmwareState::HubHome(s) => s.on_update(&mut req),
FirmwareState::LoadApp(s) => s.on_update(&mut req),
FirmwareState::AppRunning(s) => s.on_update(&mut req),
FirmwareState::LoadGame(s) => s.on_update(&mut req),
FirmwareState::GameRunning(s) => s.on_update(&mut req),
FirmwareState::AppCrashes(s) => s.on_update(&mut req),
}
}
@ -97,14 +97,14 @@ impl Firmware {
FirmwareState::SplashScreen(s) => s.on_exit(&mut req),
FirmwareState::LaunchHub(s) => s.on_exit(&mut req),
FirmwareState::HubHome(s) => s.on_exit(&mut req),
FirmwareState::LoadApp(s) => s.on_exit(&mut req),
FirmwareState::AppRunning(s) => s.on_exit(&mut req),
FirmwareState::LoadGame(s) => s.on_exit(&mut req),
FirmwareState::GameRunning(s) => s.on_exit(&mut req),
FirmwareState::AppCrashes(s) => s.on_exit(&mut req),
}
}
pub fn load_cartridge(&mut self, cartridge: Cartridge) {
self.state = FirmwareState::LoadApp(InitAppStep { cartridge });
self.state = FirmwareState::LoadGame(LoadGameStep { cartridge });
self.state_initialized = false;
}
}

View File

@ -2,8 +2,8 @@ pub use crate::firmware::firmware_step_reset::ResetStep;
pub use crate::firmware::firmware_step_splash_screen::SplashScreenStep;
pub use crate::firmware::firmware_step_launch_hub::LaunchHubStep;
pub use crate::firmware::firmware_step_hub_home::HubHomeStep;
pub use crate::firmware::firmware_step_init_app::InitAppStep;
pub use crate::firmware::firmware_step_run_app::RunAppStep;
pub use crate::firmware::firmware_step_load_game::LoadGameStep;
pub use crate::firmware::firmware_step_game_running::GameRunningStep;
pub use crate::firmware::firmware_step_crash_screen::AppCrashesStep;
#[derive(Debug, Clone)]
@ -12,7 +12,7 @@ pub enum FirmwareState {
SplashScreen(SplashScreenStep),
LaunchHub(LaunchHubStep),
HubHome(HubHomeStep),
AppRunning(RunAppStep),
LoadApp(InitAppStep),
LoadGame(LoadGameStep),
GameRunning(GameRunningStep),
AppCrashes(AppCrashesStep),
}

View File

@ -2,9 +2,9 @@ use crate::firmware::firmware_state::{AppCrashesStep, FirmwareState};
use crate::firmware::prometeu_context::PrometeuContext;
#[derive(Debug, Clone)]
pub struct RunAppStep;
pub struct GameRunningStep;
impl RunAppStep {
impl GameRunningStep {
pub fn on_enter(&mut self, _ctx: &mut PrometeuContext) {}
pub fn on_update(&mut self, ctx: &mut PrometeuContext) -> Option<FirmwareState> {

View File

@ -1,19 +1,19 @@
use crate::firmware::firmware_state::{FirmwareState, RunAppStep};
use crate::firmware::firmware_state::{FirmwareState, GameRunningStep};
use crate::firmware::prometeu_context::PrometeuContext;
use crate::model::Cartridge;
#[derive(Debug, Clone)]
pub struct InitAppStep {
pub struct LoadGameStep {
pub cartridge: Cartridge,
}
impl InitAppStep {
impl LoadGameStep {
pub fn on_enter(&mut self, ctx: &mut PrometeuContext) {
ctx.os.initialize_vm(ctx.vm, &self.cartridge);
}
pub fn on_update(&mut self, _ctx: &mut PrometeuContext) -> Option<FirmwareState> {
Some(FirmwareState::AppRunning(RunAppStep))
Some(FirmwareState::GameRunning(GameRunningStep))
}
pub fn on_exit(&mut self, _ctx: &mut PrometeuContext) {}

View File

@ -5,8 +5,8 @@ pub(crate) mod firmware_step_reset;
pub(crate) mod firmware_step_splash_screen;
pub(crate) mod firmware_step_launch_hub;
pub(crate) mod firmware_step_hub_home;
pub(crate) mod firmware_step_init_app;
pub(crate) mod firmware_step_run_app;
pub(crate) mod firmware_step_load_game;
pub(crate) mod firmware_step_game_running;
pub(crate) mod firmware_step_crash_screen;
mod prometeu_context;

View File

@ -3,6 +3,8 @@ use crate::virtual_machine::Program;
#[derive(Debug, Clone)]
pub struct AppHeader {
pub app_id: String,
pub magic: u32,
pub version: u16,
pub title: String,
pub entrypoint: u32,
}