BizHawk/waterbox/nyma/NymaTypes.fbs

158 lines
4.0 KiB
Plaintext

namespace NymaTypes;
enum SettingType: int32 {
/// (signed), int8, int16, int32, int64(saved as)
Int = 0,
/// uint8, uint16, uint32, uint64(saved as)
Uint,
/// 0 or 1
Bool,
/// float64
Float,
String,
/// string value from a list of potential strings
Enum,
/// TODO: How do these work
MultiEnum,
/// Shouldn't see any of these
Alias,
}
enum SettingsFlags: uint32 (bit_flags) {
/// TODO(cats)
Input = 0,
Sound = 1,
Video = 2,
/// User-configurable physical->virtual button/axes and hotkey mappings(driver-side code category mainly).
InputMapping = 3,
Path = 4,
/// If the setting affects emulation from the point of view of the emulated program
EmuState = 8,
/// If it's safe for an untrusted source to modify it, probably only used in conjunction with MDFNST_EX_EMU_STATE and network play
UntrustedSafe = 9,
/// Suppress documentation generation for this setting.
SuppressDoc = 10,
/// Auto-generated common template setting(like nes.xscale, pce.xscale, vb.xscale, nes.enable, pce.enable, vb.enable)
CommonTemplate = 11,
/// Don't save setting in settings file.
NonPersistent = 12,
/// TODO(in progress)
RequiresReload = 14,
RequiresRestart = 15,
}
table EnumValue {
Name: string;
Description: string;
Value: string;
}
table Setting {
Name: string;
Description: string;
SettingsKey: string;
DefaultValue: string;
Min: string;
Max: string;
Flags: SettingsFlags;
Type: SettingType;
SettingEnums: [EnumValue];
}
table Settings {
Values: [Setting];
}
enum InputType: uint8 {
Padding0 = 0, // n-bit, zero
Padding1, // n-bit, one bits
Button, // 1-bit
ButtonCanRapid, // 1-bit
Switch, // ceil(log2(n))-bit
// Current switch position(default 0).
// Persistent, and bidirectional communication(can be modified driver side, and Mednafen core and emulation module side)
Status, // ceil(log2(n))-bit
// emulation module->driver communication
Axis, // 16-bits; 0 through 65535; 32768 is centered position
PointerX, // mouse pointer, 16-bits, signed - in-screen/window range before scaling/offseting normalized coordinates: [0.0, 1.0)
PointerY, // see: mouse_scale_x, mouse_scale_y, mouse_offs_x, mouse_offs_y
AxisRel, // mouse relative motion, 16-bits, signed
ByteSpecial,
ResetButton, // 1-bit
ButtonAnalog, // 16-bits, 0 - 65535
Rumble, // 16-bits, lower 8 bits are weak rumble(0-255), next 8 bits are strong rumble(0-255), 0=no rumble, 255=max rumble. Somewhat subjective, too...
}
enum AxisFlags: uint8 (bit_flags) {
// Denotes analog data that may need to be scaled to ensure a more squareish logical range(for emulated analog sticks)
Sqlr = 0,
// Invert config order of the two components(neg,pos) of the axis
InvertCo = 1,
SettingsUndoc = 7,
}
enum DeviceFlags: uint8 (bit_flags) {
Keyboard = 0,
Unique = 1,
}
enum PortFlags: uint8 (bit_flags) {
NoUserSelect = 0,
}
table NButtonInfo {
ExcludeName: string;
}
table NAxisInfo {
// negative, then positive
SettingsNameNeg: string;
SettingsNamePos: string;
NameNeg: string;
NamePos: string;
}
table NSwitchInfo {
DefaultPosition: uint32;
Positions: [NSwitchPosition];
}
table NSwitchPosition {
SettingName: string;
Name: string;
Description: string;
}
table NStatusInfo {
States: [NStatusState];
}
table NStatusState {
ShortName: string;
Name: string;
Color: int32; // (msb)0RGB(lsb), -1 for unused.
}
union NInputExtra {
Button: NButtonInfo,
Axis: NAxisInfo,
Switch: NSwitchInfo,
Status: NStatusInfo,
}
table NInputInfo {
SettingName: string;
Name: string;
ConfigOrder: int16;
BitOffset: uint16;
Type: InputType;
Flags: AxisFlags;
BitSize: uint8;
Extra: NInputExtra;
}
table NDeviceInfo {
ShortName: string;
FullName: string;
Description: string;
Flags: DeviceFlags;
ByteLength: uint32;
Inputs: [NInputInfo];
}
table NPortInfo {
ShortName: string;
FullName: string;
DefaultDeviceShortName: string;
Flags: PortFlags;
Devices: [NDeviceInfo];
}
table NPorts {
Values: [NPortInfo];
}