Compare commits
27 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
58c1e20ee5 | ||
|
|
695f8fd197 | ||
|
|
7efb4fc860 | ||
|
|
7e26c7e5d2 | ||
|
|
2a65389f61 | ||
|
|
67563444d0 | ||
|
|
c137bf2465 | ||
|
|
b7d0dcb8b6 | ||
|
|
a0ddf41425 | ||
|
|
9dd85234d0 | ||
|
|
420db08588 | ||
|
|
967a81b5c4 | ||
|
|
a83842816e | ||
|
|
d83a0d3bf8 | ||
|
|
1489f7f28d | ||
|
|
5976519344 | ||
|
|
dc09c8d98e | ||
|
|
c61ae6a91f | ||
|
|
8541f5a52b | ||
|
|
001faff20c | ||
|
|
db1946a6fa | ||
|
|
0d0a29e1fc | ||
|
|
5492647479 | ||
|
|
a2a569ed5f | ||
|
|
c9842ed42c | ||
|
|
b4e846f382 | ||
|
|
efdf57890f |
|
|
@ -7,7 +7,7 @@
|
||||||
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh tools/windows/vcvarsall.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder externals/cmake-modules"
|
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh tools/windows/vcvarsall.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder externals/cmake-modules"
|
||||||
|
|
||||||
# license header constants, please change when needed :))))
|
# license header constants, please change when needed :))))
|
||||||
YEAR=2026
|
YEAR=$(date "+%Y")
|
||||||
HOLDER="Eden Emulator Project"
|
HOLDER="Eden Emulator Project"
|
||||||
LICENSE="GPL-3.0-or-later"
|
LICENSE="GPL-3.0-or-later"
|
||||||
|
|
||||||
|
|
@ -112,10 +112,10 @@ for file in $FILES; do
|
||||||
[ "$excluded" = "true" ] && continue
|
[ "$excluded" = "true" ] && continue
|
||||||
|
|
||||||
case "$file" in
|
case "$file" in
|
||||||
*.cmake|*.sh|*CMakeLists.txt)
|
*.cmake|*.sh|*.ps1|*.py|*.rb|*.perl|*.pl|*.nix|*CMakeLists.txt)
|
||||||
begin="#"
|
begin="#"
|
||||||
;;
|
;;
|
||||||
*.kt*|*.cpp|*.h|*.qml)
|
*.kt|*.kts|*.cpp|*.h|*.qml|*.c|*.hpp|*.hxx|*.cxx|*.h.in|*.inc)
|
||||||
begin="//"
|
begin="//"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|
@ -185,11 +185,12 @@ if [ "$UPDATE" = "true" ]; then
|
||||||
|
|
||||||
for file in $SRC_FILES $OTHER_FILES; do
|
for file in $SRC_FILES $OTHER_FILES; do
|
||||||
case $(basename -- "$file") in
|
case $(basename -- "$file") in
|
||||||
*.cmake|*CMakeLists.txt)
|
# Windows Powershell wont use shebangs
|
||||||
|
*.cmake|*.ps1|*CMakeLists.txt)
|
||||||
begin="#"
|
begin="#"
|
||||||
shell="false"
|
shell="false"
|
||||||
;;
|
;;
|
||||||
*.sh)
|
*.sh|*.py|*.rb|*.perl|*.pl|*.nix)
|
||||||
begin="#"
|
begin="#"
|
||||||
shell=true
|
shell=true
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/bash -ex
|
|
||||||
|
|
||||||
# git-archive-all
|
|
||||||
export PATH="$PATH:/home/$USER/.local/bin"
|
|
||||||
|
|
||||||
GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`"
|
|
||||||
GITREV="`git show -s --format='%h'`"
|
|
||||||
REV_NAME="eden-unified-source-${GITDATE}-${GITREV}"
|
|
||||||
|
|
||||||
COMPAT_LIST='dist/compatibility_list/compatibility_list.json'
|
|
||||||
|
|
||||||
mkdir artifacts
|
|
||||||
|
|
||||||
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 ..
|
|
||||||
207
dist/dev.eden_emu.eden.svg
vendored
|
|
@ -6,8 +6,8 @@
|
||||||
viewBox="0 0 512 512"
|
viewBox="0 0 512 512"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg7"
|
id="svg7"
|
||||||
sodipodi:docname="1stanni.svg"
|
sodipodi:docname="base.svg.2026_01_12_14_43_47.0.svg"
|
||||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
inkscape:version="1.4.2 (ebf0e94, 2025-05-08)"
|
||||||
inkscape:export-filename="base.svg.2026_01_12_14_43_47.0.svg"
|
inkscape:export-filename="base.svg.2026_01_12_14_43_47.0.svg"
|
||||||
inkscape:export-xdpi="96"
|
inkscape:export-xdpi="96"
|
||||||
inkscape:export-ydpi="96"
|
inkscape:export-ydpi="96"
|
||||||
|
|
@ -19,34 +19,36 @@
|
||||||
<defs
|
<defs
|
||||||
id="defs7">
|
id="defs7">
|
||||||
<linearGradient
|
<linearGradient
|
||||||
id="linearGradient34"
|
id="linearGradient1"
|
||||||
inkscape:collect="always">
|
inkscape:collect="always">
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#ffd700;stop-opacity:1;"
|
style="stop-color:#ff2e88;stop-opacity:0.5;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop34" />
|
id="stop3" />
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#ffd700;stop-opacity:0.48031053;"
|
style="stop-color:#bf42f6;stop-opacity:0.5;"
|
||||||
offset="1"
|
offset="0.44631511"
|
||||||
id="stop35" />
|
id="stop4" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#5da5ed;stop-opacity:0.5;"
|
||||||
|
offset="0.90088946"
|
||||||
|
id="stop2" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<rect
|
|
||||||
x="20.999999"
|
|
||||||
y="287.30493"
|
|
||||||
width="487.07235"
|
|
||||||
height="134.69506"
|
|
||||||
id="rect22" />
|
|
||||||
<linearGradient
|
<linearGradient
|
||||||
id="linearGradient21"
|
id="linearGradient138"
|
||||||
inkscape:collect="always">
|
inkscape:collect="always">
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#3a0057;stop-opacity:1;"
|
style="stop-color:#ff2e88;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop21" />
|
id="stop152" />
|
||||||
<stop
|
<stop
|
||||||
style="stop-color:#830091;stop-opacity:1;"
|
style="stop-color:#bf42f6;stop-opacity:1;"
|
||||||
offset="1"
|
offset="0.44971901"
|
||||||
id="stop22" />
|
id="stop137" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#5da5ed;stop-opacity:1;"
|
||||||
|
offset="0.89793283"
|
||||||
|
id="stop138" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient
|
<linearGradient
|
||||||
id="swatch37"
|
id="swatch37"
|
||||||
|
|
@ -114,6 +116,33 @@
|
||||||
width="521.34025"
|
width="521.34025"
|
||||||
height="248.94868"
|
height="248.94868"
|
||||||
id="rect24" />
|
id="rect24" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient11"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2e88;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop11" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#bf42f6;stop-opacity:1;"
|
||||||
|
offset="0.44971901"
|
||||||
|
id="stop154" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#5da5ed;stop-opacity:1;"
|
||||||
|
offset="0.89793283"
|
||||||
|
id="stop12" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient138"
|
||||||
|
id="linearGradient6"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.118028,0,0,1.116699,-46.314723,-42.388667)"
|
||||||
|
x1="270.39996"
|
||||||
|
y1="40.000019"
|
||||||
|
x2="270.39996"
|
||||||
|
y2="494.39996"
|
||||||
|
spreadMethod="pad" />
|
||||||
<clipPath
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"
|
clipPathUnits="userSpaceOnUse"
|
||||||
id="clipPath18">
|
id="clipPath18">
|
||||||
|
|
@ -136,6 +165,16 @@
|
||||||
inkscape:label="Circle"
|
inkscape:label="Circle"
|
||||||
r="191.89999" />
|
r="191.89999" />
|
||||||
</clipPath>
|
</clipPath>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient11"
|
||||||
|
id="linearGradient27"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(-6.9401139e-5,-2.8678628)"
|
||||||
|
x1="256.00012"
|
||||||
|
y1="102.94693"
|
||||||
|
x2="256.00012"
|
||||||
|
y2="409.05307" />
|
||||||
<clipPath
|
<clipPath
|
||||||
clipPathUnits="userSpaceOnUse"
|
clipPathUnits="userSpaceOnUse"
|
||||||
id="clipPath128">
|
id="clipPath128">
|
||||||
|
|
@ -148,106 +187,14 @@
|
||||||
</clipPath>
|
</clipPath>
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient21"
|
xlink:href="#linearGradient1"
|
||||||
id="linearGradient22"
|
id="linearGradient2"
|
||||||
x1="256"
|
x1="256"
|
||||||
y1="0"
|
y1="64"
|
||||||
x2="256"
|
x2="256"
|
||||||
y2="512"
|
y2="448"
|
||||||
gradientUnits="userSpaceOnUse" />
|
gradientUnits="userSpaceOnUse"
|
||||||
<linearGradient
|
gradientTransform="matrix(1.3229974,0,0,1.3214002,-82.687336,-82.290326)" />
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient34"
|
|
||||||
id="linearGradient35"
|
|
||||||
x1="256"
|
|
||||||
y1="-0.048701428"
|
|
||||||
x2="256"
|
|
||||||
y2="512.04932"
|
|
||||||
gradientUnits="userSpaceOnUse" />
|
|
||||||
<filter
|
|
||||||
inkscape:label="Glowing Bubble"
|
|
||||||
inkscape:menu="Ridges"
|
|
||||||
inkscape:menu-tooltip="Bubble effect with refraction and glow"
|
|
||||||
x="-0.19420711"
|
|
||||||
y="-0.11239541"
|
|
||||||
width="1.3884142"
|
|
||||||
height="1.2247908"
|
|
||||||
style="color-interpolation-filters:sRGB;"
|
|
||||||
id="filter61">
|
|
||||||
<feGaussianBlur
|
|
||||||
stdDeviation="1"
|
|
||||||
result="result1"
|
|
||||||
id="feGaussianBlur56" />
|
|
||||||
<feGaussianBlur
|
|
||||||
stdDeviation="10"
|
|
||||||
result="result6"
|
|
||||||
in="result1"
|
|
||||||
id="feGaussianBlur57" />
|
|
||||||
<feComposite
|
|
||||||
operator="atop"
|
|
||||||
in="result6"
|
|
||||||
in2="result1"
|
|
||||||
result="result8"
|
|
||||||
id="feComposite57" />
|
|
||||||
<feComposite
|
|
||||||
operator="xor"
|
|
||||||
result="fbSourceGraphic"
|
|
||||||
in="result6"
|
|
||||||
in2="result8"
|
|
||||||
id="feComposite58" />
|
|
||||||
<feColorMatrix
|
|
||||||
result="fbSourceGraphicAlpha"
|
|
||||||
in="fbSourceGraphic"
|
|
||||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 2 0 "
|
|
||||||
id="feColorMatrix58" />
|
|
||||||
<feGaussianBlur
|
|
||||||
result="result0"
|
|
||||||
in="fbSourceGraphicAlpha"
|
|
||||||
stdDeviation="1"
|
|
||||||
id="feGaussianBlur58" />
|
|
||||||
<feSpecularLighting
|
|
||||||
specularExponent="35"
|
|
||||||
specularConstant="1.5"
|
|
||||||
surfaceScale="-2"
|
|
||||||
lighting-color="rgb(255,255,255)"
|
|
||||||
result="result1"
|
|
||||||
in="result0"
|
|
||||||
id="feSpecularLighting58">
|
|
||||||
<feDistantLight
|
|
||||||
azimuth="230"
|
|
||||||
elevation="60"
|
|
||||||
id="feDistantLight58" />
|
|
||||||
</feSpecularLighting>
|
|
||||||
<feComposite
|
|
||||||
operator="in"
|
|
||||||
result="result2"
|
|
||||||
in="result1"
|
|
||||||
in2="fbSourceGraphicAlpha"
|
|
||||||
id="feComposite59" />
|
|
||||||
<feComposite
|
|
||||||
k3="1.2"
|
|
||||||
k2="1.1"
|
|
||||||
operator="arithmetic"
|
|
||||||
result="result4"
|
|
||||||
in="fbSourceGraphic"
|
|
||||||
in2="result2"
|
|
||||||
id="feComposite60" />
|
|
||||||
<feGaussianBlur
|
|
||||||
result="result80"
|
|
||||||
in="result4"
|
|
||||||
stdDeviation="0.5"
|
|
||||||
id="feGaussianBlur60" />
|
|
||||||
<feComposite
|
|
||||||
operator="atop"
|
|
||||||
in="result9"
|
|
||||||
in2="result80"
|
|
||||||
result="result91"
|
|
||||||
id="feComposite61" />
|
|
||||||
<feBlend
|
|
||||||
mode="multiply"
|
|
||||||
in2="result91"
|
|
||||||
id="feBlend61" />
|
|
||||||
</filter>
|
|
||||||
</defs>
|
</defs>
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
id="namedview7"
|
id="namedview7"
|
||||||
|
|
@ -258,29 +205,23 @@
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pagecheckerboard="0"
|
inkscape:pagecheckerboard="0"
|
||||||
inkscape:deskcolor="#d1d1d1"
|
inkscape:deskcolor="#d1d1d1"
|
||||||
inkscape:zoom="1"
|
inkscape:zoom="1.4142136"
|
||||||
inkscape:cx="213.49999"
|
inkscape:cx="261.62951"
|
||||||
inkscape:cy="248.99999"
|
inkscape:cy="230.87036"
|
||||||
inkscape:window-width="1600"
|
inkscape:window-width="1920"
|
||||||
inkscape:window-height="849"
|
inkscape:window-height="1008"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="1080"
|
||||||
inkscape:window-y="27"
|
inkscape:window-y="351"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:current-layer="svg7" />
|
inkscape:current-layer="svg7" />
|
||||||
<circle
|
|
||||||
style="fill:url(#linearGradient22);fill-opacity:1;stroke:none;stroke-width:8"
|
|
||||||
id="path21"
|
|
||||||
cx="256"
|
|
||||||
cy="256"
|
|
||||||
r="256" />
|
|
||||||
<path
|
<path
|
||||||
id="path8-7"
|
id="path8-7"
|
||||||
style="display:inline;mix-blend-mode:normal;fill:url(#linearGradient35);fill-opacity:1;fill-rule:nonzero;stroke:#320081;stroke-width:4.067;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
style="display:inline;mix-blend-mode:multiply;fill:url(#linearGradient6);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2);stroke-width:3.9666;stroke-dasharray:none;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
||||||
inkscape:label="Circle"
|
inkscape:label="Circle"
|
||||||
d="M 256,2.2792898 A 254.0155,253.71401 0 0 0 150.68475,25.115202 c 19.54414,1.070775 38.74692,5.250294 51.56848,11.647658 14.14361,7.056691 28.63804,19.185961 39.4212,29.347551 h 40.60981 c 1.03847,-0.68139 2.10297,-1.36938 3.1938,-2.05957 5.45602,-15.78533 14.79164,-43.183497 19.49612,-57.0097682 A 254.0155,253.71401 0 0 0 256,2.2792898 Z m 61.57106,7.567234 -18.26098,46.1544672 c 7.79702,-4.13918 16.35655,-7.87447 25.20671,-10.87081 23.1229,-7.828433 43.96931,-10.170904 54.94058,-10.868226 A 254.0155,253.71401 0 0 0 317.57106,9.8465238 Z m 65.39277,26.4001532 c -9.68256,4.806644 -33.05532,16.642034 -55.68217,29.863734 H 424.4677 A 254.0155,253.71401 0 0 0 382.96383,36.246677 Z M 113.90698,45.690231 A 254.0155,253.71401 0 0 0 87.532302,66.110411 H 194.2739 c -1.47402,-0.80231 -2.35141,-1.25949 -2.35141,-1.25949 l 10.4496,-11.83348 -38.40568,7.01234 c 0,1e-5 -12.21537,-4.60266 -40.17313,-12.27223 -3.45336,-0.94731 -6.75329,-1.61824 -9.8863,-2.06732 z m -36.803618,30.18635 a 254.0155,253.71401 0 0 0 -34.88372,43.090929 h 59.976738 c 18.11461,-12.04145 40.14252,-22.882149 62.31266,-24.534159 52.93006,-3.9444 70.16538,1.86342 70.16538,1.86342 0,0 -4.612,-4.8206 -14.51938,-13.36656 -2.72366,-2.34942 -6.0844,-4.77373 -9.52455,-7.05363 z m 174.472868,0 c 4.57322,4.7186 7.29716,7.83565 7.29716,7.83565 0,0 3.53501,-3.18484 9.62532,-7.83565 z m 60.27649,0 c -21.56573,15.45339 -25.4703,27.979669 -25.4703,27.979669 0,0 54.83326,-19.215729 100.70543,-0.31228 11.63986,4.79661 21.58481,10.13159 29.94832,15.42354 h 52.74419 A 254.0155,253.71401 0 0 0 434.89664,75.876581 Z M 36.250648,128.73367 A 254.0155,253.71401 0 0 0 16.372095,171.82459 H 147.45478 c 1.45695,-2.5815 3.06539,-5.08648 4.83979,-7.48982 14.23694,-19.28301 27.92088,-30.0088 36.86047,-35.6011 h -30.25323 c -5.87346,0.93472 -12.04945,1.99094 -18.28166,3.16937 -30.12936,5.69727 -81.157618,22.78945 -81.157618,22.78945 0,0 11.47125,-12.39249 29.11369,-25.95882 z m 265.630492,0 c 33.48676,11.2434 52.42799,26.78443 62.7752,43.09092 h 130.97157 a 254.0155,253.71401 0 0 0 -19.87856,-43.09092 h -44.81136 c 14.85233,11.5863 21.59948,20.9854 21.59948,20.9854 0,0 -33.5226,-12.37087 -66.0646,-20.9854 z m -45.96641,16.27007 c -1.00419,0.0106 -10.12705,0.72026 -44.98966,20.64729 -3.12132,1.78406 -6.25434,3.86182 -9.37468,6.17356 h 41.81911 c 7.17181,-17.34774 12.64083,-26.82085 12.64083,-26.82085 0,0 -0.0287,-7.1e-4 -0.0957,0 z m 14.18088,0.0465 c 0,0 -3.31228,9.32762 -7.30492,26.77438 h 51.78554 C 287.6577,146.14158 270.09561,145.0502 270.09561,145.0502 Z M 13.152456,181.59075 A 254.0155,253.71401 0 0 0 3.927651,224.68167 H 134.1447 c 0.56161,-12.72411 2.67825,-28.50188 8.61499,-43.09092 z m 176.661504,0 c -14.27121,13.10564 -27.60733,29.58761 -37.56073,43.09092 h 73.3721 c 4.47018,-16.79061 9.35068,-31.26371 13.86562,-43.09092 z m 70.85787,0 c -2.41384,11.76417 -4.9032,26.20707 -6.94831,43.09092 H 360.4832 c -8.32133,-10.88917 -20.66988,-26.17008 -36.35141,-43.09092 z m 109.17313,0 c 6.63611,15.24089 6.92441,30.5373 5.57882,43.09092 h 132.64857 a 254.0155,253.71401 0 0 0 -9.22481,-43.09092 z M 2.90181,234.44783 A 254.0155,253.71401 0 0 0 1.984498,255.9933 254.0155,253.71401 0 0 0 2.90181,277.53876 h 211.89923 c 2.25762,-15.52555 5.14325,-29.93448 8.3385,-43.09093 h -77.8863 c -6.46396,9.27617 -10.33076,15.56549 -10.33076,15.56549 0,0 -0.82623,-6.14945 -0.9354,-15.56549 z m 249.72093,0 c -1.3692,13.09684 -2.4456,27.49209 -3.02068,43.09093 h 259.49613 a 254.0155,253.71401 0 0 0 0.91731,-21.54546 254.0155,253.71401 0 0 0 -0.91731,-21.54547 H 374.02584 c -0.445,2.5469 -0.90878,4.89768 -1.32817,7.01751 0,0 -1.69726,-2.53821 -4.94056,-7.01751 z M 3.927651,287.30493 a 254.0155,253.71401 0 0 0 9.224805,43.09091 H 214.04393 c -1.29238,-15.40742 -1.57503,-30.04388 -0.41861,-43.09091 z m 245.385009,0 c -0.30355,13.54349 -0.22032,27.92598 0.36951,43.09091 h 249.16537 a 254.0155,253.71401 0 0 0 9.22481,-43.09091 z M 16.369511,340.16201 a 254.0155,253.71401 0 0 0 19.878554,43.09091 H 221.4677 c -2.69781,-14.4523 -4.96108,-29.01285 -6.4832,-43.09091 z m 233.842379,0 c 1.15864,15.47765 3.81286,29.83979 7.51679,43.09091 h 218.02325 a 254.0155,253.71401 0 0 0 19.87856,-43.09091 z M 42.217052,393.01909 a 254.0155,253.71401 0 0 0 34.88372,43.09093 H 233.09561 c -3.40902,-13.67281 -6.76794,-28.2531 -9.73902,-43.09093 z m 218.490958,0 c 5.34985,16.15926 12.22007,30.51982 19.68733,43.09093 h 154.50389 a 254.0155,253.71401 0 0 0 34.88371,-43.09093 z M 87.529722,445.87618 a 254.0155,253.71401 0 0 0 166.229968,63.8208 c -3.67805,-12.0825 -10.85464,-35.49828 -18.18088,-63.8208 z m 199.010328,0 c 17.5887,26.43772 36.99259,43.60598 47.33592,51.61309 a 254.0155,253.71401 0 0 0 90.59431,-51.61309 z" />
|
d="M 256,2.2792898 A 254.0155,253.71401 0 0 0 150.68475,25.115202 c 19.54414,1.070775 38.74692,5.250294 51.56848,11.647658 14.14361,7.056691 28.63804,19.185961 39.4212,29.347551 h 40.60981 c 1.03847,-0.68139 2.10297,-1.36938 3.1938,-2.05957 5.45602,-15.78533 14.79164,-43.183497 19.49612,-57.0097682 A 254.0155,253.71401 0 0 0 256,2.2792898 Z m 61.57106,7.567234 -18.26098,46.1544672 c 7.79702,-4.13918 16.35655,-7.87447 25.20671,-10.87081 23.1229,-7.828433 43.96931,-10.170904 54.94058,-10.868226 A 254.0155,253.71401 0 0 0 317.57106,9.8465238 Z m 65.39277,26.4001532 c -9.68256,4.806644 -33.05532,16.642034 -55.68217,29.863734 H 424.4677 A 254.0155,253.71401 0 0 0 382.96383,36.246677 Z M 113.90698,45.690231 A 254.0155,253.71401 0 0 0 87.532302,66.110411 H 194.2739 c -1.47402,-0.80231 -2.35141,-1.25949 -2.35141,-1.25949 l 10.4496,-11.83348 -38.40568,7.01234 c 0,1e-5 -12.21537,-4.60266 -40.17313,-12.27223 -3.45336,-0.94731 -6.75329,-1.61824 -9.8863,-2.06732 z m -36.803618,30.18635 a 254.0155,253.71401 0 0 0 -34.88372,43.090929 h 59.976738 c 18.11461,-12.04145 40.14252,-22.882149 62.31266,-24.534159 52.93006,-3.9444 70.16538,1.86342 70.16538,1.86342 0,0 -4.612,-4.8206 -14.51938,-13.36656 -2.72366,-2.34942 -6.0844,-4.77373 -9.52455,-7.05363 z m 174.472868,0 c 4.57322,4.7186 7.29716,7.83565 7.29716,7.83565 0,0 3.53501,-3.18484 9.62532,-7.83565 z m 60.27649,0 c -21.56573,15.45339 -25.4703,27.979669 -25.4703,27.979669 0,0 54.83326,-19.215729 100.70543,-0.31228 11.63986,4.79661 21.58481,10.13159 29.94832,15.42354 h 52.74419 A 254.0155,253.71401 0 0 0 434.89664,75.876581 Z M 36.250648,128.73367 A 254.0155,253.71401 0 0 0 16.372095,171.82459 H 147.45478 c 1.45695,-2.5815 3.06539,-5.08648 4.83979,-7.48982 14.23694,-19.28301 27.92088,-30.0088 36.86047,-35.6011 h -30.25323 c -5.87346,0.93472 -12.04945,1.99094 -18.28166,3.16937 -30.12936,5.69727 -81.157618,22.78945 -81.157618,22.78945 0,0 11.47125,-12.39249 29.11369,-25.95882 z m 265.630492,0 c 33.48676,11.2434 52.42799,26.78443 62.7752,43.09092 h 130.97157 a 254.0155,253.71401 0 0 0 -19.87856,-43.09092 h -44.81136 c 14.85233,11.5863 21.59948,20.9854 21.59948,20.9854 0,0 -33.5226,-12.37087 -66.0646,-20.9854 z m -45.96641,16.27007 c -1.00419,0.0106 -10.12705,0.72026 -44.98966,20.64729 -3.12132,1.78406 -6.25434,3.86182 -9.37468,6.17356 h 41.81911 c 7.17181,-17.34774 12.64083,-26.82085 12.64083,-26.82085 0,0 -0.0287,-7.1e-4 -0.0957,0 z m 14.18088,0.0465 c 0,0 -3.31228,9.32762 -7.30492,26.77438 h 51.78554 C 287.6577,146.14158 270.09561,145.0502 270.09561,145.0502 Z M 13.152456,181.59075 A 254.0155,253.71401 0 0 0 3.927651,224.68167 H 134.1447 c 0.56161,-12.72411 2.67825,-28.50188 8.61499,-43.09092 z m 176.661504,0 c -14.27121,13.10564 -27.60733,29.58761 -37.56073,43.09092 h 73.3721 c 4.47018,-16.79061 9.35068,-31.26371 13.86562,-43.09092 z m 70.85787,0 c -2.41384,11.76417 -4.9032,26.20707 -6.94831,43.09092 H 360.4832 c -8.32133,-10.88917 -20.66988,-26.17008 -36.35141,-43.09092 z m 109.17313,0 c 6.63611,15.24089 6.92441,30.5373 5.57882,43.09092 h 132.64857 a 254.0155,253.71401 0 0 0 -9.22481,-43.09092 z M 2.90181,234.44783 A 254.0155,253.71401 0 0 0 1.984498,255.9933 254.0155,253.71401 0 0 0 2.90181,277.53876 h 211.89923 c 2.25762,-15.52555 5.14325,-29.93448 8.3385,-43.09093 h -77.8863 c -6.46396,9.27617 -10.33076,15.56549 -10.33076,15.56549 0,0 -0.82623,-6.14945 -0.9354,-15.56549 z m 249.72093,0 c -1.3692,13.09684 -2.4456,27.49209 -3.02068,43.09093 h 259.49613 a 254.0155,253.71401 0 0 0 0.91731,-21.54546 254.0155,253.71401 0 0 0 -0.91731,-21.54547 H 374.02584 c -0.445,2.5469 -0.90878,4.89768 -1.32817,7.01751 0,0 -1.69726,-2.53821 -4.94056,-7.01751 z M 3.927651,287.30493 a 254.0155,253.71401 0 0 0 9.224805,43.09091 H 214.04393 c -1.29238,-15.40742 -1.57503,-30.04388 -0.41861,-43.09091 z m 245.385009,0 c -0.30355,13.54349 -0.22032,27.92598 0.36951,43.09091 h 249.16537 a 254.0155,253.71401 0 0 0 9.22481,-43.09091 z M 16.369511,340.16201 a 254.0155,253.71401 0 0 0 19.878554,43.09091 H 221.4677 c -2.69781,-14.4523 -4.96108,-29.01285 -6.4832,-43.09091 z m 233.842379,0 c 1.15864,15.47765 3.81286,29.83979 7.51679,43.09091 h 218.02325 a 254.0155,253.71401 0 0 0 19.87856,-43.09091 z M 42.217052,393.01909 a 254.0155,253.71401 0 0 0 34.88372,43.09093 H 233.09561 c -3.40902,-13.67281 -6.76794,-28.2531 -9.73902,-43.09093 z m 218.490958,0 c 5.34985,16.15926 12.22007,30.51982 19.68733,43.09093 h 154.50389 a 254.0155,253.71401 0 0 0 34.88371,-43.09093 z M 87.529722,445.87618 a 254.0155,253.71401 0 0 0 166.229968,63.8208 c -3.67805,-12.0825 -10.85464,-35.49828 -18.18088,-63.8208 z m 199.010328,0 c 17.5887,26.43772 36.99259,43.60598 47.33592,51.61309 a 254.0155,253.71401 0 0 0 90.59431,-51.61309 z" />
|
||||||
<path
|
<path
|
||||||
id="path27"
|
id="path27"
|
||||||
style="display:inline;mix-blend-mode:multiply;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
style="display:inline;mix-blend-mode:multiply;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient27);stroke-width:3;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
d="m 318.98012,441.7375 c -9.87518,-6.73978 -64.39137,-49.0272 -67.68975,-127.81978 -3.69298,-88.21893 15.36468,-141.91029 15.36468,-141.91029 0,0 16.00378,0.99513 39.80316,26.53195 23.79939,25.53753 37.74965,46.43102 37.74965,46.43102 3.91262,-19.79992 12.84563,-66.32402 -60.72865,-87.55523 0,0 12.82326,-5.38883 39.3925,-3.81382 26.56907,1.57572 81.6822,21.93799 81.6822,21.93799 0,0 -14.79766,-20.63773 -49.47063,-34.94295 -34.67291,-14.30533 -76.1182,0.23644 -76.1182,0.23644 0,0 3.86959,-12.43127 27.22669,-26.38478 23.35718,-13.9537 49.27409,-26.501533 49.27409,-26.501533 0,0 -21.97854,-0.26548 -47.67725,8.44535 -6.68948,2.267506 -13.15863,5.094213 -19.05208,8.226563 l 16.05803,-40.634103 -4.4617,-1.89059 -5.1305,-0.95965 c 0,0 -11.24072,33.12428 -16.92051,49.576513 -12.13137,7.68489 -20.11005,14.87735 -20.11005,14.87735 0,0 -21.90573,-25.09227 -42.79668,-35.527803 -26.03412,-13.00525 -86.88249,-13.90359 -94.0044,10.401173 0,0 13.56804,-7.884703 34.70032,-2.080917 21.13214,5.803997 30.3644,9.287307 30.3644,9.287307 l 29.02989,-5.30681 -7.89811,8.95527 c 0,0 13.8496,7.21324 21.33822,13.68063 7.48859,6.46722 10.9757,10.11472 10.9757,10.11472 0,0 -13.02739,-4.39388 -53.03507,-1.40893 -40.00771,2.98473 -79.40016,45.60209 -79.40016,45.60209 0,0 38.57037,-12.93531 61.34393,-17.24677 22.77354,-4.31126 44.52166,-6.46757 44.52166,-6.46757 0,0 -17.23298,5.97003 -35.69792,31.00932 -18.46522,25.03987 -13.13146,64.83866 -13.13146,64.83866 0,0 29.33874,-47.7577 57.44675,-63.84249 28.10798,-16.08527 34.0799,-15.6238 34.0799,-15.6238 0,0 -22.56785,39.13486 -31.39017,101.98268 -8.03005,57.2039 26.77689,163.75449 31.1572,178.89699"
|
d="m 318.98012,441.7375 c -9.87518,-6.73978 -64.39137,-49.0272 -67.68975,-127.81978 -3.69298,-88.21893 15.36468,-141.91029 15.36468,-141.91029 0,0 16.00378,0.99513 39.80316,26.53195 23.79939,25.53753 37.74965,46.43102 37.74965,46.43102 3.91262,-19.79992 12.84563,-66.32402 -60.72865,-87.55523 0,0 12.82326,-5.38883 39.3925,-3.81382 26.56907,1.57572 81.6822,21.93799 81.6822,21.93799 0,0 -14.79766,-20.63773 -49.47063,-34.94295 -34.67291,-14.30533 -76.1182,0.23644 -76.1182,0.23644 0,0 3.86959,-12.43127 27.22669,-26.38478 23.35718,-13.9537 49.27409,-26.501533 49.27409,-26.501533 0,0 -21.97854,-0.26548 -47.67725,8.44535 -6.68948,2.267506 -13.15863,5.094213 -19.05208,8.226563 l 16.05803,-40.634103 -4.4617,-1.89059 -5.1305,-0.95965 c 0,0 -11.24072,33.12428 -16.92051,49.576513 -12.13137,7.68489 -20.11005,14.87735 -20.11005,14.87735 0,0 -21.90573,-25.09227 -42.79668,-35.527803 -26.03412,-13.00525 -86.88249,-13.90359 -94.0044,10.401173 0,0 13.56804,-7.884703 34.70032,-2.080917 21.13214,5.803997 30.3644,9.287307 30.3644,9.287307 l 29.02989,-5.30681 -7.89811,8.95527 c 0,0 13.8496,7.21324 21.33822,13.68063 7.48859,6.46722 10.9757,10.11472 10.9757,10.11472 0,0 -13.02739,-4.39388 -53.03507,-1.40893 -40.00771,2.98473 -79.40016,45.60209 -79.40016,45.60209 0,0 38.57037,-12.93531 61.34393,-17.24677 22.77354,-4.31126 44.52166,-6.46757 44.52166,-6.46757 0,0 -17.23298,5.97003 -35.69792,31.00932 -18.46522,25.03987 -13.13146,64.83866 -13.13146,64.83866 0,0 29.33874,-47.7577 57.44675,-63.84249 28.10798,-16.08527 34.0799,-15.6238 34.0799,-15.6238 0,0 -22.56785,39.13486 -31.39017,101.98268 -8.03005,57.2039 26.77689,163.75449 31.1572,178.89699"
|
||||||
sodipodi:nodetypes="cscsccscscscsccccccscscccscscscscscsc"
|
sodipodi:nodetypes="cscsccscscscsccccccscscccscscscscscsc"
|
||||||
inkscape:label="MainOutline"
|
inkscape:label="MainOutline"
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 13 KiB |
BIN
dist/eden.bmp
vendored
|
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 256 KiB |
BIN
dist/eden.ico
vendored
|
Before Width: | Height: | Size: 556 KiB After Width: | Height: | Size: 335 KiB |
1249
dist/languages/ar.ts
vendored
1248
dist/languages/ca.ts
vendored
1248
dist/languages/cs.ts
vendored
1256
dist/languages/da.ts
vendored
1248
dist/languages/de.ts
vendored
1248
dist/languages/el.ts
vendored
1261
dist/languages/es.ts
vendored
1280
dist/languages/fi.ts
vendored
1246
dist/languages/fr.ts
vendored
1248
dist/languages/hu.ts
vendored
1248
dist/languages/id.ts
vendored
1246
dist/languages/it.ts
vendored
1248
dist/languages/ja_JP.ts
vendored
3152
dist/languages/ko_KR.ts
vendored
1248
dist/languages/nb.ts
vendored
1248
dist/languages/nl.ts
vendored
1248
dist/languages/pl.ts
vendored
1373
dist/languages/pt_BR.ts
vendored
1248
dist/languages/pt_PT.ts
vendored
1250
dist/languages/ru_RU.ts
vendored
1248
dist/languages/sv.ts
vendored
1250
dist/languages/tr_TR.ts
vendored
1249
dist/languages/uk.ts
vendored
1248
dist/languages/vi.ts
vendored
1248
dist/languages/vi_VN.ts
vendored
1248
dist/languages/zh_CN.ts
vendored
1250
dist/languages/zh_TW.ts
vendored
BIN
dist/qt_themes/default/icons/256x256/eden.png
vendored
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 35 KiB |
|
|
@ -46,7 +46,7 @@ Qt Widgets appears to be broken. For now, add `-DENABLE_QT=OFF` to your configur
|
||||||
This is needed for some dependencies that call cc directly (tz):
|
This is needed for some dependencies that call cc directly (tz):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
echo '#!/bin/sh' >cc
|
echo '#!/bin/sh -e' >cc
|
||||||
echo 'gcc $@' >>cc
|
echo 'gcc $@' >>cc
|
||||||
chmod +x cc
|
chmod +x cc
|
||||||
export PATH="$PATH:$PWD"
|
export PATH="$PATH:$PWD"
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ EmuDeck will automatically create an *Emulators - Emulators* parser for ***Steam
|
||||||
4. Paste the following code into the contents of the file, save and close the file.
|
4. Paste the following code into the contents of the file, save and close the file.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
#!/bin/sh -e
|
||||||
emuName="eden" #parameterize me
|
emuName="eden" #parameterize me
|
||||||
|
|
||||||
. "$HOME/.config/EmuDeck/backend/functions/all.sh"
|
. "$HOME/.config/EmuDeck/backend/functions/all.sh"
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ The main origin repository is always at https://git.eden-emu.dev/eden-emu/eden.
|
||||||
|
|
||||||
- https://github.com/eden-emulator/mirror
|
- https://github.com/eden-emulator/mirror
|
||||||
- https://git.crueter.xyz/mirror/eden
|
- https://git.crueter.xyz/mirror/eden
|
||||||
|
- https://codeberg.org/eden-emu/eden
|
||||||
- https://collective.taymaerz.de/eden/eden
|
- https://collective.taymaerz.de/eden/eden
|
||||||
|
|
||||||
Other mirrors obviously exist on the internet, but we can't guarantee their reliability and/or availability.
|
Other mirrors obviously exist on the internet, but we can't guarantee their reliability and/or availability.
|
||||||
|
|
|
||||||
1
externals/cpmfile.json
vendored
|
|
@ -30,7 +30,6 @@
|
||||||
"tag": "v%VERSION%",
|
"tag": "v%VERSION%",
|
||||||
"hash": "5efa8140aadffe105dcf39935b732476e95755f6c7473ada3d0b64df2bc02c557633ae3948a25b45e1cf67e89a3ff6329fb30362e4ac033b9a1d1e453aa2eded",
|
"hash": "5efa8140aadffe105dcf39935b732476e95755f6c7473ada3d0b64df2bc02c557633ae3948a25b45e1cf67e89a3ff6329fb30362e4ac033b9a1d1e453aa2eded",
|
||||||
"git_version": "0.37.0",
|
"git_version": "0.37.0",
|
||||||
"version": "0.18.7",
|
|
||||||
"find_args": "MODULE GLOBAL",
|
"find_args": "MODULE GLOBAL",
|
||||||
"patches": [
|
"patches": [
|
||||||
"0001-mingw.patch",
|
"0001-mingw.patch",
|
||||||
|
|
|
||||||
3
externals/nx_tzdb/tzdb_template.h.in
vendored
|
|
@ -1,3 +1,6 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
# SPDX-FileCopyrightText: 2015 Citra Emulator Project
|
# SPDX-FileCopyrightText: 2015 Citra Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
|
@ -10,20 +12,19 @@ paths_to_check="src/ CMakeLists.txt"
|
||||||
|
|
||||||
# If there are whitespace errors, print the offending file names and fail.
|
# If there are whitespace errors, print the offending file names and fail.
|
||||||
if ! git diff --cached --check -- $paths_to_check ; then
|
if ! git diff --cached --check -- $paths_to_check ; then
|
||||||
cat<<END
|
cat<<EOF
|
||||||
|
|
||||||
Error: This commit would contain trailing spaces or tabs, which is against this repo's policy.
|
Error: This commit would contain trailing spaces or tabs, which is against this repo's policy.
|
||||||
Please correct those issues before committing. (Use 'git diff --check' for more details)
|
Please correct those issues before committing. (Use 'git diff --check' for more details)
|
||||||
If you know what you are doing, you can try 'git commit --no-verify' to bypass the check
|
If you know what you are doing, you can try 'git commit --no-verify' to bypass the check
|
||||||
END
|
EOF
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for tabs, since tab-in-indent catches only those at the beginning of a line
|
# Check for tabs, since tab-in-indent catches only those at the beginning of a line
|
||||||
if git diff --cached -- $paths_to_check | egrep '^\+.* '; then
|
if git diff --cached -- $paths_to_check | egrep '^\+.* '; then
|
||||||
cat<<END
|
cat<<EOF
|
||||||
Error: This commit would contain a tab, which is against this repo's policy.
|
Error: This commit would contain a tab, which is against this repo's policy.
|
||||||
If you know what you are doing, you can try 'git commit --no-verify' to bypass the check.
|
If you know what you are doing, you can try 'git commit --no-verify' to bypass the check.
|
||||||
END
|
EOF
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
4
shell.nix
Normal file → Executable file
|
|
@ -1,3 +1,7 @@
|
||||||
|
#!/usr/bin/nix-shell
|
||||||
|
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
let
|
let
|
||||||
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05";
|
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05";
|
||||||
pkgs = import nixpkgs { config = {}; overlays = []; };
|
pkgs = import nixpkgs { config = {}; overlays = []; };
|
||||||
|
|
|
||||||
|
|
@ -21,20 +21,41 @@ if (YUZU_STATIC_BUILD)
|
||||||
add_compile_definitions(QT_STATICPLUGIN)
|
add_compile_definitions(QT_STATICPLUGIN)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Build identifiers
|
||||||
if (NIGHTLY_BUILD)
|
if (NIGHTLY_BUILD)
|
||||||
add_compile_definitions(NIGHTLY_BUILD)
|
add_compile_definitions(NIGHTLY_BUILD)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Legacy (android only)
|
||||||
if (YUZU_LEGACY)
|
if (YUZU_LEGACY)
|
||||||
message(WARNING "Making legacy build. Performance may suffer.")
|
message(WARNING "Making legacy build. Performance may suffer.")
|
||||||
add_compile_definitions(YUZU_LEGACY)
|
add_compile_definitions(YUZU_LEGACY)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Genshin Spoof (android only)
|
||||||
if (GENSHIN_SPOOF)
|
if (GENSHIN_SPOOF)
|
||||||
message(WARNING "Making Genshin spoof build")
|
message(WARNING "Making Genshin spoof build")
|
||||||
add_compile_definitions(GENSHIN_SPOOF)
|
add_compile_definitions(GENSHIN_SPOOF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Build ID (mingw only right now)
|
||||||
|
# Pretty much just refers to the CI "target" for this build
|
||||||
|
if (NOT BUILD_ID)
|
||||||
|
if (ARCHITECTURE_x86_64)
|
||||||
|
set(BUILD_ID amd64)
|
||||||
|
elseif(ARCHITECTURE_arm64)
|
||||||
|
if (WIN32)
|
||||||
|
set(BUILD_ID arm64)
|
||||||
|
else()
|
||||||
|
set(BUILD_ID aarch64)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set(BUILD_ID "${ARCHITECTURE}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_compile_definitions(BUILD_ID="${BUILD_ID}")
|
||||||
|
|
||||||
# Set compilation flags
|
# Set compilation flags
|
||||||
if (MSVC AND NOT CXX_CLANG)
|
if (MSVC AND NOT CXX_CLANG)
|
||||||
set(CMAKE_CONFIGURATION_TYPES Debug Release CACHE STRING "" FORCE)
|
set(CMAKE_CONFIGURATION_TYPES Debug Release CACHE STRING "" FORCE)
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 67 KiB |
|
|
@ -462,8 +462,8 @@
|
||||||
<string name="renderer_resolution">الدقة (الإرساء/محمول)</string>
|
<string name="renderer_resolution">الدقة (الإرساء/محمول)</string>
|
||||||
<string name="renderer_vsync">VSync وضع</string>
|
<string name="renderer_vsync">VSync وضع</string>
|
||||||
<string name="renderer_scaling_filter">مرشح ملائم للنافذة</string>
|
<string name="renderer_scaling_filter">مرشح ملائم للنافذة</string>
|
||||||
<string name="fsr_sharpness">حدة FSR</string>
|
<string name="fsr_sharpness">حدة FSR/SGSR</string>
|
||||||
<string name="fsr_sharpness_description">يحدد مدى وضوح الصورة عند استخدام التباين الديناميكي لـ FSR</string>
|
<string name="fsr_sharpness_description">يحدد مدى وضوح الصورة عند استخدام مرشحات FSR أو SGSR</string>
|
||||||
<string name="renderer_anti_aliasing">طريقة مضاد التعرج</string>
|
<string name="renderer_anti_aliasing">طريقة مضاد التعرج</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -329,8 +329,6 @@
|
||||||
<string name="renderer_resolution">ڕوونی (دۆخی دەستی/دۆخی دۆک)</string>
|
<string name="renderer_resolution">ڕوونی (دۆخی دەستی/دۆخی دۆک)</string>
|
||||||
<string name="renderer_vsync">دۆخی VSync</string>
|
<string name="renderer_vsync">دۆخی VSync</string>
|
||||||
<string name="renderer_scaling_filter">فلتەری گونجاندنی پەنجەرە</string>
|
<string name="renderer_scaling_filter">فلتەری گونجاندنی پەنجەرە</string>
|
||||||
<string name="fsr_sharpness">تیژی FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">دیاریکردنی تیژی وێنە لە کاتی بەکارهێنانی FSR</string>
|
|
||||||
<string name="renderer_anti_aliasing">شێوازی دژە-خاوڕۆیی</string>
|
<string name="renderer_anti_aliasing">شێوازی دژە-خاوڕۆیی</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -439,8 +439,6 @@
|
||||||
<string name="renderer_resolution">Rozlišení (Handheld/V doku)</string>
|
<string name="renderer_resolution">Rozlišení (Handheld/V doku)</string>
|
||||||
<string name="renderer_vsync">Režim VSync</string>
|
<string name="renderer_vsync">Režim VSync</string>
|
||||||
<string name="renderer_scaling_filter">Škálovací filtr</string>
|
<string name="renderer_scaling_filter">Škálovací filtr</string>
|
||||||
<string name="fsr_sharpness">Ostrost FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Určuje jak ostře bude obraz vypadat při použití dynamického kontrastu FSR.</string>
|
|
||||||
<string name="renderer_anti_aliasing">Metoda anti-aliasingu</string>
|
<string name="renderer_anti_aliasing">Metoda anti-aliasingu</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -439,8 +439,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
|
||||||
<string name="renderer_resolution">Auflösung (Handheld/Gedockt)</string>
|
<string name="renderer_resolution">Auflösung (Handheld/Gedockt)</string>
|
||||||
<string name="renderer_vsync">VSync-Modus</string>
|
<string name="renderer_vsync">VSync-Modus</string>
|
||||||
<string name="renderer_scaling_filter">Skalierungsfilter</string>
|
<string name="renderer_scaling_filter">Skalierungsfilter</string>
|
||||||
<string name="fsr_sharpness">FSR-Schärfe</string>
|
|
||||||
<string name="fsr_sharpness_description">Bestimmt die Schärfe bei FSR-Nutzung.</string>
|
|
||||||
<string name="renderer_anti_aliasing">Kantenglättung</string>
|
<string name="renderer_anti_aliasing">Kantenglättung</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -376,7 +376,7 @@
|
||||||
<string name="qlaunch_applet">Qlaunch</string>
|
<string name="qlaunch_applet">Qlaunch</string>
|
||||||
<string name="qlaunch_description">Iniciar aplicaciones desde la pantalla de inicio del sistema</string>
|
<string name="qlaunch_description">Iniciar aplicaciones desde la pantalla de inicio del sistema</string>
|
||||||
<string name="applets">Lanzador de Applet</string>
|
<string name="applets">Lanzador de Applet</string>
|
||||||
<string name="applets_description">Ejecutar applets de sistema usando el firmware instalado</string>
|
<string name="applets_description">Ejecutar applets del sistema usando el firmware instalado</string>
|
||||||
<string name="applets_error_firmware">El firmware no está instalado</string>
|
<string name="applets_error_firmware">El firmware no está instalado</string>
|
||||||
<string name="applets_error_applet">Applet no disponible</string>
|
<string name="applets_error_applet">Applet no disponible</string>
|
||||||
<string name="applets_error_description"><![CDATA[Por favor, asegúrese de que su archivo <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> y el <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-system-firmware\">firmware</a> están instalados e inténtelo de nuevo.]]></string>
|
<string name="applets_error_description"><![CDATA[Por favor, asegúrese de que su archivo <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> y el <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-system-firmware\">firmware</a> están instalados e inténtelo de nuevo.]]></string>
|
||||||
|
|
@ -456,8 +456,8 @@
|
||||||
<string name="renderer_resolution">Resolución (Portátil/Sobremesa)</string>
|
<string name="renderer_resolution">Resolución (Portátil/Sobremesa)</string>
|
||||||
<string name="renderer_vsync">Modo de sincronización vertical</string>
|
<string name="renderer_vsync">Modo de sincronización vertical</string>
|
||||||
<string name="renderer_scaling_filter">Filtro de adaptación de ventana</string>
|
<string name="renderer_scaling_filter">Filtro de adaptación de ventana</string>
|
||||||
<string name="fsr_sharpness">Nitidez FSR</string>
|
<string name="fsr_sharpness">Nitidez FSR/SGSR</string>
|
||||||
<string name="fsr_sharpness_description">Ajusta la intensidad del filtro de enfoque al usar el contraste dinámico de FSR.</string>
|
<string name="fsr_sharpness_description">Determina el grado de nitidez de la imagen al usar filtros FSR o SGSR</string>
|
||||||
<string name="renderer_anti_aliasing">Método de suavizado de bordes</string>
|
<string name="renderer_anti_aliasing">Método de suavizado de bordes</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -489,6 +489,8 @@
|
||||||
<string name="enable_buffer_history">Activar el historial del búfer</string>
|
<string name="enable_buffer_history">Activar el historial del búfer</string>
|
||||||
<string name="enable_buffer_history_description">Permite el acceso al estado del búfer anterior. Esta opción puede mejorar la calidad de renderizado y la consistencia en el rendimiento de algunos juegos.</string>
|
<string name="enable_buffer_history_description">Permite el acceso al estado del búfer anterior. Esta opción puede mejorar la calidad de renderizado y la consistencia en el rendimiento de algunos juegos.</string>
|
||||||
<string name="use_optimized_vertex_buffers">Búferes de vértices optimizados</string>
|
<string name="use_optimized_vertex_buffers">Búferes de vértices optimizados</string>
|
||||||
|
<string name="use_optimized_vertex_buffers_description">Permite la optimización del enlace del búfer de vértices para un mejor rendimiento. Requiere controladores Mesa 26.0+ Turnip/ controladores QCOM. Fallará con controladores Turnip más antiguos (versión 25.3 o inferior).</string>
|
||||||
|
|
||||||
<string name="hacks">Hacks</string>
|
<string name="hacks">Hacks</string>
|
||||||
|
|
||||||
<string name="fast_gpu_time">Tiempo rápido de la GPU</string>
|
<string name="fast_gpu_time">Tiempo rápido de la GPU</string>
|
||||||
|
|
@ -500,6 +502,7 @@
|
||||||
<string name="emulate_bgr565">Emular BGR565</string>
|
<string name="emulate_bgr565">Emular BGR565</string>
|
||||||
<string name="emulate_bgr565_description">Soluciona problemas con colores invertidos en juegos, artefactos o sombras extrañas.</string>
|
<string name="emulate_bgr565_description">Soluciona problemas con colores invertidos en juegos, artefactos o sombras extrañas.</string>
|
||||||
<string name="rescale_hack">Activar la pasada de reescalado heredada</string>
|
<string name="rescale_hack">Activar la pasada de reescalado heredada</string>
|
||||||
|
<string name="rescale_hack_description">Permite el manejo de versiones anteriores para el paso de configuración de reescalado para juegos mediante el uso de una ruta de reescalado rápida.</string>
|
||||||
<string name="renderer_asynchronous_shaders">Usar sombreadores asíncronos</string>
|
<string name="renderer_asynchronous_shaders">Usar sombreadores asíncronos</string>
|
||||||
<string name="renderer_asynchronous_shaders_description">Compila los sombreadores de forma asíncrona. Esto puede reducir los tirones, pero también puede introducir errores gráficos.</string>
|
<string name="renderer_asynchronous_shaders_description">Compila los sombreadores de forma asíncrona. Esto puede reducir los tirones, pero también puede introducir errores gráficos.</string>
|
||||||
<string name="gpu_unswizzle_settings">Ajustes de desentrelazado de la GPU</string>
|
<string name="gpu_unswizzle_settings">Ajustes de desentrelazado de la GPU</string>
|
||||||
|
|
@ -518,8 +521,10 @@
|
||||||
<string name="extensions">Extensiones</string>
|
<string name="extensions">Extensiones</string>
|
||||||
|
|
||||||
<string name="dyna_state">Estado dinámico extendido</string>
|
<string name="dyna_state">Estado dinámico extendido</string>
|
||||||
|
<string name="dyna_state_description">Controla la cantidad de características que se pueden usar en ExtendedDynamicState (EDS). Un valor más alto permitirá reducir la cantidad de compilaciones de canalización basadas en el estado dinámico compatible con el controlador.</string>
|
||||||
<string name="disabled">Desactivado</string>
|
<string name="disabled">Desactivado</string>
|
||||||
<string name="vertex_input_dynamic_state">Estado dinámico de entrada de vértices</string>
|
<string name="vertex_input_dynamic_state">Estado dinámico de entrada de vértices</string>
|
||||||
|
<string name="vertex_input_dynamic_state_description">La activación de esta función permite un manejo más flexible de la entrada de vértices, lo que podría reducir el tiempo de compilación de la canalización en vértices/búfer.</string>
|
||||||
<string name="sample_shading_fraction">Muestreo de sombreado</string>
|
<string name="sample_shading_fraction">Muestreo de sombreado</string>
|
||||||
<string name="sample_shading_fraction_description">Permite que el sombreador de fragmentos se ejecute por muestra en un fragmento multimuestreado, en lugar de una sola vez por fragmento. Mejora la calidad de los gráficos a coste de algo de rendimiento.</string>
|
<string name="sample_shading_fraction_description">Permite que el sombreador de fragmentos se ejecute por muestra en un fragmento multimuestreado, en lugar de una sola vez por fragmento. Mejora la calidad de los gráficos a coste de algo de rendimiento.</string>
|
||||||
|
|
||||||
|
|
@ -1067,7 +1072,7 @@
|
||||||
|
|
||||||
<!-- Black backgrounds theme -->
|
<!-- Black backgrounds theme -->
|
||||||
<string name="use_black_backgrounds">Fondos oscuros</string>
|
<string name="use_black_backgrounds">Fondos oscuros</string>
|
||||||
<string name="use_black_backgrounds_description">Cuando utilice el modo oscuro, aplique fondos negros.</string>
|
<string name="use_black_backgrounds_description">Cuando se usa el modo oscuro, aplicar fondos de pantalla negros.</string>
|
||||||
|
|
||||||
<!-- Buttons -->
|
<!-- Buttons -->
|
||||||
<string name="enable_folder_button">Carpeta</string>
|
<string name="enable_folder_button">Carpeta</string>
|
||||||
|
|
|
||||||
|
|
@ -454,11 +454,12 @@
|
||||||
<string name="renderer_resolution">Résolution (Mode Portable/Mode TV)</string>
|
<string name="renderer_resolution">Résolution (Mode Portable/Mode TV)</string>
|
||||||
<string name="renderer_vsync">Mode VSync</string>
|
<string name="renderer_vsync">Mode VSync</string>
|
||||||
<string name="renderer_scaling_filter">Filtre de fenêtre adaptatif</string>
|
<string name="renderer_scaling_filter">Filtre de fenêtre adaptatif</string>
|
||||||
<string name="fsr_sharpness">Netteté FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Détermine à quel point l\'image sera affinée lors de l\'utilisation du contraste dynamique FSR.</string>
|
|
||||||
<string name="renderer_anti_aliasing">Méthode d\'anticrénelage</string>
|
<string name="renderer_anti_aliasing">Méthode d\'anticrénelage</string>
|
||||||
|
|
||||||
|
|
||||||
|
<string name="advanced">Avancé</string>
|
||||||
|
|
||||||
|
<string name="renderer_accuracy">Mode GPU</string>
|
||||||
<string name="dma_accuracy">Précision DMA</string>
|
<string name="dma_accuracy">Précision DMA</string>
|
||||||
<string name="dma_accuracy_description">Contrôle la précision du DMA. Une précision sûre peut résoudre les problèmes dans certains jeux, mais peut aussi affecter les performances dans certains cas. Si vous n\'êtes pas sûr, laissez ce paramètre sur Par défaut.</string>
|
<string name="dma_accuracy_description">Contrôle la précision du DMA. Une précision sûre peut résoudre les problèmes dans certains jeux, mais peut aussi affecter les performances dans certains cas. Si vous n\'êtes pas sûr, laissez ce paramètre sur Par défaut.</string>
|
||||||
<string name="anisotropic_filtering">Filtrage anisotropique</string>
|
<string name="anisotropic_filtering">Filtrage anisotropique</string>
|
||||||
|
|
@ -474,15 +475,29 @@
|
||||||
<string name="use_disk_shader_cache_description">Réduire les saccades en stockant et en chargeant localement les shaders générés</string>
|
<string name="use_disk_shader_cache_description">Réduire les saccades en stockant et en chargeant localement les shaders générés</string>
|
||||||
<string name="renderer_force_max_clock">Forcer les fréquences maximales (Adreno uniquement)</string>
|
<string name="renderer_force_max_clock">Forcer les fréquences maximales (Adreno uniquement)</string>
|
||||||
<string name="renderer_force_max_clock_description">Forcer le GPU à fonctionner à ses fréquences maximales possibles (les contraintes thermiques seront toujours appliquées).</string>
|
<string name="renderer_force_max_clock_description">Forcer le GPU à fonctionner à ses fréquences maximales possibles (les contraintes thermiques seront toujours appliquées).</string>
|
||||||
|
<string name="renderer_asynchronous_gpu_emulation">Émulation GPU asynchrone </string>
|
||||||
|
<string name="renderer_asynchronous_gpu_emulation_description">Ce contournement peut améliorer les performances en faisant tourner l\'émulation GPU de manière asynchrone au détriment de la fidélité graphique et de la stabilité (plantages plus fréquents) dus à des erreurs de cadence.</string>
|
||||||
<string name="renderer_reactive_flushing">Utiliser le vidage réactif</string>
|
<string name="renderer_reactive_flushing">Utiliser le vidage réactif</string>
|
||||||
<string name="renderer_reactive_flushing_description">Améliore la précision du rendu dans certains jeux au détriment des performances.</string>
|
<string name="renderer_reactive_flushing_description">Améliore la précision du rendu dans certains jeux au détriment des performances.</string>
|
||||||
|
<string name="enable_buffer_history">Activer l\'historique du tampon</string>
|
||||||
|
<string name="hacks">Contournements</string>
|
||||||
|
|
||||||
|
<string name="fast_gpu_time">Temps GPU rapide</string>
|
||||||
<string name="skip_cpu_inner_invalidation">Ignorer l\'invalidation interne du CPU</string>
|
<string name="skip_cpu_inner_invalidation">Ignorer l\'invalidation interne du CPU</string>
|
||||||
<string name="skip_cpu_inner_invalidation_description">Ignore certaines invalidations de cache côté CPU lors des mises à jour mémoire, réduisant l\'utilisation du CPU et améliorant ses performances. Peut causer des bugs ou plantages sur certains jeux.</string>
|
<string name="skip_cpu_inner_invalidation_description">Ignore certaines invalidations de cache côté CPU lors des mises à jour mémoire, réduisant l\'utilisation du CPU et améliorant ses performances. Peut causer des bugs ou plantages sur certains jeux.</string>
|
||||||
|
<string name="emulate_bgr565">Emuler BGR565</string>
|
||||||
<string name="renderer_asynchronous_shaders">Utiliser les shaders asynchrones</string>
|
<string name="renderer_asynchronous_shaders">Utiliser les shaders asynchrones</string>
|
||||||
<string name="renderer_asynchronous_shaders_description">Compile les shaders de manière asynchrone. Cela peut réduire les saccades mais peut aussi provoquer des problèmes graphiques.</string>
|
<string name="renderer_asynchronous_shaders_description">Compile les shaders de manière asynchrone. Cela peut réduire les saccades mais peut aussi provoquer des problèmes graphiques.</string>
|
||||||
|
<string name="gpu_unswizzle_disabled">Désactivé</string>
|
||||||
|
<string name="gpu_unswizzle_default_button">Par défaut</string>
|
||||||
|
|
||||||
|
|
||||||
|
<string name="extensions">Extensions</string>
|
||||||
|
|
||||||
<string name="dyna_state">État dynamique étendu</string>
|
<string name="dyna_state">État dynamique étendu</string>
|
||||||
<string name="disabled">Désactivé</string>
|
<string name="disabled">Désactivé</string>
|
||||||
<string name="vertex_input_dynamic_state">État dynamique d\'entrée de sommet</string>
|
<string name="vertex_input_dynamic_state">État dynamique d\'entrée de sommet</string>
|
||||||
|
<string name="sample_shading_fraction">Échantillonnage de shading</string>
|
||||||
<string name="display">Affichage</string>
|
<string name="display">Affichage</string>
|
||||||
|
|
||||||
<string name="renderer_screen_layout">Orientation</string>
|
<string name="renderer_screen_layout">Orientation</string>
|
||||||
|
|
@ -508,6 +523,21 @@
|
||||||
<string name="flush_by_line">Vider les journaux de débogage ligne par ligne</string>
|
<string name="flush_by_line">Vider les journaux de débogage ligne par ligne</string>
|
||||||
<string name="flush_by_line_description">Vide les journaux de débogage à chaque ligne écrite, facilitant le débogage en cas de plantage ou de gel.</string>
|
<string name="flush_by_line_description">Vide les journaux de débogage à chaque ligne écrite, facilitant le débogage en cas de plantage ou de gel.</string>
|
||||||
|
|
||||||
|
<!-- GPU Logging strings -->
|
||||||
|
<string name="gpu_logging_header">Journalisation GPU</string>
|
||||||
|
<string name="gpu_logging_enabled">Activer la journalisation GPU</string>
|
||||||
|
<string name="gpu_log_level">Niveau de journalisation</string>
|
||||||
|
<string name="gpu_log_vulkan_calls">Journaliser les appels API Vulkan</string>
|
||||||
|
<string name="gpu_log_shader_dumps">Extraire les shaders</string>
|
||||||
|
<string name="gpu_log_shader_dumps_description">Sauvegarder le shader SPIR-V complié dans les fichiers</string>
|
||||||
|
<string name="gpu_log_memory_tracking">Monitorer la mémoire GPU</string>
|
||||||
|
<string name="gpu_log_memory_tracking_description">Monitorer les allocations et désallocations de la mémoire GPU</string>
|
||||||
|
<string name="gpu_log_driver_debug">Informations de débogage du pilote</string>
|
||||||
|
<string name="gpu_log_ring_buffer_size_description">Nombre d\'appels Vulkans récents à monitorer (par défaut : 512)</string>
|
||||||
|
<string name="gpu_log_ring_buffer_size_hint">64 à 4096 entrées</string>
|
||||||
|
|
||||||
|
<string name="general">Général</string>
|
||||||
|
|
||||||
<!-- Audio settings strings -->
|
<!-- Audio settings strings -->
|
||||||
<string name="audio_output_engine">Moteur de sortie</string>
|
<string name="audio_output_engine">Moteur de sortie</string>
|
||||||
<string name="audio_volume">Volume</string>
|
<string name="audio_volume">Volume</string>
|
||||||
|
|
@ -590,6 +620,7 @@
|
||||||
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Par défaut</string>
|
<string name="slider_default">Par défaut</string>
|
||||||
|
<string name="default_string">Par défaut</string>
|
||||||
<string name="loading">Chargement...</string>
|
<string name="loading">Chargement...</string>
|
||||||
<string name="shutting_down">Extinction en cours...</string>
|
<string name="shutting_down">Extinction en cours...</string>
|
||||||
<string name="reset_setting_confirmation">Voulez-vous réinitialiser ce paramètre à sa valeur par défaut ?</string>
|
<string name="reset_setting_confirmation">Voulez-vous réinitialiser ce paramètre à sa valeur par défaut ?</string>
|
||||||
|
|
@ -628,6 +659,7 @@
|
||||||
<string name="select_gpu_driver_default">Par défaut</string>
|
<string name="select_gpu_driver_default">Par défaut</string>
|
||||||
<string name="select_gpu_driver_error">Pilote non valide sélectionné</string>
|
<string name="select_gpu_driver_error">Pilote non valide sélectionné</string>
|
||||||
<string name="driver_already_installed">Pilote déjà installé</string>
|
<string name="driver_already_installed">Pilote déjà installé</string>
|
||||||
|
<string name="installed_label">%1$s (Installé)</string>
|
||||||
<string name="system_gpu_driver">Pilote du GPU du système</string>
|
<string name="system_gpu_driver">Pilote du GPU du système</string>
|
||||||
<string name="installing_driver">Installation du pilote...</string>
|
<string name="installing_driver">Installation du pilote...</string>
|
||||||
|
|
||||||
|
|
@ -647,6 +679,7 @@
|
||||||
<string name="installing">Installation en cours…</string>
|
<string name="installing">Installation en cours…</string>
|
||||||
<string name="latest">Dernière</string>
|
<string name="latest">Dernière</string>
|
||||||
<string name="recommended_driver">Pilote recommandé :</string>
|
<string name="recommended_driver">Pilote recommandé :</string>
|
||||||
|
<string name="gpu_model">Modèle GPU</string>
|
||||||
<string name="unsupported_gpu">GPU non pris en charge</string>
|
<string name="unsupported_gpu">GPU non pris en charge</string>
|
||||||
<string name="unsupported_gpu_warning">Votre GPU ne prend pas en charge l\'injection de pilotes. Il n\'est pas recommandé de définir des pilotes personnalisés.</string>
|
<string name="unsupported_gpu_warning">Votre GPU ne prend pas en charge l\'injection de pilotes. Il n\'est pas recommandé de définir des pilotes personnalisés.</string>
|
||||||
|
|
||||||
|
|
@ -656,6 +689,9 @@
|
||||||
<string name="preferences_system_description">Mode TV, région, langue</string>
|
<string name="preferences_system_description">Mode TV, région, langue</string>
|
||||||
<string name="preferences_graphics">Vidéo</string>
|
<string name="preferences_graphics">Vidéo</string>
|
||||||
<string name="preferences_graphics_description">Niveau de précision, résolution, cache de shaders</string>
|
<string name="preferences_graphics_description">Niveau de précision, résolution, cache de shaders</string>
|
||||||
|
<string name="quick_settings">Paramètres rapides</string>
|
||||||
|
<string name="enable_quick_settings">Activer les paramètres rapides</string>
|
||||||
|
<string name="enable_quick_settings_description">Autoriser l\'accès aux paramètres rapides par le balayage de l\'écran et le bouton du menu</string>
|
||||||
<string name="preferences_audio">Audio</string>
|
<string name="preferences_audio">Audio</string>
|
||||||
<string name="preferences_audio_description">Moteur de sortie, volume</string>
|
<string name="preferences_audio_description">Moteur de sortie, volume</string>
|
||||||
<string name="preferences_controls">Contrôles</string>
|
<string name="preferences_controls">Contrôles</string>
|
||||||
|
|
@ -663,6 +699,25 @@
|
||||||
<string name="preferences_player">Joueur %d</string>
|
<string name="preferences_player">Joueur %d</string>
|
||||||
<string name="preferences_debug">Débogage</string>
|
<string name="preferences_debug">Débogage</string>
|
||||||
<string name="preferences_debug_description">Débogage CPU/GPU, API graphique, fastmem</string>
|
<string name="preferences_debug_description">Débogage CPU/GPU, API graphique, fastmem</string>
|
||||||
|
<string name="preferences_custom_paths">Chemins personnalisés</string>
|
||||||
|
<string name="preferences_custom_paths_description">Sauvegarder le répertoire des données</string>
|
||||||
|
|
||||||
|
<!-- Custom Paths settings -->
|
||||||
|
<string name="custom_save_directory">Sauvegarder le répertoire des données</string>
|
||||||
|
<string name="custom_save_directory_description">Définir un chemin personnalisé pour les sauvegardes</string>
|
||||||
|
<string name="reset_to_nand">Réinitialiser par défaut</string>
|
||||||
|
<string name="migrate_save_data">Migrer les données de sauvegarde</string>
|
||||||
|
<string name="save_migration_complete">Données de sauvegarde supprimées avec succès</string>
|
||||||
|
<string name="save_migration_failed">Échec de la migration des données de sauvegarde</string>
|
||||||
|
<string name="destination_has_saves">La destination contient déjà des données. Voulez-vous les écraser \?</string>
|
||||||
|
<string name="grant_permission">Accorder la permission</string>
|
||||||
|
<string name="custom_nand_directory">Dossier NAND</string>
|
||||||
|
<string name="custom_nand_directory_description">Définir un chemin personnalisé pour le stockage NAND</string>
|
||||||
|
<string name="custom_sdmc_directory">Répertoire de carte SD</string>
|
||||||
|
<string name="custom_sdmc_directory_description">Définir un chemin personnalisé pour le stockage de la carte SD virtuelle</string>
|
||||||
|
<string name="path_set">Chemin défini avec succès</string>
|
||||||
|
<string name="skip_migration">Sauter</string>
|
||||||
|
|
||||||
<!-- Game properties -->
|
<!-- Game properties -->
|
||||||
<string name="info">Info</string>
|
<string name="info">Info</string>
|
||||||
<string name="info_description">ID du programme, développeur, version</string>
|
<string name="info_description">ID du programme, développeur, version</string>
|
||||||
|
|
@ -676,6 +731,7 @@
|
||||||
<string name="copy_details">Copier les détails</string>
|
<string name="copy_details">Copier les détails</string>
|
||||||
<string name="add_ons">Extensions</string>
|
<string name="add_ons">Extensions</string>
|
||||||
<string name="add_ons_description">Activer les mods, mises à jour et DLC</string>
|
<string name="add_ons_description">Activer les mods, mises à jour et DLC</string>
|
||||||
|
<string name="playtime">Temps de jeu :</string>
|
||||||
<string name="reset_playtime">Réinitialiser le Temps de Jeu</string>
|
<string name="reset_playtime">Réinitialiser le Temps de Jeu</string>
|
||||||
<string name="reset_playtime_description">Réinitialiser le temps de jeu du jeu actuel à 0 seconde</string>
|
<string name="reset_playtime_description">Réinitialiser le temps de jeu du jeu actuel à 0 seconde</string>
|
||||||
<string name="reset_playtime_warning_description">Cela effacera les données de temps de jeu du jeu actuel. Êtes-vous sûr \?</string>
|
<string name="reset_playtime_warning_description">Cela effacera les données de temps de jeu du jeu actuel. Êtes-vous sûr \?</string>
|
||||||
|
|
@ -683,6 +739,9 @@
|
||||||
<string name="edit_playtime">Modifier le Temps de Jeu</string>
|
<string name="edit_playtime">Modifier le Temps de Jeu</string>
|
||||||
<string name="hours">Heures</string>
|
<string name="hours">Heures</string>
|
||||||
<string name="minutes">Minutes</string>
|
<string name="minutes">Minutes</string>
|
||||||
|
<string name="hours_abbr">h</string>
|
||||||
|
<string name="minutes_abbr">m</string>
|
||||||
|
<string name="seconds_abbr">s</string>
|
||||||
<string name="hours_must_be_between_0_and_9999">Les heures doivent être comprises entre 0 et 9999</string>
|
<string name="hours_must_be_between_0_and_9999">Les heures doivent être comprises entre 0 et 9999</string>
|
||||||
<string name="minutes_must_be_between_0_and_59">Les minutes doivent être comprises entre 0 et 59</string>
|
<string name="minutes_must_be_between_0_and_59">Les minutes doivent être comprises entre 0 et 59</string>
|
||||||
<string name="seconds_must_be_between_0_and_59">Les secondes doivent être comprises entre 0 et 59</string>
|
<string name="seconds_must_be_between_0_and_59">Les secondes doivent être comprises entre 0 et 59</string>
|
||||||
|
|
@ -714,6 +773,7 @@
|
||||||
<string name="confirm_uninstall">Confirmer la désinstallation</string>
|
<string name="confirm_uninstall">Confirmer la désinstallation</string>
|
||||||
<string name="confirm_uninstall_description">Êtes-vous sûr de vouloir désinstaller cette extension ?</string>
|
<string name="confirm_uninstall_description">Êtes-vous sûr de vouloir désinstaller cette extension ?</string>
|
||||||
<string name="verify_integrity">Vérifier l\'intégrité</string>
|
<string name="verify_integrity">Vérifier l\'intégrité</string>
|
||||||
|
<string name="verifying">Vérification...</string>
|
||||||
<string name="verify_success">La vérification de l\'intégrité a réussi !</string>
|
<string name="verify_success">La vérification de l\'intégrité a réussi !</string>
|
||||||
<string name="verify_failure">La vérification de l\'intégrité a échoué !</string>
|
<string name="verify_failure">La vérification de l\'intégrité a échoué !</string>
|
||||||
<string name="verify_failure_description">Le contenu d\'un fichier peut être corrompu</string>
|
<string name="verify_failure_description">Le contenu d\'un fichier peut être corrompu</string>
|
||||||
|
|
@ -785,6 +845,7 @@
|
||||||
<string name="emulation_control_opacity">Opacité</string>
|
<string name="emulation_control_opacity">Opacité</string>
|
||||||
<string name="emulation_touch_overlay_reset">Réinitialiser l\'overlay</string>
|
<string name="emulation_touch_overlay_reset">Réinitialiser l\'overlay</string>
|
||||||
<string name="emulation_touch_overlay_edit">Modifier l\'overlay</string>
|
<string name="emulation_touch_overlay_edit">Modifier l\'overlay</string>
|
||||||
|
<string name="emulation_snap_to_grid">Aimanter à la grille</string>
|
||||||
<string name="emulation_pause">Mettre en pause l\'émulation</string>
|
<string name="emulation_pause">Mettre en pause l\'émulation</string>
|
||||||
<string name="emulation_unpause">Reprendre l\'émulation</string>
|
<string name="emulation_unpause">Reprendre l\'émulation</string>
|
||||||
<string name="emulation_input_overlay">Options de l\'overlay</string>
|
<string name="emulation_input_overlay">Options de l\'overlay</string>
|
||||||
|
|
@ -838,6 +899,32 @@
|
||||||
<string name="clock_boost">Boost (1700MHz)</string>
|
<string name="clock_boost">Boost (1700MHz)</string>
|
||||||
<string name="clock_fast">Rapide (2000MHz)</string>
|
<string name="clock_fast">Rapide (2000MHz)</string>
|
||||||
|
|
||||||
|
<!-- GPU overclock factors -->
|
||||||
|
<string name="off">Désactivé</string>
|
||||||
|
<string name="fast_gpu_medium">Moyen (256)</string>
|
||||||
|
<string name="fast_gpu_high">Élevé (512)</string>
|
||||||
|
|
||||||
|
<!-- GPU swizzle texture size -->
|
||||||
|
<string name="gpu_texturesizeswizzle_verysmall">Très petit (16 Mo)</string>
|
||||||
|
<string name="gpu_texturesizeswizzle_small">Petit (32 Mo)</string>
|
||||||
|
<string name="gpu_texturesizeswizzle_normal">Normal (128 Mo)</string>
|
||||||
|
<string name="gpu_texturesizeswizzle_large">Large (256 Mo)</string>
|
||||||
|
<string name="gpu_texturesizeswizzle_verylarge">Très large (512 Mo)</string>
|
||||||
|
|
||||||
|
<!-- GPU swizzle streams -->
|
||||||
|
<string name="gpu_swizzle_verylow">Très faible (4 Mo)</string>
|
||||||
|
<string name="gpu_swizzle_low">Faible (8 Mo)</string>
|
||||||
|
<string name="gpu_swizzle_normal">Normal (16 Mo)</string>
|
||||||
|
<string name="gpu_swizzle_medium">Moyen (32 Mo)</string>
|
||||||
|
<string name="gpu_swizzle_high">Élevé (64 Mo)</string>
|
||||||
|
|
||||||
|
<!-- GPU swizzle chunks -->
|
||||||
|
<string name="gpu_swizzlechunk_verylow">Très faible (32)</string>
|
||||||
|
<string name="gpu_swizzlechunk_low">Faible (64)</string>
|
||||||
|
<string name="gpu_swizzlechunk_normal">Normal (128)</string>
|
||||||
|
<string name="gpu_swizzlechunk_medium">Moyen (256)</string>
|
||||||
|
<string name="gpu_swizzlechunk_high">Élevé (512)</string>
|
||||||
|
|
||||||
<!-- Temperature Units -->
|
<!-- Temperature Units -->
|
||||||
<string name="temperature_celsius">Celsius</string>
|
<string name="temperature_celsius">Celsius</string>
|
||||||
<string name="temperature_fahrenheit">Fahrenheit</string>
|
<string name="temperature_fahrenheit">Fahrenheit</string>
|
||||||
|
|
@ -853,6 +940,11 @@
|
||||||
|
|
||||||
<string name="renderer_none">Aucune</string>
|
<string name="renderer_none">Aucune</string>
|
||||||
|
|
||||||
|
<!-- Renderer Accuracy -->
|
||||||
|
<string name="renderer_accuracy_low">Rapide</string>
|
||||||
|
<string name="renderer_accuracy_medium">Moyen</string>
|
||||||
|
<string name="renderer_accuracy_high">Précis</string>
|
||||||
|
|
||||||
<!-- DMA Accuracy -->
|
<!-- DMA Accuracy -->
|
||||||
<string name="dma_accuracy_default">Défaut</string>
|
<string name="dma_accuracy_default">Défaut</string>
|
||||||
<string name="dma_accuracy_unsafe">Dangereux</string>
|
<string name="dma_accuracy_unsafe">Dangereux</string>
|
||||||
|
|
@ -886,6 +978,26 @@
|
||||||
<string name="cpu_accuracy_paranoid">Paranoïaque</string>
|
<string name="cpu_accuracy_paranoid">Paranoïaque</string>
|
||||||
<string name="cpu_accuracy_debugging">Débogage</string>
|
<string name="cpu_accuracy_debugging">Débogage</string>
|
||||||
|
|
||||||
|
<!-- Freedreno Settings -->
|
||||||
|
<string name="freedreno_settings_title">Paramètres de Freedreno</string>
|
||||||
|
<string name="gpu_driver_settings">Paramètres du pilote GPU</string>
|
||||||
|
<string name="freedreno_presets">Préréglages rapides</string>
|
||||||
|
<string name="freedreno_current_settings">Paramètres actuels</string>
|
||||||
|
<string name="freedreno_debug">Paramètres avancés</string>
|
||||||
|
<string name="freedreno_var_value">Valeur de la variable</string>
|
||||||
|
<string name="freedreno_add_variable">Ajouter la variable</string>
|
||||||
|
<string name="freedreno_clear_all">Effacer tout</string>
|
||||||
|
<string name="freedreno_saved">Configuration Freedreno sauvegardée</string>
|
||||||
|
<string name="freedreno_cleared_all">Toutes les variables Freedreno effacées</string>
|
||||||
|
<string name="freedreno_variable_added">Variable %1$s ajouté</string>
|
||||||
|
<string name="freedreno_preset_applied">Préréglage \'%1$s\' appliqué</string>
|
||||||
|
<string name="freedreno_error_empty_name">Le nom de la variable ne peut pas être vide</string>
|
||||||
|
<string name="freedreno_error_setting_variable">Échec de l\'assignation de la variable</string>
|
||||||
|
<string name="freedreno_info_title">À propos de la configuration Freedreno</string>
|
||||||
|
<string name="freedreno_per_game_title">Paramètres de Freedreno</string>
|
||||||
|
<string name="freedreno_per_game_description">Configurer les paramètres du pilote GPU pour ce jeu</string>
|
||||||
|
<string name="freedreno_per_game_saved">Configuration Freedreno sauvegardée</string>
|
||||||
|
|
||||||
<!-- Gamepad Buttons -->
|
<!-- Gamepad Buttons -->
|
||||||
<string name="gamepad_d_pad">Pavé directionnel</string>
|
<string name="gamepad_d_pad">Pavé directionnel</string>
|
||||||
<string name="gamepad_left_stick">Stick gauche</string>
|
<string name="gamepad_left_stick">Stick gauche</string>
|
||||||
|
|
@ -902,26 +1014,37 @@
|
||||||
<string name="theme_material_you">Material You</string>
|
<string name="theme_material_you">Material You</string>
|
||||||
<string name="app_settings">Paramètres de l’App</string>
|
<string name="app_settings">Paramètres de l’App</string>
|
||||||
<string name="theme_and_color">Thème et Couleur</string>
|
<string name="theme_and_color">Thème et Couleur</string>
|
||||||
|
<string name="fullscreen_mode">Mode plein écran</string>
|
||||||
<!-- Theme Modes -->
|
<!-- Theme Modes -->
|
||||||
<string name="change_theme_mode">Changer le mode de thème</string>
|
<string name="change_theme_mode">Changer le mode de thème</string>
|
||||||
<string name="theme_mode_follow_system">Automatique</string>
|
<string name="theme_mode_follow_system">Automatique</string>
|
||||||
<string name="theme_mode_light">Lumineux</string>
|
<string name="theme_mode_light">Lumineux</string>
|
||||||
<string name="theme_mode_dark">Sombre</string>
|
<string name="theme_mode_dark">Sombre</string>
|
||||||
|
|
||||||
|
<string name="multiplier_none">Aucun</string>
|
||||||
|
|
||||||
<!-- Black backgrounds theme -->
|
<!-- Black backgrounds theme -->
|
||||||
<string name="use_black_backgrounds">Arrière-plan noir</string>
|
<string name="use_black_backgrounds">Arrière-plan noir</string>
|
||||||
<string name="use_black_backgrounds_description">Lorsque vous utilisez le thème sombre, appliquer un arrière-plan noir.</string>
|
<string name="use_black_backgrounds_description">Lorsque vous utilisez le thème sombre, appliquer un arrière-plan noir.</string>
|
||||||
|
|
||||||
|
<!-- Buttons -->
|
||||||
|
<string name="enable_folder_button">Dossier</string>
|
||||||
|
<string name="enable_folder_button_description">Afficher le bouton pour ajouter les dossiers de jeu</string>
|
||||||
|
<string name="enable_qlaunch_button">QLaunch</string>
|
||||||
|
<string name="enable_qlaunch_button_description">Afficher le bouton pour lancer QLaunch</string>
|
||||||
|
|
||||||
<!-- App Language -->
|
<!-- App Language -->
|
||||||
<string name="app_language">Language de l\'application</string>
|
<string name="app_language">Language de l\'application</string>
|
||||||
<string name="app_language_description">Changer la langue de l\'interface</string>
|
<string name="app_language_description">Changer la langue de l\'interface</string>
|
||||||
<string name="app_language_system">Suivre le système</string>
|
<string name="app_language_system">Suivre le système</string>
|
||||||
<!-- Static Themes -->
|
<!-- Static Themes -->
|
||||||
<string name="static_theme_color">Couleur du thème</string>
|
<string name="static_theme_color">Couleur du thème</string>
|
||||||
|
<string name="eden_theme">Eden</string>
|
||||||
<string name="violet">Violet (Par défaut)</string>
|
<string name="violet">Violet (Par défaut)</string>
|
||||||
<string name="blue">Bleu</string>
|
<string name="blue">Bleu</string>
|
||||||
<string name="cyan">Cyan</string>
|
<string name="cyan">Cyan</string>
|
||||||
<string name="red">Rouge</string>
|
<string name="red">Rouge</string>
|
||||||
|
<string name="green">Vert</string>
|
||||||
<string name="yellow">Jaune</string>
|
<string name="yellow">Jaune</string>
|
||||||
<string name="orange">Orange</string>
|
<string name="orange">Orange</string>
|
||||||
<string name="pink">Rose</string>
|
<string name="pink">Rose</string>
|
||||||
|
|
@ -940,6 +1063,8 @@
|
||||||
|
|
||||||
<!-- Applet Modes -->
|
<!-- Applet Modes -->
|
||||||
<string name="applets_menu">Applets</string>
|
<string name="applets_menu">Applets</string>
|
||||||
|
<string name="applets_menu_description">Modifier les frontends et paramètres des applets</string>
|
||||||
|
|
||||||
<string name="applet_hle">Frontend personnalisé</string>
|
<string name="applet_hle">Frontend personnalisé</string>
|
||||||
<string name="applet_lle">Applet réel</string>
|
<string name="applet_lle">Applet réel</string>
|
||||||
|
|
||||||
|
|
@ -948,7 +1073,39 @@
|
||||||
<string name="airplane_mode">Mode avion</string>
|
<string name="airplane_mode">Mode avion</string>
|
||||||
<string name="airplane_mode_description">Passe le mode avion au système d\'exploitation Switch</string>
|
<string name="airplane_mode_description">Passe le mode avion au système d\'exploitation Switch</string>
|
||||||
|
|
||||||
|
<string name="enable_overlay">Activer l\'applet d\'overlay</string>
|
||||||
|
<!-- Profile Management -->
|
||||||
|
<string name="profile_manager">Gestionnaire de profil</string>
|
||||||
|
<string name="profile_manager_description">Gérer les profils utilisateurs</string>
|
||||||
|
<string name="profile_add_user">Ajouter un utilisateur</string>
|
||||||
|
<string name="profile_new_user">Nouvel utilisateur</string>
|
||||||
|
<string name="profile_edit_user">Modifier l\'utilisateur</string>
|
||||||
|
<string name="profile_edit">Éditer</string>
|
||||||
|
<string name="profile_delete">Supprimer</string>
|
||||||
|
<string name="profile_username">Nom d\'utilisateur</string>
|
||||||
|
<string name="profile_uuid">ID de l\'utilisateur (UUID)</string>
|
||||||
|
<string name="profile_uuid_description">Il s\'agit de l\'identifiant unique de ce profil utilisateur. Il ne peut pas être changé après sa création.</string>
|
||||||
|
<string name="profile_generate">Générer</string>
|
||||||
|
<string name="profile_avatar">Avatar de l\'utilisateur</string>
|
||||||
|
<string name="profile_select_image">Sélectionner l\'image</string>
|
||||||
|
<string name="profile_firmware_avatars">Avatars du firmware</string>
|
||||||
|
<string name="profile_firmware_avatars_unavailable">Avatars du firmware non disponibles. Veuillez installer le firmware pour utiliser cette fonctionnalité.</string>
|
||||||
|
<string name="profile_revert_image">Restaurer à la valeur par défaut</string>
|
||||||
|
<string name="profile_current_user">Utilisateur actuel</string>
|
||||||
|
<string name="profile_max_users_title">Nombre d\'Utilisateurs Maximum Atteint</string>
|
||||||
|
<string name="profile_max_users_message">Vous ne pouvez pas créer plus du 8 profils utilisateurs. Veuillez supprimer un des profils existants pour en créer un nouveau.</string>
|
||||||
|
<string name="profile_delete_confirm_title">Supprimer le profil \?</string>
|
||||||
|
<string name="profile_create_failed">Échec de la création du profil utilisateur</string>
|
||||||
|
<string name="profile_update_failed">Échec de la mise à jour du profil utilisateur</string>
|
||||||
|
<string name="profile_image_load_error">Échec du chargement de l\'image : %1$s</string>
|
||||||
|
<string name="profile_image_save_error">Échec de la sauvegarde de l\'image : %1$s</string>
|
||||||
|
<string name="error">Erreur</string>
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
<!-- Licenses screen strings -->
|
||||||
<string name="licenses">Licences</string>
|
<string name="licenses">Licences</string>
|
||||||
<string name="license_fidelityfx_fsr_description">Mise à l\'échelle de haute qualité par AMD.</string>
|
<string name="license_fidelityfx_fsr_description">Mise à l\'échelle de haute qualité par AMD.</string>
|
||||||
</resources>
|
<string name="external_content">Contenu externe</string>
|
||||||
|
<string name="add_folders">Ajouter un dossier</string>
|
||||||
|
<string name="percent">%1$d%%</string>
|
||||||
|
|
||||||
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -359,8 +359,6 @@
|
||||||
<string name="renderer_resolution">רזולוציה (מעוגן/נייד)</string>
|
<string name="renderer_resolution">רזולוציה (מעוגן/נייד)</string>
|
||||||
<string name="renderer_vsync">מצב VSync</string>
|
<string name="renderer_vsync">מצב VSync</string>
|
||||||
<string name="renderer_scaling_filter">פילטר מתאם חלון</string>
|
<string name="renderer_scaling_filter">פילטר מתאם חלון</string>
|
||||||
<string name="fsr_sharpness">חדות FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">קובע את מידת החדות בעת שימוש ב-FSR.</string>
|
|
||||||
<string name="renderer_anti_aliasing">שיטת Anti-aliasing</string>
|
<string name="renderer_anti_aliasing">שיטת Anti-aliasing</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -348,8 +348,6 @@
|
||||||
<string name="renderer_resolution">Felbontás (Kézi/Dockolt)</string>
|
<string name="renderer_resolution">Felbontás (Kézi/Dockolt)</string>
|
||||||
<string name="renderer_vsync">VSync mód</string>
|
<string name="renderer_vsync">VSync mód</string>
|
||||||
<string name="renderer_scaling_filter">Ablakhoz alkalmazkodó szűrő</string>
|
<string name="renderer_scaling_filter">Ablakhoz alkalmazkodó szűrő</string>
|
||||||
<string name="fsr_sharpness">FSR élesség</string>
|
|
||||||
<string name="fsr_sharpness_description">Meghatározza, milyen éles lesz a kép az FSR dinamikus kontraszt használata közben.</string>
|
|
||||||
<string name="renderer_anti_aliasing">Élsimítási módszer</string>
|
<string name="renderer_anti_aliasing">Élsimítási módszer</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -380,8 +380,6 @@
|
||||||
<string name="renderer_resolution">Resolusi (Handheld/Docked)</string>
|
<string name="renderer_resolution">Resolusi (Handheld/Docked)</string>
|
||||||
<string name="renderer_vsync">Mode Sinkronisasi Vertikal</string>
|
<string name="renderer_vsync">Mode Sinkronisasi Vertikal</string>
|
||||||
<string name="renderer_scaling_filter">Filter penyesuaian jendela</string>
|
<string name="renderer_scaling_filter">Filter penyesuaian jendela</string>
|
||||||
<string name="fsr_sharpness">Ketajaman FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Menentukan seberapa tajam gambar akan terlihat saat menggunakan kontras dinamis FSR</string>
|
|
||||||
<string name="renderer_anti_aliasing">Metode anti-aliasing</string>
|
<string name="renderer_anti_aliasing">Metode anti-aliasing</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -387,8 +387,6 @@
|
||||||
<string name="renderer_resolution">Risoluzione (Portatile/Docked)</string>
|
<string name="renderer_resolution">Risoluzione (Portatile/Docked)</string>
|
||||||
<string name="renderer_vsync">Modalità VSync</string>
|
<string name="renderer_vsync">Modalità VSync</string>
|
||||||
<string name="renderer_scaling_filter">Filtro adattivo della finestra </string>
|
<string name="renderer_scaling_filter">Filtro adattivo della finestra </string>
|
||||||
<string name="fsr_sharpness">Nitidezza FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Determina quanto sarà nitida l\'immagine utilizzando il contrasto dinamico di FSR</string>
|
|
||||||
<string name="renderer_anti_aliasing">Metodo di anti-aliasing</string>
|
<string name="renderer_anti_aliasing">Metodo di anti-aliasing</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@
|
||||||
<string name="notification_permission_not_granted">알림 권한이 부여되지 않았습니다!</string>
|
<string name="notification_permission_not_granted">알림 권한이 부여되지 않았습니다!</string>
|
||||||
<!-- Stats Overlay settings -->
|
<!-- Stats Overlay settings -->
|
||||||
<string name="process_ram">프로세스 RAM: %1$d MB</string>
|
<string name="process_ram">프로세스 RAM: %1$d MB</string>
|
||||||
<string name="shaders_prefix">셰이더</string>
|
<string name="shaders_prefix">구축 중</string>
|
||||||
<string name="shaders_suffix">빌드 중</string>
|
<string name="shaders_suffix">개 셰이더</string>
|
||||||
<string name="charging">(충전 중)</string>
|
<string name="charging">(충전 중)</string>
|
||||||
|
|
||||||
<string name="system_info_label">시스템:</string>
|
<string name="system_info_label">시스템:</string>
|
||||||
|
|
|
||||||
|
|
@ -329,8 +329,6 @@
|
||||||
<string name="renderer_resolution">Oppløsning (håndholdt/dokket)</string>
|
<string name="renderer_resolution">Oppløsning (håndholdt/dokket)</string>
|
||||||
<string name="renderer_vsync">VSync-modus</string>
|
<string name="renderer_vsync">VSync-modus</string>
|
||||||
<string name="renderer_scaling_filter">Filter for vindustilpasning</string>
|
<string name="renderer_scaling_filter">Filter for vindustilpasning</string>
|
||||||
<string name="fsr_sharpness">FSR-skarphet</string>
|
|
||||||
<string name="fsr_sharpness_description">Bestemmer bildekvalitet med FSR</string>
|
|
||||||
<string name="renderer_anti_aliasing">Anti-aliasing-metode</string>
|
<string name="renderer_anti_aliasing">Anti-aliasing-metode</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -439,8 +439,6 @@
|
||||||
<string name="renderer_resolution">Rozdzielczość (Handheld/Zadokowany)</string>
|
<string name="renderer_resolution">Rozdzielczość (Handheld/Zadokowany)</string>
|
||||||
<string name="renderer_vsync">Synchronizacja pionowa VSync</string>
|
<string name="renderer_vsync">Synchronizacja pionowa VSync</string>
|
||||||
<string name="renderer_scaling_filter">Filtr adaptacji rozdzielczości</string>
|
<string name="renderer_scaling_filter">Filtr adaptacji rozdzielczości</string>
|
||||||
<string name="fsr_sharpness">Ostrość FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Kontroluje ostrość obrazu w FSR.</string>
|
|
||||||
<string name="renderer_anti_aliasing">Metoda wygładzania krawędzi</string>
|
<string name="renderer_anti_aliasing">Metoda wygładzania krawędzi</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -430,8 +430,6 @@
|
||||||
<string name="renderer_resolution">Resolução (Portátil/Modo TV)</string>
|
<string name="renderer_resolution">Resolução (Portátil/Modo TV)</string>
|
||||||
<string name="renderer_vsync">Modo de VSync</string>
|
<string name="renderer_vsync">Modo de VSync</string>
|
||||||
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
|
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
|
||||||
<string name="fsr_sharpness">Nitidez do FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Determina a nitidez da imagem ao utilizar o contraste dinâmico do FSR</string>
|
|
||||||
<string name="renderer_anti_aliasing">Método de Anti-aliasing</string>
|
<string name="renderer_anti_aliasing">Método de Anti-aliasing</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -352,8 +352,6 @@
|
||||||
<string name="renderer_resolution">Resolução (Portátil/Ancorado)</string>
|
<string name="renderer_resolution">Resolução (Portátil/Ancorado)</string>
|
||||||
<string name="renderer_vsync">Modo VSync</string>
|
<string name="renderer_vsync">Modo VSync</string>
|
||||||
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
|
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
|
||||||
<string name="fsr_sharpness">Nitidez do FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Determina a nitidez da imagem ao usar contraste dinâmico do FSR</string>
|
|
||||||
<string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string>
|
<string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -458,8 +458,8 @@
|
||||||
<string name="renderer_resolution">Разрешение (портативное/в док-станции)</string>
|
<string name="renderer_resolution">Разрешение (портативное/в док-станции)</string>
|
||||||
<string name="renderer_vsync">Режим верт. синхронизации</string>
|
<string name="renderer_vsync">Режим верт. синхронизации</string>
|
||||||
<string name="renderer_scaling_filter">Фильтр адаптации окна</string>
|
<string name="renderer_scaling_filter">Фильтр адаптации окна</string>
|
||||||
<string name="fsr_sharpness">Резкость FSR</string>
|
<string name="fsr_sharpness">Резкость FSR/SGSR</string>
|
||||||
<string name="fsr_sharpness_description">Определяет, насколько чётким будет изображение при использовании динамического контраста FSR.</string>
|
<string name="fsr_sharpness_description">Определяет, насколько чётким будет изображение при использовании динамического контраста FSR или SGSR фильтров</string>
|
||||||
<string name="renderer_anti_aliasing">Метод сглаживания</string>
|
<string name="renderer_anti_aliasing">Метод сглаживания</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -351,8 +351,6 @@
|
||||||
<string name="renderer_resolution">Резолуција (ручно / прикључено)</string>
|
<string name="renderer_resolution">Резолуција (ручно / прикључено)</string>
|
||||||
<string name="renderer_vsync">Всинц мод</string>
|
<string name="renderer_vsync">Всинц мод</string>
|
||||||
<string name="renderer_scaling_filter">Филтер прилагођавања прозора</string>
|
<string name="renderer_scaling_filter">Филтер прилагођавања прозора</string>
|
||||||
<string name="fsr_sharpness">ФСР оштрина</string>
|
|
||||||
<string name="fsr_sharpness_description">Одређује колико ће се слика наоштрен трајати док користи \"ФСР\" динамички контраст</string>
|
|
||||||
<string name="renderer_anti_aliasing">Метода против алиасирања</string>
|
<string name="renderer_anti_aliasing">Метода против алиасирања</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
<string name="app_disclaimer">Цей застосунок запускає ігри для ігрової консолі Nintendo Switch. Він не містить ігор чи ключів.<br /><br />Перш ніж почати, укажіть розташування файлу <![CDATA[<b> prod.keys </b>]]> у пам’яті вашого пристрою.<br /><br /><![CDATA[<a href=\"https://yuzu-mirror.github.io/help/quickstart\">Дізнатися більше</a>]]></string>
|
<string name="app_disclaimer">Цей застосунок запускає ігри для ігрової консолі Nintendo Switch. Він не містить ігор чи ключів.<br /><br />Перш ніж почати, укажіть розташування файлу <![CDATA[<b> prod.keys </b>]]> у пам’яті вашого пристрою.<br /><br /><![CDATA[<a href=\"https://yuzu-mirror.github.io/help/quickstart\">Дізнатися більше</a>]]></string>
|
||||||
<string name="notice_notification_channel_name">Сповіщення та помилки</string>
|
<string name="notice_notification_channel_name">Сповіщення та помилки</string>
|
||||||
<string name="notice_notification_channel_description">Виводить сповіщення у разі виникнення проблем.</string>
|
<string name="notice_notification_channel_description">Показує сповіщення у разі виникнення проблем.</string>
|
||||||
<string name="notification_permission_not_granted">Дозвіл на сповіщення не надано!</string>
|
<string name="notification_permission_not_granted">Дозвіл на сповіщення не надано!</string>
|
||||||
<string name="app_notification_channel_description">Сповіщення емулятора Switch Eden</string>
|
<string name="app_notification_channel_description">Сповіщення емулятора Switch Eden</string>
|
||||||
<string name="app_notification_running">Eden працює</string>
|
<string name="app_notification_running">Eden працює</string>
|
||||||
|
|
@ -458,8 +458,8 @@
|
||||||
<string name="renderer_resolution">Роздільна здатність (Портативний/Док)</string>
|
<string name="renderer_resolution">Роздільна здатність (Портативний/Док)</string>
|
||||||
<string name="renderer_vsync">Режим верт. синхронізації</string>
|
<string name="renderer_vsync">Режим верт. синхронізації</string>
|
||||||
<string name="renderer_scaling_filter">Фільтр масштабування вікна</string>
|
<string name="renderer_scaling_filter">Фільтр масштабування вікна</string>
|
||||||
<string name="fsr_sharpness">Різкість FSR</string>
|
<string name="fsr_sharpness">Різкість FSR/SGSR</string>
|
||||||
<string name="fsr_sharpness_description">Визначає різкість зображення при використанні FSR.</string>
|
<string name="fsr_sharpness_description">Визначає різкість зображення при використанні фільтрів FSR або SGSR.</string>
|
||||||
<string name="renderer_anti_aliasing">Згладжування</string>
|
<string name="renderer_anti_aliasing">Згладжування</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -327,8 +327,6 @@
|
||||||
<string name="renderer_resolution">Độ phân giải (Handheld/Docked)</string>
|
<string name="renderer_resolution">Độ phân giải (Handheld/Docked)</string>
|
||||||
<string name="renderer_vsync">Chế độ VSync</string>
|
<string name="renderer_vsync">Chế độ VSync</string>
|
||||||
<string name="renderer_scaling_filter">Bộ lọc điều chỉnh cửa sổ</string>
|
<string name="renderer_scaling_filter">Bộ lọc điều chỉnh cửa sổ</string>
|
||||||
<string name="fsr_sharpness">Độ sắc nét FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Độ sắc nét khi dùng FSR</string>
|
|
||||||
<string name="renderer_anti_aliasing">Phương pháp khử răng cưa</string>
|
<string name="renderer_anti_aliasing">Phương pháp khử răng cưa</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,8 @@
|
||||||
<string name="show_power_info_description">显示当前功耗和电池剩余容量</string>
|
<string name="show_power_info_description">显示当前功耗和电池剩余容量</string>
|
||||||
<string name="show_shaders_building">显示着色器编译信息</string>
|
<string name="show_shaders_building">显示着色器编译信息</string>
|
||||||
<string name="show_shaders_building_description">显示当前正在编译的着色器数量</string>
|
<string name="show_shaders_building_description">显示当前正在编译的着色器数量</string>
|
||||||
|
<string name="pipeline_worker_cores">管线工作线程</string>
|
||||||
|
<string name="pipeline_worker_cores_description">管理用于构建 Vulkan 管线的核心数量,数值越高则管线编译性能越好,但温度也会随之升高。</string>
|
||||||
<string name="overlay_position">叠加层位置</string>
|
<string name="overlay_position">叠加层位置</string>
|
||||||
<string name="overlay_position_description">选择叠加层在屏幕上显示的位置</string>
|
<string name="overlay_position_description">选择叠加层在屏幕上显示的位置</string>
|
||||||
<string name="overlay_position_top_left">左上</string>
|
<string name="overlay_position_top_left">左上</string>
|
||||||
|
|
@ -104,7 +106,7 @@
|
||||||
|
|
||||||
<!-- NVDEC Emulation -->
|
<!-- NVDEC Emulation -->
|
||||||
<string name="nvdec_emulation">NVDEC模拟</string>
|
<string name="nvdec_emulation">NVDEC模拟</string>
|
||||||
<string name="nvdec_emulation_description">选择视频解码处理方式</string>
|
<string name="nvdec_emulation_description">播放过场与开场动画期间的视频解码处理方式(NVDEC)。</string>
|
||||||
<string name="nvdec_emulation_none">禁用</string>
|
<string name="nvdec_emulation_none">禁用</string>
|
||||||
|
|
||||||
<!-- Optimize SPIRV output -->
|
<!-- Optimize SPIRV output -->
|
||||||
|
|
@ -179,14 +181,14 @@
|
||||||
<string name="multiplayer_hide_full_rooms">隐藏满员房间</string>
|
<string name="multiplayer_hide_full_rooms">隐藏满员房间</string>
|
||||||
<string name="multiplayer_hide_empty_rooms">隐藏空房间</string>
|
<string name="multiplayer_hide_empty_rooms">隐藏空房间</string>
|
||||||
<string name="multiplayer_tap_refresh_to_check_again">点击刷新重试</string>
|
<string name="multiplayer_tap_refresh_to_check_again">点击刷新重试</string>
|
||||||
<string name="multiplayer_search_public_lobbies">搜索房间…</string>
|
<string name="multiplayer_search_public_lobbies">搜索游戏大厅…</string>
|
||||||
<string name="multiplayer_preferred_game_name">首选游戏</string>
|
<string name="multiplayer_preferred_game_name">首选游戏</string>
|
||||||
<string name="multiplayer_lobby_type">大厅类型</string>
|
<string name="multiplayer_lobby_type">游戏大厅类型</string>
|
||||||
<string name="multiplayer_room_name_error">长度需为3-20个字符</string>
|
<string name="multiplayer_room_name_error">长度需为3-20个字符</string>
|
||||||
<string name="multiplayer_required">必填</string>
|
<string name="multiplayer_required">必填</string>
|
||||||
<string name="multiplayer_token_required">需要Web令牌,请前往高级设置 -> 系统 -> 网络</string>
|
<string name="multiplayer_token_required">需要Web令牌,请前往高级设置 -> 系统 -> 网络</string>
|
||||||
<string name="multiplayer_ip_error">IP格式无效</string>
|
<string name="multiplayer_ip_error">IP格式无效</string>
|
||||||
<string name="multiplayer_username_error">必须为4-20个字符(仅字母数字、点号、连字符、下划线和空格)</string>
|
<string name="multiplayer_username_error">必须为4至20个字符,且仅包含字母、数字、点号、连字符、下划线和空格</string>
|
||||||
<string name="multiplayer_nickname_invalid">用户名无效,请在系统→网络中检查设置</string>
|
<string name="multiplayer_nickname_invalid">用户名无效,请在系统→网络中检查设置</string>
|
||||||
<string name="multiplayer_token_error">必须为48个字符,且仅包含小写字母a-z</string>
|
<string name="multiplayer_token_error">必须为48个字符,且仅包含小写字母a-z</string>
|
||||||
<string name="multiplayer_port_error">端口需为1-65535</string>
|
<string name="multiplayer_port_error">端口需为1-65535</string>
|
||||||
|
|
@ -435,23 +437,23 @@
|
||||||
<string name="custom_cpu_ticks_description">设置自定义的CPU时钟值。更高的值可能提高性能,但也可能导致游戏卡顿。建议范围为77-21000。</string>
|
<string name="custom_cpu_ticks_description">设置自定义的CPU时钟值。更高的值可能提高性能,但也可能导致游戏卡顿。建议范围为77-21000。</string>
|
||||||
<string name="cpu_ticks">时钟</string>
|
<string name="cpu_ticks">时钟</string>
|
||||||
<string name="memory_layout">内存布局</string>
|
<string name="memory_layout">内存布局</string>
|
||||||
<string name="memory_layout_description">(实验性) 更改模拟内存布局。此设置不会提高性能,但可能有助于通过模组使用高分辨率的游戏。不要在 RAM 为 8GB 或更少的手机上使用。</string>
|
<string name="memory_layout_description">(实验性) 更改模拟内存布局。此项设置并不会提升性能,但可能有助于游戏通过 mods 来利用高分辨率。请不要在内存不大于 8GB 的手机上使用。仅适用于 Dynamic(JIT)后端。</string>
|
||||||
|
|
||||||
<string name="generate">生成</string>
|
<string name="generate">生成</string>
|
||||||
|
|
||||||
<!-- Network settings strings -->
|
<!-- Network settings strings -->
|
||||||
<string name="web_token">网络令牌</string>
|
<string name="web_token">网络令牌</string>
|
||||||
<string name="web_token_description">用于创建公共房间的网络令牌。它是一个48个字符的字符串,仅包含小写字母a-z。</string>
|
<string name="web_token_description">用于创建公共游戏大厅的 web token。这是一个仅包含小写字母 a-z 的 48 位字符串。</string>
|
||||||
<string name="web_username">网络用户名</string>
|
<string name="web_username">网络用户名</string>
|
||||||
<string name="web_username_description">多人游戏房间中显示的用户名。必须为4-20个字符(仅字母数字、连字符、点号、下划线和空格)。</string>
|
<string name="web_username_description">在多人游戏大厅中显示的用户名。用户名必须为4至20个字符,且仅可包含字母、数字、连字符、点号、下划线和空格。</string>
|
||||||
<string name="network">网络</string>
|
<string name="network">网络</string>
|
||||||
|
|
||||||
<!-- Graphics settings strings -->
|
<!-- Graphics settings strings -->
|
||||||
<string name="renderer_resolution">分辨率 (掌机模式/主机模式)</string>
|
<string name="renderer_resolution">分辨率 (掌机模式/主机模式)</string>
|
||||||
<string name="renderer_vsync">垂直同步模式</string>
|
<string name="renderer_vsync">垂直同步模式</string>
|
||||||
<string name="renderer_scaling_filter">窗口滤镜</string>
|
<string name="renderer_scaling_filter">窗口滤镜</string>
|
||||||
<string name="fsr_sharpness">FSR 锐化度</string>
|
<string name="fsr_sharpness">FSR/SGSR 锐度</string>
|
||||||
<string name="fsr_sharpness_description">指定使用 FSR 时图像的锐化程度</string>
|
<string name="fsr_sharpness_description">确定在使用 FSR 或 SGSR 过滤器时的图像锐度</string>
|
||||||
<string name="renderer_anti_aliasing">抗锯齿方式</string>
|
<string name="renderer_anti_aliasing">抗锯齿方式</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -473,14 +475,18 @@
|
||||||
<string name="use_disk_shader_cache">磁盘着色器缓存</string>
|
<string name="use_disk_shader_cache">磁盘着色器缓存</string>
|
||||||
<string name="use_disk_shader_cache_description">将生成的着色器缓存于磁盘中并进行读取,以减少卡顿。</string>
|
<string name="use_disk_shader_cache_description">将生成的着色器缓存于磁盘中并进行读取,以减少卡顿。</string>
|
||||||
<string name="renderer_force_max_clock">强制最大时钟 (仅限 Adreno)</string>
|
<string name="renderer_force_max_clock">强制最大时钟 (仅限 Adreno)</string>
|
||||||
<string name="renderer_force_max_clock_description">强制 GPU 以最大时钟运行 (仍被温控限制)。</string>
|
<string name="renderer_force_max_clock_description">强制 GPU 以最大时钟运行 (温控依然生效)。</string>
|
||||||
<string name="renderer_asynchronous_gpu_emulation">GPU 异步模拟</string>
|
<string name="renderer_asynchronous_gpu_emulation">GPU 异步模拟</string>
|
||||||
|
<string name="renderer_asynchronous_gpu_emulation_description">此技巧可通过异步运行 GPU 模拟来提升性能,但在执行与时序相关的操作时,可能引入图形问题和增加崩溃概率。</string>
|
||||||
<string name="renderer_async_presentation">异步呈现</string>
|
<string name="renderer_async_presentation">异步呈现</string>
|
||||||
|
<string name="renderer_async_presentation_description">此技巧通过将图形呈现移至独立的 CPU 线程来提升性能,但可能会引入图形显示问题。</string>
|
||||||
<string name="renderer_reactive_flushing">启用反应性刷新</string>
|
<string name="renderer_reactive_flushing">启用反应性刷新</string>
|
||||||
<string name="renderer_reactive_flushing_description">通过牺牲性能来提高某些游戏的渲染精度。</string>
|
<string name="renderer_reactive_flushing_description">通过牺牲性能来提高某些游戏的渲染精度。</string>
|
||||||
<string name="enable_buffer_history">启用缓冲区历史</string>
|
<string name="enable_buffer_history">启用缓冲区历史</string>
|
||||||
<string name="enable_buffer_history_description">启用对先前缓冲区状态的访问。此选项可在某些游戏中提升渲染质量并保持性能的一致性。</string>
|
<string name="enable_buffer_history_description">启用对先前缓冲区状态的访问。此选项可在某些游戏中提升渲染质量并保持性能的一致性。</string>
|
||||||
<string name="use_optimized_vertex_buffers">优化顶点缓冲区</string>
|
<string name="use_optimized_vertex_buffers">优化顶点缓冲区</string>
|
||||||
|
<string name="use_optimized_vertex_buffers_description">启用经过优化的顶点缓冲区绑定以提升性能。需要 Mesa 26.0 及以上版本的 Turnip 或 QCOM 驱动程序。若使用较旧版本的 Turnip 驱动 (25.3 及以下版本) 则会导致崩溃。</string>
|
||||||
|
|
||||||
<string name="hacks">Hacks</string>
|
<string name="hacks">Hacks</string>
|
||||||
|
|
||||||
<string name="fast_gpu_time">GPU 超频频率</string>
|
<string name="fast_gpu_time">GPU 超频频率</string>
|
||||||
|
|
@ -490,7 +496,9 @@
|
||||||
<string name="fix_bloom_effects">修复 Bloom 效果</string>
|
<string name="fix_bloom_effects">修复 Bloom 效果</string>
|
||||||
<string name="fix_bloom_effects_description">减少《塞尔达传说:智慧的再现》(Adreno A6XX - A7XX/ Turnip)中的 bloom 模糊,并移除《Burnout》中的 bloom 效果。警告:可能会导致在其他游戏中出现图形异常。</string>
|
<string name="fix_bloom_effects_description">减少《塞尔达传说:智慧的再现》(Adreno A6XX - A7XX/ Turnip)中的 bloom 模糊,并移除《Burnout》中的 bloom 效果。警告:可能会导致在其他游戏中出现图形异常。</string>
|
||||||
<string name="emulate_bgr565">模拟 BGR565</string>
|
<string name="emulate_bgr565">模拟 BGR565</string>
|
||||||
<string name="emulate_bgr565_description">修复了游戏中的颜色反转以及出现的异常画面瑕疵或奇怪阴影问题</string>
|
<string name="emulate_bgr565_description">修复游戏中的颜色反转或是异常的画面瑕疵或阴影问题</string>
|
||||||
|
<string name="rescale_hack">启用旧版缩放处理</string>
|
||||||
|
<string name="rescale_hack_description">启用通过使用快速缩放路径,来为游戏提供缩放配置处理的传统处理方式</string>
|
||||||
<string name="renderer_asynchronous_shaders">使用异步着色器</string>
|
<string name="renderer_asynchronous_shaders">使用异步着色器</string>
|
||||||
<string name="renderer_asynchronous_shaders_description">异步编译着色器。这可能会减少卡顿,但也可能会导致图形错误。</string>
|
<string name="renderer_asynchronous_shaders_description">异步编译着色器。这可能会减少卡顿,但也可能会导致图形错误。</string>
|
||||||
<string name="gpu_unswizzle_settings">GPU 还原设置</string>
|
<string name="gpu_unswizzle_settings">GPU 还原设置</string>
|
||||||
|
|
@ -500,17 +508,19 @@
|
||||||
<string name="gpu_unswizzle_texture_size">GPU 还原最大纹理尺寸</string>
|
<string name="gpu_unswizzle_texture_size">GPU 还原最大纹理尺寸</string>
|
||||||
<string name="gpu_unswizzle_texture_size_description">设置基于 GPU 的纹理还原的最大尺寸(单位:MiB)。\n虽然 GPU 在处理中型和大型纹理时速度更快,但对于非常小的纹理,CPU 的效率可能更高。\n调整此设置,以便在 GPU 加速和 CPU 开销之间找到最佳平衡点。</string>
|
<string name="gpu_unswizzle_texture_size_description">设置基于 GPU 的纹理还原的最大尺寸(单位:MiB)。\n虽然 GPU 在处理中型和大型纹理时速度更快,但对于非常小的纹理,CPU 的效率可能更高。\n调整此设置,以便在 GPU 加速和 CPU 开销之间找到最佳平衡点。</string>
|
||||||
<string name="gpu_unswizzle_stream_size">GPU 还原流大小</string>
|
<string name="gpu_unswizzle_stream_size">GPU 还原流大小</string>
|
||||||
<string name="gpu_unswizzle_stream_size_description">设置每帧还原大型纹理的数据限制。较高的数值可以加快纹理加载速度,但代价是增加帧延迟(影响响应速度/平滑度);较低的数值可以减少 GPU 开销,但可能会导致明显的纹理突然出现(Pop-in)现象。</string>
|
<string name="gpu_unswizzle_stream_size_description">设置用于 unswizzling 大型纹理时的每帧数据限制。较高的数值可以加快纹理的加载速度,但会增加帧延迟。而较低的数值可以降低 GPU 的开销,但可能会导致可见的纹理 闪现。</string>
|
||||||
<string name="gpu_unswizzle_chunk_size">GPU 还原块大小</string>
|
<string name="gpu_unswizzle_chunk_size">GPU 还原块大小</string>
|
||||||
<string name="gpu_unswizzle_chunk_size_description">定义了 3D 纹理在单个批次(Batch)中处理的深度切片(Depth Slices)数量。增加此数值可以提升强力 GPU 的吞吐效率,但在性能较弱的硬件上可能会引起卡顿或驱动程序超时(Driver Timeouts)。</string>
|
<string name="gpu_unswizzle_chunk_size_description">定义了 3D 纹理每批次处理的深度切片数量。增加此数值可在高性能 GPU 上提升吞吐效率,但在性能较弱的硬件上可能会导致卡顿或驱动超时。</string>
|
||||||
<string name="gpu_unswizzle_default_button">默认</string>
|
<string name="gpu_unswizzle_default_button">默认</string>
|
||||||
|
|
||||||
|
|
||||||
<string name="extensions">扩展</string>
|
<string name="extensions">扩展</string>
|
||||||
|
|
||||||
<string name="dyna_state">扩展动态状态</string>
|
<string name="dyna_state">扩展动态状态</string>
|
||||||
|
<string name="dyna_state_description">控制扩展动态状态 (EDS) 可使用的功能数目。较高的数值将允许根据驱动程序支持的动态状态来减少管线编译的次数。</string>
|
||||||
<string name="disabled">已禁用</string>
|
<string name="disabled">已禁用</string>
|
||||||
<string name="vertex_input_dynamic_state">顶点输入动态状态</string>
|
<string name="vertex_input_dynamic_state">顶点输入动态状态</string>
|
||||||
|
<string name="vertex_input_dynamic_state_description">启用此功能可实现更灵活的顶点输入处理,可能减少顶点/缓冲区的管线编译时间。</string>
|
||||||
<string name="sample_shading_fraction">采样着色</string>
|
<string name="sample_shading_fraction">采样着色</string>
|
||||||
<string name="sample_shading_fraction_description">允许片段着色器在多采样片段中每个样本执行一次,而不是每个片段执行一次。以提高性能为代价改善图形质量。</string>
|
<string name="sample_shading_fraction_description">允许片段着色器在多采样片段中每个样本执行一次,而不是每个片段执行一次。以提高性能为代价改善图形质量。</string>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -437,8 +437,6 @@
|
||||||
<string name="renderer_resolution">解析度 (手提/底座)</string>
|
<string name="renderer_resolution">解析度 (手提/底座)</string>
|
||||||
<string name="renderer_vsync">垂直同步</string>
|
<string name="renderer_vsync">垂直同步</string>
|
||||||
<string name="renderer_scaling_filter">視窗適應過濾器</string>
|
<string name="renderer_scaling_filter">視窗適應過濾器</string>
|
||||||
<string name="fsr_sharpness">FSR 銳化度</string>
|
|
||||||
<string name="fsr_sharpness_description">使用 FSR 時圖片的銳化程度</string>
|
|
||||||
<string name="renderer_anti_aliasing">抗鋸齒</string>
|
<string name="renderer_anti_aliasing">抗鋸齒</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?><resources><color name='ic_launcher_background'>#ffd700</color></resources>
|
<?xml version='1.0' encoding='utf-8'?><resources><color name='ic_launcher_background'>#1F143C</color></resources>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||||
|
|
@ -177,10 +177,8 @@ void SinkStream::ProcessAudioOutAndRender(std::span<s16> output_buffer, std::siz
|
||||||
queued_buffers.store(0);
|
queued_buffers.store(0);
|
||||||
release_cv.notify_one();
|
release_cv.notify_one();
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr std::array<s16, 6> silence{};
|
|
||||||
for (size_t i = 0; i < num_frames; i++)
|
for (size_t i = 0; i < num_frames; i++)
|
||||||
std::memcpy(&output_buffer[i * frame_size], silence.data(), frame_size_bytes);
|
std::memset(&output_buffer[i * frame_size], 0, frame_size_bytes);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,12 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2005-2014 Daniel James
|
// SPDX-FileCopyrightText: 2005-2014 Daniel James
|
||||||
// SPDX-FileCopyrightText: 2016 Austin Appleby
|
// SPDX-FileCopyrightText: 2016 Austin Appleby
|
||||||
// SPDX-License-Identifier: BSL-1.0
|
// SPDX-License-Identifier: BSL-1.0
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <climits>
|
#include <climits>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
|
||||||
|
|
@ -62,16 +62,20 @@ std::vector<Asset> Release::GetPlatformAssets() const {
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#ifdef ARCHITECTURE_x86_64
|
#ifdef ARCHITECTURE_x86_64
|
||||||
find_asset("Standard", {"amd64-msvc-standard.exe", "amd64-msvc-standard.zip", "mingw-amd64-gcc-standard.exe", "mingw-amd64-gcc-standard.zip"});
|
#ifdef _MSC_VER
|
||||||
find_asset("PGO", {"mingw-amd64-clang-pgo.exe", "mingw-amd64-clang-pgo.zip"});
|
find_asset("Standard", {"amd64-msvc-standard.exe", "amd64-msvc-standard.zip"});
|
||||||
|
#else // _MSC_VER
|
||||||
|
find_asset("Standard", {BUILD_ID "-gcc-standard.exe", BUILD_ID "-gcc-standard.zip"});
|
||||||
|
find_asset("PGO", {BUILD_ID "-clang-pgo.exe", BUILD_ID "-clang-pgo.zip"});
|
||||||
|
#endif // _MSC_VER
|
||||||
#elif defined(ARCHITECTURE_arm64)
|
#elif defined(ARCHITECTURE_arm64)
|
||||||
find_asset("Standard", {"mingw-arm64-clang-standard.exe", "mingw-arm64-clang-standard.zip"});
|
find_asset("Standard", {"arm64-clang-standard.exe", "arm64-clang-standard.zip"});
|
||||||
find_asset("PGO", {"mingw-arm64-clang-pgo.exe", "mingw-arm64-clang-pgo.zip"});
|
find_asset("PGO", {"arm64-clang-pgo.exe", "arm64-clang-pgo.zip"});
|
||||||
#endif
|
#endif // ARCHITECTURE_arm64
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
#ifdef ARCHITECTURE_arm64
|
#ifdef ARCHITECTURE_arm64
|
||||||
find_asset("Standard", {".dmg", ".tar.gz"});
|
find_asset("Standard", {".dmg", ".tar.gz"});
|
||||||
#endif
|
#endif // ARCHITECTURE_arm64
|
||||||
#elif defined(__ANDROID__)
|
#elif defined(__ANDROID__)
|
||||||
#ifdef ARCHITECTURE_x86_64
|
#ifdef ARCHITECTURE_x86_64
|
||||||
find_asset("Standard", {"chromeos.apk"});
|
find_asset("Standard", {"chromeos.apk"});
|
||||||
|
|
@ -82,9 +86,9 @@ std::vector<Asset> Release::GetPlatformAssets() const {
|
||||||
find_asset("Standard", {"optimized.apk"});
|
find_asset("Standard", {"optimized.apk"});
|
||||||
#else
|
#else
|
||||||
find_asset("Standard", {"standard.apk"});
|
find_asset("Standard", {"standard.apk"});
|
||||||
#endif
|
#endif // GENSHIN_SPOOF
|
||||||
#endif
|
#endif // ARCHITECTURE_arm64
|
||||||
#endif
|
#endif // __APPLE__
|
||||||
return found_assets;
|
return found_assets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
|
@ -28,9 +31,118 @@ enum class Type {
|
||||||
/// Protocol values for sockets
|
/// Protocol values for sockets
|
||||||
enum class Protocol : u8 {
|
enum class Protocol : u8 {
|
||||||
Unspecified, ///< Represents 0, usable in various places
|
Unspecified, ///< Represents 0, usable in various places
|
||||||
|
IP,
|
||||||
ICMP,
|
ICMP,
|
||||||
TCP,
|
TCP,
|
||||||
UDP,
|
UDP,
|
||||||
|
IPV6,
|
||||||
|
RAW,
|
||||||
|
IGMP,
|
||||||
|
GGP,
|
||||||
|
IPV4,
|
||||||
|
ST,
|
||||||
|
EGP,
|
||||||
|
PIGP,
|
||||||
|
RCCMON,
|
||||||
|
NVPII,
|
||||||
|
PUP,
|
||||||
|
ARGUS,
|
||||||
|
EMCON,
|
||||||
|
XNET,
|
||||||
|
CHAOS,
|
||||||
|
MUX,
|
||||||
|
MEAS,
|
||||||
|
HMP,
|
||||||
|
PRM,
|
||||||
|
IDP,
|
||||||
|
TRUNK1,
|
||||||
|
TRUNK2,
|
||||||
|
LEAF1,
|
||||||
|
LEAF2,
|
||||||
|
RDP,
|
||||||
|
IRTP,
|
||||||
|
TP,
|
||||||
|
BLT,
|
||||||
|
NSP,
|
||||||
|
INP,
|
||||||
|
DCCP,
|
||||||
|
//TODO: 3PC,
|
||||||
|
IDPR,
|
||||||
|
XTP,
|
||||||
|
DDP,
|
||||||
|
CMTP,
|
||||||
|
TPXX,
|
||||||
|
IL,
|
||||||
|
SDRP,
|
||||||
|
ROUTING,
|
||||||
|
FRAGMENT,
|
||||||
|
IDRP,
|
||||||
|
RSVP,
|
||||||
|
GRE,
|
||||||
|
MHRP,
|
||||||
|
BHA,
|
||||||
|
ESP,
|
||||||
|
AH,
|
||||||
|
INLSP,
|
||||||
|
SWIPE,
|
||||||
|
NHRP,
|
||||||
|
MOBILE,
|
||||||
|
TLSP,
|
||||||
|
SKIP,
|
||||||
|
ICMPV6,
|
||||||
|
NONE,
|
||||||
|
DSTOPTS,
|
||||||
|
AHIP,
|
||||||
|
CFTP,
|
||||||
|
HELLO,
|
||||||
|
SATEXPAK,
|
||||||
|
KRYPTOLAN,
|
||||||
|
RVD,
|
||||||
|
IPPC,
|
||||||
|
ADFS,
|
||||||
|
SATMON,
|
||||||
|
VISA,
|
||||||
|
IPCV,
|
||||||
|
CPNX,
|
||||||
|
CPHB,
|
||||||
|
WSN,
|
||||||
|
PVP,
|
||||||
|
BRSATMON,
|
||||||
|
ND,
|
||||||
|
WBMON,
|
||||||
|
WBEXPAK,
|
||||||
|
EON,
|
||||||
|
VMTP,
|
||||||
|
SVMTP,
|
||||||
|
VINES,
|
||||||
|
TTP,
|
||||||
|
IGP,
|
||||||
|
DGP,
|
||||||
|
TCF,
|
||||||
|
IGRP,
|
||||||
|
OSPFIGP,
|
||||||
|
SRPC,
|
||||||
|
LARP,
|
||||||
|
MTP,
|
||||||
|
AX25,
|
||||||
|
IPEIP,
|
||||||
|
MICP,
|
||||||
|
SCCSP,
|
||||||
|
ETHERIP,
|
||||||
|
ENCAP,
|
||||||
|
APES,
|
||||||
|
GMTP,
|
||||||
|
IPCOMP,
|
||||||
|
SCTP,
|
||||||
|
MH,
|
||||||
|
UDPLITE,
|
||||||
|
HIP,
|
||||||
|
SHIM6,
|
||||||
|
PIM,
|
||||||
|
CARP,
|
||||||
|
PGM,
|
||||||
|
MPLS,
|
||||||
|
PFSYNC
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Shutdown mode
|
/// Shutdown mode
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,8 @@ public:
|
||||||
VirtualBuffer& operator=(const VirtualBuffer&) = delete;
|
VirtualBuffer& operator=(const VirtualBuffer&) = delete;
|
||||||
|
|
||||||
VirtualBuffer(VirtualBuffer&& other) noexcept
|
VirtualBuffer(VirtualBuffer&& other) noexcept
|
||||||
: alloc_size{std::exchange(other.alloc_size, 0)}, base_ptr{std::exchange(other.base_ptr), nullptr}
|
: alloc_size{std::exchange(other.alloc_size, 0)}
|
||||||
|
, base_ptr{std::exchange(other.base_ptr, nullptr)}
|
||||||
{}
|
{}
|
||||||
|
|
||||||
VirtualBuffer& operator=(VirtualBuffer&& other) noexcept {
|
VirtualBuffer& operator=(VirtualBuffer&& other) noexcept {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include <dynarmic/interface/halt_reason.h>
|
#include <dynarmic/interface/halt_reason.h>
|
||||||
|
|
||||||
#include "core/arm/arm_interface.h"
|
#include "core/arm/arm_interface.h"
|
||||||
|
|
|
||||||
|
|
@ -388,7 +388,7 @@ void ArmNce::SignalInterrupt(Kernel::KThread* thread) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::size_t CACHE_PAGE_SIZE = 4096;
|
[[maybe_unused]] const std::size_t CACHE_PAGE_SIZE = 4096;
|
||||||
|
|
||||||
void ArmNce::ClearInstructionCache() {
|
void ArmNce::ClearInstructionCache() {
|
||||||
#ifdef __aarch64__
|
#ifdef __aarch64__
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 Skyline Team and Contributors
|
// SPDX-FileCopyrightText: Copyright 2020 Skyline Team and Contributors
|
||||||
// SPDX-License-Identifier: MPL-2.0
|
// SPDX-License-Identifier: MPL-2.0
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "common/bit_field.h"
|
#include "common/bit_field.h"
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@ namespace Core {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
// Prefetch tuning parameters
|
// Prefetch tuning parameters
|
||||||
constexpr size_t CACHE_LINE_SIZE = 64;
|
[[maybe_unused]] constexpr size_t CACHE_LINE_SIZE = 64;
|
||||||
constexpr size_t PREFETCH_STRIDE = 128; // 2 cache lines ahead
|
[[maybe_unused]] constexpr size_t PREFETCH_STRIDE = 128; // 2 cache lines ahead
|
||||||
constexpr size_t SIMD_PREFETCH_THRESHOLD = 32; // Bytes
|
[[maybe_unused]] constexpr size_t SIMD_PREFETCH_THRESHOLD = 32; // Bytes
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
template <u32 BitSize>
|
template <u32 BitSize>
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace FS = Common::FS;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
constexpr size_t MaxOpenFiles = 512;
|
constexpr size_t MaxOpenFiles = 8192;
|
||||||
|
|
||||||
constexpr FS::FileAccessMode ModeFlagsToFileAccessMode(OpenMode mode) {
|
constexpr FS::FileAccessMode ModeFlagsToFileAccessMode(OpenMode mode) {
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "common/typed_address.h"
|
#include "common/typed_address.h"
|
||||||
|
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
|
@ -372,6 +375,10 @@ bool LifecycleManager::UpdateRequestedFocusState() {
|
||||||
// Mark the focus state as ready for update.
|
// Mark the focus state as ready for update.
|
||||||
m_requested_focus_state = new_state;
|
m_requested_focus_state = new_state;
|
||||||
|
|
||||||
|
if (m_is_application) {
|
||||||
|
m_has_focus_state_changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
// We changed the focus state.
|
// We changed the focus state.
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -612,6 +612,9 @@ Status BufferQueueProducer::Query(NativeWindow what, s32* out_value) {
|
||||||
case NativeWindow::ConsumerUsageBits:
|
case NativeWindow::ConsumerUsageBits:
|
||||||
value = core->consumer_usage_bit;
|
value = core->consumer_usage_bit;
|
||||||
break;
|
break;
|
||||||
|
case NativeWindow::DefaultDataSpace:
|
||||||
|
value = core->GetMaxBufferCountLocked(false);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT(false);
|
ASSERT(false);
|
||||||
return Status::BadValue;
|
return Status::BadValue;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "core/hle/service/cmif_types.h"
|
#include "core/hle/service/cmif_types.h"
|
||||||
#include "core/hle/service/service.h"
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include <ankerl/unordered_dense.h>
|
#include <ankerl/unordered_dense.h>
|
||||||
|
|
||||||
#include "common/uuid.h"
|
#include "common/uuid.h"
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "core/hle/service/cmif_types.h"
|
#include "core/hle/service/cmif_types.h"
|
||||||
#include "core/hle/service/service.h"
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "core/hle/service/cmif_types.h"
|
#include "core/hle/service/cmif_types.h"
|
||||||
#include "core/hle/service/ns/ns_types.h"
|
#include "core/hle/service/ns/ns_types.h"
|
||||||
#include "core/hle/service/service.h"
|
#include "core/hle/service/service.h"
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
|
|
||||||
#include "common/uuid.h"
|
#include "common/uuid.h"
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "core/hle/service/cmif_types.h"
|
#include "core/hle/service/cmif_types.h"
|
||||||
#include "core/hle/service/service.h"
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "core/hle/service/cmif_types.h"
|
#include "core/hle/service/cmif_types.h"
|
||||||
#include "core/hle/service/service.h"
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "core/hle/result.h"
|
#include "core/hle/result.h"
|
||||||
|
|
||||||
namespace Service::RO {
|
namespace Service::RO {
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
#include "common/common_funcs.h"
|
#include "common/common_funcs.h"
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
|
|
|
||||||
|
|
@ -629,7 +629,7 @@ Errno BSD::BindImpl(s32 fd, std::span<const u8> addr) {
|
||||||
if (!IsFileDescriptorValid(fd)) {
|
if (!IsFileDescriptorValid(fd)) {
|
||||||
return Errno::BADF;
|
return Errno::BADF;
|
||||||
}
|
}
|
||||||
ASSERT(addr.size() == sizeof(SockAddrIn));
|
ASSERT(addr.size() >= 16);
|
||||||
auto addr_in = GetValue<SockAddrIn>(addr);
|
auto addr_in = GetValue<SockAddrIn>(addr);
|
||||||
|
|
||||||
return Translate(file_descriptors[fd]->socket->Bind(Translate(addr_in)));
|
return Translate(file_descriptors[fd]->socket->Bind(Translate(addr_in)));
|
||||||
|
|
@ -640,7 +640,7 @@ Errno BSD::ConnectImpl(s32 fd, std::span<const u8> addr) {
|
||||||
return Errno::BADF;
|
return Errno::BADF;
|
||||||
}
|
}
|
||||||
|
|
||||||
UNIMPLEMENTED_IF(addr.size() != sizeof(SockAddrIn));
|
ASSERT(addr.size() >= 16);
|
||||||
auto addr_in = GetValue<SockAddrIn>(addr);
|
auto addr_in = GetValue<SockAddrIn>(addr);
|
||||||
|
|
||||||
const Errno result = Translate(file_descriptors[fd]->socket->Connect(Translate(addr_in)));
|
const Errno result = Translate(file_descriptors[fd]->socket->Connect(Translate(addr_in)));
|
||||||
|
|
@ -874,7 +874,7 @@ std::pair<s32, Errno> BSD::RecvFromImpl(s32 fd, u32 flags, std::vector<u8>& mess
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
addr.clear();
|
addr.clear();
|
||||||
} else {
|
} else {
|
||||||
ASSERT(addr.size() == sizeof(SockAddrIn));
|
ASSERT(addr.size() >= 16);
|
||||||
const SockAddrIn result = Translate(addr_in);
|
const SockAddrIn result = Translate(addr_in);
|
||||||
PutValue(addr, result);
|
PutValue(addr, result);
|
||||||
}
|
}
|
||||||
|
|
@ -899,7 +899,7 @@ std::pair<s32, Errno> BSD::SendToImpl(s32 fd, u32 flags, std::span<const u8> mes
|
||||||
Network::SockAddrIn addr_in;
|
Network::SockAddrIn addr_in;
|
||||||
Network::SockAddrIn* p_addr_in = nullptr;
|
Network::SockAddrIn* p_addr_in = nullptr;
|
||||||
if (!addr.empty()) {
|
if (!addr.empty()) {
|
||||||
ASSERT(addr.size() == sizeof(SockAddrIn));
|
ASSERT(addr.size() >= 16);
|
||||||
auto guest_addr_in = GetValue<SockAddrIn>(addr);
|
auto guest_addr_in = GetValue<SockAddrIn>(addr);
|
||||||
addr_in = Translate(guest_addr_in);
|
addr_in = Translate(guest_addr_in);
|
||||||
p_addr_in = &addr_in;
|
p_addr_in = &addr_in;
|
||||||
|
|
|
||||||
|
|
@ -55,11 +55,43 @@ enum class NetDbError : s32 {
|
||||||
|
|
||||||
static const constexpr std::array blockedDomains = {
|
static const constexpr std::array blockedDomains = {
|
||||||
"srv.nintendo.net", //obvious
|
"srv.nintendo.net", //obvious
|
||||||
|
"nintendo.es",
|
||||||
|
"nintendowifi.net",
|
||||||
|
"nintendo-europe.com",
|
||||||
|
"nintendo.com.hk",
|
||||||
|
"nintendo.com.au",
|
||||||
|
"nintendo.co.kr",
|
||||||
|
"nintendo.co.uk",
|
||||||
|
"nintendo.co.jp",
|
||||||
|
"nintendo.co.nz",
|
||||||
|
"nintendo.co.za",
|
||||||
|
"nintendo.com",
|
||||||
|
"nintendo.jp",
|
||||||
|
"nintendo.tw",
|
||||||
|
"nintendo.at",
|
||||||
|
"nintendo.be",
|
||||||
|
"nintendo.dk",
|
||||||
|
"nintendo.de",
|
||||||
|
"nintendo.fi",
|
||||||
|
"nintendo.fr",
|
||||||
|
"nintendo.gr",
|
||||||
|
"nintendo.hu",
|
||||||
|
"nintendo.it",
|
||||||
|
"nintendo.nl",
|
||||||
|
"nintendo.no",
|
||||||
|
"nintendo.pt",
|
||||||
|
"nintendo.ru",
|
||||||
|
"nintendo.ch",
|
||||||
|
"nintendo.se",
|
||||||
|
"nintendoswitch.com.cn",
|
||||||
|
"nintendoswitch.com",
|
||||||
|
"sun.hac.lp1.d4c.nintendo.net",
|
||||||
"phoenix-api.wbagora.com", //hogwarts legacy
|
"phoenix-api.wbagora.com", //hogwarts legacy
|
||||||
"battle.net",
|
"battle.net",
|
||||||
"microsoft.com", //minecraft dungeons + other games
|
"microsoft.com", //minecraft dungeons + other games
|
||||||
"mojang.com",
|
"mojang.com",
|
||||||
"xboxlive.com",
|
"xboxlive.com",
|
||||||
|
"api.epicgames.dev", // marvel cosmic invasion +?
|
||||||
"minecraftservices.com"
|
"minecraftservices.com"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -238,7 +270,7 @@ static std::vector<u8> SerializeAddrInfo(const std::vector<Network::AddrInfo>& v
|
||||||
Append<u32_be>(data, static_cast<u32>(Translate(addrinfo.family))); // ai_family
|
Append<u32_be>(data, static_cast<u32>(Translate(addrinfo.family))); // ai_family
|
||||||
Append<u32_be>(data, static_cast<u32>(Translate(addrinfo.socket_type))); // ai_socktype
|
Append<u32_be>(data, static_cast<u32>(Translate(addrinfo.socket_type))); // ai_socktype
|
||||||
Append<u32_be>(data, static_cast<u32>(Translate(addrinfo.protocol))); // ai_protocol
|
Append<u32_be>(data, static_cast<u32>(Translate(addrinfo.protocol))); // ai_protocol
|
||||||
Append<u32_be>(data, sizeof(SockAddrIn)); // ai_addrlen
|
Append<u32_be>(data, 16); // ai_addrlen
|
||||||
// ^ *not* sizeof(SerializedSockAddrIn), not that it matters since they're the same size
|
// ^ *not* sizeof(SerializedSockAddrIn), not that it matters since they're the same size
|
||||||
|
|
||||||
// ai_addr:
|
// ai_addr:
|
||||||
|
|
|
||||||
|
|
@ -65,10 +65,121 @@ enum class Type : u32 {
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class Protocol : u32 {
|
enum class Protocol : u32 {
|
||||||
Unspecified = 0,
|
IP = 0,
|
||||||
ICMP = 1,
|
ICMP = 1,
|
||||||
TCP = 6,
|
TCP = 6,
|
||||||
UDP = 17,
|
UDP = 17,
|
||||||
|
//
|
||||||
|
IPV6 = 41,
|
||||||
|
RAW = 255,
|
||||||
|
//
|
||||||
|
HOPOPTS = 0,
|
||||||
|
IGMP = 2,
|
||||||
|
GGP = 3,
|
||||||
|
IPV4 = 4,
|
||||||
|
ST = 7,
|
||||||
|
EGP = 8,
|
||||||
|
PIGP = 9,
|
||||||
|
RCCMON = 10,
|
||||||
|
NVPII = 11,
|
||||||
|
PUP = 12,
|
||||||
|
ARGUS = 13,
|
||||||
|
EMCON = 14,
|
||||||
|
XNET = 15,
|
||||||
|
CHAOS = 16,
|
||||||
|
MUX = 18,
|
||||||
|
MEAS = 19,
|
||||||
|
HMP = 20,
|
||||||
|
PRM = 21,
|
||||||
|
IDP = 22,
|
||||||
|
TRUNK1 = 23,
|
||||||
|
TRUNK2 = 24,
|
||||||
|
LEAF1 = 25,
|
||||||
|
LEAF2 = 26,
|
||||||
|
RDP = 27,
|
||||||
|
IRTP = 28,
|
||||||
|
TP = 29,
|
||||||
|
BLT = 30,
|
||||||
|
NSP = 31,
|
||||||
|
INP = 32,
|
||||||
|
DCCP = 33,
|
||||||
|
//3PC = 34,
|
||||||
|
IDPR = 35,
|
||||||
|
XTP = 36,
|
||||||
|
DDP = 37,
|
||||||
|
CMTP = 38,
|
||||||
|
TPXX = 39,
|
||||||
|
IL = 40,
|
||||||
|
SDRP = 42,
|
||||||
|
ROUTING = 43,
|
||||||
|
FRAGMENT = 44,
|
||||||
|
IDRP = 45,
|
||||||
|
RSVP = 46,
|
||||||
|
GRE = 47,
|
||||||
|
MHRP = 48,
|
||||||
|
BHA = 49,
|
||||||
|
ESP = 50,
|
||||||
|
AH = 51,
|
||||||
|
INLSP = 52,
|
||||||
|
SWIPE = 53,
|
||||||
|
NHRP = 54,
|
||||||
|
MOBILE = 55,
|
||||||
|
TLSP = 56,
|
||||||
|
SKIP = 57,
|
||||||
|
ICMPV6 = 58,
|
||||||
|
NONE = 59,
|
||||||
|
DSTOPTS = 60,
|
||||||
|
AHIP = 61,
|
||||||
|
CFTP = 62,
|
||||||
|
HELLO = 63,
|
||||||
|
SATEXPAK = 64,
|
||||||
|
KRYPTOLAN = 65,
|
||||||
|
RVD = 66,
|
||||||
|
IPPC = 67,
|
||||||
|
ADFS = 68,
|
||||||
|
SATMON = 69,
|
||||||
|
VISA = 70,
|
||||||
|
IPCV = 71,
|
||||||
|
CPNX = 72,
|
||||||
|
CPHB = 73,
|
||||||
|
WSN = 74,
|
||||||
|
PVP = 75,
|
||||||
|
BRSATMON = 76,
|
||||||
|
ND = 77,
|
||||||
|
WBMON = 78,
|
||||||
|
WBEXPAK = 79,
|
||||||
|
EON = 80,
|
||||||
|
VMTP = 81,
|
||||||
|
SVMTP = 82,
|
||||||
|
VINES = 83,
|
||||||
|
TTP = 84,
|
||||||
|
IGP = 85,
|
||||||
|
DGP = 86,
|
||||||
|
TCF = 87,
|
||||||
|
IGRP = 88,
|
||||||
|
OSPFIGP = 89,
|
||||||
|
SRPC = 90,
|
||||||
|
LARP = 91,
|
||||||
|
MTP = 92,
|
||||||
|
AX25 = 93,
|
||||||
|
IPEIP = 94,
|
||||||
|
MICP = 95,
|
||||||
|
SCCSP = 96,
|
||||||
|
ETHERIP = 97,
|
||||||
|
ENCAP = 98,
|
||||||
|
APES = 99,
|
||||||
|
GMTP = 100,
|
||||||
|
IPCOMP = 108,
|
||||||
|
SCTP = 132,
|
||||||
|
MH = 135,
|
||||||
|
UDPLITE = 136,
|
||||||
|
HIP = 139,
|
||||||
|
SHIM6 = 140,
|
||||||
|
PIM = 103,
|
||||||
|
CARP = 112,
|
||||||
|
PGM = 113,
|
||||||
|
MPLS = 137,
|
||||||
|
PFSYNC = 240,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class SocketLevel : u32 {
|
enum class SocketLevel : u32 {
|
||||||
|
|
@ -110,8 +221,9 @@ struct SockAddrIn {
|
||||||
u8 family;
|
u8 family;
|
||||||
u16 portno;
|
u16 portno;
|
||||||
std::array<u8, 4> ip;
|
std::array<u8, 4> ip;
|
||||||
std::array<u8, 8> zeroes;
|
std::array<u8, 248> zeroes;
|
||||||
};
|
};
|
||||||
|
static_assert(sizeof(SockAddrIn) == 0x100);
|
||||||
|
|
||||||
enum class PollEvents : u16 {
|
enum class PollEvents : u16 {
|
||||||
// Using Pascal case because IN is a macro on Windows.
|
// Using Pascal case because IN is a macro on Windows.
|
||||||
|
|
|
||||||
|
|
@ -175,49 +175,151 @@ Network::Type Translate(Type type) {
|
||||||
|
|
||||||
Type Translate(Network::Type type) {
|
Type Translate(Network::Type type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case Network::Type::Unspecified:
|
case Network::Type::Unspecified: return Type::Unspecified;
|
||||||
return Type::Unspecified;
|
case Network::Type::STREAM: return Type::STREAM;
|
||||||
case Network::Type::STREAM:
|
case Network::Type::DGRAM: return Type::DGRAM;
|
||||||
return Type::STREAM;
|
case Network::Type::RAW: return Type::RAW;
|
||||||
case Network::Type::DGRAM:
|
case Network::Type::SEQPACKET: return Type::SEQPACKET;
|
||||||
return Type::DGRAM;
|
|
||||||
case Network::Type::RAW:
|
|
||||||
return Type::RAW;
|
|
||||||
case Network::Type::SEQPACKET:
|
|
||||||
return Type::SEQPACKET;
|
|
||||||
default:
|
default:
|
||||||
UNIMPLEMENTED_MSG("Unimplemented type={}", type);
|
UNIMPLEMENTED_MSG("Unimplemented type={}", type);
|
||||||
return Type{};
|
return Type{};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Network::Protocol Translate(Protocol protocol) {
|
#define NETWORK_PROTOCOL_TRANSLATE_LIST \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ICMP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TCP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(UDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPV6) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RAW) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IGMP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(GGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPV4) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ST) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(EGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PIGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RCCMON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(NVPII) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PUP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ARGUS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(EMCON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(XNET) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CHAOS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MUX) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MEAS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(HMP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PRM) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TRUNK1) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TRUNK2) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(LEAF1) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(LEAF2) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IRTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(BLT) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(NSP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(INP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(DCCP) \
|
||||||
|
/*NETWORK_PROTOCOL_TRANSLATE_ELEM(3PC)*/ \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IDPR) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(XTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(DDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CMTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TPXX) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IL) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SDRP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ROUTING) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(FRAGMENT) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IDRP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RSVP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(GRE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MHRP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(BHA) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ESP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(AH) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(INLSP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SWIPE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(NHRP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MOBILE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TLSP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SKIP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ICMPV6) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(NONE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(DSTOPTS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(AHIP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CFTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(HELLO) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SATEXPAK) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(KRYPTOLAN) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RVD) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPPC) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ADFS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SATMON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(VISA) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPCV) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CPNX) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CPHB) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(WSN) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PVP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(BRSATMON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ND) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(WBMON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(WBEXPAK) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(EON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(VMTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SVMTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(VINES) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(DGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TCF) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IGRP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(OSPFIGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SRPC) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(LARP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(AX25) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPEIP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MICP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SCCSP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ETHERIP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ENCAP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(APES) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(GMTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPCOMP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SCTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MH) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(UDPLITE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(HIP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SHIM6) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PIM) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CARP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PGM) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MPLS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PFSYNC)
|
||||||
|
[[nodiscard]] Network::Protocol Translate(Protocol protocol) {
|
||||||
switch (protocol) {
|
switch (protocol) {
|
||||||
case Protocol::Unspecified:
|
#define NETWORK_PROTOCOL_TRANSLATE_ELEM(name) case Protocol::name: return Network::Protocol::name;
|
||||||
return Network::Protocol::Unspecified;
|
NETWORK_PROTOCOL_TRANSLATE_LIST
|
||||||
case Protocol::TCP:
|
#undef NETWORK_PROTOCOL_TRANSLATE_ELEM
|
||||||
return Network::Protocol::TCP;
|
|
||||||
case Protocol::UDP:
|
|
||||||
return Network::Protocol::UDP;
|
|
||||||
default:
|
default:
|
||||||
UNIMPLEMENTED_MSG("Unimplemented protocol={}", protocol);
|
UNIMPLEMENTED_MSG("Unimplemented protocol={}", protocol);
|
||||||
return Network::Protocol::Unspecified;
|
return {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
[[nodiscard]] Protocol Translate(Network::Protocol protocol) {
|
||||||
Protocol Translate(Network::Protocol protocol) {
|
|
||||||
switch (protocol) {
|
switch (protocol) {
|
||||||
case Network::Protocol::Unspecified:
|
#define NETWORK_PROTOCOL_TRANSLATE_ELEM(name) case Network::Protocol::name: return Protocol::name;
|
||||||
return Protocol::Unspecified;
|
NETWORK_PROTOCOL_TRANSLATE_LIST
|
||||||
case Network::Protocol::TCP:
|
#undef NETWORK_PROTOCOL_TRANSLATE_ELEM
|
||||||
return Protocol::TCP;
|
|
||||||
case Network::Protocol::UDP:
|
|
||||||
return Protocol::UDP;
|
|
||||||
default:
|
default:
|
||||||
UNIMPLEMENTED_MSG("Unimplemented protocol={}", protocol);
|
UNIMPLEMENTED_MSG("Unimplemented protocol={}", protocol);
|
||||||
return Protocol::Unspecified;
|
return {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#undef NETWORK_PROTOCOL_TRANSLATE_LIST
|
||||||
|
|
||||||
Network::PollEvents Translate(PollEvents flags) {
|
Network::PollEvents Translate(PollEvents flags) {
|
||||||
Network::PollEvents result{};
|
Network::PollEvents result{};
|
||||||
|
|
@ -265,13 +367,9 @@ PollEvents Translate(Network::PollEvents flags) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Network::SockAddrIn Translate(SockAddrIn value) {
|
Network::SockAddrIn Translate(SockAddrIn value) {
|
||||||
if (value.len != 0 && value.len != sizeof(value) && value.len != 6) {
|
// All lengths are valid, from [0 upto 256]
|
||||||
LOG_WARNING(Service, "Unexpected SockAddrIn len={}, expected 0, {}, or 6",
|
|
||||||
value.len, sizeof(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
.family = Translate(static_cast<Domain>(value.family)),
|
.family = Translate(Domain(value.family)),
|
||||||
.ip = value.ip,
|
.ip = value.ip,
|
||||||
.portno = static_cast<u16>(value.portno >> 8 | value.portno << 8),
|
.portno = static_cast<u16>(value.portno >> 8 | value.portno << 8),
|
||||||
};
|
};
|
||||||
|
|
@ -279,7 +377,7 @@ Network::SockAddrIn Translate(SockAddrIn value) {
|
||||||
|
|
||||||
SockAddrIn Translate(Network::SockAddrIn value) {
|
SockAddrIn Translate(Network::SockAddrIn value) {
|
||||||
return {
|
return {
|
||||||
.len = sizeof(SockAddrIn),
|
.len = 16,
|
||||||
.family = static_cast<u8>(Translate(value.family)),
|
.family = static_cast<u8>(Translate(value.family)),
|
||||||
.portno = static_cast<u16>(value.portno >> 8 | value.portno << 8),
|
.portno = static_cast<u16>(value.portno >> 8 | value.portno << 8),
|
||||||
.ip = value.ip,
|
.ip = value.ip,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "common/math_util.h"
|
#include "common/math_util.h"
|
||||||
#include "core/hle/service/cmif_types.h"
|
#include "core/hle/service/cmif_types.h"
|
||||||
#include "core/hle/service/nvnflinger/ui/fence.h"
|
#include "core/hle/service/nvnflinger/ui/fence.h"
|
||||||
|
|
|
||||||
|
|
@ -326,52 +326,37 @@ Errno GetAndLogLastError(CallType call_type = CallType::Other) {
|
||||||
|
|
||||||
GetAddrInfoError TranslateGetAddrInfoErrorFromNative(int gai_err) {
|
GetAddrInfoError TranslateGetAddrInfoErrorFromNative(int gai_err) {
|
||||||
switch (gai_err) {
|
switch (gai_err) {
|
||||||
case 0:
|
case 0: return GetAddrInfoError::SUCCESS;
|
||||||
return GetAddrInfoError::SUCCESS;
|
case EAI_AGAIN: return GetAddrInfoError::AGAIN;
|
||||||
|
case EAI_BADFLAGS: return GetAddrInfoError::BADFLAGS;
|
||||||
|
case EAI_FAIL: return GetAddrInfoError::FAIL;
|
||||||
|
case EAI_FAMILY: return GetAddrInfoError::FAMILY;
|
||||||
|
case EAI_MEMORY: return GetAddrInfoError::MEMORY;
|
||||||
|
case EAI_NONAME: return GetAddrInfoError::NONAME;
|
||||||
|
case EAI_SERVICE: return GetAddrInfoError::SERVICE;
|
||||||
|
case EAI_SOCKTYPE: return GetAddrInfoError::SOCKTYPE;
|
||||||
|
// These codes may not be defined on all systems:
|
||||||
#ifdef EAI_ADDRFAMILY
|
#ifdef EAI_ADDRFAMILY
|
||||||
case EAI_ADDRFAMILY:
|
case EAI_ADDRFAMILY: return GetAddrInfoError::ADDRFAMILY;
|
||||||
return GetAddrInfoError::ADDRFAMILY;
|
|
||||||
#endif
|
#endif
|
||||||
case EAI_AGAIN:
|
|
||||||
return GetAddrInfoError::AGAIN;
|
|
||||||
case EAI_BADFLAGS:
|
|
||||||
return GetAddrInfoError::BADFLAGS;
|
|
||||||
case EAI_FAIL:
|
|
||||||
return GetAddrInfoError::FAIL;
|
|
||||||
case EAI_FAMILY:
|
|
||||||
return GetAddrInfoError::FAMILY;
|
|
||||||
case EAI_MEMORY:
|
|
||||||
return GetAddrInfoError::MEMORY;
|
|
||||||
case EAI_NONAME:
|
|
||||||
return GetAddrInfoError::NONAME;
|
|
||||||
case EAI_SERVICE:
|
|
||||||
return GetAddrInfoError::SERVICE;
|
|
||||||
case EAI_SOCKTYPE:
|
|
||||||
return GetAddrInfoError::SOCKTYPE;
|
|
||||||
// These codes may not be defined on all systems:
|
|
||||||
#ifdef EAI_SYSTEM
|
#ifdef EAI_SYSTEM
|
||||||
case EAI_SYSTEM:
|
case EAI_SYSTEM: return GetAddrInfoError::SYSTEM;
|
||||||
return GetAddrInfoError::SYSTEM;
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef EAI_BADHINTS
|
#ifdef EAI_BADHINTS
|
||||||
case EAI_BADHINTS:
|
case EAI_BADHINTS: return GetAddrInfoError::BADHINTS;
|
||||||
return GetAddrInfoError::BADHINTS;
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef EAI_PROTOCOL
|
#ifdef EAI_PROTOCOL
|
||||||
case EAI_PROTOCOL:
|
case EAI_PROTOCOL: return GetAddrInfoError::PROTOCOL;
|
||||||
return GetAddrInfoError::PROTOCOL;
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef EAI_OVERFLOW
|
#ifdef EAI_OVERFLOW
|
||||||
case EAI_OVERFLOW:
|
case EAI_OVERFLOW: return GetAddrInfoError::OVERFLOW_;
|
||||||
return GetAddrInfoError::OVERFLOW_;
|
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
#ifdef EAI_NODATA
|
#ifdef EAI_NODATA
|
||||||
// This can't be a case statement because it would create a duplicate
|
// This can't be a case statement because it would create a duplicate
|
||||||
// case on Windows where EAI_NODATA is an alias for EAI_NONAME.
|
// case on Windows where EAI_NODATA is an alias for EAI_NONAME.
|
||||||
if (gai_err == EAI_NODATA) {
|
if (gai_err == EAI_NODATA)
|
||||||
return GetAddrInfoError::NODATA;
|
return GetAddrInfoError::NODATA;
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
return GetAddrInfoError::OTHER;
|
return GetAddrInfoError::OTHER;
|
||||||
}
|
}
|
||||||
|
|
@ -405,14 +390,10 @@ Type TranslateTypeFromNative(int type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 0:
|
case 0:
|
||||||
return Type::Unspecified;
|
return Type::Unspecified;
|
||||||
case SOCK_STREAM:
|
case SOCK_STREAM: return Type::STREAM;
|
||||||
return Type::STREAM;
|
case SOCK_DGRAM: return Type::DGRAM;
|
||||||
case SOCK_DGRAM:
|
case SOCK_RAW: return Type::RAW;
|
||||||
return Type::DGRAM;
|
case SOCK_SEQPACKET: return Type::SEQPACKET;
|
||||||
case SOCK_RAW:
|
|
||||||
return Type::RAW;
|
|
||||||
case SOCK_SEQPACKET:
|
|
||||||
return Type::SEQPACKET;
|
|
||||||
default:
|
default:
|
||||||
UNIMPLEMENTED_MSG("Unimplemented type={}", type);
|
UNIMPLEMENTED_MSG("Unimplemented type={}", type);
|
||||||
return Type::STREAM;
|
return Type::STREAM;
|
||||||
|
|
@ -423,55 +404,227 @@ int TranslateTypeToNative(Type type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case Type::Unspecified:
|
case Type::Unspecified:
|
||||||
return 0;
|
return 0;
|
||||||
case Type::STREAM:
|
case Type::STREAM: return SOCK_STREAM;
|
||||||
return SOCK_STREAM;
|
case Type::DGRAM: return SOCK_DGRAM;
|
||||||
case Type::DGRAM:
|
case Type::RAW: return SOCK_RAW;
|
||||||
return SOCK_DGRAM;
|
case Type::SEQPACKET: return SOCK_SEQPACKET;
|
||||||
case Type::RAW:
|
|
||||||
return SOCK_RAW;
|
|
||||||
default:
|
default:
|
||||||
UNIMPLEMENTED_MSG("Unimplemented type={}", type);
|
UNIMPLEMENTED_MSG("Unimplemented type={}", type);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Protocol TranslateProtocolFromNative(int protocol) {
|
// Some of those protocols may not be supported on some platforms
|
||||||
|
// It doesn't really matter, except that some homebrew may not work correctly
|
||||||
|
// Official software uses TCP & UDP mainly, SCTP is used by some homebrew as well
|
||||||
|
#ifdef __FreeBSD__
|
||||||
|
#define NETWORK_PROTOCOL_TRANSLATE_LIST \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ICMP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TCP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(UDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPV6) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RAW) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IGMP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(GGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPV4) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ST) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(EGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PIGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RCCMON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(NVPII) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PUP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ARGUS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(EMCON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(XNET) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CHAOS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MUX) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MEAS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(HMP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PRM) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TRUNK1) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TRUNK2) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(LEAF1) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(LEAF2) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IRTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(BLT) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(NSP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(INP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(DCCP) \
|
||||||
|
/*NETWORK_PROTOCOL_TRANSLATE_ELEM(3PC)*/ \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IDPR) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(XTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(DDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CMTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TPXX) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IL) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SDRP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ROUTING) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(FRAGMENT) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IDRP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RSVP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(GRE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MHRP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(BHA) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ESP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(AH) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(INLSP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SWIPE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(NHRP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MOBILE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TLSP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SKIP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ICMPV6) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(NONE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(DSTOPTS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(AHIP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CFTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(HELLO) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SATEXPAK) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(KRYPTOLAN) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RVD) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPPC) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ADFS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SATMON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(VISA) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPCV) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CPNX) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CPHB) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(WSN) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PVP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(BRSATMON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ND) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(WBMON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(WBEXPAK) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(EON) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(VMTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SVMTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(VINES) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(DGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TCF) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IGRP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(OSPFIGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SRPC) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(LARP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(AX25) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPEIP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MICP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SCCSP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ETHERIP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ENCAP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(APES) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(GMTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPCOMP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SCTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MH) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(UDPLITE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(HIP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SHIM6) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PIM) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(CARP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PGM) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MPLS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PFSYNC)
|
||||||
|
#elif defined(__linux__)
|
||||||
|
// Other platforms get fucked
|
||||||
|
#define NETWORK_PROTOCOL_TRANSLATE_LIST \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IP) \
|
||||||
|
/*NETWORK_PROTOCOL_TRANSLATE_ELEM(HOPOPTS)*/ \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ICMP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IGMP) \
|
||||||
|
/*NETWORK_PROTOCOL_TRANSLATE_ELEM(IPIP)*/ \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TCP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(EGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PUP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(UDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(DCCP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPV6) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ROUTING) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(FRAGMENT) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RSVP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(GRE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ESP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(AH) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ICMPV6) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(NONE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(DSTOPTS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(MTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ENCAP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PIM) \
|
||||||
|
/*NETWORK_PROTOCOL_TRANSLATE_ELEM(COMP)*/ \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SCTP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(UDPLITE)
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
#define NETWORK_PROTOCOL_TRANSLATE_LIST \
|
||||||
|
/*NETWORK_PROTOCOL_TRANSLATE_ELEM(HOPOPTS)*/ \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ICMP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IGMP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(GGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPV4) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ST) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TCP) \
|
||||||
|
/*NETWORK_PROTOCOL_TRANSLATE_ELEM(CBT)*/ \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(EGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IGP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PUP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(UDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(RDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(IPV6) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ROUTING) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(FRAGMENT) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ESP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(AH) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ICMPV6) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(NONE) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(DSTOPTS) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(ND) \
|
||||||
|
/*NETWORK_PROTOCOL_TRANSLATE_ELEM(ICLFXBM)*/ \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PIM) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(PGM) \
|
||||||
|
/*NETWORK_PROTOCOL_TRANSLATE_ELEM(L2TP)*/ \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SCTP)
|
||||||
|
#else
|
||||||
|
#define NETWORK_PROTOCOL_TRANSLATE_LIST \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(TCP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(UDP) \
|
||||||
|
NETWORK_PROTOCOL_TRANSLATE_ELEM(SCTP)
|
||||||
|
#endif
|
||||||
|
[[nodiscard]] Protocol TranslateProtocolFromNative(u32 protocol) {
|
||||||
switch (protocol) {
|
switch (protocol) {
|
||||||
case 0:
|
#define NETWORK_PROTOCOL_TRANSLATE_ELEM(x) case IPPROTO_##x: return Protocol::x;
|
||||||
return Protocol::Unspecified;
|
NETWORK_PROTOCOL_TRANSLATE_LIST
|
||||||
case IPPROTO_TCP:
|
#undef NETWORK_PROTOCOL_TRANSLATE_ELEM
|
||||||
return Protocol::TCP;
|
|
||||||
case IPPROTO_UDP:
|
|
||||||
return Protocol::UDP;
|
|
||||||
default:
|
default:
|
||||||
UNIMPLEMENTED_MSG("Unimplemented protocol={}", protocol);
|
UNIMPLEMENTED_MSG("Unimplemented protocol={}", protocol);
|
||||||
return Protocol::Unspecified;
|
return Protocol::IP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
[[nodiscard]] u32 TranslateProtocolToNative(Protocol protocol) {
|
||||||
int TranslateProtocolToNative(Protocol protocol) {
|
|
||||||
switch (protocol) {
|
switch (protocol) {
|
||||||
case Protocol::Unspecified:
|
#define NETWORK_PROTOCOL_TRANSLATE_ELEM(x) case Protocol::x: return IPPROTO_##x;
|
||||||
return 0;
|
NETWORK_PROTOCOL_TRANSLATE_LIST
|
||||||
case Protocol::TCP:
|
#undef NETWORK_PROTOCOL_TRANSLATE_ELEM
|
||||||
return IPPROTO_TCP;
|
|
||||||
case Protocol::UDP:
|
|
||||||
return IPPROTO_UDP;
|
|
||||||
default:
|
default:
|
||||||
UNIMPLEMENTED_MSG("Unimplemented protocol={}", protocol);
|
UNIMPLEMENTED_MSG("Unimplemented protocol={}", protocol);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#undef NETWORK_PROTOCOL_TRANSLATE_LIST
|
||||||
|
|
||||||
SockAddrIn TranslateToSockAddrIn(sockaddr_in input, size_t input_len) {
|
SockAddrIn TranslateToSockAddrIn(sockaddr_in input, size_t input_len) {
|
||||||
SockAddrIn result;
|
SockAddrIn result{};
|
||||||
|
|
||||||
result.family = TranslateDomainFromNative(input.sin_family);
|
result.family = TranslateDomainFromNative(input.sin_family);
|
||||||
|
|
||||||
result.portno = ntohs(input.sin_port);
|
result.portno = ntohs(input.sin_port);
|
||||||
|
|
||||||
result.ip = TranslateIPv4(input.sin_addr);
|
result.ip = TranslateIPv4(input.sin_addr);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -685,8 +838,7 @@ Errno Socket::SetSockOpt(SOCKET fd_so, int option, T value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Errno Socket::Initialize(Domain domain, Type type, Protocol protocol) {
|
Errno Socket::Initialize(Domain domain, Type type, Protocol protocol) {
|
||||||
fd = socket(TranslateDomainToNative(domain), TranslateTypeToNative(type),
|
fd = socket(TranslateDomainToNative(domain), TranslateTypeToNative(type), TranslateProtocolToNative(protocol));
|
||||||
TranslateProtocolToNative(protocol));
|
|
||||||
if (fd != INVALID_SOCKET) {
|
if (fd != INVALID_SOCKET) {
|
||||||
return Errno::SUCCESS;
|
return Errno::SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
||||||