1use bincode::{Decode, Encode}; 2use jgenesis_common::define_controller_inputs; 3use jgenesis_proc_macros::{EnumAll, EnumDisplay, EnumFromStr}; 4 5pub const NATIVE_FAST_CPU_DIVIDER: u64 = 3; 6 7pub const TURBO_TAP_GAMEPADS: u8 = 5; 8 9define_controller_inputs! { 10 buttons: PceButton { 11 Up -> up "Up", 12 Left -> left "Left", 13 Right -> right "Right", 14 Down -> down "Down", 15 Button1 -> button1 "Button I", 16 Button2 -> button2 "Button II", 17 Run -> run "Run", 18 Select -> select "Select", 19 }, 20 joypad: PceJoypadState impl with_allow_opposing_directions, 21 inputs: PceInputs { 22 players: { 23 p1: Player::One, 24 p2: Player::Two, 25 p3: Player::Three, 26 p4: Player::Four, 27 p5: Player::Five, 28 } 29 } 30} 31 32#[derive( 33 Debug, Clone, Copy, PartialEq, Eq, Default, Encode, Decode, EnumDisplay, EnumFromStr, EnumAll, 34)] 35#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] 36#[cfg_attr(feature = "clap", derive(jgenesis_proc_macros::CustomValueEnum))] 37pub enum PceRegion { 38 #[default] 39 TurboGrafx16, 40 PcEngine, 41} 42 43#[derive( 44 Debug, Clone, Copy, PartialEq, Eq, Default, Encode, Decode, EnumDisplay, EnumFromStr, EnumAll, 45)] 46#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] 47#[cfg_attr(feature = "clap", derive(jgenesis_proc_macros::CustomValueEnum))] 48pub enum PceAspectRatio { 49 #[default] 50 Ntsc, 51 SquarePixels, 52 Stretched, 53} 54 55#[derive( 56 Debug, Clone, Copy, PartialEq, Eq, Default, Encode, Decode, EnumDisplay, EnumFromStr, EnumAll, 57)] 58#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] 59#[cfg_attr(feature = "clap", derive(jgenesis_proc_macros::CustomValueEnum))] 60pub enum PcePaletteType { 61 #[default] 62 PceComposite, 63 Linear, 64} 65 66#[derive( 67 Debug, Clone, Copy, PartialEq, Eq, Default, Encode, Decode, EnumDisplay, EnumFromStr, EnumAll, 68)] 69#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] 70#[cfg_attr(feature = "clap", derive(jgenesis_proc_macros::CustomValueEnum))] 71pub enum PceAudioResampler { 72 #[default] 73 WindowedSinc, 74 LowPassNearestNeighbor, 75} 76 77#[derive( 78 Debug, Clone, Copy, PartialEq, Eq, Default, Encode, Decode, EnumDisplay, EnumFromStr, EnumAll, 79)] 80#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] 81#[cfg_attr(feature = "clap", derive(jgenesis_proc_macros::CustomValueEnum))] 82pub enum PceInputDevice { 83 #[default] 84 TwoButtonGamepad, 85 TurboTap, 86}