#![doc = include_str!("../README.md")]
#![feature(iterator_try_collect)]
use std::time::Duration;
use chrono::NaiveDate;
pub mod parser;
#[derive(Clone, Debug)]
pub struct SpcFile {
pub header: SpcHeader,
pub memory: SpcMemory,
}
#[derive(Clone, Debug)]
pub struct SpcMemory {
pub ram: Box<[u8; 65536]>,
pub dsp_registers: Box<[u8; 128]>,
pub rom: Box<[u8; 64]>,
}
#[derive(Clone, Debug)]
pub struct SpcHeader {
pub version: u8,
pub pc: u16,
pub a: u8,
pub x: u8,
pub y: u8,
pub psw: u8,
pub sp: u8,
pub title: String,
pub game: String,
pub artist: String,
pub dump_author: String,
pub comments: String,
pub dump_date: Option<NaiveDate>,
pub duration: Duration,
pub fade_duration: Duration,
pub channel_disables: bool,
pub emulator: Emulator,
}
#[derive(Clone, Copy, Debug, Default)]
#[allow(non_camel_case_types)]
pub enum Emulator {
#[default]
Unknown,
ZSNES,
Snes9x,
ZST2SPC,
Other,
SNEShout,
ZSNES_W,
Snes9xpp,
SNESGT,
}