lib.rsannotatedlib.rssource86 lines · 2.5 KB · raw
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}