├── .gitattributes
├── .github
└── workflows
│ └── main.yml
├── .gitignore
├── AUTHORS.md
├── Docs
├── SettingsDataSources.md
├── SettingsLogging.md
├── SettingsPersonalization.md
├── SetupDolphin.md
├── SetupDuckStation.md
├── SetupEmulationStation.md
├── SetupLaunchBox.md
├── SetupLaunchBoxImport.md
├── SetupLaunchBoxSorting.md
├── SetupMultipleDataSources.md
├── SetupPPSSPP.md
├── SetupRetriXGold.md
├── SetupRetroArch.md
├── SetupXBSX2.md
├── SetupXeniaCanary.md
├── core_per_game.png
├── layout_collection_fixed.png
├── layout_collection_group.png
├── layout_collection_original.png
├── layout_collection_stretch_fill.png
├── layout_collection_stretch_uniform.png
├── layout_collection_stretch_uniform_to_fill.png
├── layout_menu_fixed.png
├── layout_menu_original.png
├── media_types.png
├── menu.gif
├── settings_data_source_activate.png
├── settings_data_source_add.png
├── settings_data_source_choose.png
├── settings_first_run.png
├── settings_log.png
├── settings_personalization.png
├── setup_dolphin_associated_platforms.png
├── setup_dolphin_edit_emulator.png
├── setup_duckstation_associated_platforms.png
├── setup_duckstation_edit_emulator.png
├── setup_launchbox_import_add.png
├── setup_launchbox_import_copy.png
├── setup_launchbox_import_emulator.png
├── setup_launchbox_import_platform.png
├── setup_multiple_data_sources_flash_content.png
├── setup_multiple_data_sources_flash_content_2.png
├── setup_multiple_data_sources_flash_content_4.png
├── setup_multiple_data_sources_flash_content_5.png
├── setup_multiple_data_sources_settings_activate.png
├── setup_multiple_data_sources_settings_activated.png
├── setup_multiple_data_sources_settings_unavailable.png
├── setup_ppsspp_associated_platforms.png
├── setup_ppsspp_edit_emulator.png
├── setup_retrixgold_associated_platforms.png
├── setup_retrixgold_edit_emulator.png
├── setup_retroarch_associated_platforms.png
├── setup_retroarch_edit_emulator.png
├── setup_retroarch_quit_hotkey.png
├── setup_sort_games.png
├── setup_sort_platform.png
├── setup_sort_playlist.png
├── setup_xbsx2_associated_platforms.png
├── setup_xbsx2_edit_emulator.png
├── setup_xeniacanary_associated_platforms.png
├── setup_xeniacanary_edit_emulator.png
├── v1.5
│ └── RetroPass.xml
└── v1.6
│ └── RetroPass.xml
├── LICENSE.txt
├── README.md
├── RetroPass.sln
├── RetroPass
├── App.xaml
├── App.xaml.cs
├── Assets
│ ├── LargeTile.scale-100.png
│ ├── LargeTile.scale-125.png
│ ├── LargeTile.scale-150.png
│ ├── LargeTile.scale-200.png
│ ├── LargeTile.scale-400.png
│ ├── LockScreenLogo.scale-200.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
│ ├── SplashScreenDefault-100.png
│ ├── SplashScreenDefault-125.png
│ ├── SplashScreenDefault-150.png
│ ├── SplashScreenDefault-200.png
│ ├── SplashScreenDefault-400.png
│ ├── Square150x150Logo.scale-100.png
│ ├── Square150x150Logo.scale-125.png
│ ├── Square150x150Logo.scale-150.png
│ ├── Square150x150Logo.scale-200.png
│ ├── Square150x150Logo.scale-400.png
│ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png
│ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png
│ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png
│ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png
│ ├── Square44x44Logo.altform-lightunplated_targetsize-48.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
│ ├── StoreLogo.backup.png
│ ├── StoreLogo.scale-100.png
│ ├── StoreLogo.scale-125.png
│ ├── StoreLogo.scale-150.png
│ ├── StoreLogo.scale-200.png
│ ├── StoreLogo.scale-400.png
│ ├── Wide310x150Logo.scale-100.png
│ ├── Wide310x150Logo.scale-125.png
│ ├── Wide310x150Logo.scale-150.png
│ ├── Wide310x150Logo.scale-200.png
│ ├── Wide310x150Logo.scale-400.png
│ └── empty.png
├── DataSource.cs
├── DataSourceEmulationStation.cs
├── DataSourceLaunchBox.cs
├── DataSourceManager.cs
├── FocusControl.xaml
├── FocusControl.xaml.cs
├── Game.cs
├── GameCollectionPage.xaml
├── GameCollectionPage.xaml.cs
├── GameDetailsPage.xaml
├── GameDetailsPage.xaml.cs
├── LogPage.xaml
├── LogPage.xaml.cs
├── MainPage.xaml
├── MainPage.xaml.cs
├── Package.appxmanifest
├── Platform.cs
├── PlayLaterControl.xaml
├── PlayLaterControl.xaml.cs
├── Playlist.cs
├── PlaylistItem.cs
├── PlaylistPlayLater.cs
├── Properties
│ ├── AssemblyInfo.cs
│ └── Default.rd.xml
├── Resources
│ ├── SearchBackgroundDark_128.png
│ ├── SearchBackgroundLight_128.png
│ └── Themes
│ │ └── ThemeDefault
│ │ ├── CommonDefault.xaml
│ │ └── CommonDefault.xaml.cs
├── RetroPass.csproj
├── SearchPage.xaml
├── SearchPage.xaml.cs
├── SettingsPage.xaml.cs
├── SettingsPages
│ ├── SettingsAddDataSourcePage.xaml
│ ├── SettingsAddDataSourcePage.xaml.cs
│ ├── SettingsDataSourcePage.xaml
│ ├── SettingsDataSourcePage.xaml.cs
│ ├── SettingsLogPage.xaml
│ ├── SettingsLogPage.xaml.cs
│ ├── SettingsPage.xaml
│ ├── SettingsPage.xaml.cs
│ ├── SettingsPersonalizationPage.xaml
│ └── SettingsPersonalizationPage.xaml.cs
├── StorageUtils.cs
├── ThemeManager.cs
├── ThumbnailCache.cs
├── UrlSchemeGenerator.cs
└── Utils.cs
└── Temp
└── Job.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 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: RetroPass Build
2 |
3 | # Controls when the workflow will run
4 | on:
5 | # Triggers the workflow on tag event
6 | push:
7 | tags:
8 | - 'v*'
9 |
10 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
11 | jobs:
12 | # This workflow contains a single job called "build"
13 | build:
14 | # The type of runner that the job will run on
15 | runs-on: windows-latest
16 |
17 | env:
18 | SolutionPath: RetroPass.sln
19 | Platform: x64
20 | Configuration: Release
21 | BuildMode: SideLoadOnly
22 | AppxBundle: Never
23 | SigningCertificate: RetroPassKey.pfx
24 | ProjectPath: RetroPass\RetroPass.csproj
25 | ProjectDirectory: .\RetroPass
26 | PackageOutputRootDir: C:\AppPackage
27 | PackageOutputDir: RetroPass
28 | PackageOutputBaseName: RetroPass
29 |
30 | # Steps represent a sequence of tasks that will be executed as part of the job
31 | steps:
32 | - name: Add msbuild to PATH
33 | uses: microsoft/setup-msbuild@v1
34 |
35 | - name: Setup NuGet.exe for use with actions
36 | uses: NuGet/setup-nuget@v1.0.5
37 |
38 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
39 | - name: checkout
40 | uses: actions/checkout@v2
41 |
42 | # Get tag name so a proper package name can be generated
43 | - name: Get tag
44 | id: getTag
45 | # You may pin to the exact commit or the version.
46 | uses: dawidd6/action-get-tag@v1.1.0
47 |
48 | # Create package name
49 | - name: GetPackageName
50 | id: getPackageName
51 | run: |
52 | $PackageName = "${{ env.PackageOutputBaseName }}" + "_" + "${{ steps.getTag.outputs.tag }}"
53 | echo "::set-output name=PackageName::$PackageName"
54 | Write-Host "Package Name is $PackageName"
55 |
56 | # Decode the Base64 encoded Pfx
57 | - name: Decode the Pfx
58 | run: |
59 | $pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.BASE64_ENCODED_PFX }}")
60 | $currentDirectory = Get-Location
61 | $certificatePath = Join-Path -Path $currentDirectory -ChildPath $env:ProjectDirectory -AdditionalChildPath $env:SigningCertificate
62 | [IO.File]::WriteAllBytes("$certificatePath", $pfx_cert_byte)
63 |
64 | # Build app
65 | - name: App build
66 | run: msbuild $env:SolutionPath
67 | /p:Platform=$env:Platform
68 | /p:Configuration=$env:Configuration
69 | /p:UapAppxPackageBuildMode=$env:BuildMode
70 | /p:AppxBundle=$env:AppxBundle
71 | /p:PackageCertificateKeyFile=$env:SigningCertificate
72 | /p:PackageCertificatePassword=${{ secrets.PFX_KEY_PASSWORD }}
73 | /p:AppxPackageTestDir="${{ env.PackageOutputRootDir }}\${{steps.getPackageName.outputs.PackageName}}\"
74 | /restore
75 |
76 | # Remove the .pf
77 | - name: Remove the .pfx
78 | run: Remove-Item -path $env:ProjectDirectory/$env:SigningCertificate
79 |
80 | # Clean the package
81 | - name: Clean package
82 | run: |
83 | $PackagePath = "${{ env.PackageOutputRootDir }}\${{steps.getPackageName.outputs.PackageName}}"
84 | Remove-Item -Recurse -path $PackagePath/Add-AppDevPackage.resources
85 | Remove-Item -Recurse -path $PackagePath/TelemetryDependencies
86 | Remove-Item -Recurse -path $PackagePath/Dependencies/arm
87 | Remove-Item -Recurse -path $PackagePath/Dependencies/arm64
88 | Remove-Item -Recurse -path $PackagePath/Dependencies/x86
89 | Remove-Item -path $PackagePath/Add-AppDevPackage.ps1
90 | Remove-Item -Recurse -path $PackagePath/Install.ps1
91 |
92 | # Archive the package
93 | - name: Create archive
94 | run: |
95 | $PackagePath = "${{ env.PackageOutputRootDir }}\${{steps.getPackageName.outputs.PackageName}}"
96 | Compress-Archive -Path $PackagePath\* -DestinationPath "$PackagePath.zip"
97 | dir "${{ env.PackageOutputRootDir }}"
98 |
99 | # Create the release: https://github.com/actions/create-release
100 | - name: Create release
101 | id: create_release
102 | uses: actions/create-release@v1
103 | env:
104 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
105 | with:
106 | tag_name: ${{steps.getPackageName.outputs.PackageName}}
107 | release_name: ${{steps.getPackageName.outputs.PackageName}}
108 | draft: false
109 | prerelease: false
110 |
111 | # Upload release asset: https://github.com/actions/upload-release-asset
112 | - name: Update release asset
113 | id: upload-release-asset
114 | uses: actions/upload-release-asset@v1
115 | env:
116 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
117 | with:
118 | upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
119 | asset_path: ${{ env.PackageOutputRootDir }}\${{steps.getPackageName.outputs.PackageName}}.zip
120 | asset_name: ${{steps.getPackageName.outputs.PackageName}}.zip
121 | asset_content_type: application/zip
122 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Aa][Rr][Mm]/
27 | [Aa][Rr][Mm]64/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 | [Ll]ogs/
33 |
34 | # Visual Studio 2015/2017 cache/options directory
35 | .vs/
36 | # Uncomment if you have tasks that create the project's static files in wwwroot
37 | #wwwroot/
38 |
39 | # Visual Studio 2017 auto generated files
40 | Generated\ Files/
41 |
42 | # MSTest test Results
43 | [Tt]est[Rr]esult*/
44 | [Bb]uild[Ll]og.*
45 |
46 | # NUnit
47 | *.VisualState.xml
48 | TestResult.xml
49 | nunit-*.xml
50 |
51 | # Build Results of an ATL Project
52 | [Dd]ebugPS/
53 | [Rr]eleasePS/
54 | dlldata.c
55 |
56 | # Benchmark Results
57 | BenchmarkDotNet.Artifacts/
58 |
59 | # .NET Core
60 | project.lock.json
61 | project.fragment.lock.json
62 | artifacts/
63 |
64 | # StyleCop
65 | StyleCopReport.xml
66 |
67 | # Files built by Visual Studio
68 | *_i.c
69 | *_p.c
70 | *_h.h
71 | *.ilk
72 | *.meta
73 | *.obj
74 | *.iobj
75 | *.pch
76 | *.pdb
77 | *.ipdb
78 | *.pgc
79 | *.pgd
80 | *.rsp
81 | *.sbr
82 | *.tlb
83 | *.tli
84 | *.tlh
85 | *.tmp
86 | *.tmp_proj
87 | *_wpftmp.csproj
88 | *.log
89 | *.vspscc
90 | *.vssscc
91 | .builds
92 | *.pidb
93 | *.svclog
94 | *.scc
95 |
96 | # Chutzpah Test files
97 | _Chutzpah*
98 |
99 | # Visual C++ cache files
100 | ipch/
101 | *.aps
102 | *.ncb
103 | *.opendb
104 | *.opensdf
105 | *.sdf
106 | *.cachefile
107 | *.VC.db
108 | *.VC.VC.opendb
109 |
110 | # Visual Studio profiler
111 | *.psess
112 | *.vsp
113 | *.vspx
114 | *.sap
115 |
116 | # Visual Studio Trace Files
117 | *.e2e
118 |
119 | # TFS 2012 Local Workspace
120 | $tf/
121 |
122 | # Guidance Automation Toolkit
123 | *.gpState
124 |
125 | # ReSharper is a .NET coding add-in
126 | _ReSharper*/
127 | *.[Rr]e[Ss]harper
128 | *.DotSettings.user
129 |
130 | # TeamCity is a build add-in
131 | _TeamCity*
132 |
133 | # DotCover is a Code Coverage Tool
134 | *.dotCover
135 |
136 | # AxoCover is a Code Coverage Tool
137 | .axoCover/*
138 | !.axoCover/settings.json
139 |
140 | # Visual Studio code coverage results
141 | *.coverage
142 | *.coveragexml
143 |
144 | # NCrunch
145 | _NCrunch_*
146 | .*crunch*.local.xml
147 | nCrunchTemp_*
148 |
149 | # MightyMoose
150 | *.mm.*
151 | AutoTest.Net/
152 |
153 | # Web workbench (sass)
154 | .sass-cache/
155 |
156 | # Installshield output folder
157 | [Ee]xpress/
158 |
159 | # DocProject is a documentation generator add-in
160 | DocProject/buildhelp/
161 | DocProject/Help/*.HxT
162 | DocProject/Help/*.HxC
163 | DocProject/Help/*.hhc
164 | DocProject/Help/*.hhk
165 | DocProject/Help/*.hhp
166 | DocProject/Help/Html2
167 | DocProject/Help/html
168 |
169 | # Click-Once directory
170 | publish/
171 |
172 | # Publish Web Output
173 | *.[Pp]ublish.xml
174 | *.azurePubxml
175 | # Note: Comment the next line if you want to checkin your web deploy settings,
176 | # but database connection strings (with potential passwords) will be unencrypted
177 | *.pubxml
178 | *.publishproj
179 |
180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
181 | # checkin your Azure Web App publish settings, but sensitive information contained
182 | # in these scripts will be unencrypted
183 | PublishScripts/
184 |
185 | # NuGet Packages
186 | *.nupkg
187 | # NuGet Symbol Packages
188 | *.snupkg
189 | # The packages folder can be ignored because of Package Restore
190 | **/[Pp]ackages/*
191 | # except build/, which is used as an MSBuild target.
192 | !**/[Pp]ackages/build/
193 | # Uncomment if necessary however generally it will be regenerated when needed
194 | #!**/[Pp]ackages/repositories.config
195 | # NuGet v3's project.json files produces more ignorable files
196 | *.nuget.props
197 | *.nuget.targets
198 |
199 | # Microsoft Azure Build Output
200 | csx/
201 | *.build.csdef
202 |
203 | # Microsoft Azure Emulator
204 | ecf/
205 | rcf/
206 |
207 | # Windows Store app package directories and files
208 | AppPackages/
209 | BundleArtifacts/
210 | Package.StoreAssociation.xml
211 | _pkginfo.txt
212 | *.appx
213 | *.appxbundle
214 | *.appxupload
215 |
216 | # Visual Studio cache files
217 | # files ending in .cache can be ignored
218 | *.[Cc]ache
219 | # but keep track of directories ending in .cache
220 | !?*.[Cc]ache/
221 |
222 | # Others
223 | ClientBin/
224 | ~$*
225 | *~
226 | *.dbmdl
227 | *.dbproj.schemaview
228 | *.jfm
229 | *.pfx
230 | *.publishsettings
231 | orleans.codegen.cs
232 |
233 | # Including strong name files can present a security risk
234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
235 | #*.snk
236 |
237 | # Since there are multiple workflows, uncomment next line to ignore bower_components
238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
239 | #bower_components/
240 |
241 | # RIA/Silverlight projects
242 | Generated_Code/
243 |
244 | # Backup & report files from converting an old project file
245 | # to a newer Visual Studio version. Backup files are not needed,
246 | # because we have git ;-)
247 | _UpgradeReport_Files/
248 | Backup*/
249 | UpgradeLog*.XML
250 | UpgradeLog*.htm
251 | ServiceFabricBackup/
252 | *.rptproj.bak
253 |
254 | # SQL Server files
255 | *.mdf
256 | *.ldf
257 | *.ndf
258 |
259 | # Business Intelligence projects
260 | *.rdl.data
261 | *.bim.layout
262 | *.bim_*.settings
263 | *.rptproj.rsuser
264 | *- [Bb]ackup.rdl
265 | *- [Bb]ackup ([0-9]).rdl
266 | *- [Bb]ackup ([0-9][0-9]).rdl
267 |
268 | # Microsoft Fakes
269 | FakesAssemblies/
270 |
271 | # GhostDoc plugin setting file
272 | *.GhostDoc.xml
273 |
274 | # Node.js Tools for Visual Studio
275 | .ntvs_analysis.dat
276 | node_modules/
277 |
278 | # Visual Studio 6 build log
279 | *.plg
280 |
281 | # Visual Studio 6 workspace options file
282 | *.opt
283 |
284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
285 | *.vbw
286 |
287 | # Visual Studio LightSwitch build output
288 | **/*.HTMLClient/GeneratedArtifacts
289 | **/*.DesktopClient/GeneratedArtifacts
290 | **/*.DesktopClient/ModelManifest.xml
291 | **/*.Server/GeneratedArtifacts
292 | **/*.Server/ModelManifest.xml
293 | _Pvt_Extensions
294 |
295 | # Paket dependency manager
296 | .paket/paket.exe
297 | paket-files/
298 |
299 | # FAKE - F# Make
300 | .fake/
301 |
302 | # CodeRush personal settings
303 | .cr/personal
304 |
305 | # Python Tools for Visual Studio (PTVS)
306 | __pycache__/
307 | *.pyc
308 |
309 | # Cake - Uncomment if you are using it
310 | # tools/**
311 | # !tools/packages.config
312 |
313 | # Tabs Studio
314 | *.tss
315 |
316 | # Telerik's JustMock configuration file
317 | *.jmconfig
318 |
319 | # BizTalk build output
320 | *.btp.cs
321 | *.btm.cs
322 | *.odx.cs
323 | *.xsd.cs
324 |
325 | # OpenCover UI analysis results
326 | OpenCover/
327 |
328 | # Azure Stream Analytics local run output
329 | ASALocalRun/
330 |
331 | # MSBuild Binary and Structured Log
332 | *.binlog
333 |
334 | # NVidia Nsight GPU debugger configuration file
335 | *.nvuser
336 |
337 | # MFractors (Xamarin productivity tool) working folder
338 | .mfractor/
339 |
340 | # Local History for Visual Studio
341 | .localhistory/
342 |
343 | # BeatPulse healthcheck temp database
344 | healthchecksdb
345 |
346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
347 | MigrationBackup/
348 |
349 | # Ionide (cross platform F# VS Code tools) working folder
350 | .ionide/
351 |
--------------------------------------------------------------------------------
/AUTHORS.md:
--------------------------------------------------------------------------------
1 | # RetroPass authors
2 |
3 | ## Development
4 | retropassdev
5 | SirMangler
6 | 𝔇𝔞𝔫𝔭142
7 |
8 | # Testing, QA
9 | JoKu
10 | Danp142
11 | John Birdflu
--------------------------------------------------------------------------------
/Docs/SettingsDataSources.md:
--------------------------------------------------------------------------------
1 | # Settings - Sources
2 |
3 | 1. If you didn't set up RetroPass before, you need to add a data source.
4 |
5 | 
6 |
7 | 1. Navigate to your LaunchBox or EmulationStation directory on external storage an click **Select** button.
8 |
9 | 
10 |
11 | 1. Set the name of this data source and click **Add** button
12 |
13 | 
14 |
15 | 1. RetroPass configuration file is automatically saved and added to the list of data sources. If your external drive is not formated to NTFS, configuration file might not be saved properly and in that case, you will need to create RetroPass.xml file manually.
16 |
17 | 
18 | 1. Click **Activate** button and then Back
19 | 1. You should see a list of platforms and content.
20 |
21 | **Delete Cache** deletes all cached thumbnails, but also removes data sources that are **Unavailable**.
22 |
23 |
24 | ## Advanced Setup - Multiple Data Sources
25 |
26 | RetroPass can be configured with more than one LaunchBox or EmulationStation data source. Here are a few example scenarios where you might find this setup useful:
27 | * You would like to connect two or more external storages. You have one USB stick that doesn't have enough free space and contains only a subset of your games. You also have a larger SSD where you keep the rest of your game collection.
28 | * You have a single SSD where you keep all your games. You would like to separate those into two data sources. One data source contains all your games and another one only games which are appropriate for players of all ages.
29 |
30 | For more information go to [Setup multiple data sources](/Docs/SetupMultipleDataSources.md)
31 |
--------------------------------------------------------------------------------
/Docs/SettingsLogging.md:
--------------------------------------------------------------------------------
1 | # Settings - Logging
2 |
3 | 
4 |
5 | 1. Go to Settings -> Logging and check **Enable Logging**.
6 | 2. Quit RetroPass and start it again.
7 | 3. Go to Settings -> Logging.
8 | 4. View log, scroll up and down and notice yellow warning and red error log entries.
9 | 5. Log file is also generated in the local RetroPass folder on Xbox which you can access through Xbox Device Portal.
10 |
11 | Make sure to **turn off** logging after troubleshooting, because writing to a log file slows down app performance.
12 |
--------------------------------------------------------------------------------
/Docs/SettingsPersonalization.md:
--------------------------------------------------------------------------------
1 | # Settings - Personalization
2 |
3 | 
4 |
5 | - **Mode** - Choose light or dark mode for UI.
6 | * **System** - use default Xbox theme
7 | * **Dark** - override Xbox theme, use dark mode
8 | * **Light** - override Xbox theme, use light mode
9 | - **Main Page Layout**
10 | * **Fixed** - Predefined width and height of items on the main page.
11 |

12 | * **Original Aspect** - Variable width, predefined height. The list becomes horizontally scrollable, up to 5 items.
13 | 
14 | - **Collection Page Layout**
15 | * **Fixed** - Predefined width and height of items on platform collection page.
16 |

17 | * **Original Aspect** - Variable width, predefined height, variable space between items. The number of items in a row is automatically determined by the width of the first image in the collection.
18 | 
19 | * **Group Aspect** - Variable width, predefined height, fixed space between items. The number of items in a row is predefined by the aspect ratio, utilizing row space as best as possible. In general, Group Aspect may display the same or more images in a row when compared to Original Aspect.
20 | 
21 | - **Collection Image Stretch**
22 | * **Uniform** - Fill by width, preserving aspect ratio. It can result in some empty space at the bottom of the area if the image aspect ratio is not the same as item aspect ratio.
23 |

24 | * **Fill** - Fill the whole area. Changes image aspect ratio. Images may look stretched.
25 | 
26 | * **Uniform To Fill** - Fill the whole area, preserving aspect ratio. Images may be zoomed in, cropping edge parts.
27 | 
28 | - **Auto Play Video** - If checked, automatically plays a video when content is selected.
29 | - **Play Full Screen Video** - If checked, plays larger game video.
30 | - **Mute Video**
31 | * **None** - Never mute video.
32 | * **On Auto Play** - Mute video only on auto play. If video is paused and then started manually, it plays the sound.
33 | * **Always** - Always mute video.
34 |
35 |
--------------------------------------------------------------------------------
/Docs/SetupDolphin.md:
--------------------------------------------------------------------------------
1 | # Dolphin
2 |
3 | ## Setup with LaunchBox
4 |
5 | 1. Open LaunchBox
6 | 2. Go to **Tools -> Manage... -> Emulators**
7 | 3. Click **Add** to add an emulator. Application Path doesn't have to point to real application. It's enough to just input something like:
8 | * **dolphin.exe**
9 | * **/random_path/dolphin.exe**
10 |
11 |

12 |
13 | 4. Click **Associated Platforms**, and make sure "Default Emulator" checkbox is checked for platforms which should be started with Dolphin. If "Default Emulator" is not checked, then RetroArch is used instead.
14 |
15 | 
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Docs/SetupDuckStation.md:
--------------------------------------------------------------------------------
1 | # DuckStation
2 |
3 | ## Setup with LaunchBox
4 |
5 | 1. Open LaunchBox
6 | 2. Go to **Tools -> Manage... -> Emulators**
7 | 3. Click **Add** to add an emulator. Application Path doesn't have to point to real application. It's enough to just input **duckstation**.
8 |
9 | 
10 |
11 | 4. Click **Associated Platforms**, and make sure "Default Emulator" checkbox is checked for platforms which should be started with DuckStation. If "Default Emulator" is not checked, then RetroArch is used instead.
12 |
13 | 
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Docs/SetupEmulationStation.md:
--------------------------------------------------------------------------------
1 | # Setup with Emulation Station
2 |
3 | If you do not wish to use LaunchBox, it is also possible to create Emulation Station compatible metadata source.
4 |
5 | 1. Setup and configure Emulation Station to work with RetroArch, preferably directly on external storage.
6 |
7 | 2. Download all images, descriptions and videos. There are various scrapers that can download assets from various databases and output to Emulation Station gamelist.xml files
8 |
9 | 3. [Download](/Docs/v1.6/RetroPass.xml) Retropass configuration file and copy it to the root of external storage.
10 |
11 | 4. Edit **RetroPass.xml** configuration file.
12 |
13 | **\** points to Emulation Station directory on the external storage. Do not put absolute path like "E:\EmulationStation", because when external storage is plugged into Xbox, it might be recognized under a different letter. For example, if EmulationStation folder is in the root of external storage, then it should be configured like this:
14 |
15 | ```XML
16 |
17 |
18 |
19 | Games
20 | EmulationStation
21 | ./EmulationStation
22 |
23 |
24 |
25 | ```
26 |
27 | 5. Check that **es_systems.cfg** file exists somewhere in the Emulation Station directory and that it has valid systems defined. i.e.
28 | - Ignore **\** property, it doesn't have to be properly set.
29 | - Make sure that **\** property for each system is properly configured. Paths are not important, as long as the core name is properly specified. RetroPass ignores everything in the command line except the core name. It knows how to properly pass it to RetroArch.
30 | - **\** is what is actually displayed in RetroPass as the name of the system.
31 | - In the example below, only relevant properties are shown:
32 |
33 | ```XML
34 |
35 | nes
36 | Nintendo Entertainment System
37 | -L %HOME%\\systems\nestopia_libretro.dll
38 | nes
39 |
40 | ```
41 | 6. Setup **gamelist.xml** for every system:
42 | - **gamelist.xml** must be in its own directory which equals system's **\** defined in **es_systems.cfg**. For example, based on the example in step 3, it is expected that for NES, it should be **/nes/gamelist.xml**.
43 | - All paths defined in **\**, **\**, **\**, **\