mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2025-07-01 15:20:47 -07:00
Move solution and projects to src
This commit is contained in:
29
src/Ryujinx.Graphics.Vic/Types/BlendingSlotStruct.cs
Normal file
29
src/Ryujinx.Graphics.Vic/Types/BlendingSlotStruct.cs
Normal file
@ -0,0 +1,29 @@
|
||||
using Ryujinx.Common.Utilities;
|
||||
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
struct BlendingSlotStruct
|
||||
{
|
||||
private long _word0;
|
||||
private long _word1;
|
||||
|
||||
public int AlphaK1 => (int)_word0.Extract(0, 10);
|
||||
public int AlphaK2 => (int)_word0.Extract(16, 10);
|
||||
public int SrcFactCMatchSelect => (int)_word0.Extract(32, 3);
|
||||
public int DstFactCMatchSelect => (int)_word0.Extract(36, 3);
|
||||
public int SrcFactAMatchSelect => (int)_word0.Extract(40, 3);
|
||||
public int DstFactAMatchSelect => (int)_word0.Extract(44, 3);
|
||||
public int OverrideR => (int)_word1.Extract(66, 10);
|
||||
public int OverrideG => (int)_word1.Extract(76, 10);
|
||||
public int OverrideB => (int)_word1.Extract(86, 10);
|
||||
public int OverrideA => (int)_word1.Extract(96, 10);
|
||||
public bool UseOverrideR => _word1.Extract(108);
|
||||
public bool UseOverrideG => _word1.Extract(109);
|
||||
public bool UseOverrideB => _word1.Extract(110);
|
||||
public bool UseOverrideA => _word1.Extract(111);
|
||||
public bool MaskR => _word1.Extract(112);
|
||||
public bool MaskG => _word1.Extract(113);
|
||||
public bool MaskB => _word1.Extract(114);
|
||||
public bool MaskA => _word1.Extract(115);
|
||||
}
|
||||
}
|
21
src/Ryujinx.Graphics.Vic/Types/ClearRectStruct.cs
Normal file
21
src/Ryujinx.Graphics.Vic/Types/ClearRectStruct.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using Ryujinx.Common.Utilities;
|
||||
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
struct ClearRectStruct
|
||||
{
|
||||
#pragma warning disable CS0649
|
||||
private long _word0;
|
||||
private long _word1;
|
||||
#pragma warning restore CS0649
|
||||
|
||||
public int ClearRect0Left => (int)_word0.Extract(0, 14);
|
||||
public int ClearRect0Right => (int)_word0.Extract(16, 14);
|
||||
public int ClearRect0Top => (int)_word0.Extract(32, 14);
|
||||
public int ClearRect0Bottom => (int)_word0.Extract(48, 14);
|
||||
public int ClearRect1Left => (int)_word1.Extract(64, 14);
|
||||
public int ClearRect1Right => (int)_word1.Extract(80, 14);
|
||||
public int ClearRect1Top => (int)_word1.Extract(96, 14);
|
||||
public int ClearRect1Bottom => (int)_word1.Extract(112, 14);
|
||||
}
|
||||
}
|
16
src/Ryujinx.Graphics.Vic/Types/ConfigStruct.cs
Normal file
16
src/Ryujinx.Graphics.Vic/Types/ConfigStruct.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using Ryujinx.Common.Memory;
|
||||
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
struct ConfigStruct
|
||||
{
|
||||
#pragma warning disable CS0649
|
||||
public PipeConfig PipeConfig;
|
||||
public OutputConfig OutputConfig;
|
||||
public OutputSurfaceConfig OutputSurfaceConfig;
|
||||
public MatrixStruct OutColorMatrix;
|
||||
public Array4<ClearRectStruct> ClearRectStruct;
|
||||
public Array8<SlotStruct> SlotStruct;
|
||||
#pragma warning restore CS0649
|
||||
}
|
||||
}
|
12
src/Ryujinx.Graphics.Vic/Types/DeinterlaceMode.cs
Normal file
12
src/Ryujinx.Graphics.Vic/Types/DeinterlaceMode.cs
Normal file
@ -0,0 +1,12 @@
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
enum DeinterlaceMode
|
||||
{
|
||||
Weave,
|
||||
BobField,
|
||||
Bob,
|
||||
NewBob,
|
||||
Disi1,
|
||||
WeaveLumaBobFieldChroma
|
||||
}
|
||||
}
|
79
src/Ryujinx.Graphics.Vic/Types/FrameFormat.cs
Normal file
79
src/Ryujinx.Graphics.Vic/Types/FrameFormat.cs
Normal file
@ -0,0 +1,79 @@
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
enum FrameFormat
|
||||
{
|
||||
Progressive,
|
||||
InterlacedTopFieldFirst,
|
||||
InterlacedBottomFieldFirst,
|
||||
TopField,
|
||||
BottomField,
|
||||
SubPicProgressive,
|
||||
SubPicInterlacedTopFieldFirst,
|
||||
SubPicInterlacedBottomFieldFirst,
|
||||
SubPicTopField,
|
||||
SubPicBottomField,
|
||||
TopFieldChromaBottom,
|
||||
BottomFieldChromaTop,
|
||||
SubPicTopFieldChromaBottom,
|
||||
SubPicBottomFieldChromaTop
|
||||
}
|
||||
|
||||
static class FrameFormatExtensions
|
||||
{
|
||||
public static bool IsField(this FrameFormat frameFormat)
|
||||
{
|
||||
switch (frameFormat)
|
||||
{
|
||||
case FrameFormat.TopField:
|
||||
case FrameFormat.BottomField:
|
||||
case FrameFormat.SubPicTopField:
|
||||
case FrameFormat.SubPicBottomField:
|
||||
case FrameFormat.TopFieldChromaBottom:
|
||||
case FrameFormat.BottomFieldChromaTop:
|
||||
case FrameFormat.SubPicTopFieldChromaBottom:
|
||||
case FrameFormat.SubPicBottomFieldChromaTop:
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool IsInterlaced(this FrameFormat frameFormat)
|
||||
{
|
||||
switch (frameFormat)
|
||||
{
|
||||
case FrameFormat.InterlacedTopFieldFirst:
|
||||
case FrameFormat.InterlacedBottomFieldFirst:
|
||||
case FrameFormat.SubPicInterlacedTopFieldFirst:
|
||||
case FrameFormat.SubPicInterlacedBottomFieldFirst:
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool IsInterlacedBottomFirst(this FrameFormat frameFormat)
|
||||
{
|
||||
return frameFormat == FrameFormat.InterlacedBottomFieldFirst ||
|
||||
frameFormat == FrameFormat.SubPicInterlacedBottomFieldFirst;
|
||||
}
|
||||
|
||||
public static bool IsTopField(this FrameFormat frameFormat, bool isLuma)
|
||||
{
|
||||
switch (frameFormat)
|
||||
{
|
||||
case FrameFormat.TopField:
|
||||
case FrameFormat.SubPicTopField:
|
||||
return true;
|
||||
case FrameFormat.TopFieldChromaBottom:
|
||||
case FrameFormat.SubPicTopFieldChromaBottom:
|
||||
return isLuma;
|
||||
case FrameFormat.BottomFieldChromaTop:
|
||||
case FrameFormat.SubPicBottomFieldChromaTop:
|
||||
return !isLuma;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
19
src/Ryujinx.Graphics.Vic/Types/LumaKeyStruct.cs
Normal file
19
src/Ryujinx.Graphics.Vic/Types/LumaKeyStruct.cs
Normal file
@ -0,0 +1,19 @@
|
||||
using Ryujinx.Common.Utilities;
|
||||
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
struct LumaKeyStruct
|
||||
{
|
||||
private long _word0;
|
||||
private long _word1;
|
||||
|
||||
public int LumaCoeff0 => (int)_word0.Extract(0, 20);
|
||||
public int LumaCoeff1 => (int)_word0.Extract(20, 20);
|
||||
public int LumaCoeff2 => (int)_word0.Extract(40, 20);
|
||||
public int LumaRShift => (int)_word0.Extract(60, 4);
|
||||
public int LumaCoeff3 => (int)_word1.Extract(64, 20);
|
||||
public int LumaKeyLower => (int)_word1.Extract(84, 10);
|
||||
public int LumaKeyUpper => (int)_word1.Extract(94, 10);
|
||||
public bool LumaKeyEnabled => _word1.Extract(104);
|
||||
}
|
||||
}
|
27
src/Ryujinx.Graphics.Vic/Types/MatrixStruct.cs
Normal file
27
src/Ryujinx.Graphics.Vic/Types/MatrixStruct.cs
Normal file
@ -0,0 +1,27 @@
|
||||
using Ryujinx.Common.Utilities;
|
||||
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
struct MatrixStruct
|
||||
{
|
||||
private long _word0;
|
||||
private long _word1;
|
||||
private long _word2;
|
||||
private long _word3;
|
||||
|
||||
public int MatrixCoeff00 => (int)_word0.ExtractSx(0, 20);
|
||||
public int MatrixCoeff10 => (int)_word0.ExtractSx(20, 20);
|
||||
public int MatrixCoeff20 => (int)_word0.ExtractSx(40, 20);
|
||||
public int MatrixRShift => (int)_word0.Extract(60, 4);
|
||||
public int MatrixCoeff01 => (int)_word1.ExtractSx(64, 20);
|
||||
public int MatrixCoeff11 => (int)_word1.ExtractSx(84, 20);
|
||||
public int MatrixCoeff21 => (int)_word1.ExtractSx(104, 20);
|
||||
public bool MatrixEnable => _word1.Extract(127);
|
||||
public int MatrixCoeff02 => (int)_word2.ExtractSx(128, 20);
|
||||
public int MatrixCoeff12 => (int)_word2.ExtractSx(148, 20);
|
||||
public int MatrixCoeff22 => (int)_word2.ExtractSx(168, 20);
|
||||
public int MatrixCoeff03 => (int)_word3.ExtractSx(192, 20);
|
||||
public int MatrixCoeff13 => (int)_word3.ExtractSx(212, 20);
|
||||
public int MatrixCoeff23 => (int)_word3.ExtractSx(232, 20);
|
||||
}
|
||||
}
|
27
src/Ryujinx.Graphics.Vic/Types/OutputConfig.cs
Normal file
27
src/Ryujinx.Graphics.Vic/Types/OutputConfig.cs
Normal file
@ -0,0 +1,27 @@
|
||||
using Ryujinx.Common.Utilities;
|
||||
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
struct OutputConfig
|
||||
{
|
||||
#pragma warning disable CS0649
|
||||
private long _word0;
|
||||
private long _word1;
|
||||
#pragma warning restore CS0649
|
||||
|
||||
public int AlphaFillMode => (int)_word0.Extract(0, 3);
|
||||
public int AlphaFillSlot => (int)_word0.Extract(3, 3);
|
||||
public int BackgroundAlpha => (int)_word0.Extract(6, 10);
|
||||
public int BackgroundR => (int)_word0.Extract(16, 10);
|
||||
public int BackgroundG => (int)_word0.Extract(26, 10);
|
||||
public int BackgroundB => (int)_word0.Extract(36, 10);
|
||||
public int RegammaMode => (int)_word0.Extract(46, 2);
|
||||
public bool OutputFlipX => _word0.Extract(48);
|
||||
public bool OutputFlipY => _word0.Extract(49);
|
||||
public bool OutputTranspose => _word0.Extract(50);
|
||||
public int TargetRectLeft => (int)_word1.Extract(64, 14);
|
||||
public int TargetRectRight => (int)_word1.Extract(80, 14);
|
||||
public int TargetRectTop => (int)_word1.Extract(96, 14);
|
||||
public int TargetRectBottom => (int)_word1.Extract(112, 14);
|
||||
}
|
||||
}
|
24
src/Ryujinx.Graphics.Vic/Types/OutputSurfaceConfig.cs
Normal file
24
src/Ryujinx.Graphics.Vic/Types/OutputSurfaceConfig.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using Ryujinx.Common.Utilities;
|
||||
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
struct OutputSurfaceConfig
|
||||
{
|
||||
#pragma warning disable CS0649
|
||||
private long _word0;
|
||||
private long _word1;
|
||||
#pragma warning restore CS0649
|
||||
|
||||
public PixelFormat OutPixelFormat => (PixelFormat)_word0.Extract(0, 7);
|
||||
public int OutChromaLocHoriz => (int)_word0.Extract(7, 2);
|
||||
public int OutChromaLocVert => (int)_word0.Extract(9, 2);
|
||||
public int OutBlkKind => (int)_word0.Extract(11, 4);
|
||||
public int OutBlkHeight => (int)_word0.Extract(15, 4);
|
||||
public int OutSurfaceWidth => (int)_word0.Extract(32, 14);
|
||||
public int OutSurfaceHeight => (int)_word0.Extract(46, 14);
|
||||
public int OutLumaWidth => (int)_word1.Extract(64, 14);
|
||||
public int OutLumaHeight => (int)_word1.Extract(78, 14);
|
||||
public int OutChromaWidth => (int)_word1.Extract(96, 14);
|
||||
public int OutChromaHeight => (int)_word1.Extract(110, 14);
|
||||
}
|
||||
}
|
15
src/Ryujinx.Graphics.Vic/Types/PipeConfig.cs
Normal file
15
src/Ryujinx.Graphics.Vic/Types/PipeConfig.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using Ryujinx.Common.Utilities;
|
||||
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
struct PipeConfig
|
||||
{
|
||||
#pragma warning disable CS0169, CS0649
|
||||
private long _word0;
|
||||
private long _word1;
|
||||
#pragma warning restore CS0169, CS0649
|
||||
|
||||
public int DownsampleHoriz => (int)_word0.Extract(0, 11);
|
||||
public int DownsampleVert => (int)_word0.Extract(16, 11);
|
||||
}
|
||||
}
|
81
src/Ryujinx.Graphics.Vic/Types/PixelFormat.cs
Normal file
81
src/Ryujinx.Graphics.Vic/Types/PixelFormat.cs
Normal file
@ -0,0 +1,81 @@
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
enum PixelFormat
|
||||
{
|
||||
A8,
|
||||
L8,
|
||||
A4L4,
|
||||
L4A4,
|
||||
R8,
|
||||
A8L8,
|
||||
L8A8,
|
||||
R8G8,
|
||||
G8R8,
|
||||
B5G6R5,
|
||||
R5G6B5,
|
||||
B6G5R5,
|
||||
R5G5B6,
|
||||
A1B5G5R5,
|
||||
A1R5G5B5,
|
||||
B5G5R5A1,
|
||||
R5G5B5A1,
|
||||
A5B5G5R1,
|
||||
A5R1G5B5,
|
||||
B5G5R1A5,
|
||||
R1G5B5A5,
|
||||
X1B5G5R5,
|
||||
X1R5G5B5,
|
||||
B5G5R5X1,
|
||||
R5G5B5X1,
|
||||
A4B4G4R4,
|
||||
A4R4G4B4,
|
||||
B4G4R4A4,
|
||||
R4G4B4A4,
|
||||
B8_G8_R8,
|
||||
R8_G8_B8,
|
||||
A8B8G8R8,
|
||||
A8R8G8B8,
|
||||
B8G8R8A8,
|
||||
R8G8B8A8,
|
||||
X8B8G8R8,
|
||||
X8R8G8B8,
|
||||
B8G8R8X8,
|
||||
R8G8B8X8,
|
||||
A2B10G10R10,
|
||||
A2R10G10B10,
|
||||
B10G10R10A2,
|
||||
R10G10B10A2,
|
||||
A4P4,
|
||||
P4A4,
|
||||
P8A845,
|
||||
A8P8,
|
||||
P8,
|
||||
P1,
|
||||
U8V8,
|
||||
V8U8,
|
||||
A8Y8U8V8,
|
||||
V8U8Y8A8,
|
||||
Y8_U8_V8,
|
||||
Y8_V8_U8,
|
||||
U8_V8_Y8,
|
||||
V8_U8_Y8,
|
||||
Y8_U8__Y8_V8,
|
||||
Y8_V8__Y8_U8,
|
||||
U8_Y8__V8_Y8,
|
||||
V8_Y8__U8_Y8,
|
||||
Y8___U8V8_N444,
|
||||
Y8___V8U8_N444,
|
||||
Y8___U8V8_N422,
|
||||
Y8___V8U8_N422,
|
||||
Y8___U8V8_N422R,
|
||||
Y8___V8U8_N422R,
|
||||
Y8___U8V8_N420,
|
||||
Y8___V8U8_N420,
|
||||
Y8___U8___V8_N444,
|
||||
Y8___U8___V8_N422,
|
||||
Y8___U8___V8_N422R,
|
||||
Y8___U8___V8_N420,
|
||||
U8,
|
||||
V8
|
||||
}
|
||||
}
|
65
src/Ryujinx.Graphics.Vic/Types/SlotConfig.cs
Normal file
65
src/Ryujinx.Graphics.Vic/Types/SlotConfig.cs
Normal file
@ -0,0 +1,65 @@
|
||||
using Ryujinx.Common.Utilities;
|
||||
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
struct SlotConfig
|
||||
{
|
||||
private long _word0;
|
||||
private long _word1;
|
||||
private long _word2;
|
||||
private long _word3;
|
||||
private long _word4;
|
||||
private long _word5;
|
||||
private long _word6;
|
||||
private long _word7;
|
||||
|
||||
public bool SlotEnable => _word0.Extract(0);
|
||||
public bool DeNoise => _word0.Extract(1);
|
||||
public bool AdvancedDenoise => _word0.Extract(2);
|
||||
public bool CadenceDetect => _word0.Extract(3);
|
||||
public bool MotionMap => _word0.Extract(4);
|
||||
public bool MMapCombine => _word0.Extract(5);
|
||||
public bool IsEven => _word0.Extract(6);
|
||||
public bool ChromaEven => _word0.Extract(7);
|
||||
public bool CurrentFieldEnable => _word0.Extract(8);
|
||||
public bool PrevFieldEnable => _word0.Extract(9);
|
||||
public bool NextFieldEnable => _word0.Extract(10);
|
||||
public bool NextNrFieldEnable => _word0.Extract(11);
|
||||
public bool CurMotionFieldEnable => _word0.Extract(12);
|
||||
public bool PrevMotionFieldEnable => _word0.Extract(13);
|
||||
public bool PpMotionFieldEnable => _word0.Extract(14);
|
||||
public bool CombMotionFieldEnable => _word0.Extract(15);
|
||||
public FrameFormat FrameFormat => (FrameFormat)_word0.Extract(16, 4);
|
||||
public int FilterLengthY => (int)_word0.Extract(20, 2);
|
||||
public int FilterLengthX => (int)_word0.Extract(22, 2);
|
||||
public int Panoramic => (int)_word0.Extract(24, 12);
|
||||
public int DetailFltClamp => (int)_word0.Extract(58, 6);
|
||||
public int FilterNoise => (int)_word1.Extract(64, 10);
|
||||
public int FilterDetail => (int)_word1.Extract(74, 10);
|
||||
public int ChromaNoise => (int)_word1.Extract(84, 10);
|
||||
public int ChromaDetail => (int)_word1.Extract(94, 10);
|
||||
public DeinterlaceMode DeinterlaceMode => (DeinterlaceMode)_word1.Extract(104, 4);
|
||||
public int MotionAccumWeight => (int)_word1.Extract(108, 3);
|
||||
public int NoiseIir => (int)_word1.Extract(111, 11);
|
||||
public int LightLevel => (int)_word1.Extract(122, 4);
|
||||
public int SoftClampLow => (int)_word2.Extract(128, 10);
|
||||
public int SoftClampHigh => (int)_word2.Extract(138, 10);
|
||||
public int PlanarAlpha => (int)_word2.Extract(160, 10);
|
||||
public bool ConstantAlpha => _word2.Extract(170);
|
||||
public int StereoInterleave => (int)_word2.Extract(171, 3);
|
||||
public bool ClipEnabled => _word2.Extract(174);
|
||||
public int ClearRectMask => (int)_word2.Extract(175, 8);
|
||||
public int DegammaMode => (int)_word2.Extract(183, 2);
|
||||
public bool DecompressEnable => _word2.Extract(186);
|
||||
public int DecompressCtbCount => (int)_word3.Extract(192, 8);
|
||||
public int DecompressZbcColor => (int)_word3.Extract(200, 32);
|
||||
public int SourceRectLeft => (int)_word4.Extract(256, 30);
|
||||
public int SourceRectRight => (int)_word4.Extract(288, 30);
|
||||
public int SourceRectTop => (int)_word5.Extract(320, 30);
|
||||
public int SourceRectBottom => (int)_word5.Extract(352, 30);
|
||||
public int DstRectLeft => (int)_word6.Extract(384, 14);
|
||||
public int DstRectRight => (int)_word6.Extract(400, 14);
|
||||
public int DstRectTop => (int)_word6.Extract(416, 14);
|
||||
public int DstRectBottom => (int)_word6.Extract(432, 14);
|
||||
}
|
||||
}
|
12
src/Ryujinx.Graphics.Vic/Types/SlotStruct.cs
Normal file
12
src/Ryujinx.Graphics.Vic/Types/SlotStruct.cs
Normal file
@ -0,0 +1,12 @@
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
struct SlotStruct
|
||||
{
|
||||
public SlotConfig SlotConfig;
|
||||
public SlotSurfaceConfig SlotSurfaceConfig;
|
||||
public LumaKeyStruct LumaKeyStruct;
|
||||
public MatrixStruct ColorMatrixStruct;
|
||||
public MatrixStruct GamutMatrixStruct;
|
||||
public BlendingSlotStruct BlendingSlotStruct;
|
||||
}
|
||||
}
|
23
src/Ryujinx.Graphics.Vic/Types/SlotSurfaceConfig.cs
Normal file
23
src/Ryujinx.Graphics.Vic/Types/SlotSurfaceConfig.cs
Normal file
@ -0,0 +1,23 @@
|
||||
using Ryujinx.Common.Utilities;
|
||||
|
||||
namespace Ryujinx.Graphics.Vic.Types
|
||||
{
|
||||
struct SlotSurfaceConfig
|
||||
{
|
||||
private long _word0;
|
||||
private long _word1;
|
||||
|
||||
public PixelFormat SlotPixelFormat => (PixelFormat)_word0.Extract(0, 7);
|
||||
public int SlotChromaLocHoriz => (int)_word0.Extract(7, 2);
|
||||
public int SlotChromaLocVert => (int)_word0.Extract(9, 2);
|
||||
public int SlotBlkKind => (int)_word0.Extract(11, 4);
|
||||
public int SlotBlkHeight => (int)_word0.Extract(15, 4);
|
||||
public int SlotCacheWidth => (int)_word0.Extract(19, 3);
|
||||
public int SlotSurfaceWidth => (int)_word0.Extract(32, 14);
|
||||
public int SlotSurfaceHeight => (int)_word0.Extract(46, 14);
|
||||
public int SlotLumaWidth => (int)_word1.Extract(64, 14);
|
||||
public int SlotLumaHeight => (int)_word1.Extract(78, 14);
|
||||
public int SlotChromaWidth => (int)_word1.Extract(96, 14);
|
||||
public int SlotChromaHeight => (int)_word1.Extract(110, 14);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user