From dc2a69925f8db6c26c525e8d96f59c7f5939a688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com> Date: Sat, 5 Aug 2023 12:56:30 +0100 Subject: [PATCH] chore: more serialization structure --- src/state.rs | 54 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/src/state.rs b/src/state.rs index 19609f50..bc6504b1 100644 --- a/src/state.rs +++ b/src/state.rs @@ -1,5 +1,12 @@ #[repr(packed)] -pub struct BeesBlock { +pub struct BeesState { + pub name: BeesName, + pub info: BeesInfo, + pub core: BeesCore, +} + +#[repr(packed)] +pub struct BeesBlockHeader { pub magic: u32, pub size: u32, } @@ -16,9 +23,22 @@ pub struct BeesFooter { pub magic: u32, } +#[repr(packed)] +pub struct BeesName { + pub header: BeesBlockHeader, + pub name: String, +} + +#[repr(packed)] +pub struct BeesInfo { + pub header: BeesBlockHeader, + pub title: [u8; 16], + pub checksum: [u8; 2], +} + #[repr(packed)] pub struct BeesCore { - pub header: BeesBlock, + pub header: BeesBlockHeader, pub major: u16, pub minor: u16, @@ -38,7 +58,7 @@ pub struct BeesCore { pub execution_mode: u8, _padding: u8, - pub io_registers: [u8; 0x80], + pub io_registers: [u8; 128], pub ram: BeesBuffer, pub vram: BeesBuffer, @@ -48,3 +68,31 @@ pub struct BeesCore { pub background_palettes: BeesBuffer, pub object_palettes: BeesBuffer, } + +trait Serialize { + fn store(&self, buffer: &mut Vec<u8>); + fn load(&self, data: &[u8]); +} + +impl Serialize for BeesState { + fn store(&self, buffer: &mut Vec<u8>) { + self.info.store(buffer); + } + + fn load(&self, data: &[u8]) { + todo!() + } +} + +impl Serialize for BeesName { + fn store(&self, buffer: &mut Vec<u8>) { + } + + fn load(&self, data: &[u8]) {} +} + +impl Serialize for BeesInfo { + fn store(&self, buffer: &mut Vec<u8>) {} + + fn load(&self, data: &[u8]) {} +} -- GitLab