Mercurial > tablet-emu
diff src/protocol.rs @ 18:3f7b7a3ad8fe
Build three binaries instead of using arguments.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Thu, 26 Aug 2021 22:15:55 +0200 |
parents | |
children | ba09079686a0 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/src/protocol.rs @@ -0,0 +1,64 @@ +// Tablet emulator, for people who don’t own one +// Copyright © 2020 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. + +use bitflags::bitflags; + +bitflags! { + /// This is the memory layout of the buttons on the 3DS. + #[derive(Default)] + pub struct Buttons: u32 { + const A = 0x00000001; + const B = 0x00000002; + const SELECT = 0x00000004; + const START = 0x00000008; + const RIGHT = 0x00000010; + const LEFT = 0x00000020; + const UP = 0x00000040; + const DOWN = 0x00000080; + const R = 0x00000100; + const L = 0x00000200; + const X = 0x00000400; + const Y = 0x00000800; + // Nothing + // Nothing + const ZL = 0x00004000; + const ZR = 0x00008000; + const RESIZE = 0x00010000; // Not an actual 3DS button! + // Nothing + // Nothing + // Nothing + const TOUCH = 0x00100000; + // Nothing + // Nothing + // Nothing + const C_RIGHT = 0x01000000; + const C_LEFT = 0x02000000; + const C_UP = 0x04000000; + const C_DOWN = 0x08000000; + const CIRCLE_RIGHT = 0x10000000; + const CIRCLE_LEFT = 0x20000000; + const CIRCLE_UP = 0x40000000; + const CIRCLE_DOWN = 0x80000000; + } +} + +#[derive(Debug, Default)] +pub struct Event { + pub buttons: Buttons, + pad: (i16, i16), + c_pad: (i16, i16), + pub touch: (u16, u16), +}