158 lines
4.0 KiB
Plaintext
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];
|
|
}
|