Compare commits

...

8 Commits

Author SHA1 Message Date
2c366c70b8 Remove package 2025-02-11 22:03:28 +08:00
1a4dc6f517 include not found fixed 2025-02-11 21:35:11 +08:00
99594e4241 include not found fixed 2025-02-11 21:32:07 +08:00
c2248b9a74 2025-2-11 fix 2025-02-11 21:25:30 +08:00
4addd8752d ARM fixed 2025-02-11 00:16:06 +08:00
4a816f9f43 Qt UI still needs to be fixed. 2025-02-10 00:15:25 +08:00
6c60067ba7 Finish Linux x86_64 build 2025-02-10 00:00:38 +08:00
bc3c5a8f9d build fix 2025-02-07 16:21:42 +08:00
713 changed files with 43630 additions and 57777 deletions

22
.ci/android.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/bash -ex
export NDK_CCACHE=$(which ccache)
[ "$GITHUB_REPOSITORY" = "citra-emu/citra-canary" ] &&
BUILD_FLAVOR=canary ||
BUILD_FLAVOR=nightly
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}"
fi
cd src/android
chmod +x ./gradlew
./gradlew assemble${BUILD_FLAVOR}Release
./gradlew bundle${BUILD_FLAVOR}Release
ccache -s -v
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
rm "${ANDROID_KEYSTORE_FILE}"
fi

37
.ci/clang-format.sh Executable file
View File

@@ -0,0 +1,37 @@
#!/bin/bash -ex
if grep -nrI '\s$' src *.yml *.txt *.md Doxyfile .gitignore .gitmodules .ci* dist/*.desktop \
dist/*.svg dist/*.xml; then
echo Trailing whitespace found, aborting
exit 1
fi
# Default clang-format points to default 3.5 version one
CLANG_FORMAT=clang-format-15
$CLANG_FORMAT --version
if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
# Get list of every file modified in this pull request
files_to_lint="$(git diff --name-only --diff-filter=ACMRTUXB $COMMIT_RANGE | grep '^src/[^.]*[.]\(cpp\|h\)$' || true)"
else
# Check everything for branch pushes
files_to_lint="$(find src/ -name '*.cpp' -or -name '*.h')"
fi
# Turn off tracing for this because it's too verbose
set +x
for f in $files_to_lint; do
d=$(diff -u "$f" <($CLANG_FORMAT "$f") || true)
if ! [ -z "$d" ]; then
echo "!!! $f not compliant to coding style, here is the fix:"
echo "$d"
fail=1
fi
done
set -x
if [ "$fail" = 1 ]; then
exit 1
fi

15
.ci/ios.sh Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/bash -ex
mkdir build && cd build
cmake .. -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SYSTEM_NAME=iOS \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DENABLE_QT_TRANSLATION=ON \
-DCITRA_ENABLE_COMPATIBILITY_REPORTING=ON \
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON
ninja
ccache -s -v

34
.ci/linux.sh Executable file
View File

@@ -0,0 +1,34 @@
#!/bin/bash -ex
if [ "$TARGET" = "appimage" ]; then
# Compile the AppImage we distribute with Clang.
export EXTRA_CMAKE_FLAGS=(-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_LINKER=/etc/bin/ld.lld)
# Bundle required QT wayland libraries
export EXTRA_QT_PLUGINS="waylandcompositor"
export EXTRA_PLATFORM_PLUGINS="libqwayland-egl.so;libqwayland-generic.so"
else
# For the linux-fresh verification target, verify compilation without PCH as well.
export EXTRA_CMAKE_FLAGS=(-DCITRA_USE_PRECOMPILED_HEADERS=OFF)
fi
mkdir build && cd build
cmake .. -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
"${EXTRA_CMAKE_FLAGS[@]}" \
-DENABLE_QT_TRANSLATION=ON \
-DCITRA_ENABLE_COMPATIBILITY_REPORTING=ON \
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
-DUSE_DISCORD_PRESENCE=ON
ninja
if [ "$TARGET" = "appimage" ]; then
ninja bundle
# TODO: Our AppImage environment currently uses an older ccache version without the verbose flag.
ccache -s
else
ccache -s -v
fi
ctest -VV -C Release

43
.ci/macos-universal.sh Executable file
View File

@@ -0,0 +1,43 @@
#!/bin/bash -ex
ARTIFACTS_LIST=($ARTIFACTS)
BUNDLE_DIR=build/bundle
mkdir build
# Set up the base artifact to combine into.
BASE_ARTIFACT=${ARTIFACTS_LIST[0]}
BASE_ARTIFACT_ARCH="${BASE_ARTIFACT##*-}"
mv $BASE_ARTIFACT $BUNDLE_DIR
# Executable binary paths that need to be combined.
BIN_PATHS=(citra citra-room citra-qt.app/Contents/MacOS/citra-qt)
# Dylib paths that need to be combined.
IFS=$'\n'
DYLIB_PATHS=($(cd $BUNDLE_DIR && find . -name '*.dylib'))
unset IFS
# Combine all of the executable binaries and dylibs.
for OTHER_ARTIFACT in "${ARTIFACTS_LIST[@]:1}"; do
OTHER_ARTIFACT_ARCH="${OTHER_ARTIFACT##*-}"
for BIN_PATH in "${BIN_PATHS[@]}"; do
lipo -create -output $BUNDLE_DIR/$BIN_PATH $BUNDLE_DIR/$BIN_PATH $OTHER_ARTIFACT/$BIN_PATH
done
for DYLIB_PATH in "${DYLIB_PATHS[@]}"; do
# Only merge if the libraries do not have conflicting arches, otherwise it will fail.
DYLIB_INFO=`file $BUNDLE_DIR/$DYLIB_PATH`
OTHER_DYLIB_INFO=`file $OTHER_ARTIFACT/$DYLIB_PATH`
if ! [[ "$DYLIB_INFO" =~ "$OTHER_ARTIFACT_ARCH" ]] && ! [[ "$OTHER_DYLIB_INFO" =~ "$BASE_ARTIFACT_ARCH" ]]; then
lipo -create -output $BUNDLE_DIR/$DYLIB_PATH $BUNDLE_DIR/$DYLIB_PATH $OTHER_ARTIFACT/$DYLIB_PATH
fi
done
done
# Re-sign executables and bundles after combining.
APP_PATHS=(citra citra-room citra-qt.app)
for APP_PATH in "${APP_PATHS[@]}"; do
codesign --deep -fs - $BUNDLE_DIR/$APP_PATH
done

21
.ci/macos.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/bash -ex
mkdir build && cd build
cmake .. -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_OSX_ARCHITECTURES="$TARGET" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DENABLE_QT_TRANSLATION=ON \
-DCITRA_ENABLE_COMPATIBILITY_REPORTING=ON \
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
-DUSE_DISCORD_PRESENCE=ON
ninja
ninja bundle
ccache -s -v
CURRENT_ARCH=`arch`
if [ "$TARGET" = "$CURRENT_ARCH" ]; then
ctest -VV -C Release
fi

80
.ci/pack.sh Executable file
View File

@@ -0,0 +1,80 @@
#!/bin/bash -ex
# Determine the full revision name.
GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`"
GITREV="`git show -s --format='%h'`"
REV_NAME="citra-$OS-$TARGET-$GITDATE-$GITREV"
# Determine the name of the release being built.
if [[ "$GITHUB_REF_NAME" =~ ^canary- ]] || [[ "$GITHUB_REF_NAME" =~ ^nightly- ]]; then
RELEASE_NAME=$(echo $GITHUB_REF_NAME | cut -d- -f1)
else
RELEASE_NAME=head
fi
# Archive and upload the artifacts.
mkdir artifacts
function pack_artifacts() {
ARTIFACTS_PATH="$1"
# Set up root directory for archive.
mkdir "$REV_NAME"
if [ -f "$ARTIFACTS_PATH" ]; then
mv "$ARTIFACTS_PATH" "$REV_NAME"
# Use file extension to differentiate archives.
FILENAME=$(basename "$ARTIFACT")
EXTENSION="${FILENAME##*.}"
ARCHIVE_NAME="$REV_NAME.$EXTENSION"
else
mv "$ARTIFACTS_PATH"/* "$REV_NAME"
ARCHIVE_NAME="$REV_NAME"
fi
# Create .zip/.tar.gz
if [ "$OS" = "windows" ]; then
ARCHIVE_FULL_NAME="$ARCHIVE_NAME.zip"
powershell Compress-Archive "$REV_NAME" "$ARCHIVE_FULL_NAME"
elif [ "$OS" = "android" ]; then
ARCHIVE_FULL_NAME="$ARCHIVE_NAME.zip"
zip -r "$ARCHIVE_FULL_NAME" "$REV_NAME"
else
ARCHIVE_FULL_NAME="$ARCHIVE_NAME.tar.gz"
tar czvf "$ARCHIVE_FULL_NAME" "$REV_NAME"
fi
mv "$ARCHIVE_FULL_NAME" artifacts/
if [ -z "$SKIP_7Z" ]; then
# Create .7z
ARCHIVE_FULL_NAME="$ARCHIVE_NAME.7z"
mv "$REV_NAME" "$RELEASE_NAME"
7z a "$ARCHIVE_FULL_NAME" "$RELEASE_NAME"
mv "$ARCHIVE_FULL_NAME" artifacts/
# Clean up created release artifacts directory.
rm -rf "$RELEASE_NAME"
else
# Clean up created rev artifacts directory.
rm -rf "$REV_NAME"
fi
}
if [ -n "$UNPACKED" ]; then
# Copy the artifacts to be uploaded unpacked.
for ARTIFACT in build/bundle/*; do
FILENAME=$(basename "$ARTIFACT")
EXTENSION="${FILENAME##*.}"
mv "$ARTIFACT" "artifacts/$REV_NAME.$EXTENSION"
done
elif [ -n "$PACK_INDIVIDUALLY" ]; then
# Pack and upload the artifacts one-by-one.
for ARTIFACT in build/bundle/*; do
pack_artifacts "$ARTIFACT"
done
else
# Pack all of the artifacts into a single archive.
pack_artifacts build/bundle
fi

20
.ci/source.sh Executable file
View File

@@ -0,0 +1,20 @@
#!/bin/bash -ex
GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`"
GITREV="`git show -s --format='%h'`"
REV_NAME="citra-unified-source-${GITDATE}-${GITREV}"
COMPAT_LIST='dist/compatibility_list/compatibility_list.json'
mkdir artifacts
pip3 install git-archive-all
touch "${COMPAT_LIST}"
git describe --abbrev=0 --always HEAD > GIT-COMMIT
git describe --tags HEAD > GIT-TAG || echo 'unknown' > GIT-TAG
git archive-all --include "${COMPAT_LIST}" --include GIT-COMMIT --include GIT-TAG --force-submodules artifacts/"${REV_NAME}.tar"
cd artifacts/
xz -T0 -9 "${REV_NAME}.tar"
sha256sum "${REV_NAME}.tar.xz" > "${REV_NAME}.tar.xz.sha256sum"
cd ..

14
.ci/transifex.sh Executable file
View File

@@ -0,0 +1,14 @@
#!/bin/bash -ex
echo -e "\e[1m\e[33mBuild tools information:\e[0m"
cmake --version
gcc -v
tx --version
mkdir build && cd build
cmake .. -DENABLE_QT_TRANSLATION=ON -DGENERATE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_SDL2=OFF
make translation
cd ..
cd dist/languages
tx push -s

17
.ci/windows.sh Normal file
View File

@@ -0,0 +1,17 @@
#!/bin/sh -ex
mkdir build && cd build
cmake .. -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DENABLE_QT_TRANSLATION=ON \
-DCITRA_ENABLE_COMPATIBILITY_REPORTING=ON \
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
-DUSE_DISCORD_PRESENCE=ON
ninja
ninja bundle
ccache -s -v
ctest -VV -C Release || echo "::error ::Test error occurred on Windows build"

4
.gitattributes vendored Normal file
View File

@@ -0,0 +1,4 @@
dist/languages/* linguist-vendored
dist/qt_themes/* linguist-vendored
externals/* linguist-vendored
*.h linguist-language=cpp

62
.gitignore vendored
View File

@@ -1,14 +1,50 @@
# ---> CMake # Build directory
CMakeLists.txt.user [Bb]uild*/
CMakeCache.txt doc-build/
CMakeFiles build-*/
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
build
# Generated source files
src/common/scm_rev.cpp
.travis.descriptor.json
# Project/editor files
*.swp
*.kdev4
.idea/
.vs/
.vscode/
.cache/
.kdev4/
cmake-build-debug/
cmake-build-release/
CMakeLists.txt.user*
# *nix related
# Common convention for backup or temporary files
*~
# Visual Studio CMake settings
CMakeSettings.json
# OSX global filetypes
# Created by Finder or Spotlight in directories for various OS functionality (indexing, etc)
.DS_Store
.AppleDouble
.LSOverride
.Spotlight-V100
.Trashes
# Windows global filetypes
Thumbs.db
# Python files
*.pyc
# Flatpak generated files
.flatpak-builder/
repo/
# GitHub Actions generated files
.ccache/
node_modules/
VULKAN_SDK/

93
.gitmodules vendored Normal file
View File

@@ -0,0 +1,93 @@
[submodule "boost"]
path = externals/boost
url = https://github.com/PabloMK7/ext-boost.git
[submodule "nihstro"]
path = externals/nihstro
url = https://github.com/neobrain/nihstro.git
[submodule "soundtouch"]
path = externals/soundtouch
url = https://codeberg.org/soundtouch/soundtouch.git
[submodule "catch2"]
path = externals/catch2
url = https://github.com/catchorg/Catch2
[submodule "dynarmic"]
path = externals/dynarmic
url = https://github.com/PabloMK7/dynarmic.git
[submodule "xbyak"]
path = externals/xbyak
url = https://github.com/herumi/xbyak.git
[submodule "fmt"]
path = externals/fmt
url = https://github.com/fmtlib/fmt.git
[submodule "enet"]
path = externals/enet
url = https://github.com/lsalzman/enet.git
[submodule "inih"]
path = externals/inih/inih
url = https://github.com/benhoyt/inih.git
[submodule "libressl"]
path = externals/libressl
url = https://github.com/PabloMK7/ext-libressl-portable.git
[submodule "libusb"]
path = externals/libusb/libusb
url = https://github.com/libusb/libusb.git
[submodule "cubeb"]
path = externals/cubeb
url = https://github.com/mozilla/cubeb
[submodule "discord-rpc"]
path = externals/discord-rpc
url = https://github.com/PabloMK7/discord-rpc.git
[submodule "cpp-jwt"]
path = externals/cpp-jwt
url = https://github.com/arun11299/cpp-jwt.git
[submodule "teakra"]
path = externals/teakra
url = https://github.com/wwylele/teakra.git
[submodule "lodepng"]
path = externals/lodepng/lodepng
url = https://github.com/lvandeve/lodepng.git
[submodule "zstd"]
path = externals/zstd
url = https://github.com/facebook/zstd.git
[submodule "libyuv"]
path = externals/libyuv
url = https://github.com/lemenkov/libyuv.git
[submodule "sdl2"]
path = externals/sdl2/SDL
url = https://github.com/libsdl-org/SDL
[submodule "cryptopp-cmake"]
path = externals/cryptopp-cmake
url = https://github.com/abdes/cryptopp-cmake.git
[submodule "cryptopp"]
path = externals/cryptopp
url = https://github.com/weidai11/cryptopp.git
[submodule "dds-ktx"]
path = externals/dds-ktx
url = https://github.com/septag/dds-ktx
[submodule "openal-soft"]
path = externals/openal-soft
url = https://github.com/kcat/openal-soft
[submodule "glslang"]
path = externals/glslang
url = https://github.com/KhronosGroup/glslang
[submodule "vma"]
path = externals/vma
url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
[submodule "vulkan-headers"]
path = externals/vulkan-headers
url = https://github.com/KhronosGroup/Vulkan-Headers
[submodule "sirit"]
path = externals/sirit
url = https://github.com/PabloMK7/sirit
[submodule "faad2"]
path = externals/faad2/faad2
url = https://github.com/knik0/faad2
[submodule "library-headers"]
path = externals/library-headers
url = https://github.com/PabloMK7/ext-library-headers.git
[submodule "libadrenotools"]
path = externals/libadrenotools
url = https://github.com/bylaws/libadrenotools
[submodule "oaknut"]
path = externals/oaknut
url = https://github.com/merryhime/oaknut.git

View File

@@ -15,7 +15,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modul
include(DownloadExternals) include(DownloadExternals)
include(CMakeDependentOption) include(CMakeDependentOption)
project(citra LANGUAGES C CXX ASM) project(Lucina3DS LANGUAGES C CXX ASM)
# Some submodules like to pick their own default build type if not specified. # Some submodules like to pick their own default build type if not specified.
# Make sure we default to Release build type always, unless the generator has custom types. # Make sure we default to Release build type always, unless the generator has custom types.
@@ -88,12 +88,12 @@ option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF)
# Compile options # Compile options
CMAKE_DEPENDENT_OPTION(COMPILE_WITH_DWARF "Add DWARF debugging information" ${IS_DEBUG_BUILD} "MINGW" OFF) CMAKE_DEPENDENT_OPTION(COMPILE_WITH_DWARF "Add DWARF debugging information" ${IS_DEBUG_BUILD} "MINGW" OFF)
option(ENABLE_LTO "Enable link time optimization" ${DEFAULT_ENABLE_LTO}) option(ENABLE_LTO "Enable link time optimization" ${DEFAULT_ENABLE_LTO})
option(CITRA_USE_PRECOMPILED_HEADERS "Use precompiled headers" ON) option(LUCINA3DS_USE_PRECOMPILED_HEADERS "Use precompiled headers" ON)
option(CITRA_WARNINGS_AS_ERRORS "Enable warnings as errors" ON) option(LUCINA3DS_WARNINGS_AS_ERRORS "Enable warnings as errors" ON)
include(CitraHandleSystemLibs) include(CitraHandleSystemLibs)
if (CITRA_USE_PRECOMPILED_HEADERS) if (LUCINA3DS_USE_PRECOMPILED_HEADERS)
message(STATUS "Using Precompiled Headers.") message(STATUS "Using Precompiled Headers.")
set(CMAKE_PCH_INSTANTIATE_TEMPLATES ON) set(CMAKE_PCH_INSTANTIATE_TEMPLATES ON)
@@ -136,21 +136,21 @@ endif()
# Sanity check : Check that all submodules are present # Sanity check : Check that all submodules are present
# ======================================================================= # =======================================================================
function(check_submodules_present) #function(check_submodules_present)
file(READ "${PROJECT_SOURCE_DIR}/.gitmodules" gitmodules) # file(READ "${PROJECT_SOURCE_DIR}/.gitmodules" gitmodules)
string(REGEX MATCHALL "path *= *[^ \t\r\n]*" gitmodules ${gitmodules}) # string(REGEX MATCHALL "path *= *[^ \t\r\n]*" gitmodules ${gitmodules})
foreach(module ${gitmodules}) # foreach(module ${gitmodules})
string(REGEX REPLACE "path *= *" "" module ${module}) # string(REGEX REPLACE "path *= *" "" module ${module})
if (NOT EXISTS "${PROJECT_SOURCE_DIR}/${module}/.git") # if (NOT EXISTS "${PROJECT_SOURCE_DIR}/${module}/.git")
message(SEND_ERROR "Git submodule ${module} not found." # message(SEND_ERROR "Git submodule ${module} not found."
"Please run: git submodule update --init --recursive") # "Please run: git submodule update --init --recursive")
endif() # endif()
endforeach() # endforeach()
endfunction() #endfunction()
if (EXISTS "${PROJECT_SOURCE_DIR}/.git/objects") #if (EXISTS "${PROJECT_SOURCE_DIR}/.git/objects")
# only check submodules when source is obtained via Git # only check submodules when source is obtained via Git
check_submodules_present() # check_submodules_present()
endif() #endif()
configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc
${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc
@@ -434,11 +434,11 @@ add_subdirectory(src)
add_subdirectory(dist/installer) add_subdirectory(dist/installer)
# Set citra-qt project or citra project as default StartUp Project in Visual Studio depending on whether QT is enabled or not # Set lucina3ds-qt project or lucina3ds project as default StartUp Project in Visual Studio depending on whether QT is enabled or not
if(ENABLE_QT) if(ENABLE_QT)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT citra-qt) set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT lucina3ds-qt)
else() else()
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT citra) set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT lucina3ds)
endif() endif()
# Create target for outputting distributable bundles. # Create target for outputting distributable bundles.
@@ -446,13 +446,13 @@ endif()
if (NOT ANDROID AND NOT IOS) if (NOT ANDROID AND NOT IOS)
include(BundleTarget) include(BundleTarget)
if (ENABLE_SDL2_FRONTEND) if (ENABLE_SDL2_FRONTEND)
bundle_target(citra) bundle_target(lucina3ds)
endif() endif()
if (ENABLE_QT) if (ENABLE_QT)
bundle_target(citra-qt) bundle_target(lucina3ds-qt)
endif() endif()
if (ENABLE_DEDICATED_ROOM) if (ENABLE_DEDICATED_ROOM)
bundle_target(citra-room) bundle_target(lucina3ds-room)
endif() endif()
endif() endif()
@@ -464,22 +464,22 @@ endif()
# http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html # http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
# http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html # http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html
if(ENABLE_QT AND UNIX AND NOT APPLE) if(ENABLE_QT AND UNIX AND NOT APPLE)
install(FILES "${PROJECT_SOURCE_DIR}/dist/citra-qt.desktop" install(FILES "${PROJECT_SOURCE_DIR}/dist/lucina3ds-qt.desktop"
DESTINATION "${CMAKE_INSTALL_PREFIX}/share/applications") DESTINATION "${CMAKE_INSTALL_PREFIX}/share/applications")
install(FILES "${PROJECT_SOURCE_DIR}/dist/citra.svg" install(FILES "${PROJECT_SOURCE_DIR}/dist/lucina3ds.svg"
DESTINATION "${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps") DESTINATION "${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps")
install(FILES "${PROJECT_SOURCE_DIR}/dist/citra.xml" install(FILES "${PROJECT_SOURCE_DIR}/dist/lucina3ds.xml"
DESTINATION "${CMAKE_INSTALL_PREFIX}/share/mime/packages") DESTINATION "${CMAKE_INSTALL_PREFIX}/share/mime/packages")
endif() endif()
if(UNIX) if(UNIX)
if(ENABLE_SDL2) if(ENABLE_SDL2)
install(FILES "${PROJECT_SOURCE_DIR}/dist/citra.6" install(FILES "${PROJECT_SOURCE_DIR}/dist/lucina3ds.6"
DESTINATION "${CMAKE_INSTALL_PREFIX}/share/man/man6") DESTINATION "${CMAKE_INSTALL_PREFIX}/share/man/man6")
endif() endif()
if (ENABLE_QT) if (ENABLE_QT)
install(FILES "${PROJECT_SOURCE_DIR}/dist/citra-qt.6" install(FILES "${PROJECT_SOURCE_DIR}/dist/lucina3ds-qt.6"
DESTINATION "${CMAKE_INSTALL_PREFIX}/share/man/man6") DESTINATION "${CMAKE_INSTALL_PREFIX}/share/man/man6")
endif() endif()
endif() endif()

View File

@@ -124,7 +124,7 @@ if (BUNDLE_TARGET_EXECUTE)
${extra_linuxdeploy_args} ${extra_linuxdeploy_args}
--plugin checkrt --plugin checkrt
--executable "${executable_path}" --executable "${executable_path}"
--icon-file "${source_path}/dist/citra.svg" --icon-file "${source_path}/dist/lucina3ds.svg"
--desktop-file "${source_path}/dist/${executable_name}.desktop" --desktop-file "${source_path}/dist/${executable_name}.desktop"
--appdir "${appdir_path}" --appdir "${appdir_path}"
RESULT_VARIABLE linuxdeploy_appdir_result) RESULT_VARIABLE linuxdeploy_appdir_result)
@@ -282,7 +282,7 @@ else()
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bundle/dist/") COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bundle/dist/")
add_custom_command( add_custom_command(
TARGET bundle TARGET bundle
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/dist/icon.png" "${CMAKE_BINARY_DIR}/bundle/dist/citra.png") COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/dist/icon.png" "${CMAKE_BINARY_DIR}/bundle/dist/lucina3ds.png")
add_custom_command( add_custom_command(
TARGET bundle TARGET bundle
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/license.txt" "${CMAKE_BINARY_DIR}/bundle/") COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/license.txt" "${CMAKE_BINARY_DIR}/bundle/")

View File

@@ -42,7 +42,7 @@ if (DEFINED ENV{CI})
endif() endif()
# regex capture the string nightly or canary into CMAKE_MATCH_1 # regex capture the string nightly or canary into CMAKE_MATCH_1
string(REGEX MATCH "citra-emu/citra-?(.*)" OUTVAR ${BUILD_REPOSITORY}) string(REGEX MATCH "lucina3ds-emu/lucina3ds-?(.*)" OUTVAR ${BUILD_REPOSITORY})
if ("${CMAKE_MATCH_COUNT}" GREATER 0) if ("${CMAKE_MATCH_COUNT}" GREATER 0)
# capitalize the first letter of each word in the repo name. # capitalize the first letter of each word in the repo name.
string(REPLACE "-" ";" REPO_NAME_LIST ${CMAKE_MATCH_1}) string(REPLACE "-" ";" REPO_NAME_LIST ${CMAKE_MATCH_1})

View File

@@ -1 +0,0 @@
**The Contributor's Guide has moved to [the wiki](https://github.com/citra-emu/citra/wiki/Contributing).**

View File

@@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places. # title of most generated pages and in a few other places.
# The default value is: My Project. # The default value is: My Project.
PROJECT_NAME = Citra PROJECT_NAME = Lucina3DS
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This # The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version

BIN
dist/Lucina3DS.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -1,10 +0,0 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=Citra Room
Comment=Multiplayer room host for Citra
Icon=citra
TryExec=citra-room
Exec=citra-room %f
Categories=Game;Emulator;
Keywords=3DS;Nintendo

BIN
dist/citra.ico vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

2
dist/citra.svg vendored

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because it is too large Load Diff

BIN
dist/doc-icon.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
dist/icon.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -11,7 +11,7 @@ endif()
set(BUILD_DIR "${CMAKE_BINARY_DIR}/installer") set(BUILD_DIR "${CMAKE_BINARY_DIR}/installer")
set(DIST_DIR "${BUILD_DIR}/dist") set(DIST_DIR "${BUILD_DIR}/dist")
set(TARGET_FILE "${DIST_DIR}/citra-setup-${PLATFORM}") set(TARGET_FILE "${DIST_DIR}/lucina3ds-setup-${PLATFORM}")
file(MAKE_DIRECTORY "${BUILD_DIR}" "${DIST_DIR}") file(MAKE_DIRECTORY "${BUILD_DIR}" "${DIST_DIR}")

View File

@@ -1,13 +1,13 @@
[main] [main]
host = https://www.transifex.com host = https://www.transifex.com
[o:citra:p:citra:r:emulator] [o:lucina3ds:p:lucina3ds:r:emulator]
file_filter = <lang>.ts file_filter = <lang>.ts
source_file = en.ts source_file = en.ts
source_lang = en source_lang = en
type = QT type = QT
[o:citra:p:citra:r:android] [o:lucina3ds:p:lucina3ds:r:android]
file_filter = ../../src/android/app/src/main/res/values-<lang>/strings.xml file_filter = ../../src/android/app/src/main/res/values-<lang>/strings.xml
source_file = ../../src/android/app/src/main/res/values/strings.xml source_file = ../../src/android/app/src/main/res/values/strings.xml
type = ANDROID type = ANDROID

13704
dist/languages/da_DK.ts vendored

File diff suppressed because it is too large Load Diff

13712
dist/languages/de.ts vendored

File diff suppressed because it is too large Load Diff

13680
dist/languages/zh_CN.ts vendored

File diff suppressed because it is too large Load Diff

13682
dist/languages/zh_TW.ts vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1,22 +1,22 @@
.Dd November 22 2016 .Dd November 22 2016
.Dt citra-qt 6 .Dt lucina3ds-qt 6
.Os .Os
.Sh NAME .Sh NAME
.Nm Citra-Qt .Nm Lucina3DS-Qt
.Nd Nintendo 3DS Emulator/Debugger (Qt) .Nd Nintendo 3DS Emulator/Debugger (Qt)
.Sh SYNOPSIS .Sh SYNOPSIS
.Nm citra-qt .Nm Lucina3DS-qt
.Op Ar file .Op Ar file
.Sh DESCRIPTION .Sh DESCRIPTION
Citra is an experimental open-source Nintendo 3DS emulator/debugger. Lucina3DS is an experimental open-source Nintendo 3DS emulator/debugger.
.Pp .Pp
.Nm citra-qt .Nm lucina3ds-qt
is the Qt implementation. is the Qt implementation.
.Sh FILES .Sh FILES
.Bl -tag -width Ds .Bl -tag -width Ds
.It Pa $XDG_DATA_HOME/citra-emu .It Pa $XDG_DATA_HOME/lucina3ds
Emulator storage. Emulator storage.
.It Pa $XDG_CONFIG_HOME/citra-emu .It Pa $XDG_CONFIG_HOME/lucina3ds
Configuration files. Configuration files.
.El .El
.Sh AUTHORS .Sh AUTHORS

View File

@@ -1,14 +1,14 @@
[Desktop Entry] [Desktop Entry]
Version=1.0 Version=1.0
Type=Application Type=Application
Name=Citra Name=Lucina3DS
GenericName=3DS Emulator GenericName=3DS Emulator
GenericName[fr]=Émulateur 3DS GenericName[fr]=Émulateur 3DS
Comment=Nintendo 3DS video game console emulator Comment=Nintendo 3DS video game console emulator
Comment[fr]=Émulateur de console de jeu Nintendo 3DS Comment[fr]=Émulateur de console de jeu Nintendo 3DS
Icon=citra Icon=lucina3ds
TryExec=citra-qt TryExec=lucina3ds-qt
Exec=citra-qt %f Exec=lucina3ds-qt %f
Categories=Game;Emulator;Qt; Categories=Game;Emulator;Qt;
MimeType=application/x-ctr-3dsx;application/x-ctr-cci;application/x-ctr-cia;application/x-ctr-cxi; MimeType=application/x-ctr-3dsx;application/x-ctr-cci;application/x-ctr-cia;application/x-ctr-cxi;
Keywords=3DS;Nintendo; Keywords=3DS;Nintendo;

10
dist/lucina3ds-room.desktop vendored Normal file
View File

@@ -0,0 +1,10 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=Lucina3DS Room
Comment=Multiplayer room host for Lucina3DS
Icon=lucina3ds
TryExec=lucina3ds-room
Exec=lucina3ds-room %f
Categories=Game;Emulator;
Keywords=3DS;Nintendo

View File

@@ -1,11 +1,11 @@
.Dd September 13 2024 .Dd September 13 2024
.Dt citra 6 .Dt lucina3ds 6
.Os .Os
.Sh NAME .Sh NAME
.Nm Citra .Nm Lucina3DS
.Nd Nintendo 3DS Emulator/Debugger (SDL) .Nd Nintendo 3DS Emulator/Debugger (SDL)
.Sh SYNOPSIS .Sh SYNOPSIS
.Nm citra .Nm lucina3ds
.Op Ar options .Op Ar options
.Op Ar file .Op Ar file
.Sh OPTIONS .Sh OPTIONS
@@ -31,9 +31,9 @@ Shows syntax help and exits
.It Fl v , Fl Fl version .It Fl v , Fl Fl version
Describes the installed version and exits Describes the installed version and exits
.Sh DESCRIPTION .Sh DESCRIPTION
Citra is an experimental open-source Nintendo 3DS emulator/debugger. Lucina3DS is an experimental open-source Nintendo 3DS emulator/debugger.
.Pp .Pp
.Nm citra .Nm lucina3ds
is the Simple DirectMedia Layer (SDL) implementation. is the Simple DirectMedia Layer (SDL) implementation.
.Sh FILES .Sh FILES
.Bl -tag -width Ds .Bl -tag -width Ds

View File

@@ -1,14 +1,14 @@
[Desktop Entry] [Desktop Entry]
Version=1.0 Version=1.0
Type=Application Type=Application
Name=Citra Name=Lucina3DS
GenericName=3DS Emulator GenericName=3DS Emulator
GenericName[fr]=Émulateur 3DS GenericName[fr]=Émulateur 3DS
Comment=Nintendo 3DS video game console emulator Comment=Nintendo 3DS video game console emulator
Comment[fr]=Émulateur de console de jeu Nintendo 3DS Comment[fr]=Émulateur de console de jeu Nintendo 3DS
Icon=citra Icon=lucina3ds
TryExec=citra TryExec=lucina3ds-qt
Exec=citra %f Exec=lucina3ds-qt %f
Categories=Game;Emulator; Categories=Game;Emulator;
MimeType=application/x-ctr-3dsx;application/x-ctr-cci;application/x-ctr-cia;application/x-ctr-cxi; MimeType=application/x-ctr-3dsx;application/x-ctr-cci;application/x-ctr-cia;application/x-ctr-cxi;
Keywords=3DS;Nintendo; Keywords=3DS;Nintendo;

BIN
dist/lucina3ds.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

131
dist/lucina3ds.svg vendored Normal file
View File

@@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="512"
height="512"
viewBox="0 0 512 512"
version="1.1"
id="svg1"
sodipodi:docname="Lucina3DS_G.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
inkscape:export-filename="Lucina3DS.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
inkscape:zoom="1.2753906"
inkscape:cx="270.8974"
inkscape:cy="256.00001"
inkscape:window-width="2560"
inkscape:window-height="1380"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs1"><inkscape:path-effect
effect="spiro"
id="path-effect12"
is_visible="true"
lpeversion="1" /><linearGradient
id="linearGradient8"
inkscape:collect="always"><stop
style="stop-color:#fef600;stop-opacity:1;"
offset="0"
id="stop9" /><stop
style="stop-color:#ff8803;stop-opacity:1;"
offset="1"
id="stop10" /></linearGradient><inkscape:path-effect
effect="spiro"
id="path-effect1"
is_visible="true"
lpeversion="1" /><inkscape:path-effect
effect="circle_with_radius"
id="path-effect6"
is_visible="true"
lpeversion="1" /><linearGradient
id="linearGradient1"
inkscape:collect="always"><stop
style="stop-color:#fef600;stop-opacity:1;"
offset="0"
id="stop1" /><stop
style="stop-color:#ff8803;stop-opacity:1;"
offset="1"
id="stop2" /></linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1"
id="linearGradient2"
x1="142.00873"
y1="142.00873"
x2="369.99124"
y2="369.99124"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1264159,0,0,1.1264159,-32.362465,-32.362465)" /><inkscape:path-effect
effect="spiro"
id="path-effect1-7"
is_visible="true"
lpeversion="1" /><inkscape:path-effect
effect="spiro"
id="path-effect12-2"
is_visible="true"
lpeversion="1" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient8"
id="linearGradient13"
x1="222.62624"
y1="166.19441"
x2="294.93878"
y2="238.50694"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.77232939,0,0,0.77232939,58.767238,59.784916)" /></defs><g
inkscape:label="图层 1"
inkscape:groupmode="layer"
id="layer1"><rect
style="mix-blend-mode:normal;fill:url(#linearGradient2);fill-rule:evenodd;stroke:none;stroke-width:8.75079;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="rect1"
width="461.48184"
height="461.48184"
x="25.259001"
y="25.259001"
rx="20"
ry="20" /><path
style="display:inline;fill:#ffffff;fill-opacity:0.999969;stroke-width:6;stroke-linejoin:round;paint-order:fill markers stroke"
d="m 256.39204,108.98622 c 2.318,9.14731 5.47166,18.08268 9.40888,26.6585 12.86653,28.02509 34.12047,52.40001 41.5559,82.32772 3.61286,14.54182 3.68319,30.22381 -1.62595,44.23561 -2.65457,7.00589 -6.63536,13.53227 -11.82978,18.93109 -5.19442,5.39883 -11.61188,9.65255 -18.69128,12.10436 -12.47119,4.31915 -26.62823,2.79237 -38.41961,-3.1363 -7.99311,-4.01891 -15.00816,-10.00609 -20.1073,-17.3573 -5.09913,-7.35121 -8.25739,-16.05943 -8.90342,-24.98267 -0.63444,-8.76308 1.12172,-17.55976 3.90867,-25.89205 2.78695,-8.33228 6.59253,-16.27949 10.20466,-24.28865 9.26015,-20.5325 17.29654,-41.5932 25.09035,-62.72588 3.17557,-8.61046 6.3119,-17.23539 9.40888,-25.87443 z"
id="path1"
inkscape:path-effect="#path-effect1"
inkscape:original-d="m 256.39204,108.98622 c 0,0 6.27259,18.29505 9.40888,26.6585 3.1363,8.36345 27.70394,55.1465 41.5559,82.32772 13.85197,27.18121 -21.43134,50.1807 -32.14701,75.27106 -10.71568,25.09035 -25.61307,-2.61358 -38.41961,-3.1363 -12.80653,-0.52271 -19.60183,-27.70393 -29.01072,-42.33997 -9.40888,-14.63604 9.40889,-33.19244 14.11333,-50.1807 4.70444,-16.98826 16.98826,-42.33997 25.09035,-62.72588 8.10209,-20.38592 9.40888,-25.87443 9.40888,-25.87443 z"
transform="matrix(1.2947843,0,0,1.2947843,-78.054433,-75.464863)" /><path
style="fill:url(#linearGradient13);stroke-width:6;stroke-linejoin:round;paint-order:fill markers stroke"
d="m 256.39204,108.98622 c 2.318,9.14731 5.47166,18.08268 9.40888,26.6585 12.86653,28.02509 34.12047,52.40001 41.5559,82.32772 3.61286,14.54182 3.68319,30.22381 -1.62595,44.23561 -2.65457,7.00589 -6.63536,13.53227 -11.82978,18.93109 -5.19442,5.39883 -11.61188,9.65255 -18.69128,12.10436 -12.47119,4.31915 -26.62823,2.79237 -38.41961,-3.1363 -7.99311,-4.01891 -15.00816,-10.00609 -20.1073,-17.3573 -5.09913,-7.35121 -8.25739,-16.05943 -8.90342,-24.98267 -0.63444,-8.76308 1.12172,-17.55976 3.90867,-25.89205 2.78695,-8.33228 6.59253,-16.27949 10.20466,-24.28865 9.26015,-20.5325 17.29654,-41.5932 25.09035,-62.72588 3.17557,-8.61046 6.3119,-17.23539 9.40888,-25.87443 z"
id="path1-3"
inkscape:path-effect="#path-effect1-7"
inkscape:original-d="m 256.39204,108.98622 c 0,0 6.27259,18.29505 9.40888,26.6585 3.1363,8.36345 27.70394,55.1465 41.5559,82.32772 13.85197,27.18121 -21.43134,50.1807 -32.14701,75.27106 -10.71568,25.09035 -25.61307,-2.61358 -38.41961,-3.1363 -12.80653,-0.52271 -19.60183,-27.70393 -29.01072,-42.33997 -9.40888,-14.63604 9.40889,-33.19244 14.11333,-50.1807 4.70444,-16.98826 16.98826,-42.33997 25.09035,-62.72588 8.10209,-20.38592 9.40888,-25.87443 9.40888,-25.87443 z"
transform="matrix(0.80835273,0,0,0.91964574,47.345041,14.506872)" /><path
style="fill:#ffffff;fill-opacity:1;stroke-width:6;stroke-linejoin:round;paint-order:fill markers stroke"
d="m 79.975499,256.39204 c 5.425018,-11.9183 12.57961,-23.04766 21.169981,-32.93109 14.08853,-16.20919 31.8107,-28.86269 50.18071,-39.98775 17.11103,-10.36261 34.94011,-19.53934 53.317,-27.44257 -5.93477,20.02227 -10.39389,40.48176 -13.32925,61.15774 -2.18434,15.38592 -3.48986,31.3194 0.78407,46.26033 3.79604,13.2703 12.00304,25.20779 22.91567,33.65914 10.91263,8.45136 24.46093,13.40061 38.24207,14.16935 2.61087,0.14564 5.22986,0.14564 7.84073,0 4.27324,9.29986 4.55091,20.35688 0.74986,29.85952 -3.80105,9.50263 -11.62766,17.31794 -21.13577,21.10526 -3.25312,1.2958 -6.69776,2.13869 -10.19295,2.35222 -6.22311,0.38018 -12.4517,-1.24772 -18.08978,-3.90924 -5.63808,-2.66152 -10.74044,-6.32996 -15.62539,-10.20409 -16.20385,-12.85087 -30.67834,-28.65082 -38.4196,-47.82848 -7.45891,-18.4782 -8.24323,-39.19541 -4.70444,-58.80551 2.14912,-11.90928 5.8491,-23.53777 10.97703,-34.49924 -12.06684,6.45184 -24.08968,12.98599 -36.06738,19.60184 -16.28858,8.99695 -32.493692,18.145 -48.612561,27.44257 z"
id="path12-1"
inkscape:path-effect="#path-effect12-2"
inkscape:original-d="m 79.975499,256.39204 c 0,0 14.374682,-22.47677 21.169981,-32.93109 6.79531,-10.45431 33.19245,-26.13578 50.18071,-39.98775 16.98826,-13.85196 53.317,-27.44257 53.317,-27.44257 0,0 -9.14753,41.5559 -13.32925,61.15774 -4.18173,19.60183 1.04543,30.57886 0.78407,46.26033 -0.26135,15.68147 40.24911,31.6243 61.15774,47.82849 20.90862,16.20418 7.84073,0 7.84073,0 0,0 -14.11332,33.71516 -20.38591,50.96478 -6.27259,17.24961 -6.7953,1.8295 -10.19295,2.35222 -3.39766,0.52271 -22.47678,-9.9316 -33.71517,-14.11333 -11.23838,-4.18172 -25.35171,-31.36294 -38.4196,-47.82848 -13.06789,-16.46554 -3.13629,-39.20368 -4.70444,-58.80551 -1.56815,-19.60184 10.97703,-34.49924 10.97703,-34.49924 0,0 -24.04492,13.06789 -36.06738,19.60184 -12.02246,6.53394 -48.612561,27.44257 -48.612561,27.44257 z"
transform="matrix(-1.2947843,0,0,1.2947843,587.75426,-76.137043)" /><path
style="fill:#ffffff;fill-opacity:1;stroke-width:6;stroke-linejoin:round;paint-order:fill markers stroke"
d="m 79.975499,256.39204 c 5.425018,-11.9183 12.57961,-23.04766 21.169981,-32.93109 14.08853,-16.20919 31.8107,-28.86269 50.18071,-39.98775 17.11103,-10.36261 34.94011,-19.53934 53.317,-27.44257 -5.93477,20.02227 -10.39389,40.48176 -13.32925,61.15774 -2.18434,15.38592 -3.48986,31.3194 0.78407,46.26033 3.79604,13.2703 12.00304,25.20779 22.91567,33.65914 10.91263,8.45136 24.46093,13.40061 38.24207,14.16935 2.61087,0.14564 5.22986,0.14564 7.84073,0 4.27324,9.29986 4.55091,20.35688 0.74986,29.85952 -3.80105,9.50263 -11.62766,17.31794 -21.13577,21.10526 -3.25312,1.2958 -6.69776,2.13869 -10.19295,2.35222 -6.22311,0.38018 -12.4517,-1.24772 -18.08978,-3.90924 -5.63808,-2.66152 -10.74044,-6.32996 -15.62539,-10.20409 -16.20385,-12.85087 -30.67834,-28.65082 -38.4196,-47.82848 -7.45891,-18.4782 -8.24323,-39.19541 -4.70444,-58.80551 2.14912,-11.90928 5.8491,-23.53777 10.97703,-34.49924 -12.06684,6.45184 -24.08968,12.98599 -36.06738,19.60184 -16.28858,8.99695 -32.493692,18.145 -48.612561,27.44257 z"
id="path12"
inkscape:path-effect="#path-effect12"
inkscape:original-d="m 79.975499,256.39204 c 0,0 14.374682,-22.47677 21.169981,-32.93109 6.79531,-10.45431 33.19245,-26.13578 50.18071,-39.98775 16.98826,-13.85196 53.317,-27.44257 53.317,-27.44257 0,0 -9.14753,41.5559 -13.32925,61.15774 -4.18173,19.60183 1.04543,30.57886 0.78407,46.26033 -0.26135,15.68147 40.24911,31.6243 61.15774,47.82849 20.90862,16.20418 7.84073,0 7.84073,0 0,0 -14.11332,33.71516 -20.38591,50.96478 -6.27259,17.24961 -6.7953,1.8295 -10.19295,2.35222 -3.39766,0.52271 -22.47678,-9.9316 -33.71517,-14.11333 -11.23838,-4.18172 -25.35171,-31.36294 -38.4196,-47.82848 -13.06789,-16.46554 -3.13629,-39.20368 -4.70444,-58.80551 -1.56815,-19.60184 10.97703,-34.49924 10.97703,-34.49924 0,0 -24.04492,13.06789 -36.06738,19.60184 -12.02246,6.53394 -48.612561,27.44257 -48.612561,27.44257 z"
transform="matrix(1.2947843,0,0,1.2947843,-75.464865,-75.464863)" /><path
style="fill:#ffffff;fill-opacity:0.999969;stroke-width:8.48321;stroke-linejoin:round;paint-order:fill markers stroke"
d="m 221.43137,394.8085 34.06963,69.25714 32.93398,-71.42141 -34.06964,-27.05358 z"
id="path13" /></g></svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -4,7 +4,7 @@
<comment>Nintendo 3DS homebrew executable</comment> <comment>Nintendo 3DS homebrew executable</comment>
<comment xml:lang="fr">Exécutable non-officiel pour Nintendo 3DS</comment> <comment xml:lang="fr">Exécutable non-officiel pour Nintendo 3DS</comment>
<acronym>3DSX</acronym> <acronym>3DSX</acronym>
<icon name="citra"/> <icon name="lucina3ds"/>
<glob pattern="*.3dsx"/> <glob pattern="*.3dsx"/>
<magic><match value="3DSX" type="string" offset="0"/></magic> <magic><match value="3DSX" type="string" offset="0"/></magic>
</mime-type> </mime-type>
@@ -14,7 +14,7 @@
<comment xml:lang="fr">Image de cartouche Nintendo 3DS</comment> <comment xml:lang="fr">Image de cartouche Nintendo 3DS</comment>
<acronym>CCI</acronym> <acronym>CCI</acronym>
<expanded-acronym>CTR Cart Image</expanded-acronym> <expanded-acronym>CTR Cart Image</expanded-acronym>
<icon name="citra"/> <icon name="lucina3ds"/>
<glob pattern="*.cci"/> <glob pattern="*.cci"/>
<glob pattern="*.3ds"/> <glob pattern="*.3ds"/>
<magic><match value="NCSD" type="string" offset="256"/></magic> <magic><match value="NCSD" type="string" offset="256"/></magic>
@@ -25,7 +25,7 @@
<comment xml:lang="fr">Exécutable Nintendo 3DS</comment> <comment xml:lang="fr">Exécutable Nintendo 3DS</comment>
<acronym>CXI</acronym> <acronym>CXI</acronym>
<expanded-acronym>CTR eXecutable Image</expanded-acronym> <expanded-acronym>CTR eXecutable Image</expanded-acronym>
<icon name="citra"/> <icon name="lucina3ds"/>
<glob pattern="*.cxi"/> <glob pattern="*.cxi"/>
<magic><match value="NCCH" type="string" offset="256"/></magic> <magic><match value="NCCH" type="string" offset="256"/></magic>
</mime-type> </mime-type>
@@ -35,7 +35,7 @@
<comment xml:lang="fr">Archive installable Nintendo 3DS</comment> <comment xml:lang="fr">Archive installable Nintendo 3DS</comment>
<acronym>CIA</acronym> <acronym>CIA</acronym>
<expanded-acronym>CTR Importable Archive</expanded-acronym> <expanded-acronym>CTR Importable Archive</expanded-acronym>
<icon name="citra"/> <icon name="lucina3ds"/>
<glob pattern="*.cia"/> <glob pattern="*.cia"/>
</mime-type> </mime-type>

View File

@@ -13,7 +13,7 @@
<file alias="48x48/no_avatar.png">icons/48x48/no_avatar.png</file> <file alias="48x48/no_avatar.png">icons/48x48/no_avatar.png</file>
<file alias="48x48/plus.png">icons/48x48/plus.png</file> <file alias="48x48/plus.png">icons/48x48/plus.png</file>
<file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file> <file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
<file alias="256x256/citra.png">icons/256x256/citra.png</file> <file alias="256x256/lucina3ds.png">icons/256x256/lucina3ds.png</file>
<file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file> <file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file>
</qresource> </qresource>
<qresource prefix="default"> <qresource prefix="default">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -11,10 +11,10 @@ class RequestType(enum.IntEnum):
ReadMemory = 1, ReadMemory = 1,
WriteMemory = 2 WriteMemory = 2
CITRA_PORT = 45987 LUCINA3DS_PORT = 45987
class Citra: class Lucina3DS:
def __init__(self, address="127.0.0.1", port=CITRA_PORT): def __init__(self, address="127.0.0.1", port=LUCINA3DS_PORT):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.address = address self.address = address
@@ -45,7 +45,7 @@ class Citra:
request_data = struct.pack("II", read_address, temp_read_size) request_data = struct.pack("II", read_address, temp_read_size)
request, request_id = self._generate_header(RequestType.ReadMemory, len(request_data)) request, request_id = self._generate_header(RequestType.ReadMemory, len(request_data))
request += request_data request += request_data
self.socket.sendto(request, (self.address, CITRA_PORT)) self.socket.sendto(request, (self.address, LUCINA3DS_PORT))
raw_reply = self.socket.recv(MAX_PACKET_SIZE) raw_reply = self.socket.recv(MAX_PACKET_SIZE)
reply_data = self._read_and_validate_header(raw_reply, request_id, RequestType.ReadMemory) reply_data = self._read_and_validate_header(raw_reply, request_id, RequestType.ReadMemory)
@@ -77,7 +77,7 @@ class Citra:
request_data += write_contents[:temp_write_size] request_data += write_contents[:temp_write_size]
request, request_id = self._generate_header(RequestType.WriteMemory, len(request_data)) request, request_id = self._generate_header(RequestType.WriteMemory, len(request_data))
request += request_data request += request_data
self.socket.sendto(request, (self.address, CITRA_PORT)) self.socket.sendto(request, (self.address, LUCINA3DS_PORT))
raw_reply = self.socket.recv(MAX_PACKET_SIZE) raw_reply = self.socket.recv(MAX_PACKET_SIZE)
reply_data = self._read_and_validate_header(raw_reply, request_id, RequestType.WriteMemory) reply_data = self._read_and_validate_header(raw_reply, request_id, RequestType.WriteMemory)
@@ -92,4 +92,4 @@ class Citra:
if "__main__" == __name__: if "__main__" == __name__:
import doctest import doctest
doctest.testmod(extraglobs={'c': Citra()}) doctest.testmod(extraglobs={'c': LUCINA3DS()})

View File

@@ -116,7 +116,7 @@ if ("x86_64" IN_LIST ARCHITECTURE OR "arm64" IN_LIST ARCHITECTURE)
else() else()
set(DYNARMIC_TESTS OFF CACHE BOOL "") set(DYNARMIC_TESTS OFF CACHE BOOL "")
set(DYNARMIC_FRONTENDS "A32" CACHE STRING "") set(DYNARMIC_FRONTENDS "A32" CACHE STRING "")
set(DYNARMIC_USE_PRECOMPILED_HEADERS ${CITRA_USE_PRECOMPILED_HEADERS} CACHE BOOL "") set(DYNARMIC_USE_PRECOMPILED_HEADERS ${LUCINA3DS_USE_PRECOMPILED_HEADERS} CACHE BOOL "")
add_subdirectory(dynarmic EXCLUDE_FROM_ALL) add_subdirectory(dynarmic EXCLUDE_FROM_ALL)
endif() endif()
endif() endif()

0
externals/catch2/CMake/llvm-cov-wrapper vendored Normal file → Executable file
View File

0
externals/catch2/fuzzing/build_fuzzers.sh vendored Normal file → Executable file
View File

0
externals/catch2/tests/TestScripts/testBazelSharding.py vendored Normal file → Executable file
View File

0
externals/catch2/tests/TestScripts/testPartialTestCaseEvent.py vendored Normal file → Executable file
View File

0
externals/catch2/tests/TestScripts/testRandomOrder.py vendored Normal file → Executable file
View File

0
externals/catch2/tests/TestScripts/testSharding.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/approvalTests.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/approve.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/buildAndTest.sh vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/checkConvenienceHeaders.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/checkDuplicateFilenames.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/checkLicense.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/developBuild.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/fixWhitespace.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/generateAmalgamatedFiles.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/majorRelease.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/minorRelease.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/patchRelease.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/updateDocumentSnippets.py vendored Normal file → Executable file
View File

0
externals/catch2/tools/scripts/updateDocumentToC.py vendored Normal file → Executable file
View File

View File

@@ -0,0 +1,22 @@
# The set of languages for which implicit dependencies are needed:
set(CMAKE_DEPENDS_LANGUAGES
"CXX"
)
# The set of files for implicit dependencies of each language:
set(CMAKE_DEPENDS_CHECK_CXX
"/Users/amuralid/dev_test/cpp-jwt/examples/simple_ex1.cc" "/Users/amuralid/dev_test/cpp-jwt/examples/CMakeFiles/simple_ex1.dir/simple_ex1.cc.o"
)
set(CMAKE_CXX_COMPILER_ID "Clang")
# The include file search paths:
set(CMAKE_CXX_TARGET_INCLUDE_PATH
"include"
"/usr/local/Cellar/openssl/1.0.2j/include"
)
# Targets to which this target links.
set(CMAKE_TARGET_LINKED_INFO_FILES
)
# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")

View File

@@ -0,0 +1,10 @@
file(REMOVE_RECURSE
"CMakeFiles/simple_ex1.dir/simple_ex1.cc.o"
"simple_ex1.pdb"
"simple_ex1"
)
# Per-language clean rules from dependency scanning.
foreach(lang CXX)
include(CMakeFiles/simple_ex1.dir/cmake_clean_${lang}.cmake OPTIONAL)
endforeach()

View File

@@ -0,0 +1,3 @@
CMAKE_PROGRESS_1 = 1
CMAKE_PROGRESS_2 = 2

0
externals/cpp-jwt/include/jwt/test/test_base64 vendored Normal file → Executable file
View File

0
externals/cpp-jwt/include/jwt/test/test_hmac vendored Normal file → Executable file
View File

0
externals/cpp-jwt/include/jwt/test/test_jwt_decode vendored Normal file → Executable file
View File

0
externals/cpp-jwt/include/jwt/test/test_jwt_header vendored Normal file → Executable file
View File

0
externals/cpp-jwt/include/jwt/test/test_jwt_object vendored Normal file → Executable file
View File

0
externals/cpp-jwt/include/jwt/test/test_jwt_payload vendored Normal file → Executable file
View File

0
externals/cpp-jwt/include/jwt/test/test_jwt_signature vendored Normal file → Executable file
View File

0
externals/cpp-jwt/include/jwt/test/test_rsa vendored Normal file → Executable file
View File

0
externals/cpp-jwt/include/jwt/test/test_stack_alloc vendored Normal file → Executable file
View File

0
externals/cpp-jwt/include/jwt/test/test_sv vendored Normal file → Executable file
View File

View File

@@ -1,11 +0,0 @@
{
"recommendations": [
"cheshirekow.cmake-format",
"donjayamanne.githistory",
"editorconfig.editorconfig",
"ms-vscode.cmake-tools",
"redhat.vscode-yaml",
"stkb.rewrap",
"streetsidesoftware.code-spell-checker",
]
}

View File

@@ -1,18 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "cppvsdbg",
"request": "launch",
"name": "cryptest",
"program": "${workspaceFolder}/build/cryptopp/cryptest",
"args": [
"v"
],
"cwd": "${workspaceFolder}/build"
}
]
}

View File

@@ -1,37 +0,0 @@
{
"editor.rulers": [
80,
100
],
"rewrap.wrappingColumn": 80,
"rewrap.autoWrap.enabled": true,
"editor.detectIndentation": false,
"editor.formatOnPaste": false,
"editor.formatOnSave": true,
"git.autofetch": true,
"git.confirmSync": false,
"git.enableSmartCommit": true,
"editor.bracketPairColorization.enabled": true,
"workbench.colorCustomizations": {
"[Default Dark+]": {
"editorBracketHighlight.foreground3": "#9CDCFE"
}
},
"cmake.configureOnOpen": true,
"cmake.preferredGenerators": [
"Ninja"
],
"cmake.configureArgs": [
"-DCMAKE_INSTALL_PREFIX=${workspaceFolder}/build/install",
"-DCMAKE_VERBOSE_MAKEFILE=ON"
],
"rewrap.reformat": true,
"search.exclude": {
"**/.idea": true,
"**/out": true
},
"cSpell.words": [
"cmake",
"pkgconfig"
],
}

0
externals/cryptopp/TestScripts/change-version.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/configure.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/cryptdll-windows.cmd vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/cryptest-android-mk.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/cryptest-android.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/cryptest-autotools.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/cryptest-coverage.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/cryptest-ios.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/cryptest-pem.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/cryptest-symbols.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/cryptest-tidy.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/cryptest.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/governor.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/install-ndk.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/make-benchmarks.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/reset-fork.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/setenv-android.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/setenv-embedded.sh vendored Normal file → Executable file
View File

0
externals/cryptopp/TestScripts/setenv-ios.sh vendored Normal file → Executable file
View File

Some files were not shown because too many files have changed in this diff Show More