├── .gitattributes
├── .gitignore
├── .gitmodules
├── AppXTimeStamper.ps1
├── BeetleNGP.LibRetriX
├── BeetleNGP.LibRetriX.csproj
├── Core.cs
└── NativeDllInfo.cs
├── BeetleNGP
├── BeetleNGP.vcxproj
├── BeetleNGP.vcxproj.filters
└── targetver.h
├── BeetlePCEFast.LibRetriX
├── BeetlePCEFast.LibRetriX.csproj
├── Core.cs
└── NativeDllInfo.cs
├── BeetlePCEFast
├── BeetlePCEFast.vcxproj
├── BeetlePCEFast.vcxproj.filters
└── targetver.h
├── BeetlePCFX.LibRetriX
├── BeetlePCFX.LibRetriX.csproj
├── Core.cs
└── NativeDllInfo.cs
├── BeetlePCFX
├── BeetlePCFX.vcxproj
├── BeetlePCFX.vcxproj.filters
└── targetver.h
├── BeetlePSX.LibRetriX
├── BeetlePSX.LibRetriX.csproj
├── Core.cs
└── NativeDllInfo.cs
├── BeetlePSX
├── BeetlePSX.vcxproj
├── BeetlePSX.vcxproj.filters
└── targetver.h
├── BeetleSaturn.LibRetriX
├── BeetleSaturn.LibRetriX.csproj
├── Core.cs
└── NativeDllInfo.cs
├── BeetleSaturn
├── BeetleSaturn.vcxproj
├── BeetleSaturn.vcxproj.filters
└── targetver.h
├── BeetleWswan.LibRetriX
├── BeetleWswan.LibRetriX.csproj
├── Core.cs
└── NativeDllInfo.cs
├── BeetleWswan
├── BeetleWswan.vcxproj
├── BeetleWswan.vcxproj.filters
└── targetver.h
├── FBAlpha.LibRetriX
├── Core.cs
├── FBAlpha.LibRetriX.csproj
└── NativeDllInfo.cs
├── FBAlpha
├── FBAlpha.vcxproj
├── FBAlpha.vcxproj.filters
└── targetver.h
├── FCEUMM.LibRetriX
├── Core.cs
├── FCEUMM.LibRetriX.csproj
└── NativeDllInfo.cs
├── FCEUMM
├── FCEUMM.vcxproj
├── FCEUMM.vcxproj.filters
└── targetver.h
├── GPGX.LibRetriX
├── Core.cs
├── GPGX.LibRetriX.csproj
└── NativeDllInfo.cs
├── GPGX
├── GPGX.vcxproj
├── GPGX.vcxproj.filters
└── targetver.h
├── Gambatte.LibRetriX
├── Core.cs
├── Gambatte.LibRetriX.csproj
└── NativeDllInfo.cs
├── Gambatte
├── Gambatte.vcxproj
├── Gambatte.vcxproj.filters
└── targetver.h
├── LibRetriX
├── LibRetriX.Primitives
│ ├── Enums
│ │ ├── InputTypes.cs
│ │ ├── PixelFormats.cs
│ │ └── Rotations.cs
│ ├── ICore.cs
│ ├── LibRetriX.Primitives.csproj
│ └── Types
│ │ ├── CoreOption.cs
│ │ ├── FileDependency.cs
│ │ ├── GameGeometry.cs
│ │ └── SystemTimings.cs
├── LibRetriX.RetroBindings.Static
│ ├── LibRetriX.RetroBindings.Static.projitems
│ ├── LibRetriX.RetroBindings.Static.shproj
│ ├── LibretroAPI.cs
│ ├── LibretroCore.cs
│ └── VFSHandler.cs
├── LibRetriX.RetroBindings
│ ├── Constants.cs
│ ├── ControllerDescription.cs
│ ├── ControllerInfo.cs
│ ├── Delegates.cs
│ ├── Framebuffer.cs
│ ├── GameInfo.cs
│ ├── HwRenderContextNegotiationInterfaceTypes.cs
│ ├── HwRenderInterfaceTypes.cs
│ ├── Keys.cs
│ ├── Languages.cs
│ ├── LibRetriX.RetroBindings.csproj
│ ├── LibretroVariable.cs
│ ├── LogCallbackDescriptor.cs
│ ├── LogLevels.cs
│ ├── Modifiers.cs
│ ├── SystemAVInfo.cs
│ ├── SystemInfo.cs
│ ├── Tools
│ │ └── Converter.cs
│ ├── Unsafe
│ │ ├── UnmanagedLists.cs
│ │ └── UnmanagedLists.tt
│ ├── VFSInterface.cs
│ └── VFSInterfaceInfo.cs
├── LibRetriX.Test.Base
│ ├── CoreTestBase.cs
│ ├── LibRetriX.Test.Base.csproj
│ └── StreamProvider.cs
└── LibRetriX.Test.UWP
│ ├── Assets
│ ├── LockScreenLogo.scale-200.png
│ ├── SplashScreen.scale-200.png
│ ├── Square150x150Logo.scale-200.png
│ ├── Square44x44Logo.scale-200.png
│ ├── Square44x44Logo.targetsize-24_altform-unplated.png
│ ├── StoreLogo.png
│ └── Wide310x150Logo.scale-200.png
│ ├── BeetleNGPTest.cs
│ ├── BeetlePCEFastTest.cs
│ ├── BeetlePCFXTest.cs
│ ├── BeetlePSXTest.cs
│ ├── BeetleWswanTest.cs
│ ├── FBAlphaTest.cs
│ ├── FCEUMMTest.cs
│ ├── GPGXTest.cs
│ ├── GambatteTest.cs
│ ├── LibRetriX.Test.UWP.csproj
│ ├── MelonDSTest.cs
│ ├── NestopiaTest.cs
│ ├── Package.appxmanifest
│ ├── Properties
│ ├── AssemblyInfo.cs
│ └── UnitTestApp.rd.xml
│ ├── Snes9XTest.cs
│ ├── UnitTestApp.xaml
│ ├── UnitTestApp.xaml.cs
│ └── VBAMTest.cs
├── LibretroRT.sln
├── LibretroRTLogo.png
├── License.txt
├── MelonDS.LibRetriX
├── Core.cs
├── MelonDS.LibRetriX.csproj
└── NativeDllInfo.cs
├── MelonDS
├── MelonDS.vcxproj
├── MelonDS.vcxproj.filters
└── targetver.h
├── Nestopia.LibRetriX
├── Core.cs
├── NativeDllInfo.cs
└── Nestopia.LibRetriX.csproj
├── Nestopia
├── Nestopia.vcxproj
├── Nestopia.vcxproj.filters
└── targetver.h
├── ParallelN64.LibRetriX
├── Core.cs
├── NativeDllInfo.cs
└── ParallelN64.LibRetriX.csproj
├── ParallelN64
├── ParallelN64.vcxproj
├── ParallelN64.vcxproj.filters
└── targetver.h
├── RetriX.Shared.Test
├── ExtensionMethods
│ └── StringHasherTest.cs
├── RetriX.Shared.Test.csproj
├── Services
│ ├── CryptographyServiceTest.cs
│ └── SaveStateServiceTest.cs
├── StreamProviders
│ ├── ArchiveStreamProviderTest.cs
│ ├── FolderStreamProviderTest.cs
│ ├── SingleFileStreamProviderTest.cs
│ └── StreamProviderTestBase.cs
├── TestBase.cs
├── TestFiles
│ ├── A
│ │ └── B
│ │ │ └── AnotherFile.cds
│ ├── AnotherFile.cds
│ ├── Archive.zip
│ └── TestFile.txt
└── ViewModels
│ └── FileImporterViewModelTest.cs
├── RetriX.Shared
├── App.cs
├── AppStart.cs
├── ExtensionMethods
│ └── StringHasher.cs
├── Presentation
│ └── ICurrentViewModelPresenter.cs
├── Properties
│ └── AssemblyInfo.cs
├── Resources
│ ├── Strings.Designer.cs
│ └── Strings.resx
├── RetriX.Shared.csproj
├── Services
│ ├── CryptographyService.cs
│ ├── EmulationService.cs
│ ├── GameSystemsProviderServiceBase.cs
│ ├── IAudioService.cs
│ ├── ICryptographyService.cs
│ ├── IEmulationService.cs
│ ├── IGameSystemsProviderService.cs
│ ├── IInitializable.cs
│ ├── IInputService.cs
│ ├── IPlatformService.cs
│ ├── ISaveStateService.cs
│ ├── IVideoService.cs
│ ├── PlatformServiceEventArgs.cs
│ └── SaveStateService.cs
├── StreamProviders
│ ├── ArchiveStreamProvider.cs
│ ├── CombinedStreamProvider.cs
│ ├── FolderStreamProvider.cs
│ ├── IStreamProvider.cs
│ ├── SingleFileStreamProvider.cs
│ └── StreamProviderBase.cs
└── ViewModels
│ ├── AboutViewModel.cs
│ ├── FileImporterViewModel.cs
│ ├── GamePlayerViewModel.cs
│ ├── GameSystemSelectionViewModel.cs
│ ├── GameSystemViewModel.cs
│ └── SettingsViewModel.cs
├── RetriX.UWP.Unsafe
├── Components
│ ├── FramebufferConverter.cs
│ ├── IMemoryBufferByteAccess.cs
│ └── RenderTargetManager.cs
├── Properties
│ ├── AssemblyInfo.cs
│ └── RetriX.UWP.Unsafe.rd.xml
├── RetriX.UWP.Unsafe.csproj
└── Services
│ ├── AudioService.cs
│ ├── InputService.cs
│ └── VideoService.cs
├── RetriX.UWP
├── App.xaml
├── App.xaml.cs
├── AppResources.xaml
├── AppResources.xaml.cs
├── Assets
│ ├── BadgeLogo.scale-100.png
│ ├── BadgeLogo.scale-125.png
│ ├── BadgeLogo.scale-150.png
│ ├── BadgeLogo.scale-200.png
│ ├── BadgeLogo.scale-400.png
│ ├── FileIcon.targetsize-16.png
│ ├── FileIcon.targetsize-256.png
│ ├── FileIcon.targetsize-32.png
│ ├── FileIcon.targetsize-48.png
│ ├── FileIconMaster.svg
│ ├── GameGlyphs.ttf
│ ├── Icon Master.svg
│ ├── Icons.zip
│ ├── LargeTile.scale-100.png
│ ├── LargeTile.scale-125.png
│ ├── LargeTile.scale-150.png
│ ├── LargeTile.scale-200.png
│ ├── LargeTile.scale-400.png
│ ├── PackageLogo.scale-100.png
│ ├── PackageLogo.scale-125.png
│ ├── PackageLogo.scale-150.png
│ ├── PackageLogo.scale-200.png
│ ├── PackageLogo.scale-400.png
│ ├── SmallTile.scale-100.png
│ ├── SmallTile.scale-125.png
│ ├── SmallTile.scale-150.png
│ ├── SmallTile.scale-200.png
│ ├── SmallTile.scale-400.png
│ ├── SplashScreen.scale-100.png
│ ├── SplashScreen.scale-125.png
│ ├── SplashScreen.scale-150.png
│ ├── SplashScreen.scale-200.png
│ ├── SplashScreen.scale-400.png
│ ├── Square150x150Logo.scale-100.png
│ ├── Square150x150Logo.scale-125.png
│ ├── Square150x150Logo.scale-150.png
│ ├── Square150x150Logo.scale-200.png
│ ├── Square150x150Logo.scale-400.png
│ ├── Square44x44Logo.altform-unplated_targetsize-16.png
│ ├── Square44x44Logo.altform-unplated_targetsize-256.png
│ ├── Square44x44Logo.altform-unplated_targetsize-32.png
│ ├── Square44x44Logo.altform-unplated_targetsize-48.png
│ ├── Square44x44Logo.scale-100.png
│ ├── Square44x44Logo.scale-125.png
│ ├── Square44x44Logo.scale-150.png
│ ├── Square44x44Logo.scale-200.png
│ ├── Square44x44Logo.scale-400.png
│ ├── Square44x44Logo.targetsize-16.png
│ ├── Square44x44Logo.targetsize-24.png
│ ├── Square44x44Logo.targetsize-24_altform-unplated.png
│ ├── Square44x44Logo.targetsize-256.png
│ ├── Square44x44Logo.targetsize-32.png
│ ├── Square44x44Logo.targetsize-48.png
│ ├── Wide310x150Logo.scale-100.png
│ ├── Wide310x150Logo.scale-125.png
│ ├── Wide310x150Logo.scale-150.png
│ ├── Wide310x150Logo.scale-200.png
│ └── Wide310x150Logo.scale-400.png
├── Controls
│ ├── FileImporter.xaml
│ ├── FileImporter.xaml.cs
│ ├── PlayerOverlay.xaml
│ ├── PlayerOverlay.xaml.cs
│ ├── VirtualPad.xaml
│ └── VirtualPad.xaml.cs
├── Converters
│ └── ItemClickEventArgsConverter.cs
├── Package.appxmanifest
├── Presentation
│ └── CurrentViewModelPresenter.cs
├── Properties
│ ├── AssemblyInfo.cs
│ └── Default.rd.xml
├── RetriX.UWP.csproj
├── Services
│ ├── GameSystemsProviderService.cs
│ └── PlatformService.cs
├── Setup.cs
├── Strings
│ └── en-US
│ │ └── Resources.resw
└── Views
│ ├── AboutView.xaml
│ ├── AboutView.xaml.cs
│ ├── GamePlayerView.xaml
│ ├── GamePlayerView.xaml.cs
│ ├── GameSystemSelectionView.xaml
│ ├── GameSystemSelectionView.xaml.cs
│ ├── SettingsView.xaml
│ └── SettingsView.xaml.cs
├── Retrix.UWP.Native
├── D3DSurfaceMap.cpp
├── D3DSurfaceMap.h
├── Retrix.UWP.Native.vcxproj
├── Retrix.UWP.Native.vcxproj.filters
├── packages.config
├── pch.cpp
└── pch.h
├── Snes9X.LibRetriX
├── Core.cs
├── NativeDllInfo.cs
└── Snes9X.LibRetriX.csproj
├── Snes9X
├── Snes9X.vcxproj
├── Snes9X.vcxproj.filters
└── targetver.h
├── VBAM.LibRetriX
├── Core.cs
├── NativeDllInfo.cs
└── VBAM.LibRetriX.csproj
├── VBAM
├── VBAM.vcxproj
├── VBAM.vcxproj.filters
└── targetver.h
├── Yabause.LibRetriX
├── Core.cs
├── NativeDllInfo.cs
└── Yabause.LibRetriX.csproj
├── Yabause
├── Yabause.vcxproj
├── Yabause.vcxproj.filters
└── targetver.h
└── readme.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "GPGX/src"]
2 | path = GPGX/src
3 | url = https://github.com/libretro/Genesis-Plus-GX.git
4 | branch = master
5 | [submodule "Snes9X/src"]
6 | path = Snes9X/src
7 | url = https://github.com/libretro/snes9x.git
8 | branch = master
9 | [submodule "VBAM/src"]
10 | path = VBAM/src
11 | url = https://github.com/libretro/vbam-libretro.git
12 | branch = master
13 | [submodule "Nestopia/src"]
14 | path = Nestopia/src
15 | url = https://github.com/libretro/nestopia.git
16 | branch = master
17 | [submodule "FCEUMM/src"]
18 | path = FCEUMM/src
19 | url = https://github.com/libretro/libretro-fceumm.git
20 | branch = master
21 | [submodule "Gambatte/src"]
22 | path = Gambatte/src
23 | url = https://github.com/libretro/gambatte-libretro.git
24 | branch = master
25 | [submodule "BeetlePSX/src"]
26 | path = BeetlePSX/src
27 | url = https://github.com/libretro/beetle-psx-libretro.git
28 | branch = master
29 | [submodule "Yabause/src"]
30 | path = Yabause/src
31 | url = https://github.com/libretro/yabause.git
32 | branch = master
33 | [submodule "MelonDS/src"]
34 | path = MelonDS/src
35 | url = https://github.com/libretro/melonDS.git
36 | branch = master
37 | [submodule "ParallelN64/src"]
38 | path = ParallelN64/src
39 | url = https://github.com/libretro/parallel-n64.git
40 | branch = master
41 | [submodule "BeetleWswan/src"]
42 | path = BeetleWswan/src
43 | url = https://github.com/libretro/beetle-wswan-libretro.git
44 | branch = master
45 | [submodule "BeetleNGP/src"]
46 | path = BeetleNGP/src
47 | url = https://github.com/libretro/beetle-ngp-libretro.git
48 | branch = master
49 | [submodule "BeetlePCEFast/src"]
50 | path = BeetlePCEFast/src
51 | url = https://github.com/libretro/beetle-pce-fast-libretro.git
52 | branch = master
53 | [submodule "BeetleSaturn/src"]
54 | path = BeetleSaturn/src
55 | url = https://github.com/libretro/beetle-saturn-libretro.git
56 | branch = master
57 | [submodule "BeetlePCFX/src"]
58 | path = BeetlePCFX/src
59 | url = https://github.com/libretro/beetle-pcfx-libretro.git
60 | branch = master
61 | [submodule "FBAlpha/src"]
62 | path = FBAlpha/src
63 | url = https://github.com/libretro/fbalpha.git
64 | branch = master
65 |
--------------------------------------------------------------------------------
/AppXTimeStamper.ps1:
--------------------------------------------------------------------------------
1 | $appXFile = Get-ChildItem -Filter "*.appxbundle" | Select-Object -First 1;
2 | $appXPath = $appXFile.FullName;
3 | &"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" sign /fd SHA256 /a /n "Alberto Fustinoni" /tr http://tsa.startssl.com/rfc3161 "$appXPath";
--------------------------------------------------------------------------------
/BeetleNGP.LibRetriX/BeetleNGP.LibRetriX.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/BeetleNGP.LibRetriX/Core.cs:
--------------------------------------------------------------------------------
1 | using LibRetriX.RetroBindings;
2 | using System;
3 | using System.Threading;
4 |
5 | namespace LibRetriX.BeetleNGP
6 | {
7 | public static class Core
8 | {
9 | private static Lazy core = new Lazy(InitCore, LazyThreadSafetyMode.ExecutionAndPublication);
10 |
11 | public static ICore Instance => core.Value;
12 |
13 | private static ICore InitCore()
14 | {
15 | var core = new LibretroCore();
16 | core.Initialize();
17 | return core;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/BeetleNGP.LibRetriX/NativeDllInfo.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | internal static class NativeDllInfo
4 | {
5 | public const string DllName = "BeetleNGP";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/BeetleNGP/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/BeetlePCEFast.LibRetriX/BeetlePCEFast.LibRetriX.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/BeetlePCEFast.LibRetriX/Core.cs:
--------------------------------------------------------------------------------
1 | using LibRetriX.RetroBindings;
2 | using System;
3 | using System.Threading;
4 |
5 | namespace LibRetriX.BeetlePCEFast
6 | {
7 | public static class Core
8 | {
9 | private static Lazy core = new Lazy(InitCore, LazyThreadSafetyMode.ExecutionAndPublication);
10 |
11 | public static ICore Instance => core.Value;
12 |
13 | private static ICore InitCore()
14 | {
15 | var core = new LibretroCore(Dependencies);
16 | core.Initialize();
17 | return core;
18 | }
19 |
20 | private static readonly FileDependency[] Dependencies =
21 | {
22 | new FileDependency("syscard3.pce", "PC Engine CD BIOS", "ff1a674273fe3540ccef576376407d1d"),
23 | };
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/BeetlePCEFast.LibRetriX/NativeDllInfo.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | internal static class NativeDllInfo
4 | {
5 | public const string DllName = "BeetlePCEFast";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/BeetlePCEFast/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/BeetlePCFX.LibRetriX/BeetlePCFX.LibRetriX.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/BeetlePCFX.LibRetriX/Core.cs:
--------------------------------------------------------------------------------
1 | using LibRetriX.RetroBindings;
2 | using System;
3 | using System.Threading;
4 |
5 | namespace LibRetriX.BeetlePCFX
6 | {
7 | public static class Core
8 | {
9 | private static Lazy core = new Lazy(InitCore, LazyThreadSafetyMode.ExecutionAndPublication);
10 |
11 | public static ICore Instance => core.Value;
12 |
13 | private static ICore InitCore()
14 | {
15 | var core = new LibretroCore(Dependencies);
16 | core.Initialize();
17 | return core;
18 | }
19 |
20 | private static readonly FileDependency[] Dependencies =
21 | {
22 | new FileDependency("pcfx.rom", "PC-FX BIOS", "08e36edbea28a017f79f8d4f7ff9b6d7"),
23 | };
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/BeetlePCFX.LibRetriX/NativeDllInfo.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | internal static class NativeDllInfo
4 | {
5 | public const string DllName = "BeetlePCFX";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/BeetlePCFX/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/BeetlePSX.LibRetriX/BeetlePSX.LibRetriX.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/BeetlePSX.LibRetriX/Core.cs:
--------------------------------------------------------------------------------
1 | using LibRetriX.RetroBindings;
2 | using System;
3 | using System.Threading;
4 |
5 | namespace LibRetriX.BeetlePSX
6 | {
7 | public static class Core
8 | {
9 | private static Lazy core = new Lazy(InitCore, LazyThreadSafetyMode.ExecutionAndPublication);
10 |
11 | public static ICore Instance => core.Value;
12 |
13 | private static ICore InitCore()
14 | {
15 | var core = new LibretroCore(Dependencies, Options, 1);
16 | core.Initialize();
17 | return core;
18 | }
19 |
20 | private static readonly FileDependency[] Dependencies =
21 | {
22 | new FileDependency("scph5500.bin", "PlayStation (v3.0 09/09/96 J) BIOS", "8dd7d5296a650fac7319bce665a6a53c"),
23 | new FileDependency("scph5501.bin", "PlayStation (v3.0 11/18/96 A) BIOS", "490f666e1afb15b7362b406ed1cea246"),
24 | new FileDependency("scph5502.bin", "PlayStation (v3.0 01/06/97 E) BIOS", "32736f17079d0b2b7024407c39bd3050"),
25 | };
26 |
27 | private static readonly Tuple[] Options =
28 | {
29 | Tuple.Create("beetle_psx_frame_duping_enable", 1U),
30 | Tuple.Create("beetle_psx_analog_calibration", 1U),
31 | Tuple.Create("beetle_psx_skipbios", 1U),
32 | };
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/BeetlePSX.LibRetriX/NativeDllInfo.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | internal static class NativeDllInfo
4 | {
5 | public const string DllName = "BeetlePSX";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/BeetlePSX/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/BeetleSaturn.LibRetriX/BeetleSaturn.LibRetriX.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/BeetleSaturn.LibRetriX/Core.cs:
--------------------------------------------------------------------------------
1 | using LibRetriX.RetroBindings;
2 | using System;
3 | using System.Threading;
4 |
5 | namespace LibRetriX.BeetleSaturn
6 | {
7 | public static class Core
8 | {
9 | private static Lazy core = new Lazy(InitCore, LazyThreadSafetyMode.ExecutionAndPublication);
10 |
11 | public static ICore Instance => core.Value;
12 |
13 | private static ICore InitCore()
14 | {
15 | var core = new LibretroCore();
16 | core.Initialize();
17 | return core;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/BeetleSaturn.LibRetriX/NativeDllInfo.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | internal static class NativeDllInfo
4 | {
5 | public const string DllName = "BeetleSaturn";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/BeetleSaturn/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/BeetleWswan.LibRetriX/BeetleWswan.LibRetriX.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/BeetleWswan.LibRetriX/Core.cs:
--------------------------------------------------------------------------------
1 | using LibRetriX.RetroBindings;
2 | using System;
3 | using System.Threading;
4 |
5 | namespace LibRetriX.BeetleWswan
6 | {
7 | public static class Core
8 | {
9 | private static Lazy core = new Lazy(InitCore, LazyThreadSafetyMode.ExecutionAndPublication);
10 |
11 | public static ICore Instance => core.Value;
12 |
13 | private static ICore InitCore()
14 | {
15 | var core = new LibretroCore();
16 | core.Initialize();
17 | return core;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/BeetleWswan.LibRetriX/NativeDllInfo.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | internal static class NativeDllInfo
4 | {
5 | public const string DllName = "BeetleWswan";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/BeetleWswan/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/FBAlpha.LibRetriX/Core.cs:
--------------------------------------------------------------------------------
1 | using LibRetriX.RetroBindings;
2 | using System;
3 | using System.Threading;
4 |
5 | namespace LibRetriX.FBAlpha
6 | {
7 | public static class Core
8 | {
9 | private static Lazy core = new Lazy(InitCore, LazyThreadSafetyMode.ExecutionAndPublication);
10 |
11 | public static ICore Instance => core.Value;
12 |
13 | private static ICore InitCore()
14 | {
15 | var core = new LibretroCore(Dependencies);
16 | core.Initialize();
17 | return core;
18 | }
19 |
20 | private static readonly FileDependency[] Dependencies =
21 | {
22 | new FileDependency("neogeo.zip", "NeoGeo BIOS collection", "93adcaa22d652417cbc3927d46b11806"),
23 | };
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/FBAlpha.LibRetriX/FBAlpha.LibRetriX.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/FBAlpha.LibRetriX/NativeDllInfo.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | internal static class NativeDllInfo
4 | {
5 | public const string DllName = "FBAlpha";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/FBAlpha/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/FCEUMM.LibRetriX/Core.cs:
--------------------------------------------------------------------------------
1 | using LibRetriX.RetroBindings;
2 | using System;
3 | using System.Threading;
4 |
5 | namespace LibRetriX.FCEUMM
6 | {
7 | public static class Core
8 | {
9 | private static Lazy core = new Lazy(InitCore, LazyThreadSafetyMode.ExecutionAndPublication);
10 |
11 | public static ICore Instance => core.Value;
12 |
13 | private static ICore InitCore()
14 | {
15 | var core = new LibretroCore();
16 | core.Initialize();
17 | return core;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/FCEUMM.LibRetriX/FCEUMM.LibRetriX.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/FCEUMM.LibRetriX/NativeDllInfo.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | internal static class NativeDllInfo
4 | {
5 | public const string DllName = "FCEUMM";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/FCEUMM/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/GPGX.LibRetriX/Core.cs:
--------------------------------------------------------------------------------
1 | using LibRetriX.RetroBindings;
2 | using System;
3 | using System.Threading;
4 |
5 | namespace LibRetriX.GPGX
6 | {
7 | public static class Core
8 | {
9 | private static Lazy core = new Lazy(InitCore, LazyThreadSafetyMode.ExecutionAndPublication);
10 |
11 | public static ICore Instance => core.Value;
12 |
13 | private static ICore InitCore()
14 | {
15 | var core = new LibretroCore(Dependencies);
16 | core.Initialize();
17 | return core;
18 | }
19 |
20 | private static readonly FileDependency[] Dependencies =
21 | {
22 | new FileDependency("BIOS_CD_E.bin", "Mega-CD (Model 1 1.00 Europe) BIOS", "e66fa1dc5820d254611fdcdba0662372"),
23 | new FileDependency("BIOS_CD_J.bin", "Mega-CD (Model 1 1.00 Japan) BIOS", "278a9397d192149e84e820ac621a8edd"),
24 | new FileDependency("BIOS_CD_U.bin", "Mega-CD (Model 1 1.00 USA) BIOS", "2efd74e3232ff260e371b99f84024f7f"),
25 | };
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/GPGX.LibRetriX/GPGX.LibRetriX.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/GPGX.LibRetriX/NativeDllInfo.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | internal static class NativeDllInfo
4 | {
5 | public const string DllName = "GPGX";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/GPGX/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/Gambatte.LibRetriX/Core.cs:
--------------------------------------------------------------------------------
1 | using LibRetriX.RetroBindings;
2 | using System;
3 | using System.Threading;
4 |
5 | namespace LibRetriX.Gambatte
6 | {
7 | public static class Core
8 | {
9 | private static Lazy core = new Lazy(InitCore, LazyThreadSafetyMode.ExecutionAndPublication);
10 |
11 | public static ICore Instance => core.Value;
12 |
13 | private static ICore InitCore()
14 | {
15 | var core = new LibretroCore();
16 | core.Initialize();
17 | return core;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Gambatte.LibRetriX/Gambatte.LibRetriX.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Gambatte.LibRetriX/NativeDllInfo.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | internal static class NativeDllInfo
4 | {
5 | public const string DllName = "Gambatte";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Gambatte/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Primitives/Enums/InputTypes.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | public enum InputTypes
4 | {
5 | DeviceIdJoypadB,
6 | DeviceIdJoypadY,
7 | DeviceIdJoypadSelect,
8 | DeviceIdJoypadStart,
9 | DeviceIdJoypadUp,
10 | DeviceIdJoypadDown,
11 | DeviceIdJoypadLeft,
12 | DeviceIdJoypadRight,
13 | DeviceIdJoypadA,
14 | DeviceIdJoypadX,
15 | DeviceIdJoypadL,
16 | DeviceIdJoypadR,
17 | DeviceIdJoypadL2,
18 | DeviceIdJoypadR2,
19 | DeviceIdJoypadL3,
20 | DeviceIdJoypadR3,
21 | DeviceIdAnalogLeftX,
22 | DeviceIdAnalogLeftY,
23 | DeviceIdAnalogRightX,
24 | DeviceIdAnalogRightY,
25 | DeviceIdMouseX,
26 | DeviceIdMouseY,
27 | DeviceIdMouseLeft,
28 | DeviceIdMouseRight,
29 | DeviceIdMouseWheelup,
30 | DeviceIdMouseWheeldown,
31 | DeviceIdMouseMiddle,
32 | DeviceIdMouseHorizWheelup,
33 | DeviceIdMouseHorizWheeldown,
34 | DeviceIdLightgunX,
35 | DeviceIdLightgunY,
36 | DeviceIdLightgunTrigger,
37 | DeviceIdLightgunCursor,
38 | DeviceIdLightgunTurbo,
39 | DeviceIdLightgunPause,
40 | DeviceIdLightgunStart,
41 | DeviceIdPointerX,
42 | DeviceIdPointerY,
43 | DeviceIdPointerPressed,
44 | DeviceIdUnknown
45 | };
46 | }
47 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Primitives/Enums/PixelFormats.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | public enum PixelFormats
4 | {
5 | ///
6 | /// 0RGB1555, native endian, 0 bit must be set to 0.
7 | /// This pixel format is default for compatibility concerns only.
8 | /// If a 15/16-bit pixel format is desired, consider using RGB565.
9 | ///
10 | RGB0555 = 0,
11 |
12 | ///
13 | /// XRGB8888, native endian. X bits are ignored.
14 | ///
15 | XRGB8888 = 1,
16 |
17 | ///
18 | /// RGB565, native endian.
19 | /// This pixel format is the recommended format to use if a 15/16-bit format is desired
20 | /// as it is the pixel format that is typically available on a wide range of low-power devices.
21 | /// It is also natively supported in APIs like OpenGL ES.
22 | ///
23 | RGB565 = 2,
24 |
25 | Unknown = int.MaxValue
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Primitives/Enums/Rotations.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | public enum Rotations
4 | {
5 | CCW0 = 0,
6 | CCW90 = 1,
7 | CCW180 = 2,
8 | CCW270 = 3,
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Primitives/ICore.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.IO;
3 |
4 | namespace LibRetriX
5 | {
6 | ///
7 | /// Video frame render callbacks
8 | ///
9 | /// Framebuffer data. Only valid while inside the callback
10 | /// Framebufer width in pixels
11 | /// Framebuffer height in pixels
12 | /// Number of elements between horizontal lines (framebuffer is not always packed in memory)
13 | public delegate void RenderVideoFrameUshortDelegate(IReadOnlyList data, uint width, uint height, ulong pitch);
14 | public delegate void RenderVideoFrameUintDelegate(IReadOnlyList data, uint width, uint height, ulong pitch);
15 |
16 | ///
17 | /// Audio data render callback. Use to fill audio buffers of whatever playback mechanism the front end uses
18 | ///
19 | /// Audio data. Only valid while inside the callback
20 | public delegate void RenderAudioFramesDelegate(IReadOnlyList data, ulong numFrames);
21 |
22 | public delegate void PollInputDelegate();
23 | public delegate short GetInputStateDelegate(uint port, InputTypes inputType);
24 |
25 | public delegate void GeometryChangedDelegate(GameGeometry geometry);
26 | public delegate void TimingsChangedDelegate(SystemTimings timing);
27 | public delegate void RotationChangedDelegate(Rotations rotation);
28 | public delegate void PixelFormatChangedDelegate(PixelFormats format);
29 |
30 | public delegate Stream OpenFileStreamDelegate(string path, FileAccess fileAccess);
31 | public delegate void CloseFileStreamDelegate(Stream stream);
32 |
33 | ///
34 | /// Interface for Libretro cores
35 | ///
36 | public interface ICore
37 | {
38 | string Name { get; }
39 | string Version { get; }
40 | IReadOnlyList SupportedExtensions { get; }
41 | bool NativeArchiveSupport { get; }
42 |
43 | string SystemRootPath { get; set; }
44 | string SaveRootPath { get; set; }
45 |
46 | IReadOnlyDictionary Options { get; }
47 | IReadOnlyList FileDependencies { get; }
48 |
49 | PixelFormats PixelFormat { get; }
50 | GameGeometry Geometry { get; }
51 | SystemTimings Timings { get; }
52 | Rotations Rotation { get; }
53 | ulong SerializationSize { get; }
54 |
55 | bool LoadGame(string mainGameFilePath);
56 | void UnloadGame();
57 |
58 | void RunFrame();
59 | void Reset();
60 |
61 | bool SaveState(Stream outputStream);
62 | bool LoadState(Stream inputStream);
63 |
64 | event RenderVideoFrameUshortDelegate RenderVideoFrameRGB0555;
65 | event RenderVideoFrameUshortDelegate RenderVideoFrameRGB565;
66 | event RenderVideoFrameUintDelegate RenderVideoFrameXRGB8888;
67 | event RenderAudioFramesDelegate RenderAudioFrames;
68 | event PixelFormatChangedDelegate PixelFormatChanged;
69 | event GeometryChangedDelegate GeometryChanged;
70 | event TimingsChangedDelegate TimingsChanged;
71 | event RotationChangedDelegate RotationChanged;
72 |
73 | PollInputDelegate PollInput { get; set; }
74 | GetInputStateDelegate GetInputState { get; set; }
75 | OpenFileStreamDelegate OpenFileStream { get; set; }
76 | CloseFileStreamDelegate CloseFileStream { get; set; }
77 | };
78 | }
79 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Primitives/LibRetriX.Primitives.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | LibRetriX
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Primitives/Types/CoreOption.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace LibRetriX
5 | {
6 | public class CoreOption
7 | {
8 | public string Description { get; private set; }
9 | public IReadOnlyList Values { get; private set; }
10 |
11 | private uint selectedValueIx;
12 | public uint SelectedValueIx
13 | {
14 | get => selectedValueIx;
15 | set
16 | {
17 | if (value >= Values.Count)
18 | {
19 | throw new ArgumentException();
20 | }
21 |
22 | selectedValueIx = value;
23 | }
24 | }
25 |
26 | public CoreOption(string description, IReadOnlyList values)
27 | {
28 | Description = description;
29 | Values = values;
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Primitives/Types/FileDependency.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX
2 | {
3 | public class FileDependency
4 | {
5 | public string Name { get; private set; }
6 | public string Description { get; private set; }
7 | public string MD5 { get; private set; }
8 |
9 | public FileDependency(string name, string description, string md5)
10 | {
11 | Name = name;
12 | Description = description;
13 | MD5 = md5;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Primitives/Types/GameGeometry.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace LibRetriX
4 | {
5 | [StructLayout(LayoutKind.Sequential)]
6 | public struct GameGeometry
7 | {
8 | private uint baseWidth;
9 | ///
10 | /// Nominal video width of game
11 | ///
12 | public uint BaseWidth => baseWidth;
13 |
14 | private uint baseHeight;
15 | ///
16 | /// Nominal video height of game
17 | ///
18 | public uint BaseHeight => baseHeight;
19 |
20 | private uint maxWidth;
21 | ///
22 | /// Maximum possible width of game
23 | ///
24 | public uint MaxWidth => maxWidth;
25 |
26 | private uint maxHeight;
27 | ///
28 | /// Maximum possible height of game
29 | ///
30 | public uint MaxHeight => maxHeight;
31 |
32 | private float aspectRatio;
33 | ///
34 | /// Nominal aspect ratio of game.
35 | /// If aspect_ratio is <= 0.0, an aspect ratio
36 | /// of base_width / base_height is assumed.
37 | /// A frontend could override this setting
38 | /// if desired
39 | ///
40 | public float AspectRatio => aspectRatio;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Primitives/Types/SystemTimings.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace LibRetriX
4 | {
5 | [StructLayout(LayoutKind.Sequential)]
6 | public struct SystemTimings
7 | {
8 | private double fps;
9 | ///
10 | /// FPS of video content
11 | ///
12 | public double FPS => fps;
13 |
14 | private double sampleRate;
15 | ///
16 | /// Sampling rate of audio
17 | ///
18 | public double SampleRate => sampleRate;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings.Static/LibRetriX.RetroBindings.Static.projitems:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
5 | true
6 | 3f31cf6f-c2df-489a-9c2a-0b9958d0c143
7 |
8 |
9 | LibRetriX.RetroBindings
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings.Static/LibRetriX.RetroBindings.Static.shproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 3f31cf6f-c2df-489a-9c2a-0b9958d0c143
5 | 14.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/ControllerDescription.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 |
4 | namespace LibRetriX.RetroBindings
5 | {
6 | [StructLayout(LayoutKind.Sequential)]
7 | public struct ControllerDescription
8 | {
9 | private IntPtr descriptionStringPtr;
10 | ///
11 | /// Human-readable description of the controller.
12 | /// Even if using a generic input device type, this can be set to the particular device type the core uses.
13 | ///
14 | public IntPtr DescriptionStringPtr => descriptionStringPtr;
15 |
16 | private uint id;
17 | ///
18 | /// Device type passed to retro_set_controller_port_device().
19 | /// If the device type is a sub-class of a generic input device type,
20 | /// use the RETRO_DEVICE_SUBCLASS macro to create an ID.
21 | /// E.g. RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_JOYPAD, 1).
22 | ///
23 | public uint Id => id;
24 | };
25 | }
26 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/ControllerInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 |
4 | namespace LibRetriX.RetroBindings
5 | {
6 | [StructLayout(LayoutKind.Sequential)]
7 | public struct ControllerInfo
8 | {
9 | private IntPtr descriptionsPtr;
10 | public IntPtr DescriptionsPtr => descriptionsPtr;
11 |
12 | private uint numDescriptions;
13 | public uint NumDescriptions => numDescriptions;
14 | };
15 | }
16 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/Framebuffer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 |
4 | namespace LibRetriX.RetroBindings
5 | {
6 | [StructLayout(LayoutKind.Sequential)]
7 | public struct Framebuffer
8 | {
9 | private IntPtr data;
10 | ///
11 | /// The framebuffer which the core can render into.
12 | /// Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER.
13 | /// The initial contents of data are unspecified.
14 | ///
15 | public IntPtr Data => data;
16 |
17 | private uint width;
18 | ///
19 | /// The framebuffer width used by the core. Set by core.
20 | ///
21 | public uint Width => width;
22 |
23 | private uint height;
24 | ///
25 | /// The framebuffer height used by the core. Set by core.
26 | ///
27 | public uint Height => height;
28 |
29 | private IntPtr pitch;
30 | ///
31 | /// The number of bytes between the beginning of a scanline,
32 | /// and beginning of the next scanline.
33 | /// Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER.
34 | ///
35 | public IntPtr Pitch => pitch;
36 |
37 | private PixelFormats format;
38 | ///
39 | /// The pixel format the core must use to render into data.
40 | /// This format could differ from the format used in SET_PIXEL_FORMAT.
41 | /// Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER.
42 | ///
43 | public PixelFormats Format => format;
44 |
45 | private uint accessFlags;
46 | ///
47 | /// How the core will access the memory in the framebuffer.
48 | /// RETRO_MEMORY_ACCESS_* flags.
49 | /// Set by core. */
50 | ///
51 | public uint AccessFlags => accessFlags;
52 |
53 | private uint memoryFlags;
54 | ///
55 | /// Flags telling core how the memory has been mapped.
56 | /// RETRO_MEMORY_TYPE_* flags.
57 | /// Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER
58 | ///
59 | public uint MemoryFlags => memoryFlags;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/GameInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 |
4 | namespace LibRetriX.RetroBindings
5 | {
6 | [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
7 | public struct GameInfo
8 | {
9 | [MarshalAs(UnmanagedType.LPStr)]
10 | private string path;
11 | ///
12 | /// Path to game. Sometimes used as a reference for building other paths.
13 | /// May be NULL if game was loaded from stdin or similar, but in this case some cores will be unable to load `data`.
14 | /// So, it is preferable to fabricate something here instead of passing NULL, which will help more cores to succeed.
15 | /// retro_system_info::need_fullpath requires that this path is valid.
16 | ///
17 | public string Path
18 | {
19 | get { return path; }
20 | set { path = value; }
21 | }
22 |
23 | private IntPtr dataPtr;
24 | private IntPtr dataSize;
25 | ///
26 | /// Set game data to the specified array
27 | ///
28 | /// Byte array holding game data
29 | /// Handle to pinned data. Release when unloading game.
30 | public GCHandle SetGameData(byte[] data)
31 | {
32 | var handle = GCHandle.Alloc(data, GCHandleType.Pinned);
33 | dataPtr = handle.AddrOfPinnedObject();
34 | dataSize = (IntPtr)data.Length;
35 | return handle;
36 | }
37 |
38 | private IntPtr meta;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/HwRenderContextNegotiationInterfaceTypes.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX.RetroBindings
2 | {
3 | public enum HwRenderContextNegotiationInterfaceTypes
4 | {
5 | Vulkan = 0,
6 | Dummy = int.MaxValue
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/HwRenderInterfaceTypes.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX.RetroBindings
2 | {
3 | public enum HwRenderInterfaceTypes
4 | {
5 | Vulkan = 0,
6 | Dumy = int.MaxValue
7 | };
8 | }
9 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/Languages.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX.RetroBindings
2 | {
3 | public enum Languages
4 | {
5 | RETRO_LANGUAGE_ENGLISH = 0,
6 | RETRO_LANGUAGE_JAPANESE = 1,
7 | RETRO_LANGUAGE_FRENCH = 2,
8 | RETRO_LANGUAGE_SPANISH = 3,
9 | RETRO_LANGUAGE_GERMAN = 4,
10 | RETRO_LANGUAGE_ITALIAN = 5,
11 | RETRO_LANGUAGE_DUTCH = 6,
12 | RETRO_LANGUAGE_PORTUGUESE_BRAZIL = 7,
13 | RETRO_LANGUAGE_PORTUGUESE_PORTUGAL = 8,
14 | RETRO_LANGUAGE_RUSSIAN = 9,
15 | RETRO_LANGUAGE_KOREAN = 10,
16 | RETRO_LANGUAGE_CHINESE_TRADITIONAL = 11,
17 | RETRO_LANGUAGE_CHINESE_SIMPLIFIED = 12,
18 | RETRO_LANGUAGE_ESPERANTO = 13,
19 | RETRO_LANGUAGE_POLISH = 14,
20 | RETRO_LANGUAGE_VIETNAMESE = 15,
21 | RETRO_LANGUAGE_LAST,
22 |
23 | /* Ensure sizeof(enum) == sizeof(int) */
24 | RETRO_LANGUAGE_DUMMY = int.MaxValue
25 | };
26 | }
27 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/LibRetriX.RetroBindings.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.3
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | UnmanagedLists.tt
15 | True
16 | True
17 |
18 |
19 |
20 |
21 |
22 | UnmanagedLists.cs
23 | TextTemplatingFileGenerator
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/LibretroVariable.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 |
4 | namespace LibRetriX.RetroBindings
5 | {
6 | [StructLayout(LayoutKind.Sequential)]
7 | public struct LibretroVariable
8 | {
9 | private IntPtr keyPtr;
10 | ///
11 | /// Variable to query in RETRO_ENVIRONMENT_GET_VARIABLE.
12 | /// If NULL, obtains the complete environment string if more complex parsing is necessary.
13 | /// The environment string is formatted as key-value pairs delimited by semicolons as so:
14 | /// "key1=value1;key2=value2;..."
15 | ///
16 | public IntPtr KeyPtr => keyPtr;
17 |
18 | private IntPtr valuePtr;
19 | ///
20 | /// Value to be obtained. If key does not exist, it is set to NULL.
21 | ///
22 | public IntPtr ValuePtr
23 | {
24 | get => valuePtr;
25 | set { valuePtr = value; }
26 | }
27 | };
28 | }
29 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/LogCallbackDescriptor.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace LibRetriX.RetroBindings
4 | {
5 | [StructLayout(LayoutKind.Sequential)]
6 | public struct LogCallbackDescriptor
7 | {
8 | private LibretroLogDelegate logCallback;
9 | public LibretroLogDelegate LogCallback
10 | {
11 | get => logCallback;
12 | set { logCallback = value; }
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/LogLevels.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX.RetroBindings
2 | {
3 | public enum LogLevels
4 | {
5 | Debug = 0,
6 | Info,
7 | Warning,
8 | Error,
9 |
10 | Fummy = int.MaxValue
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/Modifiers.cs:
--------------------------------------------------------------------------------
1 | namespace LibRetriX.RetroBindings
2 | {
3 | public enum Modifiers
4 | {
5 | RETROKMOD_NONE = 0x0000,
6 |
7 | RETROKMOD_SHIFT = 0x01,
8 | RETROKMOD_CTRL = 0x02,
9 | RETROKMOD_ALT = 0x04,
10 | RETROKMOD_META = 0x08,
11 |
12 | RETROKMOD_NUMLOCK = 0x10,
13 | RETROKMOD_CAPSLOCK = 0x20,
14 | RETROKMOD_SCROLLOCK = 0x40,
15 |
16 | RETROKMOD_DUMMY = int.MaxValue /* Ensure sizeof(enum) == sizeof(int) */
17 | };
18 | }
19 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/SystemAVInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace LibRetriX.RetroBindings
4 | {
5 | [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
6 | public struct SystemAVInfo
7 | {
8 | private GameGeometry geometry;
9 | public GameGeometry Geometry => geometry;
10 |
11 | private SystemTimings timings;
12 | public SystemTimings Timings => timings;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/SystemInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 |
4 | namespace LibRetriX.RetroBindings
5 | {
6 | ///
7 | /// All pointers are owned by libretro implementation, and pointers must
8 | /// remain valid until retro_deinit() is called.
9 | ///
10 | [StructLayout(LayoutKind.Sequential)]
11 | public struct SystemInfo
12 | {
13 | private IntPtr libraryName;
14 | ///
15 | /// Descriptive name of library. Should not contain any version numbers, etc.
16 | ///
17 | public string LibraryName => Marshal.PtrToStringAnsi(libraryName);
18 |
19 | private IntPtr libraryVersion;
20 | ///
21 | /// Descriptive version of core.
22 | ///
23 | public string LibraryVersion => Marshal.PtrToStringAnsi(libraryVersion);
24 |
25 | private IntPtr validExtensions;
26 | ///
27 | /// A string listing probably content extensions the core will be able to load, separated with pipe.
28 | /// I.e. "bin|rom|iso".
29 | /// Typically used for a GUI to filter out extensions.
30 | ///
31 | public string ValidExtensions => Marshal.PtrToStringAnsi(validExtensions);
32 |
33 | [MarshalAs(UnmanagedType.I1)]
34 | private bool needFullpath;
35 | ///
36 | /// If true, retro_load_game() is guaranteed to provide a valid pathname in path. data and size are both invalid.
37 | /// If false, data and size are guaranteed to be valid, path might not be valid.
38 | /// This is typically set to true for libretro implementations that must load from file.
39 | /// Implementations should strive for setting this to false, as it allows the frontend to perform patching, etc.
40 | ///
41 | public bool NeedFullpath => needFullpath;
42 |
43 | [MarshalAs(UnmanagedType.I1)]
44 | private bool blockExtract;
45 | ///
46 | /// If true, the frontend is not allowed to extract any archives before loading the real content.
47 | /// Necessary for certain libretro implementations that load games from zipped archives.
48 | ///
49 | public bool BlockExtract => blockExtract;
50 | };
51 | }
52 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/Unsafe/UnmanagedLists.tt:
--------------------------------------------------------------------------------
1 | <#@ template hostspecific="false" language="C#" #>
2 | <#@ output extension=".cs" #>
3 |
4 | using System;
5 | using System.Collections;
6 | using System.Collections.Generic;
7 |
8 | namespace LibRetriX.RetroBindings.Unsafe
9 | {
10 | <# foreach(var TemplateData in new Tuple[] { Tuple.Create("Short","short"), Tuple.Create("UShort","ushort"), Tuple.Create("Int","int"), Tuple.Create("UInt","uint")})
11 | {
12 | #>
13 | public unsafe class UnmanagedList<#Write($"{TemplateData.Item1}");#> : IReadOnlyList<<#Write($"{TemplateData.Item2}");#>>
14 | {
15 | private class InnerEnumerator : IEnumerator<<#Write($"{TemplateData.Item2}");#>>
16 | {
17 | private <#Write($"{TemplateData.Item2}");#>* StartPtr { get; }
18 | private <#Write($"{TemplateData.Item2}");#>* EndPtr { get; }
19 | private <#Write($"{TemplateData.Item2}");#>* CurrentPtr { get; set; } = null;
20 |
21 | public <#Write($"{TemplateData.Item2}");#> Current => *CurrentPtr;
22 | object IEnumerator.Current => Current;
23 |
24 | public InnerEnumerator(<#Write($"{TemplateData.Item2}");#>* startPtr, <#Write($"{TemplateData.Item2}");#>* endPtr)
25 | {
26 | StartPtr = startPtr;
27 | EndPtr = endPtr;
28 | }
29 |
30 | public void Dispose()
31 | {
32 | }
33 |
34 | public bool MoveNext()
35 | {
36 | CurrentPtr++;
37 | return CurrentPtr < EndPtr;
38 | }
39 |
40 | public void Reset()
41 | {
42 | CurrentPtr = StartPtr;
43 | }
44 | }
45 |
46 | private <#Write($"{TemplateData.Item2}");#>* StartPtr { get; }
47 |
48 | public int Count { get; }
49 | public <#Write($"{TemplateData.Item2}");#> this[int index] => StartPtr[index];
50 |
51 | public UnmanagedList<#Write($"{TemplateData.Item1}");#>(IntPtr startPtr, int count)
52 | {
53 | StartPtr = (<#Write($"{TemplateData.Item2}");#>*)startPtr.ToPointer();
54 | Count = count;
55 | }
56 |
57 | public IEnumerator<<#Write($"{TemplateData.Item2}");#>> GetEnumerator()
58 | {
59 | return new InnerEnumerator(StartPtr, StartPtr + Count);
60 | }
61 |
62 | IEnumerator IEnumerable.GetEnumerator()
63 | {
64 | return GetEnumerator();
65 | }
66 | }
67 |
68 | <#
69 | }
70 | #>
71 | }
72 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/VFSInterface.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace LibRetriX.RetroBindings
4 | {
5 | [StructLayout(LayoutKind.Sequential)]
6 | public struct VFSInterface
7 | {
8 | private VFSGetPathDelegate getPath;
9 | public VFSGetPathDelegate GetPath
10 | {
11 | get => getPath;
12 | set { getPath = value; }
13 | }
14 |
15 | private VFSOpenDelegate open;
16 | public VFSOpenDelegate Open
17 | {
18 | get => open;
19 | set { open = value; }
20 | }
21 |
22 | private VFSCloseDelegate close;
23 | public VFSCloseDelegate Close
24 | {
25 | get => close;
26 | set { close = value; }
27 | }
28 |
29 | private VFSGetSizeDelegate getSize;
30 | public VFSGetSizeDelegate GetSize
31 | {
32 | get => getSize;
33 | set { getSize = value; }
34 | }
35 |
36 | private VFSGetPositionDelegate getPosition;
37 | public VFSGetPositionDelegate GetPosition
38 | {
39 | get => getPosition;
40 | set { getPosition = value; }
41 | }
42 |
43 | private VFSSetPositionDelegate setPosition;
44 | public VFSSetPositionDelegate SetPosition
45 | {
46 | get => setPosition;
47 | set { setPosition = value; }
48 | }
49 |
50 | private VFSReadDelegate read;
51 | public VFSReadDelegate Read
52 | {
53 | get => read;
54 | set { read = value; }
55 | }
56 |
57 | private VFSWriteDelegate write;
58 | public VFSWriteDelegate Write
59 | {
60 | get => write;
61 | set { write = value; }
62 | }
63 |
64 | private VFSFlushDelegate flush;
65 | public VFSFlushDelegate Flush
66 | {
67 | get => flush;
68 | set { flush = value; }
69 | }
70 |
71 | private VFSDeleteDelegate delete;
72 | public VFSDeleteDelegate Delete
73 | {
74 | get => delete;
75 | set { delete = value; }
76 | }
77 |
78 | private VFSRenameDelegate rename;
79 | public VFSRenameDelegate Rename
80 | {
81 | get => rename;
82 | set { rename = value; }
83 | }
84 | };
85 | }
86 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.RetroBindings/VFSInterfaceInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 |
4 | namespace LibRetriX.RetroBindings
5 | {
6 | [StructLayout(LayoutKind.Sequential)]
7 | public struct VFSInterfaceInfo
8 | {
9 | private uint requiredInterfaceVersion;
10 | ///
11 | /// Set by core: should this be higher than the version the front end supports,
12 | /// front end will return false in the RETRO_ENVIRONMENT_GET_VFS_INTERFACE call.
13 | /// Introduced in VFS API v1.
14 | ///
15 | public uint RequiredInterfaceVersion
16 | {
17 | get => requiredInterfaceVersion;
18 | set { requiredInterfaceVersion = value; }
19 | }
20 |
21 | private IntPtr vfs_interface;
22 | ///
23 | /// Frontend writes interface function pointers here.
24 | /// The frontend also sets the actual version, must be at least required_interface_version.
25 | /// Introduced in VFS API v1.
26 | ///
27 | public IntPtr Interface
28 | {
29 | get => vfs_interface;
30 | set { vfs_interface = value; }
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Test.Base/LibRetriX.Test.Base.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard1.4
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Test.Base/StreamProvider.cs:
--------------------------------------------------------------------------------
1 | using Plugin.FileSystem.Abstractions;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.IO;
5 |
6 | namespace LibRetriX.Test.Base
7 | {
8 | public class StreamProvider : IDisposable
9 | {
10 | private readonly string handledScheme;
11 | public string HandledScheme => handledScheme;
12 |
13 | private readonly IDirectoryInfo RootFolder;
14 | private readonly List OpenStreams = new List();
15 |
16 | public StreamProvider(string scheme, IDirectoryInfo rootFolder)
17 | {
18 | handledScheme = scheme;
19 | RootFolder = rootFolder;
20 | }
21 |
22 | public void Dispose()
23 | {
24 | foreach (var i in OpenStreams)
25 | {
26 | i.Dispose();
27 | }
28 | }
29 |
30 | public Stream OpenFileStream(string path, FileAccess fileAccess)
31 | {
32 | if (fileAccess != FileAccess.Read)
33 | {
34 | var memoryStream = new MemoryStream();
35 | OpenStreams.Add(memoryStream);
36 | return memoryStream;
37 | }
38 |
39 | path = path.Substring(HandledScheme.Length);
40 | var output = default(Stream);
41 | try
42 | {
43 | var file = RootFolder.GetFileAsync(path).Result;
44 | output = file.OpenAsync(fileAccess).Result;
45 | }
46 | catch
47 | {
48 | return null;
49 | }
50 |
51 | OpenStreams.Add(output);
52 | return output;
53 | }
54 |
55 | public void CloseFileStream(Stream stream)
56 | {
57 | if (OpenStreams.Contains(stream))
58 | {
59 | stream.Dispose();
60 | OpenStreams.Remove(stream);
61 | }
62 | }
63 | }
64 | }
65 |
66 |
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Test.UWP/Assets/LockScreenLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Aftnet/LibretroRT/3515ee9cc370426ad61eaa01f091df93a3ca7aad/LibRetriX/LibRetriX.Test.UWP/Assets/LockScreenLogo.scale-200.png
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Test.UWP/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Aftnet/LibretroRT/3515ee9cc370426ad61eaa01f091df93a3ca7aad/LibRetriX/LibRetriX.Test.UWP/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Test.UWP/Assets/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Aftnet/LibretroRT/3515ee9cc370426ad61eaa01f091df93a3ca7aad/LibRetriX/LibRetriX.Test.UWP/Assets/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Test.UWP/Assets/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Aftnet/LibretroRT/3515ee9cc370426ad61eaa01f091df93a3ca7aad/LibRetriX/LibRetriX.Test.UWP/Assets/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Test.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Aftnet/LibretroRT/3515ee9cc370426ad61eaa01f091df93a3ca7aad/LibRetriX/LibRetriX.Test.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Test.UWP/Assets/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Aftnet/LibretroRT/3515ee9cc370426ad61eaa01f091df93a3ca7aad/LibRetriX/LibRetriX.Test.UWP/Assets/StoreLogo.png
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Test.UWP/Assets/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Aftnet/LibretroRT/3515ee9cc370426ad61eaa01f091df93a3ca7aad/LibRetriX/LibRetriX.Test.UWP/Assets/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/LibRetriX/LibRetriX.Test.UWP/BeetleNGPTest.cs:
--------------------------------------------------------------------------------
1 | using LibRetriX.BeetleNGP;
2 | using LibRetriX.Test.Base;
3 | using System.Collections.Generic;
4 | using System.Threading.Tasks;
5 | using Xunit;
6 |
7 | namespace LibRetriX.Test.UWP
8 | {
9 | public class BeetleNGPTest : CoreTestBase
10 | {
11 | public static IEnumerable