mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
Upgrade to .NET 8
Added a separate .NET 6 Windows build because .NET 8 is not available on Windows 7/8
This commit is contained in:
parent
a6ce34bdd8
commit
829c671d6a
7 changed files with 64 additions and 62 deletions
31
.github/workflows/build.yml
vendored
31
.github/workflows/build.yml
vendored
|
@ -3,14 +3,17 @@ name: Build Mesen
|
|||
on: [push]
|
||||
|
||||
env:
|
||||
# I'm not a fan of the telemetry as-is, but this also suppresses some lines in the build log.
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT: 1
|
||||
# This removes even more spurious lines.
|
||||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
|
||||
|
||||
jobs:
|
||||
windows:
|
||||
strategy:
|
||||
matrix:
|
||||
platform: [
|
||||
{netversion: 6.x, targetframework: net6.0},
|
||||
{netversion: 8.x, targetframework: net8.0}
|
||||
]
|
||||
fail-fast: false
|
||||
runs-on: windows-latest
|
||||
|
||||
|
@ -23,26 +26,26 @@ jobs:
|
|||
- name: Install .NET Core
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: 6.x
|
||||
dotnet-version: ${{ matrix.platform.netversion }}
|
||||
|
||||
- name: Setup MSBuild.exe
|
||||
uses: microsoft/setup-msbuild@v1.1
|
||||
with:
|
||||
msbuild-architecture: x64
|
||||
|
||||
- name: Execute unit tests
|
||||
run: dotnet test -nologo
|
||||
- name: Restore packages
|
||||
run: dotnet restore /p:TargetFramework="${{ matrix.platform.targetframework }}"
|
||||
|
||||
- name: Build Mesen
|
||||
run: msbuild -nologo -v:d -clp:ForceConsoleColor -m -p:Configuration=Release -p:Platform=x64 -t:Clean,UI
|
||||
run: msbuild -nologo -v:d -clp:ForceConsoleColor -m -p:Configuration=Release -p:Platform=x64 -t:Clean,UI /p:TargetFramework="${{ matrix.platform.targetframework }}"
|
||||
|
||||
- name: Publish Mesen
|
||||
run: dotnet publish -nologo -c Release /p:Platform="Any CPU" /p:OptimizeUi="true" Mesen.sln /p:PublishProfile=UI\Properties\PublishProfiles\Release.pubxml
|
||||
run: dotnet publish -nologo --no-restore -c Release /p:Platform="Any CPU" /p:OptimizeUi="true" /p:TargetFramework="${{ matrix.platform.targetframework }}" Mesen.sln /p:PublishProfile=UI\Properties\PublishProfiles\Release.pubxml
|
||||
|
||||
- name: Upload Mesen
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: Mesen (Windows)
|
||||
name: Mesen (Windows - ${{ matrix.platform.targetframework }})
|
||||
path: |
|
||||
build/TmpReleaseBuild/Mesen.exe
|
||||
|
||||
|
@ -73,16 +76,13 @@ jobs:
|
|||
- name: Install .NET Core
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: 6.x
|
||||
dotnet-version: 8.x
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update -qy
|
||||
sudo apt-get install -qy libsdl2-dev # The compilers are already installed on GitHub's runners.
|
||||
|
||||
- name: Execute unit tests
|
||||
run: dotnet test --nologo
|
||||
|
||||
# stderr is not detected as a TTY, so diagnostics are by default printed without colours;
|
||||
# forcing colours makes the log a little nicer to read.
|
||||
- name: Build Mesen
|
||||
|
@ -107,7 +107,7 @@ jobs:
|
|||
- name: Install .NET Core
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: 6.x
|
||||
dotnet-version: 8.x
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
|
@ -144,15 +144,12 @@ jobs:
|
|||
- name: Install .NET Core
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: 6.x
|
||||
dotnet-version: 8.x
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
brew install sdl2
|
||||
|
||||
- name: Execute unit tests
|
||||
run: dotnet test --nologo
|
||||
|
||||
# stderr is not detected as a TTY, so diagnostics are by default printed without colours;
|
||||
# forcing colours makes the log a little nicer to read.
|
||||
- name: Build Mesen
|
||||
|
|
42
README.md
42
README.md
|
@ -1,6 +1,6 @@
|
|||
# Mesen
|
||||
|
||||
Mesen is a multi-system emulator (NES, SNES, Game Boy, PC Engine, Master System/Game Gear) for Windows, Linux and macOS built in C++ and C#.
|
||||
Mesen is a multi-system emulator (NES, SNES, Game Boy, Game Boy Advance, PC Engine, Master System/Game Gear) for Windows, Linux and macOS built in C++ and C#.
|
||||
|
||||
## Development Builds
|
||||
|
||||
|
@ -8,47 +8,27 @@ Mesen is a multi-system emulator (NES, SNES, Game Boy, PC Engine, Master System/
|
|||
|
||||
Latest development builds:
|
||||
|
||||
* [Windows](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28Windows%29.zip)
|
||||
* [Windows 10 / 11 (.NET 8)](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28Windows%20-%20net8.0%29.zip)
|
||||
* [Windows 7 / 8 (.NET 6)](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28Windows%20-%20net6.0%29.zip)
|
||||
* [macOS - Intel](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28macOS%20-%20macos-12%29.zip)
|
||||
* [macOS - Apple Silicon](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28macOS%20-%20macos-14%29.zip)
|
||||
* [Linux](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28Linux%20-%20ubuntu-20.04%20-%20clang%29.zip)
|
||||
* [Linux - AppImage](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20(Linux%20x64%20-%20AppImage).zip)
|
||||
|
||||
#### Notes / limitations
|
||||
|
||||
**macOS**: The macOS build still has a number of limitations (e.g no gamepad support).
|
||||
|
||||
**SteamOS**: Running Mesen through the Steam Deck's _Game Mode_ is possible with some caveats regarding rendering the UI.
|
||||
<details>
|
||||
<summary>SteamOS instructions and caveats</summary>
|
||||
<br>
|
||||
Due to Gamescope (SteamOS' compositor) not handling Avalonia UI's popups very well (a [solution](https://github.com/AvaloniaUI/Avalonia/pull/14366) is available but [has been reverted due to other issues](https://github.com/AvaloniaUI/Avalonia/pull/14573)), Mesen's menus for settings are not working through Gamescope unless running Mesen [through running KDE Plasma's Desktop through a script](https://www.reddit.com/r/SteamDeck/comments/zqgx9g/desktop_mode_within_gaming_mode_updated_for_new/).
|
||||
|
||||
Installation instructions:
|
||||
* Download the **[Linux - AppImage](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20(Linux%20x64%20-%20AppImage).zip)** nightly build.
|
||||
* **Mark the AppImage as executable.** (right click > Properties > Permissions > Is executable)
|
||||
* Add the application as a non-Steam shortcut to be able to run it through Steam on both _Desktop Mode_ and _Game Mode_. (right click > Add to Steam)
|
||||
* Customise the non-Steam shortcut through Steam to your desire. (in Steam: search the AppImage's filename, right click > Properties; from there you can change the icon, shortcut name and launch options)
|
||||
* Create a folder called `Mesen.AppImage.Config` in the same directory where the AppImage is stored.
|
||||
* Run it the first time. When asking where to store the settings, choose the `Store the data in my user profile` option. 
|
||||
* Set up the controls as asked by Mesen.
|
||||
|
||||
**Due to Gamescope not rendering the UI menus, it is recommended to bind some keyboard shortcuts to L4/R4/L5/R5 (the Back Grip Buttons).** You can rebind controls in _Game Mode_ by clicking the Controller icon. You can save the layout by clicking the Cog icon (next to `Edit Layout`) > Export Layout > select `New Template` as the Export Type to use it across multiple shortcuts.
|
||||
It is recommended to:
|
||||
* Bind `Control Key + O Key` to open the file picker for opening a game file.
|
||||
* Bind `Escape Key` to pause emulation.
|
||||
* Bind `F11` to enter in or out of fullscreen.
|
||||
|
||||
**If sound does not work**, check if an audio device is chosen by Mesen. (in Mesen: Settings > Audio > General (Device))
|
||||
|
||||
**To make game-specific shortcuts**: Repeat the non-Steam shortcut step on the Mesen AppImage. Customise the new shortcut with a Launch Option (in Steam: right click > Properties; Launch Options). To find possible Launch Options, check the Command-line options menu (in Mesen: Help > Command-line options). When you want to supply a game with the shortcut, put the entire file location of the game in double quotes ("game-filepath") as the first part of the launch options. Add additional options (`--fullscreen` for example) _after_ the file location.
|
||||
</details>
|
||||
**SteamOS**: See [SteamOS.md](SteamOS.md)
|
||||
|
||||
## Requirements
|
||||
|
||||
To run Mesen, the following prerequisites must be installed:
|
||||
|
||||
**Windows**: [.NET 6 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/6.0)
|
||||
**Linux**: [.NET 6 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/6.0), SDL2
|
||||
**macOS**: [.NET 6 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/6.0), SDL2
|
||||
**Windows 10 / 11**: [.NET 8 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
|
||||
**Windows 7 / 8**: [.NET 6 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) (.NET 8 is not supported on Windows 7 / 8)
|
||||
**Linux**: [.NET 8 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/8.0), SDL2
|
||||
**macOS**: [.NET 8 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/8.0), SDL2
|
||||
|
||||
## Compiling
|
||||
|
||||
|
@ -58,7 +38,7 @@ See [COMPILING.md](COMPILING.md)
|
|||
|
||||
Mesen is available under the GPL V3 license. Full text here: <http://www.gnu.org/licenses/gpl-3.0.en.html>
|
||||
|
||||
Copyright (C) 2023 Sour
|
||||
Copyright (C) 2014-2024 Sour
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
21
SteamOS.md
Normal file
21
SteamOS.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
Running Mesen through the Steam Deck's _Game Mode_ is possible with some caveats regarding rendering the UI.
|
||||
Due to Gamescope (SteamOS' compositor) not handling Avalonia UI's popups very well (a [solution](https://github.com/AvaloniaUI/Avalonia/pull/14366) is available but [has been reverted due to other issues](https://github.com/AvaloniaUI/Avalonia/pull/14573)), Mesen's menus for settings are not working through Gamescope unless running Mesen [through running KDE Plasma's Desktop through a script](https://www.reddit.com/r/SteamDeck/comments/zqgx9g/desktop_mode_within_gaming_mode_updated_for_new/).
|
||||
|
||||
Installation instructions:
|
||||
* Download the **[Linux - AppImage](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20(Linux%20x64%20-%20AppImage).zip)** nightly build.
|
||||
* **Mark the AppImage as executable.** (right click > Properties > Permissions > Is executable)
|
||||
* Add the application as a non-Steam shortcut to be able to run it through Steam on both _Desktop Mode_ and _Game Mode_. (right click > Add to Steam)
|
||||
* Customise the non-Steam shortcut through Steam to your desire. (in Steam: search the AppImage's filename, right click > Properties; from there you can change the icon, shortcut name and launch options)
|
||||
* Create a folder called `Mesen.AppImage.Config` in the same directory where the AppImage is stored.
|
||||
* Run it the first time. When asking where to store the settings, choose the `Store the data in my user profile` option. 
|
||||
* Set up the controls as asked by Mesen.
|
||||
|
||||
**Due to Gamescope not rendering the UI menus, it is recommended to bind some keyboard shortcuts to L4/R4/L5/R5 (the Back Grip Buttons).** You can rebind controls in _Game Mode_ by clicking the Controller icon. You can save the layout by clicking the Cog icon (next to `Edit Layout`) > Export Layout > select `New Template` as the Export Type to use it across multiple shortcuts.
|
||||
It is recommended to:
|
||||
* Bind `Control Key + O Key` to open the file picker for opening a game file.
|
||||
* Bind `Escape Key` to pause emulation.
|
||||
* Bind `F11` to enter in or out of fullscreen.
|
||||
|
||||
**If sound does not work**, check if an audio device is chosen by Mesen. (in Mesen: Settings > Audio > General (Device))
|
||||
|
||||
**To make game-specific shortcuts**: Repeat the non-Steam shortcut step on the Mesen AppImage. Customise the new shortcut with a Launch Option (in Steam: right click > Properties; Launch Options). To find possible Launch Options, check the Command-line options menu (in Mesen: Help > Command-line options). When you want to supply a game with the shortcut, put the entire file location of the game in double quotes ("game-filepath") as the first part of the launch options. Add additional options (`--fullscreen` for example) _after_ the file location.
|
|
@ -710,6 +710,7 @@
|
|||
<Control ID="lblLink">www.mesen.ca</Control>
|
||||
<Control ID="lblVersion">Version:</Control>
|
||||
<Control ID="lblBuildDate">Build Date:</Control>
|
||||
<Control ID="lblRuntimeVersion">Runtime:</Control>
|
||||
|
||||
<Control ID="grpAcknowledgements">Acknowledgements</Control>
|
||||
<Control ID="lblAcknowledgeList">Thank you to the following people/projects for their direct and indirect help in making Mesen possible:</Control>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<Nullable>enable</Nullable>
|
||||
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
|
||||
|
|
|
@ -64,6 +64,10 @@
|
|||
<TextBlock Text="{l:Translate lblBuildDate}" Margin="0 0 5 0" />
|
||||
<TextBlock Text="{CompiledBinding BuildDate, ElementName=root}" />
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="3">
|
||||
<TextBlock Text="{l:Translate lblRuntimeVersion}" Margin="0 0 5 0" />
|
||||
<TextBlock Text="{CompiledBinding RuntimeVersion, ElementName=root}" />
|
||||
</StackPanel>
|
||||
<TextBlock Name="lblCopyright" Margin="3" />
|
||||
<StackPanel Orientation="Horizontal" Margin="3">
|
||||
<TextBlock Text="{l:Translate lblWebsite}" Margin="0 0 5 0" />
|
||||
|
@ -83,8 +87,8 @@
|
|||
</StackPanel>
|
||||
|
||||
<c:GroupBox Header="{l:Translate grpAcknowledgements}" Margin="5 5 5 0">
|
||||
<ScrollViewer AllowAutoHide="True">
|
||||
<StackPanel>
|
||||
<DockPanel>
|
||||
<StackPanel DockPanel.Dock="Top">
|
||||
<TextBlock Text="{l:Translate lblAcknowledgeList}" Margin="0 5 0 5" TextWrapping="Wrap" />
|
||||
<Border BorderBrush="Gray" BorderThickness="1">
|
||||
<ListBox
|
||||
|
@ -93,20 +97,17 @@
|
|||
ScrollViewer.AllowAutoHide="False"
|
||||
/>
|
||||
</Border>
|
||||
|
||||
<TextBlock Text="{l:Translate lblSpecialThanks}" Margin="0 5 0 5" TextWrapping="Wrap" />
|
||||
|
||||
<TextBlock Text="{l:Translate lblUsedSoftware}" Margin="0 15 0 5" />
|
||||
</StackPanel>
|
||||
|
||||
<Border BorderBrush="Gray" BorderThickness="1">
|
||||
<ListBox
|
||||
ItemsSource="{CompiledBinding LibraryList, ElementName=root}"
|
||||
Height="130"
|
||||
Background="Transparent"
|
||||
ScrollViewer.AllowAutoHide="False"
|
||||
/>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</DockPanel>
|
||||
</c:GroupBox>
|
||||
|
||||
</DockPanel>
|
||||
|
|
|
@ -33,6 +33,7 @@ namespace Mesen.Windows
|
|||
|
||||
public string Version { get; }
|
||||
public string BuildDate { get; }
|
||||
public string RuntimeVersion { get; }
|
||||
public List<AboutListEntry> LibraryList { get; }
|
||||
public List<AboutListEntry> AcknowledgeList { get; }
|
||||
|
||||
|
@ -40,6 +41,7 @@ namespace Mesen.Windows
|
|||
{
|
||||
Version = EmuApi.GetMesenVersion().ToString();
|
||||
BuildDate = EmuApi.GetMesenBuildDate();
|
||||
RuntimeVersion = ".NET " + Environment.Version;
|
||||
|
||||
LibraryList = new List<AboutListEntry>() {
|
||||
new("Avalonia", "", "MIT", "https://github.com/AvaloniaUI/Avalonia"),
|
||||
|
|
Loading…
Add table
Reference in a new issue