dreamcast/maple/maple_bus_ft8.hpp
Zack Buhman 40b7c9d800 example: add maple_mouse
This also updates maple_analog.
2024-05-24 18:18:29 -05:00

54 lines
1.5 KiB
C++

#pragma once
namespace ft8 {
namespace data_transfer {
namespace vset {
constexpr uint32_t vn() { return 0b1111 << 4; }
constexpr uint32_t vn(uint32_t reg) { return (reg >> 4) & 0b1111; }
constexpr uint32_t vp() { return 0b11 << 2; }
constexpr uint32_t vp(uint32_t reg) { return (reg >> 2) & 0b11; }
constexpr uint32_t vd() { return 0b11 << 0; }
constexpr uint32_t vd(uint32_t reg) { return (reg >> 0) & 0b11; }
constexpr uint32_t pf() { return 0b1 << 15; }
constexpr uint32_t pf(uint32_t reg) { return (reg >> 15) & 0b1; }
constexpr uint32_t cv() { return 0b1 << 14; }
constexpr uint32_t cv(uint32_t reg) { return (reg >> 14) & 0b1; }
constexpr uint32_t pd() { return 0b1 << 13; }
constexpr uint32_t pd(uint32_t reg) { return (reg >> 13) & 0b1; }
constexpr uint32_t owf() { return 0b1 << 12; }
constexpr uint32_t owf(uint32_t reg) { return (reg >> 12) & 0b1; }
constexpr uint32_t va() { return 0b1111 << 8; }
constexpr uint32_t va(uint32_t reg) { return (reg >> 8) & 0b1111; }
}
struct data_format {
uint16_t vset;
uint8_t fm0;
uint8_t fm1;
};
static_assert((sizeof (struct data_format)) % 4 == 0);
static_assert((sizeof (struct data_format)) == 4);
}
namespace set_condition {
struct data_format {
uint8_t ctrl;
uint8_t pow;
uint8_t freq;
uint8_t inc;
};
static_assert((sizeof (struct data_format)) % 4 == 0);
static_assert((sizeof (struct data_format)) == 4);
}
}