Compare commits
63
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3ddd34d51d | ||
|
|
ce0344742e | ||
|
|
a7723148bc | ||
|
|
78621e5dca | ||
|
|
1d7fe00703 | ||
|
|
e923b7918f | ||
|
|
0834646097 | ||
|
|
82439962d6 | ||
|
|
97cca85bc8 | ||
|
|
bb0fd62ec3 | ||
|
|
734c762bd6 | ||
|
|
1cb5b7b52a | ||
|
|
244f4aa56a | ||
|
|
26bc8fdda5 | ||
|
|
f13c9d0e50 | ||
|
|
aa9ea9204b | ||
|
|
ea5d566218 | ||
|
|
56e8e7456b | ||
|
|
7f63b77ab3 | ||
|
|
42689377e6 | ||
|
|
3f7dcd72bb | ||
|
|
e15c689061 | ||
|
|
6561ea9230 | ||
|
|
2b3071c9a1 | ||
|
|
04fc516d47 | ||
|
|
652ad41845 | ||
|
|
2c188f2ac4 | ||
|
|
7b5d86fe65 | ||
|
|
127d07ed31 | ||
|
|
7ceeda8bca | ||
|
|
cd709f0a55 | ||
|
|
07249ebb1c | ||
|
|
f0855d9b53 | ||
|
|
0b6986e12c | ||
|
|
d72f4b780a | ||
|
|
5075efc6dc | ||
|
|
88a19a8811 | ||
|
|
4a45f4d9c4 | ||
|
|
a34014876a | ||
|
|
74ef5237ad | ||
|
|
933dcf72a9 | ||
|
|
8a5f1b5017 | ||
|
|
c70e12ff07 | ||
|
|
359716b850 | ||
|
|
c94de456b5 | ||
|
|
e72da8ad5f | ||
|
|
3da7aa5be0 | ||
|
|
40a755173a | ||
|
|
04dee88276 | ||
|
|
572cf9d12c | ||
|
|
6c53848ea4 | ||
|
|
32f4f1871d | ||
|
|
f6f62e0e9d | ||
|
|
15cd228b8d | ||
|
|
5951a550bb | ||
|
|
a0e44f9e4b | ||
|
|
90ebf58554 | ||
|
|
a3f2d56a9e | ||
|
|
d03cca1fe2 | ||
|
|
8957d9d446 | ||
|
|
6c914266d9 | ||
|
|
b7a60638a4 | ||
|
|
14215af0d1 |
@@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Create a report to help us improve
|
|
||||||
title: ''
|
|
||||||
labels: bug
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Game and version
|
|
||||||
*name of game, version of game*
|
|
||||||
|
|
||||||
## Version of spice2x
|
|
||||||
*please remember to test the LATEST beta version before posting a bug about it*
|
|
||||||
|
|
||||||
## Describe the issue
|
|
||||||
*what's the issue?*
|
|
||||||
|
|
||||||
## Attached log.txt file, if available
|
|
||||||
> [!WARNING]
|
|
||||||
> Please make sure you remove any personally identifiable information from the log file.
|
|
||||||
> Please set `-loglevel` to `all` before launching the game for more verbose logs.
|
|
||||||
|
|
||||||
## A note on issue management
|
|
||||||
|
|
||||||
`Closed as not planned` means exactly that - it's closed, because it's not on our plans to address them any time soon. It doesn't mean your issue is invalid, it just means it's not a priority, and we can always revisit them later.
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
name: Documentation update
|
|
||||||
about: For suggesting edits to the wiki page.
|
|
||||||
title: ''
|
|
||||||
labels: documentation
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature request
|
|
||||||
about: Suggest an idea for this project
|
|
||||||
title: ''
|
|
||||||
labels: enhancement
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
on: [push, pull_request]
|
|
||||||
name: Continuous Integration
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
fw-ci:
|
|
||||||
name: Build
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: ./src/spice2x
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
- name: Set ccache environment variables
|
|
||||||
run: |
|
|
||||||
echo "CCACHE_DIR=${{ github.workspace }}/src/spice2x/.ccache" >> $GITHUB_ENV
|
|
||||||
- name: Install ccache
|
|
||||||
uses: hendrikmuhs/ccache-action@v1.2.23
|
|
||||||
- name: Calculate commit SHA
|
|
||||||
id: vars
|
|
||||||
run: |
|
|
||||||
calculatedSha=$(git rev-parse --short ${{ github.sha }})
|
|
||||||
echo "COMMIT_SHORT_SHA=$calculatedSha" >> $GITHUB_ENV
|
|
||||||
- name: Compile
|
|
||||||
run: ./build_docker.sh
|
|
||||||
- uses: actions/upload-artifact@v6
|
|
||||||
with:
|
|
||||||
name: spice2x-ci-${{ env.COMMIT_SHORT_SHA }}
|
|
||||||
path: src/spice2x/bin
|
|
||||||
if-no-files-found: error
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
name: Draft Release
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
name: Build and Draft Release
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: ./src/spice2x
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v5
|
|
||||||
with:
|
|
||||||
ref: main
|
|
||||||
fetch-depth: 0
|
|
||||||
- name: Clean leftover build artifacts
|
|
||||||
run: |
|
|
||||||
rm -rf .ccache dist bin cmake-build-*
|
|
||||||
- name: Compile
|
|
||||||
run: ./build_docker.sh
|
|
||||||
- name: Determine release name from dist filename
|
|
||||||
run: |
|
|
||||||
dist=$(basename "$(ls dist/spice2x-*.zip | grep -v -- '-full.zip')")
|
|
||||||
# strip the ".zip" to get the base name, e.g. spice2x-26-06-28
|
|
||||||
name="${dist%.zip}"
|
|
||||||
# the tag is the date portion, e.g. 26-06-28
|
|
||||||
tag="${name#spice2x-}"
|
|
||||||
echo "RELEASE_NAME=$name" >> $GITHUB_ENV
|
|
||||||
echo "RELEASE_TAG=$tag" >> $GITHUB_ENV
|
|
||||||
- name: Create draft release
|
|
||||||
uses: softprops/action-gh-release@v3
|
|
||||||
with:
|
|
||||||
draft: true
|
|
||||||
prerelease: true
|
|
||||||
tag_name: ${{ env.RELEASE_TAG }}
|
|
||||||
name: ${{ env.RELEASE_NAME }}
|
|
||||||
target_commitish: main
|
|
||||||
generate_release_notes: true
|
|
||||||
files: |
|
|
||||||
src/spice2x/dist/spice2x-*.zip
|
|
||||||
+14
-1
@@ -1,7 +1,6 @@
|
|||||||
.vscode/*
|
.vscode/*
|
||||||
|
|
||||||
# JetBrains IDEs
|
# JetBrains IDEs
|
||||||
.idea
|
|
||||||
.idea_modules
|
.idea_modules
|
||||||
*.iws
|
*.iws
|
||||||
|
|
||||||
@@ -11,3 +10,17 @@ cmake-build*
|
|||||||
# user config
|
# user config
|
||||||
build_all.local.sh
|
build_all.local.sh
|
||||||
build_docker.local.sh
|
build_docker.local.sh
|
||||||
|
|
||||||
|
# output from build script
|
||||||
|
bin/*
|
||||||
|
dist/*
|
||||||
|
build/*.dll
|
||||||
|
|
||||||
|
external/cv2pdb/*
|
||||||
|
|
||||||
|
.ccache/*
|
||||||
|
|
||||||
|
# Visual Studio
|
||||||
|
.vs
|
||||||
|
out
|
||||||
|
CMakeSettings.json
|
||||||
|
|||||||
Generated
+10
@@ -0,0 +1,10 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
|
# Unnecessary plugin data
|
||||||
|
/markdown-navigator.xml
|
||||||
Generated
+11
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CMakeSharedSettings">
|
||||||
|
<configurations>
|
||||||
|
<configuration PROFILE_NAME="Release_x64[WIN_32]" ENABLED="true" GENERATION_DIR="bin/build/x64/Release" CONFIG_NAME="Release" TOOLCHAIN_NAME="MinGW [Crosscompile]" GENERATION_OPTIONS="-G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="external/cmake-various/toolchain/toolchain-mingw_nix-win-x64.cmake"" />
|
||||||
|
<configuration PROFILE_NAME="Release_x86[WIN_32]" ENABLED="true" GENERATION_DIR="bin/build/x86/Release" CONFIG_NAME="Release" TOOLCHAIN_NAME="MinGW [Crosscompile]" GENERATION_OPTIONS="-G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="external/cmake-various/toolchain/toolchain-mingw_nix-win-x86.cmake"" />
|
||||||
|
<configuration PROFILE_NAME="Debug_x64[WIN_32]" ENABLED="true" GENERATION_DIR="bin/build/x64/Debug" CONFIG_NAME="Debug" TOOLCHAIN_NAME="MinGW [Crosscompile]" GENERATION_OPTIONS="-G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="external/cmake-various/toolchain/toolchain-mingw_nix-win-x64.cmake"" />
|
||||||
|
<configuration PROFILE_NAME="Debug_x86[WIN_32]" ENABLED="true" GENERATION_DIR="bin/build/x86/Debug" CONFIG_NAME="Debug" TOOLCHAIN_NAME="MinGW [Crosscompile]" GENERATION_OPTIONS="-G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="external/cmake-various/toolchain/toolchain-mingw_nix-win-x86.cmake"" />
|
||||||
|
</configurations>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="ConstantConditionsOC" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="DuplicatedCode" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="PyBroadExceptionInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="PyCompatibilityInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="ourVersions">
|
||||||
|
<value>
|
||||||
|
<list size="4">
|
||||||
|
<item index="0" class="java.lang.String" itemvalue="2.7" />
|
||||||
|
<item index="1" class="java.lang.String" itemvalue="3.7" />
|
||||||
|
<item index="2" class="java.lang.String" itemvalue="3.8" />
|
||||||
|
<item index="3" class="java.lang.String" itemvalue="3.9" />
|
||||||
|
</list>
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="PyDefaultArgumentInspection" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="PyInterpreterInspection" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
||||||
|
<option name="ignoredErrors">
|
||||||
|
<list>
|
||||||
|
<option value="E266" />
|
||||||
|
<option value="E701" />
|
||||||
|
<option value="E265" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
||||||
|
<option name="ignoredErrors">
|
||||||
|
<list>
|
||||||
|
<option value="N806" />
|
||||||
|
<option value="N803" />
|
||||||
|
<option value="N802" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="PyTypeCheckerInspection" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="PyUnusedLocalInspection" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
|
<inspection_tool class="ShellCheck" enabled="true" level="ERROR" enabled_by_default="true">
|
||||||
|
<shellcheck_settings value="SC2164" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="Simplify" enabled="false" level="WARNING" enabled_by_default="false">
|
||||||
|
<option name="clangTidyCheckOptions">
|
||||||
|
<list>
|
||||||
|
<ClangTidyCheckOption>
|
||||||
|
<option name="optionName" value="clion-simplify.SimplifyConstantConditions" />
|
||||||
|
<option name="optionValue" value="1" />
|
||||||
|
</ClangTidyCheckOption>
|
||||||
|
<ClangTidyCheckOption>
|
||||||
|
<option name="optionName" value="clion-simplify.SimplifyIfWithReturn" />
|
||||||
|
<option name="optionValue" value="0" />
|
||||||
|
</ClangTidyCheckOption>
|
||||||
|
<ClangTidyCheckOption>
|
||||||
|
<option name="optionName" value="clion-simplify.SimplifyEqualToTrueFalse" />
|
||||||
|
<option name="optionValue" value="1" />
|
||||||
|
</ClangTidyCheckOption>
|
||||||
|
<ClangTidyCheckOption>
|
||||||
|
<option name="optionName" value="clion-simplify.SimplifyTernaryWithConstantBranch" />
|
||||||
|
<option name="optionValue" value="1" />
|
||||||
|
</ClangTidyCheckOption>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="SpellCheckingInspection" enabled="true" level="TYPO" enabled_by_default="true">
|
||||||
|
<option name="processCode" value="false" />
|
||||||
|
<option name="processLiterals" value="true" />
|
||||||
|
<option name="processComments" value="true" />
|
||||||
|
</inspection_tool>
|
||||||
|
</profile>
|
||||||
|
</component>
|
||||||
Generated
+10
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="MarkdownEnhProjectSettings">
|
||||||
|
<AnnotatorSettings targetHasSpaces="true" linkCaseMismatch="true" wikiCaseMismatch="true" wikiLinkHasDashes="true" notUnderWikiHome="true" targetNotWikiPageExt="true" notUnderSourceWikiHome="true" targetNameHasAnchor="true" targetPathHasAnchor="true" wikiLinkHasSlash="true" wikiLinkHasSubdir="true" wikiLinkHasOnlyAnchor="true" linkTargetsWikiHasExt="true" linkTargetsWikiHasBadExt="true" notUnderSameRepo="true" targetNotUnderVcs="false" linkNeedsExt="true" linkHasBadExt="true" linkTargetNeedsExt="true" linkTargetHasBadExt="true" wikiLinkNotInWiki="true" imageTargetNotInRaw="true" repoRelativeAcrossVcsRoots="true" multipleWikiTargetsMatch="true" unresolvedLinkReference="true" linkIsIgnored="true" anchorIsIgnored="true" anchorIsUnresolved="true" anchorLineReferenceIsUnresolved="true" anchorLineReferenceFormat="true" anchorHasDuplicates="true" abbreviationDuplicates="true" abbreviationNotUsed="true" attributeIdDuplicateDefinition="true" attributeIdNotUsed="true" footnoteDuplicateDefinition="true" footnoteUnresolved="true" footnoteDuplicates="true" footnoteNotUsed="true" macroDuplicateDefinition="true" macroUnresolved="true" macroDuplicates="true" macroNotUsed="true" referenceDuplicateDefinition="true" referenceUnresolved="true" referenceDuplicates="true" referenceNotUsed="true" referenceUnresolvedNumericId="true" enumRefDuplicateDefinition="true" enumRefUnresolved="true" enumRefDuplicates="true" enumRefNotUsed="true" enumRefLinkUnresolved="true" enumRefLinkDuplicates="true" simTocUpdateNeeded="true" simTocTitleSpaceNeeded="true" />
|
||||||
|
<HtmlExportSettings updateOnSave="false" parentDir="" targetDir="" cssDir="css" scriptDir="js" plainHtml="false" imageDir="" copyLinkedImages="false" imagePathType="0" targetPathType="2" targetExt="" useTargetExt="false" noCssNoScripts="false" useElementStyleAttribute="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" linkFormatType="HTTP_ABSOLUTE" />
|
||||||
|
<LinkMapSettings>
|
||||||
|
<textMaps />
|
||||||
|
</LinkMapSettings>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+71
@@ -0,0 +1,71 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="FlexmarkProjectSettings">
|
||||||
|
<FlexmarkHtmlSettings flexmarkSpecExampleRendering="0" flexmarkSpecExampleRenderHtml="false">
|
||||||
|
<flexmarkSectionLanguages>
|
||||||
|
<option name="1" value="Markdown" />
|
||||||
|
<option name="2" value="HTML" />
|
||||||
|
<option name="3" value="flexmark-ast:1" />
|
||||||
|
</flexmarkSectionLanguages>
|
||||||
|
</FlexmarkHtmlSettings>
|
||||||
|
</component>
|
||||||
|
<component name="MarkdownProjectSettings">
|
||||||
|
<PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" synchronizePreviewPosition="true" highlightPreviewType="LINE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="true" showSelectionInPreview="true" lastLayoutSetsDefault="false">
|
||||||
|
<PanelProvider>
|
||||||
|
<provider providerId="com.vladsch.md.nav.editor.swing.html.panel" providerName="Default - Swing" />
|
||||||
|
</PanelProvider>
|
||||||
|
</PreviewSettings>
|
||||||
|
<ParserSettings gitHubSyntaxChange="false" correctedInvalidSettings="false" emojiShortcuts="1" emojiImages="0">
|
||||||
|
<PegdownExtensions>
|
||||||
|
<option name="ATXHEADERSPACE" value="true" />
|
||||||
|
<option name="FENCED_CODE_BLOCKS" value="true" />
|
||||||
|
<option name="INTELLIJ_DUMMY_IDENTIFIER" value="true" />
|
||||||
|
<option name="RELAXEDHRULES" value="true" />
|
||||||
|
<option name="STRIKETHROUGH" value="true" />
|
||||||
|
<option name="TABLES" value="true" />
|
||||||
|
<option name="TASKLISTITEMS" value="true" />
|
||||||
|
</PegdownExtensions>
|
||||||
|
<ParserOptions>
|
||||||
|
<option name="COMMONMARK_LISTS" value="true" />
|
||||||
|
<option name="EMOJI_SHORTCUTS" value="true" />
|
||||||
|
<option name="GFM_TABLE_RENDERING" value="true" />
|
||||||
|
<option name="PRODUCTION_SPEC_PARSER" value="true" />
|
||||||
|
<option name="SIM_TOC_BLANK_LINE_SPACER" value="true" />
|
||||||
|
</ParserOptions>
|
||||||
|
</ParserSettings>
|
||||||
|
<HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" addPageHeader="false" addAnchorLinks="false" anchorLinksWrapText="false" imageUriSerials="false" addDocTypeHtml="true" noParaTags="false" defaultUrlTitle="false" migratedPlantUml="true" migratedAnchorLinks="true" plantUmlConversion="0">
|
||||||
|
<GeneratorProvider>
|
||||||
|
<provider providerId="com.vladsch.md.nav.editor.text.html.generator" providerName="Unmodified HTML Generator" />
|
||||||
|
</GeneratorProvider>
|
||||||
|
<headerTop />
|
||||||
|
<headerBottom />
|
||||||
|
<bodyTop />
|
||||||
|
<bodyBottom />
|
||||||
|
<fencedCodeConversions>
|
||||||
|
<option name="c4plantuml" value="NONE" />
|
||||||
|
<option name="ditaa" value="NONE" />
|
||||||
|
<option name="erd" value="NONE" />
|
||||||
|
<option name="graphviz" value="NONE" />
|
||||||
|
<option name="latex" value="KATEX" />
|
||||||
|
<option name="math" value="KATEX" />
|
||||||
|
<option name="mermaid" value="NONE" />
|
||||||
|
<option name="nomnoml" value="NONE" />
|
||||||
|
<option name="plantuml" value="NONE" />
|
||||||
|
<option name="puml" value="NONE" />
|
||||||
|
<option name="svgbob" value="NONE" />
|
||||||
|
<option name="umlet" value="NONE" />
|
||||||
|
<option name="vega" value="NONE" />
|
||||||
|
<option name="vegalite" value="NONE" />
|
||||||
|
<option name="wavedrom" value="NONE" />
|
||||||
|
</fencedCodeConversions>
|
||||||
|
</HtmlSettings>
|
||||||
|
<CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssUriSerial="true" isCssTextEnabled="false" isDynamicPageWidth="true">
|
||||||
|
<StylesheetProvider>
|
||||||
|
<provider providerId="com.vladsch.md.nav.editor.text.html.css" providerName="No Stylesheet" />
|
||||||
|
</StylesheetProvider>
|
||||||
|
<ScriptProviders />
|
||||||
|
<cssText />
|
||||||
|
<cssUriHistory />
|
||||||
|
</CssSettings>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+4
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
|
||||||
|
</project>
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/spicetools.iml" filepath="$PROJECT_DIR$/.idea/spicetools.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+17
@@ -0,0 +1,17 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Clion[Init]" type="ShConfigurationType" activateToolWindowBeforeRun="false">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/cmake.sh" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="clion init" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="/usr/bin/bash" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="false" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Deploy[Debug_x64]" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/cmake.sh" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="deploy all" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="/usr/bin/bash" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="false" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="_G_clean" value="false" />
|
||||||
|
<env name="_G_debug" value="true" />
|
||||||
|
</envs>
|
||||||
|
<method v="2">
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Clion[Init]" run_configuration_type="ShConfigurationType" />
|
||||||
|
<option name="RunConfigurationTask" enabled="false" run_configuration_name="spicetools_spice64" run_configuration_type="CMakeRunConfiguration" run_configuration_target="CMakeBuildProfile:Debug_x64[WIN_32]" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Deploy[Debug_x86]" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/cmake.sh" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="deploy all" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="/usr/bin/bash" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="false" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="_G_clean" value="false" />
|
||||||
|
<env name="_G_debug" value="true" />
|
||||||
|
</envs>
|
||||||
|
<method v="2">
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Clion[Init]" run_configuration_type="ShConfigurationType" />
|
||||||
|
<option name="RunConfigurationTask" enabled="false" run_configuration_name="spicetools_cfg" run_configuration_type="CMakeRunConfiguration" run_configuration_target="CMakeBuildProfile:Debug_x86[WIN_32]" />
|
||||||
|
<option name="RunConfigurationTask" enabled="false" run_configuration_name="spicetools_spice" run_configuration_type="CMakeRunConfiguration" run_configuration_target="CMakeBuildProfile:Debug_x86[WIN_32]" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Deploy[Extra_x64]" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/cmake.sh" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="deploy all" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="/usr/bin/bash" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="false" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="_G_clean" value="false" />
|
||||||
|
<env name="_G_debug" value="false" />
|
||||||
|
</envs>
|
||||||
|
<method v="2">
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="spicetools_stubs_nvEncodeAPI64" run_configuration_type="CMakeRunConfiguration" run_configuration_target="CMakeBuildProfile:Release_x64[WIN_32]" />
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="spicetools_stubs_nvcuda" run_configuration_type="CMakeRunConfiguration" run_configuration_target="CMakeBuildProfile:Release_x64[WIN_32]" />
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="spicetools_stubs_nvcuvid" run_configuration_type="CMakeRunConfiguration" run_configuration_target="CMakeBuildProfile:Release_x64[WIN_32]" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Deploy[Extra_x86]" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/cmake.sh" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="deploy all" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="/usr/bin/bash" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="false" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="_G_clean" value="false" />
|
||||||
|
<env name="_G_debug" value="false" />
|
||||||
|
</envs>
|
||||||
|
<method v="2">
|
||||||
|
<option name="RunConfigurationTask" enabled="false" run_configuration_name="spicetools_stubs_cpusbxpkm" run_configuration_type="CMakeRunConfiguration" run_configuration_target="CMakeBuildProfile:Release_x86[WIN_32]" />
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="spicetools_spice_laa" run_configuration_type="CMakeRunConfiguration" run_configuration_target="CMakeBuildProfile:Release_x86[WIN_32]" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Deploy[Release_x64]" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/cmake.sh" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="deploy all" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="/usr/bin/bash" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="false" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="_G_clean" value="false" />
|
||||||
|
<env name="_G_debug" value="false" />
|
||||||
|
</envs>
|
||||||
|
<method v="2">
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Clion[Init]" run_configuration_type="ShConfigurationType" />
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="spicetools_spice64" run_configuration_type="CMakeRunConfiguration" run_configuration_target="CMakeBuildProfile:Release_x64[WIN_32]" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Deploy[Release_x86]" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/cmake.sh" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="deploy all" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="/usr/bin/bash" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="false" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="_G_clean" value="false" />
|
||||||
|
<env name="_G_debug" value="false" />
|
||||||
|
</envs>
|
||||||
|
<method v="2">
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Clion[Init]" run_configuration_type="ShConfigurationType" />
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="spicetools_cfg" run_configuration_type="CMakeRunConfiguration" run_configuration_target="CMakeBuildProfile:Release_x86[WIN_32]" />
|
||||||
|
<option name="RunConfigurationTask" enabled="false" run_configuration_name="spicetools_spice" run_configuration_type="CMakeRunConfiguration" run_configuration_target="CMakeBuildProfile:Release_x86[WIN_32]" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Distribute[Release]" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/cmake.sh" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="distribute all" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="/usr/bin/bash" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="false" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="_G_clean" value="false" />
|
||||||
|
<env name="_G_debug" value="false" />
|
||||||
|
</envs>
|
||||||
|
<method v="2">
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Deploy[Release_x64]" run_configuration_type="ShConfigurationType" />
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Deploy[Release_x86]" run_configuration_type="ShConfigurationType" />
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Deploy[Extra_x64]" run_configuration_type="ShConfigurationType" />
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Deploy[Extra_x86]" run_configuration_type="ShConfigurationType" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="spicetools_cfg" type="CMakeRunConfiguration" factoryName="Application" folderName="32" activateToolWindowBeforeRun="false" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="spicetools" TARGET_NAME="spicetools_cfg" CONFIG_NAME="Release_x64[WIN_32]" RUN_PATH="/bin/true">
|
||||||
|
<method v="2">
|
||||||
|
<option name="CMake.Explicit.Target" predefinedTargetName="spicetools_stubs_kbt" />
|
||||||
|
<option name="CMake.Explicit.Target" predefinedTargetName="spicetools_stubs_kld" />
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="spicetools_spice" type="CMakeRunConfiguration" factoryName="Application" folderName="32" activateToolWindowBeforeRun="false" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="spicetools" TARGET_NAME="spicetools_spice" CONFIG_NAME="Release_x64[WIN_32]" RUN_PATH="/bin/true">
|
||||||
|
<method v="2">
|
||||||
|
<option name="CMake.Explicit.Target" predefinedTargetName="spicetools_stubs_kbt" />
|
||||||
|
<option name="CMake.Explicit.Target" predefinedTargetName="spicetools_stubs_kld" />
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="spicetools_spice64" type="CMakeRunConfiguration" factoryName="Application" folderName="64" activateToolWindowBeforeRun="false" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="spicetools" TARGET_NAME="spicetools_spice64" CONFIG_NAME="Release_x64[WIN_32]" RUN_PATH="/bin/true">
|
||||||
|
<method v="2">
|
||||||
|
<option name="CMake.Explicit.Target" predefinedTargetName="spicetools_stubs_kbt64" />
|
||||||
|
<option name="CMake.Explicit.Target" predefinedTargetName="spicetools_stubs_kld64" />
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="spicetools_spice_laa" type="CMakeRunConfiguration" factoryName="Application" folderName="32" activateToolWindowBeforeRun="false" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="spicetools" TARGET_NAME="spicetools_spice_laa" CONFIG_NAME="Release_x64[WIN_32]" RUN_PATH="/bin/true">
|
||||||
|
<method v="2">
|
||||||
|
<option name="CMake.Explicit.Target" predefinedTargetName="spicetools_stubs_kbt" />
|
||||||
|
<option name="CMake.Explicit.Target" predefinedTargetName="spicetools_stubs_kld" />
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="spicetools_stubs_cpusbxpkm" type="CMakeRunConfiguration" factoryName="Application" folderName="32" activateToolWindowBeforeRun="false" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="spicetools" TARGET_NAME="spicetools_stubs_cpusbxpkm" CONFIG_NAME="Release_x64[WIN_32]" RUN_PATH="/bin/true">
|
||||||
|
<method v="2">
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="spicetools_stubs_nvEncodeAPI64" type="CMakeRunConfiguration" factoryName="Application" folderName="64" activateToolWindowBeforeRun="false" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="spicetools" TARGET_NAME="spicetools_stubs_nvEncodeAPI64" CONFIG_NAME="Release_x64[WIN_32]" RUN_PATH="/bin/true">
|
||||||
|
<method v="2">
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="spicetools_stubs_nvcuda" type="CMakeRunConfiguration" factoryName="Application" folderName="64" activateToolWindowBeforeRun="false" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="spicetools" TARGET_NAME="spicetools_stubs_nvcuda" CONFIG_NAME="Release_x64[WIN_32]" RUN_PATH="/bin/true">
|
||||||
|
<method v="2">
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="spicetools_stubs_nvcuvid" type="CMakeRunConfiguration" factoryName="Application" folderName="64" activateToolWindowBeforeRun="false" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="spicetools" TARGET_NAME="spicetools_stubs_nvcuvid" CONFIG_NAME="Release_x64[WIN_32]" RUN_PATH="/bin/true">
|
||||||
|
<method v="2">
|
||||||
|
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
Generated
+2
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module classpath="CMake" type="CPP_MODULE" version="4" />
|
||||||
Generated
+6
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -109,12 +109,6 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|||||||
# RapidJSON does this
|
# RapidJSON does this
|
||||||
add_compile_definitions(_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING)
|
add_compile_definitions(_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING)
|
||||||
|
|
||||||
add_compile_options("-Wno-nontrivial-memcall") # imgui, rapidjson
|
|
||||||
add_compile_options("-Wno-deprecated-builtins") # robin_hood
|
|
||||||
add_compile_options("-Wno-deprecated-declarations") # rapidjson
|
|
||||||
add_compile_options("-Wno-inconsistent-missing-override") # headsocket
|
|
||||||
add_compile_options("-Wno-microsoft-exception-spec") # gcc/clang have different noexcept specifiers on d3d9 COM interfaces
|
|
||||||
|
|
||||||
# warnings
|
# warnings
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunknown-warning-option")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunknown-warning-option")
|
||||||
|
|
||||||
@@ -124,8 +118,6 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|||||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static")
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static")
|
||||||
else()
|
else()
|
||||||
|
|
||||||
# warnings as errors
|
|
||||||
set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
|
|
||||||
|
|
||||||
# warnings
|
# warnings
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") # enable stuff
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") # enable stuff
|
||||||
@@ -235,13 +227,6 @@ add_compile_definitions(
|
|||||||
_WIN32_IE=0x0400
|
_WIN32_IE=0x0400
|
||||||
)
|
)
|
||||||
|
|
||||||
# SPICE_XP: set by build_all.sh for the WinXP-compat toolchains. Gates out
|
|
||||||
# the DX11 overlay backend
|
|
||||||
option(SPICE_XP "Build for the WinXP-compat toolchain" OFF)
|
|
||||||
if(SPICE_XP)
|
|
||||||
add_compile_definitions(SPICE_XP=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# acioemu log
|
# acioemu log
|
||||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DACIOEMU_LOG")
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DACIOEMU_LOG")
|
||||||
|
|
||||||
@@ -273,7 +258,19 @@ set_source_files_properties(cfg/manifest.rc PROPERTIES LANGUAGE RC)
|
|||||||
set_source_files_properties(cfg/icon.rc PROPERTIES LANGUAGE RC)
|
set_source_files_properties(cfg/icon.rc PROPERTIES LANGUAGE RC)
|
||||||
set_source_files_properties(cfg/Win32D.rc PROPERTIES LANGUAGE RC)
|
set_source_files_properties(cfg/Win32D.rc PROPERTIES LANGUAGE RC)
|
||||||
set_source_files_properties(build/manifest64.rc PROPERTIES LANGUAGE RC)
|
set_source_files_properties(build/manifest64.rc PROPERTIES LANGUAGE RC)
|
||||||
set_source_files_properties(stubs/manifest.rc PROPERTIES LANGUAGE RC)
|
set_source_files_properties(build/blob.rc PROPERTIES LANGUAGE RC)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT build/dsdmo.i686.dll
|
||||||
|
COMMAND sh -c "wget -qO- 'https://web.archive.org/web/20260212204718if_/https://download.zip.dll-files.com/d01cab97ad497201c4ad99eb6e4182b3/dsdmo.zip?token=f7cVie5KOSz-hnFUYC37Ow&expires=1770974229' | bsdtar -xvf - -C '${CMAKE_SOURCE_DIR}/build' -s '/dsdmo.dll/dsdmo.i686.dll/' dsdmo.dll"
|
||||||
|
COMMENT "Fetching dsdmo.dll blob (i686)"
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT build/dsdmo.x86_64.dll
|
||||||
|
COMMAND sh -c "wget -qO- 'https://web.archive.org/web/20260212203516if_/https://download.zip.dll-files.com/2627c69b89807078f5fdf63ee104dddf/dsdmo.zip?token=1rLcDAA2LFA6YRyinX0GXg&expires=1770973374' | bsdtar -xvf - -C '${CMAKE_SOURCE_DIR}/build' -s '/dsdmo.dll/dsdmo.x86_64.dll/' dsdmo.dll"
|
||||||
|
COMMENT "Fetching dsdmo.dll blob (x86_64)"
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
|
||||||
# sources
|
# sources
|
||||||
#########
|
#########
|
||||||
@@ -360,7 +357,6 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
cfg/configurator.cpp
|
cfg/configurator.cpp
|
||||||
cfg/configurator_wnd.cpp
|
cfg/configurator_wnd.cpp
|
||||||
cfg/screen_resize.cpp
|
cfg/screen_resize.cpp
|
||||||
cfg/controller_presets.cpp
|
|
||||||
|
|
||||||
# easrv
|
# easrv
|
||||||
easrv/easrv.cpp
|
easrv/easrv.cpp
|
||||||
@@ -390,7 +386,6 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
games/shared/twtouch.cpp
|
games/shared/twtouch.cpp
|
||||||
games/popn/popn.cpp
|
games/popn/popn.cpp
|
||||||
games/popn/io.cpp
|
games/popn/io.cpp
|
||||||
games/popn/bi3a_hook.cpp
|
|
||||||
games/bbc/bbc.cpp
|
games/bbc/bbc.cpp
|
||||||
games/bbc/io.cpp
|
games/bbc/io.cpp
|
||||||
games/hpm/hpm.cpp
|
games/hpm/hpm.cpp
|
||||||
@@ -408,19 +403,14 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
games/iidx/mf_wrappers.cpp
|
games/iidx/mf_wrappers.cpp
|
||||||
games/sdvx/bi2x_hook.cpp
|
games/sdvx/bi2x_hook.cpp
|
||||||
games/sdvx/sdvx.cpp
|
games/sdvx/sdvx.cpp
|
||||||
games/sdvx/sdvx_live2d.cpp
|
|
||||||
games/sdvx/io.cpp
|
games/sdvx/io.cpp
|
||||||
games/sdvx/camera.cpp
|
games/sdvx/camera.cpp
|
||||||
games/jb/bi2x_hook.cpp
|
|
||||||
games/jb/jb.cpp
|
games/jb/jb.cpp
|
||||||
games/jb/jb_touch.cpp
|
|
||||||
games/jb/io.cpp
|
games/jb/io.cpp
|
||||||
games/nost/nost.cpp
|
games/nost/nost.cpp
|
||||||
games/nost/io.cpp
|
games/nost/io.cpp
|
||||||
games/nost/poke.cpp
|
games/nost/poke.cpp
|
||||||
games/nost/touch_mode.cpp
|
|
||||||
games/gitadora/gitadora.cpp
|
games/gitadora/gitadora.cpp
|
||||||
games/gitadora/asio.cpp
|
|
||||||
games/gitadora/io.cpp
|
games/gitadora/io.cpp
|
||||||
games/gitadora/handle.cpp
|
games/gitadora/handle.cpp
|
||||||
games/gitadora/j32d.cpp
|
games/gitadora/j32d.cpp
|
||||||
@@ -434,7 +424,6 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
games/rb/rb.cpp
|
games/rb/rb.cpp
|
||||||
games/rb/io.cpp
|
games/rb/io.cpp
|
||||||
games/rb/touch.cpp
|
games/rb/touch.cpp
|
||||||
games/rb/touch_debug.cpp
|
|
||||||
games/bs/bs.cpp
|
games/bs/bs.cpp
|
||||||
games/bs/io.cpp
|
games/bs/io.cpp
|
||||||
games/rf3d/rf3d.cpp
|
games/rf3d/rf3d.cpp
|
||||||
@@ -499,24 +488,16 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
# hooks
|
# hooks
|
||||||
hooks/audio/acm.cpp
|
hooks/audio/acm.cpp
|
||||||
hooks/audio/audio.cpp
|
hooks/audio/audio.cpp
|
||||||
hooks/audio/asio_driver_scan.cpp
|
|
||||||
hooks/audio/asio_proxy.cpp
|
|
||||||
hooks/audio/buffer.cpp
|
hooks/audio/buffer.cpp
|
||||||
hooks/audio/mme.cpp
|
hooks/audio/mme.cpp
|
||||||
hooks/audio/util.cpp
|
hooks/audio/util.cpp
|
||||||
hooks/audio/xact.cpp
|
|
||||||
hooks/audio/backends/dsound/dsound_backend.cpp
|
hooks/audio/backends/dsound/dsound_backend.cpp
|
||||||
hooks/audio/backends/mmdevice/audio_endpoint_volume.cpp
|
hooks/audio/backends/mmdevice/audio_endpoint_volume.cpp
|
||||||
hooks/audio/backends/mmdevice/device.cpp
|
hooks/audio/backends/mmdevice/device.cpp
|
||||||
hooks/audio/backends/mmdevice/device_collection.cpp
|
hooks/audio/backends/mmdevice/device_collection.cpp
|
||||||
hooks/audio/backends/mmdevice/device_enumerator.cpp
|
hooks/audio/backends/mmdevice/device_enumerator.cpp
|
||||||
hooks/audio/backends/mmdevice/null_device.cpp
|
|
||||||
hooks/audio/backends/mmdevice/null_discard_backend.cpp
|
|
||||||
hooks/audio/backends/wasapi/audio_client.cpp
|
hooks/audio/backends/wasapi/audio_client.cpp
|
||||||
hooks/audio/backends/wasapi/audio_render_client.cpp
|
hooks/audio/backends/wasapi/audio_render_client.cpp
|
||||||
hooks/audio/backends/wasapi/downmix.cpp
|
|
||||||
hooks/audio/backends/wasapi/resample.cpp
|
|
||||||
hooks/audio/backends/wasapi/shared.cpp
|
|
||||||
hooks/audio/backends/wasapi/dummy_audio_client.cpp
|
hooks/audio/backends/wasapi/dummy_audio_client.cpp
|
||||||
hooks/audio/backends/wasapi/dummy_audio_clock.cpp
|
hooks/audio/backends/wasapi/dummy_audio_clock.cpp
|
||||||
hooks/audio/backends/wasapi/dummy_audio_render_client.cpp
|
hooks/audio/backends/wasapi/dummy_audio_render_client.cpp
|
||||||
@@ -525,35 +506,30 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
hooks/audio/backends/wasapi/util.cpp
|
hooks/audio/backends/wasapi/util.cpp
|
||||||
hooks/audio/implementations/asio.cpp
|
hooks/audio/implementations/asio.cpp
|
||||||
hooks/audio/implementations/wave_out.cpp
|
hooks/audio/implementations/wave_out.cpp
|
||||||
|
hooks/audio/implementations/none.cpp
|
||||||
|
hooks/audio/implementations/pipewire.cpp
|
||||||
|
hooks/develhook.cpp
|
||||||
|
hooks/sndbhook.cpp
|
||||||
|
hooks/wmischook.cpp
|
||||||
hooks/avshook.cpp
|
hooks/avshook.cpp
|
||||||
hooks/cfgmgr32hook.cpp
|
hooks/cfgmgr32hook.cpp
|
||||||
hooks/debughook.cpp
|
hooks/debughook.cpp
|
||||||
hooks/devicehook.cpp
|
hooks/devicehook.cpp
|
||||||
hooks/graphics/graphics.cpp
|
hooks/graphics/graphics.cpp
|
||||||
hooks/graphics/graphics_windowed.cpp
|
hooks/graphics/graphics_windowed.cpp
|
||||||
hooks/graphics/nvapi_impl.cpp
|
|
||||||
hooks/graphics/nvapi_hook.cpp
|
hooks/graphics/nvapi_hook.cpp
|
||||||
hooks/graphics/nvenc_hook.cpp
|
hooks/graphics/nvenc_hook.cpp
|
||||||
hooks/graphics/backends/d3d9/d3d9_backend.cpp
|
hooks/graphics/backends/d3d9/d3d9_backend.cpp
|
||||||
hooks/graphics/backends/d3d9/d3d9_device.cpp
|
hooks/graphics/backends/d3d9/d3d9_device.cpp
|
||||||
hooks/graphics/backends/d3d9/d3d9_gfdm.cpp
|
|
||||||
hooks/graphics/backends/d3d9/d3d9_live2d.cpp
|
|
||||||
hooks/graphics/backends/d3d9/d3d9_fake_swapchain.cpp
|
hooks/graphics/backends/d3d9/d3d9_fake_swapchain.cpp
|
||||||
hooks/graphics/backends/d3d9/d3d9_swapchain.cpp
|
hooks/graphics/backends/d3d9/d3d9_swapchain.cpp
|
||||||
hooks/graphics/backends/d3d9/d3d9_texture.cpp
|
hooks/graphics/backends/d3d9/d3d9_texture.cpp
|
||||||
hooks/graphics/backends/d3d11/d3d11_backend.cpp
|
|
||||||
hooks/graphics/backends/d3d11/d3d11_swapchain.cpp
|
|
||||||
hooks/graphics/backends/d3d11/d3d11_factory.cpp
|
|
||||||
hooks/graphics/backends/d3d11/d3d11_vtable_capture.cpp
|
|
||||||
hooks/graphics/backends/d3d11/d3d11_screenshot.cpp
|
|
||||||
hooks/input/dinput8/fake_backend.cpp
|
hooks/input/dinput8/fake_backend.cpp
|
||||||
hooks/input/dinput8/fake_device.cpp
|
hooks/input/dinput8/fake_device.cpp
|
||||||
hooks/input/dinput8/hook.cpp
|
hooks/input/dinput8/hook.cpp
|
||||||
hooks/lang.cpp
|
hooks/lang.cpp
|
||||||
hooks/libraryhook.cpp
|
hooks/libraryhook.cpp
|
||||||
hooks/networkhook.cpp
|
hooks/networkhook.cpp
|
||||||
hooks/icmphook_net.cpp
|
|
||||||
hooks/icmphook_iphlpapi.cpp
|
|
||||||
hooks/powrprof.cpp
|
hooks/powrprof.cpp
|
||||||
#hooks/rom.cpp
|
#hooks/rom.cpp
|
||||||
hooks/setupapihook.cpp
|
hooks/setupapihook.cpp
|
||||||
@@ -576,6 +552,7 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
misc/device.cpp
|
misc/device.cpp
|
||||||
misc/eamuse.cpp
|
misc/eamuse.cpp
|
||||||
misc/extdev.cpp
|
misc/extdev.cpp
|
||||||
|
misc/nativetouchhook.cpp
|
||||||
misc/sciunit.cpp
|
misc/sciunit.cpp
|
||||||
misc/sde.cpp
|
misc/sde.cpp
|
||||||
misc/wintouchemu.cpp
|
misc/wintouchemu.cpp
|
||||||
@@ -586,7 +563,6 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
|
|
||||||
# overlay
|
# overlay
|
||||||
overlay/overlay.cpp
|
overlay/overlay.cpp
|
||||||
overlay/notifications.cpp
|
|
||||||
overlay/window.cpp
|
overlay/window.cpp
|
||||||
overlay/imgui/extensions.cpp
|
overlay/imgui/extensions.cpp
|
||||||
overlay/imgui/impl_spice.cpp
|
overlay/imgui/impl_spice.cpp
|
||||||
@@ -599,7 +575,6 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
overlay/windows/screen_resize.cpp
|
overlay/windows/screen_resize.cpp
|
||||||
overlay/windows/sdvx_sub.cpp
|
overlay/windows/sdvx_sub.cpp
|
||||||
overlay/windows/config.cpp
|
overlay/windows/config.cpp
|
||||||
overlay/windows/controller_presets.cpp
|
|
||||||
overlay/windows/control.cpp
|
overlay/windows/control.cpp
|
||||||
overlay/windows/eadev.cpp
|
overlay/windows/eadev.cpp
|
||||||
overlay/windows/fps.cpp
|
overlay/windows/fps.cpp
|
||||||
@@ -613,27 +588,11 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
overlay/windows/keypad.cpp
|
overlay/windows/keypad.cpp
|
||||||
overlay/windows/log.cpp
|
overlay/windows/log.cpp
|
||||||
overlay/windows/midi.cpp
|
overlay/windows/midi.cpp
|
||||||
overlay/windows/nostalgia_touch_piano.cpp
|
|
||||||
overlay/windows/obs.cpp
|
|
||||||
overlay/windows/obs_websocket.cpp
|
|
||||||
overlay/windows/patch_manager.cpp
|
overlay/windows/patch_manager.cpp
|
||||||
overlay/windows/popn_sub.cpp
|
|
||||||
overlay/windows/wnd_manager.cpp
|
overlay/windows/wnd_manager.cpp
|
||||||
|
|
||||||
# patcher
|
|
||||||
patcher/config.cpp
|
|
||||||
patcher/lifecycle.cpp
|
|
||||||
patcher/loader.cpp
|
|
||||||
patcher/loader_group.cpp
|
|
||||||
patcher/runtime.cpp
|
|
||||||
|
|
||||||
# external
|
|
||||||
external/easywsclient/easywsclient.cpp
|
|
||||||
|
|
||||||
# rawinput
|
# rawinput
|
||||||
rawinput/rawinput.cpp
|
rawinput/rawinput.cpp
|
||||||
rawinput/rawinput_handles.cpp
|
|
||||||
rawinput/midi.cpp
|
|
||||||
rawinput/sextet.cpp
|
rawinput/sextet.cpp
|
||||||
rawinput/piuio.cpp
|
rawinput/piuio.cpp
|
||||||
rawinput/touch.cpp
|
rawinput/touch.cpp
|
||||||
@@ -644,8 +603,6 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
rawinput/smxstage.h
|
rawinput/smxstage.h
|
||||||
rawinput/smxdedicab.cpp
|
rawinput/smxdedicab.cpp
|
||||||
rawinput/smxdedicab.h
|
rawinput/smxdedicab.h
|
||||||
rawinput/xinput.cpp
|
|
||||||
rawinput/xinput.h
|
|
||||||
|
|
||||||
# reader
|
# reader
|
||||||
reader/reader.cpp
|
reader/reader.cpp
|
||||||
@@ -653,21 +610,12 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
reader/structuredmessage.cpp
|
reader/structuredmessage.cpp
|
||||||
reader/crypt.cpp
|
reader/crypt.cpp
|
||||||
|
|
||||||
# sdk
|
|
||||||
sdk/sdk.cpp
|
|
||||||
|
|
||||||
# stubs
|
# stubs
|
||||||
stubs/stubs.cpp
|
stubs/stubs.cpp
|
||||||
|
|
||||||
# touch
|
# touch
|
||||||
touch/gdi_overlay.cpp
|
|
||||||
touch/native/inject.cpp
|
|
||||||
touch/native/inject_mouse.cpp
|
|
||||||
touch/native/inject_synthetic.cpp
|
|
||||||
touch/native/nativetouchhook.cpp
|
|
||||||
touch/native/transform.cpp
|
|
||||||
touch/touch.cpp
|
touch/touch.cpp
|
||||||
touch/touch_gestures.cpp
|
touch/touch_indicators.cpp
|
||||||
touch/win7.cpp
|
touch/win7.cpp
|
||||||
touch/win8.cpp
|
touch/win8.cpp
|
||||||
|
|
||||||
@@ -688,7 +636,6 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
util/time.cpp
|
util/time.cpp
|
||||||
util/cpuutils.cpp
|
util/cpuutils.cpp
|
||||||
util/netutils.cpp
|
util/netutils.cpp
|
||||||
util/precise_timer.cpp
|
|
||||||
util/sysutils.cpp
|
util/sysutils.cpp
|
||||||
util/lz77.cpp
|
util/lz77.cpp
|
||||||
util/tapeled.cpp
|
util/tapeled.cpp
|
||||||
@@ -700,74 +647,35 @@ set(SOURCE_FILES ${SOURCE_FILES}
|
|||||||
|
|
||||||
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Source Files" FILES ${SOURCE_FILES})
|
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Source Files" FILES ${SOURCE_FILES})
|
||||||
|
|
||||||
# guard against statically importing DLLs that must always be loaded dynamically:
|
|
||||||
# * DLLs users override via the modules directory (e.g. DXVK's d3d9.dll) - a
|
|
||||||
# static import loads the system copy at startup and preempts the override
|
|
||||||
# (issue #779).
|
|
||||||
# * Media Foundation DLLs (mf/mfplat/mfreadwrite) - a static import breaks
|
|
||||||
# Unity games.
|
|
||||||
# the check runs objdump on each produced binary and fails the build if any
|
|
||||||
# forbidden DLL is imported.
|
|
||||||
set(SPICE_FORBIDDEN_STATIC_IMPORTS
|
|
||||||
d3d8.dll d3d9.dll d3d10core.dll d3d11.dll dxgi.dll opengl32.dll
|
|
||||||
mf.dll mfplat.dll mfreadwrite.dll)
|
|
||||||
|
|
||||||
function(spice_guard_dll_imports target)
|
|
||||||
if(MSVC)
|
|
||||||
# objdump-based parsing assumes a GNU/LLVM toolchain
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
add_custom_command(TARGET ${target} POST_BUILD
|
|
||||||
COMMAND ${CMAKE_COMMAND}
|
|
||||||
-DOBJDUMP=${CMAKE_OBJDUMP}
|
|
||||||
-DTARGET_FILE=$<TARGET_FILE:${target}>
|
|
||||||
"-DFORBIDDEN=${SPICE_FORBIDDEN_STATIC_IMPORTS}"
|
|
||||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/check_no_static_dll_imports.cmake
|
|
||||||
VERBATIM
|
|
||||||
COMMENT "Checking ${target} for forbidden static DLL imports")
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# spice.exe / spice_laa.exe shared objects
|
|
||||||
###########################################
|
|
||||||
# spice.exe and spice_laa.exe are compiled identically; the only difference is
|
|
||||||
# the large-address-aware bit, which is set at link time. Compile the sources
|
|
||||||
# once into a shared OBJECT library so spice_laa.exe only costs an extra link
|
|
||||||
# instead of a full recompile.
|
|
||||||
|
|
||||||
add_library(spicetools_spice_objs OBJECT ${SOURCE_FILES})
|
|
||||||
target_link_libraries(spicetools_spice_objs
|
|
||||||
PUBLIC d3d9 ws2_32 version comctl32 shlwapi iphlpapi hid secur32 setupapi psapi winmm winhttp
|
|
||||||
PRIVATE fmt::fmt-header-only discord-rpc imgui hash-library minhook imm32 dwmapi CpuFeatures::cpu_features)
|
|
||||||
target_link_libraries(spicetools_spice_objs PUBLIC winscard)
|
|
||||||
|
|
||||||
if(NOT MSVC)
|
|
||||||
set_target_properties(spicetools_spice_objs PROPERTIES COMPILE_FLAGS "-m32")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# spice.exe
|
# spice.exe
|
||||||
###########
|
###########
|
||||||
|
|
||||||
set(RESOURCE_FILES build/manifest.manifest build/manifest.rc build/icon.rc cfg/Win32D.rc)
|
set(RESOURCE_FILES build/manifest.manifest build/manifest.rc build/icon.rc cfg/Win32D.rc build/blob.rc build/dsdmo.i686.dll)
|
||||||
add_executable(spicetools_spice ${RESOURCE_FILES})
|
add_executable(spicetools_spice ${SOURCE_FILES} ${RESOURCE_FILES})
|
||||||
target_link_libraries(spicetools_spice PRIVATE spicetools_spice_objs)
|
target_link_libraries(spicetools_spice
|
||||||
|
PUBLIC d3d9 ws2_32 version comctl32 shlwapi iphlpapi hid secur32 setupapi psapi winmm winhttp
|
||||||
|
PRIVATE fmt::fmt-header-only discord-rpc imgui hash-library minhook imm32 dwmapi CpuFeatures::cpu_features)
|
||||||
set_target_properties(spicetools_spice PROPERTIES PREFIX "")
|
set_target_properties(spicetools_spice PROPERTIES PREFIX "")
|
||||||
set_target_properties(spicetools_spice PROPERTIES OUTPUT_NAME "spice")
|
set_target_properties(spicetools_spice PROPERTIES OUTPUT_NAME "spice")
|
||||||
|
|
||||||
IF(NOT MSVC)
|
IF(NOT MSVC)
|
||||||
set_target_properties(spicetools_spice PROPERTIES LINK_FLAGS "-m32")
|
set_target_properties(spicetools_spice PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# spice_laa.exe
|
# spice_laa.exe
|
||||||
###########
|
###########
|
||||||
|
|
||||||
set(RESOURCE_FILES build/manifest.manifest build/manifest.rc build/icon.rc cfg/Win32D.rc)
|
set(RESOURCE_FILES build/manifest.manifest build/manifest.rc build/icon.rc cfg/Win32D.rc build/blob.rc build/dsdmo.i686.dll)
|
||||||
add_executable(spicetools_spice_laa ${RESOURCE_FILES})
|
add_executable(spicetools_spice_laa ${SOURCE_FILES} ${RESOURCE_FILES})
|
||||||
target_link_libraries(spicetools_spice_laa PRIVATE spicetools_spice_objs)
|
target_link_libraries(spicetools_spice_laa
|
||||||
|
PUBLIC d3d9 ws2_32 version comctl32 shlwapi iphlpapi hid secur32 setupapi psapi winmm winhttp
|
||||||
|
PRIVATE fmt::fmt-header-only discord-rpc imgui hash-library minhook imm32 dwmapi CpuFeatures::cpu_features)
|
||||||
set_target_properties(spicetools_spice_laa PROPERTIES PREFIX "")
|
set_target_properties(spicetools_spice_laa PROPERTIES PREFIX "")
|
||||||
set_target_properties(spicetools_spice_laa PROPERTIES OUTPUT_NAME "spice_laa")
|
set_target_properties(spicetools_spice_laa PROPERTIES OUTPUT_NAME "spice_laa")
|
||||||
|
target_compile_definitions(spicetools_spice_laa PRIVATE SPICE32_LARGE_ADDRESS_AWARE=1)
|
||||||
|
|
||||||
IF(NOT MSVC)
|
IF(NOT MSVC)
|
||||||
set_target_properties(spicetools_spice_laa PROPERTIES LINK_FLAGS "-m32 -Wl,--large-address-aware")
|
set_target_properties(spicetools_spice_laa PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32 -Wl,--large-address-aware")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# spice_linux.exe
|
# spice_linux.exe
|
||||||
@@ -789,21 +697,17 @@ endif()
|
|||||||
# spice64.exe
|
# spice64.exe
|
||||||
#############
|
#############
|
||||||
|
|
||||||
set(RESOURCE_FILES build/manifest.manifest build/manifest64.rc build/icon.rc cfg/Win32D.rc)
|
set(RESOURCE_FILES build/manifest.manifest build/manifest64.rc build/icon.rc cfg/Win32D.rc build/blob.rc build/dsdmo.x86_64.dll)
|
||||||
add_executable(spicetools_spice64 ${SOURCE_FILES} ${RESOURCE_FILES})
|
add_executable(spicetools_spice64 ${SOURCE_FILES} ${RESOURCE_FILES})
|
||||||
|
|
||||||
# do NOT link against: mf, mfplat, mfreadwrite; otherwise unity games will break
|
# do NOT link against: mf, mfplat, mfreadwrite; otherwise unity games will break
|
||||||
target_link_libraries(spicetools_spice64
|
target_link_libraries(spicetools_spice64
|
||||||
PUBLIC d3d9 ws2_32 version comctl32 shlwapi iphlpapi hid secur32 setupapi psapi winmm winhttp mfuuid strmiids dxva2
|
PUBLIC d3d9 ws2_32 version comctl32 shlwapi iphlpapi hid secur32 setupapi psapi winmm winhttp mfuuid strmiids dxva2
|
||||||
PRIVATE fmt::fmt-header-only discord-rpc imgui hash-library minhook imm32 dwmapi CpuFeatures::cpu_features)
|
PRIVATE fmt::fmt-header-only discord-rpc imgui hash-library minhook imm32 dwmapi CpuFeatures::cpu_features)
|
||||||
target_link_libraries(spicetools_spice64 PUBLIC winscard)
|
|
||||||
set_target_properties(spicetools_spice64 PROPERTIES PREFIX "")
|
set_target_properties(spicetools_spice64 PROPERTIES PREFIX "")
|
||||||
set_target_properties(spicetools_spice64 PROPERTIES OUTPUT_NAME "spice64")
|
set_target_properties(spicetools_spice64 PROPERTIES OUTPUT_NAME "spice64")
|
||||||
target_compile_definitions(spicetools_spice64 PRIVATE SPICE64=1)
|
target_compile_definitions(spicetools_spice64 PRIVATE SPICE64=1)
|
||||||
if(NOT SPICE_XP)
|
|
||||||
target_link_libraries(spicetools_spice64 PUBLIC d3d11 dxgi)
|
|
||||||
target_compile_definitions(spicetools_spice64 PRIVATE SPICE_D3D11=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
IF(NOT MSVC)
|
IF(NOT MSVC)
|
||||||
set_target_properties(spicetools_spice64 PROPERTIES COMPILE_FLAGS "-m64" LINK_FLAGS "-m64")
|
set_target_properties(spicetools_spice64 PROPERTIES COMPILE_FLAGS "-m64" LINK_FLAGS "-m64")
|
||||||
@@ -823,9 +727,6 @@ set_target_properties(spicetools_spice64_linux PROPERTIES PREFIX "")
|
|||||||
set_target_properties(spicetools_spice64_linux PROPERTIES OUTPUT_NAME "spice64_linux")
|
set_target_properties(spicetools_spice64_linux PROPERTIES OUTPUT_NAME "spice64_linux")
|
||||||
target_compile_definitions(spicetools_spice64_linux PRIVATE SPICE64=1)
|
target_compile_definitions(spicetools_spice64_linux PRIVATE SPICE64=1)
|
||||||
target_compile_definitions(spicetools_spice64_linux PRIVATE NO_SCARD=1 PRIVATE SPICE_LINUX=1)
|
target_compile_definitions(spicetools_spice64_linux PRIVATE NO_SCARD=1 PRIVATE SPICE_LINUX=1)
|
||||||
# spice64_linux is never built under the WinXP toolchain, so dx11 is always on.
|
|
||||||
target_link_libraries(spicetools_spice64_linux PUBLIC d3d11 dxgi)
|
|
||||||
target_compile_definitions(spicetools_spice64_linux PRIVATE SPICE_D3D11=1)
|
|
||||||
|
|
||||||
IF(NOT MSVC)
|
IF(NOT MSVC)
|
||||||
set_target_properties(spicetools_spice64_linux PROPERTIES COMPILE_FLAGS "-m64" LINK_FLAGS "-m64")
|
set_target_properties(spicetools_spice64_linux PROPERTIES COMPILE_FLAGS "-m64" LINK_FLAGS "-m64")
|
||||||
@@ -838,9 +739,8 @@ set(SOURCE_FILES ${SOURCE_FILES} launcher/options.h launcher/options.cpp)
|
|||||||
set(RESOURCE_FILES cfg/manifest.manifest cfg/manifest.rc cfg/icon.rc cfg/Win32D.rc)
|
set(RESOURCE_FILES cfg/manifest.manifest cfg/manifest.rc cfg/icon.rc cfg/Win32D.rc)
|
||||||
add_executable(spicetools_cfg WIN32 ${SOURCE_FILES} ${RESOURCE_FILES})
|
add_executable(spicetools_cfg WIN32 ${SOURCE_FILES} ${RESOURCE_FILES})
|
||||||
target_link_libraries(spicetools_cfg
|
target_link_libraries(spicetools_cfg
|
||||||
PUBLIC d3d9 ws2_32 version comctl32 shlwapi iphlpapi hid secur32 setupapi psapi winmm winhttp strmiids
|
PUBLIC ws2_32 version comctl32 shlwapi iphlpapi hid secur32 setupapi psapi winmm winhttp strmiids
|
||||||
PRIVATE fmt::fmt-header-only discord-rpc imgui hash-library minhook imm32 dwmapi CpuFeatures::cpu_features)
|
PRIVATE fmt::fmt-header-only discord-rpc imgui hash-library minhook imm32 dwmapi CpuFeatures::cpu_features)
|
||||||
target_link_libraries(spicetools_cfg PUBLIC winscard)
|
|
||||||
set_target_properties(spicetools_cfg PROPERTIES PREFIX "")
|
set_target_properties(spicetools_cfg PROPERTIES PREFIX "")
|
||||||
set_target_properties(spicetools_cfg PROPERTIES OUTPUT_NAME "spicecfg")
|
set_target_properties(spicetools_cfg PROPERTIES OUTPUT_NAME "spicecfg")
|
||||||
target_compile_definitions(spicetools_cfg PRIVATE SPICETOOLS_SPICECFG_STANDALONE=1)
|
target_compile_definitions(spicetools_cfg PRIVATE SPICETOOLS_SPICECFG_STANDALONE=1)
|
||||||
@@ -856,7 +756,7 @@ set(SOURCE_FILES ${SOURCE_FILES} launcher/options.h launcher/options.cpp)
|
|||||||
set(RESOURCE_FILES cfg/manifest.manifest cfg/manifest.rc cfg/icon.rc cfg/Win32D.rc)
|
set(RESOURCE_FILES cfg/manifest.manifest cfg/manifest.rc cfg/icon.rc cfg/Win32D.rc)
|
||||||
add_executable(spicetools_cfg_linux WIN32 ${SOURCE_FILES} ${RESOURCE_FILES})
|
add_executable(spicetools_cfg_linux WIN32 ${SOURCE_FILES} ${RESOURCE_FILES})
|
||||||
target_link_libraries(spicetools_cfg_linux
|
target_link_libraries(spicetools_cfg_linux
|
||||||
PUBLIC d3d9 ws2_32 version comctl32 shlwapi iphlpapi hid secur32 setupapi psapi winmm winhttp strmiids
|
PUBLIC ws2_32 version comctl32 shlwapi iphlpapi hid secur32 setupapi psapi winmm winhttp strmiids
|
||||||
PRIVATE fmt::fmt-header-only discord-rpc imgui hash-library minhook imm32 dwmapi CpuFeatures::cpu_features)
|
PRIVATE fmt::fmt-header-only discord-rpc imgui hash-library minhook imm32 dwmapi CpuFeatures::cpu_features)
|
||||||
set_target_properties(spicetools_cfg_linux PROPERTIES PREFIX "")
|
set_target_properties(spicetools_cfg_linux PROPERTIES PREFIX "")
|
||||||
set_target_properties(spicetools_cfg_linux PROPERTIES OUTPUT_NAME "spicecfg_linux")
|
set_target_properties(spicetools_cfg_linux PROPERTIES OUTPUT_NAME "spicecfg_linux")
|
||||||
@@ -918,8 +818,7 @@ endif()
|
|||||||
|
|
||||||
# nvcuda.dll
|
# nvcuda.dll
|
||||||
set(SOURCE_FILES stubs/nvcuda.cpp)
|
set(SOURCE_FILES stubs/nvcuda.cpp)
|
||||||
set(RESOURCE_FILES stubs/manifest.rc)
|
add_library(spicetools_stubs_nvcuda SHARED ${SOURCE_FILES} stubs/nvcuda.def)
|
||||||
add_library(spicetools_stubs_nvcuda SHARED ${SOURCE_FILES} ${RESOURCE_FILES} stubs/nvcuda.def)
|
|
||||||
set_target_properties(spicetools_stubs_nvcuda PROPERTIES PREFIX "")
|
set_target_properties(spicetools_stubs_nvcuda PROPERTIES PREFIX "")
|
||||||
set_target_properties(spicetools_stubs_nvcuda PROPERTIES OUTPUT_NAME "nvcuda")
|
set_target_properties(spicetools_stubs_nvcuda PROPERTIES OUTPUT_NAME "nvcuda")
|
||||||
|
|
||||||
@@ -929,8 +828,7 @@ endif()
|
|||||||
|
|
||||||
# nvcuvid.dll
|
# nvcuvid.dll
|
||||||
set(SOURCE_FILES stubs/nvcuvid.cpp)
|
set(SOURCE_FILES stubs/nvcuvid.cpp)
|
||||||
set(RESOURCE_FILES stubs/manifest.rc)
|
add_library(spicetools_stubs_nvcuvid SHARED ${SOURCE_FILES} stubs/nvcuvid.def)
|
||||||
add_library(spicetools_stubs_nvcuvid SHARED ${SOURCE_FILES} ${RESOURCE_FILES} stubs/nvcuvid.def)
|
|
||||||
set_target_properties(spicetools_stubs_nvcuvid PROPERTIES PREFIX "")
|
set_target_properties(spicetools_stubs_nvcuvid PROPERTIES PREFIX "")
|
||||||
set_target_properties(spicetools_stubs_nvcuvid PROPERTIES OUTPUT_NAME "nvcuvid")
|
set_target_properties(spicetools_stubs_nvcuvid PROPERTIES OUTPUT_NAME "nvcuvid")
|
||||||
|
|
||||||
@@ -940,8 +838,7 @@ endif()
|
|||||||
|
|
||||||
# nvEncodeAPI64.dll
|
# nvEncodeAPI64.dll
|
||||||
set(SOURCE_FILES stubs/nvEncodeAPI64.cpp)
|
set(SOURCE_FILES stubs/nvEncodeAPI64.cpp)
|
||||||
set(RESOURCE_FILES stubs/manifest.rc)
|
add_library(spicetools_stubs_nvEncodeAPI64 SHARED ${SOURCE_FILES} stubs/nvEncodeAPI64.def)
|
||||||
add_library(spicetools_stubs_nvEncodeAPI64 SHARED ${SOURCE_FILES} ${RESOURCE_FILES} stubs/nvEncodeAPI64.def)
|
|
||||||
set_target_properties(spicetools_stubs_nvEncodeAPI64 PROPERTIES PREFIX "")
|
set_target_properties(spicetools_stubs_nvEncodeAPI64 PROPERTIES PREFIX "")
|
||||||
set_target_properties(spicetools_stubs_nvEncodeAPI64 PROPERTIES OUTPUT_NAME "nvEncodeAPI64")
|
set_target_properties(spicetools_stubs_nvEncodeAPI64 PROPERTIES OUTPUT_NAME "nvEncodeAPI64")
|
||||||
|
|
||||||
@@ -951,8 +848,7 @@ endif()
|
|||||||
|
|
||||||
# cpusbxpkm.dll (32 bit)
|
# cpusbxpkm.dll (32 bit)
|
||||||
set(SOURCE_FILES stubs/cpusbxpkm.cpp)
|
set(SOURCE_FILES stubs/cpusbxpkm.cpp)
|
||||||
set(RESOURCE_FILES stubs/manifest.rc)
|
add_library(spicetools_stubs_cpusbxpkm SHARED ${SOURCE_FILES} stubs/cpusbxpkm.def)
|
||||||
add_library(spicetools_stubs_cpusbxpkm SHARED ${SOURCE_FILES} ${RESOURCE_FILES} stubs/cpusbxpkm.def)
|
|
||||||
set_target_properties(spicetools_stubs_cpusbxpkm PROPERTIES PREFIX "")
|
set_target_properties(spicetools_stubs_cpusbxpkm PROPERTIES PREFIX "")
|
||||||
set_target_properties(spicetools_stubs_cpusbxpkm PROPERTIES OUTPUT_NAME "cpusbxpkm")
|
set_target_properties(spicetools_stubs_cpusbxpkm PROPERTIES OUTPUT_NAME "cpusbxpkm")
|
||||||
|
|
||||||
@@ -960,36 +856,6 @@ if(NOT MSVC)
|
|||||||
set_target_properties(spicetools_stubs_cpusbxpkm PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
|
set_target_properties(spicetools_stubs_cpusbxpkm PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# sdk_sample_v0_flat_c.dll (32 bit)
|
|
||||||
set(SOURCE_FILES sdk/sample/v0/flat_c/v0_flat_c.c)
|
|
||||||
add_library(spicetools_sdk_sample_v0_flat_c_32 SHARED ${SOURCE_FILES} ${RESOURCE_FILES} sdk/sample/v0/flat_c/v0_flat_c.def)
|
|
||||||
set_target_properties(spicetools_sdk_sample_v0_flat_c_32 PROPERTIES PREFIX "")
|
|
||||||
set_target_properties(spicetools_sdk_sample_v0_flat_c_32 PROPERTIES OUTPUT_NAME "sdk_sample_v0_flat_c")
|
|
||||||
|
|
||||||
if(NOT MSVC)
|
|
||||||
set_target_properties(spicetools_sdk_sample_v0_flat_c_32 PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# sdk_sample_v0_flat_c.dll (64 bit)
|
|
||||||
set(SOURCE_FILES sdk/sample/v0/flat_c/v0_flat_c.c)
|
|
||||||
add_library(spicetools_sdk_sample_v0_flat_c_64 SHARED ${SOURCE_FILES} ${RESOURCE_FILES} sdk/sample/v0/flat_c/v0_flat_c.def)
|
|
||||||
set_target_properties(spicetools_sdk_sample_v0_flat_c_64 PROPERTIES PREFIX "")
|
|
||||||
set_target_properties(spicetools_sdk_sample_v0_flat_c_64 PROPERTIES OUTPUT_NAME "sdk_sample_v0_flat_c")
|
|
||||||
|
|
||||||
if(NOT MSVC)
|
|
||||||
set_target_properties(spicetools_sdk_sample_v0_flat_c_64 PROPERTIES COMPILE_FLAGS "-m64" LINK_FLAGS "-m64")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# sdk_sample_v0_cpp.dll (64 bit)
|
|
||||||
set(SOURCE_FILES sdk/sample/v0/cpp/v0_cpp.cpp)
|
|
||||||
add_library(spicetools_sdk_sample_v0_cpp_64 SHARED ${SOURCE_FILES} ${RESOURCE_FILES} sdk/sample/v0/cpp/v0_cpp.def)
|
|
||||||
set_target_properties(spicetools_sdk_sample_v0_cpp_64 PROPERTIES PREFIX "")
|
|
||||||
set_target_properties(spicetools_sdk_sample_v0_cpp_64 PROPERTIES OUTPUT_NAME "sdk_sample_v0_cpp")
|
|
||||||
|
|
||||||
if(NOT MSVC)
|
|
||||||
set_target_properties(spicetools_sdk_sample_v0_cpp_64 PROPERTIES COMPILE_FLAGS "-m64" LINK_FLAGS "-m64")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# output directories
|
# output directories
|
||||||
####################
|
####################
|
||||||
|
|
||||||
@@ -999,28 +865,15 @@ set_target_properties(spicetools_cfg spicetools_cfg_linux
|
|||||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/spicetools")
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/spicetools")
|
||||||
|
|
||||||
# output 32bit
|
# output 32bit
|
||||||
set_target_properties(spicetools_spice spicetools_spice_laa spicetools_spice_linux spicetools_stubs_kbt spicetools_stubs_kld spicetools_stubs_cpusbxpkm spicetools_sdk_sample_v0_flat_c_32
|
set_target_properties(spicetools_spice spicetools_spice_laa spicetools_spice_linux spicetools_stubs_kbt spicetools_stubs_kld spicetools_stubs_cpusbxpkm
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/archive32"
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/archive32"
|
||||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/spicetools/32"
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/spicetools/32"
|
||||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/spicetools/32")
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/spicetools/32")
|
||||||
|
|
||||||
# output 64bit
|
# output 64bit
|
||||||
set_target_properties(spicetools_spice64 spicetools_spice64_linux spicetools_stubs_kbt64 spicetools_stubs_kld64 spicetools_stubs_nvcuda spicetools_stubs_nvcuvid spicetools_stubs_nvEncodeAPI64 spicetools_sdk_sample_v0_flat_c_64 spicetools_sdk_sample_v0_cpp_64
|
set_target_properties(spicetools_spice64 spicetools_spice64_linux spicetools_stubs_kbt64 spicetools_stubs_kld64 spicetools_stubs_nvcuda spicetools_stubs_nvcuvid spicetools_stubs_nvEncodeAPI64
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/archive64"
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/archive64"
|
||||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/spicetools/64"
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/spicetools/64"
|
||||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/spicetools/64")
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/spicetools/64")
|
||||||
|
|
||||||
# forbidden static DLL import guard
|
|
||||||
###################################
|
|
||||||
# apply the check to every executable and DLL produced by this project.
|
|
||||||
get_property(spice_all_targets DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY BUILDSYSTEM_TARGETS)
|
|
||||||
foreach(spice_target IN LISTS spice_all_targets)
|
|
||||||
get_target_property(spice_target_type ${spice_target} TYPE)
|
|
||||||
if(spice_target_type STREQUAL "EXECUTABLE"
|
|
||||||
OR spice_target_type STREQUAL "SHARED_LIBRARY"
|
|
||||||
OR spice_target_type STREQUAL "MODULE_LIBRARY")
|
|
||||||
spice_guard_dll_imports(${spice_target})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
-108
@@ -1,108 +0,0 @@
|
|||||||
## Contributing
|
|
||||||
Baseline rules for patch submissions are as follows. Any patches violating the rules below will not be accepted.
|
|
||||||
|
|
||||||
To contribute, fork the repo (just the main branch), make changes in your fork, and contribute to upstream by opening a pull request to the main repo.
|
|
||||||
|
|
||||||
### Adding support for games
|
|
||||||
|
|
||||||
* No BomberGirl, as long as the Free To Play service is still alive.
|
|
||||||
* No support for that one touch screen game that dispenses plushies of mouse character (`O26`).
|
|
||||||
* No support for eaCloud ("Konasute") games.
|
|
||||||
* For a new game that was never supported (not a new version of a game, but rather a new series): please wait 1 year after official AC release in Japan.
|
|
||||||
* For new version of an already supported game: proceed with caution and use generally-accepted community guidelines.
|
|
||||||
|
|
||||||
### Pull requests that will not be accepted
|
|
||||||
|
|
||||||
* Performing decryption of encrypted files.
|
|
||||||
* Including (bundling), distributing, or linking to game data, or making it easier to find/download game data.
|
|
||||||
* Any features that [phone home](https://en.wikipedia.org/wiki/Phoning_home)
|
|
||||||
* This includes automatic updaters.
|
|
||||||
* Exception: we have allowed the "patch import from URL" feature, but this has only been done under very careful considerations and plenty of warnings to the user.
|
|
||||||
* Built-in EA server that saves data. They should live in a separate project.
|
|
||||||
* Any additions to built-in patches (modifications / removals are OK if we have a good reason).
|
|
||||||
* Changes to the software license terms.
|
|
||||||
* Localization / translation for UI text. It becomes too difficult to manage by the maintainers.
|
|
||||||
|
|
||||||
### Avoiding regressions
|
|
||||||
|
|
||||||
The biggest risk in making code changes to spice is the risk of regressions. There is a **lot** of shared code used by many different games, reaching back game versions that are more than a decade old. It is practically impossible to test all supported games and versions.
|
|
||||||
|
|
||||||
Additionally, there's a lot of code that get exercised on specific hardware - including hardware that you probably don't have access to (e.g., ICCA reader, real cabinet I/O, specific model of a IIDX controller, particular brand of touch screens...)
|
|
||||||
|
|
||||||
Therefore, when making code changes, please be extremely careful about containing / scoping your changes. Make targeted bug fixes scoped to handful of game versions and hardware configuration. When adding new features, make it off by default, unless there is a really good reason to make it the default. If you make a new default, add an option that disables it so that users can opt out as needed.
|
|
||||||
|
|
||||||
#### Config file compatibility
|
|
||||||
|
|
||||||
Do not change the names of buttons binds, analogs, strings for command line parameters, etc - since they are used as unique identifiers in config files. If they are changed, you will introduce an incompatibility with previous versions of config file.
|
|
||||||
|
|
||||||
### Code quality requirements
|
|
||||||
|
|
||||||
* Test for regressions, at least in and around the component you are modifying:
|
|
||||||
* All currently supported games / versions must continue to work.
|
|
||||||
* Backwards compatibility must be preserved, unless there is a really good reason to break it. This includes (but not limited to): global/local config files, command line parameters, game patches, device interop (e.g., card readers), and SpiceAPI / Companion interop.
|
|
||||||
* Reasonable level of compatibility with the last release of original spicetools is expected. The stated goal of spice2x is to be a drop-in replacement for spicetools.
|
|
||||||
* Simply put, if someone has an existing install of spicetools/spice2x, copying over new version of spice2x should not result in vastly different behavior or major loss of functionality.
|
|
||||||
* Make sure you compile with the included Docker script and ensure you do not introduce **any** new compiler warnings or build breaks. The Docker script is the standard build environment, your custom Linux build environment or MSVC can be used during development, but you must validate the final build using Docker.
|
|
||||||
* Do not make code changes in unrelated areas; i.e., do not run code linters and auto-formatters for parts of the code that you didn't modify.
|
|
||||||
* Try to submit smaller chunks of code, instead one gigantic patch. For example, don't submit a patch for "Improve feature XYZ"; instead, submit "Change how A works to prepare for feature XYZ" "Refactor B for feature XYZ" "Add feature B to enable feature XYZ".
|
|
||||||
* Write to the log for anything useful - it helps immensely with troubleshooting and debugging. At the same time though, avoid spamming the log for something trivial.
|
|
||||||
|
|
||||||
### UI text
|
|
||||||
spice2x has a global audience; majority of the user base do not speak English as their first language.
|
|
||||||
|
|
||||||
Use simple English, avoid colloquialism, and use concise language, even if it's slightly technical.
|
|
||||||
|
|
||||||
### Using OS APIs
|
|
||||||
|
|
||||||
Avoid making permanent changes to user's OS configuration. For example, spice must not make a call to set power profile to Maximum Performance, or switch default audio device. Making the reverse call to restore settings on game shutdown is **not** good enough; there is no guarantee that spice will gracefully shutdown, since games (or spice) can crash. This is to avoid inadvertently putting user's PC into a bad state, which can be seen as malware-like behavior.
|
|
||||||
|
|
||||||
Watch out for legacy OS compatibility. Currently, the minimum support floor is Windows 7. If you use any Windows API, make sure it's supported in Windows 7. If you need to use API that is not present in Windows 7, you must not directly link against it, otherwise spice will fail to launch on older OSes. Take a look at Windows 8 touch code (win8.cpp) for examples on how to discover OS APIs via pointers.
|
|
||||||
|
|
||||||
### Code style requirements
|
|
||||||
* Indents are four spaces.
|
|
||||||
* Try to keep under 100 characters per line. This includes comments and string literals.
|
|
||||||
* Avoid making unnecessary formatting or whitespace changes in a PR; e.g., watch out for text editor automatically stripping trailing whitespace. It pollutes the diff and slows down code review.
|
|
||||||
* For signed/unsigned integer types, prefer `cstdint` types; e.g., use `int32_t`, `uint64_t` and not `int` and `unsigned long long`.
|
|
||||||
* Always use \{ curly braces \} when appropriate; do not omit them even when it's optional; such as `for` `if` `else`, etc.
|
|
||||||
|
|
||||||
OK:
|
|
||||||
```c
|
|
||||||
if (conditional) {
|
|
||||||
DoSomething();
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Not OK:
|
|
||||||
```c
|
|
||||||
if (conditional)
|
|
||||||
DoSomething();
|
|
||||||
```
|
|
||||||
|
|
||||||
Not OK:
|
|
||||||
```c
|
|
||||||
if (conditional) DoSomething();
|
|
||||||
```
|
|
||||||
|
|
||||||
* Opening curly braces should appear at the end, not in a line on its own.
|
|
||||||
|
|
||||||
OK:
|
|
||||||
```c
|
|
||||||
if (conditional) {
|
|
||||||
DoSomething();
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Not OK:
|
|
||||||
```c
|
|
||||||
if (conditional)
|
|
||||||
{
|
|
||||||
DoSomething();
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* Please give [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) a read. A few things to point out in spice codebase:
|
|
||||||
* We don't use GSL.
|
|
||||||
* Don't throw exceptions.
|
|
||||||
* Stick to smart pointers. For interfacing with C Win32 API and raw buffers, use `unique_plain_ptr`.
|
|
||||||
* Writing in C is also completely acceptable.
|
|
||||||
* Other than that, there are no strict rules for code formatting, but please attempt to emulate the style around the code you are modifying.
|
|
||||||
@@ -1,61 +1,298 @@
|
|||||||
<br/><br/><br/><br/><br/><br/><br/><br/>
|
SpiceTools
|
||||||
|
==========
|
||||||
|
This is a loader for various arcade games developed by 573.
|
||||||
|
The project is using CMake as it's build system, with a custom build
|
||||||
|
script for making packages ready for distribution and to keep it easy
|
||||||
|
for people not knowing how to use CMake.
|
||||||
|
|
||||||
# This is the GitHub page for code development. If you just want to download the latest spice2x EXE, visit the homepage instead:
|
## Building/Distribution
|
||||||
|
|
||||||
# 🌶️🌶️ [https://spice2x.github.io/](https://spice2x.github.io/) 🌶️🌶️
|
We're currently using Arch Linux for building the binaries.
|
||||||
|
You'll need:
|
||||||
|
- MinGW-64 packages (can be found in the AUR)
|
||||||
|
- bash
|
||||||
|
- git
|
||||||
|
- zip
|
||||||
|
- upx (optional)
|
||||||
|
|
||||||
# If you have problems, read [Known Issues (FAQ)](https://github.com/spice2x/spice2x.github.io/wiki/Known-issues) wiki page first, most of your questions are already answered.
|
For any other GNU/Linux distributions (or Windows lol), you're on your
|
||||||
|
own.
|
||||||
|
|
||||||
<br/><br/><br/><br/><br/><br/><br/><br/>
|
To build the project, run:
|
||||||
|
|
||||||
# spice2x
|
$ ./build_all.sh
|
||||||
|
|
||||||
## Overview
|
## Build Configuration
|
||||||
|
|
||||||
spice2x is a continuation of SpiceTools project. Original development of [SpiceTools](https://github.com/spicetools/spicetools) has stalled in 2022; spice2x is led by a new group of developers.
|
You can tweak some settings at the beginning of the build script. You
|
||||||
|
might want to modify the paths of the toolchains if yours differ. It's
|
||||||
|
also possible to disable UPX compression and source distribution for
|
||||||
|
example.
|
||||||
|
|
||||||
spice2x team does not provide any tools to circumvent software copy protection, nor distribute any copyright-protected game data.
|
If you're not using an IDE and want to run the build script from command
|
||||||
|
line manually each time you make a change, you can set CLEAN_BUILD to 0
|
||||||
|
so it will only compile what's needed. When modifying the resources you
|
||||||
|
should build from scratch, since CMake isn't able to track changes of
|
||||||
|
those files (e.g. changelog.txt, licenses.txt).
|
||||||
|
|
||||||
[Features](https://github.com/spice2x/spice2x.github.io/wiki/spice2x-features)
|
You can put your custom build script under "build_all.local.sh" if you
|
||||||
|
don't want git to track the changes you made to the build settings.
|
||||||
|
|
||||||
[List of supported games](https://github.com/spice2x/spice2x.github.io/wiki/List-of-supported-games)
|
## Debug Build
|
||||||
|
|
||||||
## How do I set up game data & start playing?
|
To get proper stackstraces, you need to build with the DEBUG setting
|
||||||
|
enabled. This will set the CMake build type to debug and the script
|
||||||
|
will try to make use of cv2pdb.
|
||||||
|
Check external/cv2pdb/README.md for details on how to set it up.
|
||||||
|
It is required to use cv2pdb to generate PDB output, because at time of
|
||||||
|
writing, MinGW still didn't support Microsoft's proprietary file format.
|
||||||
|
|
||||||
By policy,
|
## API
|
||||||
|
|
||||||
* we do **NOT** provide links on where to acquire game data
|
SpiceTools is providing a TCP/JSON based API. You can enable it with the
|
||||||
* we do **NOT** provide tools or instructions on decrypting data
|
`-api [PORT]` option. It's recommended to also set a password with
|
||||||
* we do **NOT** provide guides on setting up & basic troubleshooting
|
`-apipass [PASS]`.
|
||||||
|
|
||||||
please do not ask for these, as it will never happen here.
|
The protocol is meant to be simple, easy to use and with few overhead.
|
||||||
|
To connect to the API, just open a TCP connection to the host computer
|
||||||
|
at the specified port.
|
||||||
|
To make a request you write the UTF-8 encoded JSON contents to the
|
||||||
|
socket. To mark the end of the request, you need to terminate the JSON
|
||||||
|
string with `0x00`. The server returns its answer on the same way,
|
||||||
|
UTF-8 encoded JSON terminated with NULL.
|
||||||
|
|
||||||
## Submitting to the Issue Tracker
|
To save space, by default the JSONs are without whitespace. To enable
|
||||||
|
pretty printing, use `-apipretty`.
|
||||||
|
|
||||||
**Please file bugs if you find them!** If you just complain about something in Discord servers, we can't see them, so they'll never be fixed.
|
If you want to test the API server without running a game, you can
|
||||||
|
run it headless via `-apidebug`.
|
||||||
|
|
||||||
Rules for filing a new issue or adding comments to existing issues in the tracker:
|
If a password is specified, both request and response are encrypted
|
||||||
|
using RC4 with the key being the password encoded in UTF-8.
|
||||||
|
While only providing weak security when the password is static,
|
||||||
|
it's simple to implement and requires no authentication protocol.
|
||||||
|
The password is also able to change dynamically, see
|
||||||
|
`control.session_refresh()` for details.
|
||||||
|
|
||||||
* Low effort submissions will be simply deleted, and repeated attempts will get you banned.
|
If you don't want to worry about all the details, you can just use one
|
||||||
* Check the [known issues](https://github.com/spice2x/spice2x.github.io/wiki/Known-issues) page first before reporting a new issue. If you have some new information or workarounds for a known issue, you can file a documentation bug as well.
|
of the supplied libraries (check /api/resources). There's also a little
|
||||||
* Use the search function and see if there is an existing issue.
|
remote control GUI available for python.
|
||||||
* This is not the place to obtain a guide or receive basic troubleshooting.
|
|
||||||
* Don't file a bug demanding game XYZ to be supported.
|
|
||||||
* **Do not upload game data - any part of it, XML files included!**
|
|
||||||
* **Do not mention or link to external websites that distribute game data!**
|
|
||||||
* **Do not link to external websites that provide guides on how to run games!**
|
|
||||||
|
|
||||||
New GitHub accounts are prevented from creating new issues to prevent spam. Maintainers of this project reserve the right to close or delete any issues that violate the rules above, or any low effort issues. If you ask for very basic troubleshooting help with setting up a game, we'll just delete them without warning.
|
### WebSocket
|
||||||
|
SpiceTools opens a WebSocket server on the specified port plus one.
|
||||||
|
That means if the API is on 1337, the WebSocket server will be on 1338.
|
||||||
|
The protocol is the very same as for the normal API, but instead of
|
||||||
|
directly sending the data over TCP you need to send binary datapackets.
|
||||||
|
The included dart spiceapi library also has a WebSocket implementation.
|
||||||
|
|
||||||
## Contributing
|
### Example Call
|
||||||
**We encourage the community to submit bugs and suggestions via the issue tracker, and to contribute code changes by opening pull requests**
|
This example inserts the a card into P1's reader slot.
|
||||||
|
If you need more examples, you can check the example code.
|
||||||
|
|
||||||
If you want to resolve any reported (or not reported) bugs, implement features, add support for new games, or fix a [known issue](https://github.com/spice2x/spice2x.github.io/wiki/Known-issues) - feel free to reach out via the Issue tracker or by opening a Pull Request. All submitted code is assumed to be GPLv3 compliant.
|
#### Request
|
||||||
|
```JSON
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"module": "card",
|
||||||
|
"function": "insert",
|
||||||
|
"params": [0, "E004010000000000"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
#### Response
|
||||||
|
```JSON
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"errors": [],
|
||||||
|
"data": []
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
We explicitly do **NOT** have a Discord server for dicussions - we try to do everything out in the open on this GitHub repo. That being said we haven't opened a Discussions tab here because we know it's going to be immediately filled with support requests.
|
### Modules
|
||||||
|
|
||||||
Please see [CONTRIBUTING page](https://github.com/spice2x/spice2x.github.io/blob/main/CONTRIBUTING.md) for a full list of guidelines when submitting code.
|
For the sake of simplifying this documentation, I will describe functions
|
||||||
|
as if they were called via a normal programming language. That means,
|
||||||
|
besides `module`/`function` needing to be set accordingly, the `params` field
|
||||||
|
must contain all the parameters described below. Some of them are optional.
|
||||||
|
The returning data will always be in the `data` field of the response.
|
||||||
|
|
||||||
## Additional information
|
Errors will be reported as strings in the `errors` field. Sometimes, you can
|
||||||
|
receive more than one error. The error messages may be changed/improved in the
|
||||||
|
future, so you shouldn't rely on them. If the error list is empty, the function
|
||||||
|
executed successfully.
|
||||||
|
|
||||||
Please read [README.md](https://github.com/spice2x/spice2x.github.io/blob/main/src/spice2x/README.md) inside `src/spice2x`.
|
The `id` of the response will always match the `id` of the request. The API
|
||||||
|
server itself doesn't expect any logic of your ID choices, however you can use
|
||||||
|
them to make sure your answers aren't arriving out of order. Currently it
|
||||||
|
doesn't matter since the TCP protocol doesn't allow for out of order data,
|
||||||
|
however this may change when/if support for UDP is being introduced. The only
|
||||||
|
restriction is that the ID has to be a valid 64-bit unsigned integer.
|
||||||
|
|
||||||
|
#### Card
|
||||||
|
- insert(index: uint, card_id: hex)
|
||||||
|
- inserts a card which gets read by the emulated card readers for the game
|
||||||
|
- index has to be either 0 (for P1) or 1 (for P2)
|
||||||
|
- card_id has to be a valid 16-character hex string
|
||||||
|
|
||||||
|
#### Coin
|
||||||
|
- get()
|
||||||
|
- returns the amount of unprocessed coins in queue
|
||||||
|
- not equal to the amount of coins shown ingame since the game may drain it
|
||||||
|
- set(amount: int)
|
||||||
|
- sets the amount of coins in queue for the game to process
|
||||||
|
- insert(amount: int)
|
||||||
|
- adds the amount to the coins in queue
|
||||||
|
- amount is optional and defaults to 1
|
||||||
|
- blocker_get()
|
||||||
|
- returns the current coin blocker state (false: open, true: closed)
|
||||||
|
|
||||||
|
#### Info
|
||||||
|
- avs()
|
||||||
|
- returns a dict including the AVS model, dest, spec, rev and ext
|
||||||
|
- launcher()
|
||||||
|
- returns a dict including the version, compile date/time, system time and
|
||||||
|
the arguments used to start the process
|
||||||
|
- memory()
|
||||||
|
- returns a dict including total, total used and bytes used by the process
|
||||||
|
for both physical and virtual RAM
|
||||||
|
|
||||||
|
#### Keypads
|
||||||
|
For all functions in this module, the keypad parameter must be
|
||||||
|
either 0 (for P1) or 1 (for P2). Accepted keypad characters are "0" to "9" for
|
||||||
|
the single digit numbers, "A" for the double zero and "D" for the decimal key.
|
||||||
|
- write(keypad: uint, input: str)
|
||||||
|
- writes all characters in input sequentially to the keypad
|
||||||
|
- this should be used for things like PIN input
|
||||||
|
- set(keypad: uint, key: char, ...)
|
||||||
|
- clears all overrides, then applies each given key as override
|
||||||
|
- if a key is overridden, it shows up as pressed in-game
|
||||||
|
- get(keypad: uint)
|
||||||
|
- returns all pressed keys of the specified keypad
|
||||||
|
|
||||||
|
#### Analogs/Buttons/Lights
|
||||||
|
All of those three modules have equally named methods for you to call.
|
||||||
|
- read()
|
||||||
|
- returns an array of state objects containing name, state and a bool
|
||||||
|
- the bool indicates if the object is active (e.g. the button was overridden)
|
||||||
|
- write([name: str, state: float], ...)
|
||||||
|
- applies the states as an override value
|
||||||
|
- the device binding via the config will be ignored while an override is set
|
||||||
|
- if an override value is set, the object will be marked as active
|
||||||
|
- write_reset([name: str], ...)
|
||||||
|
- removes the override value from the objects specified by name
|
||||||
|
- if no names were passed, all overrides will be removed
|
||||||
|
|
||||||
|
##### Additional API for lights
|
||||||
|
- read(name: string, ...)
|
||||||
|
- same as read(), but you can specify light names
|
||||||
|
- write_reset(name: str, ...)
|
||||||
|
- same as write_reset(), but it accepts a flat list of strings
|
||||||
|
|
||||||
|
#### Touch
|
||||||
|
- read()
|
||||||
|
- returns an array of state objects containing id, x and y
|
||||||
|
- write([id: uint, x: int, y: int], ...)
|
||||||
|
- adds the given touch points having an unknown ID
|
||||||
|
- overrides old touch points when the ID matches
|
||||||
|
- write_reset(id: uint, ...)
|
||||||
|
- removes the touch points matching one of the given IDs
|
||||||
|
|
||||||
|
#### Control
|
||||||
|
This module only functions if a password is being used to communicate,
|
||||||
|
with the single exception of session_refresh().
|
||||||
|
- raise(signal: str)
|
||||||
|
- raises a signal to the current process
|
||||||
|
- signal is a string and must be one of the following values:
|
||||||
|
"SIGABRT", "SIGFPE", "SIGILL", "SIGINT", "SIGSEGV", "SIGTERM"
|
||||||
|
- the signal will be raised while the message is being processed
|
||||||
|
- exit(code: int)
|
||||||
|
- code is optional and defaults to 0
|
||||||
|
- the process will end while the message is being processed
|
||||||
|
- restart()
|
||||||
|
- spawns a new instance with the same arguments as passed to the main executable
|
||||||
|
- session_refresh()
|
||||||
|
- generates a new secure password and applies it after the response
|
||||||
|
- can be used to increase the security by using the password as some kind of
|
||||||
|
session token
|
||||||
|
- recommended to call directly after connecting and once in a while for
|
||||||
|
persistent connections
|
||||||
|
- shutdown()
|
||||||
|
- tries to force shutdown the computer
|
||||||
|
- reboot()
|
||||||
|
- tries to force reboot the computer
|
||||||
|
|
||||||
|
#### Memory
|
||||||
|
This module only functions if a password is being used to communicate.
|
||||||
|
All offsets are specified in file offsets of the corresponding `dll_name`,
|
||||||
|
which also means that your hex edits are applicable directly.
|
||||||
|
- write(dll_name: str, data: hex, offset: uint)
|
||||||
|
- writes the bytes in data to the specified offset
|
||||||
|
- read(dll_name: str, offset: uint, size: uint)
|
||||||
|
- reads bytes starting from offset and returns it
|
||||||
|
- signature(dll_name: str, signature: hex, replacement: hex, offset: uint,
|
||||||
|
usage: uint)
|
||||||
|
- tries to find the signature in the module's memory
|
||||||
|
- unknown bytes are masked out via "??" (e.g. "75??90????74")
|
||||||
|
- masking out bytes works for both the signature and the replacement
|
||||||
|
- offset is the byte difference between the offset of the found signature and
|
||||||
|
the offset where the replacement data gets written to
|
||||||
|
- usage is the number of the result being used for replacement, starting at 0
|
||||||
|
- returns the offset where the replacement data gets written to
|
||||||
|
- the replacement string can be empty, so you can only get the address of the
|
||||||
|
signature while not actually replacing anything
|
||||||
|
|
||||||
|
#### IIDX
|
||||||
|
- ticker_get()
|
||||||
|
- returns a string of the characters displayed on the 16 segment display
|
||||||
|
- ticker_set(text: str)
|
||||||
|
- sets the contents of the 16 segment display and disables writes from game
|
||||||
|
- ticker_reset()
|
||||||
|
- re-enables writes from game
|
||||||
|
- tapeled_get(name: str, ...)
|
||||||
|
- returns a list containing a dict of the current tape LED states. The dict keys are:
|
||||||
|
- `Stage Left`
|
||||||
|
- `Stage Right`
|
||||||
|
- `Cabinet Left`
|
||||||
|
- `Cabinet Right`
|
||||||
|
- `Control Panel Under`
|
||||||
|
- `Ceiling Left`
|
||||||
|
- `Title Left`
|
||||||
|
- `Title Right`
|
||||||
|
- `Ceiling Right`
|
||||||
|
- `Touch Panel Left`
|
||||||
|
- `Touch Panel Right`
|
||||||
|
- `Side Panel Left Inner`
|
||||||
|
- `Side Panel Left Outer`
|
||||||
|
- `Side Panel Left`
|
||||||
|
- `Side Panel Right Outer`
|
||||||
|
- `Side Panel Right Inner`
|
||||||
|
- `Side Panel Right`
|
||||||
|
|
||||||
|
#### LCD
|
||||||
|
- info()
|
||||||
|
- returns information about the serial LCD controller some games use
|
||||||
|
|
||||||
|
#### Resize
|
||||||
|
- image_resize_enable(enable: bool)
|
||||||
|
- enables or disables image resize state
|
||||||
|
- image_resize_set_scene(scene: int)
|
||||||
|
- sets the active scene for image resize state; set to 0 to disable resize
|
||||||
|
|
||||||
|
## Native wrapper libraries
|
||||||
|
Spicetools provides wrapper libraries in: Arduino, C++, Dart, and Python.
|
||||||
|
Python is the only one that is fully spec compliant.
|
||||||
|
Other libraries may be missing features and contain bugs; please feel free to
|
||||||
|
contribute code to fill the gaps if you work on a project using these libraries.
|
||||||
|
|
||||||
|
## License
|
||||||
|
Unless otherwise noted, all files are licensed under the GPLv3.
|
||||||
|
See the LICENSE file for the full license text.
|
||||||
|
Files not originating from this project should be placed in "external",
|
||||||
|
they each have their own license.
|
||||||
|
|
||||||
|
###### What that means for you
|
||||||
|
- If you want to distribute the binaries, you'll have to include the
|
||||||
|
sources, otherwise you're violating the GPL.
|
||||||
|
- If you want to merge some of this project's code into similar
|
||||||
|
software, that software has to be put under the GPL as well.
|
||||||
|
You'll probably have to modify a lot anyways, so you can just use the
|
||||||
|
source as some kind of documentation.
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
#include "launcher/launcher.h"
|
#include "launcher/launcher.h"
|
||||||
#include "misc/wintouchemu.h"
|
#include "misc/wintouchemu.h"
|
||||||
#include "rawinput/rawinput.h"
|
#include "rawinput/rawinput.h"
|
||||||
#include "touch/native/nativetouchhook.h"
|
|
||||||
|
|
||||||
// static stuff
|
// static stuff
|
||||||
static int ACIO_WARMUP = 0;
|
static int ACIO_WARMUP = 0;
|
||||||
@@ -141,9 +140,8 @@ static int __cdecl ac_io_update(int a1) {
|
|||||||
// flush device output
|
// flush device output
|
||||||
RI_MGR->devices_flush_output();
|
RI_MGR->devices_flush_output();
|
||||||
|
|
||||||
// update touch emulation
|
// update wintouchemu
|
||||||
wintouchemu::update();
|
wintouchemu::update();
|
||||||
nativetouch::refresh_contact_lifetime();
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -35,33 +35,24 @@ struct ICCA_STATUS_LA9 {
|
|||||||
static_assert(sizeof(struct ICCA_STATUS) == 24, "ICCA_STATUS must be 24 bytes");
|
static_assert(sizeof(struct ICCA_STATUS) == 24, "ICCA_STATUS must be 24 bytes");
|
||||||
|
|
||||||
enum ICCA_WORKFLOW {
|
enum ICCA_WORKFLOW {
|
||||||
STEP = 0,
|
STEP,
|
||||||
SLEEP = 1,
|
SLEEP,
|
||||||
START = 2,
|
START,
|
||||||
INIT = 3,
|
INIT,
|
||||||
READY = 4,
|
READY,
|
||||||
GET_USERID = 5,
|
GET_USERID,
|
||||||
ACTIVE = 6,
|
ACTIVE,
|
||||||
EJECT = 7,
|
EJECT,
|
||||||
EJECT_CHECK = 8,
|
EJECT_CHECK,
|
||||||
END = 9,
|
END,
|
||||||
CLOSE_EJECT = 10,
|
CLOSE_EJECT,
|
||||||
CLOSE_E_CHK = 11,
|
CLOSE_E_CHK,
|
||||||
CLOSE_END = 12,
|
CLOSE_END,
|
||||||
ERR_GETUID = -2,
|
ERR_GETUID = -2
|
||||||
ERR_REMOVED = -11
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// used by RA as the status_code
|
|
||||||
enum ICCA_STATUS_CODE {
|
|
||||||
EMPTY = 1,
|
|
||||||
ENGAGED = 2
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ICCA_UNIT {
|
struct ICCA_UNIT {
|
||||||
struct ICCA_STATUS status {};
|
struct ICCA_STATUS status {};
|
||||||
enum ICCA_WORKFLOW state = STEP;
|
enum ICCA_WORKFLOW state = STEP;
|
||||||
enum ICCA_WORKFLOW state_jdz = SLEEP;
|
|
||||||
bool card_cmd_pressed = false;
|
bool card_cmd_pressed = false;
|
||||||
bool card_in = false;
|
bool card_in = false;
|
||||||
double card_in_time = 0.0;
|
double card_in_time = 0.0;
|
||||||
@@ -84,11 +75,6 @@ static inline int icca_get_active_count() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline int icca_get_unit_id(int unit_id) {
|
static inline int icca_get_unit_id(int unit_id) {
|
||||||
// on RA the unit_id is zero-indexed
|
|
||||||
if (avs::game::is_model("JDZ")) {
|
|
||||||
return unit_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (icca_get_active_count() < 2)
|
if (icca_get_active_count() < 2)
|
||||||
return 1;
|
return 1;
|
||||||
else {
|
else {
|
||||||
@@ -136,15 +122,9 @@ static inline void update_card(int unit_id) {
|
|||||||
IS_LAST_CARD_FELICA = is_card_uid_felica(unit->status.uid);
|
IS_LAST_CARD_FELICA = is_card_uid_felica(unit->status.uid);
|
||||||
|
|
||||||
unit->state = acio::ICCA_COMPAT_ACTIVE ? START : ACTIVE;
|
unit->state = acio::ICCA_COMPAT_ACTIVE ? START : ACTIVE;
|
||||||
unit->state_jdz = ACTIVE;
|
|
||||||
unit->status.error = 0;
|
unit->status.error = 0;
|
||||||
unit->status.front_sensor = 1;
|
|
||||||
unit->status.rear_sensor = 1;
|
|
||||||
} else {
|
} else {
|
||||||
unit->state = ERR_GETUID;
|
unit->state = ERR_GETUID;
|
||||||
unit->state_jdz = ERR_GETUID;
|
|
||||||
unit->status.front_sensor = 1;
|
|
||||||
unit->status.rear_sensor = 1;
|
|
||||||
memset(unit->status.uid, 0, 8);
|
memset(unit->status.uid, 0, 8);
|
||||||
}
|
}
|
||||||
unit->card_in = true;
|
unit->card_in = true;
|
||||||
@@ -152,25 +132,10 @@ static inline void update_card(int unit_id) {
|
|||||||
} else if (unit->state == EJECT_CHECK) {
|
} else if (unit->state == EJECT_CHECK) {
|
||||||
unit->state = SLEEP;
|
unit->state = SLEEP;
|
||||||
unit->card_in = false;
|
unit->card_in = false;
|
||||||
unit->status.front_sensor = 0;
|
|
||||||
unit->status.rear_sensor = 0;
|
|
||||||
} else if (unit->state_jdz == READY) {
|
|
||||||
unit->state = GET_USERID;
|
|
||||||
unit->state_jdz = GET_USERID;
|
|
||||||
unit->status.error = 0;
|
|
||||||
unit->status.front_sensor = 1;
|
|
||||||
unit->status.rear_sensor = 1;
|
|
||||||
unit->card_in = true;
|
|
||||||
unit->card_in_time = get_performance_seconds();
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
unit->state = acio::ICCA_COMPAT_ACTIVE ? START : ACTIVE;
|
unit->state = acio::ICCA_COMPAT_ACTIVE ? START : ACTIVE;
|
||||||
if (unit->state_jdz == READY) {
|
|
||||||
unit->state_jdz = GET_USERID;
|
|
||||||
}
|
|
||||||
unit->status.error = 0;
|
unit->status.error = 0;
|
||||||
unit->status.front_sensor = 1;
|
|
||||||
unit->status.rear_sensor = 1;
|
|
||||||
unit->card_in = true;
|
unit->card_in = true;
|
||||||
unit->card_in_time = get_performance_seconds();
|
unit->card_in_time = get_performance_seconds();
|
||||||
}
|
}
|
||||||
@@ -179,12 +144,6 @@ static inline void update_card(int unit_id) {
|
|||||||
unit->state = CLOSE_EJECT;
|
unit->state = CLOSE_EJECT;
|
||||||
if (fabs(get_performance_seconds() - unit->card_in_time) > CARD_TIMEOUT) {
|
if (fabs(get_performance_seconds() - unit->card_in_time) > CARD_TIMEOUT) {
|
||||||
unit->card_in = false;
|
unit->card_in = false;
|
||||||
memset(unit->status.uid, 0, 8);
|
|
||||||
if (unit->state_jdz == ACTIVE || unit->state_jdz == GET_USERID) {
|
|
||||||
unit->state_jdz = ERR_REMOVED;
|
|
||||||
}
|
|
||||||
unit->status.front_sensor = 0;
|
|
||||||
unit->status.rear_sensor = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -343,11 +302,7 @@ static char __cdecl ac_io_icca_get_status(void *a1, void *a2) {
|
|||||||
|
|
||||||
// copy state to output buffer
|
// copy state to output buffer
|
||||||
ICCA_UNIT *unit = &ICCA_UNITS[unit_id];
|
ICCA_UNIT *unit = &ICCA_UNITS[unit_id];
|
||||||
if (avs::game::is_model("JDZ")) {
|
unit->status.status_code = unit->state;
|
||||||
unit->status.status_code = unit->card_in ? ENGAGED : EMPTY;
|
|
||||||
} else {
|
|
||||||
unit->status.status_code = unit->state;
|
|
||||||
}
|
|
||||||
memcpy(status, &unit->status, sizeof(struct ICCA_STATUS));
|
memcpy(status, &unit->status, sizeof(struct ICCA_STATUS));
|
||||||
|
|
||||||
// funny workaround
|
// funny workaround
|
||||||
@@ -432,11 +387,6 @@ static char __cdecl ac_io_icca_req_uid(int unit_id) {
|
|||||||
static int __cdecl ac_io_icca_req_uid_isfinished(int unit_id, DWORD *read_state) {
|
static int __cdecl ac_io_icca_req_uid_isfinished(int unit_id, DWORD *read_state) {
|
||||||
unit_id = icca_get_unit_id(unit_id);
|
unit_id = icca_get_unit_id(unit_id);
|
||||||
ICCA_UNIT *unit = &ICCA_UNITS[unit_id];
|
ICCA_UNIT *unit = &ICCA_UNITS[unit_id];
|
||||||
if (avs::game::is_model("JDZ")) {
|
|
||||||
// hack for RA - only ever seen it as this
|
|
||||||
*read_state = 8;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (unit->card_in) {
|
if (unit->card_in) {
|
||||||
if (fabs(get_performance_seconds() - unit->card_in_time) < CARD_TIMEOUT) {
|
if (fabs(get_performance_seconds() - unit->card_in_time) < CARD_TIMEOUT) {
|
||||||
unit->state = END;
|
unit->state = END;
|
||||||
@@ -453,61 +403,16 @@ static int __cdecl ac_io_icca_send_keep_alive_packet(int a1, int a2, int a3) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __cdecl ac_io_icca_workflow_jdz(int workflow, int unit_id) {
|
|
||||||
|
|
||||||
unit_id = icca_get_unit_id(unit_id);
|
|
||||||
ICCA_UNIT *unit = &ICCA_UNITS[unit_id];
|
|
||||||
switch (workflow) {
|
|
||||||
// RA uses "STEP" as more of a polling thing it seems
|
|
||||||
case STEP:
|
|
||||||
switch (unit->state_jdz) {
|
|
||||||
case CLOSE_EJECT:
|
|
||||||
unit->state_jdz = CLOSE_E_CHK;
|
|
||||||
break;
|
|
||||||
case CLOSE_E_CHK:
|
|
||||||
unit->state_jdz = CLOSE_END;
|
|
||||||
break;
|
|
||||||
case CLOSE_END:
|
|
||||||
unit->state_jdz = SLEEP;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SLEEP:
|
|
||||||
unit->state = SLEEP;
|
|
||||||
break;
|
|
||||||
case START:
|
|
||||||
unit->state_jdz = INIT;
|
|
||||||
break;
|
|
||||||
case INIT:
|
|
||||||
case READY:
|
|
||||||
unit->state_jdz = READY;
|
|
||||||
break;
|
|
||||||
case CLOSE_EJECT:
|
|
||||||
unit->state_jdz = CLOSE_EJECT;
|
|
||||||
return CLOSE_E_CHK;
|
|
||||||
case CLOSE_END:
|
|
||||||
unit->state_jdz = SLEEP;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// should probably log a warning here
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return unit->state_jdz;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __cdecl ac_io_icca_workflow(int workflow, int unit_id) {
|
static int __cdecl ac_io_icca_workflow(int workflow, int unit_id) {
|
||||||
// RA uses a different workflow process for the slotted readers; treat it differently
|
|
||||||
if (avs::game::is_model("JDZ")) {
|
|
||||||
return ac_io_icca_workflow_jdz(workflow, unit_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
unit_id = icca_get_unit_id(unit_id);
|
unit_id = icca_get_unit_id(unit_id);
|
||||||
ICCA_UNIT *unit = &ICCA_UNITS[unit_id];
|
ICCA_UNIT *unit = &ICCA_UNITS[unit_id];
|
||||||
switch (workflow) {
|
switch (workflow) {
|
||||||
case STEP:
|
case STEP:
|
||||||
unit->state = STEP;
|
if (avs::game::is_model("JDZ"))
|
||||||
|
unit->state = SLEEP;
|
||||||
|
else
|
||||||
|
unit->state = STEP;
|
||||||
break;
|
break;
|
||||||
case SLEEP:
|
case SLEEP:
|
||||||
unit->state = SLEEP;
|
unit->state = SLEEP;
|
||||||
@@ -536,6 +441,7 @@ static int __cdecl ac_io_icca_workflow(int workflow, int unit_id) {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return unit->state;
|
return unit->state;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -561,14 +467,6 @@ acio::ICCAModule::ICCAModule(HMODULE module, acio::HookMode hookMode) : ACIOModu
|
|||||||
void acio::ICCAModule::attach() {
|
void acio::ICCAModule::attach() {
|
||||||
ACIOModule::attach();
|
ACIOModule::attach();
|
||||||
|
|
||||||
// workaround for RA; ac_io_icca_cardunit_init is never called so treat like both are initialized
|
|
||||||
if (avs::game::is_model("JDZ")) {
|
|
||||||
ICCA_UNITS[0].initialized = true;
|
|
||||||
ICCA_UNITS[1].initialized = true;
|
|
||||||
|
|
||||||
CARD_TIMEOUT = 10.0; // keep the card in the slot for longer
|
|
||||||
}
|
|
||||||
|
|
||||||
// hooks
|
// hooks
|
||||||
ACIO_MODULE_HOOK(ac_io_icca_cardunit_init);
|
ACIO_MODULE_HOOK(ac_io_icca_cardunit_init);
|
||||||
ACIO_MODULE_HOOK(ac_io_icca_cardunit_init_isfinished);
|
ACIO_MODULE_HOOK(ac_io_icca_cardunit_init_isfinished);
|
||||||
@@ -1,16 +1,13 @@
|
|||||||
#include "mdxf.h"
|
#include "mdxf.h"
|
||||||
#include "mdxf_poll.h"
|
#include "mdxf_poll.h"
|
||||||
|
|
||||||
#include <mutex>
|
|
||||||
|
|
||||||
#include "avs/game.h"
|
#include "avs/game.h"
|
||||||
#include "games/ddr/ddr.h"
|
|
||||||
#include "games/ddr/io.h"
|
#include "games/ddr/io.h"
|
||||||
#include "launcher/launcher.h"
|
#include "launcher/launcher.h"
|
||||||
#include "rawinput/rawinput.h"
|
#include "rawinput/rawinput.h"
|
||||||
#include "util/logging.h"
|
#include "util/logging.h"
|
||||||
#include "util/precise_timer.h"
|
|
||||||
#include "util/utils.h"
|
#include "util/utils.h"
|
||||||
|
#include <mutex>
|
||||||
|
|
||||||
#define MDFX_DEBUG_VERBOSE 0
|
#define MDFX_DEBUG_VERBOSE 0
|
||||||
|
|
||||||
@@ -111,10 +108,9 @@ static void mdxf_thread_start() {
|
|||||||
MDXF_THREAD = std::thread([] {
|
MDXF_THREAD = std::thread([] {
|
||||||
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);
|
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);
|
||||||
|
|
||||||
timeutils::PreciseSleepTimer timer;
|
|
||||||
while (MDXF_THREAD_RUNNING.load(std::memory_order_acquire)) {
|
while (MDXF_THREAD_RUNNING.load(std::memory_order_acquire)) {
|
||||||
mdxf_poll(false);
|
mdxf_poll(false);
|
||||||
timer.sleep(THREAD_PERIOD);
|
std::this_thread::sleep_for(THREAD_PERIOD);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -361,17 +357,14 @@ static bool __cdecl ac_io_mdxf_update_control_status_buffer_impl(int node, MDXFP
|
|||||||
|
|
||||||
// decide on button map
|
// decide on button map
|
||||||
const size_t *button_map = nullptr;
|
const size_t *button_map = nullptr;
|
||||||
int player = 0;
|
|
||||||
switch (node) {
|
switch (node) {
|
||||||
case 17:
|
case 17:
|
||||||
case 25:
|
case 25:
|
||||||
button_map = &buttons_p1[0];
|
button_map = &buttons_p1[0];
|
||||||
player = 1;
|
|
||||||
break;
|
break;
|
||||||
case 18:
|
case 18:
|
||||||
case 26:
|
case 26:
|
||||||
button_map = &buttons_p2[0];
|
button_map = &buttons_p2[0];
|
||||||
player = 2;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -381,27 +374,19 @@ static bool __cdecl ac_io_mdxf_update_control_status_buffer_impl(int node, MDXFP
|
|||||||
if (source == EXTERNAL_POLL) {
|
if (source == EXTERNAL_POLL) {
|
||||||
// get buttons
|
// get buttons
|
||||||
auto &buttons = games::ddr::get_buttons();
|
auto &buttons = games::ddr::get_buttons();
|
||||||
|
|
||||||
// get analogs
|
|
||||||
bool analog_left = false;
|
|
||||||
bool analog_right = false;
|
|
||||||
games::ddr::get_analog_x_axis(player, analog_left, analog_right);
|
|
||||||
bool analog_up = false;
|
|
||||||
bool analog_down = false;
|
|
||||||
games::ddr::get_analog_y_axis(player, analog_up, analog_down);
|
|
||||||
|
|
||||||
uint8_t up_down = 0;
|
uint8_t up_down = 0;
|
||||||
uint8_t left_right = 0;
|
uint8_t left_right = 0;
|
||||||
if (GameAPI::Buttons::getState(RI_MGR, buttons.at(button_map[0])) || analog_up) {
|
|
||||||
|
if (GameAPI::Buttons::getState(RI_MGR, buttons.at(button_map[0]))) {
|
||||||
up_down |= 0xF0;
|
up_down |= 0xF0;
|
||||||
}
|
}
|
||||||
if (GameAPI::Buttons::getState(RI_MGR, buttons.at(button_map[1])) || analog_down) {
|
if (GameAPI::Buttons::getState(RI_MGR, buttons.at(button_map[1]))) {
|
||||||
up_down |= 0x0F;
|
up_down |= 0x0F;
|
||||||
}
|
}
|
||||||
if (GameAPI::Buttons::getState(RI_MGR, buttons.at(button_map[2])) || analog_left) {
|
if (GameAPI::Buttons::getState(RI_MGR, buttons.at(button_map[2]))) {
|
||||||
left_right |= 0xF0;
|
left_right |= 0xF0;
|
||||||
}
|
}
|
||||||
if (GameAPI::Buttons::getState(RI_MGR, buttons.at(button_map[3])) || analog_right) {
|
if (GameAPI::Buttons::getState(RI_MGR, buttons.at(button_map[3]))) {
|
||||||
left_right |= 0x0F;
|
left_right |= 0x0F;
|
||||||
}
|
}
|
||||||
current_state = (uint16_t(up_down) << 8) | left_right;
|
current_state = (uint16_t(up_down) << 8) | left_right;
|
||||||
@@ -515,4 +500,4 @@ acio::MDXFModule::~MDXFModule() {
|
|||||||
if (IS_THREAD_NEEDED) {
|
if (IS_THREAD_NEEDED) {
|
||||||
mdxf_thread_stop();
|
mdxf_thread_stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
#include "rawinput/rawinput.h"
|
#include "rawinput/rawinput.h"
|
||||||
#include "games/nost/io.h"
|
#include "games/nost/io.h"
|
||||||
#include "games/nost/nost.h"
|
#include "games/nost/nost.h"
|
||||||
#include "games/nost/touch_mode.h"
|
|
||||||
#include "util/logging.h"
|
#include "util/logging.h"
|
||||||
#include "avs/game.h"
|
#include "avs/game.h"
|
||||||
|
|
||||||
@@ -17,7 +16,6 @@ using namespace GameAPI;
|
|||||||
// static stuff
|
// static stuff
|
||||||
static uint8_t STATUS_BUFFER[277];
|
static uint8_t STATUS_BUFFER[277];
|
||||||
static bool STATUS_BUFFER_FREEZE = false;
|
static bool STATUS_BUFFER_FREEZE = false;
|
||||||
static constexpr uint8_t NOST_TOUCH_PIANO_VELOCITY = 11;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Implementations
|
* Implementations
|
||||||
@@ -228,8 +226,6 @@ static bool __cdecl ac_io_panb_update_control_status_buffer() {
|
|||||||
games::nost::Analogs::Key27, games::nost::Analogs::Key28,
|
games::nost::Analogs::Key27, games::nost::Analogs::Key28,
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto touch_key_state = games::nost::touch_mode::piano_key_state();
|
|
||||||
|
|
||||||
// iterate pairs of keys
|
// iterate pairs of keys
|
||||||
for (size_t key_pair = 0; key_pair < 28 / 2; key_pair++) {
|
for (size_t key_pair = 0; key_pair < 28 / 2; key_pair++) {
|
||||||
|
|
||||||
@@ -261,10 +257,6 @@ static bool __cdecl ac_io_panb_update_control_status_buffer() {
|
|||||||
if (button0 > 0) {
|
if (button0 > 0) {
|
||||||
state0 = button0;
|
state0 = button0;
|
||||||
}
|
}
|
||||||
if ((touch_key_state & (UINT32_C(1) << (key_pair * 2))) &&
|
|
||||||
state0 < NOST_TOUCH_PIANO_VELOCITY) {
|
|
||||||
state0 = NOST_TOUCH_PIANO_VELOCITY;
|
|
||||||
}
|
|
||||||
|
|
||||||
const auto button1 = panb_get_button_velocity(
|
const auto button1 = panb_get_button_velocity(
|
||||||
buttons.at(button_mapping[key_pair * 2 + 1]),
|
buttons.at(button_mapping[key_pair * 2 + 1]),
|
||||||
@@ -275,10 +267,6 @@ static bool __cdecl ac_io_panb_update_control_status_buffer() {
|
|||||||
if (button1 > 0) {
|
if (button1 > 0) {
|
||||||
state1 = button1;
|
state1 = button1;
|
||||||
}
|
}
|
||||||
if ((touch_key_state & (UINT32_C(1) << (key_pair * 2 + 1))) &&
|
|
||||||
state1 < NOST_TOUCH_PIANO_VELOCITY) {
|
|
||||||
state1 = NOST_TOUCH_PIANO_VELOCITY;
|
|
||||||
}
|
|
||||||
|
|
||||||
// build value
|
// build value
|
||||||
uint8_t value = 0;
|
uint8_t value = 0;
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <cstdint>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "util/circular_buffer.h"
|
#include "util/circular_buffer.h"
|
||||||
@@ -5,7 +5,6 @@
|
|||||||
#include "games/sdvx/sdvx.h"
|
#include "games/sdvx/sdvx.h"
|
||||||
#include "misc/eamuse.h"
|
#include "misc/eamuse.h"
|
||||||
#include "util/logging.h"
|
#include "util/logging.h"
|
||||||
#include "util/precise_timer.h"
|
|
||||||
#include "util/utils.h"
|
#include "util/utils.h"
|
||||||
|
|
||||||
using namespace acioemu;
|
using namespace acioemu;
|
||||||
@@ -47,12 +46,11 @@ ICCADevice::ICCADevice(bool flip_order, bool keypad_thread, uint8_t node_count)
|
|||||||
// keypad thread for faster polling
|
// keypad thread for faster polling
|
||||||
if (keypad_thread) {
|
if (keypad_thread) {
|
||||||
this->keypad_thread = new std::thread([this]() {
|
this->keypad_thread = new std::thread([this]() {
|
||||||
timeutils::PreciseSleepTimer timer;
|
|
||||||
while (this->cards) {
|
while (this->cards) {
|
||||||
for (int unit = 0; unit < this->node_count; unit++) {
|
for (int unit = 0; unit < this->node_count; unit++) {
|
||||||
this->update_keypad(unit, false);
|
this->update_keypad(unit, false);
|
||||||
}
|
}
|
||||||
timer.sleep(7);
|
Sleep(7);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -239,7 +237,7 @@ bool ICCADevice::parse_msg(MessageData *msg_in,
|
|||||||
// SDVX Old cabinet mode
|
// SDVX Old cabinet mode
|
||||||
if (avs::game::is_model("KFC") && avs::game::SPEC[0] != 'G' && avs::game::SPEC[0] != 'H')
|
if (avs::game::is_model("KFC") && avs::game::SPEC[0] != 'G' && avs::game::SPEC[0] != 'H')
|
||||||
answer_type = 1;
|
answer_type = 1;
|
||||||
if (avs::game::is_model({ "L44", "T44" }))
|
if (avs::game::is_model("L44"))
|
||||||
answer_type = 2;
|
answer_type = 2;
|
||||||
|
|
||||||
// check answer type
|
// check answer type
|
||||||
@@ -11,8 +11,6 @@
|
|||||||
#include "util/logging.h"
|
#include "util/logging.h"
|
||||||
#include "util/utils.h"
|
#include "util/utils.h"
|
||||||
|
|
||||||
#include "overlay/notifications.h"
|
|
||||||
|
|
||||||
#include "module.h"
|
#include "module.h"
|
||||||
#include "modules/analogs.h"
|
#include "modules/analogs.h"
|
||||||
#include "modules/buttons.h"
|
#include "modules/buttons.h"
|
||||||
@@ -199,9 +197,6 @@ void Controller::connection_handler(api::ClientState client_state) {
|
|||||||
|
|
||||||
// log connection
|
// log connection
|
||||||
log_info("api", "client connected: {}", client_address_str);
|
log_info("api", "client connected: {}", client_address_str);
|
||||||
overlay::notifications::add(
|
|
||||||
overlay::notifications::Severity::Success,
|
|
||||||
fmt::format("API client connected ({})", client_address_str));
|
|
||||||
client_states_m.lock();
|
client_states_m.lock();
|
||||||
client_states.emplace_back(&client_state);
|
client_states.emplace_back(&client_state);
|
||||||
client_states_m.unlock();
|
client_states_m.unlock();
|
||||||
@@ -282,9 +277,6 @@ void Controller::connection_handler(api::ClientState client_state) {
|
|||||||
|
|
||||||
// log disconnect
|
// log disconnect
|
||||||
log_info("api", "client disconnected: {}", client_address_str);
|
log_info("api", "client disconnected: {}", client_address_str);
|
||||||
overlay::notifications::add(
|
|
||||||
overlay::notifications::Severity::Info,
|
|
||||||
fmt::format("API client disconnected ({})", client_address_str));
|
|
||||||
client_states_m.lock();
|
client_states_m.lock();
|
||||||
client_states.erase(std::remove(client_states.begin(), client_states.end(), &client_state));
|
client_states.erase(std::remove(client_states.begin(), client_states.end(), &client_state));
|
||||||
client_states_m.unlock();
|
client_states_m.unlock();
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user