画面音频,基本调通。GB|MS 可用,音频欠佳

This commit is contained in:
sin365 2025-01-03 19:53:38 +08:00
parent dd7424aa67
commit eb53a458de
33 changed files with 1523 additions and 1346 deletions

View File

@ -13,83 +13,83 @@ namespace Essgee.Emulation.Configuration
//todo Unity [DropDownControl("Controls", "Up", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Up", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsUp { get; set; } public MotionKey ControlsUp { get; set; }
//todo Unity [DropDownControl("Controls", "Down", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Down", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsDown { get; set; } public MotionKey ControlsDown { get; set; }
//todo Unity [DropDownControl("Controls", "Left", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Left", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsLeft { get; set; } public MotionKey ControlsLeft { get; set; }
//todo Unity [DropDownControl("Controls", "Right", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Right", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsRight { get; set; } public MotionKey ControlsRight { get; set; }
//todo Unity [DropDownControl("Controls", "Left Button", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Left Button", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsButtonLeft { get; set; } public MotionKey ControlsButtonLeft { get; set; }
//todo Unity [DropDownControl("Controls", "Right Button", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Right Button", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsButtonRight { get; set; } public MotionKey ControlsButtonRight { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad 1", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad 1", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypad1 { get; set; } public MotionKey ControlsKeypad1 { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad 2", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad 2", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypad2 { get; set; } public MotionKey ControlsKeypad2 { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad 3", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad 3", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypad3 { get; set; } public MotionKey ControlsKeypad3 { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad 4", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad 4", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypad4 { get; set; } public MotionKey ControlsKeypad4 { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad 5", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad 5", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypad5 { get; set; } public MotionKey ControlsKeypad5 { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad 6", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad 6", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypad6 { get; set; } public MotionKey ControlsKeypad6 { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad 7", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad 7", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypad7 { get; set; } public MotionKey ControlsKeypad7 { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad 8", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad 8", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypad8 { get; set; } public MotionKey ControlsKeypad8 { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad 9", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad 9", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypad9 { get; set; } public MotionKey ControlsKeypad9 { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad 0", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad 0", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypad0 { get; set; } public MotionKey ControlsKeypad0 { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad *", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad *", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypadStar { get; set; } public MotionKey ControlsKeypadStar { get; set; }
//todo Unity [DropDownControl("Controls", "Keypad #", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Keypad #", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsKeypadNumberSign { get; set; } public MotionKey ControlsKeypadNumberSign { get; set; }
public ColecoVision() public ColecoVision()
{ {
BiosRom = string.Empty; BiosRom = string.Empty;
ControlsUp = Keys.Up; ControlsUp = MotionKey.Up;
ControlsDown = Keys.Down; ControlsDown = MotionKey.Down;
ControlsLeft = Keys.Left; ControlsLeft = MotionKey.Left;
ControlsRight = Keys.Right; ControlsRight = MotionKey.Right;
ControlsButtonLeft = Keys.A; ControlsButtonLeft = MotionKey.A;
ControlsButtonRight = Keys.S; ControlsButtonRight = MotionKey.S;
ControlsKeypad1 = Keys.NumPad1; ControlsKeypad1 = MotionKey.NumPad1;
ControlsKeypad2 = Keys.NumPad2; ControlsKeypad2 = MotionKey.NumPad2;
ControlsKeypad3 = Keys.NumPad3; ControlsKeypad3 = MotionKey.NumPad3;
ControlsKeypad4 = Keys.NumPad4; ControlsKeypad4 = MotionKey.NumPad4;
ControlsKeypad5 = Keys.NumPad5; ControlsKeypad5 = MotionKey.NumPad5;
ControlsKeypad6 = Keys.NumPad6; ControlsKeypad6 = MotionKey.NumPad6;
ControlsKeypad7 = Keys.NumPad7; ControlsKeypad7 = MotionKey.NumPad7;
ControlsKeypad8 = Keys.NumPad8; ControlsKeypad8 = MotionKey.NumPad8;
ControlsKeypad9 = Keys.NumPad9; ControlsKeypad9 = MotionKey.NumPad9;
ControlsKeypad0 = Keys.NumPad0; ControlsKeypad0 = MotionKey.NumPad0;
ControlsKeypadStar = Keys.Multiply; ControlsKeypadStar = MotionKey.Multiply;
ControlsKeypadNumberSign = Keys.Divide; ControlsKeypadNumberSign = MotionKey.Divide;
} }
} }
} }

View File

@ -38,28 +38,28 @@ namespace Essgee.Emulation.Configuration
//todo Unity [DropDownControl("Controls", "Up", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Up", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsUp { get; set; } public MotionKey ControlsUp { get; set; }
//todo Unity [DropDownControl("Controls", "Down", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Down", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsDown { get; set; } public MotionKey ControlsDown { get; set; }
//todo Unity [DropDownControl("Controls", "Left", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Left", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsLeft { get; set; } public MotionKey ControlsLeft { get; set; }
//todo Unity [DropDownControl("Controls", "Right", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Right", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsRight { get; set; } public MotionKey ControlsRight { get; set; }
//todo Unity [DropDownControl("Controls", "A", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "A", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsA { get; set; } public MotionKey ControlsA { get; set; }
//todo Unity [DropDownControl("Controls", "B", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "B", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsB { get; set; } public MotionKey ControlsB { get; set; }
//todo Unity [DropDownControl("Controls", "Select", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Select", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsSelect { get; set; } public MotionKey ControlsSelect { get; set; }
//todo Unity [DropDownControl("Controls", "Start", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Start", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsStart { get; set; } public MotionKey ControlsStart { get; set; }
public GameBoy() public GameBoy()
{ {
@ -70,14 +70,14 @@ namespace Essgee.Emulation.Configuration
CameraSource = GBCameraCartridge.ImageSources.Noise; CameraSource = GBCameraCartridge.ImageSources.Noise;
CameraImageFile = string.Empty; CameraImageFile = string.Empty;
ControlsUp = Keys.Up; ControlsUp = MotionKey.Up;
ControlsDown = Keys.Down; ControlsDown = MotionKey.Down;
ControlsLeft = Keys.Left; ControlsLeft = MotionKey.Left;
ControlsRight = Keys.Right; ControlsRight = MotionKey.Right;
ControlsA = Keys.S; ControlsA = MotionKey.S;
ControlsB = Keys.A; ControlsB = MotionKey.A;
ControlsSelect = Keys.Space; ControlsSelect = MotionKey.Space;
ControlsStart = Keys.Enter; ControlsStart = MotionKey.Enter;
} }
} }
} }

View File

@ -33,31 +33,31 @@ namespace Essgee.Emulation.Configuration
//todo Unity [DropDownControl("Controls", "Up", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Up", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsUp { get; set; } public MotionKey ControlsUp { get; set; }
//todo Unity [DropDownControl("Controls", "Down", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Down", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsDown { get; set; } public MotionKey ControlsDown { get; set; }
//todo Unity [DropDownControl("Controls", "Left", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Left", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsLeft { get; set; } public MotionKey ControlsLeft { get; set; }
//todo Unity [DropDownControl("Controls", "Right", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Right", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsRight { get; set; } public MotionKey ControlsRight { get; set; }
//todo Unity [DropDownControl("Controls", "A", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "A", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsA { get; set; } public MotionKey ControlsA { get; set; }
//todo Unity [DropDownControl("Controls", "B", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "B", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsB { get; set; } public MotionKey ControlsB { get; set; }
//todo Unity [DropDownControl("Controls", "Select", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Select", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsSelect { get; set; } public MotionKey ControlsSelect { get; set; }
//todo Unity [DropDownControl("Controls", "Start", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Start", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsStart { get; set; } public MotionKey ControlsStart { get; set; }
//todo Unity [DropDownControl("Controls", "Send IR Signal", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Send IR Signal", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsSendIR { get; set; } public MotionKey ControlsSendIR { get; set; }
public GameBoyColor() public GameBoyColor()
{ {
@ -71,15 +71,15 @@ namespace Essgee.Emulation.Configuration
InfraredSource = Machines.GameBoyColor.InfraredSources.None; InfraredSource = Machines.GameBoyColor.InfraredSources.None;
InfraredDatabasePikachu = string.Empty; InfraredDatabasePikachu = string.Empty;
ControlsUp = Keys.Up; ControlsUp = MotionKey.Up;
ControlsDown = Keys.Down; ControlsDown = MotionKey.Down;
ControlsLeft = Keys.Left; ControlsLeft = MotionKey.Left;
ControlsRight = Keys.Right; ControlsRight = MotionKey.Right;
ControlsA = Keys.S; ControlsA = MotionKey.S;
ControlsB = Keys.A; ControlsB = MotionKey.A;
ControlsSelect = Keys.Space; ControlsSelect = MotionKey.Space;
ControlsStart = Keys.Enter; ControlsStart = MotionKey.Enter;
ControlsSendIR = Keys.Back; ControlsSendIR = MotionKey.Back;
} }
} }
} }

View File

@ -19,25 +19,25 @@ namespace Essgee.Emulation.Configuration
//todo Unity [DropDownControl("Controls", "D-Pad Up", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "D-Pad Up", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsUp { get; set; } public MotionKey ControlsUp { get; set; }
//todo Unity [DropDownControl("Controls", "D-Pad Down", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "D-Pad Down", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsDown { get; set; } public MotionKey ControlsDown { get; set; }
//todo Unity [DropDownControl("Controls", "D-Pad Left", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "D-Pad Left", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsLeft { get; set; } public MotionKey ControlsLeft { get; set; }
//todo Unity [DropDownControl("Controls", "D-Pad Right", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "D-Pad Right", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsRight { get; set; } public MotionKey ControlsRight { get; set; }
//todo Unity [DropDownControl("Controls", "Button 1", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Button 1", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsButton1 { get; set; } public MotionKey ControlsButton1 { get; set; }
//todo Unity [DropDownControl("Controls", "Button 2", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Button 2", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsButton2 { get; set; } public MotionKey ControlsButton2 { get; set; }
//todo Unity [DropDownControl("Controls", "Start", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controls", "Start", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys ControlsStart { get; set; } public MotionKey ControlsStart { get; set; }
public bool AllowMemoryControl { get; set; } public bool AllowMemoryControl { get; set; }
@ -47,13 +47,13 @@ namespace Essgee.Emulation.Configuration
Region = Region.Export; Region = Region.Export;
ControlsUp = Keys.Up; ControlsUp = MotionKey.Up;
ControlsDown = Keys.Down; ControlsDown = MotionKey.Down;
ControlsLeft = Keys.Left; ControlsLeft = MotionKey.Left;
ControlsRight = Keys.Right; ControlsRight = MotionKey.Right;
ControlsButton1 = Keys.A; ControlsButton1 = MotionKey.A;
ControlsButton2 = Keys.S; ControlsButton2 = MotionKey.S;
ControlsStart = Keys.Return; ControlsStart = MotionKey.Return;
AllowMemoryControl = true; AllowMemoryControl = true;
} }

View File

@ -25,54 +25,56 @@ namespace Essgee.Emulation.Configuration
//todo Unity [DropDownControl("General", "Pause Button", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("General", "Pause Button", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys InputPause { get; set; } public MotionKey InputPause { get; set; }
//todo Unity [DropDownControl("General", "Reset Button", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("General", "Reset Button", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys InputReset { get; set; } public MotionKey InputReset { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "Device Type", typeof(InputDevice))] //todo Unity [DropDownControl("Controller Port 1", "Device Type", typeof(InputDevice))]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public InputDevice Joypad1DeviceType { get; set; } public InputDevice Joypad1DeviceType { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Up", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Up", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Up { get; set; } public MotionKey Joypad1Up { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Down", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Down", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Down { get; set; } public MotionKey Joypad1Down { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Left", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Left", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Left { get; set; } public MotionKey Joypad1Left { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Right", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Right", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Right { get; set; } public MotionKey Joypad1Right { get;
set;
}
//todo Unity [DropDownControl("Controller Port 1", "Button 1", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "Button 1", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Button1 { get; set; } public MotionKey Joypad1Button1 { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "Button 2", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "Button 2", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Button2 { get; set; } public MotionKey Joypad1Button2 { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "Device Type", typeof(InputDevice))] //todo Unity [DropDownControl("Controller Port 2", "Device Type", typeof(InputDevice))]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public InputDevice Joypad2DeviceType { get; set; } public InputDevice Joypad2DeviceType { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Up", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Up", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Up { get; set; } public MotionKey Joypad2Up { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Down", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Down", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Down { get; set; } public MotionKey Joypad2Down { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Left", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Left", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Left { get; set; } public MotionKey Joypad2Left { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Right", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Right", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Right { get; set; } public MotionKey Joypad2Right { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "Button 1", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "Button 1", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Button1 { get; set; } public MotionKey Joypad2Button1 { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "Button 2", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "Button 2", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Button2 { get; set; } public MotionKey Joypad2Button2 { get; set; }
public bool AllowMemoryControl { get; set; } public bool AllowMemoryControl { get; set; }
@ -84,24 +86,24 @@ namespace Essgee.Emulation.Configuration
Region = Region.Export; Region = Region.Export;
VDPType = VDPTypes.SMS2GG; VDPType = VDPTypes.SMS2GG;
InputPause = Keys.Space; InputPause = MotionKey.Space;
InputReset = Keys.Back; InputReset = MotionKey.Back;
Joypad1DeviceType = InputDevice.Controller; Joypad1DeviceType = InputDevice.Controller;
Joypad1Up = Keys.Up; Joypad1Up = MotionKey.Up;
Joypad1Down = Keys.Down; Joypad1Down = MotionKey.Down;
Joypad1Left = Keys.Left; Joypad1Left = MotionKey.Left;
Joypad1Right = Keys.Right; Joypad1Right = MotionKey.Right;
Joypad1Button1 = Keys.A; Joypad1Button1 = MotionKey.A;
Joypad1Button2 = Keys.S; Joypad1Button2 = MotionKey.S;
Joypad2DeviceType = InputDevice.Controller; Joypad2DeviceType = InputDevice.Controller;
Joypad2Up = Keys.NumPad8; Joypad2Up = MotionKey.NumPad8;
Joypad2Down = Keys.NumPad2; Joypad2Down = MotionKey.NumPad2;
Joypad2Left = Keys.NumPad4; Joypad2Left = MotionKey.NumPad4;
Joypad2Right = Keys.NumPad6; Joypad2Right = MotionKey.NumPad6;
Joypad2Button1 = Keys.NumPad1; Joypad2Button1 = MotionKey.NumPad1;
Joypad2Button2 = Keys.NumPad3; Joypad2Button2 = MotionKey.NumPad3;
AllowMemoryControl = true; AllowMemoryControl = true;
} }

View File

@ -12,75 +12,75 @@ namespace Essgee.Emulation.Configuration
//todo Unity [DropDownControl("General", "Reset Button", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("General", "Reset Button", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys InputReset { get; set; } public MotionKey InputReset { get; set; }
//todo Unity [DropDownControl("General", "Change Input Mode", typeof(Keys), Keys.F11, Tooltip = "Selects which PC keyboard key is used to switch between SC-3000 keyboard and controller input.")] //todo Unity [DropDownControl("General", "Change Input Mode", typeof(Keys), Keys.F11, Tooltip = "Selects which PC keyboard key is used to switch between SC-3000 keyboard and controller input.")]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys InputChangeMode { get; set; } public MotionKey InputChangeMode { get; set; }
//todo Unity [DropDownControl("General", "Play Tape", typeof(Keys), Keys.F11, Tooltip = "Note that tape emulation is currently non-functional.")] //todo Unity [DropDownControl("General", "Play Tape", typeof(Keys), Keys.F11, Tooltip = "Note that tape emulation is currently non-functional.")]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys InputPlayTape { get; set; } public MotionKey InputPlayTape { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Up", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Up", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Up { get; set; } public MotionKey Joypad1Up { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Down", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Down", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Down { get; set; } public MotionKey Joypad1Down { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Left", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Left", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Left { get; set; } public MotionKey Joypad1Left { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Right", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Right", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Right { get; set; } public MotionKey Joypad1Right { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "Button 1", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "Button 1", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Button1 { get; set; } public MotionKey Joypad1Button1 { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "Button 2", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "Button 2", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Button2 { get; set; } public MotionKey Joypad1Button2 { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Up", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Up", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Up { get; set; } public MotionKey Joypad2Up { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Down", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Down", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Down { get; set; } public MotionKey Joypad2Down { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Left", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Left", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Left { get; set; } public MotionKey Joypad2Left { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Right", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Right", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Right { get; set; } public MotionKey Joypad2Right { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "Button 1", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "Button 1", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Button1 { get; set; } public MotionKey Joypad2Button1 { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "Button 2", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "Button 2", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Button2 { get; set; } public MotionKey Joypad2Button2 { get; set; }
public SC3000() public SC3000()
{ {
TVStandard = TVStandard.NTSC; TVStandard = TVStandard.NTSC;
InputReset = Keys.F12; InputReset = MotionKey.F12;
InputChangeMode = Keys.F1; InputChangeMode = MotionKey.F1;
InputPlayTape = Keys.F2; InputPlayTape = MotionKey.F2;
Joypad1Up = Keys.Up; Joypad1Up = MotionKey.Up;
Joypad1Down = Keys.Down; Joypad1Down = MotionKey.Down;
Joypad1Left = Keys.Left; Joypad1Left = MotionKey.Left;
Joypad1Right = Keys.Right; Joypad1Right = MotionKey.Right;
Joypad1Button1 = Keys.A; Joypad1Button1 = MotionKey.A;
Joypad1Button2 = Keys.S; Joypad1Button2 = MotionKey.S;
Joypad2Up = Keys.NumPad8; Joypad2Up = MotionKey.NumPad8;
Joypad2Down = Keys.NumPad2; Joypad2Down = MotionKey.NumPad2;
Joypad2Left = Keys.NumPad4; Joypad2Left = MotionKey.NumPad4;
Joypad2Right = Keys.NumPad6; Joypad2Right = MotionKey.NumPad6;
Joypad2Button1 = Keys.NumPad1; Joypad2Button1 = MotionKey.NumPad1;
Joypad2Button2 = Keys.NumPad3; Joypad2Button2 = MotionKey.NumPad3;
} }
} }
} }

View File

@ -12,65 +12,65 @@ namespace Essgee.Emulation.Configuration
//todo Unity [DropDownControl("General", "Pause Button", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("General", "Pause Button", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys InputPause { get; set; } public MotionKey InputPause { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Up", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Up", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Up { get; set; } public MotionKey Joypad1Up { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Down", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Down", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Down { get; set; } public MotionKey Joypad1Down { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Left", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Left", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Left { get; set; } public MotionKey Joypad1Left { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "D-Pad Right", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "D-Pad Right", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Right { get; set; } public MotionKey Joypad1Right { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "Button 1", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "Button 1", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Button1 { get; set; } public MotionKey Joypad1Button1 { get; set; }
//todo Unity [DropDownControl("Controller Port 1", "Button 2", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 1", "Button 2", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad1Button2 { get; set; } public MotionKey Joypad1Button2 { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Up", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Up", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Up { get; set; } public MotionKey Joypad2Up { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Down", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Down", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Down { get; set; } public MotionKey Joypad2Down { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Left", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Left", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Left { get; set; } public MotionKey Joypad2Left { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "D-Pad Right", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "D-Pad Right", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Right { get; set; } public MotionKey Joypad2Right { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "Button 1", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "Button 1", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Button1 { get; set; } public MotionKey Joypad2Button1 { get; set; }
//todo Unity [DropDownControl("Controller Port 2", "Button 2", typeof(Keys), Keys.F11)] //todo Unity [DropDownControl("Controller Port 2", "Button 2", typeof(Keys), Keys.F11)]
[JsonConverter(typeof(StringEnumConverter))] [JsonConverter(typeof(StringEnumConverter))]
public Keys Joypad2Button2 { get; set; } public MotionKey Joypad2Button2 { get; set; }
public SG1000() public SG1000()
{ {
TVStandard = TVStandard.NTSC; TVStandard = TVStandard.NTSC;
InputPause = Keys.Space; InputPause = MotionKey.Space;
Joypad1Up = Keys.Up; Joypad1Up = MotionKey.Up;
Joypad1Down = Keys.Down; Joypad1Down = MotionKey.Down;
Joypad1Left = Keys.Left; Joypad1Left = MotionKey.Left;
Joypad1Right = Keys.Right; Joypad1Right = MotionKey.Right;
Joypad1Button1 = Keys.A; Joypad1Button1 = MotionKey.A;
Joypad1Button2 = Keys.S; Joypad1Button2 = MotionKey.S;
Joypad2Up = Keys.NumPad8; Joypad2Up = MotionKey.NumPad8;
Joypad2Down = Keys.NumPad2; Joypad2Down = MotionKey.NumPad2;
Joypad2Left = Keys.NumPad4; Joypad2Left = MotionKey.NumPad4;
Joypad2Right = Keys.NumPad6; Joypad2Right = MotionKey.NumPad6;
Joypad2Button1 = Keys.NumPad1; Joypad2Button1 = MotionKey.NumPad1;
Joypad2Button2 = Keys.NumPad3; Joypad2Button2 = MotionKey.NumPad3;
} }
} }
} }

View File

@ -14,7 +14,7 @@ namespace Essgee.Emulation
{ {
readonly Action<Exception> exceptionHandler; readonly Action<Exception> exceptionHandler;
IMachine emulator; public IMachine emulator { get; private set; }
Thread emulationThread; Thread emulationThread;
volatile bool emulationThreadRunning; volatile bool emulationThreadRunning;

View File

@ -131,7 +131,7 @@ namespace Essgee.Emulation.Machines
int currentMasterClockCyclesInFrame, totalMasterClockCyclesInFrame; int currentMasterClockCyclesInFrame, totalMasterClockCyclesInFrame;
Configuration.GameBoy configuration; public Configuration.GameBoy configuration { get; private set; }
public GameBoy() { } public GameBoy() { }
@ -455,24 +455,40 @@ namespace Essgee.Emulation.Machines
inputsPressed = 0; inputsPressed = 0;
/* Keyboard */ /* Keyboard */
if (eventArgs.Keyboard.Contains(configuration.ControlsRight) && !eventArgs.Keyboard.Contains(configuration.ControlsLeft)) inputsPressed |= JoypadInputs.Right; if (eventArgs.Keyboard.Contains(configuration.ControlsRight) && !eventArgs.Keyboard.Contains(configuration.ControlsLeft))
if (eventArgs.Keyboard.Contains(configuration.ControlsLeft) && !eventArgs.Keyboard.Contains(configuration.ControlsRight)) inputsPressed |= JoypadInputs.Left; inputsPressed |= JoypadInputs.Right;
if (eventArgs.Keyboard.Contains(configuration.ControlsUp) && !eventArgs.Keyboard.Contains(configuration.ControlsDown)) inputsPressed |= JoypadInputs.Up; if (eventArgs.Keyboard.Contains(configuration.ControlsLeft) && !eventArgs.Keyboard.Contains(configuration.ControlsRight))
if (eventArgs.Keyboard.Contains(configuration.ControlsDown) && !eventArgs.Keyboard.Contains(configuration.ControlsUp)) inputsPressed |= JoypadInputs.Down; inputsPressed |= JoypadInputs.Left;
if (eventArgs.Keyboard.Contains(configuration.ControlsA)) inputsPressed |= JoypadInputs.A; if (eventArgs.Keyboard.Contains(configuration.ControlsUp) && !eventArgs.Keyboard.Contains(configuration.ControlsDown))
if (eventArgs.Keyboard.Contains(configuration.ControlsB)) inputsPressed |= JoypadInputs.B; inputsPressed |= JoypadInputs.Up;
if (eventArgs.Keyboard.Contains(configuration.ControlsSelect)) inputsPressed |= JoypadInputs.Select; if (eventArgs.Keyboard.Contains(configuration.ControlsDown) && !eventArgs.Keyboard.Contains(configuration.ControlsUp))
if (eventArgs.Keyboard.Contains(configuration.ControlsStart)) inputsPressed |= JoypadInputs.Start; inputsPressed |= JoypadInputs.Down;
if (eventArgs.Keyboard.Contains(configuration.ControlsA))
inputsPressed |= JoypadInputs.A;
if (eventArgs.Keyboard.Contains(configuration.ControlsB))
inputsPressed |= JoypadInputs.B;
if (eventArgs.Keyboard.Contains(configuration.ControlsSelect))
inputsPressed |= JoypadInputs.Select;
if (eventArgs.Keyboard.Contains(configuration.ControlsStart))
inputsPressed |= JoypadInputs.Start;
/* XInput controller */ /* XInput controller */
if (eventArgs.ControllerState.IsAnyRightDirectionPressed() && !eventArgs.ControllerState.IsAnyLeftDirectionPressed()) inputsPressed |= JoypadInputs.Right; if (eventArgs.ControllerState.IsAnyRightDirectionPressed() && !eventArgs.ControllerState.IsAnyLeftDirectionPressed())
if (eventArgs.ControllerState.IsAnyLeftDirectionPressed() && !eventArgs.ControllerState.IsAnyRightDirectionPressed()) inputsPressed |= JoypadInputs.Left; inputsPressed |= JoypadInputs.Right;
if (eventArgs.ControllerState.IsAnyUpDirectionPressed() && !eventArgs.ControllerState.IsAnyDownDirectionPressed()) inputsPressed |= JoypadInputs.Up; if (eventArgs.ControllerState.IsAnyLeftDirectionPressed() && !eventArgs.ControllerState.IsAnyRightDirectionPressed())
if (eventArgs.ControllerState.IsAnyDownDirectionPressed() && !eventArgs.ControllerState.IsAnyUpDirectionPressed()) inputsPressed |= JoypadInputs.Down; inputsPressed |= JoypadInputs.Left;
if (eventArgs.ControllerState.IsAPressed()) inputsPressed |= JoypadInputs.A; if (eventArgs.ControllerState.IsAnyUpDirectionPressed() && !eventArgs.ControllerState.IsAnyDownDirectionPressed())
if (eventArgs.ControllerState.IsXPressed() || eventArgs.ControllerState.IsBPressed()) inputsPressed |= JoypadInputs.B; inputsPressed |= JoypadInputs.Up;
if (eventArgs.ControllerState.IsBackPressed()) inputsPressed |= JoypadInputs.Select; if (eventArgs.ControllerState.IsAnyDownDirectionPressed() && !eventArgs.ControllerState.IsAnyUpDirectionPressed())
if (eventArgs.ControllerState.IsStartPressed()) inputsPressed |= JoypadInputs.Start; inputsPressed |= JoypadInputs.Down;
if (eventArgs.ControllerState.IsAPressed())
inputsPressed |= JoypadInputs.A;
if (eventArgs.ControllerState.IsXPressed() || eventArgs.ControllerState.IsBPressed())
inputsPressed |= JoypadInputs.B;
if (eventArgs.ControllerState.IsBackPressed())
inputsPressed |= JoypadInputs.Select;
if (eventArgs.ControllerState.IsStartPressed())
inputsPressed |= JoypadInputs.Start;
} }
private byte ReadMemory(ushort address) private byte ReadMemory(ushort address)

View File

@ -122,9 +122,9 @@ namespace Essgee.Emulation.Machines
int currentMasterClockCyclesInFrame, totalMasterClockCyclesInFrame; int currentMasterClockCyclesInFrame, totalMasterClockCyclesInFrame;
Configuration.MasterSystem configuration; public Configuration.MasterSystem configuration { get; private set; }
IEnumerable<Keys> lastKeysDown; IEnumerable<MotionKey> lastKeysDown;
ControllerState lastControllerState; ControllerState lastControllerState;
MouseButtons lastMouseButtons; MouseButtons lastMouseButtons;
(int x, int y) lastMousePosition; (int x, int y) lastMousePosition;
@ -145,7 +145,7 @@ namespace Essgee.Emulation.Machines
inputDevices[0] = InputDevice.None; inputDevices[0] = InputDevice.None;
inputDevices[1] = InputDevice.None; inputDevices[1] = InputDevice.None;
lastKeysDown = new List<Keys>(); lastKeysDown = new List<MotionKey>();
lastControllerState = new ControllerState(); lastControllerState = new ControllerState();
vdp.EndOfScanline += (s, e) => vdp.EndOfScanline += (s, e) =>

View File

@ -378,84 +378,84 @@ namespace Essgee.Emulation.Machines
/* Handle keyboard */ /* Handle keyboard */
// TODO: Replace hardcoded English layout w/ user-configurable settings // TODO: Replace hardcoded English layout w/ user-configurable settings
keyboard[0, 0] = keysDown.Contains(Keys.D1); keyboard[0, 0] = keysDown.Contains(MotionKey.D1);
keyboard[0, 1] = keysDown.Contains(Keys.D2); keyboard[0, 1] = keysDown.Contains(MotionKey.D2);
keyboard[0, 2] = keysDown.Contains(Keys.D3); keyboard[0, 2] = keysDown.Contains(MotionKey.D3);
keyboard[0, 3] = keysDown.Contains(Keys.D4); keyboard[0, 3] = keysDown.Contains(MotionKey.D4);
keyboard[0, 4] = keysDown.Contains(Keys.D5); keyboard[0, 4] = keysDown.Contains(MotionKey.D5);
keyboard[0, 5] = keysDown.Contains(Keys.D6); keyboard[0, 5] = keysDown.Contains(MotionKey.D6);
keyboard[0, 6] = keysDown.Contains(Keys.D7); keyboard[0, 6] = keysDown.Contains(MotionKey.D7);
keyboard[1, 0] = keysDown.Contains(Keys.Q); keyboard[1, 0] = keysDown.Contains(MotionKey.Q);
keyboard[1, 1] = keysDown.Contains(Keys.W); keyboard[1, 1] = keysDown.Contains(MotionKey.W);
keyboard[1, 2] = keysDown.Contains(Keys.E); keyboard[1, 2] = keysDown.Contains(MotionKey.E);
keyboard[1, 3] = keysDown.Contains(Keys.R); keyboard[1, 3] = keysDown.Contains(MotionKey.R);
keyboard[1, 4] = keysDown.Contains(Keys.T); keyboard[1, 4] = keysDown.Contains(MotionKey.T);
keyboard[1, 5] = keysDown.Contains(Keys.Y); keyboard[1, 5] = keysDown.Contains(MotionKey.Y);
keyboard[1, 6] = keysDown.Contains(Keys.U); keyboard[1, 6] = keysDown.Contains(MotionKey.U);
keyboard[2, 0] = keysDown.Contains(Keys.A); keyboard[2, 0] = keysDown.Contains(MotionKey.A);
keyboard[2, 1] = keysDown.Contains(Keys.S); keyboard[2, 1] = keysDown.Contains(MotionKey.S);
keyboard[2, 2] = keysDown.Contains(Keys.D); keyboard[2, 2] = keysDown.Contains(MotionKey.D);
keyboard[2, 3] = keysDown.Contains(Keys.F); keyboard[2, 3] = keysDown.Contains(MotionKey.F);
keyboard[2, 4] = keysDown.Contains(Keys.G); keyboard[2, 4] = keysDown.Contains(MotionKey.G);
keyboard[2, 5] = keysDown.Contains(Keys.H); keyboard[2, 5] = keysDown.Contains(MotionKey.H);
keyboard[2, 6] = keysDown.Contains(Keys.J); keyboard[2, 6] = keysDown.Contains(MotionKey.J);
keyboard[3, 0] = keysDown.Contains(Keys.Z); keyboard[3, 0] = keysDown.Contains(MotionKey.Z);
keyboard[3, 1] = keysDown.Contains(Keys.X); keyboard[3, 1] = keysDown.Contains(MotionKey.X);
keyboard[3, 2] = keysDown.Contains(Keys.C); keyboard[3, 2] = keysDown.Contains(MotionKey.C);
keyboard[3, 3] = keysDown.Contains(Keys.V); keyboard[3, 3] = keysDown.Contains(MotionKey.V);
keyboard[3, 4] = keysDown.Contains(Keys.B); keyboard[3, 4] = keysDown.Contains(MotionKey.B);
keyboard[3, 5] = keysDown.Contains(Keys.N); keyboard[3, 5] = keysDown.Contains(MotionKey.N);
keyboard[3, 6] = keysDown.Contains(Keys.M); keyboard[3, 6] = keysDown.Contains(MotionKey.M);
keyboard[4, 0] = keysDown.Contains(Keys.None); // Alphanumerics, Eng Dier's keyboard[4, 0] = keysDown.Contains(MotionKey.None); // Alphanumerics, Eng Dier's
keyboard[4, 1] = keysDown.Contains(Keys.Space); keyboard[4, 1] = keysDown.Contains(MotionKey.Space);
keyboard[4, 2] = keysDown.Contains(Keys.Home); // Clr, Home keyboard[4, 2] = keysDown.Contains(MotionKey.Home); // Clr, Home
keyboard[4, 3] = keysDown.Contains(Keys.Back); // Del, Ins keyboard[4, 3] = keysDown.Contains(MotionKey.Back); // Del, Ins
keyboard[4, 4] = keysDown.Contains(Keys.None); // Not on English keyboard? keyboard[4, 4] = keysDown.Contains(MotionKey.None); // Not on English keyboard?
keyboard[4, 5] = keysDown.Contains(Keys.None); // "" keyboard[4, 5] = keysDown.Contains(MotionKey.None); // ""
keyboard[4, 6] = keysDown.Contains(Keys.None); // "" keyboard[4, 6] = keysDown.Contains(MotionKey.None); // ""
keyboard[5, 0] = keysDown.Contains(Keys.Oemcomma); keyboard[5, 0] = keysDown.Contains(MotionKey.Oemcomma);
keyboard[5, 1] = keysDown.Contains(Keys.OemPeriod); keyboard[5, 1] = keysDown.Contains(MotionKey.OemPeriod);
keyboard[5, 2] = keysDown.Contains(Keys.OemQuestion); // Forward slash keyboard[5, 2] = keysDown.Contains(MotionKey.OemQuestion); // Forward slash
keyboard[5, 3] = keysDown.Contains(Keys.None); // Pi keyboard[5, 3] = keysDown.Contains(MotionKey.None); // Pi
keyboard[5, 4] = keysDown.Contains(Keys.Down); keyboard[5, 4] = keysDown.Contains(MotionKey.Down);
keyboard[5, 5] = keysDown.Contains(Keys.Left); keyboard[5, 5] = keysDown.Contains(MotionKey.Left);
keyboard[5, 6] = keysDown.Contains(Keys.Right); keyboard[5, 6] = keysDown.Contains(MotionKey.Right);
keyboard[6, 0] = keysDown.Contains(Keys.K); keyboard[6, 0] = keysDown.Contains(MotionKey.K);
keyboard[6, 1] = keysDown.Contains(Keys.L); keyboard[6, 1] = keysDown.Contains(MotionKey.L);
keyboard[6, 2] = keysDown.Contains(Keys.Oemplus); // Semicolon keyboard[6, 2] = keysDown.Contains(MotionKey.Oemplus); // Semicolon
keyboard[6, 3] = keysDown.Contains(Keys.OemSemicolon); // Colon keyboard[6, 3] = keysDown.Contains(MotionKey.OemSemicolon); // Colon
keyboard[6, 4] = keysDown.Contains(Keys.OemCloseBrackets); keyboard[6, 4] = keysDown.Contains(MotionKey.OemCloseBrackets);
keyboard[6, 5] = keysDown.Contains(Keys.Enter); keyboard[6, 5] = keysDown.Contains(MotionKey.Enter);
keyboard[6, 6] = keysDown.Contains(Keys.Up); keyboard[6, 6] = keysDown.Contains(MotionKey.Up);
keyboard[7, 0] = keysDown.Contains(Keys.I); keyboard[7, 0] = keysDown.Contains(MotionKey.I);
keyboard[7, 1] = keysDown.Contains(Keys.O); keyboard[7, 1] = keysDown.Contains(MotionKey.O);
keyboard[7, 2] = keysDown.Contains(Keys.P); keyboard[7, 2] = keysDown.Contains(MotionKey.P);
keyboard[7, 3] = keysDown.Contains(Keys.PageUp); // @ keyboard[7, 3] = keysDown.Contains(MotionKey.PageUp); // @
keyboard[7, 4] = keysDown.Contains(Keys.OemOpenBrackets); keyboard[7, 4] = keysDown.Contains(MotionKey.OemOpenBrackets);
keyboard[7, 5] = keysDown.Contains(Keys.None); // Not on English keyboard? keyboard[7, 5] = keysDown.Contains(MotionKey.None); // Not on English keyboard?
keyboard[7, 6] = keysDown.Contains(Keys.None); // "" keyboard[7, 6] = keysDown.Contains(MotionKey.None); // ""
keyboard[8, 0] = keysDown.Contains(Keys.D8); keyboard[8, 0] = keysDown.Contains(MotionKey.D8);
keyboard[8, 1] = keysDown.Contains(Keys.D9); keyboard[8, 1] = keysDown.Contains(MotionKey.D9);
keyboard[8, 2] = keysDown.Contains(Keys.D0); keyboard[8, 2] = keysDown.Contains(MotionKey.D0);
keyboard[8, 3] = keysDown.Contains(Keys.OemMinus); keyboard[8, 3] = keysDown.Contains(MotionKey.OemMinus);
keyboard[8, 4] = keysDown.Contains(Keys.Oemtilde); // ^, ~ keyboard[8, 4] = keysDown.Contains(MotionKey.Oemtilde); // ^, ~
keyboard[8, 5] = keysDown.Contains(Keys.OemPipe); // Yen, Pipe, Pound? keyboard[8, 5] = keysDown.Contains(MotionKey.OemPipe); // Yen, Pipe, Pound?
keyboard[8, 6] = keysDown.Contains(Keys.PageDown); // Break keyboard[8, 6] = keysDown.Contains(MotionKey.PageDown); // Break
keyboard[9, 6] = keysDown.Contains(Keys.RControlKey); // Graph keyboard[9, 6] = keysDown.Contains(MotionKey.RControlKey); // Graph
keyboard[10, 6] = keysDown.Contains(Keys.LControlKey); // Ctrl keyboard[10, 6] = keysDown.Contains(MotionKey.LControlKey); // Ctrl
keyboard[11, 5] = keysDown.Contains(Keys.Tab); // Func keyboard[11, 5] = keysDown.Contains(MotionKey.Tab); // Func
keyboard[11, 6] = keysDown.Contains(Keys.ShiftKey); // Shift keyboard[11, 6] = keysDown.Contains(MotionKey.ShiftKey); // Shift
} }
else else
{ {

View File

@ -10,6 +10,7 @@ using Essgee.EventArguments;
using Essgee.Utilities; using Essgee.Utilities;
using static Essgee.Emulation.CPU.SM83; using static Essgee.Emulation.CPU.SM83;
using System.Runtime.InteropServices;
namespace Essgee.Emulation.Video.Nintendo namespace Essgee.Emulation.Video.Nintendo
{ {
@ -408,9 +409,16 @@ namespace Essgee.Emulation.Video.Nintendo
if (skipFrames > 0) skipFrames--; if (skipFrames > 0) skipFrames--;
/* Submit screen for rendering */ /* Submit screen for rendering */
OnRenderScreen(new RenderScreenEventArgs(displayActiveWidth, displayActiveHeight, outputFramebuffer.Clone() as byte[]));
}
// 固定数组,防止垃圾回收器移动它
var bitmapcolorRect_handle = GCHandle.Alloc(outputFramebuffer.Clone() as byte[], GCHandleType.Pinned);
// 获取数组的指针
IntPtr mFrameDataPtr = bitmapcolorRect_handle.AddrOfPinnedObject();
OnRenderScreen(new RenderScreenEventArgs(displayActiveWidth, displayActiveHeight, mFrameDataPtr));
//OnRenderScreen(new RenderScreenEventArgs(displayActiveWidth, displayActiveHeight, outputFramebuffer.Clone() as byte[]));
}
else else
{ {
modeNumber = 2; modeNumber = 2;

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -54,7 +55,14 @@ namespace Essgee.Emulation.Video
protected override void PrepareRenderScreen() protected override void PrepareRenderScreen()
{ {
OnRenderScreen(new RenderScreenEventArgs(Viewport.Width, Viewport.Height, outputFramebuffer.Clone() as byte[]));
// 固定数组,防止垃圾回收器移动它
var bitmapcolorRect_handle = GCHandle.Alloc(outputFramebuffer.Clone() as byte[], GCHandleType.Pinned);
// 获取数组的指针
IntPtr mFrameDataPtr = bitmapcolorRect_handle.AddrOfPinnedObject();
OnRenderScreen(new RenderScreenEventArgs(numVisiblePixels, numVisibleScanlines, mFrameDataPtr));
//OnRenderScreen(new RenderScreenEventArgs(Viewport.Width, Viewport.Height, outputFramebuffer.Clone() as byte[]));
} }
private bool ModifyAndVerifyCoordinates(ref int x, ref int y) private bool ModifyAndVerifyCoordinates(ref int x, ref int y)

View File

@ -9,6 +9,7 @@ using Essgee.EventArguments;
using Essgee.Utilities; using Essgee.Utilities;
using static Essgee.Emulation.Utilities; using static Essgee.Emulation.Utilities;
using System.Runtime.InteropServices;
namespace Essgee.Emulation.Video namespace Essgee.Emulation.Video
{ {
@ -446,7 +447,14 @@ namespace Essgee.Emulation.Video
protected override void PrepareRenderScreen() protected override void PrepareRenderScreen()
{ {
OnRenderScreen(new RenderScreenEventArgs(numVisiblePixels, numVisibleScanlines, outputFramebuffer.Clone() as byte[]));
// 固定数组,防止垃圾回收器移动它
var bitmapcolorRect_handle = GCHandle.Alloc(outputFramebuffer.Clone() as byte[], GCHandleType.Pinned);
// 获取数组的指针
IntPtr mFrameDataPtr = bitmapcolorRect_handle.AddrOfPinnedObject();
OnRenderScreen(new RenderScreenEventArgs(numVisiblePixels, numVisibleScanlines, mFrameDataPtr));
//OnRenderScreen(new RenderScreenEventArgs(numVisiblePixels, numVisibleScanlines, outputFramebuffer.Clone() as byte[]));
} }
protected override byte ReadVram(ushort address) protected override byte ReadVram(ushort address)

View File

@ -9,6 +9,7 @@ using Essgee.EventArguments;
using Essgee.Utilities; using Essgee.Utilities;
using static Essgee.Emulation.Utilities; using static Essgee.Emulation.Utilities;
using System.Runtime.InteropServices;
namespace Essgee.Emulation.Video namespace Essgee.Emulation.Video
{ {
@ -342,8 +343,15 @@ namespace Essgee.Emulation.Video
protected virtual void PrepareRenderScreen() protected virtual void PrepareRenderScreen()
{ {
OnRenderScreen(new RenderScreenEventArgs(numVisiblePixels, numVisibleScanlines, outputFramebuffer.Clone() as byte[]));
} // 固定数组,防止垃圾回收器移动它
var bitmapcolorRect_handle = GCHandle.Alloc(outputFramebuffer.Clone() as byte[], GCHandleType.Pinned);
// 获取数组的指针
IntPtr mFrameDataPtr = bitmapcolorRect_handle.AddrOfPinnedObject();
OnRenderScreen(new RenderScreenEventArgs(numVisiblePixels, numVisibleScanlines, mFrameDataPtr));
//OnRenderScreen(new RenderScreenEventArgs(numVisiblePixels, numVisibleScanlines, outputFramebuffer.Clone() as byte[]));
}
protected virtual void ClearScreenUsage() protected virtual void ClearScreenUsage()
{ {

View File

@ -6,7 +6,7 @@ namespace Essgee.EventArguments
{ {
public class PollInputEventArgs : EventArgs public class PollInputEventArgs : EventArgs
{ {
public IEnumerable<Keys> Keyboard { get; set; } public IEnumerable<MotionKey> Keyboard { get; set; }
public MouseButtons MouseButtons { get; set; } public MouseButtons MouseButtons { get; set; }
public (int X, int Y) MousePosition { get; set; } public (int X, int Y) MousePosition { get; set; }
@ -15,7 +15,7 @@ namespace Essgee.EventArguments
public PollInputEventArgs() public PollInputEventArgs()
{ {
Keyboard = new List<Keys>(); Keyboard = new List<MotionKey>();
MouseButtons = MouseButtons.None; MouseButtons = MouseButtons.None;
MousePosition = (0, 0); MousePosition = (0, 0);

View File

@ -10,13 +10,16 @@ namespace Essgee.EventArguments
{ {
public int Width { get; private set; } public int Width { get; private set; }
public int Height { get; private set; } public int Height { get; private set; }
public byte[] FrameData { get; private set; } //public byte[] FrameData { get; private set; }
public IntPtr FrameDataPtr { get; private set; }
public RenderScreenEventArgs(int width, int height, byte[] data)
public RenderScreenEventArgs(int width, int height, IntPtr ptr)
{ {
Width = width; Width = width;
Height = height; Height = height;
FrameData = data; //FrameData = data;
FrameDataPtr = ptr;
} }
} }
} }

View File

@ -5,7 +5,7 @@ using System.ComponentModel;
[Flags] [Flags]
[ComVisible(true)] [ComVisible(true)]
public enum Keys public enum MotionKey
{ {
KeyCode = 0xFFFF, KeyCode = 0xFFFF,
Modifiers = -65536, Modifiers = -65536,

View File

@ -22,7 +22,7 @@ namespace Essgee.Utilities
if (!objectType.IsGenericType || objectType.GetGenericTypeDefinition() != typeof(Dictionary<,>)) throw new InvalidOperationException("Can only deserialize dictionaries"); if (!objectType.IsGenericType || objectType.GetGenericTypeDefinition() != typeof(Dictionary<,>)) throw new InvalidOperationException("Can only deserialize dictionaries");
var dictionary = (System.Collections.IDictionary)Activator.CreateInstance(objectType); var dictionary = (System.Collections.IDictionary)Activator.CreateInstance(objectType);
//不再读取配置
var jObject = JObject.Load(reader); var jObject = JObject.Load(reader);
foreach (var child in jObject.Children()) foreach (var child in jObject.Children())
{ {

View File

@ -1,8 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Essgee.Utilities.XInput namespace Essgee.Utilities.XInput
{ {

View File

@ -0,0 +1,401 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 10
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
m_BakeOnSceneLoad: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 3
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &330585543
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 330585546}
- component: {fileID: 330585545}
- component: {fileID: 330585544}
- component: {fileID: 330585547}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &330585544
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
--- !u!20 &330585545
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &330585546
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &330585547
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RenderShadows: 1
m_RequiresDepthTextureOption: 2
m_RequiresOpaqueTextureOption: 2
m_CameraType: 0
m_Cameras: []
m_RendererIndex: -1
m_VolumeLayerMask:
serializedVersion: 2
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 1
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
m_Dithering: 0
m_ClearDepth: 1
m_AllowXRRendering: 1
m_AllowHDROutput: 1
m_UseScreenCoordOverride: 0
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
m_Quality: 3
m_FrameInfluence: 0.1
m_JitterScale: 1
m_MipBias: 0
m_VarianceClampScale: 0.9
m_ContrastAdaptiveSharpening: 0
--- !u!1 &1469661490
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1469661493}
- component: {fileID: 1469661492}
- component: {fileID: 1469661491}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1469661491
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1469661490}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_MoveRepeatDelay: 0.5
m_MoveRepeatRate: 0.1
m_XRTrackingOrigin: {fileID: 0}
m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_DeselectOnBackgroundClick: 1
m_PointerBehavior: 0
m_CursorLockBehavior: 0
m_ScrollDeltaPerTick: 6
--- !u!114 &1469661492
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1469661490}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &1469661493
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1469661490}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &6778330545329863699
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 70883439141109485, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
propertyPath: m_Name
value: EssgeeUnity
objectReference: {fileID: 0}
- target: {fileID: 1697793132499616605, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1697793132499616605, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1697793132499616605, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1697793132499616605, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1697793132499616605, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1697793132499616605, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1697793132499616605, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1697793132499616605, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1697793132499616605, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1697793132499616605, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 20e1ff69d8c691b4299757181385f497, type: 3}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 330585546}
- {fileID: 6778330545329863699}
- {fileID: 1469661493}

View File

@ -0,0 +1,352 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &70883439141109485
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1697793132499616605}
- component: {fileID: 736821097941426334}
- component: {fileID: 1479243231233559559}
- component: {fileID: 7015183808095004452}
- component: {fileID: 6011412303868462633}
m_Layer: 0
m_Name: EssgeeUnity
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1697793132499616605
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 70883439141109485}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4829774629647575852}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &736821097941426334
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 70883439141109485}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ee8551c24327cd04a81ffb5de0146f9c, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &1479243231233559559
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 70883439141109485}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f675565b1f4ed7744a8ea9788c92429d, type: 3}
m_Name:
m_EditorClassIdentifier:
mWidth: 160
mHeight: 144
mDataLenght: 0
m_rawBufferWarper: {fileID: 0}
m_drawCanvas: {fileID: 1415903496979242101}
m_drawCanvasrect: {fileID: 4829774629647575852}
--- !u!114 &7015183808095004452
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 70883439141109485}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 89abab1d3b1020340a147d74e60751ce, type: 3}
m_Name:
m_EditorClassIdentifier:
m_as: {fileID: 6011412303868462633}
--- !u!82 &6011412303868462633
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 70883439141109485}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 0}
m_PlayOnAwake: 0
m_Volume: 1
m_Pitch: 1
Loop: 1
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1 &2203418964758308711
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 153069469667130431}
- component: {fileID: 1996193783355217829}
- component: {fileID: 1415903496979242101}
m_Layer: 5
m_Name: GameRawImage
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &153069469667130431
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2203418964758308711}
m_LocalRotation: {x: 1, y: 0, z: 0, w: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4829774629647575852}
m_LocalEulerAnglesHint: {x: 180, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1996193783355217829
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2203418964758308711}
m_CullTransparentMesh: 1
--- !u!114 &1415903496979242101
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2203418964758308711}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 0}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!1 &5558964681998005947
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4829774629647575852}
- component: {fileID: 6904606342347745421}
- component: {fileID: 2921482546112766419}
- component: {fileID: 7864505849399022799}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4829774629647575852
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5558964681998005947}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 153069469667130431}
m_Father: {fileID: 1697793132499616605}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!223 &6904606342347745421
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5558964681998005947}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!114 &2921482546112766419
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5558964681998005947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!114 &7864505849399022799
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5558964681998005947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 20e1ff69d8c691b4299757181385f497
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,754 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 10
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
m_BakeOnSceneLoad: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 3
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &14591771
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 14591772}
- component: {fileID: 14591774}
- component: {fileID: 14591773}
m_Layer: 5
m_Name: GameRawImage
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &14591772
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 14591771}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1786953329}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &14591773
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 14591771}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 0}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!222 &14591774
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 14591771}
m_CullTransparentMesh: 1
--- !u!1 &330585543
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 330585546}
- component: {fileID: 330585545}
- component: {fileID: 330585544}
- component: {fileID: 330585547}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &330585544
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
--- !u!20 &330585545
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &330585546
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &330585547
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 330585543}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RenderShadows: 1
m_RequiresDepthTextureOption: 2
m_RequiresOpaqueTextureOption: 2
m_CameraType: 0
m_Cameras: []
m_RendererIndex: -1
m_VolumeLayerMask:
serializedVersion: 2
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 1
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
m_Dithering: 0
m_ClearDepth: 1
m_AllowXRRendering: 1
m_AllowHDROutput: 1
m_UseScreenCoordOverride: 0
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
m_Quality: 3
m_FrameInfluence: 0.1
m_JitterScale: 1
m_MipBias: 0
m_VarianceClampScale: 0.9
m_ContrastAdaptiveSharpening: 0
--- !u!1 &410087039
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 410087041}
- component: {fileID: 410087040}
- component: {fileID: 410087042}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &410087040
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 410087039}
m_Enabled: 1
serializedVersion: 11
m_Type: 1
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 2
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_CullingMatrixOverride:
e00: 1
e01: 0
e02: 0
e03: 0
e10: 0
e11: 1
e12: 0
e13: 0
e20: 0
e21: 0
e22: 1
e23: 0
e30: 0
e31: 0
e32: 0
e33: 1
m_UseCullingMatrixOverride: 0
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 5000
m_UseColorTemperature: 1
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ForceVisible: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
m_LightUnit: 1
m_LuxAtDistance: 1
m_EnableSpotReflector: 1
--- !u!4 &410087041
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 410087039}
serializedVersion: 2
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!114 &410087042
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 410087039}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 3
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_LightLayerMask: 1
m_RenderingLayers: 1
m_CustomShadowLayers: 0
m_ShadowLayerMask: 1
m_ShadowRenderingLayers: 1
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 1
--- !u!1 &832575517
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 832575519}
- component: {fileID: 832575518}
m_Layer: 0
m_Name: Global Volume
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &832575518
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 832575517}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IsGlobal: 1
priority: 0
blendDistance: 0
weight: 1
sharedProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2}
--- !u!4 &832575519
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 832575517}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1469661490
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1469661493}
- component: {fileID: 1469661492}
- component: {fileID: 1469661491}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1469661491
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1469661490}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_MoveRepeatDelay: 0.5
m_MoveRepeatRate: 0.1
m_XRTrackingOrigin: {fileID: 0}
m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_DeselectOnBackgroundClick: 1
m_PointerBehavior: 0
m_CursorLockBehavior: 0
m_ScrollDeltaPerTick: 6
--- !u!114 &1469661492
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1469661490}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &1469661493
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1469661490}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1786953328
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1786953329}
- component: {fileID: 1786953332}
- component: {fileID: 1786953331}
- component: {fileID: 1786953330}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1786953329
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1786953328}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 14591772}
m_Father: {fileID: 2110653908}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!114 &1786953330
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1786953328}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &1786953331
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1786953328}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &1786953332
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1786953328}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 0
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!1 &2110653906
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2110653908}
- component: {fileID: 2110653907}
- component: {fileID: 2110653909}
m_Layer: 0
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &2110653907
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2110653906}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ee8551c24327cd04a81ffb5de0146f9c, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &2110653908
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2110653906}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1786953329}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2110653909
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2110653906}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f675565b1f4ed7744a8ea9788c92429d, type: 3}
m_Name:
m_EditorClassIdentifier:
mWidth: 160
mHeight: 144
mDataLenght: 0
m_rawBufferWarper: {fileID: 0}
m_drawCanvas: {fileID: 14591773}
m_drawCanvasrect: {fileID: 1786953329}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 330585546}
- {fileID: 410087041}
- {fileID: 832575519}
- {fileID: 2110653908}
- {fileID: 1469661493}

View File

@ -16,7 +16,9 @@ using UnityEngine;
public class Essgeeinit : MonoBehaviour public class Essgeeinit : MonoBehaviour
{ {
static Essgeeinit instance;
public static System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew(); public static System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew();
public static bool bInGame => instance?.emulatorHandler?.IsRunning == true ? true : false;
#region #region
UEGVideoPlayer graphicsHandler; UEGVideoPlayer graphicsHandler;
UEGSoundPlayer soundHandler; UEGSoundPlayer soundHandler;
@ -29,13 +31,15 @@ public class Essgeeinit : MonoBehaviour
double currentPixelAspectRatio; double currentPixelAspectRatio;
byte[] lastFramebufferData; byte[] lastFramebufferData;
(int width, int height) lastFramebufferSize; (int width, int height) lastFramebufferSize;
private UniKeyboard mUniKeyboard;
private List<Keys> keysDown;
#endregion #endregion
void Awake() void Awake()
{ {
instance = this;
InitAll(Application.streamingAssetsPath, Application.persistentDataPath); InitAll(Application.streamingAssetsPath, Application.persistentDataPath);
//LoadAndRunCartridge("G:/Ninja_Gaiden_(UE)_type_A_[!].sms");
LoadAndRunCartridge("G:/SML2.gb"); LoadAndRunCartridge("G:/SML2.gb");
} }
@ -45,6 +49,13 @@ public class Essgeeinit : MonoBehaviour
Dispose(false); Dispose(false);
} }
private void Update()
{
if (!emulatorHandler.IsRunning)
return;
mUniKeyboard.UpdateInputKey();
}
void InitAll(string BaseDataDir, string CustonDataDir) void InitAll(string BaseDataDir, string CustonDataDir)
{ {
//初始化配置 //初始化配置
@ -103,7 +114,7 @@ public class Essgeeinit : MonoBehaviour
void InitEmu() void InitEmu()
{ {
keysDown = new List<Keys>(); //keysDown = new List<MotionKey>();
} }
#region #region
@ -114,6 +125,8 @@ public class Essgeeinit : MonoBehaviour
InitializeGraphicsHandler(); InitializeGraphicsHandler();
InitializeSoundHandler(); InitializeSoundHandler();
InitializeMetadataHandler(); InitializeMetadataHandler();
mUniKeyboard = this.gameObject.AddComponent<UniKeyboard>();
} }
private void InitializeOSDHandler() private void InitializeOSDHandler()
@ -136,7 +149,7 @@ public class Essgeeinit : MonoBehaviour
private void InitializeSoundHandler() private void InitializeSoundHandler()
{ {
soundHandler = this.gameObject.AddComponent<UEGSoundPlayer>(); soundHandler = this.gameObject.GetComponent<UEGSoundPlayer>();
//soundHandler = new SoundHandler(onScreenDisplayHandler, Program.Configuration.SampleRate, 2, ExceptionHandler); //soundHandler = new SoundHandler(onScreenDisplayHandler, Program.Configuration.SampleRate, 2, ExceptionHandler);
//soundHandler.SetVolume(Program.Configuration.Volume); //soundHandler.SetVolume(Program.Configuration.Volume);
//soundHandler.SetMute(Program.Configuration.Mute); //soundHandler.SetMute(Program.Configuration.Mute);
@ -176,6 +189,7 @@ public class Essgeeinit : MonoBehaviour
} }
List<Type> machineType = new List<Type>(); List<Type> machineType = new List<Type>();
machineType.Add(typeof(GameBoy)); machineType.Add(typeof(GameBoy));
machineType.Add(typeof(MasterSystem));
//foreach (var machineConfigType in Assembly.GetExecutingAssembly().GetTypes().Where(x => typeof(IConfiguration).IsAssignableFrom(x) && !x.IsInterface && !x.IsAbstract)) //foreach (var machineConfigType in Assembly.GetExecutingAssembly().GetTypes().Where(x => typeof(IConfiguration).IsAssignableFrom(x) && !x.IsInterface && !x.IsAbstract))
foreach (var machineConfigType in machineType) foreach (var machineConfigType in machineType)
@ -344,8 +358,16 @@ public class Essgeeinit : MonoBehaviour
//startRecordingToolStripMenuItem.Enabled = true; //startRecordingToolStripMenuItem.Enabled = true;
//toggleLayersToolStripMenuItem.Enabled = enableChannelsToolStripMenuItem.Enabled = true; //toggleLayersToolStripMenuItem.Enabled = enableChannelsToolStripMenuItem.Enabled = true;
//初始化不同平台的按钮
mUniKeyboard.Init(emulatorHandler.emulator);
emulatorHandler.Startup(); emulatorHandler.Startup();
//初始化音频
soundHandler.Initialize();
//SizeAndPositionWindow(); //SizeAndPositionWindow();
//SetWindowTitleAndStatus(); //SetWindowTitleAndStatus();
@ -544,7 +566,8 @@ public class Essgeeinit : MonoBehaviour
//lastFramebufferData = e.FrameData; //lastFramebufferData = e.FrameData;
//graphicsHandler?.SetTextureData(e.FrameData); //graphicsHandler?.SetTextureData(e.FrameData);
graphicsHandler.SubmitVideo(e.Width, e.Height, e.FrameData, 0); //graphicsHandler.SubmitVideo(e.Width, e.Height, e.FrameData, 0);
graphicsHandler.SubmitVideo(e.Width, e.Height, e.FrameDataPtr, 0);
// TODO: create emulation "EndOfFrame" event for this? // TODO: create emulation "EndOfFrame" event for this?
ControllerManager.Update(); ControllerManager.Update();
@ -577,10 +600,14 @@ public class Essgeeinit : MonoBehaviour
{ {
//TODO Input实现 //TODO Input实现
//// TODO: rare, random, weird argument exceptions on e.Keyboard assignment; does this lock help?? e.Keyboard = mUniKeyboard.mKeyCodeCore.GetPressedKeys();
e.MouseButtons = default;
e.MousePosition = default;
// TODO: rare, random, weird argument exceptions on e.Keyboard assignment; does this lock help??
//lock (uiLock) //lock (uiLock)
//{ //{
// e.Keyboard = new List<Keys>(keysDown); // e.Keyboard = new List<MotionKey>(keysDown);
// e.MouseButtons = mouseButtonsDown; // e.MouseButtons = mouseButtonsDown;
// var vx = (currentViewport.x - 50); // var vx = (currentViewport.x - 50);
@ -655,7 +682,6 @@ public class Essgeeinit : MonoBehaviour
public void EnqueueSoundSamples(object sender, EnqueueSamplesEventArgs e) public void EnqueueSoundSamples(object sender, EnqueueSamplesEventArgs e)
{ {
return;
//if (sampleQueue.Count > MaxQueueLength) //if (sampleQueue.Count > MaxQueueLength)
//{ //{
// var samplesToDrop = (sampleQueue.Count - MaxQueueLength); // var samplesToDrop = (sampleQueue.Count - MaxQueueLength);
@ -674,7 +700,7 @@ public class Essgeeinit : MonoBehaviour
//} //}
//TODO 音频处理 //TODO 音频处理
soundHandler.SubmitSamples(e.MixedSamples, e.MixedSamples.Length); soundHandler.SubmitSamples(e.MixedSamples, e.ChannelSamples, e.MixedSamples.Length);
} }
#endregion #endregion
} }

View File

@ -0,0 +1,72 @@
using System.Threading;
public class RingBuffer<T>
{
private readonly T[] buffer;
private readonly int capacity;
private int writePos;
private int readPos;
private int count;
public RingBuffer(int capacity)
{
this.capacity = capacity;
this.buffer = new T[capacity];
this.writePos = 0;
this.readPos = 0;
this.count = 0;
}
public void Write(T item)
{
int localWritePos;
int localReadPos;
do
{
localWritePos = Volatile.Read(ref writePos);
localReadPos = Volatile.Read(ref readPos);
int nextWritePos = (localWritePos + 1) % capacity;
if (nextWritePos == localReadPos)
{
// 缓冲区已满,覆盖最旧的未读数据
Interlocked.CompareExchange(ref readPos, (localReadPos + 1) % capacity, localReadPos);
}
}
while (Interlocked.CompareExchange(ref writePos, (localWritePos + 1) % capacity, localWritePos) != localWritePos);
buffer[localWritePos] = item;
Interlocked.Increment(ref count);
}
public bool TryRead(out T item)
{
item = default(T);
int localReadPos;
int localWritePos;
do
{
localReadPos = Volatile.Read(ref readPos);
localWritePos = Volatile.Read(ref writePos);
if (localReadPos == localWritePos)
{
return false; // 缓冲区为空
}
}
while (Interlocked.CompareExchange(ref readPos, (localReadPos + 1) % capacity, localReadPos) != localReadPos);
item = buffer[localReadPos];
Interlocked.Decrement(ref count);
return true;
}
public int Available()
{
return Volatile.Read(ref count);
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c4dad3e52cbbde841a9eb86cd7a18a37

View File

@ -1,183 +1,198 @@
//using MAME.Core; using Essgee.Emulation.Configuration;
//using System; using System;
//using System.Collections.Generic; using System.Collections.Generic;
//using System.Linq; using System.Linq;
//using UnityEngine; using UnityEngine;
//public class KeyCodeCore : IKeyboard public class KeyCodeCore
//{ {
// public Dictionary<KeyCode, MotionKey> dictKeyCfgs = new Dictionary<KeyCode, MotionKey>(); public Dictionary<KeyCode, MotionKey> dictKeyCfgs = new Dictionary<KeyCode, MotionKey>();
// public KeyCode[] CheckList; public KeyCode[] CheckList;
// public MotionKey[] mCurrKey = new MotionKey[0]; public MotionKey[] mCurrKey = new MotionKey[0];
// public ulong CurryInpuAllData = 0; //public ulong CurryInpuAllData = 0;
// List<MotionKey> temp = new List<MotionKey>(); List<MotionKey> temp = new List<MotionKey>();
// ulong tempInputAllData = 0; ulong tempInputAllData = 0;
// UniKeyboard mUniKeyboard; UniKeyboard mUniKeyboard;
// bool bReplayMode; //bool bReplayMode;
// List<MotionKey> ReplayCheckKey = new List<MotionKey>(); //List<MotionKey> ReplayCheckKey = new List<MotionKey>();
// ulong last_CurryInpuAllData_test = 0; ulong last_CurryInpuAllData_test = 0;
// public MotionKey[] GetPressedKeys() public MotionKey[] GetPressedKeys()
// { {
// if (!bReplayMode) return mCurrKey;
// {
// //UMAME.instance.mReplayWriter.NextFramebyFrameIdx((int)UMAME.instance.mUniVideoPlayer.mFrame, CurryInpuAllData);
// UMAME.instance.mReplayWriter.NextFramebyFrameIdx((int)UMAME.instance.mUniVideoPlayer.mFrame, CurryInpuAllData);
//#if UNITY_EDITOR // if (!bReplayMode)
// if (last_CurryInpuAllData_test != CurryInpuAllData) // {
// { // //UMAME.instance.mReplayWriter.NextFramebyFrameIdx((int)UMAME.instance.mUniVideoPlayer.mFrame, CurryInpuAllData);
// last_CurryInpuAllData_test = CurryInpuAllData; // UMAME.instance.mReplayWriter.NextFramebyFrameIdx((int)UMAME.instance.mUniVideoPlayer.mFrame, CurryInpuAllData);
// string TempStr = "";
// foreach (var item in mCurrKey)
// {
// TempStr += $"{item.ToString()}|";
// }
// if (!string.IsNullOrEmpty(TempStr))
// Debug.Log($"{UMAME.instance.mUniVideoPlayer.mFrame} | Input-> {TempStr}");
// else
// Debug.Log($"{UMAME.instance.mUniVideoPlayer.mFrame} | Input-> 0");
// }
//#endif
// return mCurrKey;
// }
// else
// {
// //有变化
// //if (UMAME.instance.mReplayReader.NextFrame(out AxiReplay.ReplayStep stepData)) //#if UNITY_EDITOR
// if (UMAME.instance.mReplayReader.NextFramebyFrameIdx((int)UMAME.instance.mUniVideoPlayer.mFrame, out AxiReplay.ReplayStep stepData)) // if (last_CurryInpuAllData_test != CurryInpuAllData)
// { // {
// temp.Clear(); // last_CurryInpuAllData_test = CurryInpuAllData;
// //有数据 // string TempStr = "";
// for (int i = 0; i < ReplayCheckKey.Count; i++) // foreach (var item in mCurrKey)
// { // {
// if ((stepData.InPut & (ulong)ReplayCheckKey[i]) > 0) // TempStr += $"{item.ToString()}|";
// temp.Add(ReplayCheckKey[i]); // }
// } // if (!string.IsNullOrEmpty(TempStr))
// mCurrKey = temp.ToArray(); // Debug.Log($"{UMAME.instance.mUniVideoPlayer.mFrame} | Input-> {TempStr}");
// else
// Debug.Log($"{UMAME.instance.mUniVideoPlayer.mFrame} | Input-> 0");
// }
//#endif
// return mCurrKey;
// }
// else
// {
// //有变化
// //if (UMAME.instance.mReplayReader.NextFrame(out AxiReplay.ReplayStep stepData))
// if (UMAME.instance.mReplayReader.NextFramebyFrameIdx((int)UMAME.instance.mUniVideoPlayer.mFrame, out AxiReplay.ReplayStep stepData))
// {
// temp.Clear();
// //有数据
// for (int i = 0; i < ReplayCheckKey.Count; i++)
// {
// if ((stepData.InPut & (ulong)ReplayCheckKey[i]) > 0)
// temp.Add(ReplayCheckKey[i]);
// }
// mCurrKey = temp.ToArray();
//#if UNITY_EDITOR //#if UNITY_EDITOR
// string TempStr = ""; // string TempStr = "";
// foreach (var item in mCurrKey) // foreach (var item in mCurrKey)
// { // {
// TempStr += $"{item.ToString()}|"; // TempStr += $"{item.ToString()}|";
// } // }
// if (!string.IsNullOrEmpty(TempStr)) // if (!string.IsNullOrEmpty(TempStr))
// Debug.Log($"{UMAME.instance.mUniVideoPlayer.mFrame} | Input-> {TempStr}"); // Debug.Log($"{UMAME.instance.mUniVideoPlayer.mFrame} | Input-> {TempStr}");
// else // else
// Debug.Log($"{UMAME.instance.mUniVideoPlayer.mFrame} | Input-> 0"); // Debug.Log($"{UMAME.instance.mUniVideoPlayer.mFrame} | Input-> 0");
//#endif //#endif
// } // }
// return mCurrKey; // return mCurrKey;
// } // }
// } }
// public void SetRePlay(bool IsReplay) public void SetRePlay(bool IsReplay)
// { {
// bReplayMode = IsReplay; //bReplayMode = IsReplay;
// } }
// public void Init(UniKeyboard uniKeyboard, bool IsReplay) public void Init(Essgee.Emulation.Machines.IMachine Machine, UniKeyboard uniKeyboard, bool IsReplay)
// { {
// bReplayMode = IsReplay; //bReplayMode = IsReplay;
// mUniKeyboard = uniKeyboard; mUniKeyboard = uniKeyboard;
// foreach (MotionKey mkey in Enum.GetValues(typeof(MotionKey))) //foreach (MotionKey mkey in Enum.GetValues(typeof(MotionKey)))
// { //{
// ReplayCheckKey.Add(mkey); // ReplayCheckKey.Add(mkey);
// } //}
// dictKeyCfgs.Clear(); dictKeyCfgs.Clear();
// //dictKeyCfgs.Add(KeyCode.P, MotionKey.EMU_PAUSED); //dictKeyCfgs.Add(KeyCode.P, MotionKey.EMU_PAUSED);
// dictKeyCfgs.Add(KeyCode.Alpha1, MotionKey.P1_GAMESTART);
// dictKeyCfgs.Add(KeyCode.Alpha5, MotionKey.P1_INSERT_COIN); if (Machine is Essgee.Emulation.Machines.MasterSystem)
// dictKeyCfgs.Add(KeyCode.W, MotionKey.P1_UP); {
// dictKeyCfgs.Add(KeyCode.S, MotionKey.P1_DOWN); var machine = (Essgee.Emulation.Machines.MasterSystem)Machine;
// dictKeyCfgs.Add(KeyCode.A, MotionKey.P1_LEFT); dictKeyCfgs.Add(KeyCode.W, machine.configuration.Joypad1Up);
// dictKeyCfgs.Add(KeyCode.D, MotionKey.P1_RIGHT); dictKeyCfgs.Add(KeyCode.S, machine.configuration.Joypad1Down);
// dictKeyCfgs.Add(KeyCode.J, MotionKey.P1_BTN_1); dictKeyCfgs.Add(KeyCode.A, machine.configuration.Joypad1Left);
// dictKeyCfgs.Add(KeyCode.K, MotionKey.P1_BTN_2); dictKeyCfgs.Add(KeyCode.D, machine.configuration.Joypad1Right);
// dictKeyCfgs.Add(KeyCode.L, MotionKey.P1_BTN_3); dictKeyCfgs.Add(KeyCode.J, machine.configuration.Joypad1Button1);
// dictKeyCfgs.Add(KeyCode.U, MotionKey.P1_BTN_4); dictKeyCfgs.Add(KeyCode.K, machine.configuration.Joypad1Button2);
// dictKeyCfgs.Add(KeyCode.KeypadDivide, MotionKey.P2_GAMESTART);
// dictKeyCfgs.Add(KeyCode.KeypadMultiply, MotionKey.P2_INSERT_COIN); dictKeyCfgs.Add(KeyCode.UpArrow, machine.configuration.Joypad2Up);
// dictKeyCfgs.Add(KeyCode.UpArrow, MotionKey.P2_UP); dictKeyCfgs.Add(KeyCode.DownArrow, machine.configuration.Joypad2Down);
// dictKeyCfgs.Add(KeyCode.DownArrow, MotionKey.P2_DOWN); dictKeyCfgs.Add(KeyCode.LeftArrow, machine.configuration.Joypad2Left);
// dictKeyCfgs.Add(KeyCode.LeftArrow, MotionKey.P2_LEFT); dictKeyCfgs.Add(KeyCode.RightAlt, machine.configuration.Joypad2Right);
// dictKeyCfgs.Add(KeyCode.RightArrow, MotionKey.P2_RIGHT); dictKeyCfgs.Add(KeyCode.Alpha1, machine.configuration.Joypad2Button1);
// dictKeyCfgs.Add(KeyCode.Keypad1, MotionKey.P2_BTN_1); dictKeyCfgs.Add(KeyCode.Alpha2, machine.configuration.Joypad2Button2);
// dictKeyCfgs.Add(KeyCode.Keypad2, MotionKey.P2_BTN_2); }
// dictKeyCfgs.Add(KeyCode.Keypad3, MotionKey.P2_BTN_3); else if (Machine is Essgee.Emulation.Machines.GameBoy)
// dictKeyCfgs.Add(KeyCode.Keypad4, MotionKey.P2_BTN_4); {
// CheckList = dictKeyCfgs.Keys.ToArray(); var machine = (Essgee.Emulation.Machines.GameBoy)Machine;
dictKeyCfgs.Add(KeyCode.W, machine.configuration.ControlsUp);
dictKeyCfgs.Add(KeyCode.S, machine.configuration.ControlsDown);
dictKeyCfgs.Add(KeyCode.A, machine.configuration.ControlsLeft);
dictKeyCfgs.Add(KeyCode.D, machine.configuration.ControlsRight);
dictKeyCfgs.Add(KeyCode.J, machine.configuration.ControlsB);
dictKeyCfgs.Add(KeyCode.K, machine.configuration.ControlsA);
dictKeyCfgs.Add(KeyCode.Return, machine.configuration.ControlsStart);
dictKeyCfgs.Add(KeyCode.RightShift, machine.configuration.ControlsSelect);
}
CheckList = dictKeyCfgs.Keys.ToArray();
// mUniKeyboard.btnP1.Key = new long[] { (long)MotionKey.P1_GAMESTART }; //mUniKeyboard.btnP1.Key = new long[] { (long)MotionKey.P1_GAMESTART };
// mUniKeyboard.btnCoin1.Key = new long[] { (long)MotionKey.P1_INSERT_COIN }; //mUniKeyboard.btnCoin1.Key = new long[] { (long)MotionKey.P1_INSERT_COIN };
// mUniKeyboard.btnA.Key = new long[] { (long)MotionKey.P1_BTN_1 }; //mUniKeyboard.btnA.Key = new long[] { (long)MotionKey.P1_BTN_1 };
// mUniKeyboard.btnB.Key = new long[] { (long)MotionKey.P1_BTN_2 }; //mUniKeyboard.btnB.Key = new long[] { (long)MotionKey.P1_BTN_2 };
// mUniKeyboard.btnC.Key = new long[] { (long)MotionKey.P1_BTN_3 }; //mUniKeyboard.btnC.Key = new long[] { (long)MotionKey.P1_BTN_3 };
// mUniKeyboard.btnD.Key = new long[] { (long)MotionKey.P1_BTN_4 }; //mUniKeyboard.btnD.Key = new long[] { (long)MotionKey.P1_BTN_4 };
// //mUniKeyboard.btnE.Key = new long[] { (long)MotionKey.P1_BTN_5 }; ////mUniKeyboard.btnE.Key = new long[] { (long)MotionKey.P1_BTN_5 };
// //mUniKeyboard.btnF.Key = new long[] { (long)MotionKey.P1_BTN_6 }; ////mUniKeyboard.btnF.Key = new long[] { (long)MotionKey.P1_BTN_6 };
// mUniKeyboard.btnAB.Key = new long[] { (long)MotionKey.P1_BTN_1, (long)MotionKey.P1_BTN_2 }; //mUniKeyboard.btnAB.Key = new long[] { (long)MotionKey.P1_BTN_1, (long)MotionKey.P1_BTN_2 };
// mUniKeyboard.btnCD.Key = new long[] { (long)MotionKey.P1_BTN_3, (long)MotionKey.P1_BTN_4 }; //mUniKeyboard.btnCD.Key = new long[] { (long)MotionKey.P1_BTN_3, (long)MotionKey.P1_BTN_4 };
// mUniKeyboard.btnABC.Key = new long[] { (long)MotionKey.P1_BTN_1, (long)MotionKey.P1_BTN_2, (long)MotionKey.P1_BTN_3 }; //mUniKeyboard.btnABC.Key = new long[] { (long)MotionKey.P1_BTN_1, (long)MotionKey.P1_BTN_2, (long)MotionKey.P1_BTN_3 };
// } }
// public void UpdateLogic() public void UpdateLogic()
// { {
// if (bReplayMode) return; //if (bReplayMode) return;
// tempInputAllData = 0; tempInputAllData = 0;
// temp.Clear(); temp.Clear();
// for (int i = 0; i < CheckList.Length; i++) for (int i = 0; i < CheckList.Length; i++)
// { {
// if (Input.GetKey(CheckList[i])) if (Input.GetKey(CheckList[i]))
// { {
// MotionKey mk = dictKeyCfgs[CheckList[i]]; MotionKey mk = dictKeyCfgs[CheckList[i]];
// temp.Add(mk); temp.Add(mk);
// tempInputAllData |= (ulong)mk; tempInputAllData |= (ulong)mk;
// } }
// } }
// for (int i = 0; i < mUniKeyboard.mUIBtns.Count; i++) //for (int i = 0; i < mUniKeyboard.mUIBtns.Count; i++)
// { //{
// if (mUniKeyboard.mUIBtns[i].bHotKey) // if (mUniKeyboard.mUIBtns[i].bHotKey)
// { // {
// for (int j = 0; j < mUniKeyboard.mUIBtns[i].Key.Length; j++) // for (int j = 0; j < mUniKeyboard.mUIBtns[i].Key.Length; j++)
// { // {
// MotionKey mk = (MotionKey)mUniKeyboard.mUIBtns[i].Key[j]; // MotionKey mk = (MotionKey)mUniKeyboard.mUIBtns[i].Key[j];
// temp.Add(mk); // temp.Add(mk);
// tempInputAllData |= (ulong)mk; // tempInputAllData |= (ulong)mk;
// } // }
// } // }
// } //}
// Vector2Int inputV2 = mUniKeyboard.mJoystick.RawInputV2; //Vector2Int inputV2 = mUniKeyboard.mJoystick.RawInputV2;
// //Debug.Log($"{inputV2.x},{inputV2.y}"); ////Debug.Log($"{inputV2.x},{inputV2.y}");
// if (inputV2.x > 0) //if (inputV2.x > 0)
// { //{
// temp.Add(MotionKey.P1_RIGHT); // temp.Add(MotionKey.P1_RIGHT);
// tempInputAllData |= (ulong)MotionKey.P1_RIGHT; // tempInputAllData |= (ulong)MotionKey.P1_RIGHT;
// } //}
// else if (inputV2.x < 0) //else if (inputV2.x < 0)
// { //{
// temp.Add(MotionKey.P1_LEFT); // temp.Add(MotionKey.P1_LEFT);
// tempInputAllData |= (ulong)MotionKey.P1_LEFT; // tempInputAllData |= (ulong)MotionKey.P1_LEFT;
// } //}
// if (inputV2.y > 0) //if (inputV2.y > 0)
// { //{
// temp.Add(MotionKey.P1_UP); // temp.Add(MotionKey.P1_UP);
// tempInputAllData |= (ulong)MotionKey.P1_UP; // tempInputAllData |= (ulong)MotionKey.P1_UP;
// } //}
// else if (inputV2.y < 0) //else if (inputV2.y < 0)
// { //{
// temp.Add(MotionKey.P1_DOWN); // temp.Add(MotionKey.P1_DOWN);
// tempInputAllData |= (ulong)MotionKey.P1_DOWN; // tempInputAllData |= (ulong)MotionKey.P1_DOWN;
// } //}
// CurryInpuAllData = tempInputAllData; //CurryInpuAllData = tempInputAllData;
// mCurrKey = temp.ToArray(); mCurrKey = temp.ToArray();
// } }
//} }

View File

@ -1,80 +1,82 @@
using System;
using UnityEngine; using UnityEngine;
public class UEGSoundPlayer : MonoBehaviour//, ISoundPlayer public class UEGSoundPlayer : MonoBehaviour//, ISoundPlayer
{ {
//[SerializeField] [SerializeField]
//private AudioSource m_as; private AudioSource m_as;
//private RingBuffer<float> _buffer = new RingBuffer<float>(4096); private RingBuffer<float> _buffer = new RingBuffer<float>(4096);
//private TimeSpan lastElapsed; private TimeSpan lastElapsed;
//public double audioFPS { get; private set; } public double audioFPS { get; private set; }
//float lastData = 0; float lastData = 0;
//void Awake() void Awake()
//{
// AudioClip dummy = AudioClip.Create("dummy", 1, 2, AudioSettings.outputSampleRate, false);
// dummy.SetData(new float[] { 1, 1 }, 0);
// m_as.clip = dummy;
// m_as.loop = true;
// m_as.spatialBlend = 1;
//}
//public void Initialize()
//{
// if (!m_as.isPlaying)
// {
// m_as.Play();
// }
//}
//public void StopPlay()
//{
// if (m_as.isPlaying)
// {
// m_as.Stop();
// }
//}
//void OnAudioFilterRead(float[] data, int channels)
//{
// if (!UMAME.bInGame) return;
// int step = channels;
// for (int i = 0; i < data.Length; i += step)
// {
// float rawFloat = lastData;
// if (_buffer.TryRead(out float rawData))
// {
// rawFloat = rawData;
// }
// data[i] = rawFloat;
// for (int fill = 1; fill < step; fill++)
// data[i + fill] = rawFloat;
// lastData = rawFloat;
// }
//}
public void SubmitSamples(short[] buffer, int samples_a)
{ {
return; //AudioClip dummy = AudioClip.Create("dummy", 1, 2, AudioSettings.outputSampleRate, false);
//var current = UMAME.sw.Elapsed; AudioClip dummy = AudioClip.Create("dummy", 1, 2, 44100, false);
//var delta = current - lastElapsed; dummy.SetData(new float[] { 1, 1 }, 0);
//lastElapsed = current; m_as.clip = dummy;
//audioFPS = 1d / delta.TotalSeconds; m_as.loop = true;
m_as.spatialBlend = 1;
}
public void Initialize()
{
if (!m_as.isPlaying)
{
m_as.Play();
}
}
public void StopPlay()
{
if (m_as.isPlaying)
{
m_as.Stop();
}
}
void OnAudioFilterRead(float[] data, int channels)
{
if (!Essgeeinit.bInGame) return;
int step = channels;
for (int i = 0; i < data.Length; i += step)
{
float rawFloat = lastData;
if (_buffer.TryRead(out float rawData))
{
rawFloat = rawData;
}
data[i] = rawFloat;
for (int fill = 1; fill < step; fill++)
data[i + fill] = rawFloat;
lastData = rawFloat;
}
}
public void SubmitSamples(short[] buffer, short[][] ChannelSamples, int samples_a)
{
var current = Essgeeinit.sw.Elapsed;
var delta = current - lastElapsed;
lastElapsed = current;
audioFPS = 1d / delta.TotalSeconds;
////for (int i = 0; i < samples_a; i++)
////{
//// short left = BitConverter.ToInt16(buffer, i * 2 * 2);
//// //short right = BitConverter.ToInt16(buffer, i * 2 * 2 + 2);
//// _buffer.Write(left / 32767.0f);
//// //_buffer.Write(right / 32767.0f);
////}
//for (int i = 0; i < samples_a; i++) //for (int i = 0; i < samples_a; i++)
//{ //{
// _buffer.Write(buffer); // short left = BitConverter.ToInt16(buffer, i * 2 * 2);
// //short right = BitConverter.ToInt16(buffer, i * 2 * 2 + 2);
// _buffer.Write(left / 32767.0f);
// //_buffer.Write(right / 32767.0f);
//} //}
for (int i = 0; i < samples_a; i += 2)
{
_buffer.Write(buffer[i] / 32767.0f);
//_buffer.Write(buffer[i] / 32767.0f);
}
} }
public void BufferWirte(int Off, byte[] Data) public void BufferWirte(int Off, byte[] Data)
@ -90,8 +92,8 @@ public class UEGSoundPlayer : MonoBehaviour//, ISoundPlayer
public void SetVolume(int Vol) public void SetVolume(int Vol)
{ {
//TODO ÒôÁ¿ //TODO ÒôÁ¿
//if (m_as) if (m_as)
// return; return;
//m_as.volume = Vol; m_as.volume = Vol;
} }
} }

View File

@ -17,7 +17,7 @@ public class UEGVideoPlayer : MonoBehaviour
private RawImage m_drawCanvas; private RawImage m_drawCanvas;
[SerializeField] [SerializeField]
private RectTransform m_drawCanvasrect; private RectTransform m_drawCanvasrect;
byte[] mFrameData; //byte[] mFrameData;
IntPtr mFrameDataPtr; IntPtr mFrameDataPtr;
private TimeSpan lastElapsed; private TimeSpan lastElapsed;
@ -40,17 +40,17 @@ public class UEGVideoPlayer : MonoBehaviour
if (m_rawBufferWarper == null) if (m_rawBufferWarper == null)
{ {
mDataLenght = mWidth * mHeight * 4; mDataLenght = mWidth * mHeight * 4;
mFrameData = new byte[mDataLenght]; //mFrameData = new byte[mDataLenght];
// 固定数组,防止垃圾回收器移动它 //// 固定数组,防止垃圾回收器移动它
var bitmapcolorRect_handle = GCHandle.Alloc(mFrameData, GCHandleType.Pinned); //var bitmapcolorRect_handle = GCHandle.Alloc(mFrameData, GCHandleType.Pinned);
// 获取数组的指针 //// 获取数组的指针
mFrameDataPtr = bitmapcolorRect_handle.AddrOfPinnedObject(); //mFrameDataPtr = bitmapcolorRect_handle.AddrOfPinnedObject();
//MAMEÀ´µÄÊÇBGRA32£¬ºÃºÃºÃ //MAMEÀ´µÄÊÇBGRA32£¬ºÃºÃºÃ
//m_rawBufferWarper = new Texture2D(mWidth, mHeight, TextureFormat.BGRA32, false); m_rawBufferWarper = new Texture2D(mWidth, mHeight, TextureFormat.BGRA32, false);
m_rawBufferWarper = new Texture2D(mWidth, mHeight, TextureFormat.ARGB32, false); //m_rawBufferWarper = new Texture2D(mWidth, mHeight, TextureFormat.ARGB32, false);
m_rawBufferWarper.filterMode = FilterMode.Point; m_rawBufferWarper.filterMode = FilterMode.Point;
} }
@ -82,7 +82,8 @@ public class UEGVideoPlayer : MonoBehaviour
m_rawBufferWarper.Apply(); m_rawBufferWarper.Apply();
} }
public void SubmitVideo(int width, int height, byte[] data, long frame_number) //public void SubmitVideo(int width, int height, byte[] data, long frame_number)
public void SubmitVideo(int width, int height, IntPtr ptr, long frame_number)
{ {
mFrame = (ulong)frame_number; mFrame = (ulong)frame_number;
@ -90,7 +91,8 @@ public class UEGVideoPlayer : MonoBehaviour
var delta = current - lastElapsed; var delta = current - lastElapsed;
lastElapsed = current; lastElapsed = current;
videoFPS = 1d / delta.TotalSeconds; videoFPS = 1d / delta.TotalSeconds;
mFrameData = data; //mFrameData = data;
mFrameDataPtr = ptr;
if (!bHadData) if (!bHadData)
{ {

View File

@ -1,74 +1,77 @@
//using System.Collections.Generic; using UnityEngine;
//using UnityEngine;
//public class UniKeyboard : MonoBehaviour public class UniKeyboard : MonoBehaviour
//{ {
// public KeyCodeCore mKeyCodeCore = new KeyCodeCore(); public KeyCodeCore mKeyCodeCore = new KeyCodeCore();
// #region #region
// public UILongClickButton btnP1; //public UILongClickButton btnP1;
// public UILongClickButton btnCoin1; //public UILongClickButton btnCoin1;
// public UILongClickButton btnA; //public UILongClickButton btnA;
// public UILongClickButton btnB; //public UILongClickButton btnB;
// public UILongClickButton btnC; //public UILongClickButton btnC;
// public UILongClickButton btnD; //public UILongClickButton btnD;
// //public UILongClickButton btnE; ////public UILongClickButton btnE;
// //public UILongClickButton btnF; ////public UILongClickButton btnF;
// public UILongClickButton btnAB; //public UILongClickButton btnAB;
// public UILongClickButton btnCD; //public UILongClickButton btnCD;
// public UILongClickButton btnABC; //public UILongClickButton btnABC;
// public Transform tfKeyPad; //public Transform tfKeyPad;
// public FloatingJoystick mJoystick; //public FloatingJoystick mJoystick;
// #endregion #endregion
// public List<UILongClickButton> mUIBtns = new List<UILongClickButton>(); //public List<UILongClickButton> mUIBtns = new List<UILongClickButton>();
// void Awake() void Awake()
// { {
// mJoystick = GameObject.Find("tfJoystick").GetComponent<FloatingJoystick>(); //mJoystick = GameObject.Find("tfJoystick").GetComponent<FloatingJoystick>();
// tfKeyPad = GameObject.Find("tfKeyPad").transform; //tfKeyPad = GameObject.Find("tfKeyPad").transform;
// btnP1 = GameObject.Find("btnP1").GetComponent<UILongClickButton>(); //btnP1 = GameObject.Find("btnP1").GetComponent<UILongClickButton>();
// btnCoin1 = GameObject.Find("btnCoin1").GetComponent<UILongClickButton>(); //btnCoin1 = GameObject.Find("btnCoin1").GetComponent<UILongClickButton>();
// btnA = GameObject.Find("btnA").GetComponent<UILongClickButton>(); //btnA = GameObject.Find("btnA").GetComponent<UILongClickButton>();
// btnB = GameObject.Find("btnB").GetComponent<UILongClickButton>(); //btnB = GameObject.Find("btnB").GetComponent<UILongClickButton>();
// btnC = GameObject.Find("btnC").GetComponent<UILongClickButton>(); //btnC = GameObject.Find("btnC").GetComponent<UILongClickButton>();
// btnD = GameObject.Find("btnD").GetComponent<UILongClickButton>(); //btnD = GameObject.Find("btnD").GetComponent<UILongClickButton>();
// //btnE = GameObject.Find("btnE")?.GetComponent<UILongClickButton>(); ////btnE = GameObject.Find("btnE")?.GetComponent<UILongClickButton>();
// //btnF = GameObject.Find("btnF")?.GetComponent<UILongClickButton>(); ////btnF = GameObject.Find("btnF")?.GetComponent<UILongClickButton>();
// btnAB = GameObject.Find("btnAB").GetComponent<UILongClickButton>(); //btnAB = GameObject.Find("btnAB").GetComponent<UILongClickButton>();
// btnCD = GameObject.Find("btnCD").GetComponent<UILongClickButton>(); //btnCD = GameObject.Find("btnCD").GetComponent<UILongClickButton>();
// btnABC = GameObject.Find("btnABC").GetComponent<UILongClickButton>(); //btnABC = GameObject.Find("btnABC").GetComponent<UILongClickButton>();
// mUIBtns.Add(btnP1); //mUIBtns.Add(btnP1);
// mUIBtns.Add(btnCoin1); //mUIBtns.Add(btnCoin1);
// mUIBtns.Add(btnA); //mUIBtns.Add(btnA);
// mUIBtns.Add(btnB); //mUIBtns.Add(btnB);
// mUIBtns.Add(btnC); //mUIBtns.Add(btnC);
// mUIBtns.Add(btnD); //mUIBtns.Add(btnD);
// mUIBtns.Add(btnAB); //mUIBtns.Add(btnAB);
// mUIBtns.Add(btnCD); //mUIBtns.Add(btnCD);
// mUIBtns.Add(btnABC); //mUIBtns.Add(btnABC);
// //if (btnE != null) //if (btnE != null)
// //{ //{
// // mUIBtns.Add(btnE); // mUIBtns.Add(btnE);
// // btnE.gameObject.SetActive(false); // btnE.gameObject.SetActive(false);
// //} //}
// //else //else
// //{ //{
// // mUIBtns.Add(btnF); // mUIBtns.Add(btnF);
// // btnF.gameObject.SetActive(false); // btnF.gameObject.SetActive(false);
// //} //}
//#if UNITY_STANDALONE_WIN || UNITY_EDITOR #if UNITY_STANDALONE_WIN || UNITY_EDITOR
// tfKeyPad.gameObject.SetActive(false); //tfKeyPad.gameObject.SetActive(false);
//#endif #endif
// mKeyCodeCore.Init(this,false); }
// }
public void Init(Essgee.Emulation.Machines.IMachine Machine)
{
mKeyCodeCore.Init(Machine, this, false);
}
// public void UpdateInputKey() public void UpdateInputKey()
// { {
// mKeyCodeCore.UpdateLogic(); mKeyCodeCore.UpdateLogic();
// } }
//} }