mirror of
https://github.com/cemu-project/Cemu.git
synced 2024-11-22 00:59:18 +01:00
Preparations for 2.1 (#1306)
This commit is contained in:
parent
d7f39aab05
commit
1234e2c118
9
.github/getversion.cpp
vendored
9
.github/getversion.cpp
vendored
@ -1,9 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include "./../src/Common/version.h"
|
|
||||||
|
|
||||||
// output current Cemu version for CI workflow. Do not modify
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
printf("%d.%d", EMULATOR_VERSION_LEAD, EMULATOR_VERSION_MAJOR);
|
|
||||||
return 0;
|
|
||||||
}
|
|
66
.github/workflows/build.yml
vendored
66
.github/workflows/build.yml
vendored
@ -3,10 +3,10 @@ name: Build Cemu
|
|||||||
on:
|
on:
|
||||||
workflow_call:
|
workflow_call:
|
||||||
inputs:
|
inputs:
|
||||||
deploymode:
|
next_version_major:
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
experimentalversion:
|
next_version_minor:
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
@ -24,25 +24,17 @@ jobs:
|
|||||||
submodules: "recursive"
|
submodules: "recursive"
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Setup release mode parameters (for deploy)
|
- name: Setup release mode parameters
|
||||||
if: ${{ inputs.deploymode == 'release' }}
|
|
||||||
run: |
|
run: |
|
||||||
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
||||||
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
||||||
echo "Build mode is release"
|
echo "Build mode is release"
|
||||||
|
|
||||||
- name: Setup debug mode parameters (for continous build)
|
- name: Setup build flags for version
|
||||||
if: ${{ inputs.deploymode != 'release' }}
|
if: ${{ inputs.next_version_major != '' }}
|
||||||
run: |
|
run: |
|
||||||
echo "BUILD_MODE=debug" >> $GITHUB_ENV
|
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
||||||
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
|
||||||
echo "Build mode is debug"
|
|
||||||
|
|
||||||
- name: Setup version for experimental
|
|
||||||
if: ${{ inputs.experimentalversion != '' }}
|
|
||||||
run: |
|
|
||||||
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
|
|
||||||
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: "Install system dependencies"
|
- name: "Install system dependencies"
|
||||||
run: |
|
run: |
|
||||||
@ -81,12 +73,10 @@ jobs:
|
|||||||
cmake --build build
|
cmake --build build
|
||||||
|
|
||||||
- name: Prepare artifact
|
- name: Prepare artifact
|
||||||
if: ${{ inputs.deploymode == 'release' }}
|
|
||||||
run: mv bin/Cemu_release bin/Cemu
|
run: mv bin/Cemu_release bin/Cemu
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
if: ${{ inputs.deploymode == 'release' }}
|
|
||||||
with:
|
with:
|
||||||
name: cemu-bin-linux-x64
|
name: cemu-bin-linux-x64
|
||||||
path: ./bin/Cemu
|
path: ./bin/Cemu
|
||||||
@ -128,24 +118,17 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
submodules: "recursive"
|
submodules: "recursive"
|
||||||
|
|
||||||
- name: Setup release mode parameters (for deploy)
|
- name: Setup release mode parameters
|
||||||
if: ${{ inputs.deploymode == 'release' }}
|
|
||||||
run: |
|
run: |
|
||||||
echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
echo "Build mode is release"
|
echo "Build mode is release"
|
||||||
|
|
||||||
- name: Setup debug mode parameters (for continous build)
|
- name: Setup build flags for version
|
||||||
if: ${{ inputs.deploymode != 'release' }}
|
if: ${{ inputs.next_version_major != '' }}
|
||||||
run: |
|
run: |
|
||||||
echo "BUILD_MODE=debug" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
||||||
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
echo "Build mode is debug"
|
|
||||||
- name: Setup version for experimental
|
|
||||||
if: ${{ inputs.experimentalversion != '' }}
|
|
||||||
run: |
|
|
||||||
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
|
|
||||||
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
|
||||||
|
|
||||||
- name: "Setup cmake"
|
- name: "Setup cmake"
|
||||||
uses: jwlawson/actions-setup-cmake@v2
|
uses: jwlawson/actions-setup-cmake@v2
|
||||||
@ -184,12 +167,10 @@ jobs:
|
|||||||
cmake --build . --config ${{ env.BUILD_MODE }}
|
cmake --build . --config ${{ env.BUILD_MODE }}
|
||||||
|
|
||||||
- name: Prepare artifact
|
- name: Prepare artifact
|
||||||
if: ${{ inputs.deploymode == 'release' }}
|
|
||||||
run: Rename-Item bin/Cemu_release.exe Cemu.exe
|
run: Rename-Item bin/Cemu_release.exe Cemu.exe
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
if: ${{ inputs.deploymode == 'release' }}
|
|
||||||
with:
|
with:
|
||||||
name: cemu-bin-windows-x64
|
name: cemu-bin-windows-x64
|
||||||
path: ./bin/Cemu.exe
|
path: ./bin/Cemu.exe
|
||||||
@ -202,24 +183,17 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
submodules: "recursive"
|
submodules: "recursive"
|
||||||
|
|
||||||
- name: Setup release mode parameters (for deploy)
|
- name: Setup release mode parameters
|
||||||
if: ${{ inputs.deploymode == 'release' }}
|
|
||||||
run: |
|
run: |
|
||||||
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
||||||
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
||||||
echo "Build mode is release"
|
echo "Build mode is release"
|
||||||
- name: Setup debug mode parameters (for continous build)
|
|
||||||
if: ${{ inputs.deploymode != 'release' }}
|
- name: Setup build flags for version
|
||||||
|
if: ${{ inputs.next_version_major != '' }}
|
||||||
run: |
|
run: |
|
||||||
echo "BUILD_MODE=debug" >> $GITHUB_ENV
|
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
||||||
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
|
||||||
echo "Build mode is debug"
|
|
||||||
|
|
||||||
- name: Setup version for experimental
|
|
||||||
if: ${{ inputs.experimentalversion != '' }}
|
|
||||||
run: |
|
|
||||||
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
|
|
||||||
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: "Install system dependencies"
|
- name: "Install system dependencies"
|
||||||
run: |
|
run: |
|
||||||
@ -275,7 +249,6 @@ jobs:
|
|||||||
cmake --build build
|
cmake --build build
|
||||||
|
|
||||||
- name: Prepare artifact
|
- name: Prepare artifact
|
||||||
if: ${{ inputs.deploymode == 'release' }}
|
|
||||||
run: |
|
run: |
|
||||||
mkdir bin/Cemu_app
|
mkdir bin/Cemu_app
|
||||||
mv bin/Cemu_release.app bin/Cemu_app/Cemu.app
|
mv bin/Cemu_release.app bin/Cemu_app/Cemu.app
|
||||||
@ -289,7 +262,6 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
if: ${{ inputs.deploymode == 'release' }}
|
|
||||||
with:
|
with:
|
||||||
name: cemu-bin-macos-x64
|
name: cemu-bin-macos-x64
|
||||||
path: ./bin/Cemu.dmg
|
path: ./bin/Cemu.dmg
|
||||||
|
3
.github/workflows/build_check.yml
vendored
3
.github/workflows/build_check.yml
vendored
@ -16,6 +16,3 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
uses: ./.github/workflows/build.yml
|
uses: ./.github/workflows/build.yml
|
||||||
with:
|
|
||||||
deploymode: release
|
|
||||||
experimentalversion: 999999
|
|
||||||
|
@ -1,20 +1,83 @@
|
|||||||
name: Deploy experimental release
|
name: Deploy experimental release
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
changelog0:
|
||||||
|
description: 'Enter the changelog lines for this release. Each line is a feature / bullet point. Do not use dash.'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
changelog1:
|
||||||
|
description: 'Feature 2'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
changelog2:
|
||||||
|
description: 'Feature 3'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
changelog3:
|
||||||
|
description: 'Feature 4'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
changelog4:
|
||||||
|
description: 'Feature 5'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
changelog5:
|
||||||
|
description: 'Feature 6'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
changelog6:
|
||||||
|
description: 'Feature 7'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
changelog7:
|
||||||
|
description: 'Feature 8'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
changelog8:
|
||||||
|
description: 'Feature 9'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
changelog9:
|
||||||
|
description: 'Feature 10'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
calculate-version:
|
||||||
|
name: Calculate Version
|
||||||
|
uses: ./.github/workflows/determine_release_version.yml
|
||||||
call-release-build:
|
call-release-build:
|
||||||
uses: ./.github/workflows/build.yml
|
uses: ./.github/workflows/build.yml
|
||||||
|
needs: calculate-version
|
||||||
with:
|
with:
|
||||||
deploymode: release
|
next_version_major: ${{ needs.calculate-version.outputs.next_version_major }}
|
||||||
experimentalversion: ${{ github.run_number }}
|
next_version_minor: ${{ needs.calculate-version.outputs.next_version_minor }}
|
||||||
deploy:
|
deploy:
|
||||||
name: Deploy experimental release
|
name: Deploy experimental release
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
needs: call-release-build
|
needs: [call-release-build, calculate-version]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Generate changelog
|
||||||
|
id: generate_changelog
|
||||||
|
run: |
|
||||||
|
CHANGELOG=""
|
||||||
|
if [ -n "${{ github.event.inputs.changelog0 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog0 }}\n"; fi
|
||||||
|
if [ -n "${{ github.event.inputs.changelog1 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog1 }}\n"; fi
|
||||||
|
if [ -n "${{ github.event.inputs.changelog2 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog2 }}\n"; fi
|
||||||
|
if [ -n "${{ github.event.inputs.changelog3 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog3 }}\n"; fi
|
||||||
|
if [ -n "${{ github.event.inputs.changelog4 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog4 }}\n"; fi
|
||||||
|
if [ -n "${{ github.event.inputs.changelog5 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog5 }}\n"; fi
|
||||||
|
if [ -n "${{ github.event.inputs.changelog6 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog6 }}\n"; fi
|
||||||
|
if [ -n "${{ github.event.inputs.changelog7 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog7 }}\n"; fi
|
||||||
|
if [ -n "${{ github.event.inputs.changelog8 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog8 }}\n"; fi
|
||||||
|
if [ -n "${{ github.event.inputs.changelog9 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog9 }}\n"; fi
|
||||||
|
echo -e "$CHANGELOG"
|
||||||
|
echo "RELEASE_BODY=$CHANGELOG" >> $GITHUB_ENV
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: cemu-bin-linux-x64
|
name: cemu-bin-linux-x64
|
||||||
@ -40,15 +103,13 @@ jobs:
|
|||||||
mkdir upload
|
mkdir upload
|
||||||
sudo apt install zip
|
sudo apt install zip
|
||||||
|
|
||||||
- name: Get version
|
- name: Set version dependent vars
|
||||||
run: |
|
run: |
|
||||||
echo "Experimental version: ${{ github.run_number }}"
|
echo "Version: ${{ needs.calculate-version.outputs.next_version }}"
|
||||||
ls
|
echo "CEMU_FOLDER_NAME=Cemu_${{ needs.calculate-version.outputs.next_version }}"
|
||||||
gcc -o getversion .github/getversion.cpp
|
echo "CEMU_VERSION=${{ needs.calculate-version.outputs.next_version }}"
|
||||||
./getversion
|
echo "CEMU_FOLDER_NAME=Cemu_${{ needs.calculate-version.outputs.next_version }}" >> $GITHUB_ENV
|
||||||
echo "Cemu CI version: $(./getversion)"
|
echo "CEMU_VERSION=${{ needs.calculate-version.outputs.next_version }}" >> $GITHUB_ENV
|
||||||
echo "CEMU_FOLDER_NAME=Cemu_$(./getversion)-${{ github.run_number }}" >> $GITHUB_ENV
|
|
||||||
echo "CEMU_VERSION=$(./getversion)-${{ github.run_number }}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Create release from windows-bin
|
- name: Create release from windows-bin
|
||||||
run: |
|
run: |
|
||||||
@ -83,4 +144,8 @@ jobs:
|
|||||||
wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz
|
wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz
|
||||||
tar xvzf ghr.tar.gz; rm ghr.tar.gz
|
tar xvzf ghr.tar.gz; rm ghr.tar.gz
|
||||||
echo "[INFO] Release tag: v${{ env.CEMU_VERSION }}"
|
echo "[INFO] Release tag: v${{ env.CEMU_VERSION }}"
|
||||||
ghr_v0.15.0_linux_amd64/ghr -prerelease -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }} (Experimental)" -b "Cemu experimental release" "v${{ env.CEMU_VERSION }}" ./upload
|
CHANGELOG_UNESCAPED=$(printf "%s\n" "${{ env.RELEASE_BODY }}" | sed 's/\\n/\n/g')
|
||||||
|
RELEASE_BODY=$(printf "%s\n%s" \
|
||||||
|
"**Changelog:**" \
|
||||||
|
"$CHANGELOG_UNESCAPED")
|
||||||
|
ghr_v0.15.0_linux_amd64/ghr -draft -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }}" -b "$RELEASE_BODY" "v${{ env.CEMU_VERSION }}" ./upload
|
||||||
|
74
.github/workflows/determine_release_version.yml
vendored
Normal file
74
.github/workflows/determine_release_version.yml
vendored
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
name: Calculate Next Version from release history
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
workflow_call:
|
||||||
|
outputs:
|
||||||
|
next_version:
|
||||||
|
description: "The next semantic version"
|
||||||
|
value: ${{ jobs.calculate-version.outputs.next_version }}
|
||||||
|
next_version_major:
|
||||||
|
description: "The next semantic version (major)"
|
||||||
|
value: ${{ jobs.calculate-version.outputs.next_version_major }}
|
||||||
|
next_version_minor:
|
||||||
|
description: "The next semantic version (minor)"
|
||||||
|
value: ${{ jobs.calculate-version.outputs.next_version_minor }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
calculate-version:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
next_version: ${{ steps.calculate_next_version.outputs.next_version }}
|
||||||
|
next_version_major: ${{ steps.calculate_next_version.outputs.next_version_major }}
|
||||||
|
next_version_minor: ${{ steps.calculate_next_version.outputs.next_version_minor }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Get all releases
|
||||||
|
id: get_all_releases
|
||||||
|
run: |
|
||||||
|
# Fetch all releases and check for API errors
|
||||||
|
RESPONSE=$(curl -s -o response.json -w "%{http_code}" "https://api.github.com/repos/${{ github.repository }}/releases?per_page=100")
|
||||||
|
if [ "$RESPONSE" -ne 200 ]; then
|
||||||
|
echo "Failed to fetch releases. HTTP status: $RESPONSE"
|
||||||
|
cat response.json
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extract and sort tags
|
||||||
|
ALL_TAGS=$(jq -r '.[].tag_name' response.json | grep -E '^v[0-9]+\.[0-9]+(-[0-9]+)?$' | sed 's/-.*//' | sort -V | tail -n 1)
|
||||||
|
|
||||||
|
# Exit if no tags were found
|
||||||
|
if [ -z "$ALL_TAGS" ]; then
|
||||||
|
echo "No valid tags found."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "::set-output name=tag::$ALL_TAGS"
|
||||||
|
# echo "tag=$ALL_TAGS" >> $GITHUB_STATE
|
||||||
|
|
||||||
|
- name: Calculate next semver minor
|
||||||
|
id: calculate_next_version
|
||||||
|
run: |
|
||||||
|
LATEST_VERSION=${{ steps.get_all_releases.outputs.tag }}
|
||||||
|
|
||||||
|
# strip 'v' prefix and split into major.minor
|
||||||
|
LATEST_VERSION=${LATEST_VERSION//v/}
|
||||||
|
IFS='.' read -r -a VERSION_PARTS <<< "$LATEST_VERSION"
|
||||||
|
|
||||||
|
MAJOR=${VERSION_PARTS[0]}
|
||||||
|
MINOR=${VERSION_PARTS[1]}
|
||||||
|
|
||||||
|
# increment the minor version
|
||||||
|
MINOR=$((MINOR + 1))
|
||||||
|
|
||||||
|
NEXT_VERSION="${MAJOR}.${MINOR}"
|
||||||
|
|
||||||
|
echo "Major: $MAJOR"
|
||||||
|
echo "Minor: $MINOR"
|
||||||
|
|
||||||
|
echo "Next version: $NEXT_VERSION"
|
||||||
|
echo "::set-output name=next_version::$NEXT_VERSION"
|
||||||
|
echo "::set-output name=next_version_major::$MAJOR"
|
||||||
|
echo "::set-output name=next_version_minor::$MINOR"
|
@ -2,18 +2,19 @@ cmake_minimum_required(VERSION 3.21.1)
|
|||||||
|
|
||||||
option(ENABLE_VCPKG "Enable the vcpkg package manager" ON)
|
option(ENABLE_VCPKG "Enable the vcpkg package manager" ON)
|
||||||
option(MACOS_BUNDLE "The executable when built on macOS will be created as an application bundle" OFF)
|
option(MACOS_BUNDLE "The executable when built on macOS will be created as an application bundle" OFF)
|
||||||
set(EXPERIMENTAL_VERSION "" CACHE STRING "") # used by CI script to set experimental version
|
|
||||||
|
|
||||||
if (EXPERIMENTAL_VERSION)
|
# used by CI script to set version:
|
||||||
add_definitions(-DEMULATOR_VERSION_MINOR=${EXPERIMENTAL_VERSION})
|
set(EMULATOR_VERSION_MAJOR "0" CACHE STRING "")
|
||||||
execute_process(
|
set(EMULATOR_VERSION_MINOR "0" CACHE STRING "")
|
||||||
COMMAND git log --format=%h -1
|
set(EMULATOR_VERSION_PATCH "0" CACHE STRING "")
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
|
||||||
OUTPUT_VARIABLE GIT_HASH
|
execute_process(
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
COMMAND git log --format=%h -1
|
||||||
)
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||||
add_definitions(-DEMULATOR_HASH=${GIT_HASH})
|
OUTPUT_VARIABLE GIT_HASH
|
||||||
endif()
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
add_definitions(-DEMULATOR_HASH=${GIT_HASH})
|
||||||
|
|
||||||
if (ENABLE_VCPKG)
|
if (ENABLE_VCPKG)
|
||||||
# check if vcpkg is shallow and unshallow it if necessary
|
# check if vcpkg is shallow and unshallow it if necessary
|
||||||
@ -62,6 +63,10 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|||||||
|
|
||||||
add_compile_definitions($<$<CONFIG:Debug>:CEMU_DEBUG_ASSERT>) # if build type is debug, set CEMU_DEBUG_ASSERT
|
add_compile_definitions($<$<CONFIG:Debug>:CEMU_DEBUG_ASSERT>) # if build type is debug, set CEMU_DEBUG_ASSERT
|
||||||
|
|
||||||
|
add_definitions(-DEMULATOR_VERSION_MAJOR=${EMULATOR_VERSION_MAJOR})
|
||||||
|
add_definitions(-DEMULATOR_VERSION_MINOR=${EMULATOR_VERSION_MINOR})
|
||||||
|
add_definitions(-DEMULATOR_VERSION_PATCH=${EMULATOR_VERSION_PATCH})
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
|
|
||||||
# enable link time optimization for release builds
|
# enable link time optimization for release builds
|
||||||
|
@ -524,7 +524,7 @@ void LatteSHRC_UpdateGSBaseHash(uint8* geometryShaderPtr, uint32 geometryShaderS
|
|||||||
// update hash from geometry shader data
|
// update hash from geometry shader data
|
||||||
uint64 gsHash1 = 0;
|
uint64 gsHash1 = 0;
|
||||||
uint64 gsHash2 = 0;
|
uint64 gsHash2 = 0;
|
||||||
_calculateShaderProgramHash((uint32*)geometryShaderPtr, geometryShaderSize, &hashCacheVS, &gsHash1, &gsHash2);
|
_calculateShaderProgramHash((uint32*)geometryShaderPtr, geometryShaderSize, &hashCacheGS, &gsHash1, &gsHash2);
|
||||||
// get geometry shader
|
// get geometry shader
|
||||||
uint64 gsHash = gsHash1 + gsHash2;
|
uint64 gsHash = gsHash1 + gsHash2;
|
||||||
gsHash += (uint64)_activeVertexShader->ringParameterCount;
|
gsHash += (uint64)_activeVertexShader->ringParameterCount;
|
||||||
|
@ -12,9 +12,9 @@ uint32 RendererShader::GeneratePrecompiledCacheId()
|
|||||||
v += (uint32)(*s);
|
v += (uint32)(*s);
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
v += (EMULATOR_VERSION_LEAD * 1000000u);
|
v += (EMULATOR_VERSION_MAJOR * 1000000u);
|
||||||
v += (EMULATOR_VERSION_MAJOR * 10000u);
|
v += (EMULATOR_VERSION_MINOR * 10000u);
|
||||||
v += (EMULATOR_VERSION_MINOR * 100u);
|
v += (EMULATOR_VERSION_PATCH * 100u);
|
||||||
|
|
||||||
// settings that can influence shaders
|
// settings that can influence shaders
|
||||||
v += (uint32)g_current_game_profile->GetAccurateShaderMul() * 133;
|
v += (uint32)g_current_game_profile->GetAccurateShaderMul() * 133;
|
||||||
|
@ -125,7 +125,7 @@ std::vector<VulkanRenderer::DeviceInfo> VulkanRenderer::GetDevices()
|
|||||||
VkApplicationInfo app_info{};
|
VkApplicationInfo app_info{};
|
||||||
app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
|
app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
|
||||||
app_info.pApplicationName = EMULATOR_NAME;
|
app_info.pApplicationName = EMULATOR_NAME;
|
||||||
app_info.applicationVersion = VK_MAKE_VERSION(EMULATOR_VERSION_LEAD, EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR);
|
app_info.applicationVersion = VK_MAKE_VERSION(EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR, EMULATOR_VERSION_PATCH);
|
||||||
app_info.pEngineName = EMULATOR_NAME;
|
app_info.pEngineName = EMULATOR_NAME;
|
||||||
app_info.engineVersion = app_info.applicationVersion;
|
app_info.engineVersion = app_info.applicationVersion;
|
||||||
app_info.apiVersion = apiVersion;
|
app_info.apiVersion = apiVersion;
|
||||||
@ -339,7 +339,7 @@ VulkanRenderer::VulkanRenderer()
|
|||||||
VkApplicationInfo app_info{};
|
VkApplicationInfo app_info{};
|
||||||
app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
|
app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
|
||||||
app_info.pApplicationName = EMULATOR_NAME;
|
app_info.pApplicationName = EMULATOR_NAME;
|
||||||
app_info.applicationVersion = VK_MAKE_VERSION(EMULATOR_VERSION_LEAD, EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR);
|
app_info.applicationVersion = VK_MAKE_VERSION(EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR, EMULATOR_VERSION_PATCH);
|
||||||
app_info.pEngineName = EMULATOR_NAME;
|
app_info.pEngineName = EMULATOR_NAME;
|
||||||
app_info.engineVersion = app_info.applicationVersion;
|
app_info.engineVersion = app_info.applicationVersion;
|
||||||
app_info.apiVersion = apiVersion;
|
app_info.apiVersion = apiVersion;
|
||||||
|
@ -140,7 +140,7 @@ namespace coreinit
|
|||||||
// we are in single-core mode and the lock will never be released unless we let other threads resume work
|
// we are in single-core mode and the lock will never be released unless we let other threads resume work
|
||||||
// to avoid an infinite loop we have no choice but to yield the thread even it is in an uninterruptible state
|
// to avoid an infinite loop we have no choice but to yield the thread even it is in an uninterruptible state
|
||||||
if( !OSIsInterruptEnabled() )
|
if( !OSIsInterruptEnabled() )
|
||||||
cemuLog_log(LogType::APIErrors, "OSUninterruptibleSpinLock_Acquire(): Lock is occupied which requires a wait but current thread is already in an uninterruptible state (Avoid cascaded OSDisableInterrupts and/or OSUninterruptibleSpinLock)");
|
cemuLog_logOnce(LogType::APIErrors, "OSUninterruptibleSpinLock_Acquire(): Lock is occupied which requires a wait but current thread is already in an uninterruptible state (Avoid cascaded OSDisableInterrupts and/or OSUninterruptibleSpinLock)");
|
||||||
while (!spinlock->ownerThread.atomic_compare_exchange(nullptr, currentThread))
|
while (!spinlock->ownerThread.atomic_compare_exchange(nullptr, currentThread))
|
||||||
{
|
{
|
||||||
OSYieldThread();
|
OSYieldThread();
|
||||||
|
@ -1,36 +1,19 @@
|
|||||||
#ifndef EMULATOR_NAME
|
#ifndef EMULATOR_NAME
|
||||||
|
|
||||||
#define EMULATOR_NAME "Cemu"
|
#define EMULATOR_NAME "Cemu"
|
||||||
#define EMULATOR_VERSION_LEAD 2
|
|
||||||
#define EMULATOR_VERSION_MAJOR 0
|
|
||||||
|
|
||||||
// the minor version is used for experimental builds to indicate the build index. Set by command line option from CI build script
|
|
||||||
// if zero, the version text will be constructed as LEAD.MAJOR, otherwise as LEAD.MAJOR-MINOR
|
|
||||||
|
|
||||||
#if defined(EMULATOR_VERSION_MINOR) && EMULATOR_VERSION_MINOR == 0
|
|
||||||
#define EMULATOR_VERSION_SUFFIX ""
|
#define EMULATOR_VERSION_SUFFIX ""
|
||||||
#else
|
|
||||||
#define EMULATOR_VERSION_SUFFIX " (experimental)"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef EMULATOR_VERSION_MINOR
|
|
||||||
#define EMULATOR_VERSION_MINOR 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define _XSTRINGFY(s) _STRINGFY(s)
|
#define _XSTRINGFY(s) _STRINGFY(s)
|
||||||
#define _STRINGFY(s) #s
|
#define _STRINGFY(s) #s
|
||||||
|
|
||||||
#if EMULATOR_VERSION_MINOR != 0
|
#if EMULATOR_VERSION_MAJOR != 0
|
||||||
#if defined(EMULATOR_HASH) && EMULATOR_VERSION_MINOR == 999999
|
#define BUILD_VERSION_WITH_NAME_STRING (EMULATOR_NAME " " _XSTRINGFY(EMULATOR_VERSION_MAJOR) "." _XSTRINGFY(EMULATOR_VERSION_MINOR) EMULATOR_VERSION_SUFFIX)
|
||||||
#define BUILD_VERSION_WITH_NAME_STRING (EMULATOR_NAME " " _XSTRINGFY(EMULATOR_VERSION_LEAD) "." _XSTRINGFY(EMULATOR_VERSION_MAJOR) "-" _XSTRINGFY(EMULATOR_HASH) EMULATOR_VERSION_SUFFIX)
|
#define BUILD_VERSION_STRING (_XSTRINGFY(EMULATOR_VERSION_MAJOR) "." _XSTRINGFY(EMULATOR_VERSION_MINOR) EMULATOR_VERSION_SUFFIX)
|
||||||
#define BUILD_VERSION_STRING (_XSTRINGFY(EMULATOR_VERSION_LEAD) "." _XSTRINGFY(EMULATOR_VERSION_MAJOR) "-" _XSTRINGFY(EMULATOR_HASH) EMULATOR_VERSION_SUFFIX)
|
|
||||||
#else
|
#else
|
||||||
#define BUILD_VERSION_WITH_NAME_STRING (EMULATOR_NAME " " _XSTRINGFY(EMULATOR_VERSION_LEAD) "." _XSTRINGFY(EMULATOR_VERSION_MAJOR) "-" _XSTRINGFY(EMULATOR_VERSION_MINOR) EMULATOR_VERSION_SUFFIX)
|
// no version provided. Only show commit hash
|
||||||
#define BUILD_VERSION_STRING (_XSTRINGFY(EMULATOR_VERSION_LEAD) "." _XSTRINGFY(EMULATOR_VERSION_MAJOR) "-" _XSTRINGFY(EMULATOR_VERSION_MINOR) EMULATOR_VERSION_SUFFIX)
|
#define BUILD_VERSION_STRING (_XSTRINGFY(EMULATOR_HASH) EMULATOR_VERSION_SUFFIX)
|
||||||
#endif
|
#define BUILD_VERSION_WITH_NAME_STRING (EMULATOR_NAME " " _XSTRINGFY(EMULATOR_HASH) EMULATOR_VERSION_SUFFIX)
|
||||||
#else
|
|
||||||
#define BUILD_VERSION_STRING (_XSTRINGFY(EMULATOR_VERSION_LEAD) "." _XSTRINGFY(EMULATOR_VERSION_MAJOR) EMULATOR_VERSION_SUFFIX)
|
|
||||||
#define BUILD_VERSION_WITH_NAME_STRING (EMULATOR_NAME " " _XSTRINGFY(EMULATOR_VERSION_LEAD) "." _XSTRINGFY(EMULATOR_VERSION_MAJOR) EMULATOR_VERSION_SUFFIX)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -38,6 +38,7 @@ void CemuConfig::Load(XMLConfigParser& parser)
|
|||||||
fullscreen_menubar = parser.get("fullscreen_menubar", false);
|
fullscreen_menubar = parser.get("fullscreen_menubar", false);
|
||||||
feral_gamemode = parser.get("feral_gamemode", false);
|
feral_gamemode = parser.get("feral_gamemode", false);
|
||||||
check_update = parser.get("check_update", check_update);
|
check_update = parser.get("check_update", check_update);
|
||||||
|
receive_untested_updates = parser.get("receive_untested_updates", check_update);
|
||||||
save_screenshot = parser.get("save_screenshot", save_screenshot);
|
save_screenshot = parser.get("save_screenshot", save_screenshot);
|
||||||
did_show_vulkan_warning = parser.get("vk_warning", did_show_vulkan_warning);
|
did_show_vulkan_warning = parser.get("vk_warning", did_show_vulkan_warning);
|
||||||
did_show_graphic_pack_download = parser.get("gp_download", did_show_graphic_pack_download);
|
did_show_graphic_pack_download = parser.get("gp_download", did_show_graphic_pack_download);
|
||||||
@ -360,6 +361,7 @@ void CemuConfig::Save(XMLConfigParser& parser)
|
|||||||
config.set<bool>("fullscreen_menubar", fullscreen_menubar);
|
config.set<bool>("fullscreen_menubar", fullscreen_menubar);
|
||||||
config.set<bool>("feral_gamemode", feral_gamemode);
|
config.set<bool>("feral_gamemode", feral_gamemode);
|
||||||
config.set<bool>("check_update", check_update);
|
config.set<bool>("check_update", check_update);
|
||||||
|
config.set<bool>("receive_untested_updates", receive_untested_updates);
|
||||||
config.set<bool>("save_screenshot", save_screenshot);
|
config.set<bool>("save_screenshot", save_screenshot);
|
||||||
config.set<bool>("vk_warning", did_show_vulkan_warning);
|
config.set<bool>("vk_warning", did_show_vulkan_warning);
|
||||||
config.set<bool>("gp_download", did_show_graphic_pack_download);
|
config.set<bool>("gp_download", did_show_graphic_pack_download);
|
||||||
|
@ -413,7 +413,8 @@ struct CemuConfig
|
|||||||
Vector2i pad_size{ -1,-1 };
|
Vector2i pad_size{ -1,-1 };
|
||||||
ConfigValue<bool> pad_maximized;
|
ConfigValue<bool> pad_maximized;
|
||||||
|
|
||||||
ConfigValue<bool> check_update{false};
|
ConfigValue<bool> check_update{true};
|
||||||
|
ConfigValue<bool> receive_untested_updates{false};
|
||||||
ConfigValue<bool> save_screenshot{true};
|
ConfigValue<bool> save_screenshot{true};
|
||||||
|
|
||||||
ConfigValue<bool> did_show_vulkan_warning{false};
|
ConfigValue<bool> did_show_vulkan_warning{false};
|
||||||
|
@ -112,10 +112,10 @@ bool LaunchSettings::HandleCommandline(const std::vector<std::wstring>& args)
|
|||||||
{
|
{
|
||||||
requireConsole();
|
requireConsole();
|
||||||
std::string versionStr;
|
std::string versionStr;
|
||||||
#if EMULATOR_VERSION_MINOR == 0
|
#if EMULATOR_VERSION_PATCH == 0
|
||||||
versionStr = fmt::format("{}.{}{}", EMULATOR_VERSION_LEAD, EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_SUFFIX);
|
versionStr = fmt::format("{}.{}{}", EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR, EMULATOR_VERSION_SUFFIX);
|
||||||
#else
|
#else
|
||||||
versionStr = fmt::format("{}.{}-{}{}", EMULATOR_VERSION_LEAD, EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR, EMULATOR_VERSION_SUFFIX);
|
versionStr = fmt::format("{}.{}-{}{}", EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR, EMULATOR_VERSION_PATCH, EMULATOR_VERSION_SUFFIX);
|
||||||
#endif
|
#endif
|
||||||
std::cout << versionStr << std::endl;
|
std::cout << versionStr << std::endl;
|
||||||
return false; // exit in main
|
return false; // exit in main
|
||||||
|
@ -116,9 +116,11 @@ bool CemuUpdateWindow::QueryUpdateInfo(std::string& downloadUrlOut, std::string&
|
|||||||
#elif BOOST_OS_MACOS
|
#elif BOOST_OS_MACOS
|
||||||
urlStr.append("&platform=macos_bundle_x86");
|
urlStr.append("&platform=macos_bundle_x86");
|
||||||
#elif
|
#elif
|
||||||
|
|
||||||
#error Name for current platform is missing
|
#error Name for current platform is missing
|
||||||
#endif
|
#endif
|
||||||
|
const auto& config = GetConfig();
|
||||||
|
if(config.receive_untested_updates)
|
||||||
|
urlStr.append("&allowNewUpdates=1");
|
||||||
|
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, urlStr.c_str());
|
curl_easy_setopt(curl, CURLOPT_URL, urlStr.c_str());
|
||||||
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
|
||||||
|
@ -115,7 +115,7 @@ void DownloadGraphicPacksWindow::UpdateThread()
|
|||||||
curlDownloadFileState_t tempDownloadState;
|
curlDownloadFileState_t tempDownloadState;
|
||||||
std::string queryUrl("https://cemu.info/api2/query_graphicpack_url.php?");
|
std::string queryUrl("https://cemu.info/api2/query_graphicpack_url.php?");
|
||||||
char temp[64];
|
char temp[64];
|
||||||
sprintf(temp, "version=%d.%d.%d", EMULATOR_VERSION_LEAD, EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR);
|
sprintf(temp, "version=%d.%d.%d", EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR, EMULATOR_VERSION_PATCH);
|
||||||
queryUrl.append(temp);
|
queryUrl.append(temp);
|
||||||
queryUrl.append("&");
|
queryUrl.append("&");
|
||||||
sprintf(temp, "t=%u", (uint32)std::chrono::seconds(std::time(NULL)).count()); // add a dynamic part to the url to bypass overly aggressive caching (like some proxies do)
|
sprintf(temp, "t=%u", (uint32)std::chrono::seconds(std::time(NULL)).count()); // add a dynamic part to the url to bypass overly aggressive caching (like some proxies do)
|
||||||
|
@ -141,49 +141,66 @@ wxPanel* GeneralSettings2::AddGeneralPage(wxNotebook* notebook)
|
|||||||
second_row->SetFlexibleDirection(wxBOTH);
|
second_row->SetFlexibleDirection(wxBOTH);
|
||||||
second_row->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
|
second_row->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
|
||||||
|
|
||||||
|
sint32 checkboxCount = 0;
|
||||||
|
auto CountRowElement = [&]()
|
||||||
|
{
|
||||||
|
checkboxCount++;
|
||||||
|
if(checkboxCount != 2)
|
||||||
|
return;
|
||||||
|
second_row->AddSpacer(10);
|
||||||
|
checkboxCount = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto InsertEmptyRow = [&]()
|
||||||
|
{
|
||||||
|
while(checkboxCount != 0)
|
||||||
|
CountRowElement();
|
||||||
|
second_row->AddSpacer(10);
|
||||||
|
second_row->AddSpacer(10);
|
||||||
|
second_row->AddSpacer(10);
|
||||||
|
};
|
||||||
|
|
||||||
const int topflag = wxALIGN_CENTER_VERTICAL | wxALL;
|
const int topflag = wxALIGN_CENTER_VERTICAL | wxALL;
|
||||||
m_save_window_position_size = new wxCheckBox(box, wxID_ANY, _("Remember main window position"));
|
m_save_window_position_size = new wxCheckBox(box, wxID_ANY, _("Remember main window position"));
|
||||||
m_save_window_position_size->SetToolTip(_("Restores the last known window position and size when starting Cemu"));
|
m_save_window_position_size->SetToolTip(_("Restores the last known window position and size when starting Cemu"));
|
||||||
second_row->Add(m_save_window_position_size, 0, topflag, 5);
|
second_row->Add(m_save_window_position_size, 0, topflag, 5);
|
||||||
second_row->AddSpacer(10);
|
CountRowElement();
|
||||||
|
//second_row->AddSpacer(10);
|
||||||
m_save_padwindow_position_size = new wxCheckBox(box, wxID_ANY, _("Remember pad window position"));
|
m_save_padwindow_position_size = new wxCheckBox(box, wxID_ANY, _("Remember pad window position"));
|
||||||
m_save_padwindow_position_size->SetToolTip(_("Restores the last known pad window position and size when opening it"));
|
m_save_padwindow_position_size->SetToolTip(_("Restores the last known pad window position and size when opening it"));
|
||||||
second_row->Add(m_save_padwindow_position_size, 0, topflag, 5);
|
second_row->Add(m_save_padwindow_position_size, 0, topflag, 5);
|
||||||
|
CountRowElement();
|
||||||
|
|
||||||
const int botflag = wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT | wxBOTTOM;
|
const int botflag = wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT | wxBOTTOM;
|
||||||
m_discord_presence = new wxCheckBox(box, wxID_ANY, _("Discord Presence"));
|
m_discord_presence = new wxCheckBox(box, wxID_ANY, _("Discord Presence"));
|
||||||
m_discord_presence->SetToolTip(_("Enables the Discord Rich Presence feature\nYou will also need to enable it in the Discord settings itself!"));
|
m_discord_presence->SetToolTip(_("Enables the Discord Rich Presence feature\nYou will also need to enable it in the Discord settings itself!"));
|
||||||
second_row->Add(m_discord_presence, 0, botflag, 5);
|
second_row->Add(m_discord_presence, 0, botflag, 5);
|
||||||
|
CountRowElement();
|
||||||
#ifndef ENABLE_DISCORD_RPC
|
#ifndef ENABLE_DISCORD_RPC
|
||||||
m_discord_presence->Disable();
|
m_discord_presence->Disable();
|
||||||
#endif
|
#endif
|
||||||
second_row->AddSpacer(10);
|
//second_row->AddSpacer(10);
|
||||||
m_fullscreen_menubar = new wxCheckBox(box, wxID_ANY, _("Fullscreen menu bar"));
|
m_fullscreen_menubar = new wxCheckBox(box, wxID_ANY, _("Fullscreen menu bar"));
|
||||||
m_fullscreen_menubar->SetToolTip(_("Displays the menu bar when Cemu is running in fullscreen mode and the mouse cursor is moved to the top"));
|
m_fullscreen_menubar->SetToolTip(_("Displays the menu bar when Cemu is running in fullscreen mode and the mouse cursor is moved to the top"));
|
||||||
second_row->Add(m_fullscreen_menubar, 0, botflag, 5);
|
second_row->Add(m_fullscreen_menubar, 0, botflag, 5);
|
||||||
|
CountRowElement();
|
||||||
|
|
||||||
m_auto_update = new wxCheckBox(box, wxID_ANY, _("Automatically check for updates"));
|
|
||||||
m_auto_update->SetToolTip(_("Automatically checks for new cemu versions on startup"));
|
|
||||||
second_row->Add(m_auto_update, 0, botflag, 5);
|
|
||||||
#if BOOST_OS_LINUX
|
|
||||||
if (!std::getenv("APPIMAGE")) {
|
|
||||||
m_auto_update->Disable();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
second_row->AddSpacer(10);
|
|
||||||
m_save_screenshot = new wxCheckBox(box, wxID_ANY, _("Save screenshot"));
|
m_save_screenshot = new wxCheckBox(box, wxID_ANY, _("Save screenshot"));
|
||||||
m_save_screenshot->SetToolTip(_("Pressing the screenshot key (F12) will save a screenshot directly to the screenshots folder"));
|
m_save_screenshot->SetToolTip(_("Pressing the screenshot key (F12) will save a screenshot directly to the screenshots folder"));
|
||||||
second_row->Add(m_save_screenshot, 0, botflag, 5);
|
second_row->Add(m_save_screenshot, 0, botflag, 5);
|
||||||
|
CountRowElement();
|
||||||
|
|
||||||
m_disable_screensaver = new wxCheckBox(box, wxID_ANY, _("Disable screen saver"));
|
m_disable_screensaver = new wxCheckBox(box, wxID_ANY, _("Disable screen saver"));
|
||||||
m_disable_screensaver->SetToolTip(_("Prevents the system from activating the screen saver or going to sleep while running a game."));
|
m_disable_screensaver->SetToolTip(_("Prevents the system from activating the screen saver or going to sleep while running a game."));
|
||||||
second_row->Add(m_disable_screensaver, 0, botflag, 5);
|
second_row->Add(m_disable_screensaver, 0, botflag, 5);
|
||||||
|
CountRowElement();
|
||||||
|
|
||||||
// Enable/disable feral interactive gamemode
|
// Enable/disable feral interactive gamemode
|
||||||
#if BOOST_OS_LINUX && defined(ENABLE_FERAL_GAMEMODE)
|
#if BOOST_OS_LINUX && defined(ENABLE_FERAL_GAMEMODE)
|
||||||
m_feral_gamemode = new wxCheckBox(box, wxID_ANY, _("Enable Feral GameMode"));
|
m_feral_gamemode = new wxCheckBox(box, wxID_ANY, _("Enable Feral GameMode"));
|
||||||
m_feral_gamemode->SetToolTip(_("Use FeralInteractive GameMode if installed."));
|
m_feral_gamemode->SetToolTip(_("Use FeralInteractive GameMode if installed."));
|
||||||
second_row->Add(m_feral_gamemode, 0, botflag, 5);
|
second_row->Add(m_feral_gamemode, 0, botflag, 5);
|
||||||
|
CountRowElement();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// temporary workaround because feature crashes on macOS
|
// temporary workaround because feature crashes on macOS
|
||||||
@ -191,6 +208,22 @@ wxPanel* GeneralSettings2::AddGeneralPage(wxNotebook* notebook)
|
|||||||
m_disable_screensaver->Enable(false);
|
m_disable_screensaver->Enable(false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// InsertEmptyRow();
|
||||||
|
|
||||||
|
m_auto_update = new wxCheckBox(box, wxID_ANY, _("Automatically check for updates"));
|
||||||
|
m_auto_update->SetToolTip(_("Automatically checks for new cemu versions on startup"));
|
||||||
|
second_row->Add(m_auto_update, 0, botflag, 5);
|
||||||
|
CountRowElement();
|
||||||
|
|
||||||
|
m_receive_untested_releases = new wxCheckBox(box, wxID_ANY, _("Receive untested updates"));
|
||||||
|
m_receive_untested_releases->SetToolTip(_("When checking for updates, include brand new and untested releases. These may contain bugs!"));
|
||||||
|
second_row->Add(m_receive_untested_releases, 0, botflag, 5);
|
||||||
|
#if BOOST_OS_LINUX
|
||||||
|
if (!std::getenv("APPIMAGE")) {
|
||||||
|
m_auto_update->Disable();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
box_sizer->Add(second_row, 0, wxEXPAND, 5);
|
box_sizer->Add(second_row, 0, wxEXPAND, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1536,6 +1569,7 @@ void GeneralSettings2::ApplyConfig()
|
|||||||
m_fullscreen_menubar->SetValue(config.fullscreen_menubar);
|
m_fullscreen_menubar->SetValue(config.fullscreen_menubar);
|
||||||
|
|
||||||
m_auto_update->SetValue(config.check_update);
|
m_auto_update->SetValue(config.check_update);
|
||||||
|
m_receive_untested_releases->SetValue(config.receive_untested_updates);
|
||||||
m_save_screenshot->SetValue(config.save_screenshot);
|
m_save_screenshot->SetValue(config.save_screenshot);
|
||||||
|
|
||||||
m_disable_screensaver->SetValue(config.disable_screensaver);
|
m_disable_screensaver->SetValue(config.disable_screensaver);
|
||||||
|
@ -41,7 +41,7 @@ private:
|
|||||||
wxCheckBox* m_save_window_position_size;
|
wxCheckBox* m_save_window_position_size;
|
||||||
wxCheckBox* m_save_padwindow_position_size;
|
wxCheckBox* m_save_padwindow_position_size;
|
||||||
wxCheckBox* m_discord_presence, *m_fullscreen_menubar;
|
wxCheckBox* m_discord_presence, *m_fullscreen_menubar;
|
||||||
wxCheckBox* m_auto_update, *m_save_screenshot;
|
wxCheckBox* m_auto_update, *m_receive_untested_releases, *m_save_screenshot;
|
||||||
wxCheckBox* m_disable_screensaver;
|
wxCheckBox* m_disable_screensaver;
|
||||||
#if BOOST_OS_LINUX && defined(ENABLE_FERAL_GAMEMODE)
|
#if BOOST_OS_LINUX && defined(ENABLE_FERAL_GAMEMODE)
|
||||||
wxCheckBox* m_feral_gamemode;
|
wxCheckBox* m_feral_gamemode;
|
||||||
|
@ -73,8 +73,8 @@ END
|
|||||||
#define str(s) #s
|
#define str(s) #s
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION EMULATOR_VERSION_LEAD, EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR, 0
|
FILEVERSION EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR, EMULATOR_VERSION_PATCH, 0
|
||||||
PRODUCTVERSION EMULATOR_VERSION_LEAD, EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR, 0
|
PRODUCTVERSION EMULATOR_VERSION_MAJOR, EMULATOR_VERSION_MINOR, EMULATOR_VERSION_PATCH, 0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@ -94,7 +94,7 @@ BEGIN
|
|||||||
VALUE "LegalCopyright", "Team Cemu"
|
VALUE "LegalCopyright", "Team Cemu"
|
||||||
VALUE "OriginalFilename", "Cemu.exe"
|
VALUE "OriginalFilename", "Cemu.exe"
|
||||||
VALUE "ProductName", "Cemu"
|
VALUE "ProductName", "Cemu"
|
||||||
VALUE "ProductVersion", xstr(EMULATOR_VERSION_LEAD) "." xstr(EMULATOR_VERSION_MAJOR) "." xstr(EMULATOR_VERSION_MINOR) EMULATOR_VERSION_SUFFIX "\0"
|
VALUE "ProductVersion", xstr(EMULATOR_VERSION_MAJOR) "." xstr(EMULATOR_VERSION_MINOR) "." xstr(EMULATOR_VERSION_PATCH) EMULATOR_VERSION_SUFFIX "\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
Loading…
Reference in New Issue
Block a user