Initial re-upload
This commit is contained in:
commit
dfaf87100e
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
/bin/
|
||||||
|
/build/
|
||||||
|
/local/
|
||||||
|
|
12
.gitmodules
vendored
Executable file
12
.gitmodules
vendored
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
[submodule "lib/cmake-various"]
|
||||||
|
path = lib/cmake-various
|
||||||
|
url = https://codeberg.org/lilium/cmake-various.git
|
||||||
|
branch = master
|
||||||
|
[submodule "lib/exec_u001"]
|
||||||
|
path = lib/exec_u001
|
||||||
|
url = https://codeberg.org/lilium/exec_u001.git
|
||||||
|
branch = master
|
||||||
|
[submodule "lib/minhook"]
|
||||||
|
path = lib/minhook
|
||||||
|
url = https://github.com/TsudaKageyu/minhook.git
|
||||||
|
branch = master
|
8
.idea/.gitignore
vendored
Normal file
8
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
1
.idea/.name
Normal file
1
.idea/.name
Normal file
@ -0,0 +1 @@
|
|||||||
|
hooks-ac
|
11
.idea/cmake.xml
Normal file
11
.idea/cmake.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CMakeSharedSettings">
|
||||||
|
<configurations>
|
||||||
|
<configuration PROFILE_NAME="Release_x86 [WIN32]" ENABLED="true" GENERATION_DIR="build/x86/Release/win_gcc" CONFIG_NAME="Release" TOOLCHAIN_NAME="MinGW [Crosscompile]" GENERATION_OPTIONS="-DCMAKE_TOOLCHAIN_FILE="lib/cmake-various/toolchain/toolchain-mingw_nix-win-x86.cmake"" NO_GENERATOR="true" />
|
||||||
|
<configuration PROFILE_NAME="Debug_x86 [WIN32]" ENABLED="true" GENERATION_DIR="build/x86/Debug/win_gcc" CONFIG_NAME="Debug" TOOLCHAIN_NAME="MinGW [Crosscompile]" GENERATION_OPTIONS="-DCMAKE_TOOLCHAIN_FILE="lib/cmake-various/toolchain/toolchain-mingw_nix-win-x86.cmake"" NO_GENERATOR="true" />
|
||||||
|
<configuration PROFILE_NAME="Debug_x64 [WIN32]" ENABLED="true" GENERATION_DIR="build/x64/Debug/win_gcc" CONFIG_NAME="Debug" TOOLCHAIN_NAME="MinGW [Crosscompile]" GENERATION_OPTIONS="-DCMAKE_TOOLCHAIN_FILE="lib/cmake-various/toolchain/toolchain-mingw_nix-win-x64.cmake"" NO_GENERATOR="true" />
|
||||||
|
<configuration PROFILE_NAME="Release_x64 [WIN32]" ENABLED="true" GENERATION_DIR="build/x64/Release/win_gcc" CONFIG_NAME="Release" TOOLCHAIN_NAME="MinGW [Crosscompile]" GENERATION_OPTIONS="-DCMAKE_TOOLCHAIN_FILE="lib/cmake-various/toolchain/toolchain-mingw_nix-win-x64.cmake"" NO_GENERATOR="true" />
|
||||||
|
</configurations>
|
||||||
|
</component>
|
||||||
|
</project>
|
2
.idea/hooks.iml
Normal file
2
.idea/hooks.iml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module classpath="CMake" type="CPP_MODULE" version="4" />
|
73
.idea/inspectionProfiles/Project_Default.xml
Normal file
73
.idea/inspectionProfiles/Project_Default.xml
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<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="ReassignedToPlainText" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<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>
|
10
.idea/markdown-navigator-enh.xml
Normal file
10
.idea/markdown-navigator-enh.xml
Normal file
@ -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>
|
71
.idea/markdown-navigator.xml
Normal file
71
.idea/markdown-navigator.xml
Normal file
@ -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>
|
15
.idea/misc.xml
Normal file
15
.idea/misc.xml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
|
||||||
|
<component name="CidrRootsConfiguration">
|
||||||
|
<sourceRoots>
|
||||||
|
<file path="$PROJECT_DIR$/src" />
|
||||||
|
</sourceRoots>
|
||||||
|
<excludeRoots>
|
||||||
|
<file path="$PROJECT_DIR$/bin" />
|
||||||
|
<file path="$PROJECT_DIR$/build" />
|
||||||
|
<file path="$PROJECT_DIR$/lib" />
|
||||||
|
<file path="$PROJECT_DIR$/local" />
|
||||||
|
</excludeRoots>
|
||||||
|
</component>
|
||||||
|
</project>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/hooks.iml" filepath="$PROJECT_DIR$/.idea/hooks.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
21
CMakeLists.txt
Executable file
21
CMakeLists.txt
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
## Global settings ##
|
||||||
|
# Solution name and CMake version used
|
||||||
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
project(hooks-ac)
|
||||||
|
include("${CMAKE_TOOLCHAIN_FILE}")
|
||||||
|
include(lib/cmake-various/extension/PrecompiledHeader.cmake)
|
||||||
|
include(lib/cmake-various/extension/CMakeEx.cmake)
|
||||||
|
target_init_build_revision(CMAKE)
|
||||||
|
message(STATUS "BuildRevision is ${CMAKE_BuildRevision}")
|
||||||
|
|
||||||
|
## Load main config ##
|
||||||
|
if (CMAKE_SYSTEM_NAME MATCHES ".*[W|w]indows.*")
|
||||||
|
include(CMakeLists_win-gcc.cmake)
|
||||||
|
else ()
|
||||||
|
message(FATAL_ERROR "Unsupported target platform")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
## Post-setup Info ##
|
||||||
|
message(STATUS "Configuration name: ${TOOLCHAIN_CONFIG}")
|
||||||
|
message(STATUS "Target OS: ${CMAKE_SYSTEM_NAME}")
|
||||||
|
message(STATUS "Target Arch: ${CMAKE_SYSTEM_PROCESSOR}")
|
46
CMakeLists_win-gcc.cmake
Executable file
46
CMakeLists_win-gcc.cmake
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
## Global settings ##
|
||||||
|
# Binaries prefix
|
||||||
|
set(CMAKE_STATIC_LIBRARY_PREFIX "")
|
||||||
|
set(CMAKE_SHARED_LIBRARY_PREFIX "")
|
||||||
|
set(CMAKE_IMPORT_LIBRARY_PREFIX "")
|
||||||
|
# Binaries output directory
|
||||||
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/bin/${TOOLCHAIN_CONFIG}")
|
||||||
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/bin/${TOOLCHAIN_CONFIG}")
|
||||||
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/bin/${TOOLCHAIN_CONFIG}")
|
||||||
|
# Compilation profile specific
|
||||||
|
set(CMAKE_C_STANDARD 11)
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
|
||||||
|
endif ()
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti")
|
||||||
|
# Compiler stage
|
||||||
|
add_compile_definitions(CMAKE_BUILD WINDOWS_TARGET)
|
||||||
|
add_compile_options(-Wall -Wextra -Wno-attributes -Wno-pragmas -Wno-unknown-pragmas -Wno-eof-newline -Wno-deprecated-declarations -Wenum-conversion -Wno-unused-function -Wno-unused-parameter)
|
||||||
|
add_compile_options(-fPIC)
|
||||||
|
include_directories(
|
||||||
|
lib/win_gcc/include
|
||||||
|
lib/nix_gcc/include/${TOOLCHAIN_TARGET_ARCH}
|
||||||
|
)
|
||||||
|
# Linker stage
|
||||||
|
link_directories(
|
||||||
|
"${PROJECT_SOURCE_DIR}/lib/win_gcc"
|
||||||
|
"${PROJECT_SOURCE_DIR}/lib/win_gcc/${TOOLCHAIN_TARGET_ARCH}"
|
||||||
|
"${PROJECT_SOURCE_DIR}/lib/win_gcc/${TOOLCHAIN_TARGET_ARCH}/dll"
|
||||||
|
)
|
||||||
|
|
||||||
|
## Add projects ##
|
||||||
|
# hooking support
|
||||||
|
add_subdirectory(
|
||||||
|
lib/minhook
|
||||||
|
)
|
||||||
|
# omnimix banner coloring
|
||||||
|
add_subdirectory(
|
||||||
|
src/omnimix-banner
|
||||||
|
)
|
||||||
|
# omnimix clear/combo data
|
||||||
|
add_subdirectory(
|
||||||
|
src/omnimix-dataloader
|
||||||
|
)
|
43
src/omnimix-banner/CMakeLists.txt
Executable file
43
src/omnimix-banner/CMakeLists.txt
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
## omnimix_banner.shared ##
|
||||||
|
set(target_name "omnimix_banner")
|
||||||
|
file(GLOB_RECURSE FILE_${target_name} CONFIGURE_DEPENDS "*.c")
|
||||||
|
add_library(${target_name} SHARED ${FILE_${target_name}})
|
||||||
|
|
||||||
|
# Local #define
|
||||||
|
target_compile_definitions(${target_name} PRIVATE
|
||||||
|
BIN_BUILDREV="${CMAKE_BuildRevision}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Local includes (#include "" | gcc -iquote)
|
||||||
|
target_include_directories_quote(${target_name} PRIVATE
|
||||||
|
.
|
||||||
|
Style
|
||||||
|
)
|
||||||
|
|
||||||
|
# External includes (#include <> | gcc -I)
|
||||||
|
target_include_directories(${target_name} PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR}/lib/mihook/include
|
||||||
|
)
|
||||||
|
|
||||||
|
# Force includes (include for every file | gcc -include)
|
||||||
|
target_force_include(${target_name} QUOTE
|
||||||
|
)
|
||||||
|
|
||||||
|
# Local dynamic linker (compiled libraries) - referenced libraries
|
||||||
|
target_link_libraries(${target_name} PRIVATE
|
||||||
|
minhook
|
||||||
|
)
|
||||||
|
|
||||||
|
# External dynamic linker (binary libraries) - external/system libraries
|
||||||
|
target_link_libraries(${target_name} PRIVATE
|
||||||
|
)
|
||||||
|
|
||||||
|
# Post build hooks
|
||||||
|
target_init_vsmacro(${target_name})
|
||||||
|
execute_process(
|
||||||
|
COMMAND python "${SolutionDir}lib/exec_u001/main.py" "--root=${SolutionDir}" "--exiv=${ProjectDir}on_init.exiv" "-m:ProjectDir=${ProjectDir}" "-m:TargetDir=${TargetDir}" "-m:PlatformTarget=${PlatformTarget}" "-m:PlatformLib=nix_gcc"
|
||||||
|
)
|
||||||
|
add_custom_command(TARGET ${target_name}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND python "${SolutionDir}lib/exec_u001/main.py" "--root=${SolutionDir}" "--exiv=${ProjectDir}on_compiled.exiv" "-m:ProjectDir=${ProjectDir}" "-m:TargetDir=${TargetDir}" "-m:PlatformTarget=${PlatformTarget}" "-m:PlatformLib=nix_gcc"
|
||||||
|
)
|
45
src/omnimix-banner/Style/iidx25.h
Normal file
45
src/omnimix-banner/Style/iidx25.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#ifndef _IIDX25_H
|
||||||
|
#define _IIDX25_H
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
|
||||||
|
static const ob_payload_t REV_20180919 = {
|
||||||
|
.revision ="20180919",
|
||||||
|
.songdb_va = 0x265A35,
|
||||||
|
.banner_va = 0xB6DF0,
|
||||||
|
.song_by_id = (const uint16_t[]) {
|
||||||
|
1002, 1007, 1011, 1012, 1016, 1018, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
|
||||||
|
1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1401, 1402, 2001, 2004, 2007, 2009,
|
||||||
|
2010, 2011, 2013, 2014, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212,
|
||||||
|
3002, 3003, 3014, 3015, 3016, 3017, 3018, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209,
|
||||||
|
3210, 3211, 3212, 3213, 4009, 4010, 4011, 4013, 4018, 4019, 4022, 4024, 4026, 4028, 4031, 4202,
|
||||||
|
4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4214, 4215, 4216, 5001, 5002, 5003,
|
||||||
|
5005, 5006, 5008, 5013, 5020, 5022, 5023, 5026, 5027, 5029, 5201, 5202, 5203, 5204, 5205, 5206,
|
||||||
|
5207, 5208, 5209, 6000, 6002, 6006, 6009, 6014, 6017, 6020, 6023, 6024, 6025, 6026, 6030, 6201,
|
||||||
|
6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6211, 7000, 7001, 7005, 7007, 7009, 7012, 7013,
|
||||||
|
7015, 7017, 7019, 7020, 7023, 7025, 7027, 7028, 7029, 7030, 7031, 7033, 7035, 7201, 7202, 7203,
|
||||||
|
8002, 8007, 8010, 8011, 8012, 8014, 8015, 8016, 8019, 8021, 8022, 8030, 8033, 8034, 8035, 8036,
|
||||||
|
8038, 8041, 8042, 8046, 8201, 8202, 8203, 8204, 9003, 9004, 9005, 9007, 9008, 9009, 9013, 9014,
|
||||||
|
9017, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9031, 9032, 9035, 9036, 9040, 9041, 9043, 9047,
|
||||||
|
9049, 9050, 9053, 9056, 9201, 9202, 9204, 9401, 9402, 9403, 9404, 9405, 9406, 10003, 10007, 10008,
|
||||||
|
10011, 10012, 10014, 10015, 10021, 10026, 10027, 10029, 10030, 10031, 10032, 10037, 10039, 10043, 10044, 10045,
|
||||||
|
10050, 10051, 10054, 10201, 10204, 10205, 10206, 11003, 11006, 11016, 11017, 11020, 11021, 11022, 11023, 11024,
|
||||||
|
11027, 11029, 11039, 11041, 11042, 11044, 11045, 11046, 11047, 11048, 11049, 11201, 11202, 11203, 12001, 12024,
|
||||||
|
12032, 12033, 12035, 12039, 12042, 12044, 12046, 12047, 12048, 12202, 12203, 12205, 13004, 13007, 13008, 13012,
|
||||||
|
13016, 13018, 13020, 13022, 13023, 13027, 13030, 13033, 13036, 13042, 13043, 13045, 13049, 13201, 13202, 13203,
|
||||||
|
13204, 13205, 13206, 13207, 13208, 13209, 13211, 13212, 13213, 13214, 14010, 14013, 14017, 14024, 14025, 14026,
|
||||||
|
14027, 14032, 14034, 14036, 14041, 14042, 14045, 14048, 14054, 14057, 14201, 14203, 14204, 14205, 14206, 14207,
|
||||||
|
14212, 14213, 15012, 15017, 15033, 15034, 15035, 15036, 15037, 15042, 15046, 15047, 15050, 15051, 15052, 15203,
|
||||||
|
15206, 15210, 15212, 15213, 15214, 15216, 16007, 16012, 16018, 16041, 16044, 16046, 16047, 16048, 16201, 16202,
|
||||||
|
16203, 16204, 16206, 16208, 16210, 16211, 17010, 17011, 17018, 17019, 17029, 17030, 17031, 17036, 17038, 17042,
|
||||||
|
17045, 17047, 17048, 17049, 17100, 18016, 18026, 18031, 18033, 18034, 18037, 18038, 18041, 18046, 18048, 18049,
|
||||||
|
18052, 18063, 18070, 18102, 18201, 18202, 19012, 19017, 19021, 19023, 19041, 19043, 19044, 19061, 19066, 20001,
|
||||||
|
20010, 20014, 20034, 20042, 20045, 20056, 20057, 20060, 20069, 20076, 20092, 21010, 21017, 21036, 21046, 21054,
|
||||||
|
21057, 21070, 21071, 21074, 21075, 21080, 21086, 21201, 21204, 21205, 21206, 21207, 21208, 21209, 21210, 21211,
|
||||||
|
21212, 21215, 21216, 21217, 21218, 21219, 21222, 21223, 21224, 21227, 21228, 21229, 21232, 21233, 21234, 21235,
|
||||||
|
21236, 21238, 21239, 21240, 21241, 21244, 21245, 21246, 21247, 21248, 21249, 21250, 21252, 21254, 21255, 21256,
|
||||||
|
21257, 21259, 21260, 21261, 21263, 21264, 21265, 22020, 22036, 22050, 22066, 22072, 22081, 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
86
src/omnimix-banner/Style/iidx26.h
Normal file
86
src/omnimix-banner/Style/iidx26.h
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
#ifndef _IIDX26_H
|
||||||
|
#define _IIDX26_H
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
|
||||||
|
static const ob_payload_t REV_20190902 = {
|
||||||
|
.revision ="20190902",
|
||||||
|
.songdb_va = 0x53D785,
|
||||||
|
.banner_va = 0x16E4F0,
|
||||||
|
.song_by_id = (const uint16_t[]) {
|
||||||
|
1002, 1007, 1011, 1012, 1013, 1016, 1018, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209,
|
||||||
|
1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1401, 1402, 2001, 2002, 2004,
|
||||||
|
2007, 2009, 2010, 2011, 2013, 2014, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210,
|
||||||
|
2211, 2212, 3002, 3003, 3014, 3015, 3016, 3017, 3018, 3201, 3202, 3203, 3204, 3205, 3206, 3207,
|
||||||
|
3208, 3209, 3210, 3211, 3212, 3213, 4009, 4010, 4011, 4013, 4018, 4019, 4022, 4024, 4026, 4028,
|
||||||
|
4030, 4031, 4202, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4214, 4215, 4216,
|
||||||
|
5001, 5002, 5003, 5005, 5006, 5008, 5013, 5020, 5022, 5023, 5026, 5027, 5029, 5201, 5202, 5203,
|
||||||
|
5204, 5205, 5206, 5207, 5208, 5209, 6000, 6002, 6006, 6009, 6014, 6017, 6020, 6024, 6025, 6026,
|
||||||
|
6030, 6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6211, 7000, 7001, 7005, 7007, 7009,
|
||||||
|
7012, 7013, 7015, 7017, 7019, 7020, 7023, 7025, 7027, 7028, 7029, 7030, 7031, 7033, 7035, 7201,
|
||||||
|
7202, 7203, 8002, 8007, 8010, 8011, 8012, 8014, 8015, 8016, 8019, 8021, 8022, 8030, 8033, 8034,
|
||||||
|
8035, 8036, 8038, 8041, 8042, 8046, 8047, 8201, 8202, 8203, 8204, 9003, 9004, 9005, 9007, 9008,
|
||||||
|
9009, 9013, 9014, 9017, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9031, 9032, 9035, 9040, 9041,
|
||||||
|
9043, 9047, 9049, 9050, 9053, 9056, 9201, 9202, 9204, 9401, 9402, 9403, 9404, 9405, 9406, 10003,
|
||||||
|
10007, 10008, 10011, 10012, 10014, 10015, 10021, 10026, 10027, 10029, 10030, 10031, 10032, 10037, 10039, 10043,
|
||||||
|
10044, 10045, 10050, 10051, 10054, 10201, 10204, 10205, 10206, 11003, 11006, 11016, 11017, 11020, 11021, 11022,
|
||||||
|
11023, 11024, 11027, 11029, 11039, 11041, 11042, 11044, 11045, 11046, 11047, 11048, 11049, 11201, 11202, 11203,
|
||||||
|
12001, 12024, 12032, 12033, 12035, 12039, 12042, 12046, 12047, 12048, 12202, 12203, 12205, 13004, 13007, 13008,
|
||||||
|
13012, 13016, 13018, 13020, 13022, 13023, 13027, 13030, 13033, 13034, 13036, 13042, 13043, 13045, 13049, 13201,
|
||||||
|
13202, 13203, 13204, 13205, 13206, 13207, 13208, 13209, 13211, 13212, 13213, 13214, 14010, 14013, 14017, 14024,
|
||||||
|
14025, 14026, 14027, 14032, 14034, 14036, 14041, 14042, 14045, 14048, 14054, 14057, 14201, 14203, 14204, 14205,
|
||||||
|
14206, 14207, 14212, 14213, 15012, 15017, 15033, 15034, 15035, 15036, 15037, 15042, 15046, 15047, 15051, 15052,
|
||||||
|
15203, 15206, 15210, 15212, 15213, 15214, 15216, 16007, 16012, 16018, 16033, 16041, 16044, 16046, 16047, 16048,
|
||||||
|
16201, 16202, 16203, 16204, 16206, 16208, 16210, 16211, 17010, 17011, 17018, 17019, 17029, 17030, 17031, 17036,
|
||||||
|
17038, 17042, 17045, 17047, 17048, 17049, 17100, 18016, 18031, 18033, 18034, 18037, 18038, 18041, 18046, 18048,
|
||||||
|
18049, 18052, 18063, 18065, 18070, 18102, 18201, 18202, 19012, 19017, 19021, 19023, 19035, 19041, 19043, 19044,
|
||||||
|
19061, 19066, 20001, 20010, 20014, 20034, 20042, 20045, 20056, 20057, 20060, 20069, 20076, 20092, 21009, 21010,
|
||||||
|
21017, 21036, 21046, 21054, 21057, 21070, 21071, 21074, 21075, 21080, 21086, 21201, 21204, 21205, 21206, 21207,
|
||||||
|
21208, 21209, 21210, 21211, 21212, 21215, 21216, 21217, 21218, 21219, 21222, 21223, 21224, 21227, 21228, 21229,
|
||||||
|
21232, 21233, 21234, 21235, 21236, 21238, 21239, 21240, 21241, 21244, 21245, 21246, 21247, 21248, 21249, 21250,
|
||||||
|
21252, 21254, 21255, 21256, 21257, 21259, 21260, 21261, 21263, 21264, 21265, 22020, 22023, 22036, 22050, 22066,
|
||||||
|
22071, 22072, 22081, 22082, 23020, 23023, 23025, 23040, 23042, 23059, 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const ob_payload_t REV_20191007 = {
|
||||||
|
.revision ="20191007",
|
||||||
|
.songdb_va = 0x53D785,
|
||||||
|
.banner_va = 0x16E4F0,
|
||||||
|
.song_by_id = (const uint16_t[]) {
|
||||||
|
1002, 1007, 1011, 1012, 1013, 1016, 1018, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209,
|
||||||
|
1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1401, 1402, 2001, 2002, 2004,
|
||||||
|
2007, 2009, 2010, 2011, 2013, 2014, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210,
|
||||||
|
2211, 2212, 3002, 3003, 3014, 3015, 3016, 3017, 3018, 3201, 3202, 3203, 3204, 3205, 3206, 3207,
|
||||||
|
3208, 3209, 3210, 3211, 3212, 3213, 4009, 4010, 4011, 4013, 4018, 4019, 4022, 4024, 4026, 4028,
|
||||||
|
4030, 4031, 4202, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4214, 4215, 4216,
|
||||||
|
5001, 5002, 5003, 5005, 5006, 5008, 5013, 5020, 5022, 5023, 5026, 5027, 5029, 5201, 5202, 5203,
|
||||||
|
5204, 5205, 5206, 5207, 5208, 5209, 6000, 6002, 6006, 6009, 6014, 6017, 6020, 6024, 6025, 6026,
|
||||||
|
6030, 6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6211, 7000, 7001, 7005, 7007, 7009,
|
||||||
|
7012, 7013, 7015, 7017, 7019, 7020, 7023, 7025, 7027, 7028, 7029, 7030, 7031, 7033, 7035, 7201,
|
||||||
|
7202, 7203, 8002, 8007, 8010, 8011, 8012, 8014, 8015, 8016, 8019, 8021, 8022, 8030, 8033, 8034,
|
||||||
|
8035, 8036, 8038, 8041, 8042, 8046, 8047, 8201, 8202, 8203, 8204, 9003, 9004, 9005, 9007, 9008,
|
||||||
|
9009, 9013, 9014, 9017, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9031, 9032, 9035, 9040, 9041,
|
||||||
|
9043, 9047, 9049, 9050, 9053, 9056, 9201, 9202, 9204, 9401, 9402, 9403, 9404, 9405, 9406, 10003,
|
||||||
|
10007, 10008, 10011, 10012, 10014, 10015, 10021, 10026, 10027, 10029, 10030, 10031, 10032, 10037, 10039, 10043,
|
||||||
|
10044, 10045, 10050, 10051, 10054, 10201, 10204, 10205, 10206, 11003, 11006, 11016, 11017, 11020, 11021, 11022,
|
||||||
|
11023, 11024, 11027, 11029, 11039, 11041, 11042, 11044, 11045, 11046, 11047, 11048, 11049, 11201, 11202, 11203,
|
||||||
|
12001, 12024, 12032, 12033, 12035, 12039, 12042, 12046, 12047, 12048, 12202, 12203, 12205, 13004, 13007, 13008,
|
||||||
|
13012, 13016, 13018, 13020, 13022, 13023, 13027, 13030, 13033, 13034, 13036, 13042, 13043, 13045, 13049, 13201,
|
||||||
|
13202, 13203, 13204, 13205, 13206, 13207, 13208, 13209, 13211, 13212, 13213, 13214, 14010, 14013, 14017, 14024,
|
||||||
|
14025, 14026, 14027, 14032, 14034, 14036, 14041, 14042, 14045, 14048, 14054, 14057, 14201, 14203, 14204, 14205,
|
||||||
|
14206, 14207, 14212, 14213, 15012, 15017, 15033, 15034, 15035, 15036, 15037, 15042, 15046, 15047, 15051, 15052,
|
||||||
|
15203, 15206, 15210, 15212, 15213, 15214, 15216, 16007, 16012, 16018, 16033, 16041, 16044, 16046, 16047, 16048,
|
||||||
|
16201, 16202, 16203, 16204, 16206, 16208, 16210, 16211, 17010, 17011, 17018, 17019, 17029, 17030, 17031, 17036,
|
||||||
|
17038, 17042, 17045, 17047, 17048, 17049, 17100, 18016, 18031, 18033, 18034, 18037, 18038, 18041, 18046, 18048,
|
||||||
|
18049, 18052, 18063, 18065, 18070, 18102, 18201, 18202, 19012, 19017, 19021, 19023, 19035, 19041, 19043, 19044,
|
||||||
|
19061, 19066, 20001, 20010, 20014, 20034, 20042, 20045, 20056, 20057, 20060, 20069, 20076, 20092, 21009, 21010,
|
||||||
|
21017, 21036, 21046, 21054, 21057, 21070, 21071, 21074, 21075, 21080, 21086, 21201, 21204, 21205, 21206, 21207,
|
||||||
|
21208, 21209, 21210, 21211, 21212, 21215, 21216, 21217, 21218, 21219, 21222, 21223, 21224, 21227, 21228, 21229,
|
||||||
|
21232, 21233, 21234, 21235, 21236, 21238, 21239, 21240, 21241, 21244, 21245, 21246, 21247, 21248, 21249, 21250,
|
||||||
|
21252, 21254, 21255, 21256, 21257, 21259, 21260, 21261, 21263, 21264, 21265, 22020, 22023, 22036, 22050, 22066,
|
||||||
|
22071, 22072, 22081, 22082, 23020, 23023, 23025, 23040, 23042, 23059, 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
51
src/omnimix-banner/Style/iidx27.h
Normal file
51
src/omnimix-banner/Style/iidx27.h
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#ifndef _IIDX27_H
|
||||||
|
#define _IIDX27_H
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
|
||||||
|
static const ob_payload_t REV_20200929 = {
|
||||||
|
.revision ="20200929",
|
||||||
|
.songdb_va = 0x86A31D,
|
||||||
|
.banner_va = 0x354BE0,
|
||||||
|
.song_by_id = (const uint16_t[]) {
|
||||||
|
1002, 1011, 1012, 1013, 1016, 1018, 1100, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209,
|
||||||
|
1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1401, 1402, 2001, 2002, 2004,
|
||||||
|
2007, 2009, 2010, 2011, 2013, 2014, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210,
|
||||||
|
2211, 2212, 3002, 3003, 3014, 3015, 3016, 3017, 3018, 3201, 3202, 3203, 3204, 3205, 3206, 3207,
|
||||||
|
3208, 3209, 3210, 3211, 3212, 3213, 4009, 4010, 4011, 4013, 4018, 4019, 4022, 4024, 4026, 4027,
|
||||||
|
4028, 4030, 4031, 4100, 4101, 4202, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212,
|
||||||
|
4214, 4215, 4216, 5001, 5002, 5003, 5005, 5006, 5008, 5013, 5020, 5022, 5026, 5027, 5029, 5100,
|
||||||
|
5201, 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 6000, 6002, 6006, 6009, 6014, 6017, 6020,
|
||||||
|
6024, 6025, 6026, 6030, 6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6211, 7000, 7001,
|
||||||
|
7005, 7007, 7009, 7012, 7013, 7015, 7017, 7019, 7020, 7023, 7025, 7026, 7027, 7028, 7029, 7030,
|
||||||
|
7031, 7033, 7035, 7201, 7202, 7203, 8002, 8007, 8010, 8011, 8012, 8014, 8015, 8016, 8019, 8021,
|
||||||
|
8022, 8030, 8033, 8034, 8035, 8036, 8038, 8041, 8042, 8046, 8047, 8201, 8202, 8203, 8204, 9003,
|
||||||
|
9004, 9005, 9007, 9008, 9009, 9013, 9014, 9017, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9031,
|
||||||
|
9032, 9035, 9040, 9041, 9043, 9047, 9049, 9050, 9053, 9056, 9201, 9202, 9204, 9401, 9402, 9403,
|
||||||
|
9404, 9405, 9406, 10003, 10007, 10008, 10011, 10012, 10014, 10015, 10021, 10026, 10027, 10029, 10030, 10031,
|
||||||
|
10032, 10035, 10037, 10039, 10043, 10044, 10045, 10050, 10051, 10054, 10201, 10204, 10205, 10206, 11003, 11006,
|
||||||
|
11016, 11017, 11020, 11021, 11022, 11023, 11024, 11027, 11029, 11039, 11041, 11042, 11044, 11045, 11046, 11047,
|
||||||
|
11048, 11049, 11100, 11101, 11201, 11202, 11203, 12001, 12024, 12032, 12033, 12035, 12039, 12042, 12046, 12047,
|
||||||
|
12048, 12100, 12101, 12202, 12203, 12205, 13004, 13007, 13008, 13012, 13016, 13018, 13020, 13022, 13023, 13027,
|
||||||
|
13030, 13033, 13034, 13036, 13042, 13043, 13045, 13049, 13100, 13101, 13201, 13202, 13203, 13204, 13205, 13206,
|
||||||
|
13207, 13208, 13209, 13211, 13212, 13213, 13214, 14010, 14013, 14017, 14024, 14025, 14026, 14027, 14032, 14034,
|
||||||
|
14036, 14041, 14042, 14043, 14045, 14048, 14054, 14057, 14100, 14101, 14102, 14201, 14203, 14204, 14205, 14206,
|
||||||
|
14207, 14212, 14213, 15012, 15017, 15033, 15034, 15035, 15037, 15042, 15046, 15047, 15051, 15101, 15102, 15103,
|
||||||
|
15104, 15105, 15203, 15206, 15210, 15212, 15213, 15214, 15216, 16007, 16012, 16018, 16033, 16041, 16044, 16046,
|
||||||
|
16047, 16048, 16101, 16102, 16103, 16104, 16105, 16201, 16202, 16203, 16204, 16206, 16208, 16210, 16211, 17010,
|
||||||
|
17011, 17018, 17019, 17029, 17030, 17031, 17036, 17038, 17042, 17045, 17047, 17048, 17049, 17100, 17101, 17102,
|
||||||
|
18016, 18031, 18033, 18034, 18037, 18038, 18041, 18046, 18048, 18049, 18052, 18058, 18063, 18065, 18070, 18100,
|
||||||
|
18102, 18103, 18201, 18202, 19012, 19017, 19021, 19023, 19035, 19041, 19043, 19044, 19061, 19066, 19100, 20001,
|
||||||
|
20010, 20014, 20034, 20042, 20045, 20056, 20057, 20060, 20069, 20075, 20076, 20092, 20103, 20104, 20105, 20106,
|
||||||
|
20107, 21009, 21010, 21017, 21023, 21028, 21036, 21046, 21049, 21054, 21057, 21070, 21071, 21074, 21075, 21080,
|
||||||
|
21086, 21100, 21101, 21102, 21103, 21104, 21105, 21106, 21107, 21108, 21201, 21204, 21205, 21206, 21207, 21208,
|
||||||
|
21209, 21210, 21211, 21212, 21215, 21216, 21217, 21218, 21219, 21222, 21223, 21224, 21227, 21228, 21229, 21232,
|
||||||
|
21233, 21234, 21235, 21236, 21238, 21239, 21240, 21241, 21244, 21245, 21246, 21247, 21248, 21249, 21250, 21252,
|
||||||
|
21254, 21255, 21256, 21257, 21259, 21260, 21261, 21263, 21264, 21265, 22020, 22023, 22028, 22036, 22050, 22051,
|
||||||
|
22066, 22071, 22072, 22078, 22081, 22082, 22101, 22102, 22103, 22104, 22105, 22106, 22107, 23014, 23020, 23023,
|
||||||
|
23024, 23025, 23040, 23042, 23059, 23077, 23100, 23101, 23102, 24035, 24042, 24053, 24059, 24062, 24100, 24101,
|
||||||
|
0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
84
src/omnimix-banner/Style/iidx28.h
Normal file
84
src/omnimix-banner/Style/iidx28.h
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
#ifndef _IIDX28_H
|
||||||
|
#define _IIDX28_H
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
|
||||||
|
static const ob_payload_t REV_20210830 = {
|
||||||
|
.revision = "20210830",
|
||||||
|
.songdb_va = 0xB442CD,
|
||||||
|
.banner_va = 0x4C7490,
|
||||||
|
.song_by_id = (const uint16_t[]) {
|
||||||
|
1002, 1011, 1012, 1013, 1016, 1018, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
|
||||||
|
1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1401, 1402, 2001, 2002, 2004, 2007,
|
||||||
|
2009, 2010, 2011, 2013, 2014, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211,
|
||||||
|
2212, 3002, 3003, 3014, 3015, 3016, 3017, 3018, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208,
|
||||||
|
3209, 3210, 3211, 3212, 3213, 4009, 4010, 4011, 4013, 4018, 4019, 4022, 4024, 4026, 4027, 4028,
|
||||||
|
4030, 4031, 4202, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4214, 4215, 4216,
|
||||||
|
5001, 5002, 5003, 5005, 5006, 5008, 5013, 5020, 5022, 5026, 5027, 5029, 5201, 5202, 5203, 5204,
|
||||||
|
5205, 5206, 5207, 5208, 5209, 6000, 6002, 6006, 6009, 6014, 6017, 6020, 6024, 6025, 6026, 6030,
|
||||||
|
6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6211, 7000, 7001, 7005, 7007, 7009, 7012,
|
||||||
|
7013, 7015, 7017, 7019, 7020, 7023, 7025, 7026, 7027, 7028, 7029, 7030, 7031, 7033, 7035, 7201,
|
||||||
|
7202, 7203, 8002, 8007, 8010, 8011, 8012, 8014, 8015, 8016, 8019, 8021, 8022, 8030, 8033, 8034,
|
||||||
|
8035, 8036, 8037, 8038, 8041, 8042, 8046, 8047, 8201, 8202, 8203, 8204, 9003, 9004, 9005, 9007,
|
||||||
|
9008, 9009, 9013, 9014, 9017, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9031, 9032, 9035, 9040,
|
||||||
|
9041, 9043, 9047, 9049, 9050, 9053, 9054, 9056, 9201, 9202, 9204, 9401, 9402, 9403, 9404, 9405,
|
||||||
|
9406, 10003, 10007, 10008, 10011, 10012, 10014, 10015, 10021, 10026, 10027, 10029, 10030, 10031, 10032, 10035,
|
||||||
|
10037, 10039, 10043, 10044, 10045, 10050, 10051, 10054, 10201, 10204, 10205, 11003, 11006, 11016, 11017, 11020,
|
||||||
|
11021, 11022, 11023, 11024, 11027, 11029, 11039, 11041, 11042, 11044, 11045, 11046, 11047, 11048, 11049, 11201,
|
||||||
|
11202, 11203, 12001, 12024, 12032, 12033, 12035, 12042, 12046, 12047, 12048, 12202, 12203, 12205, 13004, 13006,
|
||||||
|
13007, 13008, 13012, 13016, 13018, 13020, 13022, 13023, 13027, 13030, 13033, 13034, 13036, 13042, 13043, 13045,
|
||||||
|
13049, 13201, 13202, 13203, 13204, 13205, 13206, 13208, 13209, 13211, 13212, 13213, 13214, 14010, 14013, 14017,
|
||||||
|
14024, 14025, 14026, 14027, 14032, 14034, 14041, 14042, 14043, 14045, 14048, 14054, 14057, 14201, 14204, 14205,
|
||||||
|
14206, 14212, 14213, 15017, 15022, 15033, 15034, 15035, 15037, 15042, 15046, 15047, 15051, 15203, 15206, 15210,
|
||||||
|
15214, 15216, 16007, 16012, 16033, 16041, 16044, 16046, 16048, 16201, 16202, 16203, 16204, 16206, 16208, 16211,
|
||||||
|
17010, 17011, 17018, 17019, 17029, 17030, 17031, 17036, 17038, 17042, 17045, 17047, 17048, 17049, 17100, 18007,
|
||||||
|
18016, 18031, 18033, 18034, 18037, 18038, 18041, 18046, 18048, 18049, 18052, 18058, 18063, 18065, 18070, 18102,
|
||||||
|
18201, 18202, 19012, 19017, 19021, 19023, 19035, 19041, 19043, 19044, 19061, 19066, 20001, 20010, 20014, 20034,
|
||||||
|
20042, 20045, 20050, 20056, 20057, 20060, 20069, 20075, 20076, 20092, 21009, 21010, 21017, 21023, 21028, 21036,
|
||||||
|
21046, 21049, 21054, 21057, 21070, 21071, 21074, 21075, 21080, 21086, 21201, 21265, 22020, 22023, 22028, 22036,
|
||||||
|
22045, 22050, 22051, 22066, 22071, 22072, 22078, 22081, 22082, 23014, 23020, 23023, 23024, 23025, 23040, 23042,
|
||||||
|
23059, 23065, 23077, 24035, 24042, 24048, 24053, 24059, 24062, 24064, 25020, 25023, 25025, 25062, 25065, 25072,
|
||||||
|
25087, 26061, 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const ob_payload_t REV_20210915 = {
|
||||||
|
.revision ="20210915",
|
||||||
|
.songdb_va = 0xB4432D,
|
||||||
|
.banner_va = 0x4C7490,
|
||||||
|
.song_by_id = (const uint16_t[]) {
|
||||||
|
1002, 1011, 1012, 1013, 1016, 1018, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
|
||||||
|
1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1401, 1402, 2001, 2002, 2004, 2007,
|
||||||
|
2009, 2010, 2011, 2013, 2014, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211,
|
||||||
|
2212, 3002, 3003, 3014, 3015, 3016, 3017, 3018, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208,
|
||||||
|
3209, 3210, 3211, 3212, 3213, 4009, 4010, 4011, 4013, 4018, 4019, 4022, 4024, 4026, 4027, 4028,
|
||||||
|
4030, 4031, 4202, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4214, 4215, 4216,
|
||||||
|
5001, 5002, 5003, 5005, 5006, 5008, 5013, 5020, 5022, 5026, 5027, 5029, 5201, 5202, 5203, 5204,
|
||||||
|
5205, 5206, 5207, 5208, 5209, 6000, 6002, 6006, 6009, 6014, 6017, 6020, 6024, 6025, 6026, 6030,
|
||||||
|
6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6211, 7000, 7001, 7005, 7007, 7009, 7012,
|
||||||
|
7013, 7015, 7017, 7019, 7020, 7023, 7025, 7026, 7027, 7028, 7029, 7030, 7031, 7033, 7035, 7201,
|
||||||
|
7202, 7203, 8002, 8007, 8010, 8011, 8012, 8014, 8015, 8016, 8019, 8021, 8022, 8030, 8033, 8034,
|
||||||
|
8035, 8036, 8037, 8038, 8041, 8042, 8046, 8047, 8201, 8202, 8203, 8204, 9003, 9004, 9005, 9007,
|
||||||
|
9008, 9009, 9013, 9014, 9017, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9031, 9032, 9035, 9040,
|
||||||
|
9041, 9043, 9047, 9049, 9050, 9053, 9054, 9056, 9201, 9202, 9204, 9401, 9402, 9403, 9404, 9405,
|
||||||
|
9406, 10003, 10007, 10008, 10011, 10012, 10014, 10015, 10021, 10026, 10027, 10029, 10030, 10031, 10032, 10035,
|
||||||
|
10037, 10039, 10043, 10044, 10045, 10050, 10051, 10054, 10201, 10204, 10205, 11003, 11006, 11016, 11017, 11020,
|
||||||
|
11021, 11022, 11023, 11024, 11027, 11029, 11039, 11041, 11042, 11044, 11045, 11046, 11047, 11048, 11049, 11201,
|
||||||
|
11202, 11203, 12001, 12024, 12032, 12033, 12035, 12042, 12046, 12047, 12048, 12202, 12203, 12205, 13004, 13006,
|
||||||
|
13007, 13008, 13012, 13016, 13018, 13020, 13022, 13023, 13027, 13030, 13033, 13034, 13036, 13042, 13043, 13045,
|
||||||
|
13049, 13201, 13202, 13203, 13204, 13205, 13206, 13208, 13209, 13211, 13212, 13213, 13214, 14010, 14013, 14017,
|
||||||
|
14024, 14025, 14026, 14027, 14032, 14034, 14041, 14042, 14043, 14045, 14048, 14054, 14057, 14201, 14204, 14205,
|
||||||
|
14206, 14212, 14213, 15017, 15022, 15033, 15034, 15035, 15037, 15042, 15046, 15047, 15051, 15203, 15206, 15210,
|
||||||
|
15214, 15216, 16007, 16012, 16033, 16041, 16044, 16046, 16048, 16201, 16202, 16203, 16204, 16206, 16208, 16211,
|
||||||
|
17010, 17011, 17018, 17019, 17029, 17030, 17031, 17036, 17038, 17042, 17045, 17047, 17048, 17049, 17100, 18007,
|
||||||
|
18016, 18031, 18033, 18034, 18037, 18038, 18041, 18046, 18048, 18049, 18052, 18058, 18063, 18065, 18070, 18102,
|
||||||
|
18201, 18202, 19012, 19017, 19021, 19023, 19035, 19041, 19043, 19044, 19061, 19066, 20001, 20010, 20014, 20034,
|
||||||
|
20042, 20045, 20050, 20056, 20057, 20060, 20069, 20075, 20076, 20092, 21009, 21010, 21017, 21023, 21028, 21036,
|
||||||
|
21046, 21049, 21054, 21057, 21070, 21071, 21074, 21075, 21080, 21086, 21201, 21265, 22020, 22023, 22028, 22036,
|
||||||
|
22045, 22050, 22051, 22066, 22071, 22072, 22078, 22081, 22082, 23014, 23020, 23023, 23024, 23025, 23040, 23042,
|
||||||
|
23059, 23065, 23077, 24035, 24042, 24048, 24053, 24059, 24062, 24064, 25020, 25023, 25025, 25062, 25065, 25072,
|
||||||
|
25087, 26061, 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
46
src/omnimix-banner/Style/iidx29.h
Normal file
46
src/omnimix-banner/Style/iidx29.h
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#ifndef _IIDX29_H
|
||||||
|
#define _IIDX29_H
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
|
||||||
|
static const ob_payload_t REV_20220824 = {
|
||||||
|
.revision = "20220824",
|
||||||
|
.songdb_va = 0x823885,
|
||||||
|
.banner_va = 0x3C0180,
|
||||||
|
.song_by_id = (const uint16_t[]) {
|
||||||
|
1002, 1011, 1012, 1013, 1016, 1018, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
|
||||||
|
1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1401, 1402, 2001, 2002, 2004, 2007,
|
||||||
|
2009, 2010, 2011, 2013, 2014, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211,
|
||||||
|
2212, 3002, 3003, 3014, 3015, 3016, 3017, 3018, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208,
|
||||||
|
3209, 3210, 3211, 3212, 3213, 4009, 4010, 4011, 4013, 4018, 4019, 4022, 4024, 4026, 4027, 4028,
|
||||||
|
4030, 4031, 4202, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4214, 4215, 4216,
|
||||||
|
5001, 5002, 5003, 5005, 5006, 5008, 5013, 5020, 5022, 5026, 5027, 5029, 5201, 5202, 5203, 5204,
|
||||||
|
5205, 5206, 5207, 5208, 5209, 6000, 6002, 6006, 6009, 6014, 6017, 6020, 6024, 6025, 6026, 6030,
|
||||||
|
6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6211, 7000, 7001, 7005, 7007, 7009, 7012,
|
||||||
|
7013, 7015, 7017, 7019, 7020, 7023, 7025, 7026, 7027, 7028, 7029, 7030, 7033, 7035, 7201, 7202,
|
||||||
|
7203, 8002, 8007, 8010, 8011, 8012, 8014, 8015, 8016, 8019, 8021, 8022, 8030, 8033, 8034, 8035,
|
||||||
|
8036, 8037, 8038, 8041, 8042, 8046, 8047, 8201, 8202, 8203, 8204, 9003, 9004, 9005, 9007, 9008,
|
||||||
|
9009, 9013, 9014, 9017, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9031, 9032, 9035, 9040, 9041,
|
||||||
|
9043, 9047, 9049, 9050, 9053, 9054, 9056, 9201, 9202, 9204, 9401, 9402, 9403, 9404, 9405, 9406,
|
||||||
|
10003, 10007, 10008, 10011, 10012, 10014, 10015, 10021, 10026, 10027, 10029, 10030, 10032, 10035, 10037, 10039,
|
||||||
|
10043, 10044, 10045, 10050, 10051, 10054, 10201, 10204, 10205, 11003, 11006, 11016, 11017, 11020, 11021, 11022,
|
||||||
|
11023, 11024, 11027, 11029, 11039, 11041, 11042, 11044, 11045, 11046, 11047, 11048, 11049, 11201, 11202, 11203,
|
||||||
|
12001, 12024, 12032, 12033, 12035, 12042, 12047, 12048, 12202, 12203, 12205, 13004, 13006, 13007, 13008, 13012,
|
||||||
|
13016, 13018, 13020, 13022, 13023, 13027, 13030, 13033, 13034, 13036, 13042, 13043, 13045, 13049, 13201, 13202,
|
||||||
|
13203, 13204, 13205, 13206, 13208, 13209, 13211, 13212, 13213, 13214, 14010, 14013, 14017, 14024, 14025, 14026,
|
||||||
|
14027, 14032, 14034, 14041, 14042, 14043, 14045, 14048, 14054, 14057, 14201, 14204, 14205, 14206, 14212, 14213,
|
||||||
|
15017, 15022, 15033, 15034, 15035, 15037, 15042, 15046, 15047, 15051, 15203, 15206, 15210, 15214, 15216, 16007,
|
||||||
|
16012, 16033, 16041, 16044, 16046, 16048, 16201, 16202, 16203, 16204, 16206, 16208, 16211, 17010, 17011, 17018,
|
||||||
|
17019, 17029, 17030, 17031, 17036, 17038, 17045, 17047, 17048, 17049, 17100, 18007, 18016, 18031, 18033, 18034,
|
||||||
|
18037, 18038, 18041, 18046, 18048, 18049, 18052, 18058, 18063, 18065, 18070, 18102, 18201, 18202, 19012, 19021,
|
||||||
|
19023, 19035, 19041, 19043, 19044, 19061, 19066, 20001, 20010, 20014, 20034, 20042, 20045, 20050, 20056, 20057,
|
||||||
|
20060, 20069, 20075, 20076, 20092, 21009, 21010, 21017, 21023, 21028, 21036, 21046, 21049, 21054, 21057, 21070,
|
||||||
|
21071, 21074, 21075, 21080, 21086, 21201, 21265, 22020, 22023, 22028, 22036, 22045, 22050, 22051, 22066, 22071,
|
||||||
|
22072, 22078, 22081, 22082, 23014, 23020, 23023, 23024, 23025, 23040, 23042, 23059, 23065, 23077, 24035, 24042,
|
||||||
|
24048, 24053, 24059, 24062, 24064, 25020, 25023, 25025, 25044, 25060, 25062, 25065, 25066, 25072, 25087, 25096,
|
||||||
|
26013, 26021, 26032, 26035, 26057, 26061, 26065, 26096, 26098, 27203, 28099, 28204, 28205, 28207, 28208, 28210,
|
||||||
|
0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
48
src/omnimix-banner/Style/iidx30.h
Normal file
48
src/omnimix-banner/Style/iidx30.h
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#ifndef _IIDX30_H
|
||||||
|
#define _IIDX30_H
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
|
||||||
|
static const ob_payload_t REV_20230905 = {
|
||||||
|
.revision ="20230905",
|
||||||
|
.songdb_va = 0x1275D25,
|
||||||
|
.banner_va = 0x982710,
|
||||||
|
.song_by_id = (const uint16_t[]) {
|
||||||
|
1002, 1011, 1012, 1013, 1016, 1018, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
|
||||||
|
1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1401, 1402, 2001, 2002, 2004, 2007,
|
||||||
|
2009, 2010, 2011, 2013, 2014, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211,
|
||||||
|
2212, 3002, 3003, 3014, 3015, 3016, 3017, 3018, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208,
|
||||||
|
3209, 3210, 3211, 3212, 3213, 4009, 4010, 4011, 4013, 4018, 4019, 4022, 4024, 4026, 4027, 4028,
|
||||||
|
4030, 4031, 4202, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4214, 4215, 4216,
|
||||||
|
4217, 5001, 5002, 5003, 5005, 5006, 5008, 5013, 5020, 5022, 5026, 5027, 5029, 5201, 5202, 5203,
|
||||||
|
5204, 5205, 5206, 5207, 5208, 5209, 6000, 6002, 6006, 6009, 6014, 6017, 6020, 6024, 6025, 6026,
|
||||||
|
6028, 6030, 6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6211, 6212, 7000, 7001, 7005,
|
||||||
|
7007, 7009, 7012, 7013, 7015, 7017, 7019, 7020, 7023, 7025, 7027, 7028, 7029, 7030, 7033, 7035,
|
||||||
|
7201, 7202, 7203, 7204, 8002, 8007, 8010, 8011, 8012, 8014, 8015, 8016, 8019, 8021, 8022, 8030,
|
||||||
|
8033, 8034, 8035, 8036, 8037, 8038, 8041, 8042, 8046, 8047, 8201, 8202, 8203, 8204, 9004, 9005,
|
||||||
|
9007, 9008, 9009, 9013, 9014, 9017, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9031, 9032, 9035,
|
||||||
|
9040, 9041, 9043, 9047, 9049, 9050, 9053, 9054, 9056, 9201, 9202, 9204, 9401, 9402, 9403, 9404,
|
||||||
|
9405, 9406, 9407, 10003, 10007, 10008, 10011, 10012, 10014, 10015, 10021, 10026, 10027, 10029, 10030, 10032,
|
||||||
|
10035, 10037, 10039, 10043, 10044, 10045, 10050, 10051, 10054, 10201, 10204, 10205, 11003, 11006, 11016, 11017,
|
||||||
|
11020, 11021, 11022, 11023, 11024, 11027, 11029, 11039, 11041, 11042, 11044, 11045, 11046, 11047, 11048, 11049,
|
||||||
|
11201, 11202, 11203, 12001, 12024, 12032, 12033, 12035, 12042, 12047, 12048, 12202, 12203, 12205, 13004, 13006,
|
||||||
|
13007, 13008, 13016, 13018, 13020, 13022, 13023, 13027, 13030, 13033, 13034, 13036, 13042, 13043, 13045, 13049,
|
||||||
|
13201, 13202, 13203, 13204, 13205, 13206, 13208, 13209, 13211, 13212, 13213, 13214, 13215, 14010, 14013, 14017,
|
||||||
|
14024, 14025, 14026, 14027, 14032, 14034, 14041, 14042, 14043, 14045, 14048, 14054, 14057, 14201, 14204, 14205,
|
||||||
|
14206, 14212, 14213, 15017, 15022, 15033, 15034, 15035, 15037, 15042, 15046, 15047, 15051, 15203, 15206, 15210,
|
||||||
|
15214, 15216, 15217, 15218, 15219, 15220, 15221, 16007, 16012, 16033, 16044, 16046, 16048, 16201, 16202, 16203,
|
||||||
|
16204, 16206, 16208, 16211, 16212, 16213, 16214, 17010, 17011, 17018, 17019, 17029, 17030, 17031, 17036, 17038,
|
||||||
|
17045, 17047, 17048, 17049, 17100, 17200, 18007, 18016, 18031, 18033, 18034, 18037, 18038, 18041, 18046, 18048,
|
||||||
|
18049, 18052, 18058, 18063, 18065, 18070, 18102, 18201, 18202, 18203, 19012, 19021, 19023, 19035, 19041, 19043,
|
||||||
|
19044, 19061, 19066, 20001, 20010, 20014, 20034, 20042, 20045, 20050, 20056, 20057, 20060, 20069, 20075, 20092,
|
||||||
|
21009, 21010, 21017, 21023, 21028, 21036, 21046, 21049, 21054, 21057, 21070, 21071, 21074, 21075, 21080, 21086,
|
||||||
|
21201, 21265, 22020, 22023, 22028, 22036, 22045, 22050, 22051, 22066, 22071, 22072, 22078, 22081, 22082, 23014,
|
||||||
|
23020, 23023, 23024, 23025, 23040, 23042, 23059, 23065, 23077, 24035, 24042, 24048, 24053, 24059, 24062, 24064,
|
||||||
|
25020, 25023, 25025, 25044, 25060, 25062, 25065, 25066, 25067, 25072, 25077, 25087, 25096, 26013, 26014, 26021,
|
||||||
|
26032, 26035, 26057, 26061, 26065, 26096, 26098, 26111, 27006, 27038, 27067, 27068, 27072, 27082, 27097, 27098,
|
||||||
|
27203, 28075, 28099, 28204, 28205, 28207, 28208, 28210, 29214, 29215, 29216, 29217, 29219, 29220, 29221, 29902,
|
||||||
|
29904, 29910, 29912, 29913, 29914, 30223, 30224, 30225, 30226, 30227, 30228, 30229, 30230, 30231, 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
44
src/omnimix-banner/defines.h
Normal file
44
src/omnimix-banner/defines.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#ifndef _DEFINES_H
|
||||||
|
#define _DEFINES_H
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
|
||||||
|
enum LOG_LEVEL
|
||||||
|
{
|
||||||
|
FATAL = 1,
|
||||||
|
WARNING = 2,
|
||||||
|
INFO = 3,
|
||||||
|
MISC = 4
|
||||||
|
};
|
||||||
|
typedef struct ob_payload ob_payload_t;
|
||||||
|
typedef union ob_module ob_module_t;
|
||||||
|
typedef void(__fastcall *rainbow_banner_t)(void *, int32_t);
|
||||||
|
typedef int64_t(*game_log_t)(int64_t, enum LOG_LEVEL, const char*, const char*, ...);
|
||||||
|
|
||||||
|
union ob_module
|
||||||
|
{
|
||||||
|
long long base;
|
||||||
|
HMODULE handle;
|
||||||
|
};
|
||||||
|
struct ob_payload
|
||||||
|
{
|
||||||
|
const char *revision;
|
||||||
|
const int songdb_va;
|
||||||
|
const int banner_va;
|
||||||
|
const uint16_t *song_by_id;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern game_log_t game_log;
|
||||||
|
|
||||||
|
#define HOOK_NAME "omnimix_banner"
|
||||||
|
#ifdef BIN_BUILDREV
|
||||||
|
#define HOOK_REVISION BIN_BUILDREV
|
||||||
|
#else
|
||||||
|
#error "Specify BIN_BUILDREV"
|
||||||
|
#endif
|
||||||
|
#define log_msg(level, msg, args...) game_log(0, level, HOOK_NAME, msg, ##args)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
188
src/omnimix-banner/omnimix_banner.c
Executable file
188
src/omnimix-banner/omnimix_banner.c
Executable file
@ -0,0 +1,188 @@
|
|||||||
|
#include "iidx25.h"
|
||||||
|
#include "iidx26.h"
|
||||||
|
#include "iidx27.h"
|
||||||
|
#include "iidx28.h"
|
||||||
|
#include "iidx29.h"
|
||||||
|
#include "iidx30.h"
|
||||||
|
#include <MinHook.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <windows.h>
|
||||||
|
#include <psapi.h>
|
||||||
|
|
||||||
|
|
||||||
|
static const ob_payload_t *const payloads_[] = {
|
||||||
|
&REV_20180919,
|
||||||
|
&REV_20190902,
|
||||||
|
&REV_20191007,
|
||||||
|
&REV_20200929,
|
||||||
|
&REV_20210830,
|
||||||
|
&REV_20210915,
|
||||||
|
&REV_20220824,
|
||||||
|
&REV_20230905,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
static const ob_payload_t *payload_;
|
||||||
|
static ob_module_t avs2_;
|
||||||
|
static ob_module_t bm2dx_;
|
||||||
|
game_log_t game_log;
|
||||||
|
|
||||||
|
HMODULE get_module(const char *name)
|
||||||
|
{
|
||||||
|
HMODULE rv = NULL;
|
||||||
|
|
||||||
|
// Prioritize exact match
|
||||||
|
rv = GetModuleHandle(name);
|
||||||
|
if (rv) return rv;
|
||||||
|
|
||||||
|
// Find first .dll including specified name
|
||||||
|
HMODULE modules[1024];
|
||||||
|
DWORD cb_needed;
|
||||||
|
HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, GetCurrentProcessId());
|
||||||
|
if (EnumProcessModules(process, modules, sizeof(modules), &cb_needed))
|
||||||
|
{
|
||||||
|
const size_t needlelen = strlen(name) - 4;
|
||||||
|
char *needle = malloc(needlelen + 1);
|
||||||
|
memcpy(needle, name, needlelen);
|
||||||
|
needle[needlelen] = '\0';
|
||||||
|
for (unsigned int i = 0; i < (cb_needed / sizeof(HMODULE)); i++)
|
||||||
|
{
|
||||||
|
TCHAR szModName[MAX_PATH];
|
||||||
|
if (GetModuleBaseName(process, modules[i], szModName, sizeof(szModName) / sizeof(TCHAR)))
|
||||||
|
{
|
||||||
|
if (strstr(szModName, needle))
|
||||||
|
{
|
||||||
|
log_msg(WARNING, "Loading %s as %s instead", szModName, name);
|
||||||
|
rv = modules[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(needle);
|
||||||
|
}
|
||||||
|
CloseHandle(process);
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
const char *get_revision()
|
||||||
|
{
|
||||||
|
static char rv[9] = "";
|
||||||
|
FILE *ea3f = fopen("prop/ea3-config.xml", "rb");
|
||||||
|
if (!ea3f)return rv;
|
||||||
|
fseek(ea3f, 0L, SEEK_END);
|
||||||
|
int sz = ftell(ea3f);
|
||||||
|
fseek(ea3f, 0, SEEK_SET);
|
||||||
|
char *ea3buf = malloc(sz + 1);
|
||||||
|
fread(ea3buf, sz, 1, ea3f);
|
||||||
|
ea3buf[sz] = '\0';
|
||||||
|
|
||||||
|
const char *cursor = ea3buf;
|
||||||
|
cursor = strstr(cursor ? cursor : rv, "<soft>");
|
||||||
|
cursor = strstr(cursor ? cursor : rv, "<ext __type=\"str\">");
|
||||||
|
cursor = strstr(cursor ? cursor : rv, "2");
|
||||||
|
memmove(rv, cursor ? cursor : rv, 8);
|
||||||
|
rv[8] = '\0';
|
||||||
|
if (!strstr(cursor ? cursor : rv, "</ext>")) rv[0] = '\0';
|
||||||
|
|
||||||
|
fclose(ea3f);
|
||||||
|
free(ea3buf);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
const ob_payload_t *get_payload()
|
||||||
|
{
|
||||||
|
const char *revision = get_revision();
|
||||||
|
const ob_payload_t *const *it = payloads_;
|
||||||
|
while (*it)
|
||||||
|
{
|
||||||
|
if (!strcmp((*it)->revision, revision))
|
||||||
|
break;
|
||||||
|
it++;
|
||||||
|
}
|
||||||
|
return *it;
|
||||||
|
}
|
||||||
|
inline int count_ids(const uint16_t *it)
|
||||||
|
{
|
||||||
|
int rv = 0;
|
||||||
|
while (*it)
|
||||||
|
{
|
||||||
|
rv++;
|
||||||
|
it++;
|
||||||
|
}
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
int binary_search(const uint16_t arr[], int l, int r, uint16_t x)
|
||||||
|
{
|
||||||
|
while (l <= r)
|
||||||
|
{
|
||||||
|
int m = l + (r - l) / 2;
|
||||||
|
if (arr[m] == x)
|
||||||
|
return m;
|
||||||
|
if (arr[m] < x)
|
||||||
|
l = m + 1;
|
||||||
|
else
|
||||||
|
r = m - 1;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
bool __fastcall hook(void *some_pointer, int64_t song_id)
|
||||||
|
{
|
||||||
|
return binary_search(payload_->song_by_id, 0, count_ids(payload_->song_by_id), (uint16_t) song_id) != -1 ? true : false;
|
||||||
|
}
|
||||||
|
BOOL WINAPI DllMain(HMODULE module, DWORD reason, void *reserved)
|
||||||
|
{
|
||||||
|
switch (reason)
|
||||||
|
{
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
{
|
||||||
|
avs2_.handle = GetModuleHandle("avs2-core.dll");
|
||||||
|
game_log = (game_log_t) (GetProcAddress(avs2_.handle, "XCgsqzn0000175"));
|
||||||
|
payload_ = get_payload();
|
||||||
|
if (!payload_)
|
||||||
|
{
|
||||||
|
log_msg(WARNING, "Invalid environment, aborting...");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bm2dx_.handle = get_module("bm2dx.dll");
|
||||||
|
rainbow_banner_t rainbow_banner = (rainbow_banner_t) (bm2dx_.base + payload_->banner_va);
|
||||||
|
char *omni_string = ((char *) (bm2dx_.base + payload_->songdb_va));
|
||||||
|
if (strcmp(omni_string, "music_data.bin") != 0 && strcmp(omni_string, "music_omni.bin") != 0)
|
||||||
|
{
|
||||||
|
log_msg(WARNING, "Invalid bm2dx.dll, aborting...");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
log_msg(MISC, "Detected revision: hook=%s, payload=%s", HOOK_REVISION, payload_->revision);
|
||||||
|
|
||||||
|
int error_code = MH_Initialize();
|
||||||
|
if (error_code == MH_ERROR_ALREADY_INITIALIZED)
|
||||||
|
{
|
||||||
|
log_msg(INFO, "MinHook already initialized");
|
||||||
|
error_code ^= MH_ERROR_ALREADY_INITIALIZED;
|
||||||
|
}
|
||||||
|
if (error_code == MH_OK)
|
||||||
|
{
|
||||||
|
error_code |= MH_CreateHook((PVOID) rainbow_banner, (PVOID) hook, 0);
|
||||||
|
error_code |= MH_EnableHook(MH_ALL_HOOKS);
|
||||||
|
}
|
||||||
|
if (error_code == MH_OK)
|
||||||
|
{
|
||||||
|
log_msg(INFO, "Injected payload: sva=0x%x, bva=0x%x, sbi=%d", payload_->songdb_va, payload_->banner_va, count_ids(payload_->song_by_id));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log_msg(WARNING, "MinHook error(0x%x)", error_code);
|
||||||
|
log_msg(WARNING, "Error injecting into bm2dx.dll, aborting...");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
MH_Uninitialize();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
43
src/omnimix-dataloader/CMakeLists.txt
Executable file
43
src/omnimix-dataloader/CMakeLists.txt
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
## omnimix_dataloader.shared ##
|
||||||
|
set(target_name "omnimix_dataloader")
|
||||||
|
file(GLOB_RECURSE FILE_${target_name} CONFIGURE_DEPENDS "*.c")
|
||||||
|
add_library(${target_name} SHARED ${FILE_${target_name}})
|
||||||
|
|
||||||
|
# Local #define
|
||||||
|
target_compile_definitions(${target_name} PRIVATE
|
||||||
|
BIN_BUILDREV="${CMAKE_BuildRevision}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Local includes (#include "" | gcc -iquote)
|
||||||
|
target_include_directories_quote(${target_name} PRIVATE
|
||||||
|
.
|
||||||
|
Style
|
||||||
|
)
|
||||||
|
|
||||||
|
# External includes (#include <> | gcc -I)
|
||||||
|
target_include_directories(${target_name} PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR}/lib/mihook/include
|
||||||
|
)
|
||||||
|
|
||||||
|
# Force includes (include for every file | gcc -include)
|
||||||
|
target_force_include(${target_name} QUOTE
|
||||||
|
)
|
||||||
|
|
||||||
|
# Local dynamic linker (compiled libraries) - referenced libraries
|
||||||
|
target_link_libraries(${target_name} PRIVATE
|
||||||
|
minhook
|
||||||
|
)
|
||||||
|
|
||||||
|
# External dynamic linker (binary libraries) - external/system libraries
|
||||||
|
target_link_libraries(${target_name} PRIVATE
|
||||||
|
)
|
||||||
|
|
||||||
|
# Post build hooks
|
||||||
|
target_init_vsmacro(${target_name})
|
||||||
|
execute_process(
|
||||||
|
COMMAND python "${SolutionDir}lib/exec_u001/main.py" "--root=${SolutionDir}" "--exiv=${ProjectDir}on_init.exiv" "-m:ProjectDir=${ProjectDir}" "-m:TargetDir=${TargetDir}" "-m:PlatformTarget=${PlatformTarget}" "-m:PlatformLib=nix_gcc"
|
||||||
|
)
|
||||||
|
add_custom_command(TARGET ${target_name}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND python "${SolutionDir}lib/exec_u001/main.py" "--root=${SolutionDir}" "--exiv=${ProjectDir}on_compiled.exiv" "-m:ProjectDir=${ProjectDir}" "-m:TargetDir=${TargetDir}" "-m:PlatformTarget=${PlatformTarget}" "-m:PlatformLib=nix_gcc"
|
||||||
|
)
|
14
src/omnimix-dataloader/Style/iidx25.h
Normal file
14
src/omnimix-dataloader/Style/iidx25.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#ifndef _IIDX25_H
|
||||||
|
#define _IIDX25_H
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
|
||||||
|
static const od_payload_t REV_20180919 = {
|
||||||
|
.revision ="20180919",
|
||||||
|
.clear_rate_va = 0x434F0,
|
||||||
|
.fc_rate_va = 0x44A40,
|
||||||
|
.node_data_va = 0x157230,
|
||||||
|
.node_data_rtn_va = 0x15814B
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
22
src/omnimix-dataloader/Style/iidx26.h
Normal file
22
src/omnimix-dataloader/Style/iidx26.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef _IIDX26_H
|
||||||
|
#define _IIDX26_H
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
|
||||||
|
static const od_payload_t REV_20190902 = {
|
||||||
|
.revision = "20190902",
|
||||||
|
.clear_rate_va = 0xE08E0,
|
||||||
|
.fc_rate_va = 0xE2010,
|
||||||
|
.node_data_va = 0x3E4D10,
|
||||||
|
.node_data_rtn_va = 0x3E681B
|
||||||
|
};
|
||||||
|
|
||||||
|
static const od_payload_t REV_20191007 = {
|
||||||
|
.revision ="REV_20191007",
|
||||||
|
.clear_rate_va = 0xE08E0,
|
||||||
|
.fc_rate_va = 0xE2010,
|
||||||
|
.node_data_va = 0x3E4D10,
|
||||||
|
.node_data_rtn_va = 0x3E689B
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
20
src/omnimix-dataloader/Style/iidx27.h
Normal file
20
src/omnimix-dataloader/Style/iidx27.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#ifndef _IIDX27_H
|
||||||
|
#define _IIDX27_H
|
||||||
|
#include "defines.h"
|
||||||
|
//_BUG: most likely broken?
|
||||||
|
/*_TODO:
|
||||||
|
* In x64dbg break on node_data_va to check which register holds required data (previously r11 register)
|
||||||
|
* if unsure how valid data looks, run iidx26 with hook and check what data r11 holds there and find same thing for node_data_va of iidx27
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static const od_payload_t REV_20200929 = {
|
||||||
|
.revision ="20200929",
|
||||||
|
.clear_rate_va = 0x295960,
|
||||||
|
.fc_rate_va = 0x296E80,
|
||||||
|
.node_data_va = 0x69BF30, //_REM: this or 0x697280 listed for some reason as alternative
|
||||||
|
.node_data_rtn_va = 0x6988BB
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
55
src/omnimix-dataloader/defines.h
Normal file
55
src/omnimix-dataloader/defines.h
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
#ifndef _DEFINES_H
|
||||||
|
#define _DEFINES_H
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
|
||||||
|
enum LOG_LEVEL
|
||||||
|
{
|
||||||
|
FATAL = 1,
|
||||||
|
WARNING = 2,
|
||||||
|
INFO = 3,
|
||||||
|
MISC = 4
|
||||||
|
};
|
||||||
|
typedef struct od_payload od_payload_t;
|
||||||
|
typedef struct od_node_data od_node_data_t;
|
||||||
|
typedef union od_module od_module_t;
|
||||||
|
typedef __int64(__fastcall *read_node_data_s32_t)(void *, void *, unsigned int);
|
||||||
|
typedef bool(__fastcall *get_clear_rate_t)(int, int, unsigned int *);
|
||||||
|
typedef bool(__fastcall *get_fc_rate_t)(int, int, unsigned int *);
|
||||||
|
typedef int64_t(*game_log_t)(int64_t, enum LOG_LEVEL, const char *, const char *, ...);
|
||||||
|
|
||||||
|
union od_module
|
||||||
|
{
|
||||||
|
long long base;
|
||||||
|
HMODULE handle;
|
||||||
|
};
|
||||||
|
struct od_payload
|
||||||
|
{
|
||||||
|
const char *revision;
|
||||||
|
const int clear_rate_va;
|
||||||
|
const int fc_rate_va;
|
||||||
|
const int node_data_va;
|
||||||
|
const int node_data_rtn_va;
|
||||||
|
};
|
||||||
|
struct od_node_data
|
||||||
|
{
|
||||||
|
uint16_t song_id;
|
||||||
|
int16_t values[12];
|
||||||
|
od_node_data_t* next;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern game_log_t game_log;
|
||||||
|
|
||||||
|
#define HOOK_NAME "omnimix_dataloader"
|
||||||
|
#ifdef BIN_BUILDREV
|
||||||
|
#define HOOK_REVISION BIN_BUILDREV
|
||||||
|
#else
|
||||||
|
#error "Specify BIN_BUILDREV"
|
||||||
|
#endif
|
||||||
|
#define INLINE_ASM 1
|
||||||
|
#define log_msg(level, msg, args...) game_log(0, level, HOOK_NAME, msg, ##args)
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
255
src/omnimix-dataloader/omnimix_dataloader.c
Executable file
255
src/omnimix-dataloader/omnimix_dataloader.c
Executable file
@ -0,0 +1,255 @@
|
|||||||
|
#include "iidx25.h"
|
||||||
|
#include "iidx26.h"
|
||||||
|
#include "iidx27.h"
|
||||||
|
#include <MinHook.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <windows.h>
|
||||||
|
#include <psapi.h>
|
||||||
|
|
||||||
|
|
||||||
|
static const od_payload_t *const payloads_[] = {
|
||||||
|
&REV_20180919,
|
||||||
|
&REV_20190902,
|
||||||
|
&REV_20191007,
|
||||||
|
&REV_20200929,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
static const od_payload_t *payload_;
|
||||||
|
static od_module_t avs2_;
|
||||||
|
static od_module_t bm2dx_;
|
||||||
|
static od_node_data_t *node_data_head = 0;
|
||||||
|
static od_node_data_t *node_data_tail = 0;
|
||||||
|
static read_node_data_s32_t read_node_data_s32;
|
||||||
|
game_log_t game_log;
|
||||||
|
|
||||||
|
HMODULE get_module(const char *name)
|
||||||
|
{
|
||||||
|
HMODULE rv = NULL;
|
||||||
|
|
||||||
|
// Prioritize exact match
|
||||||
|
rv = GetModuleHandle(name);
|
||||||
|
if (rv) return rv;
|
||||||
|
|
||||||
|
// Find first .dll including specified name
|
||||||
|
HMODULE modules[1024];
|
||||||
|
DWORD cb_needed;
|
||||||
|
HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, GetCurrentProcessId());
|
||||||
|
if (EnumProcessModules(process, modules, sizeof(modules), &cb_needed))
|
||||||
|
{
|
||||||
|
const size_t needlelen = strlen(name) - 4;
|
||||||
|
char *needle = malloc(needlelen + 1);
|
||||||
|
memcpy(needle, name, needlelen);
|
||||||
|
needle[needlelen] = '\0';
|
||||||
|
for (unsigned int i = 0; i < (cb_needed / sizeof(HMODULE)); i++)
|
||||||
|
{
|
||||||
|
TCHAR szModName[MAX_PATH];
|
||||||
|
if (GetModuleBaseName(process, modules[i], szModName, sizeof(szModName) / sizeof(TCHAR)))
|
||||||
|
{
|
||||||
|
if (strstr(szModName, needle))
|
||||||
|
{
|
||||||
|
log_msg(WARNING, "Loading %s as %s instead", szModName, name);
|
||||||
|
rv = modules[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(needle);
|
||||||
|
}
|
||||||
|
CloseHandle(process);
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
const char *get_revision()
|
||||||
|
{
|
||||||
|
static char rv[9] = "";
|
||||||
|
FILE *ea3f = fopen("prop/ea3-config.xml", "rb");
|
||||||
|
if (!ea3f)return rv;
|
||||||
|
fseek(ea3f, 0L, SEEK_END);
|
||||||
|
int sz = ftell(ea3f);
|
||||||
|
fseek(ea3f, 0, SEEK_SET);
|
||||||
|
char *ea3buf = malloc(sz + 1);
|
||||||
|
fread(ea3buf, sz, 1, ea3f);
|
||||||
|
ea3buf[sz] = '\0';
|
||||||
|
|
||||||
|
const char *cursor = ea3buf;
|
||||||
|
cursor = strstr(cursor ? cursor : rv, "<soft>");
|
||||||
|
cursor = strstr(cursor ? cursor : rv, "<ext __type=\"str\">");
|
||||||
|
cursor = strstr(cursor ? cursor : rv, "2");
|
||||||
|
memmove(rv, cursor ? cursor : rv, 8);
|
||||||
|
rv[8] = '\0';
|
||||||
|
if (!strstr(cursor ? cursor : rv, "</ext>")) rv[0] = '\0';
|
||||||
|
|
||||||
|
fclose(ea3f);
|
||||||
|
free(ea3buf);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
const od_payload_t *get_payload()
|
||||||
|
{
|
||||||
|
const char *revision = get_revision();
|
||||||
|
const od_payload_t *const *it = payloads_;
|
||||||
|
while (*it)
|
||||||
|
{
|
||||||
|
if (!strcmp((*it)->revision, revision))
|
||||||
|
break;
|
||||||
|
it++;
|
||||||
|
}
|
||||||
|
return *it;
|
||||||
|
}
|
||||||
|
|
||||||
|
void add_node_data(int song_id, const int clear_node_data[])
|
||||||
|
{
|
||||||
|
od_node_data_t *data = malloc(sizeof(od_node_data_t));
|
||||||
|
data->song_id = (uint16_t) song_id;
|
||||||
|
data->next = 0;
|
||||||
|
for (int i = 0; i < 12; i++)
|
||||||
|
{
|
||||||
|
data->values[i] = (int16_t) clear_node_data[i];
|
||||||
|
}
|
||||||
|
if (node_data_head == 0)
|
||||||
|
{
|
||||||
|
node_data_head = data;
|
||||||
|
node_data_tail = node_data_head;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
node_data_tail->next = data;
|
||||||
|
node_data_tail = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
od_node_data_t *find_node_data(int song_id)
|
||||||
|
{
|
||||||
|
od_node_data_t *current = node_data_head;
|
||||||
|
while (current != 0)
|
||||||
|
{
|
||||||
|
if (current->song_id == song_id)
|
||||||
|
return current;
|
||||||
|
|
||||||
|
current = current->next;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
__int64 read_node_data_hook(void *node_reference, int *dest, unsigned int bytes)
|
||||||
|
{
|
||||||
|
log_msg(INFO, "read_node_data_hook() triggered");
|
||||||
|
void *retaddr = __builtin_return_address(0);
|
||||||
|
if (retaddr != (void *) (bm2dx_.base + payload_->node_data_rtn_va))
|
||||||
|
{
|
||||||
|
return read_node_data_s32(node_reference, dest, bytes);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if INLINE_ASM
|
||||||
|
//_BUG: original on-compile solution, this is no longer supported by GCC as well: https://stackoverflow.com/questions/2114163/reading-a-register-value-into-a-c-variable
|
||||||
|
register void *r11 __asm__("r11");//_BUG: '__asm__ volatile' is a compilation error now
|
||||||
|
char *song_id_text_tmp = (char *) (r11 + 0xA0);//_BUG: 0xA0 may also change between versions?
|
||||||
|
#else
|
||||||
|
// compiler independent solution
|
||||||
|
/*_INFO: post compilation patching
|
||||||
|
* In disassembler go to read_node_data_hook and search for lea instruction referring to cs:read_node_data_original
|
||||||
|
* If you disabled release optimization should be something like lea and than add 0xA0
|
||||||
|
* mov rax, [r11 + 0xA0]
|
||||||
|
* 49 8b 83 a0 00 00 00 .. (fill rest with 90)
|
||||||
|
* or + 0x500 since r11+0xA0==r11+(0xA0*sizeof(void*)) in which case
|
||||||
|
* 49 8b 83 a0 00 00 00 .. (fill rest with 90)
|
||||||
|
* */
|
||||||
|
char *song_id_text_tmp = (char *) (&read_node_data_s32 + 0xA0 / sizeof(void *)); /*leave for better assembly output, modify so it takes r11*/
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char song_id_text[8];
|
||||||
|
for (int i = 0; i < 8; i++)
|
||||||
|
{
|
||||||
|
song_id_text[i] = song_id_text_tmp[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
int song_id = atoi(song_id_text);
|
||||||
|
int dest_buffer[12];
|
||||||
|
__int64 result = read_node_data_s32(node_reference, dest_buffer, bytes);
|
||||||
|
for (int i = 0; i < 12; i++)
|
||||||
|
{
|
||||||
|
dest[i] = dest_buffer[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
add_node_data(song_id, dest_buffer);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bool __fastcall clear_rate_hook(int song_id, int difficulty, unsigned int *clear_rate)
|
||||||
|
{
|
||||||
|
od_node_data_t *data = find_node_data(song_id);
|
||||||
|
if (data == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
*clear_rate = (unsigned int) data->values[difficulty];
|
||||||
|
if (*clear_rate > 1000)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool __fastcall fc_rate_hook(int song_id, int difficulty, unsigned int *fc_rate)
|
||||||
|
{
|
||||||
|
od_node_data_t *data = find_node_data(song_id);
|
||||||
|
if (data == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
*fc_rate = (unsigned int) data->values[difficulty + 6];
|
||||||
|
if (*fc_rate > 1000)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
BOOL WINAPI DllMain(HMODULE module, DWORD reason, void *reserved)
|
||||||
|
{
|
||||||
|
switch (reason)
|
||||||
|
{
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
{
|
||||||
|
avs2_.handle = GetModuleHandle("avs2-core.dll");
|
||||||
|
game_log = (game_log_t) (GetProcAddress(avs2_.handle, "XCgsqzn0000175"));
|
||||||
|
payload_ = get_payload();
|
||||||
|
if (!payload_)
|
||||||
|
{
|
||||||
|
log_msg(WARNING, "Invalid environment, aborting...");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bm2dx_.handle = get_module("bm2dx.dll");
|
||||||
|
read_node_data_s32 = (read_node_data_s32_t) (bm2dx_.base + payload_->node_data_va);
|
||||||
|
get_clear_rate_t clear_rate = (get_clear_rate_t) (bm2dx_.base + payload_->clear_rate_va);
|
||||||
|
get_fc_rate_t fc_rate = (get_fc_rate_t) (bm2dx_.base + payload_->fc_rate_va);
|
||||||
|
log_msg(MISC, "Detected revision: hook=%s, payload=%s", HOOK_REVISION, payload_->revision);
|
||||||
|
|
||||||
|
int error_code = MH_Initialize();
|
||||||
|
if (error_code == MH_ERROR_ALREADY_INITIALIZED)
|
||||||
|
{
|
||||||
|
log_msg(INFO, "MinHook already initialized");
|
||||||
|
error_code ^= MH_ERROR_ALREADY_INITIALIZED;
|
||||||
|
}
|
||||||
|
if (error_code == MH_OK)
|
||||||
|
{
|
||||||
|
error_code |= MH_CreateHook((PVOID) read_node_data_s32, (PVOID) read_node_data_hook, (PVOID *) &read_node_data_s32);
|
||||||
|
error_code |= MH_CreateHook((PVOID) clear_rate, (PVOID) clear_rate_hook, (PVOID *) 0);
|
||||||
|
error_code |= MH_CreateHook((PVOID) fc_rate, (PVOID) fc_rate_hook, (PVOID *) 0);
|
||||||
|
error_code |= MH_EnableHook(MH_ALL_HOOKS);
|
||||||
|
}
|
||||||
|
if (error_code == MH_OK)
|
||||||
|
{
|
||||||
|
log_msg(INFO, "Injected payload: rrd=0x%x, gcr=0x%x, gfr=0x%x", payload_->node_data_va, payload_->clear_rate_va, payload_->fc_rate_va);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log_msg(WARNING, "MinHook error(0x%x)", error_code);
|
||||||
|
log_msg(WARNING, "Error injecting into bm2dx.dll, aborting...");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
MH_Uninitialize();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user