Skip to content
Permalink
Browse files

Merge pull request #8056 from JosJuice/more-enums-to-constexpr

Turn more enum constants into constexpr
  • Loading branch information...
leoetlino committed May 10, 2019
2 parents 672e8d7 + 8e2277e commit e7bc86881d7fd42900aaeedaff7c8b1d24d3cd55
@@ -59,29 +59,49 @@ constexpr u64 BUFFER_TRANSFER_RATE = 32 * 1024 * 1024;

namespace DVDInterface
{
// "low" error codes
constexpr u32 ERROR_READY = 0x0000000; // Ready.
constexpr u32 ERROR_COVER_L = 0x01000000; // Cover is opened.
constexpr u32 ERROR_CHANGE_DISK = 0x02000000; // Disk change.
constexpr u32 ERROR_NO_DISK = 0x03000000; // No disk.
constexpr u32 ERROR_MOTOR_STOP_L = 0x04000000; // Motor stop.
constexpr u32 ERROR_NO_DISKID_L = 0x05000000; // Disk ID not read.

// "high" error codes
constexpr u32 ERROR_NONE = 0x000000; // No error.
constexpr u32 ERROR_MOTOR_STOP_H = 0x020400; // Motor stopped.
constexpr u32 ERROR_NO_DISKID_H = 0x020401; // Disk ID not read.
constexpr u32 ERROR_COVER_H = 0x023a00; // Medium not present / Cover opened.
constexpr u32 ERROR_SEEK_NDONE = 0x030200; // No seek complete.
constexpr u32 ERROR_READ = 0x031100; // Unrecovered read error.
constexpr u32 ERROR_PROTOCOL = 0x040800; // Transfer protocol error.
constexpr u32 ERROR_INV_CMD = 0x052000; // Invalid command operation code.
constexpr u32 ERROR_AUDIO_BUF = 0x052001; // Audio Buffer not set.
constexpr u32 ERROR_BLOCK_OOB = 0x052100; // Logical block address out of bounds.
constexpr u32 ERROR_INV_FIELD = 0x052400; // Invalid field in command packet.
constexpr u32 ERROR_INV_AUDIO = 0x052401; // Invalid audio command.
constexpr u32 ERROR_INV_PERIOD = 0x052402; // Configuration out of permitted period.
constexpr u32 ERROR_END_USR_AREA = 0x056300; // End of user area encountered on this track.
constexpr u32 ERROR_MEDIUM = 0x062800; // Medium may have changed.
constexpr u32 ERROR_MEDIUM_REQ = 0x0b5a01; // Operator medium removal request.

// internal hardware addresses
enum
{
DI_STATUS_REGISTER = 0x00,
DI_COVER_REGISTER = 0x04,
DI_COMMAND_0 = 0x08,
DI_COMMAND_1 = 0x0C,
DI_COMMAND_2 = 0x10,
DI_DMA_ADDRESS_REGISTER = 0x14,
DI_DMA_LENGTH_REGISTER = 0x18,
DI_DMA_CONTROL_REGISTER = 0x1C,
DI_IMMEDIATE_DATA_BUFFER = 0x20,
DI_CONFIG_REGISTER = 0x24
};
constexpr u32 DI_STATUS_REGISTER = 0x00;
constexpr u32 DI_COVER_REGISTER = 0x04;
constexpr u32 DI_COMMAND_0 = 0x08;
constexpr u32 DI_COMMAND_1 = 0x0C;
constexpr u32 DI_COMMAND_2 = 0x10;
constexpr u32 DI_DMA_ADDRESS_REGISTER = 0x14;
constexpr u32 DI_DMA_LENGTH_REGISTER = 0x18;
constexpr u32 DI_DMA_CONTROL_REGISTER = 0x1C;
constexpr u32 DI_IMMEDIATE_DATA_BUFFER = 0x20;
constexpr u32 DI_CONFIG_REGISTER = 0x24;

// debug commands which may be ORd
enum
{
STOP_DRIVE = 0,
START_DRIVE = 0x100,
ACCEPT_COPY = 0x4000,
DISC_CHECK = 0x8000,
};
constexpr u32 STOP_DRIVE = 0;
constexpr u32 START_DRIVE = 0x100;
constexpr u32 ACCEPT_COPY = 0x4000;
constexpr u32 DISC_CHECK = 0x8000;

// DI Status Register
union UDISR
@@ -24,36 +24,6 @@ class Mapping;

namespace DVDInterface
{
// Not sure about endianness here. I'll just name them like this...
enum DIErrorLow
{
ERROR_READY = 0x00000000, // Ready.
ERROR_COVER_L = 0x01000000, // Cover is opened.
ERROR_CHANGE_DISK = 0x02000000, // Disk change.
ERROR_NO_DISK = 0x03000000, // No disk.
ERROR_MOTOR_STOP_L = 0x04000000, // Motor stop.
ERROR_NO_DISKID_L = 0x05000000 // Disk ID not read.
};
enum DIErrorHigh
{
ERROR_NONE = 0x000000, // No error.
ERROR_MOTOR_STOP_H = 0x020400, // Motor stopped.
ERROR_NO_DISKID_H = 0x020401, // Disk ID not read.
ERROR_COVER_H = 0x023a00, // Medium not present / Cover opened.
ERROR_SEEK_NDONE = 0x030200, // No seek complete.
ERROR_READ = 0x031100, // Unrecovered read error.
ERROR_PROTOCOL = 0x040800, // Transfer protocol error.
ERROR_INV_CMD = 0x052000, // Invalid command operation code.
ERROR_AUDIO_BUF = 0x052001, // Audio Buffer not set.
ERROR_BLOCK_OOB = 0x052100, // Logical block address out of bounds.
ERROR_INV_FIELD = 0x052400, // Invalid field in command packet.
ERROR_INV_AUDIO = 0x052401, // Invalid audio command.
ERROR_INV_PERIOD = 0x052402, // Configuration out of permitted period.
ERROR_END_USR_AREA = 0x056300, // End of user area encountered on this track.
ERROR_MEDIUM = 0x062800, // Medium may have changed.
ERROR_MEDIUM_REQ = 0x0b5a01 // Operator medium removal request.
};

enum DICommand
{
DVDLowInquiry = 0x12,
@@ -88,47 +88,43 @@ class Classic : public Extension1stParty

ControllerEmu::ControlGroup* GetGroup(ClassicGroup group);

enum
{
PAD_RIGHT = 0x80,
PAD_DOWN = 0x40,
TRIGGER_L = 0x20,
BUTTON_MINUS = 0x10,
BUTTON_HOME = 0x08,
BUTTON_PLUS = 0x04,
TRIGGER_R = 0x02,
NOTHING = 0x01,
BUTTON_ZL = 0x8000,
BUTTON_B = 0x4000,
BUTTON_Y = 0x2000,
BUTTON_A = 0x1000,
BUTTON_X = 0x0800,
BUTTON_ZR = 0x0400,
PAD_LEFT = 0x0200,
PAD_UP = 0x0100,
};

enum
{
CAL_STICK_CENTER = 0x80,
CAL_STICK_RANGE = 0x7f,
CAL_STICK_BITS = 8,

LEFT_STICK_BITS = 6,
LEFT_STICK_CENTER_X = CAL_STICK_CENTER >> (CAL_STICK_BITS - LEFT_STICK_BITS),
LEFT_STICK_CENTER_Y = CAL_STICK_CENTER >> (CAL_STICK_BITS - LEFT_STICK_BITS),
LEFT_STICK_RADIUS = CAL_STICK_RANGE >> (CAL_STICK_BITS - LEFT_STICK_BITS),

RIGHT_STICK_BITS = 5,
RIGHT_STICK_CENTER_X = CAL_STICK_CENTER >> (CAL_STICK_BITS - RIGHT_STICK_BITS),
RIGHT_STICK_CENTER_Y = CAL_STICK_CENTER >> (CAL_STICK_BITS - RIGHT_STICK_BITS),
RIGHT_STICK_RADIUS = CAL_STICK_RANGE >> (CAL_STICK_BITS - RIGHT_STICK_BITS),

LEFT_TRIGGER_RANGE = 0x1F,
RIGHT_TRIGGER_RANGE = 0x1F,
};

static const u8 STICK_GATE_RADIUS = 0x16;
static constexpr u16 PAD_RIGHT = 0x80;
static constexpr u16 PAD_DOWN = 0x40;
static constexpr u16 TRIGGER_L = 0x20;
static constexpr u16 BUTTON_MINUS = 0x10;
static constexpr u16 BUTTON_HOME = 0x08;
static constexpr u16 BUTTON_PLUS = 0x04;
static constexpr u16 TRIGGER_R = 0x02;
static constexpr u16 NOTHING = 0x01;
static constexpr u16 BUTTON_ZL = 0x8000;
static constexpr u16 BUTTON_B = 0x4000;
static constexpr u16 BUTTON_Y = 0x2000;
static constexpr u16 BUTTON_A = 0x1000;
static constexpr u16 BUTTON_X = 0x0800;
static constexpr u16 BUTTON_ZR = 0x0400;
static constexpr u16 PAD_LEFT = 0x0200;
static constexpr u16 PAD_UP = 0x0100;

static constexpr u8 CAL_STICK_CENTER = 0x80;
static constexpr u8 CAL_STICK_RANGE = 0x7f;
static constexpr int CAL_STICK_BITS = 8;

static constexpr int LEFT_STICK_BITS = 6;
static constexpr u8 LEFT_STICK_CENTER_X = CAL_STICK_CENTER >> (CAL_STICK_BITS - LEFT_STICK_BITS);
static constexpr u8 LEFT_STICK_CENTER_Y = CAL_STICK_CENTER >> (CAL_STICK_BITS - LEFT_STICK_BITS);
static constexpr u8 LEFT_STICK_RADIUS = CAL_STICK_RANGE >> (CAL_STICK_BITS - LEFT_STICK_BITS);

static constexpr int RIGHT_STICK_BITS = 5;
static constexpr u8 RIGHT_STICK_CENTER_X = CAL_STICK_CENTER >>
(CAL_STICK_BITS - RIGHT_STICK_BITS);
static constexpr u8 RIGHT_STICK_CENTER_Y = CAL_STICK_CENTER >>
(CAL_STICK_BITS - RIGHT_STICK_BITS);
static constexpr u8 RIGHT_STICK_RADIUS = CAL_STICK_RANGE >> (CAL_STICK_BITS - RIGHT_STICK_BITS);

static constexpr u8 LEFT_TRIGGER_RANGE = 0x1F;
static constexpr u8 RIGHT_TRIGGER_RANGE = 0x1F;

static constexpr u8 STICK_GATE_RADIUS = 0x16;

private:
ControllerEmu::Buttons* m_buttons;
@@ -67,8 +67,8 @@ class Drums : public Extension1stParty
{
None = 0b1111111,
Bass = 0b1011011,
// TODO: Implement HiHat.
// HiHat = 0b0011011,
// TODO: Implement HiHatPedal.
// HiHatPedal = 0b0011011,
Red = 0b1011001,
Yellow = 0b1010001,
Blue = 0b1001111,
@@ -86,25 +86,18 @@ class Drums : public Extension1stParty

void DoState(PointerWrap& p) override;

enum : u8
{
BUTTON_PLUS = 0x04,
BUTTON_MINUS = 0x10,

// FYI: The low/high bits of the button byte are "random" when velocity data is present.
// HAVE_VELOCITY_DATA = 0b10000001,
};

enum : u8
{
// FYI: HiHat sets no bits here.
PAD_BASS = 0x04,
PAD_BLUE = 0x08,
PAD_GREEN = 0x10,
PAD_YELLOW = 0x20,
PAD_RED = 0x40,
PAD_ORANGE = 0x80,
};
// FYI: The low/high bits of the button byte are "random" when velocity data is present.
// static constexpr u8 HAVE_VELOCITY_DATA = 0b10000001;
static constexpr u8 BUTTON_PLUS = 0x04;
static constexpr u8 BUTTON_MINUS = 0x10;

// FYI: The hi-hat pedal sets no bits here.
static constexpr u8 PAD_BASS = 0x04;
static constexpr u8 PAD_BLUE = 0x08;
static constexpr u8 PAD_GREEN = 0x10;
static constexpr u8 PAD_YELLOW = 0x20;
static constexpr u8 PAD_RED = 0x40;
static constexpr u8 PAD_ORANGE = 0x80;

// Note: My hardware's octagon stick produced the complete range of values (0 - 0x3f)
// It also had perfect center values of 0x20 with absolutely no "play".
@@ -57,19 +57,16 @@ class Guitar : public Extension1stParty

ControllerEmu::ControlGroup* GetGroup(GuitarGroup group);

enum
{
BUTTON_PLUS = 0x04,
BUTTON_MINUS = 0x10,
BAR_DOWN = 0x40,

BAR_UP = 0x0100,
FRET_YELLOW = 0x0800,
FRET_GREEN = 0x1000,
FRET_BLUE = 0x2000,
FRET_RED = 0x4000,
FRET_ORANGE = 0x8000,
};
static constexpr u16 BUTTON_PLUS = 0x04;
static constexpr u16 BUTTON_MINUS = 0x10;
static constexpr u16 BAR_DOWN = 0x40;

static constexpr u16 BAR_UP = 0x0100;
static constexpr u16 FRET_YELLOW = 0x0800;
static constexpr u16 FRET_GREEN = 0x1000;
static constexpr u16 FRET_BLUE = 0x2000;
static constexpr u16 FRET_RED = 0x4000;
static constexpr u16 FRET_ORANGE = 0x8000;

static const u8 STICK_CENTER = 0x20;
static const u8 STICK_RADIUS = 0x1f;
@@ -78,24 +78,15 @@ class Nunchuk : public Extension1stParty

ControllerEmu::ControlGroup* GetGroup(NunchukGroup group);

enum
{
BUTTON_C = 0x02,
BUTTON_Z = 0x01,
};
static constexpr u8 BUTTON_C = 0x02;
static constexpr u8 BUTTON_Z = 0x01;

enum
{
ACCEL_ZERO_G = 0x80,
ACCEL_ONE_G = 0xB3,
};
static constexpr u8 ACCEL_ZERO_G = 0x80;
static constexpr u8 ACCEL_ONE_G = 0xB3;

enum
{
STICK_CENTER = 0x80,
STICK_RADIUS = 0x7F,
STICK_GATE_RADIUS = 0x52,
};
static constexpr u8 STICK_CENTER = 0x80;
static constexpr u8 STICK_RADIUS = 0x7F;
static constexpr u8 STICK_GATE_RADIUS = 0x52;

void LoadDefaults(const ControllerInterface& ciface) override;

@@ -63,21 +63,18 @@ class Turntable : public Extension1stParty

ControllerEmu::ControlGroup* GetGroup(TurntableGroup group);

enum
{
BUTTON_EUPHORIA = 0x1000,
static constexpr u16 BUTTON_EUPHORIA = 0x1000;

BUTTON_L_GREEN = 0x0800,
BUTTON_L_RED = 0x20,
BUTTON_L_BLUE = 0x8000,
static constexpr u16 BUTTON_L_GREEN = 0x0800;
static constexpr u16 BUTTON_L_RED = 0x20;
static constexpr u16 BUTTON_L_BLUE = 0x8000;

BUTTON_R_GREEN = 0x2000,
BUTTON_R_RED = 0x02,
BUTTON_R_BLUE = 0x0400,
static constexpr u16 BUTTON_R_GREEN = 0x2000;
static constexpr u16 BUTTON_R_RED = 0x02;
static constexpr u16 BUTTON_R_BLUE = 0x0400;

BUTTON_MINUS = 0x10,
BUTTON_PLUS = 0x04,
};
static constexpr u16 BUTTON_MINUS = 0x10;
static constexpr u16 BUTTON_PLUS = 0x04;

static constexpr int STICK_BIT_COUNT = 6;
static constexpr u8 STICK_CENTER = (1 << STICK_BIT_COUNT) / 2;
@@ -83,27 +83,21 @@ void UpdateCalibrationDataChecksum(T& data, int cksum_bytes)
class Wiimote : public ControllerEmu::EmulatedController
{
public:
enum : u8
{
ACCEL_ZERO_G = 0x80,
ACCEL_ONE_G = 0x9A,
};

enum : u16
{
PAD_LEFT = 0x01,
PAD_RIGHT = 0x02,
PAD_DOWN = 0x04,
PAD_UP = 0x08,
BUTTON_PLUS = 0x10,

BUTTON_TWO = 0x0100,
BUTTON_ONE = 0x0200,
BUTTON_B = 0x0400,
BUTTON_A = 0x0800,
BUTTON_MINUS = 0x1000,
BUTTON_HOME = 0x8000,
};
static constexpr u8 ACCEL_ZERO_G = 0x80;
static constexpr u8 ACCEL_ONE_G = 0x9A;

static constexpr u16 PAD_LEFT = 0x01;
static constexpr u16 PAD_RIGHT = 0x02;
static constexpr u16 PAD_DOWN = 0x04;
static constexpr u16 PAD_UP = 0x08;
static constexpr u16 BUTTON_PLUS = 0x10;

static constexpr u16 BUTTON_TWO = 0x0100;
static constexpr u16 BUTTON_ONE = 0x0200;
static constexpr u16 BUTTON_B = 0x0400;
static constexpr u16 BUTTON_A = 0x0800;
static constexpr u16 BUTTON_MINUS = 0x1000;
static constexpr u16 BUTTON_HOME = 0x8000;

explicit Wiimote(unsigned int index);

0 comments on commit e7bc868

Please sign in to comment.
You can’t perform that action at this time.