diff --git a/.github/workflows/linux-aur.yml b/.github/workflows/linux-aur.yml new file mode 100644 index 000000000..50a3c795f --- /dev/null +++ b/.github/workflows/linux-aur.yml @@ -0,0 +1,27 @@ +name: Linux CI AUR + +on: + push: + branches: + - main + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + container: + image: archlinux:latest + steps: + - name: Install dependencies + run: | + pacman -Syu --noconfirm --needed capstone curl ffmpeg freetype2 glfw libuv sdl2 zlib git make pkg-config sudo base-devel pacman-contrib + - name: Create builduser + run: | + useradd builduser -m + passwd -d builduser + - name: Build AUR Package + run: | + git clone https://aur.archlinux.org/pcsx-redux-git.git + chown -R builduser:builduser pcsx-redux-git + cd pcsx-redux-git + sudo -u builduser makepkg diff --git a/.vscode/launch.json b/.vscode/launch.json index d4afa31da..b52aa4521 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -192,6 +192,32 @@ "valuesFormatting": "parseText" }, + { + "type": "gdb", + "request": "attach", + "name": "(gdb) Launch Torus demo", + "target": "localhost:3333", + "remote": true, + "stopAtConnect": true, + "executable": "./src/mips/psyqo/examples/torus/torus.elf", + "gdbpath": "gdb-multiarch", + "windows": { + "gdbpath": "gdb-multiarch.exe" + }, + "cwd": "${workspaceRoot}", + "autorun": [ + "set confirm off", + "set substitute-path /project .", + "load ./src/mips/openbios/openbios.elf", + "add-symbol-file ./src/mips/openbios/openbios.elf", + "monitor reset shellhalt", + "load ./src/mips/psyqo/examples/torus/torus.elf", + "tbreak main", + "continue", + ], + "valuesFormatting": "parseText" + }, + { "name": "(gdb) Launch PCSX-Redux", "type": "cppdbg", diff --git a/AppImageBuilder.yml b/AppImageBuilder.yml index 61694cab8..f580e653d 100644 --- a/AppImageBuilder.yml +++ b/AppImageBuilder.yml @@ -16,153 +16,65 @@ AppDir: apt: arch: - amd64 + allow_unauthenticated: true sources: - - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ mantic main restricted + - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ noble main restricted key_url: https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920D1991BC93C - - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ mantic-updates main restricted - - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ mantic universe - - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ mantic-updates universe - - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ mantic multiverse - - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ mantic-updates multiverse - - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ mantic-backports main + - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ noble-updates main restricted + - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ noble universe + - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ noble-updates universe + - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ noble multiverse + - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ noble-updates multiverse + - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ noble-backports main restricted universe multiverse - - sourceline: deb http://security.ubuntu.com/ubuntu mantic-security main restricted - - sourceline: deb http://security.ubuntu.com/ubuntu mantic-security universe - - sourceline: deb http://security.ubuntu.com/ubuntu mantic-security multiverse + - sourceline: deb http://security.ubuntu.com/ubuntu noble-security main restricted + - sourceline: deb http://security.ubuntu.com/ubuntu noble-security universe + - sourceline: deb http://security.ubuntu.com/ubuntu noble-security multiverse include: + - libavformat60:amd64 - libbz2-1.0:amd64 - - libcom-err2:amd64 - - libexpat1:amd64 - - libgcc-s1:amd64 - - libgpg-error0:amd64 - - libkeyutils1:amd64 - - liblzma5:amd64 - - libselinux1:amd64 + - libcapstone4:amd64 + - libcurl4t64:amd64 + - libgl-dev:amd64 + - libglfw3:amd64 + - libjpeg-turbo8:amd64 + - libllvm17t64:amd64 + - libopengl0:amd64 + - libpciaccess0:amd64 + - libpgm-5.3-0t64:amd64 + - libpulse0:amd64 + - libsystemd0:amd64 + - libuv1t64:amd64 + - libxcb-sync1:amd64 + - libxcursor1:amd64 + - libxdmcp6:amd64 + - libxext6:amd64 + - libxfixes3:amd64 + - libxi6:amd64 + - libxinerama1:amd64 + - libxrandr2:amd64 + - libxrender1:amd64 + - libxshmfence1:amd64 + - libxxf86vm1:amd64 - openssl - - zlib1g:amd64 + - yaru-theme-icon files: include: - - /lib/x86_64-linux-gnu/libOpenCL.so.1 - - /lib/x86_64-linux-gnu/libSvtAv1Enc.so.1 - - /lib/x86_64-linux-gnu/libX11.so.6 - - /lib/x86_64-linux-gnu/libXau.so.6 - - /lib/x86_64-linux-gnu/libXdmcp.so.6 - - /lib/x86_64-linux-gnu/libXext.so.6 - - /lib/x86_64-linux-gnu/libXfixes.so.3 - - /lib/x86_64-linux-gnu/libXrender.so.1 - - /lib/x86_64-linux-gnu/libaom.so.3 - - /lib/x86_64-linux-gnu/libavcodec.so.60 + - /lib/x86_64-linux-gnu/libLLVM-17.so.1 + - /lib/x86_64-linux-gnu/libOpenGL.so.0 + - /lib/x86_64-linux-gnu/libXcursor.so.1 + - /lib/x86_64-linux-gnu/libXi.so.6 + - /lib/x86_64-linux-gnu/libXinerama.so.1 + - /lib/x86_64-linux-gnu/libXrandr.so.2 - /lib/x86_64-linux-gnu/libavformat.so.60 - - /lib/x86_64-linux-gnu/libavutil.so.58 - - /lib/x86_64-linux-gnu/libblkid.so.1 - - /lib/x86_64-linux-gnu/libbluray.so.2 - - /lib/x86_64-linux-gnu/libbrotlicommon.so.1 - - /lib/x86_64-linux-gnu/libbrotlidec.so.1 - - /lib/x86_64-linux-gnu/libbsd.so.0 - - /lib/x86_64-linux-gnu/libcairo-gobject.so.2 - - /lib/x86_64-linux-gnu/libcairo.so.2 - /lib/x86_64-linux-gnu/libcapstone.so.4 - - /lib/x86_64-linux-gnu/libchromaprint.so.1 - - /lib/x86_64-linux-gnu/libcjson.so.1 - - /lib/x86_64-linux-gnu/libcodec2.so.1.0 - - /lib/x86_64-linux-gnu/libcrypto.so.3 - /lib/x86_64-linux-gnu/libcurl.so.4 - - /lib/x86_64-linux-gnu/libdatrie.so.1 - - /lib/x86_64-linux-gnu/libdav1d.so.6 - - /lib/x86_64-linux-gnu/libffi.so.8 - - /lib/x86_64-linux-gnu/libfontconfig.so.1 - - /lib/x86_64-linux-gnu/libfreetype.so.6 - - /lib/x86_64-linux-gnu/libfribidi.so.0 - - /lib/x86_64-linux-gnu/libgcrypt.so.20 - - /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 - - /lib/x86_64-linux-gnu/libgio-2.0.so.0 + - /lib/x86_64-linux-gnu/libelf.so.1 - /lib/x86_64-linux-gnu/libglfw.so.3 - - /lib/x86_64-linux-gnu/libglib-2.0.so.0 - - /lib/x86_64-linux-gnu/libgme.so.0 - - /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 - - /lib/x86_64-linux-gnu/libgmp.so.10 - - /lib/x86_64-linux-gnu/libgnutls.so.30 - - /lib/x86_64-linux-gnu/libgobject-2.0.so.0 - - /lib/x86_64-linux-gnu/libgomp.so.1 - - /lib/x86_64-linux-gnu/libgraphite2.so.3 - - /lib/x86_64-linux-gnu/libgsm.so.1 - - /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 - - /lib/x86_64-linux-gnu/libharfbuzz.so.0 - - /lib/x86_64-linux-gnu/libhogweed.so.6 - - /lib/x86_64-linux-gnu/libicudata.so.71 - - /lib/x86_64-linux-gnu/libicuuc.so.71 - - /lib/x86_64-linux-gnu/libidn2.so.0 - - /lib/x86_64-linux-gnu/libjpeg.so.8 - - /lib/x86_64-linux-gnu/libk5crypto.so.3 - - /lib/x86_64-linux-gnu/libkrb5.so.3 - - /lib/x86_64-linux-gnu/libkrb5support.so.0 - - /lib/x86_64-linux-gnu/liblber-2.5.so.0 - - /lib/x86_64-linux-gnu/libldap-2.5.so.0 - - /lib/x86_64-linux-gnu/libmbedcrypto.so.7 - - /lib/x86_64-linux-gnu/libmd.so.0 - - /lib/x86_64-linux-gnu/libmfx.so.1 - - /lib/x86_64-linux-gnu/libmount.so.1 - - /lib/x86_64-linux-gnu/libmp3lame.so.0 - - /lib/x86_64-linux-gnu/libmpg123.so.0 - - /lib/x86_64-linux-gnu/libnettle.so.8 - - /lib/x86_64-linux-gnu/libnghttp2.so.14 - - /lib/x86_64-linux-gnu/libnorm.so.1 - - /lib/x86_64-linux-gnu/libnuma.so.1 - - /lib/x86_64-linux-gnu/libogg.so.0 - - /lib/x86_64-linux-gnu/libopenjp2.so.7 - - /lib/x86_64-linux-gnu/libopenmpt.so.0 - - /lib/x86_64-linux-gnu/libopus.so.0 - - /lib/x86_64-linux-gnu/libp11-kit.so.0 - - /lib/x86_64-linux-gnu/libpango-1.0.so.0 - - /lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 - - /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 - - /lib/x86_64-linux-gnu/libpcre2-8.so.0 - - /lib/x86_64-linux-gnu/libpgm-5.3.so.0 - - /lib/x86_64-linux-gnu/libpixman-1.so.0 - - /lib/x86_64-linux-gnu/libpng16.so.16 - - /lib/x86_64-linux-gnu/libpsl.so.5 - - /lib/x86_64-linux-gnu/librabbitmq.so.4 - - /lib/x86_64-linux-gnu/librist.so.4 - - /lib/x86_64-linux-gnu/librsvg-2.so.2 - - /lib/x86_64-linux-gnu/librtmp.so.1 - - /lib/x86_64-linux-gnu/libsasl2.so.2 - - /lib/x86_64-linux-gnu/libshine.so.3 - - /lib/x86_64-linux-gnu/libsnappy.so.1 - - /lib/x86_64-linux-gnu/libsodium.so.23 - - /lib/x86_64-linux-gnu/libsoxr.so.0 - - /lib/x86_64-linux-gnu/libspeex.so.1 - - /lib/x86_64-linux-gnu/libsrt-gnutls.so.1.5 - - /lib/x86_64-linux-gnu/libssh-gcrypt.so.4 - - /lib/x86_64-linux-gnu/libssh.so.4 - - /lib/x86_64-linux-gnu/libssl.so.3 - - /lib/x86_64-linux-gnu/libstdc++.so.6 - - /lib/x86_64-linux-gnu/libswresample.so.4 - - /lib/x86_64-linux-gnu/libtasn1.so.6 - - /lib/x86_64-linux-gnu/libthai.so.0 - - /lib/x86_64-linux-gnu/libtheoradec.so.1 - - /lib/x86_64-linux-gnu/libtheoraenc.so.1 - - /lib/x86_64-linux-gnu/libtwolame.so.0 - - /lib/x86_64-linux-gnu/libudfread.so.0 - - /lib/x86_64-linux-gnu/libunistring.so.2 - - /lib/x86_64-linux-gnu/libuuid.so.1 + - /lib/x86_64-linux-gnu/libpulse.so.0 + - /lib/x86_64-linux-gnu/libsensors.so.5 - /lib/x86_64-linux-gnu/libuv.so.1 - - /lib/x86_64-linux-gnu/libva-drm.so.2 - - /lib/x86_64-linux-gnu/libva-x11.so.2 - - /lib/x86_64-linux-gnu/libva.so.2 - - /lib/x86_64-linux-gnu/libvdpau.so.1 - - /lib/x86_64-linux-gnu/libvorbis.so.0 - - /lib/x86_64-linux-gnu/libvorbisenc.so.2 - - /lib/x86_64-linux-gnu/libvorbisfile.so.3 - - /lib/x86_64-linux-gnu/libvpx.so.7 - - /lib/x86_64-linux-gnu/libwebp.so.7 - - /lib/x86_64-linux-gnu/libwebpmux.so.3 - - /lib/x86_64-linux-gnu/libx264.so.164 - - /lib/x86_64-linux-gnu/libx265.so.199 - - /lib/x86_64-linux-gnu/libxml2.so.2 - - /lib/x86_64-linux-gnu/libxvidcore.so.4 - - /lib/x86_64-linux-gnu/libzmq.so.5 - - /lib/x86_64-linux-gnu/libzstd.so.1 - - /lib/x86_64-linux-gnu/libzvbi.so.0 + - /usr/lib/locale/locale-archive exclude: - usr/share/man - usr/share/doc/*/README.* @@ -173,23 +85,18 @@ AppDir: fedora-30: image: appimagecrafters/tests-env:fedora-30 command: ./AppRun - use_host_x: true debian-stable: image: appimagecrafters/tests-env:debian-stable command: ./AppRun - use_host_x: true archlinux-latest: image: appimagecrafters/tests-env:archlinux-latest command: ./AppRun - use_host_x: true centos-7: image: appimagecrafters/tests-env:centos-7 command: ./AppRun - use_host_x: true ubuntu-xenial: image: appimagecrafters/tests-env:ubuntu-xenial command: ./AppRun - use_host_x: true AppImage: arch: x86_64 update-information: guess diff --git a/Makefile b/Makefile index ae9840648..e607f3b33 100644 --- a/Makefile +++ b/Makefile @@ -73,6 +73,7 @@ ifeq ($(UNAME_S),Darwin) CPPFLAGS += -stdlib=libc++ endif +LUAJIT_LDFLAGS := $(LDFLAGS) LDFLAGS += `pkg-config --libs $(PACKAGES)` ifeq ($(UNAME_S),Darwin) @@ -135,7 +136,7 @@ SRCS += third_party/luv/src/luv.c SRCS += third_party/md4c/src/md4c.c SRCS += third_party/multipart-parser-c/multipart_parser.c SRCS += third_party/nanovg/src/nanovg.c -SRCS += third_party/tracy/TracyClient.cpp +SRCS += third_party/tracy/public/TracyClient.cpp SRCS += third_party/ucl/src/n2e_99.c third_party/ucl/src/alloc.c SRCS += third_party/zep/extensions/repl/mode_repl.cpp SRCS += $(wildcard third_party/zep/src/*.cpp) @@ -235,10 +236,10 @@ appimage: ifeq ($(CROSS),arm64) third_party/luajit/src/libluajit.a: - $(MAKE) $(MAKEOPTS) -C third_party/luajit/src amalg HOST_CC=cc CROSS=aarch64-linux-gnu- TARGET_CFLAGS=--sysroot=/opt/cross/sysroot BUILDMODE=static CFLAGS=$(LUAJIT_CFLAGS) XCFLAGS="-DLUAJIT_ENABLE_GC64 -DLUAJIT_ENABLE_LUA52COMPAT" MACOSX_DEPLOYMENT_TARGET=10.15 + $(MAKE) $(MAKEOPTS) -C third_party/luajit/src amalg HOST_CC=cc CROSS=aarch64-linux-gnu- TARGET_CFLAGS=--sysroot=/opt/cross/sysroot BUILDMODE=static CFLAGS=$(LUAJIT_CFLAGS) LDFLAGS=$(LUAJIT_LDFLAGS) XCFLAGS="-DLUAJIT_ENABLE_GC64 -DLUAJIT_ENABLE_LUA52COMPAT" MACOSX_DEPLOYMENT_TARGET=10.15 else third_party/luajit/src/libluajit.a: - $(MAKE) $(MAKEOPTS) -C third_party/luajit/src amalg CC=$(CC) BUILDMODE=static CFLAGS=$(LUAJIT_CFLAGS) XCFLAGS="-DLUAJIT_ENABLE_GC64 -DLUAJIT_ENABLE_LUA52COMPAT" MACOSX_DEPLOYMENT_TARGET=10.15 + $(MAKE) $(MAKEOPTS) -C third_party/luajit/src amalg CC=$(CC) BUILDMODE=static CFLAGS=$(LUAJIT_CFLAGS) LDFLAGS=$(LUAJIT_LDFLAGS) XCFLAGS="-DLUAJIT_ENABLE_GC64 -DLUAJIT_ENABLE_LUA52COMPAT" MACOSX_DEPLOYMENT_TARGET=10.15 endif $(TARGET): $(OBJECTS) @@ -286,9 +287,9 @@ endef regen-i18n: find src -name *.cc -or -name *.c -or -name *.h | sort -u > pcsx-src-list.txt - xgettext --keyword=_ --keyword=f_ --keyword=l_ --language=C++ --add-comments --sort-by-file -o i18n/pcsx-redux.pot -f pcsx-src-list.txt + xgettext --from-code=utf-8 --keyword=_ --keyword=f_ --keyword=l_ --language=C++ --add-comments --sort-by-file -o i18n/pcsx-redux.pot -f pcsx-src-list.txt find src -name *.lua | sort -u > pcsx-src-list.txt - xgettext --keyword=t_ --language=Lua --join-existing --sort-by-file -o i18n/pcsx-redux.pot -f pcsx-src-list.txt + xgettext --from-code=utf-8 --keyword=t_ --language=Lua --join-existing --sort-by-file -o i18n/pcsx-redux.pot -f pcsx-src-list.txt sed '/POT-Creation-Date/d' -i i18n/pcsx-redux.pot rm pcsx-src-list.txt $(foreach l,$(LOCALES),$(call msgmerge,$(l))) diff --git a/README.md b/README.md index 481822a08..979ce1d69 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ powershell -c "& { iwr -UseBasicParsing https://bit.ly/mips-ps1 | iex }" Then, open a new command prompt, and type the following: ``` -mips install 13.2.0 +mips install 14.2.0 ``` To manually install this script, you can download it from [here](https://bit.ly/mips-ps1), and then install it with the following command: diff --git a/i18n/el.po b/i18n/el.po index a0255b987..1572d770e 100644 --- a/i18n/el.po +++ b/i18n/el.po @@ -2,10 +2,10 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# # Translators: # Γιωργος Πονηρης , 2024 -# +# #, fuzzy msgid "" msgstr "" @@ -13,11 +13,12 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2021-03-27 04:53+0000\n" "Last-Translator: Γιωργος Πονηρης , 2024\n" -"Language-Team: Greek (https://app.transifex.com/grumpycoders/teams/99251/el/)\n" +"Language-Team: Greek (https://app.transifex.com/grumpycoders/teams/99251/" +"el/)\n" +"Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/cdrom/cdriso-ecm.cc:282 @@ -163,8 +164,8 @@ msgstr "Χάρτης γραφής 32" msgid "Step in" msgstr "" -#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:454 -#: src/gui/widgets/assembly.cc:531 +#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:566 msgid "Step Over" msgstr "" @@ -181,20 +182,20 @@ msgstr "" msgid "Breakpoint triggered: PC=0x%08x - Cause: %s %s\n" msgstr "" -#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:455 -#: src/gui/widgets/assembly.cc:533 +#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:490 +#: src/gui/widgets/assembly.cc:568 msgid "Step Out" msgstr "" -#: src/core/debug.h:37 +#: src/core/debug.h:36 msgid "Exec" msgstr "" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:285 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:285 msgid "Read" msgstr "" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:287 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:287 msgid "Write" msgstr "" @@ -499,7 +500,7 @@ msgstr "" msgid "Keyboard {}" msgstr "Πληκτρολόγιο {}" -#: src/core/pad.cc:986 src/gui/gui.cc:1993 +#: src/core/pad.cc:986 src/gui/gui.cc:2019 msgid "Auto" msgstr "Αυτόματο" @@ -711,8 +712,7 @@ msgstr "" #, c-format msgid "Encountered reserved opcode from 0x%08x, firing an exception\n" msgstr "" -"Συναντήθηκε δεσμευμένη εντολή στην διεύθυνση 0x%08x, ενεργοποίηση " -"exception\n" +"Συναντήθηκε δεσμευμένη εντολή στην διεύθυνση 0x%08x, ενεργοποίηση exception\n" #: src/core/psxinterpreter.cc:1108 #, c-format @@ -752,14 +752,16 @@ msgid "" "\n" " No BIOS loaded, emulation halted.\n" "\n" -"Set a BIOS file into the configuration, and do a hard reset of the emulator.\n" +"Set a BIOS file into the configuration, and do a hard reset of the " +"emulator.\n" "The distributed OpenBIOS.bin file can be an appropriate BIOS replacement.\n" msgstr "" "\n" " Κανένα αρχείο BIOS δεν έχει φορτωθεί, η εξομοίωση σταμάτησε\n" "\n" "Επιλέξτε ένα αρχείο BIOS στις ρυθμίσεις και επανεκκινήστε τον εξομοιωτή\n" -"Το διαμοιρασμένο αρχείο OpenBIOS.bin μπορεί να χρησιμοποιηθεί ως μία κατάλληλη αντικατάσταησ του BIOS.\n" +"Το διαμοιρασμένο αρχείο OpenBIOS.bin μπορεί να χρησιμοποιηθεί ως μία " +"κατάλληλη αντικατάσταησ του BIOS.\n" #: src/core/psxmem.cc:200 #, c-format @@ -795,67 +797,37 @@ msgstr "Ανιχνεύτηκε το OpenBIOS (%08x)\n" msgid "Unknown bios loaded (%08x)\n" msgstr "Φορτώθηκε άγνωστο BIOS (%08x)\n" -#: src/core/psxmem.cc:276 -#, c-format -msgid "8-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:283 +#: src/core/psxmem.cc:282 #, c-format msgid "8-bit read from unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:313 -#, c-format -msgid "16-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:316 +#: src/core/psxmem.cc:314 #, c-format msgid "16-bit read from unknown address: %8.8lx\n" msgstr "" #: src/core/psxmem.cc:348 #, c-format -msgid "32-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:351 -#, c-format msgid "32-bit read from unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:452 -#, c-format -msgid "8-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:455 +#: src/core/psxmem.cc:451 #, c-format msgid "8-bit write to unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:482 -#, c-format -msgid "16-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:485 +#: src/core/psxmem.cc:480 #, c-format msgid "16-bit write to unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:523 +#: src/core/psxmem.cc:518 #, c-format msgid "Unknown BIU value: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:530 -#, c-format -msgid "32-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:533 +#: src/core/psxmem.cc:527 #, c-format msgid "32-bit write to unknown address: %8.8lx\n" msgstr "" @@ -989,471 +961,472 @@ msgstr "BIOS" msgid "VRAM" msgstr "VRAM" -#: src/gui/gui.cc:1055 +#: src/gui/gui.cc:1081 msgid "Output" msgstr "Έξοδος" -#: src/gui/gui.cc:1080 src/gui/widgets/assembly.cc:442 +#: src/gui/gui.cc:1106 src/gui/widgets/assembly.cc:477 #: src/gui/widgets/isobrowser.cc:66 src/gui/widgets/memcard_manager.cc:63 #: src/gui/widgets/vram-viewer.cc:482 msgid "File" msgstr "Αρχεία" -#: src/gui/gui.cc:1081 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 +#: src/gui/gui.cc:1107 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 #: src/gui/widgets/isobrowser.h:50 msgid "Open Disk Image" msgstr "Άνοιγμα δίσκου" -#: src/gui/gui.cc:1082 src/gui/widgets/isobrowser.cc:68 +#: src/gui/gui.cc:1108 src/gui/widgets/isobrowser.cc:68 msgid "Close Disk Image" msgstr "Κλείσιμο δίσκου" -#: src/gui/gui.cc:1086 +#: src/gui/gui.cc:1112 msgid "Load binary" msgstr "Φόρτωση δυαδικού αρχείου" -#: src/gui/gui.cc:1089 +#: src/gui/gui.cc:1115 msgid "Add Lua archive" msgstr "" -#: src/gui/gui.cc:1093 +#: src/gui/gui.cc:1119 msgid "Dump save state proto schema" msgstr "" -#: src/gui/gui.cc:1098 +#: src/gui/gui.cc:1124 msgid "global{}" msgstr "global{}" -#: src/gui/gui.cc:1100 +#: src/gui/gui.cc:1126 msgid "Save state slots" msgstr "" -#: src/gui/gui.cc:1101 +#: src/gui/gui.cc:1127 msgid "Quick-save slot" msgstr "" -#: src/gui/gui.cc:1106 src/gui/gui.cc:1127 +#: src/gui/gui.cc:1132 src/gui/gui.cc:1153 msgid "Slot {}" msgstr "" -#: src/gui/gui.cc:1113 +#: src/gui/gui.cc:1139 msgid "Show named save states" msgstr "" -#: src/gui/gui.cc:1118 +#: src/gui/gui.cc:1144 msgid "Save global state" msgstr "" -#: src/gui/gui.cc:1120 +#: src/gui/gui.cc:1146 msgid "Load state slots" msgstr "" -#: src/gui/gui.cc:1123 +#: src/gui/gui.cc:1149 msgid "Quick-load slot" msgstr "" -#: src/gui/gui.cc:1148 +#: src/gui/gui.cc:1174 msgid "Load global state" msgstr "" -#: src/gui/gui.cc:1152 +#: src/gui/gui.cc:1178 msgid "Open LID" msgstr "Άνοιγμα LID" -#: src/gui/gui.cc:1156 +#: src/gui/gui.cc:1182 msgid "Close LID" msgstr "Κλείσιμο LID" -#: src/gui/gui.cc:1160 +#: src/gui/gui.cc:1186 msgid "Open and close LID" msgstr "Άνοιγμα και κλείσιμο LID" -#: src/gui/gui.cc:1165 +#: src/gui/gui.cc:1191 msgid "Reboot" msgstr "Επανεκκίνηση" -#: src/gui/gui.cc:1168 +#: src/gui/gui.cc:1194 msgid "Quit" msgstr "Έξοδος" -#: src/gui/gui.cc:1174 src/gui/gui.cc:1191 +#: src/gui/gui.cc:1200 src/gui/gui.cc:1217 msgid "Emulation" msgstr "Εξομοίωση" -#: src/gui/gui.cc:1175 +#: src/gui/gui.cc:1201 msgid "Start emulation" msgstr "Έναρξη εξομοίωσης" -#: src/gui/gui.cc:1178 +#: src/gui/gui.cc:1204 msgid "Pause emulation" msgstr "Παύση εξομοίωσης" -#: src/gui/gui.cc:1181 +#: src/gui/gui.cc:1207 msgid "Soft Reset" msgstr "Επαναφορά μέσω λογισμικού" -#: src/gui/gui.cc:1184 +#: src/gui/gui.cc:1210 msgid "Hard Reset" msgstr "Επανεκκίνηση" -#: src/gui/gui.cc:1190 src/gui/widgets/vram-viewer.cc:520 +#: src/gui/gui.cc:1216 src/gui/widgets/vram-viewer.cc:520 msgid "Configuration" msgstr "Ρυθμίσεις" -#: src/gui/gui.cc:1192 +#: src/gui/gui.cc:1218 msgid "Manage Memory Cards" msgstr "Διαχείριση καρτών μνήμης" -#: src/gui/gui.cc:1195 src/gui/gui.cc:1295 +#: src/gui/gui.cc:1221 src/gui/gui.cc:1321 msgid "GPU" msgstr "GPU" -#: src/gui/gui.cc:1196 src/gui/gui.cc:1311 +#: src/gui/gui.cc:1222 src/gui/gui.cc:1337 msgid "SPU" msgstr "SPU" -#: src/gui/gui.cc:1197 +#: src/gui/gui.cc:1223 msgid "UI" msgstr "Διεπαφή" -#: src/gui/gui.cc:1198 +#: src/gui/gui.cc:1224 msgid "System" msgstr "Σύστημα" -#: src/gui/gui.cc:1199 +#: src/gui/gui.cc:1225 msgid "Controls" msgstr "" -#: src/gui/gui.cc:1200 +#: src/gui/gui.cc:1226 msgid "Shader presets" msgstr "" -#: src/gui/gui.cc:1201 +#: src/gui/gui.cc:1227 msgid "Default shader" msgstr "" -#: src/gui/gui.cc:1204 +#: src/gui/gui.cc:1230 msgid "CRT-lottes shader" msgstr "" -#: src/gui/gui.cc:1231 +#: src/gui/gui.cc:1257 msgid "Configure Shaders" msgstr "" -#: src/gui/gui.cc:1235 +#: src/gui/gui.cc:1261 msgid "PIO Cartridge" msgstr "" -#: src/gui/gui.cc:1239 src/gui/widgets/assembly.cc:449 +#: src/gui/gui.cc:1265 src/gui/widgets/assembly.cc:484 msgid "Debug" msgstr "" -#: src/gui/gui.cc:1240 +#: src/gui/gui.cc:1266 msgid "Show Logs" msgstr "Ένδειξη καταγραφών" -#: src/gui/gui.cc:1241 +#: src/gui/gui.cc:1267 msgid "Lua" msgstr "Lua" -#: src/gui/gui.cc:1242 +#: src/gui/gui.cc:1268 msgid "Show Lua Console" msgstr "Προβολή κονσόλας Lua" -#: src/gui/gui.cc:1243 +#: src/gui/gui.cc:1269 msgid "Show Lua Inspector" msgstr "" -#: src/gui/gui.cc:1244 +#: src/gui/gui.cc:1270 msgid "Show Lua editor" msgstr "Προβολή επεξεργαστή Lua" -#: src/gui/gui.cc:1248 +#: src/gui/gui.cc:1274 msgid "CPU" msgstr "CPU" -#: src/gui/gui.cc:1249 +#: src/gui/gui.cc:1275 msgid "Show Registers" msgstr "Ένδειξη καταχωρητών" -#: src/gui/gui.cc:1250 +#: src/gui/gui.cc:1276 msgid "Show Assembly" msgstr "Ένδειξη Assembly" -#: src/gui/gui.cc:1252 src/gui/gui.cc:1254 +#: src/gui/gui.cc:1278 src/gui/gui.cc:1280 msgid "Show DynaRec Disassembly" msgstr "" -#: src/gui/gui.cc:1256 +#: src/gui/gui.cc:1282 msgid "" -"DynaRec Disassembler is not available in Interpreted CPU mode. Try enabling [Dynarec CPU]\n" +"DynaRec Disassembler is not available in Interpreted CPU mode. Try enabling " +"[Dynarec CPU]\n" "in Configuration->Emulation, restart PCSX-Redux, then try again." msgstr "" -#: src/gui/gui.cc:1259 +#: src/gui/gui.cc:1285 msgid "Show Breakpoints" msgstr "Προβολή Breakpoints" -#: src/gui/gui.cc:1260 +#: src/gui/gui.cc:1286 msgid "Show Callstacks" msgstr "" -#: src/gui/gui.cc:1261 +#: src/gui/gui.cc:1287 msgid "Memory Editors" msgstr "Επεξεργαστές μνήμης" -#: src/gui/gui.cc:1272 +#: src/gui/gui.cc:1298 msgid "Show Memory Observer" msgstr "Ένδειξη παρατηρητή μνήμης" -#: src/gui/gui.cc:1273 +#: src/gui/gui.cc:1299 msgid "Show Typed Debugger" msgstr "" -#: src/gui/gui.cc:1274 +#: src/gui/gui.cc:1300 msgid "Show Interrupts Scaler" msgstr "" -#: src/gui/gui.cc:1275 +#: src/gui/gui.cc:1301 msgid "First Chance Exceptions" msgstr "" -#: src/gui/gui.cc:1296 +#: src/gui/gui.cc:1322 msgid "VRAM viewers" msgstr "Προβολείς VRAM" -#: src/gui/gui.cc:1297 +#: src/gui/gui.cc:1323 msgid "Show main VRAM viewer" msgstr "Ενεργοποίηση κύριας προβολής VRAM" -#: src/gui/gui.cc:1298 +#: src/gui/gui.cc:1324 msgid "Show CLUT VRAM viewer" msgstr "Προβολή CLUT VRAM" -#: src/gui/gui.cc:1301 +#: src/gui/gui.cc:1327 msgid "Show VRAM viewer #" msgstr "Ενεργοποίηση προβολής VRAM #" -#: src/gui/gui.cc:1307 +#: src/gui/gui.cc:1333 msgid "Show GPU logger" msgstr "" -#: src/gui/gui.cc:1308 +#: src/gui/gui.cc:1334 msgid "Show GPU debug" msgstr "" -#: src/gui/gui.cc:1312 +#: src/gui/gui.cc:1338 msgid "Show SPU debug" msgstr "" -#: src/gui/gui.cc:1315 +#: src/gui/gui.cc:1341 msgid "CD-Rom" msgstr "CD-Rom" -#: src/gui/gui.cc:1316 +#: src/gui/gui.cc:1342 msgid "Show Iso Browser" msgstr "" -#: src/gui/gui.cc:1319 +#: src/gui/gui.cc:1345 msgid "Misc hardware" msgstr "Υπόλοιπο hardware" -#: src/gui/gui.cc:1320 +#: src/gui/gui.cc:1346 msgid "Show SIO1 debug" msgstr "" -#: src/gui/gui.cc:1324 +#: src/gui/gui.cc:1350 msgid "Kernel" msgstr "Kernel" -#: src/gui/gui.cc:1325 +#: src/gui/gui.cc:1351 msgid "Kernel Events" msgstr "" -#: src/gui/gui.cc:1326 +#: src/gui/gui.cc:1352 msgid "Kernel Handlers" msgstr "" -#: src/gui/gui.cc:1327 src/gui/gui.cc:1473 +#: src/gui/gui.cc:1353 src/gui/gui.cc:1499 msgid "Kernel Calls" msgstr "" -#: src/gui/gui.cc:1330 +#: src/gui/gui.cc:1356 msgid "Rendering" msgstr "Απεικόνιση γραφικών" -#: src/gui/gui.cc:1331 +#: src/gui/gui.cc:1357 msgid "Full window render" msgstr "Απόδοση πλήρους οθόνης" -#: src/gui/gui.cc:1334 +#: src/gui/gui.cc:1360 msgid "Fullscreen" msgstr "Πλήρης οθόνη" -#: src/gui/gui.cc:1338 +#: src/gui/gui.cc:1364 msgid "Show Output Shader Editor" msgstr "" -#: src/gui/gui.cc:1339 +#: src/gui/gui.cc:1365 msgid "Show Offscreen Shader Editor" msgstr "" -#: src/gui/gui.cc:1340 +#: src/gui/gui.cc:1366 msgid "Reset shaders" msgstr "Επαναφορά shaders" -#: src/gui/gui.cc:1348 +#: src/gui/gui.cc:1374 msgid "Help" msgstr "Βοήθεια" -#: src/gui/gui.cc:1349 +#: src/gui/gui.cc:1375 msgid "Show ImGui Demo" msgstr "Προβολή επίδειξης ImGui" -#: src/gui/gui.cc:1351 +#: src/gui/gui.cc:1377 msgid "Show UvFile information" msgstr "Προβολή πληροφοριών UvFile" -#: src/gui/gui.cc:1353 src/gui/gui.cc:2258 +#: src/gui/gui.cc:1379 src/gui/gui.cc:2284 msgid "About" msgstr "Σχετικά" -#: src/gui/gui.cc:1358 +#: src/gui/gui.cc:1384 #, c-format msgid "CPU: %s" msgstr "Επεξεργαστής: %s" -#: src/gui/gui.cc:1360 src/gui/widgets/isobrowser.cc:102 +#: src/gui/gui.cc:1386 src/gui/widgets/isobrowser.cc:102 #, c-format msgid "GAME ID: %s" msgstr "Ταυτότητα παιχνιδιού: %s" -#: src/gui/gui.cc:1363 +#: src/gui/gui.cc:1389 #, c-format msgid "%.2f FPS (%.2f ms)" msgstr "%.2f FPS (%.2f ms)" -#: src/gui/gui.cc:1366 +#: src/gui/gui.cc:1392 #, c-format msgid "%.2f ms audio buffer (%i frames)" msgstr "" -#: src/gui/gui.cc:1368 +#: src/gui/gui.cc:1394 msgid "Idle" msgstr "Αδρανές" -#: src/gui/gui.cc:1449 +#: src/gui/gui.cc:1475 msgid "Logs" msgstr "Καταγραφές" -#: src/gui/gui.cc:1455 +#: src/gui/gui.cc:1481 msgid "Lua Console" msgstr "Κονσόλα Lua" -#: src/gui/gui.cc:1461 +#: src/gui/gui.cc:1487 msgid "Lua Inspector" msgstr "Προβολή Lua" -#: src/gui/gui.cc:1464 +#: src/gui/gui.cc:1490 msgid "Lua Editor" msgstr "Επεξεργαστής Lua" -#: src/gui/gui.cc:1467 +#: src/gui/gui.cc:1493 msgid "Kernel events" msgstr "" -#: src/gui/gui.cc:1470 +#: src/gui/gui.cc:1496 msgid "Kernel handlers" msgstr "" -#: src/gui/gui.cc:1476 +#: src/gui/gui.cc:1502 msgid "Callstacks" msgstr "" -#: src/gui/gui.cc:1525 +#: src/gui/gui.cc:1551 msgid "Memory Card Manager" msgstr "Διαχειριστής Καρτών Μνήμης" -#: src/gui/gui.cc:1529 src/gui/widgets/registers.cc:65 +#: src/gui/gui.cc:1555 src/gui/widgets/registers.cc:65 msgid "Registers" msgstr "Καταχωρητές" -#: src/gui/gui.cc:1533 +#: src/gui/gui.cc:1559 msgid "Assembly" msgstr "Assembly" -#: src/gui/gui.cc:1537 +#: src/gui/gui.cc:1563 msgid "DynaRec Disassembler" msgstr "" -#: src/gui/gui.cc:1541 src/gui/widgets/breakpoints.cc:81 +#: src/gui/gui.cc:1567 src/gui/widgets/breakpoints.cc:81 #: src/gui/widgets/typed_debugger.cc:864 src/gui/widgets/typed_debugger.cc:910 #: src/gui/widgets/typed_debugger.cc:963 msgid "Breakpoints" msgstr "Breakpoints" -#: src/gui/gui.cc:1545 +#: src/gui/gui.cc:1571 msgid "Named Save States" msgstr "" -#: src/gui/gui.cc:1549 src/gui/widgets/memory_observer.cc:382 +#: src/gui/gui.cc:1575 src/gui/widgets/memory_observer.cc:382 #: src/gui/widgets/memory_observer.cc:388 msgid "Memory Observer" msgstr "" -#: src/gui/gui.cc:1553 src/gui/widgets/typed_debugger.cc:1062 +#: src/gui/gui.cc:1579 src/gui/widgets/typed_debugger.cc:1062 msgid "Typed Debugger" msgstr "" -#: src/gui/gui.cc:1559 +#: src/gui/gui.cc:1585 msgid "Output Video" msgstr "" -#: src/gui/gui.cc:1564 +#: src/gui/gui.cc:1590 msgid "Offscreen Render" msgstr "" -#: src/gui/gui.cc:1570 +#: src/gui/gui.cc:1596 msgid "PIO Cartridge Configuration" msgstr "" -#: src/gui/gui.cc:1574 +#: src/gui/gui.cc:1600 msgid "SIO1 Debug" msgstr "" -#: src/gui/gui.cc:1578 +#: src/gui/gui.cc:1604 msgid "ISO Browser" msgstr "" -#: src/gui/gui.cc:1588 +#: src/gui/gui.cc:1614 msgid "GPU Logger" msgstr "" -#: src/gui/gui.cc:1591 +#: src/gui/gui.cc:1617 msgid "UI Configuration" msgstr "Ρυθμίσεις Διεπαφής" -#: src/gui/gui.cc:1597 +#: src/gui/gui.cc:1623 msgid "Locale" msgstr "Γλώσσα" -#: src/gui/gui.cc:1612 +#: src/gui/gui.cc:1638 msgid "Reload locales" msgstr "Επαναφόρτωση γλωσσών" -#: src/gui/gui.cc:1617 +#: src/gui/gui.cc:1643 msgid "Main Font Size" msgstr "Μέγεθος Κύριας Γραμματοσειράς" -#: src/gui/gui.cc:1618 +#: src/gui/gui.cc:1644 msgid "Mono Font Size" msgstr "Μέγεθος Mono Γραμματοσειράς" -#: src/gui/gui.cc:1620 +#: src/gui/gui.cc:1646 msgid "Use Widescreen Aspect Ratio" msgstr "" -#: src/gui/gui.cc:1621 +#: src/gui/gui.cc:1647 msgid "" "Sets the output screen ratio to 16:9 instead of 4:3.\n" "\n" @@ -1468,23 +1441,23 @@ msgid "" "their TV set to match the aspect ratio of the game." msgstr "" -#: src/gui/gui.cc:1640 +#: src/gui/gui.cc:1666 msgid "System Configuration" msgstr "Ρυθμίσεις Συστήματος" -#: src/gui/gui.cc:1642 +#: src/gui/gui.cc:1668 msgid "Preload Disk Image files" msgstr "" -#: src/gui/gui.cc:1643 +#: src/gui/gui.cc:1669 msgid "Enable Auto Update" msgstr "Ενεργοποίηση αυτόματης ενημέρωσης" -#: src/gui/gui.cc:1650 +#: src/gui/gui.cc:1676 msgid "Update configuration" msgstr "Ενημέρωση ρυθμίσεων" -#: src/gui/gui.cc:1651 +#: src/gui/gui.cc:1677 msgid "" "PCSX-Redux can automatically update itself.\n" "\n" @@ -1501,19 +1474,19 @@ msgid "" "Configuration -> System menu." msgstr "" -#: src/gui/gui.cc:1664 +#: src/gui/gui.cc:1690 msgid "Enable auto update" msgstr "Ενεργοποίηση αυτόματης ενημέρωσης" -#: src/gui/gui.cc:1670 +#: src/gui/gui.cc:1696 msgid "No thanks" msgstr "Όχι ευχαριστώ" -#: src/gui/gui.cc:1679 +#: src/gui/gui.cc:1705 msgid "Update available" msgstr "Διαθέσιμη ενημέρωση" -#: src/gui/gui.cc:1681 +#: src/gui/gui.cc:1707 msgid "" "An update is available.\n" "Click 'Update' to download and apply the update.\n" @@ -1523,7 +1496,7 @@ msgid "" "the update and manually apply it." msgstr "" -#: src/gui/gui.cc:1688 +#: src/gui/gui.cc:1714 msgid "" "An update is available.\n" "Click 'Update' to download it. While the update can be\n" @@ -1535,90 +1508,90 @@ msgid "" "the update and manually apply it." msgstr "" -#: src/gui/gui.cc:1699 +#: src/gui/gui.cc:1725 msgid "Update" msgstr "Ενημέρωση" -#: src/gui/gui.cc:1711 src/gui/gui.cc:1716 +#: src/gui/gui.cc:1737 src/gui/gui.cc:1742 msgid "" "An error has occured while downloading\n" "and/or applying the update." msgstr "" -#: src/gui/gui.cc:1722 +#: src/gui/gui.cc:1748 msgid "Download" msgstr "Κατέβασμα" -#: src/gui/gui.cc:1732 +#: src/gui/gui.cc:1758 msgid "An error has occured while downloading the update." msgstr "Ένα σφάλμα προέκυψε κατά το κατέβασμα της αναβάθμισης" -#: src/gui/gui.cc:1738 src/gui/widgets/assembly.cc:947 +#: src/gui/gui.cc:1764 src/gui/widgets/assembly.cc:980 #: src/gui/widgets/breakpoints.cc:38 src/gui/widgets/registers.cc:339 #: src/gui/widgets/sio1.cc:203 msgid "Cancel" msgstr "Ακύρωση" -#: src/gui/gui.cc:1747 +#: src/gui/gui.cc:1773 msgid "UvFiles" msgstr "UvFiles" -#: src/gui/gui.cc:1750 +#: src/gui/gui.cc:1776 #, c-format msgid "Read rate: %s" msgstr "Ρυθμός ανάγνωσης: %s" -#: src/gui/gui.cc:1752 +#: src/gui/gui.cc:1778 #, c-format msgid "Write rate: %s" msgstr "Ρυθμός γραφής: %s" -#: src/gui/gui.cc:1754 +#: src/gui/gui.cc:1780 #, c-format msgid "Download rate: %s" msgstr "Ρυθμός κατεβάσματος: %s" -#: src/gui/gui.cc:1756 +#: src/gui/gui.cc:1782 msgid "Caching" msgstr "" -#: src/gui/gui.cc:1757 src/gui/widgets/memcard_manager.cc:201 +#: src/gui/gui.cc:1783 src/gui/widgets/memcard_manager.cc:201 msgid "Filename" msgstr "Όνομα αρχείου" -#: src/gui/gui.cc:1944 +#: src/gui/gui.cc:1970 msgid "Emulation Configuration" msgstr "Ρυθμίσεις εξομοίωσης" -#: src/gui/gui.cc:1945 +#: src/gui/gui.cc:1971 msgid "Idle Swap Interval" msgstr "" -#: src/gui/gui.cc:1950 +#: src/gui/gui.cc:1976 msgid "Reset Scaler" msgstr "" -#: src/gui/gui.cc:1956 +#: src/gui/gui.cc:1982 msgid "Speed Scaler" msgstr "" -#: src/gui/gui.cc:1958 +#: src/gui/gui.cc:1984 msgid "Enable XA decoder" msgstr "Ενεργοποίηση αποκωδικοποιητή XA" -#: src/gui/gui.cc:1959 +#: src/gui/gui.cc:1985 msgid "Always enable SPU IRQ" msgstr "Πάντα να είναι ενεργοποιημένες οι SPU IRQ" -#: src/gui/gui.cc:1960 +#: src/gui/gui.cc:1986 msgid "Decode MDEC videos in B&W" msgstr "Αποκωδικοποίηση βίντεο MDEC σε ασπρόμαυρο" -#: src/gui/gui.cc:1961 +#: src/gui/gui.cc:1987 msgid "Dynarec CPU" msgstr "Επεξεργαστής Dynarec" -#: src/gui/gui.cc:1969 +#: src/gui/gui.cc:1995 msgid "" "Activates the dynamic recompiler CPU core.\n" "It is significantly faster than the interpreted CPU,\n" @@ -1628,11 +1601,11 @@ msgid "" "this setting may not have any effect for you." msgstr "" -#: src/gui/gui.cc:1975 +#: src/gui/gui.cc:2001 msgid "8MB" msgstr "8MB" -#: src/gui/gui.cc:1976 +#: src/gui/gui.cc:2002 msgid "" "Emulates an installed 8MB system,\n" "instead of the normal 2MB. Useful for working\n" @@ -1642,11 +1615,11 @@ msgstr "" "Σε αντίθεση με τα συνηθισμένα 2MB. Χρήσιμο για\n" "την εργασία με δυαδικά αρχεία development και παιχνίδια" -#: src/gui/gui.cc:1980 +#: src/gui/gui.cc:2006 msgid "OpenGL GPU *ALPHA STATE*" msgstr "OpenGL GPU *Βρισκεται σε πρώιμη κατάσταση*" -#: src/gui/gui.cc:1981 +#: src/gui/gui.cc:2007 msgid "" "Enables the OpenGL GPU renderer.\n" "This is not recommended for normal use at the moment,\n" @@ -1655,23 +1628,23 @@ msgid "" "when changing this setting." msgstr "" -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "NTSC" msgstr "NTSC" -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "PAL" msgstr "PAL" -#: src/gui/gui.cc:1996 +#: src/gui/gui.cc:2022 msgid "System Type" msgstr "Είδος Συστήματος" -#: src/gui/gui.cc:2015 +#: src/gui/gui.cc:2041 msgid "Fast boot" msgstr "Γρήγορη εκκίνηση" -#: src/gui/gui.cc:2016 +#: src/gui/gui.cc:2042 msgid "" "This will cause the BIOS to skip the shell,\n" "which may include additional checks.\n" @@ -1679,37 +1652,37 @@ msgid "" "faster by not displaying the logo." msgstr "" -#: src/gui/gui.cc:2021 +#: src/gui/gui.cc:2047 msgid "BIOS file" msgstr "Αρχείο BIOS" -#: src/gui/gui.cc:2025 src/gui/widgets/assembly.cc:507 +#: src/gui/gui.cc:2051 src/gui/widgets/assembly.cc:542 msgid "Enable Debugger" msgstr "Ενεργοποίηση Αποσφαλματωτή" -#: src/gui/gui.cc:2032 +#: src/gui/gui.cc:2058 msgid "" "This will enable the usage of various breakpoints\n" "throughout the execution of mips code. Enabling this\n" "can slow down emulation to a noticeable extent." msgstr "" -#: src/gui/gui.cc:2035 +#: src/gui/gui.cc:2061 msgid "Enable GDB Server" msgstr "Ενεργοποίηση εξυπηρετητή GDB" -#: src/gui/gui.cc:2044 +#: src/gui/gui.cc:2070 msgid "" "This will activate a gdb-server that you can\n" "connect to with any gdb-remote compliant client.\n" "You also need to enable the debugger." msgstr "" -#: src/gui/gui.cc:2048 +#: src/gui/gui.cc:2074 msgid "GDB send manifest" msgstr "GDB αποστολή manifest" -#: src/gui/gui.cc:2049 +#: src/gui/gui.cc:2075 msgid "" "Enables sending the processor's manifest\n" "from the gdb server. Keep this enabled, unless\n" @@ -1717,135 +1690,135 @@ msgid "" "has a bug in its manifest parser." msgstr "" -#: src/gui/gui.cc:2056 +#: src/gui/gui.cc:2082 msgid "PCSX Logs to GDB" msgstr "" -#: src/gui/gui.cc:2072 +#: src/gui/gui.cc:2098 msgid "GDB Server Port" msgstr "Θύρα εξυπηρετητή GDB" -#: src/gui/gui.cc:2074 +#: src/gui/gui.cc:2100 msgid "GDB Server Trace" msgstr "Trace εξυπηρετητή GDB" -#: src/gui/gui.cc:2075 +#: src/gui/gui.cc:2101 msgid "" "The GDB server will start tracing its\n" "protocol into the logs, which can be helpful to debug\n" "the gdb server system itself." msgstr "" -#: src/gui/gui.cc:2078 +#: src/gui/gui.cc:2104 msgid "Enable Web Server" msgstr "Ενεργοποίηση εξυπηρετητή Web" -#: src/gui/gui.cc:2087 +#: src/gui/gui.cc:2113 msgid "" "This will activate a web-server, that you can\n" "query using a REST api. See the wiki for details.\n" "The debugger might be required in some cases." msgstr "" -#: src/gui/gui.cc:2091 +#: src/gui/gui.cc:2117 msgid "Web Server Port" msgstr "Θύρα Εξυπηρετητή Web" -#: src/gui/gui.cc:2092 +#: src/gui/gui.cc:2118 msgid "Enable SIO1 Server" msgstr "Ενεργοποίηση SIO1 Server" -#: src/gui/gui.cc:2101 +#: src/gui/gui.cc:2127 msgid "" "This will activate a tcp server, that will\n" "relay information between tcp and sio1.\n" "See the wiki for details." msgstr "" -#: src/gui/gui.cc:2105 +#: src/gui/gui.cc:2131 msgid "SIO1 Server Port" msgstr "Θυρίδα εξυπηρετητή SIO1" -#: src/gui/gui.cc:2106 +#: src/gui/gui.cc:2132 msgid "Enable SIO1 Client" msgstr "Ενεργοποίηση SIO1 Client" -#: src/gui/gui.cc:2119 +#: src/gui/gui.cc:2145 msgid "" "This will activate a tcp client, that can connect\n" "to another PCSX-Redux server to relay information between tcp and sio1.\n" "See the wiki for details." msgstr "" -#: src/gui/gui.cc:2123 +#: src/gui/gui.cc:2149 msgid "SIO1 Client Host" msgstr "\"Πελάτης\" SIO1" -#: src/gui/gui.cc:2126 +#: src/gui/gui.cc:2152 msgid "SIO1 Client Port" msgstr "Εξυπηρετητής SIO1" -#: src/gui/gui.cc:2130 +#: src/gui/gui.cc:2156 msgid "Reset SIO" msgstr "Επαναφορά SIO" -#: src/gui/gui.cc:2141 +#: src/gui/gui.cc:2167 msgid "Reconnect" msgstr "Επανασύνδεση" -#: src/gui/gui.cc:2154 +#: src/gui/gui.cc:2180 msgid "SIO1Mode" msgstr "" -#: src/gui/gui.cc:2212 +#: src/gui/gui.cc:2238 msgid "Interrupt Scaler" msgstr "" -#: src/gui/gui.cc:2213 +#: src/gui/gui.cc:2239 msgid "Reset all" msgstr "Επαναφορά όλων" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Cherry##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Classic##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Default theme##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Light##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Dracula##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Mono##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Olive##Theme name" msgstr "" -#: src/gui/gui.cc:2235 +#: src/gui/gui.cc:2261 msgid "Themes" msgstr "Στυλ" -#: src/gui/gui.cc:2266 src/gui/gui.cc:2340 +#: src/gui/gui.cc:2292 src/gui/gui.cc:2366 msgid "Version" msgstr "Έκδοση" -#: src/gui/gui.cc:2271 +#: src/gui/gui.cc:2297 msgid "Copy to clipboard" msgstr "Αντιγραφή στο πρόχειρο" -#: src/gui/gui.cc:2277 +#: src/gui/gui.cc:2303 msgid "" "No version information.\n" "\n" @@ -1855,42 +1828,42 @@ msgstr "" "\n" "Πιθανόν χτίστηκε από τον πηγαίο κώδικα." -#: src/gui/gui.cc:2279 src/gui/gui.cc:2357 +#: src/gui/gui.cc:2305 src/gui/gui.cc:2383 #, c-format msgid "Version: %s" msgstr "Έκδοση: %s" -#: src/gui/gui.cc:2280 +#: src/gui/gui.cc:2306 #, c-format msgid "Changeset: %s" msgstr "Αλλαγές: %s" -#: src/gui/gui.cc:2283 +#: src/gui/gui.cc:2309 #, c-format msgid "Date & time: %s" msgstr "Ημερομηνία & ώρα: %s" -#: src/gui/gui.cc:2292 +#: src/gui/gui.cc:2318 msgid "Authors" msgstr "Συγγραφείς" -#: src/gui/gui.cc:2300 +#: src/gui/gui.cc:2326 msgid "Licenses" msgstr "Άδειες λογισμικού" -#: src/gui/gui.cc:2312 +#: src/gui/gui.cc:2338 msgid "OpenGL information" msgstr "Πληροφορίες OpenGL" -#: src/gui/gui.cc:2314 +#: src/gui/gui.cc:2340 msgid "OpenGL error reporting: enabled" msgstr "Αναφορά σφαλμάτων OpenGL: Ενεργοποιημένη" -#: src/gui/gui.cc:2316 +#: src/gui/gui.cc:2342 msgid "OpenGL error reporting: disabled" msgstr "Αναφορά σφαλμάτων OpenGL: Απενεργοποιημένη" -#: src/gui/gui.cc:2319 +#: src/gui/gui.cc:2345 msgid "" "OpenGL error reporting has been disabled because your OpenGL driver is too " "old. Error reporting requires at least OpenGL 4.3. Please update your " @@ -1900,81 +1873,81 @@ msgid "" "be able to properly report problems accurately." msgstr "" -#: src/gui/gui.cc:2327 +#: src/gui/gui.cc:2353 msgid "Enable OpenGL error reporting" msgstr "Ενεργοποίηση αναφοράς σφαλμάτων OpenGL" -#: src/gui/gui.cc:2330 +#: src/gui/gui.cc:2356 msgid "" "OpenGL error reporting is necessary for properly reporting OpenGL problems. " "However it requires OpenGL 4.3+ and might have performance repercussions on " "some computers. (Requires a restart of the emulator)" msgstr "" -#: src/gui/gui.cc:2334 +#: src/gui/gui.cc:2360 msgid "OpenGL error reporting severity" msgstr "" -#: src/gui/gui.cc:2337 +#: src/gui/gui.cc:2363 #, c-format msgid "Core profile: %s" msgstr "Προφίλ πυρήνα: %s" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "no" msgstr "όχι" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "yes" msgstr "ναι" -#: src/gui/gui.cc:2338 +#: src/gui/gui.cc:2364 msgid "Vendor" msgstr "Πωλητής" -#: src/gui/gui.cc:2339 +#: src/gui/gui.cc:2365 msgid "Renderer" msgstr "" -#: src/gui/gui.cc:2341 +#: src/gui/gui.cc:2367 msgid "Shading language version" msgstr "" -#: src/gui/gui.cc:2344 +#: src/gui/gui.cc:2370 #, c-format msgid "Texture units: %d" msgstr "" -#: src/gui/gui.cc:2347 +#: src/gui/gui.cc:2373 msgid "Extensions:" msgstr "Επεκτάσεις:" -#: src/gui/gui.cc:2356 +#: src/gui/gui.cc:2382 msgid "FFmpeg information" msgstr "Πληροφορίες FFmpeg" -#: src/gui/gui.cc:2358 +#: src/gui/gui.cc:2384 #, c-format msgid "License: %s" msgstr "Άδεια: %s" -#: src/gui/gui.cc:2359 +#: src/gui/gui.cc:2385 #, c-format msgid "Configuration: %s" msgstr "" -#: src/gui/gui.cc:2362 +#: src/gui/gui.cc:2388 msgid "List of supported formats:" msgstr "Λίστα με formats που υποστηρίζονται:" -#: src/gui/gui.cc:2380 +#: src/gui/gui.cc:2406 msgid "" "List of supported codecs: (D: Decoder, E: Encoder, L: Lossy, S: Lossless)" msgstr "" "Λίστα με codecs που υποστηρίζονται: (D: Decoder, E: Encoder, L: Lossy, S: " "Lossless)" -#: src/gui/gui.cc:2420 +#: src/gui/gui.cc:2446 #, c-format msgid "%s codecs" msgstr "%s codecs" @@ -2064,192 +2037,219 @@ msgstr "Trio" msgid "Mask type" msgstr "Είδος μάσκας" -#: src/gui/widgets/assembly.cc:443 +#: src/gui/widgets/assembly.cc:334 +msgid "Go to in Memory Editor #1 (Default Click)" +msgstr "" + +#: src/gui/widgets/assembly.cc:335 +msgid "Go to in Memory Editor #2 (Shift+Click)" +msgstr "" + +#: src/gui/widgets/assembly.cc:336 +msgid "Go to in Memory Editor #3 (Ctrl+Click)" +msgstr "" + +#: src/gui/widgets/assembly.cc:339 +#, fuzzy +msgid "Go to in Memory Editor #{}" +msgstr "Επεξεργαστής μνήμης #" + +#: src/gui/widgets/assembly.cc:346 +#, fuzzy +msgid "Go to in Memory Editor..." +msgstr "Επεξεργαστές μνήμης" + +#: src/gui/widgets/assembly.cc:394 +#, fuzzy, c-format +msgid "Go to in Memory Editor #%d" +msgstr "Επεξεργαστής μνήμης #" + +#: src/gui/widgets/assembly.cc:455 +#, fuzzy, c-format +msgid "Go to in Memory Editor #%u" +msgstr "Επεξεργαστής μνήμης #" + +#: src/gui/widgets/assembly.cc:478 msgid "Load symbols map" msgstr "Φόρτωση χάρτη συμβόλων" -#: src/gui/widgets/assembly.cc:444 +#: src/gui/widgets/assembly.cc:479 msgid "Reset symbols map" msgstr "" -#: src/gui/widgets/assembly.cc:450 src/gui/widgets/assembly.cc:525 +#: src/gui/widgets/assembly.cc:485 src/gui/widgets/assembly.cc:560 msgid "Pause" msgstr "Παύση" -#: src/gui/widgets/assembly.cc:451 src/gui/widgets/assembly.cc:527 +#: src/gui/widgets/assembly.cc:486 src/gui/widgets/assembly.cc:562 #: src/gui/widgets/gpulogger.cc:47 msgid "Resume" msgstr "Συνέχεια" -#: src/gui/widgets/assembly.cc:453 src/gui/widgets/assembly.cc:529 +#: src/gui/widgets/assembly.cc:488 src/gui/widgets/assembly.cc:564 msgid "Step In" msgstr "" #. Options, Filter -#: src/gui/widgets/assembly.cc:459 src/gui/widgets/console.cc:53 +#: src/gui/widgets/assembly.cc:494 src/gui/widgets/console.cc:53 #: src/gui/widgets/dynarec_disassembly.cc:106 msgid "Options" msgstr "Ρυθμίσεις" -#: src/gui/widgets/assembly.cc:460 +#: src/gui/widgets/assembly.cc:495 msgid "Combined pseudo-instructions" msgstr "Συνδυασμός ψευδο-εντολών" -#: src/gui/widgets/assembly.cc:465 +#: src/gui/widgets/assembly.cc:500 msgid "" "When two instructions are detected to be a single pseudo-instruction, " "combine them into the actual pseudo-instruction." msgstr "" -#: src/gui/widgets/assembly.cc:470 +#: src/gui/widgets/assembly.cc:505 msgid "Pseudo-instructions filling" msgstr "" -#: src/gui/widgets/assembly.cc:475 +#: src/gui/widgets/assembly.cc:510 msgid "" "When combining two instructions into a single pseudo-instruction, add a " "placeholder for the second one." msgstr "" -#: src/gui/widgets/assembly.cc:480 +#: src/gui/widgets/assembly.cc:515 msgid "Delay slot notch" msgstr "" -#: src/gui/widgets/assembly.cc:485 +#: src/gui/widgets/assembly.cc:520 msgid "" "Add a small visible notch to indicate instructions that are on the delay " "slot of a branch." msgstr "" -#: src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:524 msgid "Draw arrows for jumps" msgstr "Χρήση βελών για τα jumps" -#: src/gui/widgets/assembly.cc:493 +#: src/gui/widgets/assembly.cc:528 msgid "Display arrows for jumps. This might crowd the display a bit too much." msgstr "" -#: src/gui/widgets/assembly.cc:497 +#: src/gui/widgets/assembly.cc:532 msgid "Columns" msgstr "Στήλες" -#: src/gui/widgets/assembly.cc:516 src/gui/widgets/log.cc:111 +#: src/gui/widgets/assembly.cc:551 src/gui/widgets/log.cc:111 msgid "CPU trace" msgstr "" -#: src/gui/widgets/assembly.cc:518 +#: src/gui/widgets/assembly.cc:553 msgid "Skip ISR" msgstr "" -#: src/gui/widgets/assembly.cc:520 +#: src/gui/widgets/assembly.cc:555 msgid "Follow PC" msgstr "Ακολούθηση PC" -#: src/gui/widgets/assembly.cc:522 +#: src/gui/widgets/assembly.cc:557 msgid "Jump to PC" msgstr "" -#: src/gui/widgets/assembly.cc:535 +#: src/gui/widgets/assembly.cc:570 #, c-format msgid "In ISR: %s" msgstr "" -#: src/gui/widgets/assembly.cc:709 src/gui/widgets/assembly.cc:737 +#: src/gui/widgets/assembly.cc:744 src/gui/widgets/assembly.cc:770 #: src/gui/widgets/breakpoints.cc:171 msgid "GUI" msgstr "Διεπαφή" -#: src/gui/widgets/assembly.cc:718 +#: src/gui/widgets/assembly.cc:753 msgid "Create symbol here" msgstr "Δημιουργία συμβόλου εδώ" -#: src/gui/widgets/assembly.cc:723 +#: src/gui/widgets/assembly.cc:758 msgid "Remove symbol" msgstr "Αφαίρεση συμβόλου" -#: src/gui/widgets/assembly.cc:727 +#: src/gui/widgets/assembly.cc:762 msgid "Copy Address" msgstr "Αντιγραφή διεύθυνσης" -#: src/gui/widgets/assembly.cc:732 src/gui/widgets/registers.cc:39 -msgid "Go to in Memory Editor" -msgstr "" - -#: src/gui/widgets/assembly.cc:735 +#: src/gui/widgets/assembly.cc:768 msgid "Run to Cursor" msgstr "" -#: src/gui/widgets/assembly.cc:744 +#: src/gui/widgets/assembly.cc:777 msgid "Toggle Breakpoint" msgstr "" -#: src/gui/widgets/assembly.cc:748 src/gui/widgets/assembly.cc:753 +#: src/gui/widgets/assembly.cc:781 src/gui/widgets/assembly.cc:786 msgid "Remove Breakpoint" msgstr "" -#: src/gui/widgets/assembly.cc:757 src/gui/widgets/assembly.cc:954 -#: src/gui/widgets/assembly.cc:956 src/gui/widgets/assembly.cc:962 +#: src/gui/widgets/assembly.cc:790 src/gui/widgets/assembly.cc:987 +#: src/gui/widgets/assembly.cc:989 src/gui/widgets/assembly.cc:995 msgid "Assemble" msgstr "" -#: src/gui/widgets/assembly.cc:887 src/gui/widgets/breakpoints.cc:153 +#: src/gui/widgets/assembly.cc:920 src/gui/widgets/breakpoints.cc:153 #: src/gui/widgets/memory_observer.cc:170 #: src/gui/widgets/memory_observer.cc:328 -#: src/gui/widgets/memory_observer.cc:424 -#: src/gui/widgets/typed_debugger.cc:961 +#: src/gui/widgets/memory_observer.cc:424 src/gui/widgets/typed_debugger.cc:961 msgid "Address" msgstr "Διεύθυνση" -#: src/gui/widgets/assembly.cc:901 +#: src/gui/widgets/assembly.cc:934 msgid "RAM base" msgstr "Αρχή RAM:" -#: src/gui/widgets/assembly.cc:910 src/gui/widgets/assembly.cc:1011 +#: src/gui/widgets/assembly.cc:943 src/gui/widgets/assembly.cc:1044 msgid "Symbols" msgstr "Σύμβολα" -#: src/gui/widgets/assembly.cc:936 src/gui/widgets/assembly.cc:938 +#: src/gui/widgets/assembly.cc:969 src/gui/widgets/assembly.cc:971 msgid "Add symbol" msgstr "" -#: src/gui/widgets/assembly.cc:939 +#: src/gui/widgets/assembly.cc:972 #, c-format msgid "Add symbol for address 0x%08x:" msgstr "" -#: src/gui/widgets/assembly.cc:941 +#: src/gui/widgets/assembly.cc:974 msgid "Add" msgstr "" -#: src/gui/widgets/assembly.cc:957 +#: src/gui/widgets/assembly.cc:990 #, c-format msgid "Assemble code for address 0x%08x:" msgstr "" #. Clear items button -#: src/gui/widgets/assembly.cc:982 src/gui/widgets/console.cc:39 +#: src/gui/widgets/assembly.cc:1015 src/gui/widgets/console.cc:39 #: src/gui/widgets/dynarec_disassembly.cc:90 src/gui/widgets/log.cc:128 #: src/gui/widgets/pio-cart.cc:41 src/gui/widgets/typed_debugger.cc:827 msgid "Clear" msgstr "Εκκαθάριση" -#: src/gui/widgets/assembly.cc:984 src/gui/widgets/dynarec_disassembly.cc:73 +#: src/gui/widgets/assembly.cc:1017 src/gui/widgets/dynarec_disassembly.cc:73 msgid "Close" msgstr "Κλείσιμο" -#: src/gui/widgets/assembly.cc:1012 +#: src/gui/widgets/assembly.cc:1045 msgid "Refresh" msgstr "Ανανέωση" -#: src/gui/widgets/assembly.cc:1014 +#: src/gui/widgets/assembly.cc:1047 msgid "Filter" msgstr "Φίλτρο" -#: src/gui/widgets/assembly.cc:1028 +#: src/gui/widgets/assembly.cc:1061 msgid "Code##{}{:08x}" msgstr "Κώδικας##{}{:08x}" -#: src/gui/widgets/assembly.cc:1029 +#: src/gui/widgets/assembly.cc:1062 msgid "Data##{}{:08x}" msgstr "Δεδομένα##{}{:08x}" @@ -2444,8 +2444,8 @@ msgstr "" #: src/gui/widgets/gpulogger.cc:42 msgid "" -"Logs each frame's draw calls. When enabled, all the commands sent to the GPU" -" will be logged and displayed here. This will contain only a single frame " +"Logs each frame's draw calls. When enabled, all the commands sent to the GPU " +"will be logged and displayed here. This will contain only a single frame " "worth of commands. The feature can be pretty demanding in CPU and memory." msgstr "" @@ -2461,10 +2461,10 @@ msgstr "" msgid "" "When enabled, the framebuffer will be constantly redrawned using the " "selected commands, allowing to see the resulting output immediately. This " -"doesn't make sense to have this enabled when: (1) the CPU is running and (2)" -" the GPU logging isn't enabled. Selection of which commands to replay is " -"done using the first checkbox in the logger display below. The [T] button " -"will select all commands for replay from the top and until this command." +"doesn't make sense to have this enabled when: (1) the CPU is running and (2) " +"the GPU logging isn't enabled. Selection of which commands to replay is done " +"using the first checkbox in the logger display below. The [T] button will " +"select all commands for replay from the top and until this command." msgstr "" #: src/gui/widgets/gpulogger.cc:57 @@ -2504,10 +2504,10 @@ msgstr "" #: src/gui/widgets/gpulogger.cc:92 msgid "" -"When enabled, hovering a command in the logger view will highlight it in the" -" vram display. Individual commands can be selected for highlight by using " -"the second checkbox in the logger view. The [B] and [E] buttons can be used " -"to specify the beginning and the end of a span of commands to highlight." +"When enabled, hovering a command in the logger view will highlight it in the " +"vram display. Individual commands can be selected for highlight by using the " +"second checkbox in the logger view. The [B] and [E] buttons can be used to " +"specify the beginning and the end of a span of commands to highlight." msgstr "" #: src/gui/widgets/gpulogger.cc:99 @@ -2749,8 +2749,7 @@ msgstr "" msgid "Clear Undo buffer" msgstr "" -#. Insert or remove memory cards. Send a SIO IRQ to the emulator if this -#. happens as well. +#. Insert or remove memory cards. Send a SIO IRQ to the emulator if this happens as well. #: src/gui/widgets/memcard_manager.cc:156 msgid "Memory Card 1 inserted" msgstr "Σύνδεση της κάρτας μνήμης 1" @@ -2857,7 +2856,7 @@ msgstr "Κάρτα Μνήμης 2" msgid "Import Memory Card file" msgstr "Εισαγωγή αρχείου κάρτας μνήμης" -#: src/gui/widgets/memcard_manager.h:78 +#: src/gui/widgets/memcard_manager.h:77 msgid "Export Memory Card file" msgstr "Εξαγωγή αρχείου κάρτας μνήμης" @@ -2869,8 +2868,7 @@ msgstr "Απλή αναζήτηση" msgid "Pattern" msgstr "" -#: src/gui/widgets/memory_observer.cc:99 -#: src/gui/widgets/memory_observer.cc:288 +#: src/gui/widgets/memory_observer.cc:99 src/gui/widgets/memory_observer.cc:288 msgid "Hex" msgstr "" @@ -3036,6 +3034,10 @@ msgstr "" msgid "Go to in Assembly" msgstr "" +#: src/gui/widgets/registers.cc:39 +msgid "Go to in Memory Editor" +msgstr "" + #: src/gui/widgets/registers.cc:42 msgid "Copy Value" msgstr "" @@ -3162,13 +3164,11 @@ msgstr "" msgid "Display log entries##{}{}" msgstr "" -#: src/gui/widgets/typed_debugger.cc:336 -#: src/gui/widgets/typed_debugger.cc:1067 +#: src/gui/widgets/typed_debugger.cc:336 src/gui/widgets/typed_debugger.cc:1067 msgid "Re-enable##{}" msgstr "" -#: src/gui/widgets/typed_debugger.cc:337 -#: src/gui/widgets/typed_debugger.cc:1068 +#: src/gui/widgets/typed_debugger.cc:337 src/gui/widgets/typed_debugger.cc:1068 msgid "Disable##{}" msgstr "" @@ -3197,7 +3197,11 @@ msgstr "" #: src/gui/widgets/typed_debugger.cc:652 msgid "" -"Data types can be imported from Ghidra using tools/ghidra_scripts/export_redux.py, which will generate a redux_data_types.txt file in its folder, or from any text file where each line specifies the data type's name and fields, separated by semi-colons; fields are specified in type-name-size tuples whose elements are separated by commas.\n" +"Data types can be imported from Ghidra using tools/ghidra_scripts/" +"export_redux.py, which will generate a redux_data_types.txt file in its " +"folder, or from any text file where each line specifies the data type's name " +"and fields, separated by semi-colons; fields are specified in type-name-size " +"tuples whose elements are separated by commas.\n" "\n" "For example:\n" msgstr "" @@ -3216,7 +3220,11 @@ msgstr "" #: src/gui/widgets/typed_debugger.cc:688 msgid "" -"Functions can be imported from Ghidra using tools/ghidra_scripts/export_redux.py, which will generate a redux_funcs.txt file in its folder, or from any text file where each line specifies the function address, name and arguments, separated by semi-colons; arguments are specified in type-name-size tuples whose elements are separated by commas.\n" +"Functions can be imported from Ghidra using tools/ghidra_scripts/" +"export_redux.py, which will generate a redux_funcs.txt file in its folder, " +"or from any text file where each line specifies the function address, name " +"and arguments, separated by semi-colons; arguments are specified in type-" +"name-size tuples whose elements are separated by commas.\n" "\n" "For example:\n" msgstr "" @@ -3486,88 +3494,10 @@ msgstr "" #: src/spu/cfg.cc:90 msgid "" -"Activates SPU IRQs based on writes to the decode/capture buffer. This option" -" is necessary for some games." +"Activates SPU IRQs based on writes to the decode/capture buffer. This option " +"is necessary for some games." msgstr "" -#: src/spu/debug.cc:62 +#: src/spu/debug.cc:581 msgid "SPU Debug" msgstr "" - -#: src/spu/debug.cc:84 -msgid "Mute all" -msgstr "" - -#: src/spu/debug.cc:90 -msgid "Unmute all" -msgstr "" - -#: src/spu/debug.cc:104 -msgid "ADSR channel info" -msgstr "" - -#: src/spu/debug.cc:107 -msgid "" -"Attack:\n" -"Decay:\n" -"Sustain:\n" -"Release:" -msgstr "" - -#: src/spu/debug.cc:115 -msgid "" -"Sustain level:\n" -"Sustain inc:\n" -"Curr adsr vol:\n" -"Raw enveloppe" -msgstr "" - -#: src/spu/debug.cc:123 -msgid "Generic channel info" -msgstr "" - -#: src/spu/debug.cc:127 -msgid "" -"On:\n" -"Stop:\n" -"Noise:\n" -"FMod:\n" -"Reverb:\n" -"Rvb active:\n" -"Rvb number:\n" -"Rvb offset:\n" -"Rvb repeat:" -msgstr "" - -#: src/spu/debug.cc:138 -msgid "" -"Start pos:\n" -"Curr pos:\n" -"Loop pos:\n" -"\n" -"Right vol:\n" -"Left vol:\n" -"\n" -"Act freq:\n" -"Used freq:" -msgstr "" - -#: src/spu/debug.cc:150 -msgid "" -"Freq:\n" -"Stereo:\n" -"Samples:\n" -"Volume:\n" -msgstr "" - -#: src/spu/debug.cc:159 -msgid "Spu states" -msgstr "" - -#: src/spu/debug.cc:160 -msgid "" -"Irq addr:\n" -"Ctrl:\n" -"Stat:\n" -"Spu mem:" -msgstr "" diff --git a/i18n/es_ES.po b/i18n/es_ES.po index f5501ab64..7fab16d7e 100644 --- a/i18n/es_ES.po +++ b/i18n/es_ES.po @@ -165,8 +165,8 @@ msgstr "Escribir mapa de 32 bits" msgid "Step in" msgstr "Avanzar una" -#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:454 -#: src/gui/widgets/assembly.cc:531 +#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:566 msgid "Step Over" msgstr "Salir de" @@ -183,20 +183,20 @@ msgstr "Saltar una (sin pila de llamadas)" msgid "Breakpoint triggered: PC=0x%08x - Cause: %s %s\n" msgstr "Interrupción activada: PC=0x%08x - Motivo: %s %s\n" -#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:455 -#: src/gui/widgets/assembly.cc:533 +#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:490 +#: src/gui/widgets/assembly.cc:568 msgid "Step Out" msgstr "Saltar una" -#: src/core/debug.h:37 +#: src/core/debug.h:36 msgid "Exec" msgstr "Exec" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:285 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:285 msgid "Read" msgstr "Lectura" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:287 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:287 msgid "Write" msgstr "Escritura" @@ -503,7 +503,7 @@ msgstr "Tecla de teclado desconocida: {}" msgid "Keyboard {}" msgstr "Teclado {}" -#: src/core/pad.cc:986 src/gui/gui.cc:1993 +#: src/core/pad.cc:986 src/gui/gui.cc:2019 msgid "Auto" msgstr "Elegir automáticamente" @@ -804,67 +804,37 @@ msgstr "Se ha detectado una OpenBIOS (%08x)\n" msgid "Unknown bios loaded (%08x)\n" msgstr "Se ha cargado una BIOS desconocida (%08x)\n" -#: src/core/psxmem.cc:276 -#, c-format -msgid "8-bit read redirected to Lua for address: %8.8lx\n" -msgstr "Lectura de 8 bits redirigida a Lua en la dirección: %8.8lx\n" - -#: src/core/psxmem.cc:283 +#: src/core/psxmem.cc:282 #, c-format msgid "8-bit read from unknown address: %8.8lx\n" msgstr "Lectura de 8 bits desde dirección desconocida: %8.8lx\n" -#: src/core/psxmem.cc:313 -#, c-format -msgid "16-bit read redirected to Lua for address: %8.8lx\n" -msgstr "Lectura de 16 bits redirigida a Lua en la dirección: %8.8lx\n" - -#: src/core/psxmem.cc:316 +#: src/core/psxmem.cc:314 #, c-format msgid "16-bit read from unknown address: %8.8lx\n" msgstr "Lectura de 16 bits desde dirección desconocida: %8.8lx\n" #: src/core/psxmem.cc:348 #, c-format -msgid "32-bit read redirected to Lua for address: %8.8lx\n" -msgstr "Lectura de 32 bits redirigida a Lua en la dirección: %8.8lx\n" - -#: src/core/psxmem.cc:351 -#, c-format msgid "32-bit read from unknown address: %8.8lx\n" msgstr "Lectura de 32 bits desde dirección desconocida: %8.8lx\n" -#: src/core/psxmem.cc:452 -#, c-format -msgid "8-bit write redirected to Lua for address: %8.8lx\n" -msgstr "Escritura de 8 bits redirigida a Lua en la dirección: %8.8lx\n" - -#: src/core/psxmem.cc:455 +#: src/core/psxmem.cc:451 #, c-format msgid "8-bit write to unknown address: %8.8lx\n" msgstr "Escritura de 8 bits a dirección desconocida: %8.8lx\n" -#: src/core/psxmem.cc:482 -#, c-format -msgid "16-bit write redirected to Lua for address: %8.8lx\n" -msgstr "Escritura de 16 bits redirigida a Lua en la dirección: %8.8lx\n" - -#: src/core/psxmem.cc:485 +#: src/core/psxmem.cc:480 #, c-format msgid "16-bit write to unknown address: %8.8lx\n" msgstr "Escritura de 16 bits a dirección desconocida: %8.8lx\n" -#: src/core/psxmem.cc:523 +#: src/core/psxmem.cc:518 #, c-format msgid "Unknown BIU value: %8.8lx\n" msgstr "Valor BIU desconocido: %8.8lx\n" -#: src/core/psxmem.cc:530 -#, c-format -msgid "32-bit write redirected to Lua for address: %8.8lx\n" -msgstr "Escritura de 32 bits redirigida a Lua en la dirección: %8.8lx\n" - -#: src/core/psxmem.cc:533 +#: src/core/psxmem.cc:527 #, c-format msgid "32-bit write to unknown address: %8.8lx\n" msgstr "Escritura de 32 bits a dirección desconocida: %8.8lx\n" @@ -1010,202 +980,202 @@ msgstr "BIOS" msgid "VRAM" msgstr "VRAM" -#: src/gui/gui.cc:1055 +#: src/gui/gui.cc:1081 msgid "Output" msgstr "Salida" -#: src/gui/gui.cc:1080 src/gui/widgets/assembly.cc:442 +#: src/gui/gui.cc:1106 src/gui/widgets/assembly.cc:477 #: src/gui/widgets/isobrowser.cc:66 src/gui/widgets/memcard_manager.cc:63 #: src/gui/widgets/vram-viewer.cc:482 msgid "File" msgstr "Archivo" -#: src/gui/gui.cc:1081 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 +#: src/gui/gui.cc:1107 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 #: src/gui/widgets/isobrowser.h:50 msgid "Open Disk Image" msgstr "Abrir imagen de disco" -#: src/gui/gui.cc:1082 src/gui/widgets/isobrowser.cc:68 +#: src/gui/gui.cc:1108 src/gui/widgets/isobrowser.cc:68 msgid "Close Disk Image" msgstr "Cerrar imagen de disco" -#: src/gui/gui.cc:1086 +#: src/gui/gui.cc:1112 msgid "Load binary" msgstr "Cargar binario" -#: src/gui/gui.cc:1089 +#: src/gui/gui.cc:1115 msgid "Add Lua archive" msgstr "Añadir archivo Lua" -#: src/gui/gui.cc:1093 +#: src/gui/gui.cc:1119 msgid "Dump save state proto schema" msgstr "Volcar protoesquema del guardado rápido" -#: src/gui/gui.cc:1098 +#: src/gui/gui.cc:1124 msgid "global{}" msgstr "global{}" -#: src/gui/gui.cc:1100 +#: src/gui/gui.cc:1126 msgid "Save state slots" msgstr "Guardar un estado de guardado" -#: src/gui/gui.cc:1101 +#: src/gui/gui.cc:1127 msgid "Quick-save slot" msgstr "Ranura de guardado rápido" -#: src/gui/gui.cc:1106 src/gui/gui.cc:1127 +#: src/gui/gui.cc:1132 src/gui/gui.cc:1153 msgid "Slot {}" msgstr "Ranura {}" -#: src/gui/gui.cc:1113 +#: src/gui/gui.cc:1139 msgid "Show named save states" msgstr "Mostrar estados de guardado con nombres" -#: src/gui/gui.cc:1118 +#: src/gui/gui.cc:1144 msgid "Save global state" msgstr "Guardar estado global" -#: src/gui/gui.cc:1120 +#: src/gui/gui.cc:1146 msgid "Load state slots" msgstr "Cargar un estado de guardado" -#: src/gui/gui.cc:1123 +#: src/gui/gui.cc:1149 msgid "Quick-load slot" msgstr "Ranura de carga rápida" -#: src/gui/gui.cc:1148 +#: src/gui/gui.cc:1174 msgid "Load global state" msgstr "Cargar estado global" -#: src/gui/gui.cc:1152 +#: src/gui/gui.cc:1178 msgid "Open LID" msgstr "Abrir tapa de disco" -#: src/gui/gui.cc:1156 +#: src/gui/gui.cc:1182 msgid "Close LID" msgstr "Cerrar tapa de disco" -#: src/gui/gui.cc:1160 +#: src/gui/gui.cc:1186 msgid "Open and close LID" msgstr "Abrir y volver a cerrar tapa de disco" -#: src/gui/gui.cc:1165 +#: src/gui/gui.cc:1191 msgid "Reboot" msgstr "Reiniciar" -#: src/gui/gui.cc:1168 +#: src/gui/gui.cc:1194 msgid "Quit" msgstr "Salir" -#: src/gui/gui.cc:1174 src/gui/gui.cc:1191 +#: src/gui/gui.cc:1200 src/gui/gui.cc:1217 msgid "Emulation" msgstr "Emulación" -#: src/gui/gui.cc:1175 +#: src/gui/gui.cc:1201 msgid "Start emulation" msgstr "Iniciar emulación" -#: src/gui/gui.cc:1178 +#: src/gui/gui.cc:1204 msgid "Pause emulation" msgstr "Pausar emulación" -#: src/gui/gui.cc:1181 +#: src/gui/gui.cc:1207 msgid "Soft Reset" msgstr "Reinicio rápido" -#: src/gui/gui.cc:1184 +#: src/gui/gui.cc:1210 msgid "Hard Reset" msgstr "Reinicio completo" -#: src/gui/gui.cc:1190 src/gui/widgets/vram-viewer.cc:520 +#: src/gui/gui.cc:1216 src/gui/widgets/vram-viewer.cc:520 msgid "Configuration" msgstr "Configuración" -#: src/gui/gui.cc:1192 +#: src/gui/gui.cc:1218 msgid "Manage Memory Cards" msgstr "Administrar tarjetas de memoria" -#: src/gui/gui.cc:1195 src/gui/gui.cc:1295 +#: src/gui/gui.cc:1221 src/gui/gui.cc:1321 msgid "GPU" msgstr "GPU" -#: src/gui/gui.cc:1196 src/gui/gui.cc:1311 +#: src/gui/gui.cc:1222 src/gui/gui.cc:1337 msgid "SPU" msgstr "SPU" -#: src/gui/gui.cc:1197 +#: src/gui/gui.cc:1223 msgid "UI" msgstr "Interfaz de usuario" -#: src/gui/gui.cc:1198 +#: src/gui/gui.cc:1224 msgid "System" msgstr "Sistema" -#: src/gui/gui.cc:1199 +#: src/gui/gui.cc:1225 msgid "Controls" msgstr "Controles" -#: src/gui/gui.cc:1200 +#: src/gui/gui.cc:1226 msgid "Shader presets" msgstr "Preajustes de shaders" -#: src/gui/gui.cc:1201 +#: src/gui/gui.cc:1227 msgid "Default shader" msgstr "Shader predeterminado" -#: src/gui/gui.cc:1204 +#: src/gui/gui.cc:1230 msgid "CRT-lottes shader" msgstr "Shader CRT-lottes" -#: src/gui/gui.cc:1231 +#: src/gui/gui.cc:1257 msgid "Configure Shaders" msgstr "Configurar shaders" -#: src/gui/gui.cc:1235 +#: src/gui/gui.cc:1261 msgid "PIO Cartridge" msgstr "Cartucho PIO" -#: src/gui/gui.cc:1239 src/gui/widgets/assembly.cc:449 +#: src/gui/gui.cc:1265 src/gui/widgets/assembly.cc:484 msgid "Debug" msgstr "Depurador" -#: src/gui/gui.cc:1240 +#: src/gui/gui.cc:1266 msgid "Show Logs" msgstr "Mostrar registros" -#: src/gui/gui.cc:1241 +#: src/gui/gui.cc:1267 msgid "Lua" msgstr "Lua" -#: src/gui/gui.cc:1242 +#: src/gui/gui.cc:1268 msgid "Show Lua Console" msgstr "Mostrar consola Lua" -#: src/gui/gui.cc:1243 +#: src/gui/gui.cc:1269 msgid "Show Lua Inspector" msgstr "Mostrar inspector de Lua" -#: src/gui/gui.cc:1244 +#: src/gui/gui.cc:1270 msgid "Show Lua editor" msgstr "Mostrar editor de Lua" -#: src/gui/gui.cc:1248 +#: src/gui/gui.cc:1274 msgid "CPU" msgstr "CPU" -#: src/gui/gui.cc:1249 +#: src/gui/gui.cc:1275 msgid "Show Registers" msgstr "Mostrar registros" -#: src/gui/gui.cc:1250 +#: src/gui/gui.cc:1276 msgid "Show Assembly" msgstr "Mostrar ensamblador" -#: src/gui/gui.cc:1252 src/gui/gui.cc:1254 +#: src/gui/gui.cc:1278 src/gui/gui.cc:1280 msgid "Show DynaRec Disassembly" msgstr "Mostrar desensamblador del DynaRec" -#: src/gui/gui.cc:1256 +#: src/gui/gui.cc:1282 msgid "" "DynaRec Disassembler is not available in Interpreted CPU mode. Try enabling [Dynarec CPU]\n" "in Configuration->Emulation, restart PCSX-Redux, then try again." @@ -1215,270 +1185,270 @@ msgstr "" "[CPU DynaRec] dentro de Configuración->Emulación,\n" "reinicia PCSX-Redux y vuelve a intentarlo." -#: src/gui/gui.cc:1259 +#: src/gui/gui.cc:1285 msgid "Show Breakpoints" msgstr "Mostrar puntos de interrupción" -#: src/gui/gui.cc:1260 +#: src/gui/gui.cc:1286 msgid "Show Callstacks" msgstr "Mostrar pilas de llamadas" -#: src/gui/gui.cc:1261 +#: src/gui/gui.cc:1287 msgid "Memory Editors" msgstr "Editores de memoria" -#: src/gui/gui.cc:1272 +#: src/gui/gui.cc:1298 msgid "Show Memory Observer" msgstr "Mostrar observador de memoria" -#: src/gui/gui.cc:1273 +#: src/gui/gui.cc:1299 msgid "Show Typed Debugger" msgstr "Mostrar depurador con tipos" -#: src/gui/gui.cc:1274 +#: src/gui/gui.cc:1300 msgid "Show Interrupts Scaler" msgstr "Mostrar escalador de interrupciones" -#: src/gui/gui.cc:1275 +#: src/gui/gui.cc:1301 msgid "First Chance Exceptions" msgstr "Primeras excepciones" -#: src/gui/gui.cc:1296 +#: src/gui/gui.cc:1322 msgid "VRAM viewers" msgstr "Visualizadores de la VRAM" -#: src/gui/gui.cc:1297 +#: src/gui/gui.cc:1323 msgid "Show main VRAM viewer" msgstr "Mostrar visualizador de VRAM principal" -#: src/gui/gui.cc:1298 +#: src/gui/gui.cc:1324 msgid "Show CLUT VRAM viewer" msgstr "Mostrar selector de CLUT de la VRAM" -#: src/gui/gui.cc:1301 +#: src/gui/gui.cc:1327 msgid "Show VRAM viewer #" msgstr "Mostrar visualizador de VRAM " -#: src/gui/gui.cc:1307 +#: src/gui/gui.cc:1333 msgid "Show GPU logger" msgstr "Mostrar registro de GPU" -#: src/gui/gui.cc:1308 +#: src/gui/gui.cc:1334 msgid "Show GPU debug" msgstr "Mostrar depurador de GPU" -#: src/gui/gui.cc:1312 +#: src/gui/gui.cc:1338 msgid "Show SPU debug" msgstr "Mostrar depurador de SPU" -#: src/gui/gui.cc:1315 +#: src/gui/gui.cc:1341 msgid "CD-Rom" msgstr "CD-ROM" -#: src/gui/gui.cc:1316 +#: src/gui/gui.cc:1342 msgid "Show Iso Browser" msgstr "Mostrar explorador de ISO" -#: src/gui/gui.cc:1319 +#: src/gui/gui.cc:1345 msgid "Misc hardware" msgstr "Otro hardware" -#: src/gui/gui.cc:1320 +#: src/gui/gui.cc:1346 msgid "Show SIO1 debug" msgstr "Mostrar depurador de SIO1" -#: src/gui/gui.cc:1324 +#: src/gui/gui.cc:1350 msgid "Kernel" msgstr "Kernel" -#: src/gui/gui.cc:1325 +#: src/gui/gui.cc:1351 msgid "Kernel Events" msgstr "Eventos del kernel" -#: src/gui/gui.cc:1326 +#: src/gui/gui.cc:1352 msgid "Kernel Handlers" msgstr "Controladores del kernel" -#: src/gui/gui.cc:1327 src/gui/gui.cc:1473 +#: src/gui/gui.cc:1353 src/gui/gui.cc:1499 msgid "Kernel Calls" msgstr "Llamadas al kernel" -#: src/gui/gui.cc:1330 +#: src/gui/gui.cc:1356 msgid "Rendering" msgstr "Renderizado" -#: src/gui/gui.cc:1331 +#: src/gui/gui.cc:1357 msgid "Full window render" msgstr "Renderizar en toda la ventana" -#: src/gui/gui.cc:1334 +#: src/gui/gui.cc:1360 msgid "Fullscreen" msgstr "Pantalla completa" -#: src/gui/gui.cc:1338 +#: src/gui/gui.cc:1364 msgid "Show Output Shader Editor" msgstr "Mostrar editor de shaders de salida" -#: src/gui/gui.cc:1339 +#: src/gui/gui.cc:1365 msgid "Show Offscreen Shader Editor" msgstr "Mostrar editor de shaders fuera de pantalla" -#: src/gui/gui.cc:1340 +#: src/gui/gui.cc:1366 msgid "Reset shaders" msgstr "Reiniciar shaders" -#: src/gui/gui.cc:1348 +#: src/gui/gui.cc:1374 msgid "Help" msgstr "Ayuda" -#: src/gui/gui.cc:1349 +#: src/gui/gui.cc:1375 msgid "Show ImGui Demo" msgstr "Mostrar demostración de ImGui" -#: src/gui/gui.cc:1351 +#: src/gui/gui.cc:1377 msgid "Show UvFile information" msgstr "Mostrar información de UvFile" -#: src/gui/gui.cc:1353 src/gui/gui.cc:2258 +#: src/gui/gui.cc:1379 src/gui/gui.cc:2284 msgid "About" msgstr "Acerca de" -#: src/gui/gui.cc:1358 +#: src/gui/gui.cc:1384 #, c-format msgid "CPU: %s" msgstr "CPU: %s" -#: src/gui/gui.cc:1360 src/gui/widgets/isobrowser.cc:102 +#: src/gui/gui.cc:1386 src/gui/widgets/isobrowser.cc:102 #, c-format msgid "GAME ID: %s" msgstr "ID de juego: %s" -#: src/gui/gui.cc:1363 +#: src/gui/gui.cc:1389 #, c-format msgid "%.2f FPS (%.2f ms)" msgstr "%.2f FPS (%.2f ms)" -#: src/gui/gui.cc:1366 +#: src/gui/gui.cc:1392 #, c-format msgid "%.2f ms audio buffer (%i frames)" msgstr "Búfer de audio de %.2f ms (%i fotogramas)" -#: src/gui/gui.cc:1368 +#: src/gui/gui.cc:1394 msgid "Idle" msgstr "Inactivo" -#: src/gui/gui.cc:1449 +#: src/gui/gui.cc:1475 msgid "Logs" msgstr "Registros" -#: src/gui/gui.cc:1455 +#: src/gui/gui.cc:1481 msgid "Lua Console" msgstr "Consola Lua" -#: src/gui/gui.cc:1461 +#: src/gui/gui.cc:1487 msgid "Lua Inspector" msgstr "Inspector de Lua" -#: src/gui/gui.cc:1464 +#: src/gui/gui.cc:1490 msgid "Lua Editor" msgstr "Editor de Lua" -#: src/gui/gui.cc:1467 +#: src/gui/gui.cc:1493 msgid "Kernel events" msgstr "Eventos del kernel" -#: src/gui/gui.cc:1470 +#: src/gui/gui.cc:1496 msgid "Kernel handlers" msgstr "Controladores del kernel" -#: src/gui/gui.cc:1476 +#: src/gui/gui.cc:1502 msgid "Callstacks" msgstr "Pilas de llamadas" -#: src/gui/gui.cc:1525 +#: src/gui/gui.cc:1551 msgid "Memory Card Manager" msgstr "Administrador de tarjetas de memoria" -#: src/gui/gui.cc:1529 src/gui/widgets/registers.cc:65 +#: src/gui/gui.cc:1555 src/gui/widgets/registers.cc:65 msgid "Registers" msgstr "Registros" -#: src/gui/gui.cc:1533 +#: src/gui/gui.cc:1559 msgid "Assembly" msgstr "Ensamblador" -#: src/gui/gui.cc:1537 +#: src/gui/gui.cc:1563 msgid "DynaRec Disassembler" msgstr "Desensamblador del DynaRec" -#: src/gui/gui.cc:1541 src/gui/widgets/breakpoints.cc:81 +#: src/gui/gui.cc:1567 src/gui/widgets/breakpoints.cc:81 #: src/gui/widgets/typed_debugger.cc:864 src/gui/widgets/typed_debugger.cc:910 #: src/gui/widgets/typed_debugger.cc:963 msgid "Breakpoints" msgstr "Puntos de interrupción" -#: src/gui/gui.cc:1545 +#: src/gui/gui.cc:1571 msgid "Named Save States" msgstr "Estados de guardado con nombres" -#: src/gui/gui.cc:1549 src/gui/widgets/memory_observer.cc:382 +#: src/gui/gui.cc:1575 src/gui/widgets/memory_observer.cc:382 #: src/gui/widgets/memory_observer.cc:388 msgid "Memory Observer" msgstr "Observador de memoria" -#: src/gui/gui.cc:1553 src/gui/widgets/typed_debugger.cc:1062 +#: src/gui/gui.cc:1579 src/gui/widgets/typed_debugger.cc:1062 msgid "Typed Debugger" msgstr "Depurador con tipos" -#: src/gui/gui.cc:1559 +#: src/gui/gui.cc:1585 msgid "Output Video" msgstr "Salida de vídeo" -#: src/gui/gui.cc:1564 +#: src/gui/gui.cc:1590 msgid "Offscreen Render" msgstr "Renderizado de elementos fuera de pantalla" -#: src/gui/gui.cc:1570 +#: src/gui/gui.cc:1596 msgid "PIO Cartridge Configuration" msgstr "Configuración del cartucho PIO" -#: src/gui/gui.cc:1574 +#: src/gui/gui.cc:1600 msgid "SIO1 Debug" msgstr "Depurador de SIO1" -#: src/gui/gui.cc:1578 +#: src/gui/gui.cc:1604 msgid "ISO Browser" msgstr "Explorador de ISO" -#: src/gui/gui.cc:1588 +#: src/gui/gui.cc:1614 msgid "GPU Logger" msgstr "Registro de GPU" -#: src/gui/gui.cc:1591 +#: src/gui/gui.cc:1617 msgid "UI Configuration" msgstr "Configuración de la interfaz de usuario" -#: src/gui/gui.cc:1597 +#: src/gui/gui.cc:1623 msgid "Locale" msgstr "Idioma" -#: src/gui/gui.cc:1612 +#: src/gui/gui.cc:1638 msgid "Reload locales" msgstr "Volver a cargar idiomas" -#: src/gui/gui.cc:1617 +#: src/gui/gui.cc:1643 msgid "Main Font Size" msgstr "Tamaño de la fuente principal" -#: src/gui/gui.cc:1618 +#: src/gui/gui.cc:1644 msgid "Mono Font Size" msgstr "Tamaño de la fuente monoespaciada" -#: src/gui/gui.cc:1620 +#: src/gui/gui.cc:1646 msgid "Use Widescreen Aspect Ratio" msgstr "Usar relación de aspecto panorámica" -#: src/gui/gui.cc:1621 +#: src/gui/gui.cc:1647 msgid "" "Sets the output screen ratio to 16:9 instead of 4:3.\n" "\n" @@ -1507,23 +1477,23 @@ msgstr "" "su televisor para que coincida con la relación de aspecto\n" "del juego." -#: src/gui/gui.cc:1640 +#: src/gui/gui.cc:1666 msgid "System Configuration" msgstr "Configuración del sistema" -#: src/gui/gui.cc:1642 +#: src/gui/gui.cc:1668 msgid "Preload Disk Image files" msgstr "Precargar imágenes de disco" -#: src/gui/gui.cc:1643 +#: src/gui/gui.cc:1669 msgid "Enable Auto Update" msgstr "Activar actualizaciones automáticas" -#: src/gui/gui.cc:1650 +#: src/gui/gui.cc:1676 msgid "Update configuration" msgstr "Configuración de actualizaciones" -#: src/gui/gui.cc:1651 +#: src/gui/gui.cc:1677 msgid "" "PCSX-Redux can automatically update itself.\n" "\n" @@ -1555,19 +1525,19 @@ msgstr "" "Si quieres cambiar este ajuste más tarde, puedes hacerlo\n" "en el menú Configuración -> Sistema." -#: src/gui/gui.cc:1664 +#: src/gui/gui.cc:1690 msgid "Enable auto update" msgstr "Activar actualizaciones automáticas" -#: src/gui/gui.cc:1670 +#: src/gui/gui.cc:1696 msgid "No thanks" msgstr "No, gracias" -#: src/gui/gui.cc:1679 +#: src/gui/gui.cc:1705 msgid "Update available" msgstr "Actualización disponible" -#: src/gui/gui.cc:1681 +#: src/gui/gui.cc:1707 msgid "" "An update is available.\n" "Click 'Update' to download and apply the update.\n" @@ -1584,7 +1554,7 @@ msgstr "" "Pulsa en «Descargar» para obtener la actualización\n" "con tu navegador web y aplicarla manualmente." -#: src/gui/gui.cc:1688 +#: src/gui/gui.cc:1714 msgid "" "An update is available.\n" "Click 'Update' to download it. While the update can be\n" @@ -1606,11 +1576,11 @@ msgstr "" "Pulsa en «Descargar» para obtener la actualización\n" "con tu navegador web y aplicarla manualmente." -#: src/gui/gui.cc:1699 +#: src/gui/gui.cc:1725 msgid "Update" msgstr "Actualizar" -#: src/gui/gui.cc:1711 src/gui/gui.cc:1716 +#: src/gui/gui.cc:1737 src/gui/gui.cc:1742 msgid "" "An error has occured while downloading\n" "and/or applying the update." @@ -1618,80 +1588,80 @@ msgstr "" "Ha habido un error al descargar\n" "o aplicar la actualización." -#: src/gui/gui.cc:1722 +#: src/gui/gui.cc:1748 msgid "Download" msgstr "Descargar" -#: src/gui/gui.cc:1732 +#: src/gui/gui.cc:1758 msgid "An error has occured while downloading the update." msgstr "Ha habido un error al descargar la actualización." -#: src/gui/gui.cc:1738 src/gui/widgets/assembly.cc:947 +#: src/gui/gui.cc:1764 src/gui/widgets/assembly.cc:980 #: src/gui/widgets/breakpoints.cc:38 src/gui/widgets/registers.cc:339 #: src/gui/widgets/sio1.cc:203 msgid "Cancel" msgstr "Cancelar" -#: src/gui/gui.cc:1747 +#: src/gui/gui.cc:1773 msgid "UvFiles" msgstr "UvFiles" -#: src/gui/gui.cc:1750 +#: src/gui/gui.cc:1776 #, c-format msgid "Read rate: %s" msgstr "Tasa de lectura: %s" -#: src/gui/gui.cc:1752 +#: src/gui/gui.cc:1778 #, c-format msgid "Write rate: %s" msgstr "Tasa de escritura: %s" -#: src/gui/gui.cc:1754 +#: src/gui/gui.cc:1780 #, c-format msgid "Download rate: %s" msgstr "Velocidad de descarga: %s" -#: src/gui/gui.cc:1756 +#: src/gui/gui.cc:1782 msgid "Caching" msgstr "Caché" -#: src/gui/gui.cc:1757 src/gui/widgets/memcard_manager.cc:201 +#: src/gui/gui.cc:1783 src/gui/widgets/memcard_manager.cc:201 msgid "Filename" msgstr "Nombre de archivo" -#: src/gui/gui.cc:1944 +#: src/gui/gui.cc:1970 msgid "Emulation Configuration" msgstr "Configuración de emulación" -#: src/gui/gui.cc:1945 +#: src/gui/gui.cc:1971 msgid "Idle Swap Interval" msgstr "Intervalo de intercambio de inactividad" -#: src/gui/gui.cc:1950 +#: src/gui/gui.cc:1976 msgid "Reset Scaler" msgstr "Reiniciar escalador" -#: src/gui/gui.cc:1956 +#: src/gui/gui.cc:1982 msgid "Speed Scaler" msgstr "Escalador de velocidad" -#: src/gui/gui.cc:1958 +#: src/gui/gui.cc:1984 msgid "Enable XA decoder" msgstr "Activar decodificador XA" -#: src/gui/gui.cc:1959 +#: src/gui/gui.cc:1985 msgid "Always enable SPU IRQ" msgstr "Activar siempre las IRQ de la SPU" -#: src/gui/gui.cc:1960 +#: src/gui/gui.cc:1986 msgid "Decode MDEC videos in B&W" msgstr "Decodificar vídeos MDEC en blanco y negro" -#: src/gui/gui.cc:1961 +#: src/gui/gui.cc:1987 msgid "Dynarec CPU" msgstr "CPU DynaRec" -#: src/gui/gui.cc:1969 +#: src/gui/gui.cc:1995 msgid "" "Activates the dynamic recompiler CPU core.\n" "It is significantly faster than the interpreted CPU,\n" @@ -1709,11 +1679,11 @@ msgstr "" "las CPU, por lo que este ajuste podría no cambiar\n" "nada en tu caso." -#: src/gui/gui.cc:1975 +#: src/gui/gui.cc:2001 msgid "8MB" msgstr "8 MB" -#: src/gui/gui.cc:1976 +#: src/gui/gui.cc:2002 msgid "" "Emulates an installed 8MB system,\n" "instead of the normal 2MB. Useful for working\n" @@ -1723,11 +1693,11 @@ msgstr "" "de 2 MB, que es lo normal. Ideal para versiones\n" "en desarrollo de binarios y juegos." -#: src/gui/gui.cc:1980 +#: src/gui/gui.cc:2006 msgid "OpenGL GPU *ALPHA STATE*" msgstr "GPU por OpenGL *EN ESTADO PRELIMINAR/ALFA*" -#: src/gui/gui.cc:1981 +#: src/gui/gui.cc:2007 msgid "" "Enables the OpenGL GPU renderer.\n" "This is not recommended for normal use at the moment,\n" @@ -1742,23 +1712,23 @@ msgstr "" "por software. Es necesario reiniciar al cambiar\n" "este ajuste." -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "NTSC" msgstr "NTSC" -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "PAL" msgstr "PAL" -#: src/gui/gui.cc:1996 +#: src/gui/gui.cc:2022 msgid "System Type" msgstr "Tipo de sistema" -#: src/gui/gui.cc:2015 +#: src/gui/gui.cc:2041 msgid "Fast boot" msgstr "Arranque rápido" -#: src/gui/gui.cc:2016 +#: src/gui/gui.cc:2042 msgid "" "This will cause the BIOS to skip the shell,\n" "which may include additional checks.\n" @@ -1770,15 +1740,15 @@ msgstr "" "También reducirá considerablemente\n" "el tiempo de arranque al no mostrar el logotipo." -#: src/gui/gui.cc:2021 +#: src/gui/gui.cc:2047 msgid "BIOS file" msgstr "Archivo de BIOS" -#: src/gui/gui.cc:2025 src/gui/widgets/assembly.cc:507 +#: src/gui/gui.cc:2051 src/gui/widgets/assembly.cc:542 msgid "Enable Debugger" msgstr "Activar depurador" -#: src/gui/gui.cc:2032 +#: src/gui/gui.cc:2058 msgid "" "This will enable the usage of various breakpoints\n" "throughout the execution of mips code. Enabling this\n" @@ -1788,11 +1758,11 @@ msgstr "" "de interrupción durante la ejecución del código MIPS.\n" "Podría ralentizar la emulación en gran medida." -#: src/gui/gui.cc:2035 +#: src/gui/gui.cc:2061 msgid "Enable GDB Server" msgstr "Activar servidor GDB" -#: src/gui/gui.cc:2044 +#: src/gui/gui.cc:2070 msgid "" "This will activate a gdb-server that you can\n" "connect to with any gdb-remote compliant client.\n" @@ -1803,11 +1773,11 @@ msgstr "" "con gdb-remote. Es necesario activar también\n" "el depurador." -#: src/gui/gui.cc:2048 +#: src/gui/gui.cc:2074 msgid "GDB send manifest" msgstr "Enviar manifiesto por GDB" -#: src/gui/gui.cc:2049 +#: src/gui/gui.cc:2075 msgid "" "Enables sending the processor's manifest\n" "from the gdb server. Keep this enabled, unless\n" @@ -1820,19 +1790,19 @@ msgstr "" "a este servidor, ya que IDA tiene un defecto\n" "en su analizador de manifiestos." -#: src/gui/gui.cc:2056 +#: src/gui/gui.cc:2082 msgid "PCSX Logs to GDB" msgstr "Enviar registros de PCSX a GDB" -#: src/gui/gui.cc:2072 +#: src/gui/gui.cc:2098 msgid "GDB Server Port" msgstr "Puerto de servidor GDB" -#: src/gui/gui.cc:2074 +#: src/gui/gui.cc:2100 msgid "GDB Server Trace" msgstr "Seguimiento del servidor GDB" -#: src/gui/gui.cc:2075 +#: src/gui/gui.cc:2101 msgid "" "The GDB server will start tracing its\n" "protocol into the logs, which can be helpful to debug\n" @@ -1842,11 +1812,11 @@ msgstr "" "un seguimiento de su protocolo. Esto puede servir\n" "para depurar el sistema del servidor GDB." -#: src/gui/gui.cc:2078 +#: src/gui/gui.cc:2104 msgid "Enable Web Server" msgstr "Activar servidor web" -#: src/gui/gui.cc:2087 +#: src/gui/gui.cc:2113 msgid "" "This will activate a web-server, that you can\n" "query using a REST api. See the wiki for details.\n" @@ -1857,15 +1827,15 @@ msgstr "" "más información en la wiki. En algunos casos\n" "podrías necesitar que el depurador esté activado." -#: src/gui/gui.cc:2091 +#: src/gui/gui.cc:2117 msgid "Web Server Port" msgstr "Puerto del servidor web" -#: src/gui/gui.cc:2092 +#: src/gui/gui.cc:2118 msgid "Enable SIO1 Server" msgstr "Activar servidor SIO1" -#: src/gui/gui.cc:2101 +#: src/gui/gui.cc:2127 msgid "" "This will activate a tcp server, that will\n" "relay information between tcp and sio1.\n" @@ -1875,15 +1845,15 @@ msgstr "" "información entre el protocolo TCP y SIO1.\n" "Encontrarás más información en la wiki." -#: src/gui/gui.cc:2105 +#: src/gui/gui.cc:2131 msgid "SIO1 Server Port" msgstr "Puerto del servidor de SIO1" -#: src/gui/gui.cc:2106 +#: src/gui/gui.cc:2132 msgid "Enable SIO1 Client" msgstr "Activar cliente SIO1" -#: src/gui/gui.cc:2119 +#: src/gui/gui.cc:2145 msgid "" "This will activate a tcp client, that can connect\n" "to another PCSX-Redux server to relay information between tcp and sio1.\n" @@ -1894,75 +1864,75 @@ msgstr "" "y transmitir información entre el protocolo TCP\n" "y SIO1. Encontrarás más información en la wiki." -#: src/gui/gui.cc:2123 +#: src/gui/gui.cc:2149 msgid "SIO1 Client Host" msgstr "Host del cliente SIO1" -#: src/gui/gui.cc:2126 +#: src/gui/gui.cc:2152 msgid "SIO1 Client Port" msgstr "Puerto del cliente SIO1" -#: src/gui/gui.cc:2130 +#: src/gui/gui.cc:2156 msgid "Reset SIO" msgstr "Reiniciar SIO" -#: src/gui/gui.cc:2141 +#: src/gui/gui.cc:2167 msgid "Reconnect" msgstr "Volver a conectar" -#: src/gui/gui.cc:2154 +#: src/gui/gui.cc:2180 msgid "SIO1Mode" msgstr "SIO1Mode" -#: src/gui/gui.cc:2212 +#: src/gui/gui.cc:2238 msgid "Interrupt Scaler" msgstr "Escalador de interrupciones" -#: src/gui/gui.cc:2213 +#: src/gui/gui.cc:2239 msgid "Reset all" msgstr "Reiniciar todo" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Cherry##Theme name" msgstr "Rojo cereza##Theme name" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Classic##Theme name" msgstr "Clásico##Theme name" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Default theme##Theme name" msgstr "Tema predeterminado##Theme name" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Light##Theme name" msgstr "Claro##Theme name" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Dracula##Theme name" msgstr "Drácula##Theme name" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Mono##Theme name" msgstr "Mono##Theme name" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Olive##Theme name" msgstr "Oliva##Theme name" -#: src/gui/gui.cc:2235 +#: src/gui/gui.cc:2261 msgid "Themes" msgstr "Temas" -#: src/gui/gui.cc:2266 src/gui/gui.cc:2340 +#: src/gui/gui.cc:2292 src/gui/gui.cc:2366 msgid "Version" msgstr "Versión" -#: src/gui/gui.cc:2271 +#: src/gui/gui.cc:2297 msgid "Copy to clipboard" msgstr "Copiar al portapapeles" -#: src/gui/gui.cc:2277 +#: src/gui/gui.cc:2303 msgid "" "No version information.\n" "\n" @@ -1973,42 +1943,42 @@ msgstr "" "Probablemente haya sido compilada a partir\n" "de los archivos fuente." -#: src/gui/gui.cc:2279 src/gui/gui.cc:2357 +#: src/gui/gui.cc:2305 src/gui/gui.cc:2383 #, c-format msgid "Version: %s" msgstr "Versión: %s" -#: src/gui/gui.cc:2280 +#: src/gui/gui.cc:2306 #, c-format msgid "Changeset: %s" msgstr "Conjunto de cambios: %s" -#: src/gui/gui.cc:2283 +#: src/gui/gui.cc:2309 #, c-format msgid "Date & time: %s" msgstr "Fecha y hora: %s" -#: src/gui/gui.cc:2292 +#: src/gui/gui.cc:2318 msgid "Authors" msgstr "Autores" -#: src/gui/gui.cc:2300 +#: src/gui/gui.cc:2326 msgid "Licenses" msgstr "Licencias" -#: src/gui/gui.cc:2312 +#: src/gui/gui.cc:2338 msgid "OpenGL information" msgstr "Información sobre OpenGL" -#: src/gui/gui.cc:2314 +#: src/gui/gui.cc:2340 msgid "OpenGL error reporting: enabled" msgstr "Informe de errores de OpenGL: activado" -#: src/gui/gui.cc:2316 +#: src/gui/gui.cc:2342 msgid "OpenGL error reporting: disabled" msgstr "Informe de errores de OpenGL: desactivado" -#: src/gui/gui.cc:2319 +#: src/gui/gui.cc:2345 msgid "" "OpenGL error reporting has been disabled because your OpenGL driver is too " "old. Error reporting requires at least OpenGL 4.3. Please update your " @@ -2026,11 +1996,11 @@ msgstr "" "pero ciertos códigos personalizados, como el editor de shaders, no podrán " "informar debidamente de cualquier problema que pueda ocurrir." -#: src/gui/gui.cc:2327 +#: src/gui/gui.cc:2353 msgid "Enable OpenGL error reporting" msgstr "Activar informe de errores de OpenGL" -#: src/gui/gui.cc:2330 +#: src/gui/gui.cc:2356 msgid "" "OpenGL error reporting is necessary for properly reporting OpenGL problems. " "However it requires OpenGL 4.3+ and might have performance repercussions on " @@ -2041,70 +2011,70 @@ msgstr "" "necesaria la versión 4.3 o superior de OpenGL y esto podría afectar al " "rendimiento de algunos equipos (es necesario reiniciar el emulador)." -#: src/gui/gui.cc:2334 +#: src/gui/gui.cc:2360 msgid "OpenGL error reporting severity" msgstr "Gravedad de los informes de errores de OpenGL" -#: src/gui/gui.cc:2337 +#: src/gui/gui.cc:2363 #, c-format msgid "Core profile: %s" msgstr "Perfil de núcleo: %s" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "no" msgstr "no" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "yes" msgstr "sí" -#: src/gui/gui.cc:2338 +#: src/gui/gui.cc:2364 msgid "Vendor" msgstr "Proveedor" -#: src/gui/gui.cc:2339 +#: src/gui/gui.cc:2365 msgid "Renderer" msgstr "Renderizador" -#: src/gui/gui.cc:2341 +#: src/gui/gui.cc:2367 msgid "Shading language version" msgstr "Versión del lenguaje de shaders" -#: src/gui/gui.cc:2344 +#: src/gui/gui.cc:2370 #, c-format msgid "Texture units: %d" msgstr "Unidades de textura: %d" -#: src/gui/gui.cc:2347 +#: src/gui/gui.cc:2373 msgid "Extensions:" msgstr "Extensiones:" -#: src/gui/gui.cc:2356 +#: src/gui/gui.cc:2382 msgid "FFmpeg information" msgstr "Información sobre FFmpeg" -#: src/gui/gui.cc:2358 +#: src/gui/gui.cc:2384 #, c-format msgid "License: %s" msgstr "Licencia: %s" -#: src/gui/gui.cc:2359 +#: src/gui/gui.cc:2385 #, c-format msgid "Configuration: %s" msgstr "Configuración: %s" -#: src/gui/gui.cc:2362 +#: src/gui/gui.cc:2388 msgid "List of supported formats:" msgstr "Lista de formatos admitidos:" -#: src/gui/gui.cc:2380 +#: src/gui/gui.cc:2406 msgid "" "List of supported codecs: (D: Decoder, E: Encoder, L: Lossy, S: Lossless)" msgstr "" "Lista de códecs admitidos: (D: decodificación, E: codificación, L: sin " "pérdida, S: con pérdida)" -#: src/gui/gui.cc:2420 +#: src/gui/gui.cc:2446 #, c-format msgid "%s codecs" msgstr "%s códecs" @@ -2194,38 +2164,68 @@ msgstr "Trio" msgid "Mask type" msgstr "Tipo de máscara" -#: src/gui/widgets/assembly.cc:443 +#: src/gui/widgets/assembly.cc:334 +msgid "Go to in Memory Editor #1 (Default Click)" +msgstr "Ver en editor de memoria 1 (clic predeterminado)" + +#: src/gui/widgets/assembly.cc:335 +msgid "Go to in Memory Editor #2 (Shift+Click)" +msgstr "Ver en editor de memoria 2 (Mayús + clic)" + +#: src/gui/widgets/assembly.cc:336 +msgid "Go to in Memory Editor #3 (Ctrl+Click)" +msgstr "Ver en editor de memoria 3 (Ctrl + clic)" + +#: src/gui/widgets/assembly.cc:339 +msgid "Go to in Memory Editor #{}" +msgstr "Ver en editor de memoria {}" + +#: src/gui/widgets/assembly.cc:346 +msgid "Go to in Memory Editor..." +msgstr "Ver en editor de memoria..." + +#: src/gui/widgets/assembly.cc:394 +#, c-format +msgid "Go to in Memory Editor #%d" +msgstr "Ver en editor de memoria %d" + +#: src/gui/widgets/assembly.cc:455 +#, c-format +msgid "Go to in Memory Editor #%u" +msgstr "Ver en editor de memoria %u" + +#: src/gui/widgets/assembly.cc:478 msgid "Load symbols map" msgstr "Cargar mapa de símbolos" -#: src/gui/widgets/assembly.cc:444 +#: src/gui/widgets/assembly.cc:479 msgid "Reset symbols map" msgstr "Reiniciar mapa de símbolos" -#: src/gui/widgets/assembly.cc:450 src/gui/widgets/assembly.cc:525 +#: src/gui/widgets/assembly.cc:485 src/gui/widgets/assembly.cc:560 msgid "Pause" msgstr "Pausar" -#: src/gui/widgets/assembly.cc:451 src/gui/widgets/assembly.cc:527 +#: src/gui/widgets/assembly.cc:486 src/gui/widgets/assembly.cc:562 #: src/gui/widgets/gpulogger.cc:47 msgid "Resume" msgstr "Reanudar" -#: src/gui/widgets/assembly.cc:453 src/gui/widgets/assembly.cc:529 +#: src/gui/widgets/assembly.cc:488 src/gui/widgets/assembly.cc:564 msgid "Step In" msgstr "Avanzar una" #. Options, Filter -#: src/gui/widgets/assembly.cc:459 src/gui/widgets/console.cc:53 +#: src/gui/widgets/assembly.cc:494 src/gui/widgets/console.cc:53 #: src/gui/widgets/dynarec_disassembly.cc:106 msgid "Options" msgstr "Opciones" -#: src/gui/widgets/assembly.cc:460 +#: src/gui/widgets/assembly.cc:495 msgid "Combined pseudo-instructions" msgstr "Combinar seudoinstrucciones" -#: src/gui/widgets/assembly.cc:465 +#: src/gui/widgets/assembly.cc:500 msgid "" "When two instructions are detected to be a single pseudo-instruction, " "combine them into the actual pseudo-instruction." @@ -2233,11 +2233,11 @@ msgstr "" "Cuando se detecte que dos instrucciones son una misma seudoinstrucción, se " "combinarán para mostrar la seudoinstrucción real." -#: src/gui/widgets/assembly.cc:470 +#: src/gui/widgets/assembly.cc:505 msgid "Pseudo-instructions filling" msgstr "Rellenar seudoinstrucciones" -#: src/gui/widgets/assembly.cc:475 +#: src/gui/widgets/assembly.cc:510 msgid "" "When combining two instructions into a single pseudo-instruction, add a " "placeholder for the second one." @@ -2245,11 +2245,11 @@ msgstr "" "Al combinar dos instrucciones en una seudoinstrucción, se añadirá un " "marcador de posición para la segunda." -#: src/gui/widgets/assembly.cc:480 +#: src/gui/widgets/assembly.cc:515 msgid "Delay slot notch" msgstr "Marca de ranura de retraso" -#: src/gui/widgets/assembly.cc:485 +#: src/gui/widgets/assembly.cc:520 msgid "" "Add a small visible notch to indicate instructions that are on the delay " "slot of a branch." @@ -2257,80 +2257,76 @@ msgstr "" "Añade una pequeña marca visible para indicar a las instrucciones que se " "encuentran en la ranura de retraso de una rama." -#: src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:524 msgid "Draw arrows for jumps" msgstr "Mostrar flechas para los saltos" -#: src/gui/widgets/assembly.cc:493 +#: src/gui/widgets/assembly.cc:528 msgid "Display arrows for jumps. This might crowd the display a bit too much." msgstr "" "Muestra flechas en los saltos. Podría saturar demasiado la cantidad de " "información mostrada." -#: src/gui/widgets/assembly.cc:497 +#: src/gui/widgets/assembly.cc:532 msgid "Columns" msgstr "Columnas" -#: src/gui/widgets/assembly.cc:516 src/gui/widgets/log.cc:111 +#: src/gui/widgets/assembly.cc:551 src/gui/widgets/log.cc:111 msgid "CPU trace" msgstr "Seguimiento de CPU" -#: src/gui/widgets/assembly.cc:518 +#: src/gui/widgets/assembly.cc:553 msgid "Skip ISR" msgstr "Omitir ISR" -#: src/gui/widgets/assembly.cc:520 +#: src/gui/widgets/assembly.cc:555 msgid "Follow PC" msgstr "Seguir PC" -#: src/gui/widgets/assembly.cc:522 +#: src/gui/widgets/assembly.cc:557 msgid "Jump to PC" msgstr "Saltar a PC" -#: src/gui/widgets/assembly.cc:535 +#: src/gui/widgets/assembly.cc:570 #, c-format msgid "In ISR: %s" msgstr "En ISR: %s" -#: src/gui/widgets/assembly.cc:709 src/gui/widgets/assembly.cc:737 +#: src/gui/widgets/assembly.cc:744 src/gui/widgets/assembly.cc:770 #: src/gui/widgets/breakpoints.cc:171 msgid "GUI" msgstr "Interfaz de usuario" -#: src/gui/widgets/assembly.cc:718 +#: src/gui/widgets/assembly.cc:753 msgid "Create symbol here" msgstr "Crear símbolo aquí" -#: src/gui/widgets/assembly.cc:723 +#: src/gui/widgets/assembly.cc:758 msgid "Remove symbol" msgstr "Quitar símbolo" -#: src/gui/widgets/assembly.cc:727 +#: src/gui/widgets/assembly.cc:762 msgid "Copy Address" msgstr "Copiar dirección" -#: src/gui/widgets/assembly.cc:732 src/gui/widgets/registers.cc:39 -msgid "Go to in Memory Editor" -msgstr "Ver en editor de memoria" - -#: src/gui/widgets/assembly.cc:735 +#: src/gui/widgets/assembly.cc:768 msgid "Run to Cursor" msgstr "Ejecutar hasta el cursor" -#: src/gui/widgets/assembly.cc:744 +#: src/gui/widgets/assembly.cc:777 msgid "Toggle Breakpoint" msgstr "Alternar punto de interrupción" -#: src/gui/widgets/assembly.cc:748 src/gui/widgets/assembly.cc:753 +#: src/gui/widgets/assembly.cc:781 src/gui/widgets/assembly.cc:786 msgid "Remove Breakpoint" msgstr "Quitar punto de interrupción" -#: src/gui/widgets/assembly.cc:757 src/gui/widgets/assembly.cc:954 -#: src/gui/widgets/assembly.cc:956 src/gui/widgets/assembly.cc:962 +#: src/gui/widgets/assembly.cc:790 src/gui/widgets/assembly.cc:987 +#: src/gui/widgets/assembly.cc:989 src/gui/widgets/assembly.cc:995 msgid "Assemble" msgstr "Ensamblar" -#: src/gui/widgets/assembly.cc:887 src/gui/widgets/breakpoints.cc:153 +#: src/gui/widgets/assembly.cc:920 src/gui/widgets/breakpoints.cc:153 #: src/gui/widgets/memory_observer.cc:170 #: src/gui/widgets/memory_observer.cc:328 #: src/gui/widgets/memory_observer.cc:424 @@ -2338,56 +2334,56 @@ msgstr "Ensamblar" msgid "Address" msgstr "Dirección" -#: src/gui/widgets/assembly.cc:901 +#: src/gui/widgets/assembly.cc:934 msgid "RAM base" msgstr "Base de RAM" -#: src/gui/widgets/assembly.cc:910 src/gui/widgets/assembly.cc:1011 +#: src/gui/widgets/assembly.cc:943 src/gui/widgets/assembly.cc:1044 msgid "Symbols" msgstr "Símbolos" -#: src/gui/widgets/assembly.cc:936 src/gui/widgets/assembly.cc:938 +#: src/gui/widgets/assembly.cc:969 src/gui/widgets/assembly.cc:971 msgid "Add symbol" msgstr "Añadir símbolo" -#: src/gui/widgets/assembly.cc:939 +#: src/gui/widgets/assembly.cc:972 #, c-format msgid "Add symbol for address 0x%08x:" msgstr "Añadir símbolo para la dirección 0x%08x:" -#: src/gui/widgets/assembly.cc:941 +#: src/gui/widgets/assembly.cc:974 msgid "Add" msgstr "Añadir" -#: src/gui/widgets/assembly.cc:957 +#: src/gui/widgets/assembly.cc:990 #, c-format msgid "Assemble code for address 0x%08x:" msgstr "Ensamblar código para la dirección 0x%08x:" #. Clear items button -#: src/gui/widgets/assembly.cc:982 src/gui/widgets/console.cc:39 +#: src/gui/widgets/assembly.cc:1015 src/gui/widgets/console.cc:39 #: src/gui/widgets/dynarec_disassembly.cc:90 src/gui/widgets/log.cc:128 #: src/gui/widgets/pio-cart.cc:41 src/gui/widgets/typed_debugger.cc:827 msgid "Clear" msgstr "Borrar" -#: src/gui/widgets/assembly.cc:984 src/gui/widgets/dynarec_disassembly.cc:73 +#: src/gui/widgets/assembly.cc:1017 src/gui/widgets/dynarec_disassembly.cc:73 msgid "Close" msgstr "Cerrar" -#: src/gui/widgets/assembly.cc:1012 +#: src/gui/widgets/assembly.cc:1045 msgid "Refresh" msgstr "Actualizar" -#: src/gui/widgets/assembly.cc:1014 +#: src/gui/widgets/assembly.cc:1047 msgid "Filter" msgstr "Filtro" -#: src/gui/widgets/assembly.cc:1028 +#: src/gui/widgets/assembly.cc:1061 msgid "Code##{}{:08x}" msgstr "Código##{}{:08x}" -#: src/gui/widgets/assembly.cc:1029 +#: src/gui/widgets/assembly.cc:1062 msgid "Data##{}{:08x}" msgstr "Datos##{}{:08x}" @@ -3032,7 +3028,7 @@ msgstr "Tarjeta de memoria 2" msgid "Import Memory Card file" msgstr "Importar archivo de Memory Card" -#: src/gui/widgets/memcard_manager.h:78 +#: src/gui/widgets/memcard_manager.h:77 msgid "Export Memory Card file" msgstr "Exportar archivo de Memory Card" @@ -3211,6 +3207,10 @@ msgstr "Contexto##{}" msgid "Go to in Assembly" msgstr "Ver en desensamblador" +#: src/gui/widgets/registers.cc:39 +msgid "Go to in Memory Editor" +msgstr "Ver en editor de memoria" + #: src/gui/widgets/registers.cc:42 msgid "Copy Value" msgstr "Copiar valor" @@ -3687,118 +3687,6 @@ msgstr "" "al búfer de decodificación/captura.\n" "Esta opción es necesaria para algunos juegos." -#: src/spu/debug.cc:62 +#: src/spu/debug.cc:581 msgid "SPU Debug" msgstr "Depurador de SPU" - -#: src/spu/debug.cc:84 -msgid "Mute all" -msgstr "Silenciar todo" - -#: src/spu/debug.cc:90 -msgid "Unmute all" -msgstr "Reproducir todo" - -#: src/spu/debug.cc:104 -msgid "ADSR channel info" -msgstr "Datos del canal ADSR" - -#: src/spu/debug.cc:107 -msgid "" -"Attack:\n" -"Decay:\n" -"Sustain:\n" -"Release:" -msgstr "" -"Ataque:\n" -"Caída:\n" -"Sostenim.:\n" -"Desvanec.:" - -#: src/spu/debug.cc:115 -msgid "" -"Sustain level:\n" -"Sustain inc:\n" -"Curr adsr vol:\n" -"Raw enveloppe" -msgstr "" -"Nivel sostenim.:\n" -"Aum. sostenim.:\n" -"Vol. actual ADSR:\n" -"Envolvente en bruto" - -#: src/spu/debug.cc:123 -msgid "Generic channel info" -msgstr "Datos del canal genérico" - -#: src/spu/debug.cc:127 -msgid "" -"On:\n" -"Stop:\n" -"Noise:\n" -"FMod:\n" -"Reverb:\n" -"Rvb active:\n" -"Rvb number:\n" -"Rvb offset:\n" -"Rvb repeat:" -msgstr "" -"Activado:\n" -"Parada:\n" -"Ruido:\n" -"FMod:\n" -"Reverb.:\n" -"Reverb. activas:\n" -"N.º de reverb.:\n" -"Compen. reverb.:\n" -"Reverb. repetidas:" - -#: src/spu/debug.cc:138 -msgid "" -"Start pos:\n" -"Curr pos:\n" -"Loop pos:\n" -"\n" -"Right vol:\n" -"Left vol:\n" -"\n" -"Act freq:\n" -"Used freq:" -msgstr "" -"Pos. inicial:\n" -"Pos. actual:\n" -"Pos. bucle:\n" -"\n" -"Volumen D:\n" -"Volumen I:\n" -"\n" -"Frec. actual:\n" -"Frec. usada:" - -#: src/spu/debug.cc:150 -msgid "" -"Freq:\n" -"Stereo:\n" -"Samples:\n" -"Volume:\n" -msgstr "" -"Frecuencia:\n" -"Estéreo:\n" -"Muestras:\n" -"Volumen:\n" - -#: src/spu/debug.cc:159 -msgid "Spu states" -msgstr "Estados de la SPU" - -#: src/spu/debug.cc:160 -msgid "" -"Irq addr:\n" -"Ctrl:\n" -"Stat:\n" -"Spu mem:" -msgstr "" -"Dir. IRQ:\n" -"Ctrl:\n" -"Stat:\n" -"Mem. SPU:" diff --git a/i18n/fr.po b/i18n/fr.po index d939fe6f1..8ff3a2994 100644 --- a/i18n/fr.po +++ b/i18n/fr.po @@ -164,8 +164,8 @@ msgstr "" msgid "Step in" msgstr "Step In" -#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:454 -#: src/gui/widgets/assembly.cc:531 +#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:566 msgid "Step Over" msgstr "Step Over" @@ -183,20 +183,20 @@ msgstr "" msgid "Breakpoint triggered: PC=0x%08x - Cause: %s %s\n" msgstr "" -#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:455 -#: src/gui/widgets/assembly.cc:533 +#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:490 +#: src/gui/widgets/assembly.cc:568 msgid "Step Out" msgstr "Step Out" -#: src/core/debug.h:37 +#: src/core/debug.h:36 msgid "Exec" msgstr "" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:285 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:285 msgid "Read" msgstr "" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:287 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:287 msgid "Write" msgstr "" @@ -506,7 +506,7 @@ msgstr "" msgid "Keyboard {}" msgstr "" -#: src/core/pad.cc:986 src/gui/gui.cc:1993 +#: src/core/pad.cc:986 src/gui/gui.cc:2019 msgid "Auto" msgstr "" @@ -796,67 +796,37 @@ msgstr "" msgid "Unknown bios loaded (%08x)\n" msgstr "" -#: src/core/psxmem.cc:276 -#, c-format -msgid "8-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:283 +#: src/core/psxmem.cc:282 #, c-format msgid "8-bit read from unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:313 -#, c-format -msgid "16-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:316 +#: src/core/psxmem.cc:314 #, c-format msgid "16-bit read from unknown address: %8.8lx\n" msgstr "" #: src/core/psxmem.cc:348 #, c-format -msgid "32-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:351 -#, c-format msgid "32-bit read from unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:452 -#, c-format -msgid "8-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:455 +#: src/core/psxmem.cc:451 #, c-format msgid "8-bit write to unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:482 -#, c-format -msgid "16-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:485 +#: src/core/psxmem.cc:480 #, c-format msgid "16-bit write to unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:523 +#: src/core/psxmem.cc:518 #, c-format msgid "Unknown BIU value: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:530 -#, c-format -msgid "32-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:533 +#: src/core/psxmem.cc:527 #, c-format msgid "32-bit write to unknown address: %8.8lx\n" msgstr "" @@ -993,511 +963,511 @@ msgstr "BIOS" msgid "VRAM" msgstr "VRAM" -#: src/gui/gui.cc:1055 +#: src/gui/gui.cc:1081 msgid "Output" msgstr "Sortie" -#: src/gui/gui.cc:1080 src/gui/widgets/assembly.cc:442 +#: src/gui/gui.cc:1106 src/gui/widgets/assembly.cc:477 #: src/gui/widgets/isobrowser.cc:66 src/gui/widgets/memcard_manager.cc:63 #: src/gui/widgets/vram-viewer.cc:482 msgid "File" msgstr "Fichier" -#: src/gui/gui.cc:1081 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 +#: src/gui/gui.cc:1107 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 #: src/gui/widgets/isobrowser.h:50 #, fuzzy msgid "Open Disk Image" msgstr "Ouvrir un fichier image" -#: src/gui/gui.cc:1082 src/gui/widgets/isobrowser.cc:68 +#: src/gui/gui.cc:1108 src/gui/widgets/isobrowser.cc:68 msgid "Close Disk Image" msgstr "" -#: src/gui/gui.cc:1086 +#: src/gui/gui.cc:1112 msgid "Load binary" msgstr "" -#: src/gui/gui.cc:1089 +#: src/gui/gui.cc:1115 msgid "Add Lua archive" msgstr "" -#: src/gui/gui.cc:1093 +#: src/gui/gui.cc:1119 msgid "Dump save state proto schema" msgstr "" -#: src/gui/gui.cc:1098 +#: src/gui/gui.cc:1124 msgid "global{}" msgstr "" -#: src/gui/gui.cc:1100 +#: src/gui/gui.cc:1126 msgid "Save state slots" msgstr "" -#: src/gui/gui.cc:1101 +#: src/gui/gui.cc:1127 msgid "Quick-save slot" msgstr "" -#: src/gui/gui.cc:1106 src/gui/gui.cc:1127 +#: src/gui/gui.cc:1132 src/gui/gui.cc:1153 msgid "Slot {}" msgstr "" -#: src/gui/gui.cc:1113 +#: src/gui/gui.cc:1139 msgid "Show named save states" msgstr "" -#: src/gui/gui.cc:1118 +#: src/gui/gui.cc:1144 msgid "Save global state" msgstr "" -#: src/gui/gui.cc:1120 +#: src/gui/gui.cc:1146 msgid "Load state slots" msgstr "" -#: src/gui/gui.cc:1123 +#: src/gui/gui.cc:1149 msgid "Quick-load slot" msgstr "" -#: src/gui/gui.cc:1148 +#: src/gui/gui.cc:1174 msgid "Load global state" msgstr "" -#: src/gui/gui.cc:1152 +#: src/gui/gui.cc:1178 msgid "Open LID" msgstr "Ouvrir le CAPOT" -#: src/gui/gui.cc:1156 +#: src/gui/gui.cc:1182 msgid "Close LID" msgstr "Fermer le CAPOT" -#: src/gui/gui.cc:1160 +#: src/gui/gui.cc:1186 msgid "Open and close LID" msgstr "Ouvrir et refermer le CAPOT" -#: src/gui/gui.cc:1165 +#: src/gui/gui.cc:1191 msgid "Reboot" msgstr "" -#: src/gui/gui.cc:1168 +#: src/gui/gui.cc:1194 msgid "Quit" msgstr "Quitter" -#: src/gui/gui.cc:1174 src/gui/gui.cc:1191 +#: src/gui/gui.cc:1200 src/gui/gui.cc:1217 msgid "Emulation" msgstr "Emulation" -#: src/gui/gui.cc:1175 +#: src/gui/gui.cc:1201 #, fuzzy msgid "Start emulation" msgstr "Emulation" -#: src/gui/gui.cc:1178 +#: src/gui/gui.cc:1204 #, fuzzy msgid "Pause emulation" msgstr "Emulation" -#: src/gui/gui.cc:1181 +#: src/gui/gui.cc:1207 msgid "Soft Reset" msgstr "Redémarrage du CPU" -#: src/gui/gui.cc:1184 +#: src/gui/gui.cc:1210 msgid "Hard Reset" msgstr "Bouton 'Reset'" -#: src/gui/gui.cc:1190 src/gui/widgets/vram-viewer.cc:520 +#: src/gui/gui.cc:1216 src/gui/widgets/vram-viewer.cc:520 msgid "Configuration" msgstr "Configuration" -#: src/gui/gui.cc:1192 +#: src/gui/gui.cc:1218 #, fuzzy msgid "Manage Memory Cards" msgstr "Sauvegarde de la carte mémoire %s\n" -#: src/gui/gui.cc:1195 src/gui/gui.cc:1295 +#: src/gui/gui.cc:1221 src/gui/gui.cc:1321 msgid "GPU" msgstr "GPU" -#: src/gui/gui.cc:1196 src/gui/gui.cc:1311 +#: src/gui/gui.cc:1222 src/gui/gui.cc:1337 msgid "SPU" msgstr "SPU" -#: src/gui/gui.cc:1197 +#: src/gui/gui.cc:1223 msgid "UI" msgstr "" -#: src/gui/gui.cc:1198 +#: src/gui/gui.cc:1224 #, fuzzy msgid "System" msgstr "Type de système" -#: src/gui/gui.cc:1199 +#: src/gui/gui.cc:1225 msgid "Controls" msgstr "" -#: src/gui/gui.cc:1200 +#: src/gui/gui.cc:1226 msgid "Shader presets" msgstr "" -#: src/gui/gui.cc:1201 +#: src/gui/gui.cc:1227 msgid "Default shader" msgstr "" -#: src/gui/gui.cc:1204 +#: src/gui/gui.cc:1230 msgid "CRT-lottes shader" msgstr "" -#: src/gui/gui.cc:1231 +#: src/gui/gui.cc:1257 #, fuzzy msgid "Configure Shaders" msgstr "Configuration" -#: src/gui/gui.cc:1235 +#: src/gui/gui.cc:1261 msgid "PIO Cartridge" msgstr "" -#: src/gui/gui.cc:1239 src/gui/widgets/assembly.cc:449 +#: src/gui/gui.cc:1265 src/gui/widgets/assembly.cc:484 msgid "Debug" msgstr "Débug" -#: src/gui/gui.cc:1240 +#: src/gui/gui.cc:1266 msgid "Show Logs" msgstr "Afficher les journaux" -#: src/gui/gui.cc:1241 +#: src/gui/gui.cc:1267 msgid "Lua" msgstr "" -#: src/gui/gui.cc:1242 +#: src/gui/gui.cc:1268 #, fuzzy msgid "Show Lua Console" msgstr "Afficher les journaux" -#: src/gui/gui.cc:1243 +#: src/gui/gui.cc:1269 msgid "Show Lua Inspector" msgstr "" -#: src/gui/gui.cc:1244 +#: src/gui/gui.cc:1270 #, fuzzy msgid "Show Lua editor" msgstr "Afficher les Registres" -#: src/gui/gui.cc:1248 +#: src/gui/gui.cc:1274 #, fuzzy msgid "CPU" msgstr "GPU" -#: src/gui/gui.cc:1249 +#: src/gui/gui.cc:1275 msgid "Show Registers" msgstr "Afficher les Registres" -#: src/gui/gui.cc:1250 +#: src/gui/gui.cc:1276 msgid "Show Assembly" msgstr "Afficher l'Assembleur" -#: src/gui/gui.cc:1252 src/gui/gui.cc:1254 +#: src/gui/gui.cc:1278 src/gui/gui.cc:1280 #, fuzzy msgid "Show DynaRec Disassembly" msgstr "Afficher l'Assembleur" -#: src/gui/gui.cc:1256 +#: src/gui/gui.cc:1282 msgid "" "DynaRec Disassembler is not available in Interpreted CPU mode. Try enabling " "[Dynarec CPU]\n" "in Configuration->Emulation, restart PCSX-Redux, then try again." msgstr "" -#: src/gui/gui.cc:1259 +#: src/gui/gui.cc:1285 msgid "Show Breakpoints" msgstr "Afficher les Breakpoints" -#: src/gui/gui.cc:1260 +#: src/gui/gui.cc:1286 #, fuzzy msgid "Show Callstacks" msgstr "Afficher tous les breakpoints" -#: src/gui/gui.cc:1261 +#: src/gui/gui.cc:1287 msgid "Memory Editors" msgstr "Editeurs de Mémoire" -#: src/gui/gui.cc:1272 +#: src/gui/gui.cc:1298 msgid "Show Memory Observer" msgstr "" -#: src/gui/gui.cc:1273 +#: src/gui/gui.cc:1299 #, fuzzy msgid "Show Typed Debugger" msgstr "Afficher le debug du SPU" -#: src/gui/gui.cc:1274 +#: src/gui/gui.cc:1300 msgid "Show Interrupts Scaler" msgstr "" -#: src/gui/gui.cc:1275 +#: src/gui/gui.cc:1301 msgid "First Chance Exceptions" msgstr "" -#: src/gui/gui.cc:1296 +#: src/gui/gui.cc:1322 msgid "VRAM viewers" msgstr "" -#: src/gui/gui.cc:1297 +#: src/gui/gui.cc:1323 #, fuzzy msgid "Show main VRAM viewer" msgstr "Afficher la VRAM" -#: src/gui/gui.cc:1298 +#: src/gui/gui.cc:1324 #, fuzzy msgid "Show CLUT VRAM viewer" msgstr "Afficher la VRAM" -#: src/gui/gui.cc:1301 +#: src/gui/gui.cc:1327 #, fuzzy msgid "Show VRAM viewer #" msgstr "Afficher la VRAM" -#: src/gui/gui.cc:1307 +#: src/gui/gui.cc:1333 #, fuzzy msgid "Show GPU logger" msgstr "Afficher le debug du SPU" -#: src/gui/gui.cc:1308 +#: src/gui/gui.cc:1334 #, fuzzy msgid "Show GPU debug" msgstr "Afficher le debug du SPU" -#: src/gui/gui.cc:1312 +#: src/gui/gui.cc:1338 msgid "Show SPU debug" msgstr "Afficher le debug du SPU" -#: src/gui/gui.cc:1315 +#: src/gui/gui.cc:1341 msgid "CD-Rom" msgstr "" -#: src/gui/gui.cc:1316 +#: src/gui/gui.cc:1342 #, fuzzy msgid "Show Iso Browser" msgstr "Afficher les journaux" -#: src/gui/gui.cc:1319 +#: src/gui/gui.cc:1345 msgid "Misc hardware" msgstr "" -#: src/gui/gui.cc:1320 +#: src/gui/gui.cc:1346 #, fuzzy msgid "Show SIO1 debug" msgstr "Afficher le debug du SPU" -#: src/gui/gui.cc:1324 +#: src/gui/gui.cc:1350 #, fuzzy msgid "Kernel" msgstr "Journal des événements" -#: src/gui/gui.cc:1325 +#: src/gui/gui.cc:1351 msgid "Kernel Events" msgstr "" -#: src/gui/gui.cc:1326 +#: src/gui/gui.cc:1352 #, fuzzy msgid "Kernel Handlers" msgstr "Journal des événements" -#: src/gui/gui.cc:1327 src/gui/gui.cc:1473 +#: src/gui/gui.cc:1353 src/gui/gui.cc:1499 #, fuzzy msgid "Kernel Calls" msgstr "Journal des événements" -#: src/gui/gui.cc:1330 +#: src/gui/gui.cc:1356 #, fuzzy msgid "Rendering" msgstr "carte graphique" -#: src/gui/gui.cc:1331 +#: src/gui/gui.cc:1357 #, fuzzy msgid "Full window render" msgstr "Afficher en plein-écran" -#: src/gui/gui.cc:1334 +#: src/gui/gui.cc:1360 #, fuzzy msgid "Fullscreen" msgstr "Afficher en plein-écran" -#: src/gui/gui.cc:1338 +#: src/gui/gui.cc:1364 #, fuzzy msgid "Show Output Shader Editor" msgstr "Editeurs de Mémoire" -#: src/gui/gui.cc:1339 +#: src/gui/gui.cc:1365 #, fuzzy msgid "Show Offscreen Shader Editor" msgstr "Editeurs de Mémoire" -#: src/gui/gui.cc:1340 +#: src/gui/gui.cc:1366 msgid "Reset shaders" msgstr "" -#: src/gui/gui.cc:1348 +#: src/gui/gui.cc:1374 msgid "Help" msgstr "Aide" -#: src/gui/gui.cc:1349 +#: src/gui/gui.cc:1375 msgid "Show ImGui Demo" msgstr "Afficher la démo du ImGui" -#: src/gui/gui.cc:1351 +#: src/gui/gui.cc:1377 #, fuzzy msgid "Show UvFile information" msgstr "Information sur l'OpenGL" -#: src/gui/gui.cc:1353 src/gui/gui.cc:2258 +#: src/gui/gui.cc:1379 src/gui/gui.cc:2284 msgid "About" msgstr "À propos de PCSX-Redux" -#: src/gui/gui.cc:1358 +#: src/gui/gui.cc:1384 #, c-format msgid "CPU: %s" msgstr "" -#: src/gui/gui.cc:1360 src/gui/widgets/isobrowser.cc:102 +#: src/gui/gui.cc:1386 src/gui/widgets/isobrowser.cc:102 #, c-format msgid "GAME ID: %s" msgstr "" -#: src/gui/gui.cc:1363 +#: src/gui/gui.cc:1389 #, c-format msgid "%.2f FPS (%.2f ms)" msgstr "%.2f FPS (%.2f ms)" -#: src/gui/gui.cc:1366 +#: src/gui/gui.cc:1392 #, c-format msgid "%.2f ms audio buffer (%i frames)" msgstr "" -#: src/gui/gui.cc:1368 +#: src/gui/gui.cc:1394 msgid "Idle" msgstr "" -#: src/gui/gui.cc:1449 +#: src/gui/gui.cc:1475 msgid "Logs" msgstr "Journaux" -#: src/gui/gui.cc:1455 +#: src/gui/gui.cc:1481 msgid "Lua Console" msgstr "" -#: src/gui/gui.cc:1461 +#: src/gui/gui.cc:1487 msgid "Lua Inspector" msgstr "" -#: src/gui/gui.cc:1464 +#: src/gui/gui.cc:1490 msgid "Lua Editor" msgstr "" -#: src/gui/gui.cc:1467 +#: src/gui/gui.cc:1493 #, fuzzy msgid "Kernel events" msgstr "Journal des événements" -#: src/gui/gui.cc:1470 +#: src/gui/gui.cc:1496 #, fuzzy msgid "Kernel handlers" msgstr "Journal des événements" -#: src/gui/gui.cc:1476 +#: src/gui/gui.cc:1502 msgid "Callstacks" msgstr "" -#: src/gui/gui.cc:1525 +#: src/gui/gui.cc:1551 #, fuzzy msgid "Memory Card Manager" msgstr "Impossible de charger la carte mémoire %s !\n" -#: src/gui/gui.cc:1529 src/gui/widgets/registers.cc:65 +#: src/gui/gui.cc:1555 src/gui/widgets/registers.cc:65 msgid "Registers" msgstr "Registres" -#: src/gui/gui.cc:1533 +#: src/gui/gui.cc:1559 msgid "Assembly" msgstr "Assembleur" -#: src/gui/gui.cc:1537 +#: src/gui/gui.cc:1563 msgid "DynaRec Disassembler" msgstr "" -#: src/gui/gui.cc:1541 src/gui/widgets/breakpoints.cc:81 +#: src/gui/gui.cc:1567 src/gui/widgets/breakpoints.cc:81 #: src/gui/widgets/typed_debugger.cc:864 src/gui/widgets/typed_debugger.cc:910 #: src/gui/widgets/typed_debugger.cc:963 msgid "Breakpoints" msgstr "Breakpoints" -#: src/gui/gui.cc:1545 +#: src/gui/gui.cc:1571 msgid "Named Save States" msgstr "" -#: src/gui/gui.cc:1549 src/gui/widgets/memory_observer.cc:382 +#: src/gui/gui.cc:1575 src/gui/widgets/memory_observer.cc:382 #: src/gui/widgets/memory_observer.cc:388 msgid "Memory Observer" msgstr "" -#: src/gui/gui.cc:1553 src/gui/widgets/typed_debugger.cc:1062 +#: src/gui/gui.cc:1579 src/gui/widgets/typed_debugger.cc:1062 #, fuzzy msgid "Typed Debugger" msgstr "Activer les compteurs" -#: src/gui/gui.cc:1559 +#: src/gui/gui.cc:1585 #, fuzzy msgid "Output Video" msgstr "Sortie" -#: src/gui/gui.cc:1564 +#: src/gui/gui.cc:1590 #, fuzzy msgid "Offscreen Render" msgstr "Afficher en plein-écran" -#: src/gui/gui.cc:1570 +#: src/gui/gui.cc:1596 #, fuzzy msgid "PIO Cartridge Configuration" msgstr "Configuration du SPU" -#: src/gui/gui.cc:1574 +#: src/gui/gui.cc:1600 #, fuzzy msgid "SIO1 Debug" msgstr "Débug" -#: src/gui/gui.cc:1578 +#: src/gui/gui.cc:1604 msgid "ISO Browser" msgstr "" -#: src/gui/gui.cc:1588 +#: src/gui/gui.cc:1614 msgid "GPU Logger" msgstr "" -#: src/gui/gui.cc:1591 +#: src/gui/gui.cc:1617 #, fuzzy msgid "UI Configuration" msgstr "Configuration" -#: src/gui/gui.cc:1597 +#: src/gui/gui.cc:1623 msgid "Locale" msgstr "Langue" -#: src/gui/gui.cc:1612 +#: src/gui/gui.cc:1638 msgid "Reload locales" msgstr "Recharger les langues" -#: src/gui/gui.cc:1617 +#: src/gui/gui.cc:1643 #, fuzzy msgid "Main Font Size" msgstr " Taille" -#: src/gui/gui.cc:1618 +#: src/gui/gui.cc:1644 #, fuzzy msgid "Mono Font Size" msgstr " Taille" -#: src/gui/gui.cc:1620 +#: src/gui/gui.cc:1646 msgid "Use Widescreen Aspect Ratio" msgstr "" -#: src/gui/gui.cc:1621 +#: src/gui/gui.cc:1647 msgid "" "Sets the output screen ratio to 16:9 instead of 4:3.\n" "\n" @@ -1512,27 +1482,27 @@ msgid "" "their TV set to match the aspect ratio of the game." msgstr "" -#: src/gui/gui.cc:1640 +#: src/gui/gui.cc:1666 #, fuzzy msgid "System Configuration" msgstr "Configuration" -#: src/gui/gui.cc:1642 +#: src/gui/gui.cc:1668 #, fuzzy msgid "Preload Disk Image files" msgstr "Image CD chargée : %s" -#: src/gui/gui.cc:1643 +#: src/gui/gui.cc:1669 #, fuzzy msgid "Enable Auto Update" msgstr "Activer le décodeur XA" -#: src/gui/gui.cc:1650 +#: src/gui/gui.cc:1676 #, fuzzy msgid "Update configuration" msgstr "Configuration du SPU" -#: src/gui/gui.cc:1651 +#: src/gui/gui.cc:1677 msgid "" "PCSX-Redux can automatically update itself.\n" "\n" @@ -1549,19 +1519,19 @@ msgid "" "Configuration -> System menu." msgstr "" -#: src/gui/gui.cc:1664 +#: src/gui/gui.cc:1690 msgid "Enable auto update" msgstr "" -#: src/gui/gui.cc:1670 +#: src/gui/gui.cc:1696 msgid "No thanks" msgstr "" -#: src/gui/gui.cc:1679 +#: src/gui/gui.cc:1705 msgid "Update available" msgstr "" -#: src/gui/gui.cc:1681 +#: src/gui/gui.cc:1707 msgid "" "An update is available.\n" "Click 'Update' to download and apply the update.\n" @@ -1571,7 +1541,7 @@ msgid "" "the update and manually apply it." msgstr "" -#: src/gui/gui.cc:1688 +#: src/gui/gui.cc:1714 msgid "" "An update is available.\n" "Click 'Update' to download it. While the update can be\n" @@ -1583,92 +1553,92 @@ msgid "" "the update and manually apply it." msgstr "" -#: src/gui/gui.cc:1699 +#: src/gui/gui.cc:1725 msgid "Update" msgstr "" -#: src/gui/gui.cc:1711 src/gui/gui.cc:1716 +#: src/gui/gui.cc:1737 src/gui/gui.cc:1742 msgid "" "An error has occured while downloading\n" "and/or applying the update." msgstr "" -#: src/gui/gui.cc:1722 +#: src/gui/gui.cc:1748 msgid "Download" msgstr "" -#: src/gui/gui.cc:1732 +#: src/gui/gui.cc:1758 msgid "An error has occured while downloading the update." msgstr "" -#: src/gui/gui.cc:1738 src/gui/widgets/assembly.cc:947 +#: src/gui/gui.cc:1764 src/gui/widgets/assembly.cc:980 #: src/gui/widgets/breakpoints.cc:38 src/gui/widgets/registers.cc:339 #: src/gui/widgets/sio1.cc:203 msgid "Cancel" msgstr "Annuler" -#: src/gui/gui.cc:1747 +#: src/gui/gui.cc:1773 #, fuzzy msgid "UvFiles" msgstr "Fichiers" -#: src/gui/gui.cc:1750 +#: src/gui/gui.cc:1776 #, c-format msgid "Read rate: %s" msgstr "" -#: src/gui/gui.cc:1752 +#: src/gui/gui.cc:1778 #, fuzzy, c-format msgid "Write rate: %s" msgstr "Erreur lors de l'ouverture du fichier : %s.\n" -#: src/gui/gui.cc:1754 +#: src/gui/gui.cc:1780 #, c-format msgid "Download rate: %s" msgstr "" -#: src/gui/gui.cc:1756 +#: src/gui/gui.cc:1782 msgid "Caching" msgstr "" -#: src/gui/gui.cc:1757 src/gui/widgets/memcard_manager.cc:201 +#: src/gui/gui.cc:1783 src/gui/widgets/memcard_manager.cc:201 #, fuzzy msgid "Filename" msgstr "Fichier" -#: src/gui/gui.cc:1944 +#: src/gui/gui.cc:1970 msgid "Emulation Configuration" msgstr "Configuration de l'Emulation" -#: src/gui/gui.cc:1945 +#: src/gui/gui.cc:1971 msgid "Idle Swap Interval" msgstr "" -#: src/gui/gui.cc:1950 +#: src/gui/gui.cc:1976 msgid "Reset Scaler" msgstr "" -#: src/gui/gui.cc:1956 +#: src/gui/gui.cc:1982 msgid "Speed Scaler" msgstr "" -#: src/gui/gui.cc:1958 +#: src/gui/gui.cc:1984 msgid "Enable XA decoder" msgstr "Activer le décodeur XA" -#: src/gui/gui.cc:1959 +#: src/gui/gui.cc:1985 msgid "Always enable SPU IRQ" msgstr "Toujours activer l'IRQ du SPU" -#: src/gui/gui.cc:1960 +#: src/gui/gui.cc:1986 msgid "Decode MDEC videos in B&W" msgstr "Décoder les vidéos MDEC en N&B" -#: src/gui/gui.cc:1961 +#: src/gui/gui.cc:1987 msgid "Dynarec CPU" msgstr "" -#: src/gui/gui.cc:1969 +#: src/gui/gui.cc:1995 msgid "" "Activates the dynamic recompiler CPU core.\n" "It is significantly faster than the interpreted CPU,\n" @@ -1678,22 +1648,22 @@ msgid "" "this setting may not have any effect for you." msgstr "" -#: src/gui/gui.cc:1975 +#: src/gui/gui.cc:2001 msgid "8MB" msgstr "" -#: src/gui/gui.cc:1976 +#: src/gui/gui.cc:2002 msgid "" "Emulates an installed 8MB system,\n" "instead of the normal 2MB. Useful for working\n" "with development binaries and games." msgstr "" -#: src/gui/gui.cc:1980 +#: src/gui/gui.cc:2006 msgid "OpenGL GPU *ALPHA STATE*" msgstr "" -#: src/gui/gui.cc:1981 +#: src/gui/gui.cc:2007 msgid "" "Enables the OpenGL GPU renderer.\n" "This is not recommended for normal use at the moment,\n" @@ -1702,23 +1672,23 @@ msgid "" "when changing this setting." msgstr "" -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "NTSC" msgstr "" -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "PAL" msgstr "" -#: src/gui/gui.cc:1996 +#: src/gui/gui.cc:2022 msgid "System Type" msgstr "Type de système" -#: src/gui/gui.cc:2015 +#: src/gui/gui.cc:2041 msgid "Fast boot" msgstr "Démarrage rapide" -#: src/gui/gui.cc:2016 +#: src/gui/gui.cc:2042 msgid "" "This will cause the BIOS to skip the shell,\n" "which may include additional checks.\n" @@ -1726,39 +1696,39 @@ msgid "" "faster by not displaying the logo." msgstr "" -#: src/gui/gui.cc:2021 +#: src/gui/gui.cc:2047 msgid "BIOS file" msgstr "Fichier du BIOS" -#: src/gui/gui.cc:2025 src/gui/widgets/assembly.cc:507 +#: src/gui/gui.cc:2051 src/gui/widgets/assembly.cc:542 #, fuzzy msgid "Enable Debugger" msgstr "Activer les compteurs" -#: src/gui/gui.cc:2032 +#: src/gui/gui.cc:2058 msgid "" "This will enable the usage of various breakpoints\n" "throughout the execution of mips code. Enabling this\n" "can slow down emulation to a noticeable extent." msgstr "" -#: src/gui/gui.cc:2035 +#: src/gui/gui.cc:2061 #, fuzzy msgid "Enable GDB Server" msgstr "Activer le décodeur XA" -#: src/gui/gui.cc:2044 +#: src/gui/gui.cc:2070 msgid "" "This will activate a gdb-server that you can\n" "connect to with any gdb-remote compliant client.\n" "You also need to enable the debugger." msgstr "" -#: src/gui/gui.cc:2048 +#: src/gui/gui.cc:2074 msgid "GDB send manifest" msgstr "" -#: src/gui/gui.cc:2049 +#: src/gui/gui.cc:2075 msgid "" "Enables sending the processor's manifest\n" "from the gdb server. Keep this enabled, unless\n" @@ -1766,182 +1736,182 @@ msgid "" "has a bug in its manifest parser." msgstr "" -#: src/gui/gui.cc:2056 +#: src/gui/gui.cc:2082 msgid "PCSX Logs to GDB" msgstr "" -#: src/gui/gui.cc:2072 +#: src/gui/gui.cc:2098 msgid "GDB Server Port" msgstr "" -#: src/gui/gui.cc:2074 +#: src/gui/gui.cc:2100 msgid "GDB Server Trace" msgstr "" -#: src/gui/gui.cc:2075 +#: src/gui/gui.cc:2101 msgid "" "The GDB server will start tracing its\n" "protocol into the logs, which can be helpful to debug\n" "the gdb server system itself." msgstr "" -#: src/gui/gui.cc:2078 +#: src/gui/gui.cc:2104 #, fuzzy msgid "Enable Web Server" msgstr "Activer le décodeur XA" -#: src/gui/gui.cc:2087 +#: src/gui/gui.cc:2113 msgid "" "This will activate a web-server, that you can\n" "query using a REST api. See the wiki for details.\n" "The debugger might be required in some cases." msgstr "" -#: src/gui/gui.cc:2091 +#: src/gui/gui.cc:2117 msgid "Web Server Port" msgstr "" -#: src/gui/gui.cc:2092 +#: src/gui/gui.cc:2118 #, fuzzy msgid "Enable SIO1 Server" msgstr "Activer le décodeur XA" -#: src/gui/gui.cc:2101 +#: src/gui/gui.cc:2127 msgid "" "This will activate a tcp server, that will\n" "relay information between tcp and sio1.\n" "See the wiki for details." msgstr "" -#: src/gui/gui.cc:2105 +#: src/gui/gui.cc:2131 msgid "SIO1 Server Port" msgstr "" -#: src/gui/gui.cc:2106 +#: src/gui/gui.cc:2132 #, fuzzy msgid "Enable SIO1 Client" msgstr "Activer le décodeur XA" -#: src/gui/gui.cc:2119 +#: src/gui/gui.cc:2145 msgid "" "This will activate a tcp client, that can connect\n" "to another PCSX-Redux server to relay information between tcp and sio1.\n" "See the wiki for details." msgstr "" -#: src/gui/gui.cc:2123 +#: src/gui/gui.cc:2149 msgid "SIO1 Client Host" msgstr "" -#: src/gui/gui.cc:2126 +#: src/gui/gui.cc:2152 msgid "SIO1 Client Port" msgstr "" -#: src/gui/gui.cc:2130 +#: src/gui/gui.cc:2156 msgid "Reset SIO" msgstr "" -#: src/gui/gui.cc:2141 +#: src/gui/gui.cc:2167 #, fuzzy msgid "Reconnect" msgstr "Connexion coupée !\n" -#: src/gui/gui.cc:2154 +#: src/gui/gui.cc:2180 msgid "SIO1Mode" msgstr "" -#: src/gui/gui.cc:2212 +#: src/gui/gui.cc:2238 msgid "Interrupt Scaler" msgstr "" -#: src/gui/gui.cc:2213 +#: src/gui/gui.cc:2239 msgid "Reset all" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Cherry##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Classic##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Default theme##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Light##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Dracula##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Mono##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Olive##Theme name" msgstr "" -#: src/gui/gui.cc:2235 +#: src/gui/gui.cc:2261 msgid "Themes" msgstr "" -#: src/gui/gui.cc:2266 src/gui/gui.cc:2340 +#: src/gui/gui.cc:2292 src/gui/gui.cc:2366 #, fuzzy msgid "Version" msgstr "version OpenGL" -#: src/gui/gui.cc:2271 +#: src/gui/gui.cc:2297 msgid "Copy to clipboard" msgstr "" -#: src/gui/gui.cc:2277 +#: src/gui/gui.cc:2303 msgid "" "No version information.\n" "\n" "Probably built from source." msgstr "" -#: src/gui/gui.cc:2279 src/gui/gui.cc:2357 +#: src/gui/gui.cc:2305 src/gui/gui.cc:2383 #, fuzzy, c-format msgid "Version: %s" msgstr "version OpenGL" -#: src/gui/gui.cc:2280 +#: src/gui/gui.cc:2306 #, fuzzy, c-format msgid "Changeset: %s" msgstr "Cheats sauvegardés sur : %s\n" -#: src/gui/gui.cc:2283 +#: src/gui/gui.cc:2309 #, fuzzy, c-format msgid "Date & time: %s" msgstr " Date & Heure" -#: src/gui/gui.cc:2292 +#: src/gui/gui.cc:2318 msgid "Authors" msgstr "" -#: src/gui/gui.cc:2300 +#: src/gui/gui.cc:2326 msgid "Licenses" msgstr "" -#: src/gui/gui.cc:2312 +#: src/gui/gui.cc:2338 msgid "OpenGL information" msgstr "Information sur l'OpenGL" -#: src/gui/gui.cc:2314 +#: src/gui/gui.cc:2340 msgid "OpenGL error reporting: enabled" msgstr "" -#: src/gui/gui.cc:2316 +#: src/gui/gui.cc:2342 msgid "OpenGL error reporting: disabled" msgstr "" -#: src/gui/gui.cc:2319 +#: src/gui/gui.cc:2345 msgid "" "OpenGL error reporting has been disabled because your OpenGL driver is too " "old. Error reporting requires at least OpenGL 4.3. Please update your " @@ -1951,85 +1921,85 @@ msgid "" "be able to properly report problems accurately." msgstr "" -#: src/gui/gui.cc:2327 +#: src/gui/gui.cc:2353 msgid "Enable OpenGL error reporting" msgstr "" -#: src/gui/gui.cc:2330 +#: src/gui/gui.cc:2356 msgid "" "OpenGL error reporting is necessary for properly reporting OpenGL problems. " "However it requires OpenGL 4.3+ and might have performance repercussions on " "some computers. (Requires a restart of the emulator)" msgstr "" -#: src/gui/gui.cc:2334 +#: src/gui/gui.cc:2360 msgid "OpenGL error reporting severity" msgstr "" -#: src/gui/gui.cc:2337 +#: src/gui/gui.cc:2363 #, fuzzy, c-format msgid "Core profile: %s" msgstr "Erreur lors de l'ouverture du fichier : %s.\n" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 #, fuzzy msgid "no" msgstr "Mono" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "yes" msgstr "" -#: src/gui/gui.cc:2338 +#: src/gui/gui.cc:2364 #, fuzzy msgid "Vendor" msgstr "fabriquant" -#: src/gui/gui.cc:2339 +#: src/gui/gui.cc:2365 #, fuzzy msgid "Renderer" msgstr "carte graphique" -#: src/gui/gui.cc:2341 +#: src/gui/gui.cc:2367 #, fuzzy msgid "Shading language version" msgstr "version GLSL" -#: src/gui/gui.cc:2344 +#: src/gui/gui.cc:2370 #, c-format msgid "Texture units: %d" msgstr "" -#: src/gui/gui.cc:2347 +#: src/gui/gui.cc:2373 #, fuzzy msgid "Extensions:" msgstr "extensions :" -#: src/gui/gui.cc:2356 +#: src/gui/gui.cc:2382 #, fuzzy msgid "FFmpeg information" msgstr "Information sur l'OpenGL" -#: src/gui/gui.cc:2358 +#: src/gui/gui.cc:2384 #, c-format msgid "License: %s" msgstr "" -#: src/gui/gui.cc:2359 +#: src/gui/gui.cc:2385 #, fuzzy, c-format msgid "Configuration: %s" msgstr "Configuration" -#: src/gui/gui.cc:2362 +#: src/gui/gui.cc:2388 msgid "List of supported formats:" msgstr "" -#: src/gui/gui.cc:2380 +#: src/gui/gui.cc:2406 msgid "" "List of supported codecs: (D: Decoder, E: Encoder, L: Lossy, S: Lossless)" msgstr "" -#: src/gui/gui.cc:2420 +#: src/gui/gui.cc:2446 #, c-format msgid "%s codecs" msgstr "" @@ -2127,39 +2097,74 @@ msgstr "" msgid "Mask type" msgstr "Afficher les Registres" -#: src/gui/widgets/assembly.cc:443 +#: src/gui/widgets/assembly.cc:334 +#, fuzzy +msgid "Go to in Memory Editor #1 (Default Click)" +msgstr "Editeurs de Mémoire" + +#: src/gui/widgets/assembly.cc:335 +#, fuzzy +msgid "Go to in Memory Editor #2 (Shift+Click)" +msgstr "Editeurs de Mémoire" + +#: src/gui/widgets/assembly.cc:336 +#, fuzzy +msgid "Go to in Memory Editor #3 (Ctrl+Click)" +msgstr "Editeurs de Mémoire" + +#: src/gui/widgets/assembly.cc:339 +#, fuzzy +msgid "Go to in Memory Editor #{}" +msgstr "Editeurs de Mémoire" + +#: src/gui/widgets/assembly.cc:346 +#, fuzzy +msgid "Go to in Memory Editor..." +msgstr "Editeurs de Mémoire" + +#: src/gui/widgets/assembly.cc:394 +#, fuzzy, c-format +msgid "Go to in Memory Editor #%d" +msgstr "Editeurs de Mémoire" + +#: src/gui/widgets/assembly.cc:455 +#, fuzzy, c-format +msgid "Go to in Memory Editor #%u" +msgstr "Editeurs de Mémoire" + +#: src/gui/widgets/assembly.cc:478 msgid "Load symbols map" msgstr "Charger les symboles de la map" -#: src/gui/widgets/assembly.cc:444 +#: src/gui/widgets/assembly.cc:479 #, fuzzy msgid "Reset symbols map" msgstr "Charger les symboles de la map" -#: src/gui/widgets/assembly.cc:450 src/gui/widgets/assembly.cc:525 +#: src/gui/widgets/assembly.cc:485 src/gui/widgets/assembly.cc:560 msgid "Pause" msgstr "Pause" -#: src/gui/widgets/assembly.cc:451 src/gui/widgets/assembly.cc:527 +#: src/gui/widgets/assembly.cc:486 src/gui/widgets/assembly.cc:562 #: src/gui/widgets/gpulogger.cc:47 msgid "Resume" msgstr "Reprendre" -#: src/gui/widgets/assembly.cc:453 src/gui/widgets/assembly.cc:529 +#: src/gui/widgets/assembly.cc:488 src/gui/widgets/assembly.cc:564 msgid "Step In" msgstr "Step In" #. Options, Filter -#: src/gui/widgets/assembly.cc:459 src/gui/widgets/console.cc:53 +#: src/gui/widgets/assembly.cc:494 src/gui/widgets/console.cc:53 #: src/gui/widgets/dynarec_disassembly.cc:106 msgid "Options" msgstr "Options" -#: src/gui/widgets/assembly.cc:460 +#: src/gui/widgets/assembly.cc:495 msgid "Combined pseudo-instructions" msgstr "Pseudo-instructions combinées" -#: src/gui/widgets/assembly.cc:465 +#: src/gui/widgets/assembly.cc:500 msgid "" "When two instructions are detected to be a single pseudo-instruction, " "combine them into the actual pseudo-instruction." @@ -2167,12 +2172,12 @@ msgstr "" "Quand deux instructions sont détectées comme étant une seule pseudo-" "instruction, les combiner dans l'actuelle pseudo-instruction." -#: src/gui/widgets/assembly.cc:470 +#: src/gui/widgets/assembly.cc:505 #, fuzzy msgid "Pseudo-instructions filling" msgstr "Remplacement des pseudo-instructions" -#: src/gui/widgets/assembly.cc:475 +#: src/gui/widgets/assembly.cc:510 msgid "" "When combining two instructions into a single pseudo-instruction, add a " "placeholder for the second one." @@ -2180,11 +2185,11 @@ msgstr "" "En combinant deux instructions en une seule pseudo-instruction, ajouter un " "espace réservé pour la seconde." -#: src/gui/widgets/assembly.cc:480 +#: src/gui/widgets/assembly.cc:515 msgid "Delay slot notch" msgstr "Delay slot notch" -#: src/gui/widgets/assembly.cc:485 +#: src/gui/widgets/assembly.cc:520 msgid "" "Add a small visible notch to indicate instructions that are on the delay " "slot of a branch." @@ -2192,146 +2197,141 @@ msgstr "" "Ajouter une marque visible pour indiquer les instructions qui se trouvent à " "l'emplacement d'un Delay Slot." -#: src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:524 msgid "Draw arrows for jumps" msgstr "Draw arrows for jumps" -#: src/gui/widgets/assembly.cc:493 +#: src/gui/widgets/assembly.cc:528 msgid "Display arrows for jumps. This might crowd the display a bit too much." msgstr "Display arrows for jumps. This might crowd the display a bit too much." -#: src/gui/widgets/assembly.cc:497 +#: src/gui/widgets/assembly.cc:532 msgid "Columns" msgstr "Colonnes" -#: src/gui/widgets/assembly.cc:516 src/gui/widgets/log.cc:111 +#: src/gui/widgets/assembly.cc:551 src/gui/widgets/log.cc:111 msgid "CPU trace" msgstr "" -#: src/gui/widgets/assembly.cc:518 +#: src/gui/widgets/assembly.cc:553 msgid "Skip ISR" msgstr "" -#: src/gui/widgets/assembly.cc:520 +#: src/gui/widgets/assembly.cc:555 msgid "Follow PC" msgstr "Suivre PC" -#: src/gui/widgets/assembly.cc:522 +#: src/gui/widgets/assembly.cc:557 msgid "Jump to PC" msgstr "" -#: src/gui/widgets/assembly.cc:535 +#: src/gui/widgets/assembly.cc:570 #, c-format msgid "In ISR: %s" msgstr "" -#: src/gui/widgets/assembly.cc:709 src/gui/widgets/assembly.cc:737 +#: src/gui/widgets/assembly.cc:744 src/gui/widgets/assembly.cc:770 #: src/gui/widgets/breakpoints.cc:171 #, fuzzy msgid "GUI" msgstr "GPU" -#: src/gui/widgets/assembly.cc:718 +#: src/gui/widgets/assembly.cc:753 msgid "Create symbol here" msgstr "" -#: src/gui/widgets/assembly.cc:723 +#: src/gui/widgets/assembly.cc:758 #, fuzzy msgid "Remove symbol" msgstr "Charger les symboles de la map" -#: src/gui/widgets/assembly.cc:727 +#: src/gui/widgets/assembly.cc:762 #, fuzzy msgid "Copy Address" msgstr "Adresse" -#: src/gui/widgets/assembly.cc:732 src/gui/widgets/registers.cc:39 -#, fuzzy -msgid "Go to in Memory Editor" -msgstr "Editeurs de Mémoire" - -#: src/gui/widgets/assembly.cc:735 +#: src/gui/widgets/assembly.cc:768 #, fuzzy msgid "Run to Cursor" msgstr "Exécuter jusqu'au curseur" -#: src/gui/widgets/assembly.cc:744 +#: src/gui/widgets/assembly.cc:777 #, fuzzy msgid "Toggle Breakpoint" msgstr "Afficher les Breakpoints" -#: src/gui/widgets/assembly.cc:748 src/gui/widgets/assembly.cc:753 +#: src/gui/widgets/assembly.cc:781 src/gui/widgets/assembly.cc:786 #, fuzzy msgid "Remove Breakpoint" msgstr "Afficher les Breakpoints" -#: src/gui/widgets/assembly.cc:757 src/gui/widgets/assembly.cc:954 -#: src/gui/widgets/assembly.cc:956 src/gui/widgets/assembly.cc:962 +#: src/gui/widgets/assembly.cc:790 src/gui/widgets/assembly.cc:987 +#: src/gui/widgets/assembly.cc:989 src/gui/widgets/assembly.cc:995 #, fuzzy msgid "Assemble" msgstr "Assembleur" -#: src/gui/widgets/assembly.cc:887 src/gui/widgets/breakpoints.cc:153 +#: src/gui/widgets/assembly.cc:920 src/gui/widgets/breakpoints.cc:153 #: src/gui/widgets/memory_observer.cc:170 #: src/gui/widgets/memory_observer.cc:328 #: src/gui/widgets/memory_observer.cc:424 src/gui/widgets/typed_debugger.cc:961 msgid "Address" msgstr "Adresse" -#: src/gui/widgets/assembly.cc:901 +#: src/gui/widgets/assembly.cc:934 msgid "RAM base" msgstr "Base de la RAM" -#: src/gui/widgets/assembly.cc:910 src/gui/widgets/assembly.cc:1011 +#: src/gui/widgets/assembly.cc:943 src/gui/widgets/assembly.cc:1044 #, fuzzy msgid "Symbols" msgstr "Charger les Symboles" -#: src/gui/widgets/assembly.cc:936 src/gui/widgets/assembly.cc:938 +#: src/gui/widgets/assembly.cc:969 src/gui/widgets/assembly.cc:971 #, fuzzy msgid "Add symbol" msgstr "Charger les Symboles" -#: src/gui/widgets/assembly.cc:939 +#: src/gui/widgets/assembly.cc:972 #, c-format msgid "Add symbol for address 0x%08x:" msgstr "" -#: src/gui/widgets/assembly.cc:941 +#: src/gui/widgets/assembly.cc:974 #, fuzzy msgid "Add" msgstr "Adresse" -#: src/gui/widgets/assembly.cc:957 +#: src/gui/widgets/assembly.cc:990 #, c-format msgid "Assemble code for address 0x%08x:" msgstr "" #. Clear items button -#: src/gui/widgets/assembly.cc:982 src/gui/widgets/console.cc:39 +#: src/gui/widgets/assembly.cc:1015 src/gui/widgets/console.cc:39 #: src/gui/widgets/dynarec_disassembly.cc:90 src/gui/widgets/log.cc:128 #: src/gui/widgets/pio-cart.cc:41 src/gui/widgets/typed_debugger.cc:827 msgid "Clear" msgstr "Effacer" -#: src/gui/widgets/assembly.cc:984 src/gui/widgets/dynarec_disassembly.cc:73 +#: src/gui/widgets/assembly.cc:1017 src/gui/widgets/dynarec_disassembly.cc:73 #, fuzzy msgid "Close" msgstr "Fermer le CAPOT" -#: src/gui/widgets/assembly.cc:1012 +#: src/gui/widgets/assembly.cc:1045 msgid "Refresh" msgstr "" -#: src/gui/widgets/assembly.cc:1014 +#: src/gui/widgets/assembly.cc:1047 msgid "Filter" msgstr "Filtre" -#: src/gui/widgets/assembly.cc:1028 +#: src/gui/widgets/assembly.cc:1061 msgid "Code##{}{:08x}" msgstr "" -#: src/gui/widgets/assembly.cc:1029 +#: src/gui/widgets/assembly.cc:1062 msgid "Data##{}{:08x}" msgstr "" @@ -2962,7 +2962,7 @@ msgstr "Impossible de charger la carte mémoire %s !\n" msgid "Import Memory Card file" msgstr "Impossible de charger la carte mémoire %s !\n" -#: src/gui/widgets/memcard_manager.h:78 +#: src/gui/widgets/memcard_manager.h:77 #, fuzzy msgid "Export Memory Card file" msgstr "Impossible de charger la carte mémoire %s !\n" @@ -3153,6 +3153,11 @@ msgstr "Copier" msgid "Go to in Assembly" msgstr "Afficher l'Assembleur" +#: src/gui/widgets/registers.cc:39 +#, fuzzy +msgid "Go to in Memory Editor" +msgstr "Editeurs de Mémoire" + #: src/gui/widgets/registers.cc:42 msgid "Copy Value" msgstr "" @@ -3640,90 +3645,18 @@ msgid "" "is necessary for some games." msgstr "" -#: src/spu/debug.cc:62 +#: src/spu/debug.cc:581 #, fuzzy msgid "SPU Debug" msgstr "Débug" -#: src/spu/debug.cc:84 #, fuzzy -msgid "Mute all" -msgstr "Muet" +#~ msgid "Mute all" +#~ msgstr "Muet" -#: src/spu/debug.cc:90 #, fuzzy -msgid "Unmute all" -msgstr "Désactivé" - -#: src/spu/debug.cc:104 -msgid "ADSR channel info" -msgstr "" - -#: src/spu/debug.cc:107 -msgid "" -"Attack:\n" -"Decay:\n" -"Sustain:\n" -"Release:" -msgstr "" - -#: src/spu/debug.cc:115 -msgid "" -"Sustain level:\n" -"Sustain inc:\n" -"Curr adsr vol:\n" -"Raw enveloppe" -msgstr "" - -#: src/spu/debug.cc:123 -msgid "Generic channel info" -msgstr "" - -#: src/spu/debug.cc:127 -msgid "" -"On:\n" -"Stop:\n" -"Noise:\n" -"FMod:\n" -"Reverb:\n" -"Rvb active:\n" -"Rvb number:\n" -"Rvb offset:\n" -"Rvb repeat:" -msgstr "" - -#: src/spu/debug.cc:138 -msgid "" -"Start pos:\n" -"Curr pos:\n" -"Loop pos:\n" -"\n" -"Right vol:\n" -"Left vol:\n" -"\n" -"Act freq:\n" -"Used freq:" -msgstr "" - -#: src/spu/debug.cc:150 -msgid "" -"Freq:\n" -"Stereo:\n" -"Samples:\n" -"Volume:\n" -msgstr "" - -#: src/spu/debug.cc:159 -msgid "Spu states" -msgstr "" - -#: src/spu/debug.cc:160 -msgid "" -"Irq addr:\n" -"Ctrl:\n" -"Stat:\n" -"Spu mem:" -msgstr "" +#~ msgid "Unmute all" +#~ msgstr "Désactivé" #, c-format #~ msgid "Error decoding audio frame\n" diff --git a/i18n/pcsx-redux.pot b/i18n/pcsx-redux.pot index c16e9aa43..0f606a4b3 100644 --- a/i18n/pcsx-redux.pot +++ b/i18n/pcsx-redux.pot @@ -157,8 +157,8 @@ msgstr "" msgid "Step in" msgstr "" -#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:454 -#: src/gui/widgets/assembly.cc:531 +#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:566 msgid "Step Over" msgstr "" @@ -175,20 +175,20 @@ msgstr "" msgid "Breakpoint triggered: PC=0x%08x - Cause: %s %s\n" msgstr "" -#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:455 -#: src/gui/widgets/assembly.cc:533 +#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:490 +#: src/gui/widgets/assembly.cc:568 msgid "Step Out" msgstr "" -#: src/core/debug.h:37 +#: src/core/debug.h:36 msgid "Exec" msgstr "" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:285 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:285 msgid "Read" msgstr "" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:287 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:287 msgid "Write" msgstr "" @@ -491,7 +491,7 @@ msgstr "" msgid "Keyboard {}" msgstr "" -#: src/core/pad.cc:986 src/gui/gui.cc:1993 +#: src/core/pad.cc:986 src/gui/gui.cc:2019 msgid "Auto" msgstr "" @@ -777,67 +777,37 @@ msgstr "" msgid "Unknown bios loaded (%08x)\n" msgstr "" -#: src/core/psxmem.cc:276 -#, c-format -msgid "8-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:283 +#: src/core/psxmem.cc:282 #, c-format msgid "8-bit read from unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:313 -#, c-format -msgid "16-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:316 +#: src/core/psxmem.cc:314 #, c-format msgid "16-bit read from unknown address: %8.8lx\n" msgstr "" #: src/core/psxmem.cc:348 #, c-format -msgid "32-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:351 -#, c-format msgid "32-bit read from unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:452 -#, c-format -msgid "8-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:455 +#: src/core/psxmem.cc:451 #, c-format msgid "8-bit write to unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:482 -#, c-format -msgid "16-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:485 +#: src/core/psxmem.cc:480 #, c-format msgid "16-bit write to unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:523 +#: src/core/psxmem.cc:518 #, c-format msgid "Unknown BIU value: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:530 -#, c-format -msgid "32-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:533 +#: src/core/psxmem.cc:527 #, c-format msgid "32-bit write to unknown address: %8.8lx\n" msgstr "" @@ -971,472 +941,472 @@ msgstr "" msgid "VRAM" msgstr "" -#: src/gui/gui.cc:1055 +#: src/gui/gui.cc:1081 msgid "Output" msgstr "" -#: src/gui/gui.cc:1080 src/gui/widgets/assembly.cc:442 +#: src/gui/gui.cc:1106 src/gui/widgets/assembly.cc:477 #: src/gui/widgets/isobrowser.cc:66 src/gui/widgets/memcard_manager.cc:63 #: src/gui/widgets/vram-viewer.cc:482 msgid "File" msgstr "" -#: src/gui/gui.cc:1081 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 +#: src/gui/gui.cc:1107 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 #: src/gui/widgets/isobrowser.h:50 msgid "Open Disk Image" msgstr "" -#: src/gui/gui.cc:1082 src/gui/widgets/isobrowser.cc:68 +#: src/gui/gui.cc:1108 src/gui/widgets/isobrowser.cc:68 msgid "Close Disk Image" msgstr "" -#: src/gui/gui.cc:1086 +#: src/gui/gui.cc:1112 msgid "Load binary" msgstr "" -#: src/gui/gui.cc:1089 +#: src/gui/gui.cc:1115 msgid "Add Lua archive" msgstr "" -#: src/gui/gui.cc:1093 +#: src/gui/gui.cc:1119 msgid "Dump save state proto schema" msgstr "" -#: src/gui/gui.cc:1098 +#: src/gui/gui.cc:1124 msgid "global{}" msgstr "" -#: src/gui/gui.cc:1100 +#: src/gui/gui.cc:1126 msgid "Save state slots" msgstr "" -#: src/gui/gui.cc:1101 +#: src/gui/gui.cc:1127 msgid "Quick-save slot" msgstr "" -#: src/gui/gui.cc:1106 src/gui/gui.cc:1127 +#: src/gui/gui.cc:1132 src/gui/gui.cc:1153 msgid "Slot {}" msgstr "" -#: src/gui/gui.cc:1113 +#: src/gui/gui.cc:1139 msgid "Show named save states" msgstr "" -#: src/gui/gui.cc:1118 +#: src/gui/gui.cc:1144 msgid "Save global state" msgstr "" -#: src/gui/gui.cc:1120 +#: src/gui/gui.cc:1146 msgid "Load state slots" msgstr "" -#: src/gui/gui.cc:1123 +#: src/gui/gui.cc:1149 msgid "Quick-load slot" msgstr "" -#: src/gui/gui.cc:1148 +#: src/gui/gui.cc:1174 msgid "Load global state" msgstr "" -#: src/gui/gui.cc:1152 +#: src/gui/gui.cc:1178 msgid "Open LID" msgstr "" -#: src/gui/gui.cc:1156 +#: src/gui/gui.cc:1182 msgid "Close LID" msgstr "" -#: src/gui/gui.cc:1160 +#: src/gui/gui.cc:1186 msgid "Open and close LID" msgstr "" -#: src/gui/gui.cc:1165 +#: src/gui/gui.cc:1191 msgid "Reboot" msgstr "" -#: src/gui/gui.cc:1168 +#: src/gui/gui.cc:1194 msgid "Quit" msgstr "" -#: src/gui/gui.cc:1174 src/gui/gui.cc:1191 +#: src/gui/gui.cc:1200 src/gui/gui.cc:1217 msgid "Emulation" msgstr "" -#: src/gui/gui.cc:1175 +#: src/gui/gui.cc:1201 msgid "Start emulation" msgstr "" -#: src/gui/gui.cc:1178 +#: src/gui/gui.cc:1204 msgid "Pause emulation" msgstr "" -#: src/gui/gui.cc:1181 +#: src/gui/gui.cc:1207 msgid "Soft Reset" msgstr "" -#: src/gui/gui.cc:1184 +#: src/gui/gui.cc:1210 msgid "Hard Reset" msgstr "" -#: src/gui/gui.cc:1190 src/gui/widgets/vram-viewer.cc:520 +#: src/gui/gui.cc:1216 src/gui/widgets/vram-viewer.cc:520 msgid "Configuration" msgstr "" -#: src/gui/gui.cc:1192 +#: src/gui/gui.cc:1218 msgid "Manage Memory Cards" msgstr "" -#: src/gui/gui.cc:1195 src/gui/gui.cc:1295 +#: src/gui/gui.cc:1221 src/gui/gui.cc:1321 msgid "GPU" msgstr "" -#: src/gui/gui.cc:1196 src/gui/gui.cc:1311 +#: src/gui/gui.cc:1222 src/gui/gui.cc:1337 msgid "SPU" msgstr "" -#: src/gui/gui.cc:1197 +#: src/gui/gui.cc:1223 msgid "UI" msgstr "" -#: src/gui/gui.cc:1198 +#: src/gui/gui.cc:1224 msgid "System" msgstr "" -#: src/gui/gui.cc:1199 +#: src/gui/gui.cc:1225 msgid "Controls" msgstr "" -#: src/gui/gui.cc:1200 +#: src/gui/gui.cc:1226 msgid "Shader presets" msgstr "" -#: src/gui/gui.cc:1201 +#: src/gui/gui.cc:1227 msgid "Default shader" msgstr "" -#: src/gui/gui.cc:1204 +#: src/gui/gui.cc:1230 msgid "CRT-lottes shader" msgstr "" -#: src/gui/gui.cc:1231 +#: src/gui/gui.cc:1257 msgid "Configure Shaders" msgstr "" -#: src/gui/gui.cc:1235 +#: src/gui/gui.cc:1261 msgid "PIO Cartridge" msgstr "" -#: src/gui/gui.cc:1239 src/gui/widgets/assembly.cc:449 +#: src/gui/gui.cc:1265 src/gui/widgets/assembly.cc:484 msgid "Debug" msgstr "" -#: src/gui/gui.cc:1240 +#: src/gui/gui.cc:1266 msgid "Show Logs" msgstr "" -#: src/gui/gui.cc:1241 +#: src/gui/gui.cc:1267 msgid "Lua" msgstr "" -#: src/gui/gui.cc:1242 +#: src/gui/gui.cc:1268 msgid "Show Lua Console" msgstr "" -#: src/gui/gui.cc:1243 +#: src/gui/gui.cc:1269 msgid "Show Lua Inspector" msgstr "" -#: src/gui/gui.cc:1244 +#: src/gui/gui.cc:1270 msgid "Show Lua editor" msgstr "" -#: src/gui/gui.cc:1248 +#: src/gui/gui.cc:1274 msgid "CPU" msgstr "" -#: src/gui/gui.cc:1249 +#: src/gui/gui.cc:1275 msgid "Show Registers" msgstr "" -#: src/gui/gui.cc:1250 +#: src/gui/gui.cc:1276 msgid "Show Assembly" msgstr "" -#: src/gui/gui.cc:1252 src/gui/gui.cc:1254 +#: src/gui/gui.cc:1278 src/gui/gui.cc:1280 msgid "Show DynaRec Disassembly" msgstr "" -#: src/gui/gui.cc:1256 +#: src/gui/gui.cc:1282 msgid "" "DynaRec Disassembler is not available in Interpreted CPU mode. Try enabling " "[Dynarec CPU]\n" "in Configuration->Emulation, restart PCSX-Redux, then try again." msgstr "" -#: src/gui/gui.cc:1259 +#: src/gui/gui.cc:1285 msgid "Show Breakpoints" msgstr "" -#: src/gui/gui.cc:1260 +#: src/gui/gui.cc:1286 msgid "Show Callstacks" msgstr "" -#: src/gui/gui.cc:1261 +#: src/gui/gui.cc:1287 msgid "Memory Editors" msgstr "" -#: src/gui/gui.cc:1272 +#: src/gui/gui.cc:1298 msgid "Show Memory Observer" msgstr "" -#: src/gui/gui.cc:1273 +#: src/gui/gui.cc:1299 msgid "Show Typed Debugger" msgstr "" -#: src/gui/gui.cc:1274 +#: src/gui/gui.cc:1300 msgid "Show Interrupts Scaler" msgstr "" -#: src/gui/gui.cc:1275 +#: src/gui/gui.cc:1301 msgid "First Chance Exceptions" msgstr "" -#: src/gui/gui.cc:1296 +#: src/gui/gui.cc:1322 msgid "VRAM viewers" msgstr "" -#: src/gui/gui.cc:1297 +#: src/gui/gui.cc:1323 msgid "Show main VRAM viewer" msgstr "" -#: src/gui/gui.cc:1298 +#: src/gui/gui.cc:1324 msgid "Show CLUT VRAM viewer" msgstr "" -#: src/gui/gui.cc:1301 +#: src/gui/gui.cc:1327 msgid "Show VRAM viewer #" msgstr "" -#: src/gui/gui.cc:1307 +#: src/gui/gui.cc:1333 msgid "Show GPU logger" msgstr "" -#: src/gui/gui.cc:1308 +#: src/gui/gui.cc:1334 msgid "Show GPU debug" msgstr "" -#: src/gui/gui.cc:1312 +#: src/gui/gui.cc:1338 msgid "Show SPU debug" msgstr "" -#: src/gui/gui.cc:1315 +#: src/gui/gui.cc:1341 msgid "CD-Rom" msgstr "" -#: src/gui/gui.cc:1316 +#: src/gui/gui.cc:1342 msgid "Show Iso Browser" msgstr "" -#: src/gui/gui.cc:1319 +#: src/gui/gui.cc:1345 msgid "Misc hardware" msgstr "" -#: src/gui/gui.cc:1320 +#: src/gui/gui.cc:1346 msgid "Show SIO1 debug" msgstr "" -#: src/gui/gui.cc:1324 +#: src/gui/gui.cc:1350 msgid "Kernel" msgstr "" -#: src/gui/gui.cc:1325 +#: src/gui/gui.cc:1351 msgid "Kernel Events" msgstr "" -#: src/gui/gui.cc:1326 +#: src/gui/gui.cc:1352 msgid "Kernel Handlers" msgstr "" -#: src/gui/gui.cc:1327 src/gui/gui.cc:1473 +#: src/gui/gui.cc:1353 src/gui/gui.cc:1499 msgid "Kernel Calls" msgstr "" -#: src/gui/gui.cc:1330 +#: src/gui/gui.cc:1356 msgid "Rendering" msgstr "" -#: src/gui/gui.cc:1331 +#: src/gui/gui.cc:1357 msgid "Full window render" msgstr "" -#: src/gui/gui.cc:1334 +#: src/gui/gui.cc:1360 msgid "Fullscreen" msgstr "" -#: src/gui/gui.cc:1338 +#: src/gui/gui.cc:1364 msgid "Show Output Shader Editor" msgstr "" -#: src/gui/gui.cc:1339 +#: src/gui/gui.cc:1365 msgid "Show Offscreen Shader Editor" msgstr "" -#: src/gui/gui.cc:1340 +#: src/gui/gui.cc:1366 msgid "Reset shaders" msgstr "" -#: src/gui/gui.cc:1348 +#: src/gui/gui.cc:1374 msgid "Help" msgstr "" -#: src/gui/gui.cc:1349 +#: src/gui/gui.cc:1375 msgid "Show ImGui Demo" msgstr "" -#: src/gui/gui.cc:1351 +#: src/gui/gui.cc:1377 msgid "Show UvFile information" msgstr "" -#: src/gui/gui.cc:1353 src/gui/gui.cc:2258 +#: src/gui/gui.cc:1379 src/gui/gui.cc:2284 msgid "About" msgstr "" -#: src/gui/gui.cc:1358 +#: src/gui/gui.cc:1384 #, c-format msgid "CPU: %s" msgstr "" -#: src/gui/gui.cc:1360 src/gui/widgets/isobrowser.cc:102 +#: src/gui/gui.cc:1386 src/gui/widgets/isobrowser.cc:102 #, c-format msgid "GAME ID: %s" msgstr "" -#: src/gui/gui.cc:1363 +#: src/gui/gui.cc:1389 #, c-format msgid "%.2f FPS (%.2f ms)" msgstr "" -#: src/gui/gui.cc:1366 +#: src/gui/gui.cc:1392 #, c-format msgid "%.2f ms audio buffer (%i frames)" msgstr "" -#: src/gui/gui.cc:1368 +#: src/gui/gui.cc:1394 msgid "Idle" msgstr "" -#: src/gui/gui.cc:1449 +#: src/gui/gui.cc:1475 msgid "Logs" msgstr "" -#: src/gui/gui.cc:1455 +#: src/gui/gui.cc:1481 msgid "Lua Console" msgstr "" -#: src/gui/gui.cc:1461 +#: src/gui/gui.cc:1487 msgid "Lua Inspector" msgstr "" -#: src/gui/gui.cc:1464 +#: src/gui/gui.cc:1490 msgid "Lua Editor" msgstr "" -#: src/gui/gui.cc:1467 +#: src/gui/gui.cc:1493 msgid "Kernel events" msgstr "" -#: src/gui/gui.cc:1470 +#: src/gui/gui.cc:1496 msgid "Kernel handlers" msgstr "" -#: src/gui/gui.cc:1476 +#: src/gui/gui.cc:1502 msgid "Callstacks" msgstr "" -#: src/gui/gui.cc:1525 +#: src/gui/gui.cc:1551 msgid "Memory Card Manager" msgstr "" -#: src/gui/gui.cc:1529 src/gui/widgets/registers.cc:65 +#: src/gui/gui.cc:1555 src/gui/widgets/registers.cc:65 msgid "Registers" msgstr "" -#: src/gui/gui.cc:1533 +#: src/gui/gui.cc:1559 msgid "Assembly" msgstr "" -#: src/gui/gui.cc:1537 +#: src/gui/gui.cc:1563 msgid "DynaRec Disassembler" msgstr "" -#: src/gui/gui.cc:1541 src/gui/widgets/breakpoints.cc:81 +#: src/gui/gui.cc:1567 src/gui/widgets/breakpoints.cc:81 #: src/gui/widgets/typed_debugger.cc:864 src/gui/widgets/typed_debugger.cc:910 #: src/gui/widgets/typed_debugger.cc:963 msgid "Breakpoints" msgstr "" -#: src/gui/gui.cc:1545 +#: src/gui/gui.cc:1571 msgid "Named Save States" msgstr "" -#: src/gui/gui.cc:1549 src/gui/widgets/memory_observer.cc:382 +#: src/gui/gui.cc:1575 src/gui/widgets/memory_observer.cc:382 #: src/gui/widgets/memory_observer.cc:388 msgid "Memory Observer" msgstr "" -#: src/gui/gui.cc:1553 src/gui/widgets/typed_debugger.cc:1062 +#: src/gui/gui.cc:1579 src/gui/widgets/typed_debugger.cc:1062 msgid "Typed Debugger" msgstr "" -#: src/gui/gui.cc:1559 +#: src/gui/gui.cc:1585 msgid "Output Video" msgstr "" -#: src/gui/gui.cc:1564 +#: src/gui/gui.cc:1590 msgid "Offscreen Render" msgstr "" -#: src/gui/gui.cc:1570 +#: src/gui/gui.cc:1596 msgid "PIO Cartridge Configuration" msgstr "" -#: src/gui/gui.cc:1574 +#: src/gui/gui.cc:1600 msgid "SIO1 Debug" msgstr "" -#: src/gui/gui.cc:1578 +#: src/gui/gui.cc:1604 msgid "ISO Browser" msgstr "" -#: src/gui/gui.cc:1588 +#: src/gui/gui.cc:1614 msgid "GPU Logger" msgstr "" -#: src/gui/gui.cc:1591 +#: src/gui/gui.cc:1617 msgid "UI Configuration" msgstr "" -#: src/gui/gui.cc:1597 +#: src/gui/gui.cc:1623 msgid "Locale" msgstr "" -#: src/gui/gui.cc:1612 +#: src/gui/gui.cc:1638 msgid "Reload locales" msgstr "" -#: src/gui/gui.cc:1617 +#: src/gui/gui.cc:1643 msgid "Main Font Size" msgstr "" -#: src/gui/gui.cc:1618 +#: src/gui/gui.cc:1644 msgid "Mono Font Size" msgstr "" -#: src/gui/gui.cc:1620 +#: src/gui/gui.cc:1646 msgid "Use Widescreen Aspect Ratio" msgstr "" -#: src/gui/gui.cc:1621 +#: src/gui/gui.cc:1647 msgid "" "Sets the output screen ratio to 16:9 instead of 4:3.\n" "\n" @@ -1451,23 +1421,23 @@ msgid "" "their TV set to match the aspect ratio of the game." msgstr "" -#: src/gui/gui.cc:1640 +#: src/gui/gui.cc:1666 msgid "System Configuration" msgstr "" -#: src/gui/gui.cc:1642 +#: src/gui/gui.cc:1668 msgid "Preload Disk Image files" msgstr "" -#: src/gui/gui.cc:1643 +#: src/gui/gui.cc:1669 msgid "Enable Auto Update" msgstr "" -#: src/gui/gui.cc:1650 +#: src/gui/gui.cc:1676 msgid "Update configuration" msgstr "" -#: src/gui/gui.cc:1651 +#: src/gui/gui.cc:1677 msgid "" "PCSX-Redux can automatically update itself.\n" "\n" @@ -1484,19 +1454,19 @@ msgid "" "Configuration -> System menu." msgstr "" -#: src/gui/gui.cc:1664 +#: src/gui/gui.cc:1690 msgid "Enable auto update" msgstr "" -#: src/gui/gui.cc:1670 +#: src/gui/gui.cc:1696 msgid "No thanks" msgstr "" -#: src/gui/gui.cc:1679 +#: src/gui/gui.cc:1705 msgid "Update available" msgstr "" -#: src/gui/gui.cc:1681 +#: src/gui/gui.cc:1707 msgid "" "An update is available.\n" "Click 'Update' to download and apply the update.\n" @@ -1506,7 +1476,7 @@ msgid "" "the update and manually apply it." msgstr "" -#: src/gui/gui.cc:1688 +#: src/gui/gui.cc:1714 msgid "" "An update is available.\n" "Click 'Update' to download it. While the update can be\n" @@ -1518,90 +1488,90 @@ msgid "" "the update and manually apply it." msgstr "" -#: src/gui/gui.cc:1699 +#: src/gui/gui.cc:1725 msgid "Update" msgstr "" -#: src/gui/gui.cc:1711 src/gui/gui.cc:1716 +#: src/gui/gui.cc:1737 src/gui/gui.cc:1742 msgid "" "An error has occured while downloading\n" "and/or applying the update." msgstr "" -#: src/gui/gui.cc:1722 +#: src/gui/gui.cc:1748 msgid "Download" msgstr "" -#: src/gui/gui.cc:1732 +#: src/gui/gui.cc:1758 msgid "An error has occured while downloading the update." msgstr "" -#: src/gui/gui.cc:1738 src/gui/widgets/assembly.cc:947 +#: src/gui/gui.cc:1764 src/gui/widgets/assembly.cc:980 #: src/gui/widgets/breakpoints.cc:38 src/gui/widgets/registers.cc:339 #: src/gui/widgets/sio1.cc:203 msgid "Cancel" msgstr "" -#: src/gui/gui.cc:1747 +#: src/gui/gui.cc:1773 msgid "UvFiles" msgstr "" -#: src/gui/gui.cc:1750 +#: src/gui/gui.cc:1776 #, c-format msgid "Read rate: %s" msgstr "" -#: src/gui/gui.cc:1752 +#: src/gui/gui.cc:1778 #, c-format msgid "Write rate: %s" msgstr "" -#: src/gui/gui.cc:1754 +#: src/gui/gui.cc:1780 #, c-format msgid "Download rate: %s" msgstr "" -#: src/gui/gui.cc:1756 +#: src/gui/gui.cc:1782 msgid "Caching" msgstr "" -#: src/gui/gui.cc:1757 src/gui/widgets/memcard_manager.cc:201 +#: src/gui/gui.cc:1783 src/gui/widgets/memcard_manager.cc:201 msgid "Filename" msgstr "" -#: src/gui/gui.cc:1944 +#: src/gui/gui.cc:1970 msgid "Emulation Configuration" msgstr "" -#: src/gui/gui.cc:1945 +#: src/gui/gui.cc:1971 msgid "Idle Swap Interval" msgstr "" -#: src/gui/gui.cc:1950 +#: src/gui/gui.cc:1976 msgid "Reset Scaler" msgstr "" -#: src/gui/gui.cc:1956 +#: src/gui/gui.cc:1982 msgid "Speed Scaler" msgstr "" -#: src/gui/gui.cc:1958 +#: src/gui/gui.cc:1984 msgid "Enable XA decoder" msgstr "" -#: src/gui/gui.cc:1959 +#: src/gui/gui.cc:1985 msgid "Always enable SPU IRQ" msgstr "" -#: src/gui/gui.cc:1960 +#: src/gui/gui.cc:1986 msgid "Decode MDEC videos in B&W" msgstr "" -#: src/gui/gui.cc:1961 +#: src/gui/gui.cc:1987 msgid "Dynarec CPU" msgstr "" -#: src/gui/gui.cc:1969 +#: src/gui/gui.cc:1995 msgid "" "Activates the dynamic recompiler CPU core.\n" "It is significantly faster than the interpreted CPU,\n" @@ -1611,22 +1581,22 @@ msgid "" "this setting may not have any effect for you." msgstr "" -#: src/gui/gui.cc:1975 +#: src/gui/gui.cc:2001 msgid "8MB" msgstr "" -#: src/gui/gui.cc:1976 +#: src/gui/gui.cc:2002 msgid "" "Emulates an installed 8MB system,\n" "instead of the normal 2MB. Useful for working\n" "with development binaries and games." msgstr "" -#: src/gui/gui.cc:1980 +#: src/gui/gui.cc:2006 msgid "OpenGL GPU *ALPHA STATE*" msgstr "" -#: src/gui/gui.cc:1981 +#: src/gui/gui.cc:2007 msgid "" "Enables the OpenGL GPU renderer.\n" "This is not recommended for normal use at the moment,\n" @@ -1635,23 +1605,23 @@ msgid "" "when changing this setting." msgstr "" -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "NTSC" msgstr "" -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "PAL" msgstr "" -#: src/gui/gui.cc:1996 +#: src/gui/gui.cc:2022 msgid "System Type" msgstr "" -#: src/gui/gui.cc:2015 +#: src/gui/gui.cc:2041 msgid "Fast boot" msgstr "" -#: src/gui/gui.cc:2016 +#: src/gui/gui.cc:2042 msgid "" "This will cause the BIOS to skip the shell,\n" "which may include additional checks.\n" @@ -1659,37 +1629,37 @@ msgid "" "faster by not displaying the logo." msgstr "" -#: src/gui/gui.cc:2021 +#: src/gui/gui.cc:2047 msgid "BIOS file" msgstr "" -#: src/gui/gui.cc:2025 src/gui/widgets/assembly.cc:507 +#: src/gui/gui.cc:2051 src/gui/widgets/assembly.cc:542 msgid "Enable Debugger" msgstr "" -#: src/gui/gui.cc:2032 +#: src/gui/gui.cc:2058 msgid "" "This will enable the usage of various breakpoints\n" "throughout the execution of mips code. Enabling this\n" "can slow down emulation to a noticeable extent." msgstr "" -#: src/gui/gui.cc:2035 +#: src/gui/gui.cc:2061 msgid "Enable GDB Server" msgstr "" -#: src/gui/gui.cc:2044 +#: src/gui/gui.cc:2070 msgid "" "This will activate a gdb-server that you can\n" "connect to with any gdb-remote compliant client.\n" "You also need to enable the debugger." msgstr "" -#: src/gui/gui.cc:2048 +#: src/gui/gui.cc:2074 msgid "GDB send manifest" msgstr "" -#: src/gui/gui.cc:2049 +#: src/gui/gui.cc:2075 msgid "" "Enables sending the processor's manifest\n" "from the gdb server. Keep this enabled, unless\n" @@ -1697,177 +1667,177 @@ msgid "" "has a bug in its manifest parser." msgstr "" -#: src/gui/gui.cc:2056 +#: src/gui/gui.cc:2082 msgid "PCSX Logs to GDB" msgstr "" -#: src/gui/gui.cc:2072 +#: src/gui/gui.cc:2098 msgid "GDB Server Port" msgstr "" -#: src/gui/gui.cc:2074 +#: src/gui/gui.cc:2100 msgid "GDB Server Trace" msgstr "" -#: src/gui/gui.cc:2075 +#: src/gui/gui.cc:2101 msgid "" "The GDB server will start tracing its\n" "protocol into the logs, which can be helpful to debug\n" "the gdb server system itself." msgstr "" -#: src/gui/gui.cc:2078 +#: src/gui/gui.cc:2104 msgid "Enable Web Server" msgstr "" -#: src/gui/gui.cc:2087 +#: src/gui/gui.cc:2113 msgid "" "This will activate a web-server, that you can\n" "query using a REST api. See the wiki for details.\n" "The debugger might be required in some cases." msgstr "" -#: src/gui/gui.cc:2091 +#: src/gui/gui.cc:2117 msgid "Web Server Port" msgstr "" -#: src/gui/gui.cc:2092 +#: src/gui/gui.cc:2118 msgid "Enable SIO1 Server" msgstr "" -#: src/gui/gui.cc:2101 +#: src/gui/gui.cc:2127 msgid "" "This will activate a tcp server, that will\n" "relay information between tcp and sio1.\n" "See the wiki for details." msgstr "" -#: src/gui/gui.cc:2105 +#: src/gui/gui.cc:2131 msgid "SIO1 Server Port" msgstr "" -#: src/gui/gui.cc:2106 +#: src/gui/gui.cc:2132 msgid "Enable SIO1 Client" msgstr "" -#: src/gui/gui.cc:2119 +#: src/gui/gui.cc:2145 msgid "" "This will activate a tcp client, that can connect\n" "to another PCSX-Redux server to relay information between tcp and sio1.\n" "See the wiki for details." msgstr "" -#: src/gui/gui.cc:2123 +#: src/gui/gui.cc:2149 msgid "SIO1 Client Host" msgstr "" -#: src/gui/gui.cc:2126 +#: src/gui/gui.cc:2152 msgid "SIO1 Client Port" msgstr "" -#: src/gui/gui.cc:2130 +#: src/gui/gui.cc:2156 msgid "Reset SIO" msgstr "" -#: src/gui/gui.cc:2141 +#: src/gui/gui.cc:2167 msgid "Reconnect" msgstr "" -#: src/gui/gui.cc:2154 +#: src/gui/gui.cc:2180 msgid "SIO1Mode" msgstr "" -#: src/gui/gui.cc:2212 +#: src/gui/gui.cc:2238 msgid "Interrupt Scaler" msgstr "" -#: src/gui/gui.cc:2213 +#: src/gui/gui.cc:2239 msgid "Reset all" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Cherry##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Classic##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Default theme##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Light##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Dracula##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Mono##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Olive##Theme name" msgstr "" -#: src/gui/gui.cc:2235 +#: src/gui/gui.cc:2261 msgid "Themes" msgstr "" -#: src/gui/gui.cc:2266 src/gui/gui.cc:2340 +#: src/gui/gui.cc:2292 src/gui/gui.cc:2366 msgid "Version" msgstr "" -#: src/gui/gui.cc:2271 +#: src/gui/gui.cc:2297 msgid "Copy to clipboard" msgstr "" -#: src/gui/gui.cc:2277 +#: src/gui/gui.cc:2303 msgid "" "No version information.\n" "\n" "Probably built from source." msgstr "" -#: src/gui/gui.cc:2279 src/gui/gui.cc:2357 +#: src/gui/gui.cc:2305 src/gui/gui.cc:2383 #, c-format msgid "Version: %s" msgstr "" -#: src/gui/gui.cc:2280 +#: src/gui/gui.cc:2306 #, c-format msgid "Changeset: %s" msgstr "" -#: src/gui/gui.cc:2283 +#: src/gui/gui.cc:2309 #, c-format msgid "Date & time: %s" msgstr "" -#: src/gui/gui.cc:2292 +#: src/gui/gui.cc:2318 msgid "Authors" msgstr "" -#: src/gui/gui.cc:2300 +#: src/gui/gui.cc:2326 msgid "Licenses" msgstr "" -#: src/gui/gui.cc:2312 +#: src/gui/gui.cc:2338 msgid "OpenGL information" msgstr "" -#: src/gui/gui.cc:2314 +#: src/gui/gui.cc:2340 msgid "OpenGL error reporting: enabled" msgstr "" -#: src/gui/gui.cc:2316 +#: src/gui/gui.cc:2342 msgid "OpenGL error reporting: disabled" msgstr "" -#: src/gui/gui.cc:2319 +#: src/gui/gui.cc:2345 msgid "" "OpenGL error reporting has been disabled because your OpenGL driver is too " "old. Error reporting requires at least OpenGL 4.3. Please update your " @@ -1877,79 +1847,79 @@ msgid "" "be able to properly report problems accurately." msgstr "" -#: src/gui/gui.cc:2327 +#: src/gui/gui.cc:2353 msgid "Enable OpenGL error reporting" msgstr "" -#: src/gui/gui.cc:2330 +#: src/gui/gui.cc:2356 msgid "" "OpenGL error reporting is necessary for properly reporting OpenGL problems. " "However it requires OpenGL 4.3+ and might have performance repercussions on " "some computers. (Requires a restart of the emulator)" msgstr "" -#: src/gui/gui.cc:2334 +#: src/gui/gui.cc:2360 msgid "OpenGL error reporting severity" msgstr "" -#: src/gui/gui.cc:2337 +#: src/gui/gui.cc:2363 #, c-format msgid "Core profile: %s" msgstr "" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "no" msgstr "" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "yes" msgstr "" -#: src/gui/gui.cc:2338 +#: src/gui/gui.cc:2364 msgid "Vendor" msgstr "" -#: src/gui/gui.cc:2339 +#: src/gui/gui.cc:2365 msgid "Renderer" msgstr "" -#: src/gui/gui.cc:2341 +#: src/gui/gui.cc:2367 msgid "Shading language version" msgstr "" -#: src/gui/gui.cc:2344 +#: src/gui/gui.cc:2370 #, c-format msgid "Texture units: %d" msgstr "" -#: src/gui/gui.cc:2347 +#: src/gui/gui.cc:2373 msgid "Extensions:" msgstr "" -#: src/gui/gui.cc:2356 +#: src/gui/gui.cc:2382 msgid "FFmpeg information" msgstr "" -#: src/gui/gui.cc:2358 +#: src/gui/gui.cc:2384 #, c-format msgid "License: %s" msgstr "" -#: src/gui/gui.cc:2359 +#: src/gui/gui.cc:2385 #, c-format msgid "Configuration: %s" msgstr "" -#: src/gui/gui.cc:2362 +#: src/gui/gui.cc:2388 msgid "List of supported formats:" msgstr "" -#: src/gui/gui.cc:2380 +#: src/gui/gui.cc:2406 msgid "" "List of supported codecs: (D: Decoder, E: Encoder, L: Lossy, S: Lossless)" msgstr "" -#: src/gui/gui.cc:2420 +#: src/gui/gui.cc:2446 #, c-format msgid "%s codecs" msgstr "" @@ -2039,191 +2009,217 @@ msgstr "" msgid "Mask type" msgstr "" -#: src/gui/widgets/assembly.cc:443 +#: src/gui/widgets/assembly.cc:334 +msgid "Go to in Memory Editor #1 (Default Click)" +msgstr "" + +#: src/gui/widgets/assembly.cc:335 +msgid "Go to in Memory Editor #2 (Shift+Click)" +msgstr "" + +#: src/gui/widgets/assembly.cc:336 +msgid "Go to in Memory Editor #3 (Ctrl+Click)" +msgstr "" + +#: src/gui/widgets/assembly.cc:339 +msgid "Go to in Memory Editor #{}" +msgstr "" + +#: src/gui/widgets/assembly.cc:346 +msgid "Go to in Memory Editor..." +msgstr "" + +#: src/gui/widgets/assembly.cc:394 +#, c-format +msgid "Go to in Memory Editor #%d" +msgstr "" + +#: src/gui/widgets/assembly.cc:455 +#, c-format +msgid "Go to in Memory Editor #%u" +msgstr "" + +#: src/gui/widgets/assembly.cc:478 msgid "Load symbols map" msgstr "" -#: src/gui/widgets/assembly.cc:444 +#: src/gui/widgets/assembly.cc:479 msgid "Reset symbols map" msgstr "" -#: src/gui/widgets/assembly.cc:450 src/gui/widgets/assembly.cc:525 +#: src/gui/widgets/assembly.cc:485 src/gui/widgets/assembly.cc:560 msgid "Pause" msgstr "" -#: src/gui/widgets/assembly.cc:451 src/gui/widgets/assembly.cc:527 +#: src/gui/widgets/assembly.cc:486 src/gui/widgets/assembly.cc:562 #: src/gui/widgets/gpulogger.cc:47 msgid "Resume" msgstr "" -#: src/gui/widgets/assembly.cc:453 src/gui/widgets/assembly.cc:529 +#: src/gui/widgets/assembly.cc:488 src/gui/widgets/assembly.cc:564 msgid "Step In" msgstr "" #. Options, Filter -#: src/gui/widgets/assembly.cc:459 src/gui/widgets/console.cc:53 +#: src/gui/widgets/assembly.cc:494 src/gui/widgets/console.cc:53 #: src/gui/widgets/dynarec_disassembly.cc:106 msgid "Options" msgstr "" -#: src/gui/widgets/assembly.cc:460 +#: src/gui/widgets/assembly.cc:495 msgid "Combined pseudo-instructions" msgstr "" -#: src/gui/widgets/assembly.cc:465 +#: src/gui/widgets/assembly.cc:500 msgid "" "When two instructions are detected to be a single pseudo-instruction, " "combine them into the actual pseudo-instruction." msgstr "" -#: src/gui/widgets/assembly.cc:470 +#: src/gui/widgets/assembly.cc:505 msgid "Pseudo-instructions filling" msgstr "" -#: src/gui/widgets/assembly.cc:475 +#: src/gui/widgets/assembly.cc:510 msgid "" "When combining two instructions into a single pseudo-instruction, add a " "placeholder for the second one." msgstr "" -#: src/gui/widgets/assembly.cc:480 +#: src/gui/widgets/assembly.cc:515 msgid "Delay slot notch" msgstr "" -#: src/gui/widgets/assembly.cc:485 +#: src/gui/widgets/assembly.cc:520 msgid "" "Add a small visible notch to indicate instructions that are on the delay " "slot of a branch." msgstr "" -#: src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:524 msgid "Draw arrows for jumps" msgstr "" -#: src/gui/widgets/assembly.cc:493 +#: src/gui/widgets/assembly.cc:528 msgid "Display arrows for jumps. This might crowd the display a bit too much." msgstr "" -#: src/gui/widgets/assembly.cc:497 +#: src/gui/widgets/assembly.cc:532 msgid "Columns" msgstr "" -#: src/gui/widgets/assembly.cc:516 src/gui/widgets/log.cc:111 +#: src/gui/widgets/assembly.cc:551 src/gui/widgets/log.cc:111 msgid "CPU trace" msgstr "" -#: src/gui/widgets/assembly.cc:518 +#: src/gui/widgets/assembly.cc:553 msgid "Skip ISR" msgstr "" -#: src/gui/widgets/assembly.cc:520 +#: src/gui/widgets/assembly.cc:555 msgid "Follow PC" msgstr "" -#: src/gui/widgets/assembly.cc:522 +#: src/gui/widgets/assembly.cc:557 msgid "Jump to PC" msgstr "" -#: src/gui/widgets/assembly.cc:535 +#: src/gui/widgets/assembly.cc:570 #, c-format msgid "In ISR: %s" msgstr "" -#: src/gui/widgets/assembly.cc:709 src/gui/widgets/assembly.cc:737 +#: src/gui/widgets/assembly.cc:744 src/gui/widgets/assembly.cc:770 #: src/gui/widgets/breakpoints.cc:171 msgid "GUI" msgstr "" -#: src/gui/widgets/assembly.cc:718 +#: src/gui/widgets/assembly.cc:753 msgid "Create symbol here" msgstr "" -#: src/gui/widgets/assembly.cc:723 +#: src/gui/widgets/assembly.cc:758 msgid "Remove symbol" msgstr "" -#: src/gui/widgets/assembly.cc:727 +#: src/gui/widgets/assembly.cc:762 msgid "Copy Address" msgstr "" -#: src/gui/widgets/assembly.cc:732 src/gui/widgets/registers.cc:39 -msgid "Go to in Memory Editor" -msgstr "" - -#: src/gui/widgets/assembly.cc:735 +#: src/gui/widgets/assembly.cc:768 msgid "Run to Cursor" msgstr "" -#: src/gui/widgets/assembly.cc:744 +#: src/gui/widgets/assembly.cc:777 msgid "Toggle Breakpoint" msgstr "" -#: src/gui/widgets/assembly.cc:748 src/gui/widgets/assembly.cc:753 +#: src/gui/widgets/assembly.cc:781 src/gui/widgets/assembly.cc:786 msgid "Remove Breakpoint" msgstr "" -#: src/gui/widgets/assembly.cc:757 src/gui/widgets/assembly.cc:954 -#: src/gui/widgets/assembly.cc:956 src/gui/widgets/assembly.cc:962 +#: src/gui/widgets/assembly.cc:790 src/gui/widgets/assembly.cc:987 +#: src/gui/widgets/assembly.cc:989 src/gui/widgets/assembly.cc:995 msgid "Assemble" msgstr "" -#: src/gui/widgets/assembly.cc:887 src/gui/widgets/breakpoints.cc:153 +#: src/gui/widgets/assembly.cc:920 src/gui/widgets/breakpoints.cc:153 #: src/gui/widgets/memory_observer.cc:170 #: src/gui/widgets/memory_observer.cc:328 #: src/gui/widgets/memory_observer.cc:424 src/gui/widgets/typed_debugger.cc:961 msgid "Address" msgstr "" -#: src/gui/widgets/assembly.cc:901 +#: src/gui/widgets/assembly.cc:934 msgid "RAM base" msgstr "" -#: src/gui/widgets/assembly.cc:910 src/gui/widgets/assembly.cc:1011 +#: src/gui/widgets/assembly.cc:943 src/gui/widgets/assembly.cc:1044 msgid "Symbols" msgstr "" -#: src/gui/widgets/assembly.cc:936 src/gui/widgets/assembly.cc:938 +#: src/gui/widgets/assembly.cc:969 src/gui/widgets/assembly.cc:971 msgid "Add symbol" msgstr "" -#: src/gui/widgets/assembly.cc:939 +#: src/gui/widgets/assembly.cc:972 #, c-format msgid "Add symbol for address 0x%08x:" msgstr "" -#: src/gui/widgets/assembly.cc:941 +#: src/gui/widgets/assembly.cc:974 msgid "Add" msgstr "" -#: src/gui/widgets/assembly.cc:957 +#: src/gui/widgets/assembly.cc:990 #, c-format msgid "Assemble code for address 0x%08x:" msgstr "" #. Clear items button -#: src/gui/widgets/assembly.cc:982 src/gui/widgets/console.cc:39 +#: src/gui/widgets/assembly.cc:1015 src/gui/widgets/console.cc:39 #: src/gui/widgets/dynarec_disassembly.cc:90 src/gui/widgets/log.cc:128 #: src/gui/widgets/pio-cart.cc:41 src/gui/widgets/typed_debugger.cc:827 msgid "Clear" msgstr "" -#: src/gui/widgets/assembly.cc:984 src/gui/widgets/dynarec_disassembly.cc:73 +#: src/gui/widgets/assembly.cc:1017 src/gui/widgets/dynarec_disassembly.cc:73 msgid "Close" msgstr "" -#: src/gui/widgets/assembly.cc:1012 +#: src/gui/widgets/assembly.cc:1045 msgid "Refresh" msgstr "" -#: src/gui/widgets/assembly.cc:1014 +#: src/gui/widgets/assembly.cc:1047 msgid "Filter" msgstr "" -#: src/gui/widgets/assembly.cc:1028 +#: src/gui/widgets/assembly.cc:1061 msgid "Code##{}{:08x}" msgstr "" -#: src/gui/widgets/assembly.cc:1029 +#: src/gui/widgets/assembly.cc:1062 msgid "Data##{}{:08x}" msgstr "" @@ -2830,7 +2826,7 @@ msgstr "" msgid "Import Memory Card file" msgstr "" -#: src/gui/widgets/memcard_manager.h:78 +#: src/gui/widgets/memcard_manager.h:77 msgid "Export Memory Card file" msgstr "" @@ -3008,6 +3004,10 @@ msgstr "" msgid "Go to in Assembly" msgstr "" +#: src/gui/widgets/registers.cc:39 +msgid "Go to in Memory Editor" +msgstr "" + #: src/gui/widgets/registers.cc:42 msgid "Copy Value" msgstr "" @@ -3468,84 +3468,6 @@ msgid "" "is necessary for some games." msgstr "" -#: src/spu/debug.cc:62 +#: src/spu/debug.cc:581 msgid "SPU Debug" msgstr "" - -#: src/spu/debug.cc:84 -msgid "Mute all" -msgstr "" - -#: src/spu/debug.cc:90 -msgid "Unmute all" -msgstr "" - -#: src/spu/debug.cc:104 -msgid "ADSR channel info" -msgstr "" - -#: src/spu/debug.cc:107 -msgid "" -"Attack:\n" -"Decay:\n" -"Sustain:\n" -"Release:" -msgstr "" - -#: src/spu/debug.cc:115 -msgid "" -"Sustain level:\n" -"Sustain inc:\n" -"Curr adsr vol:\n" -"Raw enveloppe" -msgstr "" - -#: src/spu/debug.cc:123 -msgid "Generic channel info" -msgstr "" - -#: src/spu/debug.cc:127 -msgid "" -"On:\n" -"Stop:\n" -"Noise:\n" -"FMod:\n" -"Reverb:\n" -"Rvb active:\n" -"Rvb number:\n" -"Rvb offset:\n" -"Rvb repeat:" -msgstr "" - -#: src/spu/debug.cc:138 -msgid "" -"Start pos:\n" -"Curr pos:\n" -"Loop pos:\n" -"\n" -"Right vol:\n" -"Left vol:\n" -"\n" -"Act freq:\n" -"Used freq:" -msgstr "" - -#: src/spu/debug.cc:150 -msgid "" -"Freq:\n" -"Stereo:\n" -"Samples:\n" -"Volume:\n" -msgstr "" - -#: src/spu/debug.cc:159 -msgid "Spu states" -msgstr "" - -#: src/spu/debug.cc:160 -msgid "" -"Irq addr:\n" -"Ctrl:\n" -"Stat:\n" -"Spu mem:" -msgstr "" diff --git a/i18n/pt_BR.po b/i18n/pt_BR.po index e4a917608..29fbeb63b 100644 --- a/i18n/pt_BR.po +++ b/i18n/pt_BR.po @@ -161,8 +161,8 @@ msgstr "Gravar mapa 32" msgid "Step in" msgstr "Intervir" -#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:454 -#: src/gui/widgets/assembly.cc:531 +#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:566 msgid "Step Over" msgstr "Passar por Cima" @@ -179,20 +179,20 @@ msgstr "Sair (sem pilha de chamadas)" msgid "Breakpoint triggered: PC=0x%08x - Cause: %s %s\n" msgstr "Ponto de Interrupção engatilhado: PC=0x%08x - Causa: %s %s\n" -#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:455 -#: src/gui/widgets/assembly.cc:533 +#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:490 +#: src/gui/widgets/assembly.cc:568 msgid "Step Out" msgstr "Sair" -#: src/core/debug.h:37 +#: src/core/debug.h:36 msgid "Exec" msgstr "Exec" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:285 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:285 msgid "Read" msgstr "Leitura" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:287 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:287 msgid "Write" msgstr "Gravação" @@ -504,7 +504,7 @@ msgstr "Tecla do teclado desconhecida {}" msgid "Keyboard {}" msgstr "Teclado {}" -#: src/core/pad.cc:986 src/gui/gui.cc:1993 +#: src/core/pad.cc:986 src/gui/gui.cc:2019 msgid "Auto" msgstr "Auto" @@ -807,67 +807,37 @@ msgstr "OpenBIOS detectada (%08x)\n" msgid "Unknown bios loaded (%08x)\n" msgstr "Bios desconhecida carregada (%08x)\n" -#: src/core/psxmem.cc:276 -#, c-format -msgid "8-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:283 +#: src/core/psxmem.cc:282 #, c-format msgid "8-bit read from unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:313 -#, c-format -msgid "16-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:316 +#: src/core/psxmem.cc:314 #, c-format msgid "16-bit read from unknown address: %8.8lx\n" msgstr "" #: src/core/psxmem.cc:348 #, c-format -msgid "32-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:351 -#, c-format msgid "32-bit read from unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:452 -#, c-format -msgid "8-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:455 +#: src/core/psxmem.cc:451 #, c-format msgid "8-bit write to unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:482 -#, c-format -msgid "16-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:485 +#: src/core/psxmem.cc:480 #, c-format msgid "16-bit write to unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:523 +#: src/core/psxmem.cc:518 #, fuzzy, c-format msgid "Unknown BIU value: %8.8lx\n" msgstr "Bios desconhecida carregada (%08x)\n" -#: src/core/psxmem.cc:530 -#, c-format -msgid "32-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:533 +#: src/core/psxmem.cc:527 #, c-format msgid "32-bit write to unknown address: %8.8lx\n" msgstr "" @@ -1008,204 +978,204 @@ msgstr "BIOS" msgid "VRAM" msgstr "VRAM" -#: src/gui/gui.cc:1055 +#: src/gui/gui.cc:1081 msgid "Output" msgstr "Saída" -#: src/gui/gui.cc:1080 src/gui/widgets/assembly.cc:442 +#: src/gui/gui.cc:1106 src/gui/widgets/assembly.cc:477 #: src/gui/widgets/isobrowser.cc:66 src/gui/widgets/memcard_manager.cc:63 #: src/gui/widgets/vram-viewer.cc:482 msgid "File" msgstr "Arquivo" -#: src/gui/gui.cc:1081 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 +#: src/gui/gui.cc:1107 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 #: src/gui/widgets/isobrowser.h:50 msgid "Open Disk Image" msgstr "Abrir Imagem do Disco" -#: src/gui/gui.cc:1082 src/gui/widgets/isobrowser.cc:68 +#: src/gui/gui.cc:1108 src/gui/widgets/isobrowser.cc:68 msgid "Close Disk Image" msgstr "Fechar Imagem do Disco" -#: src/gui/gui.cc:1086 +#: src/gui/gui.cc:1112 msgid "Load binary" msgstr "Carregar binário" -#: src/gui/gui.cc:1089 +#: src/gui/gui.cc:1115 msgid "Add Lua archive" msgstr "" -#: src/gui/gui.cc:1093 +#: src/gui/gui.cc:1119 msgid "Dump save state proto schema" msgstr "Dumpar esquema proto do save state" -#: src/gui/gui.cc:1098 +#: src/gui/gui.cc:1124 msgid "global{}" msgstr "" -#: src/gui/gui.cc:1100 +#: src/gui/gui.cc:1126 msgid "Save state slots" msgstr "Slots do save state" -#: src/gui/gui.cc:1101 +#: src/gui/gui.cc:1127 msgid "Quick-save slot" msgstr "Slot do salvamento rápido" -#: src/gui/gui.cc:1106 src/gui/gui.cc:1127 +#: src/gui/gui.cc:1132 src/gui/gui.cc:1153 msgid "Slot {}" msgstr "Slot {}" -#: src/gui/gui.cc:1113 +#: src/gui/gui.cc:1139 msgid "Show named save states" msgstr "" -#: src/gui/gui.cc:1118 +#: src/gui/gui.cc:1144 msgid "Save global state" msgstr "Salvar o estado global" -#: src/gui/gui.cc:1120 +#: src/gui/gui.cc:1146 msgid "Load state slots" msgstr "Carregar os slots do state" -#: src/gui/gui.cc:1123 +#: src/gui/gui.cc:1149 #, fuzzy msgid "Quick-load slot" msgstr "Slot do salvamento rápido" -#: src/gui/gui.cc:1148 +#: src/gui/gui.cc:1174 msgid "Load global state" msgstr "Carregar estado global" -#: src/gui/gui.cc:1152 +#: src/gui/gui.cc:1178 msgid "Open LID" msgstr "Abrir LID" -#: src/gui/gui.cc:1156 +#: src/gui/gui.cc:1182 msgid "Close LID" msgstr "Fechar LID" -#: src/gui/gui.cc:1160 +#: src/gui/gui.cc:1186 msgid "Open and close LID" msgstr "Abrir e fechar o LID" -#: src/gui/gui.cc:1165 +#: src/gui/gui.cc:1191 msgid "Reboot" msgstr "Reiniciar" -#: src/gui/gui.cc:1168 +#: src/gui/gui.cc:1194 msgid "Quit" msgstr "Sair" -#: src/gui/gui.cc:1174 src/gui/gui.cc:1191 +#: src/gui/gui.cc:1200 src/gui/gui.cc:1217 msgid "Emulation" msgstr "Emulação" -#: src/gui/gui.cc:1175 +#: src/gui/gui.cc:1201 msgid "Start emulation" msgstr "Iniciar emulação" -#: src/gui/gui.cc:1178 +#: src/gui/gui.cc:1204 msgid "Pause emulation" msgstr "Pausar Emulação" -#: src/gui/gui.cc:1181 +#: src/gui/gui.cc:1207 msgid "Soft Reset" msgstr "Reset Leve" -#: src/gui/gui.cc:1184 +#: src/gui/gui.cc:1210 msgid "Hard Reset" msgstr "Reset Rígido" -#: src/gui/gui.cc:1190 src/gui/widgets/vram-viewer.cc:520 +#: src/gui/gui.cc:1216 src/gui/widgets/vram-viewer.cc:520 msgid "Configuration" msgstr "Configuração" -#: src/gui/gui.cc:1192 +#: src/gui/gui.cc:1218 msgid "Manage Memory Cards" msgstr "Gerenciar Cartões de Memória" -#: src/gui/gui.cc:1195 src/gui/gui.cc:1295 +#: src/gui/gui.cc:1221 src/gui/gui.cc:1321 msgid "GPU" msgstr "GPU" -#: src/gui/gui.cc:1196 src/gui/gui.cc:1311 +#: src/gui/gui.cc:1222 src/gui/gui.cc:1337 msgid "SPU" msgstr "SPU" -#: src/gui/gui.cc:1197 +#: src/gui/gui.cc:1223 msgid "UI" msgstr "Interface do Usuário" -#: src/gui/gui.cc:1198 +#: src/gui/gui.cc:1224 msgid "System" msgstr "Sistema" -#: src/gui/gui.cc:1199 +#: src/gui/gui.cc:1225 msgid "Controls" msgstr "Controles" -#: src/gui/gui.cc:1200 +#: src/gui/gui.cc:1226 msgid "Shader presets" msgstr "Pré-definições do shader" -#: src/gui/gui.cc:1201 +#: src/gui/gui.cc:1227 msgid "Default shader" msgstr "Shader padrão" -#: src/gui/gui.cc:1204 +#: src/gui/gui.cc:1230 msgid "CRT-lottes shader" msgstr "Shader do CRT-Lottes" -#: src/gui/gui.cc:1231 +#: src/gui/gui.cc:1257 msgid "Configure Shaders" msgstr "Configurar Shaders" -#: src/gui/gui.cc:1235 +#: src/gui/gui.cc:1261 msgid "PIO Cartridge" msgstr "" -#: src/gui/gui.cc:1239 src/gui/widgets/assembly.cc:449 +#: src/gui/gui.cc:1265 src/gui/widgets/assembly.cc:484 msgid "Debug" msgstr "Debug" -#: src/gui/gui.cc:1240 +#: src/gui/gui.cc:1266 msgid "Show Logs" msgstr "Mostrar Registros" -#: src/gui/gui.cc:1241 +#: src/gui/gui.cc:1267 msgid "Lua" msgstr "" -#: src/gui/gui.cc:1242 +#: src/gui/gui.cc:1268 msgid "Show Lua Console" msgstr "Mostrar o Console do Lua" -#: src/gui/gui.cc:1243 +#: src/gui/gui.cc:1269 msgid "Show Lua Inspector" msgstr "Mostrar o Inspector do Lua" -#: src/gui/gui.cc:1244 +#: src/gui/gui.cc:1270 msgid "Show Lua editor" msgstr "Mostrar o Editor do Lua" -#: src/gui/gui.cc:1248 +#: src/gui/gui.cc:1274 #, fuzzy msgid "CPU" msgstr "GPU" -#: src/gui/gui.cc:1249 +#: src/gui/gui.cc:1275 msgid "Show Registers" msgstr "Mostrar Registros" -#: src/gui/gui.cc:1250 +#: src/gui/gui.cc:1276 msgid "Show Assembly" msgstr "Mostrar Assembly" -#: src/gui/gui.cc:1252 src/gui/gui.cc:1254 +#: src/gui/gui.cc:1278 src/gui/gui.cc:1280 msgid "Show DynaRec Disassembly" msgstr "Mostrar o Disassembly do DynaRec" -#: src/gui/gui.cc:1256 +#: src/gui/gui.cc:1282 msgid "" "DynaRec Disassembler is not available in Interpreted CPU mode. Try enabling " "[Dynarec CPU]\n" @@ -1215,278 +1185,278 @@ msgstr "" "Tente ativar a [CPU do Dynarec]\n" "em Configuração->Emulação, reinicie o PCSX-Redux, então tente de novo." -#: src/gui/gui.cc:1259 +#: src/gui/gui.cc:1285 msgid "Show Breakpoints" msgstr "Mostrar Pontos de Interrupção" -#: src/gui/gui.cc:1260 +#: src/gui/gui.cc:1286 msgid "Show Callstacks" msgstr "Mostrar as Pilhas de Chamadas" -#: src/gui/gui.cc:1261 +#: src/gui/gui.cc:1287 msgid "Memory Editors" msgstr "Editores de Memória" -#: src/gui/gui.cc:1272 +#: src/gui/gui.cc:1298 msgid "Show Memory Observer" msgstr "Mostrar o Observador da Memória" -#: src/gui/gui.cc:1273 +#: src/gui/gui.cc:1299 msgid "Show Typed Debugger" msgstr "Mostrar o Debug Digitado" -#: src/gui/gui.cc:1274 +#: src/gui/gui.cc:1300 msgid "Show Interrupts Scaler" msgstr "Mostrar o Escalador das Interrupções" -#: src/gui/gui.cc:1275 +#: src/gui/gui.cc:1301 msgid "First Chance Exceptions" msgstr "Exceções de Primeira Chance" -#: src/gui/gui.cc:1296 +#: src/gui/gui.cc:1322 msgid "VRAM viewers" msgstr "Visualizadores da VRAM" -#: src/gui/gui.cc:1297 +#: src/gui/gui.cc:1323 msgid "Show main VRAM viewer" msgstr "Mostrar o visualizador principal da VRAM" -#: src/gui/gui.cc:1298 +#: src/gui/gui.cc:1324 msgid "Show CLUT VRAM viewer" msgstr "Mostrar o visualizador da VRAM do CLUT" -#: src/gui/gui.cc:1301 +#: src/gui/gui.cc:1327 msgid "Show VRAM viewer #" msgstr "Mostrar o Visualizador da VRAM #" -#: src/gui/gui.cc:1307 +#: src/gui/gui.cc:1333 #, fuzzy msgid "Show GPU logger" msgstr "Mostrar o Debug da GPU" -#: src/gui/gui.cc:1308 +#: src/gui/gui.cc:1334 msgid "Show GPU debug" msgstr "Mostrar o Debug da GPU" -#: src/gui/gui.cc:1312 +#: src/gui/gui.cc:1338 msgid "Show SPU debug" msgstr "Mostrar o Debug do SPU" -#: src/gui/gui.cc:1315 +#: src/gui/gui.cc:1341 msgid "CD-Rom" msgstr "" -#: src/gui/gui.cc:1316 +#: src/gui/gui.cc:1342 msgid "Show Iso Browser" msgstr "" -#: src/gui/gui.cc:1319 +#: src/gui/gui.cc:1345 msgid "Misc hardware" msgstr "" -#: src/gui/gui.cc:1320 +#: src/gui/gui.cc:1346 msgid "Show SIO1 debug" msgstr "Mostrar o Debug do SIO1" -#: src/gui/gui.cc:1324 +#: src/gui/gui.cc:1350 #, fuzzy msgid "Kernel" msgstr "Chamadas do Kernel" -#: src/gui/gui.cc:1325 +#: src/gui/gui.cc:1351 msgid "Kernel Events" msgstr "Eventos do Kernel" -#: src/gui/gui.cc:1326 +#: src/gui/gui.cc:1352 msgid "Kernel Handlers" msgstr "Manipuladores do Kernel" -#: src/gui/gui.cc:1327 src/gui/gui.cc:1473 +#: src/gui/gui.cc:1353 src/gui/gui.cc:1499 msgid "Kernel Calls" msgstr "Chamadas do Kernel" -#: src/gui/gui.cc:1330 +#: src/gui/gui.cc:1356 #, fuzzy msgid "Rendering" msgstr "Renderizador" -#: src/gui/gui.cc:1331 +#: src/gui/gui.cc:1357 #, fuzzy msgid "Full window render" msgstr "Renderização em tela cheia" -#: src/gui/gui.cc:1334 +#: src/gui/gui.cc:1360 #, fuzzy msgid "Fullscreen" msgstr "Renderização em tela cheia" -#: src/gui/gui.cc:1338 +#: src/gui/gui.cc:1364 msgid "Show Output Shader Editor" msgstr "Mostrar o Editor de Saída do Shader" -#: src/gui/gui.cc:1339 +#: src/gui/gui.cc:1365 msgid "Show Offscreen Shader Editor" msgstr "Mostrar o Editor do Shader Fora da Tela" -#: src/gui/gui.cc:1340 +#: src/gui/gui.cc:1366 #, fuzzy msgid "Reset shaders" msgstr "Resetar o Escalador" -#: src/gui/gui.cc:1348 +#: src/gui/gui.cc:1374 msgid "Help" msgstr "Ajuda" -#: src/gui/gui.cc:1349 +#: src/gui/gui.cc:1375 msgid "Show ImGui Demo" msgstr "Mostrar a Demo do ImGui" -#: src/gui/gui.cc:1351 +#: src/gui/gui.cc:1377 msgid "Show UvFile information" msgstr "Mostrar Informações do Arquivo Uv" -#: src/gui/gui.cc:1353 src/gui/gui.cc:2258 +#: src/gui/gui.cc:1379 src/gui/gui.cc:2284 msgid "About" msgstr "Sobre" -#: src/gui/gui.cc:1358 +#: src/gui/gui.cc:1384 #, c-format msgid "CPU: %s" msgstr "CPU: %s" -#: src/gui/gui.cc:1360 src/gui/widgets/isobrowser.cc:102 +#: src/gui/gui.cc:1386 src/gui/widgets/isobrowser.cc:102 #, c-format msgid "GAME ID: %s" msgstr "ID DO JOGO: %s" -#: src/gui/gui.cc:1363 +#: src/gui/gui.cc:1389 #, c-format msgid "%.2f FPS (%.2f ms)" msgstr "%.2f FPS (%.2f ms)" -#: src/gui/gui.cc:1366 +#: src/gui/gui.cc:1392 #, c-format msgid "%.2f ms audio buffer (%i frames)" msgstr "%.2f buffer do áudio em ms (%i frames)" -#: src/gui/gui.cc:1368 +#: src/gui/gui.cc:1394 msgid "Idle" msgstr "Inativo" -#: src/gui/gui.cc:1449 +#: src/gui/gui.cc:1475 msgid "Logs" msgstr "Registros" -#: src/gui/gui.cc:1455 +#: src/gui/gui.cc:1481 msgid "Lua Console" msgstr "Console do Lua" -#: src/gui/gui.cc:1461 +#: src/gui/gui.cc:1487 msgid "Lua Inspector" msgstr "Inspetor do Lua" -#: src/gui/gui.cc:1464 +#: src/gui/gui.cc:1490 msgid "Lua Editor" msgstr "Editor do Lua" -#: src/gui/gui.cc:1467 +#: src/gui/gui.cc:1493 msgid "Kernel events" msgstr "Eventos do Kernel" -#: src/gui/gui.cc:1470 +#: src/gui/gui.cc:1496 msgid "Kernel handlers" msgstr "Manipuladores do Kernel" -#: src/gui/gui.cc:1476 +#: src/gui/gui.cc:1502 msgid "Callstacks" msgstr "Pilhas de Chamadas" -#: src/gui/gui.cc:1525 +#: src/gui/gui.cc:1551 msgid "Memory Card Manager" msgstr "Gerenciador do Memory Card" -#: src/gui/gui.cc:1529 src/gui/widgets/registers.cc:65 +#: src/gui/gui.cc:1555 src/gui/widgets/registers.cc:65 msgid "Registers" msgstr "Registros" -#: src/gui/gui.cc:1533 +#: src/gui/gui.cc:1559 msgid "Assembly" msgstr "Assembly" -#: src/gui/gui.cc:1537 +#: src/gui/gui.cc:1563 msgid "DynaRec Disassembler" msgstr "Disassembler do DynaRec" -#: src/gui/gui.cc:1541 src/gui/widgets/breakpoints.cc:81 +#: src/gui/gui.cc:1567 src/gui/widgets/breakpoints.cc:81 #: src/gui/widgets/typed_debugger.cc:864 src/gui/widgets/typed_debugger.cc:910 #: src/gui/widgets/typed_debugger.cc:963 msgid "Breakpoints" msgstr "Pontos de Interrupção" -#: src/gui/gui.cc:1545 +#: src/gui/gui.cc:1571 #, fuzzy msgid "Named Save States" msgstr "Slots do save state" -#: src/gui/gui.cc:1549 src/gui/widgets/memory_observer.cc:382 +#: src/gui/gui.cc:1575 src/gui/widgets/memory_observer.cc:382 #: src/gui/widgets/memory_observer.cc:388 msgid "Memory Observer" msgstr "Observador de Memória" -#: src/gui/gui.cc:1553 src/gui/widgets/typed_debugger.cc:1062 +#: src/gui/gui.cc:1579 src/gui/widgets/typed_debugger.cc:1062 msgid "Typed Debugger" msgstr "Debugger Digitado" -#: src/gui/gui.cc:1559 +#: src/gui/gui.cc:1585 msgid "Output Video" msgstr "Saída de Vídeo" -#: src/gui/gui.cc:1564 +#: src/gui/gui.cc:1590 msgid "Offscreen Render" msgstr "Renderização Fora da Tela" -#: src/gui/gui.cc:1570 +#: src/gui/gui.cc:1596 #, fuzzy msgid "PIO Cartridge Configuration" msgstr "Configuração do pad" -#: src/gui/gui.cc:1574 +#: src/gui/gui.cc:1600 msgid "SIO1 Debug" msgstr "Debug do SIO1" -#: src/gui/gui.cc:1578 +#: src/gui/gui.cc:1604 msgid "ISO Browser" msgstr "" -#: src/gui/gui.cc:1588 +#: src/gui/gui.cc:1614 msgid "GPU Logger" msgstr "" -#: src/gui/gui.cc:1591 +#: src/gui/gui.cc:1617 msgid "UI Configuration" msgstr "Configuração da Interface do Usuário" -#: src/gui/gui.cc:1597 +#: src/gui/gui.cc:1623 msgid "Locale" msgstr "Idioma" -#: src/gui/gui.cc:1612 +#: src/gui/gui.cc:1638 msgid "Reload locales" msgstr "Recarregar os idiomas" -#: src/gui/gui.cc:1617 +#: src/gui/gui.cc:1643 msgid "Main Font Size" msgstr "Tamanho da Fonte Principal" -#: src/gui/gui.cc:1618 +#: src/gui/gui.cc:1644 msgid "Mono Font Size" msgstr "Tamanho da Fonte Mono" -#: src/gui/gui.cc:1620 +#: src/gui/gui.cc:1646 msgid "Use Widescreen Aspect Ratio" msgstr "Usar a Proporção do Aspecto Widescreen" -#: src/gui/gui.cc:1621 +#: src/gui/gui.cc:1647 msgid "" "Sets the output screen ratio to 16:9 instead of 4:3.\n" "\n" @@ -1512,23 +1482,23 @@ msgstr "" "o usuário mude as configurações do conjunto de TV dele\n" "pra combinar com a proporção do aspecto do jogo." -#: src/gui/gui.cc:1640 +#: src/gui/gui.cc:1666 msgid "System Configuration" msgstr "Configuração do Sistema" -#: src/gui/gui.cc:1642 +#: src/gui/gui.cc:1668 msgid "Preload Disk Image files" msgstr "Pré-Carregar os Arquivos de Imagem do Disco" -#: src/gui/gui.cc:1643 +#: src/gui/gui.cc:1669 msgid "Enable Auto Update" msgstr "Ativar a Auto-Atualização" -#: src/gui/gui.cc:1650 +#: src/gui/gui.cc:1676 msgid "Update configuration" msgstr "Atualizar Configurações" -#: src/gui/gui.cc:1651 +#: src/gui/gui.cc:1677 msgid "" "PCSX-Redux can automatically update itself.\n" "\n" @@ -1560,19 +1530,19 @@ msgstr "" "Se você quer mudar esta configuração mais tarde você pode ir em\n" "Configuração -> Menu do Sistema." -#: src/gui/gui.cc:1664 +#: src/gui/gui.cc:1690 msgid "Enable auto update" msgstr "Ativar a auto-atualização" -#: src/gui/gui.cc:1670 +#: src/gui/gui.cc:1696 msgid "No thanks" msgstr "Não, obrigado" -#: src/gui/gui.cc:1679 +#: src/gui/gui.cc:1705 msgid "Update available" msgstr "Atualização disponível" -#: src/gui/gui.cc:1681 +#: src/gui/gui.cc:1707 msgid "" "An update is available.\n" "Click 'Update' to download and apply the update.\n" @@ -1588,7 +1558,7 @@ msgstr "" "Clique em \"Download\" pra usar seu navegador pra baixar\n" "a atualização e aplicá-la manualmente." -#: src/gui/gui.cc:1688 +#: src/gui/gui.cc:1714 msgid "" "An update is available.\n" "Click 'Update' to download it. While the update can be\n" @@ -1608,11 +1578,11 @@ msgstr "" "Clique em \"Download\" pra usar seu navegador pra baixar\n" "a atualização e aplicá-la manualmente." -#: src/gui/gui.cc:1699 +#: src/gui/gui.cc:1725 msgid "Update" msgstr "Atualização" -#: src/gui/gui.cc:1711 src/gui/gui.cc:1716 +#: src/gui/gui.cc:1737 src/gui/gui.cc:1742 msgid "" "An error has occured while downloading\n" "and/or applying the update." @@ -1620,80 +1590,80 @@ msgstr "" "Um erro ocorreu enquanto baixava\n" "e/ou aplicava a atualização." -#: src/gui/gui.cc:1722 +#: src/gui/gui.cc:1748 msgid "Download" msgstr "Download" -#: src/gui/gui.cc:1732 +#: src/gui/gui.cc:1758 msgid "An error has occured while downloading the update." msgstr "Um erro ocorreu enquanto baixava a atualização." -#: src/gui/gui.cc:1738 src/gui/widgets/assembly.cc:947 +#: src/gui/gui.cc:1764 src/gui/widgets/assembly.cc:980 #: src/gui/widgets/breakpoints.cc:38 src/gui/widgets/registers.cc:339 #: src/gui/widgets/sio1.cc:203 msgid "Cancel" msgstr "Cancelar" -#: src/gui/gui.cc:1747 +#: src/gui/gui.cc:1773 msgid "UvFiles" msgstr "Arquivos Uv" -#: src/gui/gui.cc:1750 +#: src/gui/gui.cc:1776 #, c-format msgid "Read rate: %s" msgstr "Taxa de leitura: %s" -#: src/gui/gui.cc:1752 +#: src/gui/gui.cc:1778 #, c-format msgid "Write rate: %s" msgstr "Taxa de gravação: %s" -#: src/gui/gui.cc:1754 +#: src/gui/gui.cc:1780 #, c-format msgid "Download rate: %s" msgstr "Taxa de download: %s" -#: src/gui/gui.cc:1756 +#: src/gui/gui.cc:1782 msgid "Caching" msgstr "Cache" -#: src/gui/gui.cc:1757 src/gui/widgets/memcard_manager.cc:201 +#: src/gui/gui.cc:1783 src/gui/widgets/memcard_manager.cc:201 msgid "Filename" msgstr "Nome do arquivo" -#: src/gui/gui.cc:1944 +#: src/gui/gui.cc:1970 msgid "Emulation Configuration" msgstr "Configuração da Emulação" -#: src/gui/gui.cc:1945 +#: src/gui/gui.cc:1971 msgid "Idle Swap Interval" msgstr "Intervalo da Troca Inativa" -#: src/gui/gui.cc:1950 +#: src/gui/gui.cc:1976 msgid "Reset Scaler" msgstr "Resetar o Escalador" -#: src/gui/gui.cc:1956 +#: src/gui/gui.cc:1982 msgid "Speed Scaler" msgstr "Escalador da Velocidade" -#: src/gui/gui.cc:1958 +#: src/gui/gui.cc:1984 msgid "Enable XA decoder" msgstr "Ativar o decodificador XA" -#: src/gui/gui.cc:1959 +#: src/gui/gui.cc:1985 msgid "Always enable SPU IRQ" msgstr "Sempre ativar o IRQ do SPU" -#: src/gui/gui.cc:1960 +#: src/gui/gui.cc:1986 msgid "Decode MDEC videos in B&W" msgstr "Decodificar vídeos MDEC em P&B" -#: src/gui/gui.cc:1961 +#: src/gui/gui.cc:1987 msgid "Dynarec CPU" msgstr "CPU do Dynarec" -#: src/gui/gui.cc:1969 +#: src/gui/gui.cc:1995 msgid "" "Activates the dynamic recompiler CPU core.\n" "It is significantly faster than the interpreted CPU,\n" @@ -1709,11 +1679,11 @@ msgstr "" "O núcleo do dynarec não está disponível pra todas as CPUs então\n" "esta configuração pode não ter qualquer efeito pra você." -#: src/gui/gui.cc:1975 +#: src/gui/gui.cc:2001 msgid "8MB" msgstr "8 MBs" -#: src/gui/gui.cc:1976 +#: src/gui/gui.cc:2002 msgid "" "Emulates an installed 8MB system,\n" "instead of the normal 2MB. Useful for working\n" @@ -1723,11 +1693,11 @@ msgstr "" "invés dos 2 MBs normais. Útil pra trabalhar\n" "com binários e jogos em desenvolvimento." -#: src/gui/gui.cc:1980 +#: src/gui/gui.cc:2006 msgid "OpenGL GPU *ALPHA STATE*" msgstr "GPU do OpenGL *ESTADO ALFA*" -#: src/gui/gui.cc:1981 +#: src/gui/gui.cc:2007 msgid "" "Enables the OpenGL GPU renderer.\n" "This is not recommended for normal use at the moment,\n" @@ -1741,23 +1711,23 @@ msgstr "" "usar o renderizador de software ao invés disto. Requer uma reinicialização\n" "quando mudar esta configuração." -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "NTSC" msgstr "NTSC" -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "PAL" msgstr "PAL" -#: src/gui/gui.cc:1996 +#: src/gui/gui.cc:2022 msgid "System Type" msgstr "Tipo de Sistema" -#: src/gui/gui.cc:2015 +#: src/gui/gui.cc:2041 msgid "Fast boot" msgstr "Inicialização rápida" -#: src/gui/gui.cc:2016 +#: src/gui/gui.cc:2042 msgid "" "This will cause the BIOS to skip the shell,\n" "which may include additional checks.\n" @@ -1769,15 +1739,15 @@ msgstr "" "o tempo de inicialização substancialmente\n" "mais rápido por não exibir o logo." -#: src/gui/gui.cc:2021 +#: src/gui/gui.cc:2047 msgid "BIOS file" msgstr "Arquivo da BIOS" -#: src/gui/gui.cc:2025 src/gui/widgets/assembly.cc:507 +#: src/gui/gui.cc:2051 src/gui/widgets/assembly.cc:542 msgid "Enable Debugger" msgstr "Ativar Debugger" -#: src/gui/gui.cc:2032 +#: src/gui/gui.cc:2058 #, fuzzy msgid "" "This will enable the usage of various breakpoints\n" @@ -1788,11 +1758,11 @@ msgstr "" "da execução do código do mips. Ativar isto pode\n" "desacelerar a emulação a uma extensão perceptível." -#: src/gui/gui.cc:2035 +#: src/gui/gui.cc:2061 msgid "Enable GDB Server" msgstr "Ativar o Servidor GDB" -#: src/gui/gui.cc:2044 +#: src/gui/gui.cc:2070 msgid "" "This will activate a gdb-server that you can\n" "connect to with any gdb-remote compliant client.\n" @@ -1802,11 +1772,11 @@ msgstr "" "com qualquer cliente compatível com gdb-remoto.\n" "Você também precisa ativar o debugger." -#: src/gui/gui.cc:2048 +#: src/gui/gui.cc:2074 msgid "GDB send manifest" msgstr "Manifesto do Envio do GDB" -#: src/gui/gui.cc:2049 +#: src/gui/gui.cc:2075 msgid "" "Enables sending the processor's manifest\n" "from the gdb server. Keep this enabled, unless\n" @@ -1818,19 +1788,19 @@ msgstr "" "você queira conectar o IDA a este servidor pois ele\n" "tem um bug em seu analisador de manifesto." -#: src/gui/gui.cc:2056 +#: src/gui/gui.cc:2082 msgid "PCSX Logs to GDB" msgstr "Registros do PCSX pro GDB" -#: src/gui/gui.cc:2072 +#: src/gui/gui.cc:2098 msgid "GDB Server Port" msgstr "Porta do Servidor GDB" -#: src/gui/gui.cc:2074 +#: src/gui/gui.cc:2100 msgid "GDB Server Trace" msgstr "Rastro do Servidor GDB" -#: src/gui/gui.cc:2075 +#: src/gui/gui.cc:2101 msgid "" "The GDB server will start tracing its\n" "protocol into the logs, which can be helpful to debug\n" @@ -1840,11 +1810,11 @@ msgstr "" "nos registros o que pode ser útil pra fazer debug\n" "do próprio sistema do servidor gdb." -#: src/gui/gui.cc:2078 +#: src/gui/gui.cc:2104 msgid "Enable Web Server" msgstr "Ativar o Servidor da Web" -#: src/gui/gui.cc:2087 +#: src/gui/gui.cc:2113 msgid "" "This will activate a web-server, that you can\n" "query using a REST api. See the wiki for details.\n" @@ -1854,15 +1824,15 @@ msgstr "" "usando uma api REST. Veja o wiki pra mais detalhes.\n" "O debugger poderia ser requerido em alguns casos." -#: src/gui/gui.cc:2091 +#: src/gui/gui.cc:2117 msgid "Web Server Port" msgstr "Porta do Servidor da Web" -#: src/gui/gui.cc:2092 +#: src/gui/gui.cc:2118 msgid "Enable SIO1 Server" msgstr "Ativar o Servidor SIO1" -#: src/gui/gui.cc:2101 +#: src/gui/gui.cc:2127 msgid "" "This will activate a tcp server, that will\n" "relay information between tcp and sio1.\n" @@ -1872,15 +1842,15 @@ msgstr "" "informações entre o tcp e sio1.\n" "Veja o wiki pra mais detalhes." -#: src/gui/gui.cc:2105 +#: src/gui/gui.cc:2131 msgid "SIO1 Server Port" msgstr "Porta do Servidor SIO1" -#: src/gui/gui.cc:2106 +#: src/gui/gui.cc:2132 msgid "Enable SIO1 Client" msgstr "Ativar o Cliente SIO1" -#: src/gui/gui.cc:2119 +#: src/gui/gui.cc:2145 msgid "" "This will activate a tcp client, that can connect\n" "to another PCSX-Redux server to relay information between tcp and sio1.\n" @@ -1890,76 +1860,76 @@ msgstr "" "do PCSX-Redux pra retransmitir informações entre o tcp e sio1.\n" "Veja o wiki para mais detalhes." -#: src/gui/gui.cc:2123 +#: src/gui/gui.cc:2149 msgid "SIO1 Client Host" msgstr "Hospedeiro do cliente SIO1" -#: src/gui/gui.cc:2126 +#: src/gui/gui.cc:2152 msgid "SIO1 Client Port" msgstr "Porta do Cliente SIO1" -#: src/gui/gui.cc:2130 +#: src/gui/gui.cc:2156 msgid "Reset SIO" msgstr "Resetar o SIO" -#: src/gui/gui.cc:2141 +#: src/gui/gui.cc:2167 msgid "Reconnect" msgstr "Reconectar" -#: src/gui/gui.cc:2154 +#: src/gui/gui.cc:2180 msgid "SIO1Mode" msgstr "Modo SIO1" -#: src/gui/gui.cc:2212 +#: src/gui/gui.cc:2238 msgid "Interrupt Scaler" msgstr "Escalador da Interrupção" -#: src/gui/gui.cc:2213 +#: src/gui/gui.cc:2239 msgid "Reset all" msgstr "Resetar tudo" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Cherry##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Classic##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 #, fuzzy msgid "Default theme##Theme name" msgstr "Tema padrão" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Light##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Dracula##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Mono##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Olive##Theme name" msgstr "" -#: src/gui/gui.cc:2235 +#: src/gui/gui.cc:2261 msgid "Themes" msgstr "Temas" -#: src/gui/gui.cc:2266 src/gui/gui.cc:2340 +#: src/gui/gui.cc:2292 src/gui/gui.cc:2366 msgid "Version" msgstr "Versão" -#: src/gui/gui.cc:2271 +#: src/gui/gui.cc:2297 msgid "Copy to clipboard" msgstr "Copiar pra área de transferência" -#: src/gui/gui.cc:2277 +#: src/gui/gui.cc:2303 msgid "" "No version information.\n" "\n" @@ -1969,42 +1939,42 @@ msgstr "" "\n" "Provavelmente construído da fonte." -#: src/gui/gui.cc:2279 src/gui/gui.cc:2357 +#: src/gui/gui.cc:2305 src/gui/gui.cc:2383 #, c-format msgid "Version: %s" msgstr "Versão: %s" -#: src/gui/gui.cc:2280 +#: src/gui/gui.cc:2306 #, c-format msgid "Changeset: %s" msgstr "Conjunto de mudanças: %s" -#: src/gui/gui.cc:2283 +#: src/gui/gui.cc:2309 #, c-format msgid "Date & time: %s" msgstr "Data & hora: %s" -#: src/gui/gui.cc:2292 +#: src/gui/gui.cc:2318 msgid "Authors" msgstr "Autores" -#: src/gui/gui.cc:2300 +#: src/gui/gui.cc:2326 msgid "Licenses" msgstr "Licenças" -#: src/gui/gui.cc:2312 +#: src/gui/gui.cc:2338 msgid "OpenGL information" msgstr "Informações do OpenGL" -#: src/gui/gui.cc:2314 +#: src/gui/gui.cc:2340 msgid "OpenGL error reporting: enabled" msgstr "Relatório de erros do OpenGL: ativado" -#: src/gui/gui.cc:2316 +#: src/gui/gui.cc:2342 msgid "OpenGL error reporting: disabled" msgstr "Relatório de erros do OpenGL: desativado" -#: src/gui/gui.cc:2319 +#: src/gui/gui.cc:2345 #, fuzzy msgid "" "OpenGL error reporting has been disabled because your OpenGL driver is too " @@ -2022,11 +1992,11 @@ msgstr "" "usuário tal como o editor de shader não será capaz de reportar " "apropriadamente os problemas com precisão." -#: src/gui/gui.cc:2327 +#: src/gui/gui.cc:2353 msgid "Enable OpenGL error reporting" msgstr "Ativar o relatório de erros do OpenGL" -#: src/gui/gui.cc:2330 +#: src/gui/gui.cc:2356 msgid "" "OpenGL error reporting is necessary for properly reporting OpenGL problems. " "However it requires OpenGL 4.3+ and might have performance repercussions on " @@ -2037,69 +2007,69 @@ msgstr "" "repercussões na performance em alguns computadores. (Requer reiniciar o " "emulador)" -#: src/gui/gui.cc:2334 +#: src/gui/gui.cc:2360 msgid "OpenGL error reporting severity" msgstr "Severidade do relatório de erros do OpenGL" -#: src/gui/gui.cc:2337 +#: src/gui/gui.cc:2363 #, c-format msgid "Core profile: %s" msgstr "Perfil do núcleo: %s" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "no" msgstr "não" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "yes" msgstr "sim" -#: src/gui/gui.cc:2338 +#: src/gui/gui.cc:2364 msgid "Vendor" msgstr "Vendedor" -#: src/gui/gui.cc:2339 +#: src/gui/gui.cc:2365 msgid "Renderer" msgstr "Renderizador" -#: src/gui/gui.cc:2341 +#: src/gui/gui.cc:2367 msgid "Shading language version" msgstr "Versão do idioma do shader" -#: src/gui/gui.cc:2344 +#: src/gui/gui.cc:2370 #, c-format msgid "Texture units: %d" msgstr "" -#: src/gui/gui.cc:2347 +#: src/gui/gui.cc:2373 msgid "Extensions:" msgstr "Extensões:" -#: src/gui/gui.cc:2356 +#: src/gui/gui.cc:2382 #, fuzzy msgid "FFmpeg information" msgstr "Informações do OpenGL" -#: src/gui/gui.cc:2358 +#: src/gui/gui.cc:2384 #, fuzzy, c-format msgid "License: %s" msgstr "Licenças" -#: src/gui/gui.cc:2359 +#: src/gui/gui.cc:2385 #, fuzzy, c-format msgid "Configuration: %s" msgstr "Configuração" -#: src/gui/gui.cc:2362 +#: src/gui/gui.cc:2388 msgid "List of supported formats:" msgstr "" -#: src/gui/gui.cc:2380 +#: src/gui/gui.cc:2406 msgid "" "List of supported codecs: (D: Decoder, E: Encoder, L: Lossy, S: Lossless)" msgstr "" -#: src/gui/gui.cc:2420 +#: src/gui/gui.cc:2446 #, c-format msgid "%s codecs" msgstr "" @@ -2190,38 +2160,73 @@ msgstr "Trio" msgid "Mask type" msgstr "Tipo de máscara" -#: src/gui/widgets/assembly.cc:443 +#: src/gui/widgets/assembly.cc:334 +#, fuzzy +msgid "Go to in Memory Editor #1 (Default Click)" +msgstr "Ir no Editor de Memória" + +#: src/gui/widgets/assembly.cc:335 +#, fuzzy +msgid "Go to in Memory Editor #2 (Shift+Click)" +msgstr "Ir no Editor de Memória" + +#: src/gui/widgets/assembly.cc:336 +#, fuzzy +msgid "Go to in Memory Editor #3 (Ctrl+Click)" +msgstr "Ir no Editor de Memória" + +#: src/gui/widgets/assembly.cc:339 +#, fuzzy +msgid "Go to in Memory Editor #{}" +msgstr "Ir no Editor de Memória" + +#: src/gui/widgets/assembly.cc:346 +#, fuzzy +msgid "Go to in Memory Editor..." +msgstr "Ir no Editor de Memória" + +#: src/gui/widgets/assembly.cc:394 +#, fuzzy, c-format +msgid "Go to in Memory Editor #%d" +msgstr "Ir no Editor de Memória" + +#: src/gui/widgets/assembly.cc:455 +#, fuzzy, c-format +msgid "Go to in Memory Editor #%u" +msgstr "Ir no Editor de Memória" + +#: src/gui/widgets/assembly.cc:478 msgid "Load symbols map" msgstr "Carregar o mapa dos símbolos" -#: src/gui/widgets/assembly.cc:444 +#: src/gui/widgets/assembly.cc:479 msgid "Reset symbols map" msgstr "Resetar o mapa dos símbolos" -#: src/gui/widgets/assembly.cc:450 src/gui/widgets/assembly.cc:525 +#: src/gui/widgets/assembly.cc:485 src/gui/widgets/assembly.cc:560 msgid "Pause" msgstr "Pausar" -#: src/gui/widgets/assembly.cc:451 src/gui/widgets/assembly.cc:527 +#: src/gui/widgets/assembly.cc:486 src/gui/widgets/assembly.cc:562 #: src/gui/widgets/gpulogger.cc:47 msgid "Resume" msgstr "Resumo" -#: src/gui/widgets/assembly.cc:453 src/gui/widgets/assembly.cc:529 +#: src/gui/widgets/assembly.cc:488 src/gui/widgets/assembly.cc:564 msgid "Step In" msgstr "Intervir" #. Options, Filter -#: src/gui/widgets/assembly.cc:459 src/gui/widgets/console.cc:53 +#: src/gui/widgets/assembly.cc:494 src/gui/widgets/console.cc:53 #: src/gui/widgets/dynarec_disassembly.cc:106 msgid "Options" msgstr "Opções" -#: src/gui/widgets/assembly.cc:460 +#: src/gui/widgets/assembly.cc:495 msgid "Combined pseudo-instructions" msgstr "Pseudo-instruções combinadas" -#: src/gui/widgets/assembly.cc:465 +#: src/gui/widgets/assembly.cc:500 msgid "" "When two instructions are detected to be a single pseudo-instruction, " "combine them into the actual pseudo-instruction." @@ -2229,11 +2234,11 @@ msgstr "" "Quando duas instruções são detectadas como sendo uma única pseudo-instrução " "combine-as na pseudo-instrução real." -#: src/gui/widgets/assembly.cc:470 +#: src/gui/widgets/assembly.cc:505 msgid "Pseudo-instructions filling" msgstr "Preenchimento das pseudo-instruções" -#: src/gui/widgets/assembly.cc:475 +#: src/gui/widgets/assembly.cc:510 msgid "" "When combining two instructions into a single pseudo-instruction, add a " "placeholder for the second one." @@ -2241,11 +2246,11 @@ msgstr "" "Quando combinar duas instruções em uma única pseudo-instrução, adicione um " "espaço reservado para a segunda." -#: src/gui/widgets/assembly.cc:480 +#: src/gui/widgets/assembly.cc:515 msgid "Delay slot notch" msgstr "Entalhe do slot de atraso" -#: src/gui/widgets/assembly.cc:485 +#: src/gui/widgets/assembly.cc:520 msgid "" "Add a small visible notch to indicate instructions that are on the delay " "slot of a branch." @@ -2253,139 +2258,135 @@ msgstr "" "Adicionar um pequeno entalhe visível pra indicar instruções que estão no " "slot de atraso de um branch." -#: src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:524 msgid "Draw arrows for jumps" msgstr "Desenhar setas pros saltos" -#: src/gui/widgets/assembly.cc:493 +#: src/gui/widgets/assembly.cc:528 msgid "Display arrows for jumps. This might crowd the display a bit too much." msgstr "Exibir setas pros saltos. Isto poderia lotar a tela um pouco demais." -#: src/gui/widgets/assembly.cc:497 +#: src/gui/widgets/assembly.cc:532 msgid "Columns" msgstr "Colunas" -#: src/gui/widgets/assembly.cc:516 src/gui/widgets/log.cc:111 +#: src/gui/widgets/assembly.cc:551 src/gui/widgets/log.cc:111 msgid "CPU trace" msgstr "Rastro da CPU" -#: src/gui/widgets/assembly.cc:518 +#: src/gui/widgets/assembly.cc:553 msgid "Skip ISR" msgstr "Ignorar ISR" -#: src/gui/widgets/assembly.cc:520 +#: src/gui/widgets/assembly.cc:555 msgid "Follow PC" msgstr "Seguir o PC" -#: src/gui/widgets/assembly.cc:522 +#: src/gui/widgets/assembly.cc:557 msgid "Jump to PC" msgstr "Saltar pro PC" -#: src/gui/widgets/assembly.cc:535 +#: src/gui/widgets/assembly.cc:570 #, c-format msgid "In ISR: %s" msgstr "Em ISR: %s" -#: src/gui/widgets/assembly.cc:709 src/gui/widgets/assembly.cc:737 +#: src/gui/widgets/assembly.cc:744 src/gui/widgets/assembly.cc:770 #: src/gui/widgets/breakpoints.cc:171 msgid "GUI" msgstr "GUI" -#: src/gui/widgets/assembly.cc:718 +#: src/gui/widgets/assembly.cc:753 msgid "Create symbol here" msgstr "" -#: src/gui/widgets/assembly.cc:723 +#: src/gui/widgets/assembly.cc:758 #, fuzzy msgid "Remove symbol" msgstr "Resetar o mapa dos símbolos" -#: src/gui/widgets/assembly.cc:727 +#: src/gui/widgets/assembly.cc:762 msgid "Copy Address" msgstr "Copiar Endereço" -#: src/gui/widgets/assembly.cc:732 src/gui/widgets/registers.cc:39 -msgid "Go to in Memory Editor" -msgstr "Ir no Editor de Memória" - -#: src/gui/widgets/assembly.cc:735 +#: src/gui/widgets/assembly.cc:768 msgid "Run to Cursor" msgstr "Executar no Cursor" -#: src/gui/widgets/assembly.cc:744 +#: src/gui/widgets/assembly.cc:777 msgid "Toggle Breakpoint" msgstr "Alternar Pontos de Interrupção" -#: src/gui/widgets/assembly.cc:748 src/gui/widgets/assembly.cc:753 +#: src/gui/widgets/assembly.cc:781 src/gui/widgets/assembly.cc:786 #, fuzzy msgid "Remove Breakpoint" msgstr "Alternar Pontos de Interrupção" -#: src/gui/widgets/assembly.cc:757 src/gui/widgets/assembly.cc:954 -#: src/gui/widgets/assembly.cc:956 src/gui/widgets/assembly.cc:962 +#: src/gui/widgets/assembly.cc:790 src/gui/widgets/assembly.cc:987 +#: src/gui/widgets/assembly.cc:989 src/gui/widgets/assembly.cc:995 #, fuzzy msgid "Assemble" msgstr "Assembly" -#: src/gui/widgets/assembly.cc:887 src/gui/widgets/breakpoints.cc:153 +#: src/gui/widgets/assembly.cc:920 src/gui/widgets/breakpoints.cc:153 #: src/gui/widgets/memory_observer.cc:170 #: src/gui/widgets/memory_observer.cc:328 #: src/gui/widgets/memory_observer.cc:424 src/gui/widgets/typed_debugger.cc:961 msgid "Address" msgstr "Endereço" -#: src/gui/widgets/assembly.cc:901 +#: src/gui/widgets/assembly.cc:934 msgid "RAM base" msgstr "Base da RAM" -#: src/gui/widgets/assembly.cc:910 src/gui/widgets/assembly.cc:1011 +#: src/gui/widgets/assembly.cc:943 src/gui/widgets/assembly.cc:1044 msgid "Symbols" msgstr "Símbolos" -#: src/gui/widgets/assembly.cc:936 src/gui/widgets/assembly.cc:938 +#: src/gui/widgets/assembly.cc:969 src/gui/widgets/assembly.cc:971 #, fuzzy msgid "Add symbol" msgstr "Carregar Símbolos" -#: src/gui/widgets/assembly.cc:939 +#: src/gui/widgets/assembly.cc:972 #, c-format msgid "Add symbol for address 0x%08x:" msgstr "" -#: src/gui/widgets/assembly.cc:941 +#: src/gui/widgets/assembly.cc:974 #, fuzzy msgid "Add" msgstr "Endereço" -#: src/gui/widgets/assembly.cc:957 +#: src/gui/widgets/assembly.cc:990 #, c-format msgid "Assemble code for address 0x%08x:" msgstr "" #. Clear items button -#: src/gui/widgets/assembly.cc:982 src/gui/widgets/console.cc:39 +#: src/gui/widgets/assembly.cc:1015 src/gui/widgets/console.cc:39 #: src/gui/widgets/dynarec_disassembly.cc:90 src/gui/widgets/log.cc:128 #: src/gui/widgets/pio-cart.cc:41 src/gui/widgets/typed_debugger.cc:827 msgid "Clear" msgstr "Limpar" -#: src/gui/widgets/assembly.cc:984 src/gui/widgets/dynarec_disassembly.cc:73 +#: src/gui/widgets/assembly.cc:1017 src/gui/widgets/dynarec_disassembly.cc:73 msgid "Close" msgstr "Fechar" -#: src/gui/widgets/assembly.cc:1012 +#: src/gui/widgets/assembly.cc:1045 msgid "Refresh" msgstr "Atualizar" -#: src/gui/widgets/assembly.cc:1014 +#: src/gui/widgets/assembly.cc:1047 msgid "Filter" msgstr "Filtro" -#: src/gui/widgets/assembly.cc:1028 +#: src/gui/widgets/assembly.cc:1061 msgid "Code##{}{:08x}" msgstr "Código##{}{:08x}" -#: src/gui/widgets/assembly.cc:1029 +#: src/gui/widgets/assembly.cc:1062 msgid "Data##{}{:08x}" msgstr "Dados##{}{:08x}" @@ -3003,7 +3004,7 @@ msgstr "Memory Card 2" msgid "Import Memory Card file" msgstr "Memory Card 1" -#: src/gui/widgets/memcard_manager.h:78 +#: src/gui/widgets/memcard_manager.h:77 #, fuzzy msgid "Export Memory Card file" msgstr "Memory Card 1" @@ -3187,6 +3188,10 @@ msgstr "Contexto##{}" msgid "Go to in Assembly" msgstr "Ir no Assembly" +#: src/gui/widgets/registers.cc:39 +msgid "Go to in Memory Editor" +msgstr "Ir no Editor de Memória" + #: src/gui/widgets/registers.cc:42 msgid "Copy Value" msgstr "Copiar Valor" @@ -3675,121 +3680,110 @@ msgstr "" "Ativa os IRQs do SPU baseado nas gravações no buffer de decodificação/" "captura. Esta opção é necessária pra alguns jogos." -#: src/spu/debug.cc:62 +#: src/spu/debug.cc:581 msgid "SPU Debug" msgstr "Debug do SPU" -#: src/spu/debug.cc:84 -msgid "Mute all" -msgstr "Silenciar tudo" - -#: src/spu/debug.cc:90 -msgid "Unmute all" -msgstr "Ativar o som de tudo" - -#: src/spu/debug.cc:104 -msgid "ADSR channel info" -msgstr "Informações do canal ADSR" - -#: src/spu/debug.cc:107 -msgid "" -"Attack:\n" -"Decay:\n" -"Sustain:\n" -"Release:" -msgstr "" -"Atacar:\n" -"Decair:\n" -"Sustentar:\n" -"Soltar:" - -#: src/spu/debug.cc:115 -msgid "" -"Sustain level:\n" -"Sustain inc:\n" -"Curr adsr vol:\n" -"Raw enveloppe" -msgstr "" -"Nível de sustentação:\n" -"Sustentar inc:\n" -"Vol atual do adsr:\n" -"Envoltório bruto" - -#: src/spu/debug.cc:123 -msgid "Generic channel info" -msgstr "Informações do canal genérico" - -#: src/spu/debug.cc:127 -msgid "" -"On:\n" -"Stop:\n" -"Noise:\n" -"FMod:\n" -"Reverb:\n" -"Rvb active:\n" -"Rvb number:\n" -"Rvb offset:\n" -"Rvb repeat:" -msgstr "" -"Em:\n" -"Parar:\n" -"Ruído:\n" -"FMod:\n" -"Reverb:\n" -"Rvb ativo:\n" -"Número do Rvb:\n" -"Deslocamento do Rvb:\n" -"Repetir Rvb:" - -#: src/spu/debug.cc:138 -msgid "" -"Start pos:\n" -"Curr pos:\n" -"Loop pos:\n" -"\n" -"Right vol:\n" -"Left vol:\n" -"\n" -"Act freq:\n" -"Used freq:" -msgstr "" -"Pos Inicial:\n" -"Pos Atual:\n" -"Pos do Loop:\n" -"\n" -"Vol Direito:\n" -"Vol Esquerdo:\n" -"\n" -"Freq de Ação:\n" -"Freq Usada:" - -#: src/spu/debug.cc:150 -msgid "" -"Freq:\n" -"Stereo:\n" -"Samples:\n" -"Volume:\n" -msgstr "" -"Freq:\n" -"Estéreo:\n" -"Amostras:\n" -"Volume:\n" - -#: src/spu/debug.cc:159 -msgid "Spu states" -msgstr "Estados do SPU" - -#: src/spu/debug.cc:160 -msgid "" -"Irq addr:\n" -"Ctrl:\n" -"Stat:\n" -"Spu mem:" -msgstr "" -"Irq addr:\n" -"Ctrl:\n" -"Stat:\n" -"Spu mem:" +#~ msgid "Mute all" +#~ msgstr "Silenciar tudo" + +#~ msgid "Unmute all" +#~ msgstr "Ativar o som de tudo" + +#~ msgid "ADSR channel info" +#~ msgstr "Informações do canal ADSR" + +#~ msgid "" +#~ "Attack:\n" +#~ "Decay:\n" +#~ "Sustain:\n" +#~ "Release:" +#~ msgstr "" +#~ "Atacar:\n" +#~ "Decair:\n" +#~ "Sustentar:\n" +#~ "Soltar:" + +#~ msgid "" +#~ "Sustain level:\n" +#~ "Sustain inc:\n" +#~ "Curr adsr vol:\n" +#~ "Raw enveloppe" +#~ msgstr "" +#~ "Nível de sustentação:\n" +#~ "Sustentar inc:\n" +#~ "Vol atual do adsr:\n" +#~ "Envoltório bruto" + +#~ msgid "Generic channel info" +#~ msgstr "Informações do canal genérico" + +#~ msgid "" +#~ "On:\n" +#~ "Stop:\n" +#~ "Noise:\n" +#~ "FMod:\n" +#~ "Reverb:\n" +#~ "Rvb active:\n" +#~ "Rvb number:\n" +#~ "Rvb offset:\n" +#~ "Rvb repeat:" +#~ msgstr "" +#~ "Em:\n" +#~ "Parar:\n" +#~ "Ruído:\n" +#~ "FMod:\n" +#~ "Reverb:\n" +#~ "Rvb ativo:\n" +#~ "Número do Rvb:\n" +#~ "Deslocamento do Rvb:\n" +#~ "Repetir Rvb:" + +#~ msgid "" +#~ "Start pos:\n" +#~ "Curr pos:\n" +#~ "Loop pos:\n" +#~ "\n" +#~ "Right vol:\n" +#~ "Left vol:\n" +#~ "\n" +#~ "Act freq:\n" +#~ "Used freq:" +#~ msgstr "" +#~ "Pos Inicial:\n" +#~ "Pos Atual:\n" +#~ "Pos do Loop:\n" +#~ "\n" +#~ "Vol Direito:\n" +#~ "Vol Esquerdo:\n" +#~ "\n" +#~ "Freq de Ação:\n" +#~ "Freq Usada:" + +#~ msgid "" +#~ "Freq:\n" +#~ "Stereo:\n" +#~ "Samples:\n" +#~ "Volume:\n" +#~ msgstr "" +#~ "Freq:\n" +#~ "Estéreo:\n" +#~ "Amostras:\n" +#~ "Volume:\n" + +#~ msgid "Spu states" +#~ msgstr "Estados do SPU" + +#~ msgid "" +#~ "Irq addr:\n" +#~ "Ctrl:\n" +#~ "Stat:\n" +#~ "Spu mem:" +#~ msgstr "" +#~ "Irq addr:\n" +#~ "Ctrl:\n" +#~ "Stat:\n" +#~ "Spu mem:" #~ msgid "Classic" #~ msgstr "Clássico" diff --git a/i18n/uk.po b/i18n/uk.po index 34a9f867b..d2a3e06b3 100644 --- a/i18n/uk.po +++ b/i18n/uk.po @@ -4,7 +4,7 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Stanley_Kid, 2024 +# Stanley Kid, 2024 # #, fuzzy msgid "" @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2021-03-27 04:53+0000\n" -"Last-Translator: Stanley_Kid, 2024\n" +"Last-Translator: Stanley Kid, 2024\n" "Language-Team: Ukrainian (https://app.transifex.com/grumpycoders/teams/99251/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -91,12 +91,12 @@ msgstr "Налагоджувач Open GL GPU" #: src/core/OpenGL_GPU/gpu_opengl.cc:518 #, c-format msgid "Display horizontal range: %d-%d" -msgstr "Відобразити горизонтальний діапазон: %d-%d" +msgstr "Горизонтальний діапазон дисплея: %d-%d" #: src/core/OpenGL_GPU/gpu_opengl.cc:519 #, c-format msgid "Display vertical range: %d-%d" -msgstr "Відобразити вертикальний діапазон: %d-%d" +msgstr "Вертикальний діапазон дисплея: %d-%d" #: src/core/OpenGL_GPU/gpu_opengl.cc:520 #, c-format @@ -163,8 +163,8 @@ msgstr "Записати мапу 32" msgid "Step in" msgstr "Увійти" -#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:454 -#: src/gui/widgets/assembly.cc:531 +#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:566 msgid "Step Over" msgstr "Пропустити" @@ -181,20 +181,20 @@ msgstr "Вийти (без стека викликів)" msgid "Breakpoint triggered: PC=0x%08x - Cause: %s %s\n" msgstr "Викликано точку зупинки: PC = 0x%08x - Причина: %s %s.\n" -#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:455 -#: src/gui/widgets/assembly.cc:533 +#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:490 +#: src/gui/widgets/assembly.cc:568 msgid "Step Out" msgstr "Вийти" -#: src/core/debug.h:37 +#: src/core/debug.h:36 msgid "Exec" msgstr "Виконання" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:285 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:285 msgid "Read" msgstr "Читання" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:287 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:287 msgid "Write" msgstr "Запис" @@ -499,7 +499,7 @@ msgstr "Невідома кнопка клавіатури {}" msgid "Keyboard {}" msgstr "Клавіатура {}" -#: src/core/pad.cc:986 src/gui/gui.cc:1993 +#: src/core/pad.cc:986 src/gui/gui.cc:2019 msgid "Auto" msgstr "Автоматично" @@ -795,67 +795,37 @@ msgstr "Виявлено OpenBIOS (%08x).\n" msgid "Unknown bios loaded (%08x)\n" msgstr "Завантажено невідомий BIOS (%08x).\n" -#: src/core/psxmem.cc:276 -#, c-format -msgid "8-bit read redirected to Lua for address: %8.8lx\n" -msgstr "8-бітне читання перенаправлено до Lua для адреси: %8.8lx.\n" - -#: src/core/psxmem.cc:283 +#: src/core/psxmem.cc:282 #, c-format msgid "8-bit read from unknown address: %8.8lx\n" msgstr "8-бітне читання з невідомої адреси: %8.8lx.\n" -#: src/core/psxmem.cc:313 -#, c-format -msgid "16-bit read redirected to Lua for address: %8.8lx\n" -msgstr "16-бітне читання перенаправлено до Lua для адреси: %8.8lx.\n" - -#: src/core/psxmem.cc:316 +#: src/core/psxmem.cc:314 #, c-format msgid "16-bit read from unknown address: %8.8lx\n" msgstr "16-бітне читання з невідомої адреси: %8.8lx.\n" #: src/core/psxmem.cc:348 #, c-format -msgid "32-bit read redirected to Lua for address: %8.8lx\n" -msgstr "32-бітне читання перенаправлено до Lua для адреси: %8.8lx.\n" - -#: src/core/psxmem.cc:351 -#, c-format msgid "32-bit read from unknown address: %8.8lx\n" msgstr "32-бітне читання з невідомої адреси: %8.8lx.\n" -#: src/core/psxmem.cc:452 -#, c-format -msgid "8-bit write redirected to Lua for address: %8.8lx\n" -msgstr "8-бітний запис перенаправлено до Lua для адреси: %8.8lx.\n" - -#: src/core/psxmem.cc:455 +#: src/core/psxmem.cc:451 #, c-format msgid "8-bit write to unknown address: %8.8lx\n" msgstr "8-бітний запис із невідомої адреси: %8.8lx.\n" -#: src/core/psxmem.cc:482 -#, c-format -msgid "16-bit write redirected to Lua for address: %8.8lx\n" -msgstr "16-бітний запис перенаправлено до Lua для адреси: %8.8lx.\n" - -#: src/core/psxmem.cc:485 +#: src/core/psxmem.cc:480 #, c-format msgid "16-bit write to unknown address: %8.8lx\n" msgstr "16-бітний запис із невідомої адреси: %8.8lx.\n" -#: src/core/psxmem.cc:523 +#: src/core/psxmem.cc:518 #, c-format msgid "Unknown BIU value: %8.8lx\n" msgstr "Невідоме значення BIU %8.8lx.\n" -#: src/core/psxmem.cc:530 -#, c-format -msgid "32-bit write redirected to Lua for address: %8.8lx\n" -msgstr "32-бітний запис перенаправлено до Lua для адреси: %8.8lx.\n" - -#: src/core/psxmem.cc:533 +#: src/core/psxmem.cc:527 #, c-format msgid "32-bit write to unknown address: %8.8lx\n" msgstr "32-бітний запис із невідомої адреси: %8.8lx.\n" @@ -999,202 +969,202 @@ msgstr "BIOS" msgid "VRAM" msgstr "VRAM" -#: src/gui/gui.cc:1055 +#: src/gui/gui.cc:1081 msgid "Output" msgstr "Вихід" -#: src/gui/gui.cc:1080 src/gui/widgets/assembly.cc:442 +#: src/gui/gui.cc:1106 src/gui/widgets/assembly.cc:477 #: src/gui/widgets/isobrowser.cc:66 src/gui/widgets/memcard_manager.cc:63 #: src/gui/widgets/vram-viewer.cc:482 msgid "File" msgstr "Файл" -#: src/gui/gui.cc:1081 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 +#: src/gui/gui.cc:1107 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 #: src/gui/widgets/isobrowser.h:50 msgid "Open Disk Image" msgstr "Відкрити образ диска" -#: src/gui/gui.cc:1082 src/gui/widgets/isobrowser.cc:68 +#: src/gui/gui.cc:1108 src/gui/widgets/isobrowser.cc:68 msgid "Close Disk Image" msgstr "Закрити образ диска" -#: src/gui/gui.cc:1086 +#: src/gui/gui.cc:1112 msgid "Load binary" msgstr "Завантажити двійковий файл" -#: src/gui/gui.cc:1089 +#: src/gui/gui.cc:1115 msgid "Add Lua archive" msgstr "Додати Lua-архів" -#: src/gui/gui.cc:1093 +#: src/gui/gui.cc:1119 msgid "Dump save state proto schema" msgstr "Дамп стану збереження схеми буферного протоколу" -#: src/gui/gui.cc:1098 +#: src/gui/gui.cc:1124 msgid "global{}" msgstr "глобально{}" -#: src/gui/gui.cc:1100 +#: src/gui/gui.cc:1126 msgid "Save state slots" msgstr "Слоти збереження станів" -#: src/gui/gui.cc:1101 +#: src/gui/gui.cc:1127 msgid "Quick-save slot" msgstr "Слот швидкого збереження" -#: src/gui/gui.cc:1106 src/gui/gui.cc:1127 +#: src/gui/gui.cc:1132 src/gui/gui.cc:1153 msgid "Slot {}" msgstr "Slot {}" -#: src/gui/gui.cc:1113 +#: src/gui/gui.cc:1139 msgid "Show named save states" msgstr "Показати імена збережених станів" -#: src/gui/gui.cc:1118 +#: src/gui/gui.cc:1144 msgid "Save global state" msgstr "Зберегти глобальний стан" -#: src/gui/gui.cc:1120 +#: src/gui/gui.cc:1146 msgid "Load state slots" msgstr "Слоти завантаження станів" -#: src/gui/gui.cc:1123 +#: src/gui/gui.cc:1149 msgid "Quick-load slot" msgstr "Слот швидкого завантаження" -#: src/gui/gui.cc:1148 +#: src/gui/gui.cc:1174 msgid "Load global state" msgstr "Завантажити глобальний стан" -#: src/gui/gui.cc:1152 +#: src/gui/gui.cc:1178 msgid "Open LID" msgstr "Відкрити LID" -#: src/gui/gui.cc:1156 +#: src/gui/gui.cc:1182 msgid "Close LID" msgstr "Закрити LID" -#: src/gui/gui.cc:1160 +#: src/gui/gui.cc:1186 msgid "Open and close LID" msgstr "Відкрити та закрити LID" -#: src/gui/gui.cc:1165 +#: src/gui/gui.cc:1191 msgid "Reboot" msgstr "Перезавантажити" -#: src/gui/gui.cc:1168 +#: src/gui/gui.cc:1194 msgid "Quit" msgstr "Вихід" -#: src/gui/gui.cc:1174 src/gui/gui.cc:1191 +#: src/gui/gui.cc:1200 src/gui/gui.cc:1217 msgid "Emulation" msgstr "Емуляція" -#: src/gui/gui.cc:1175 +#: src/gui/gui.cc:1201 msgid "Start emulation" msgstr "Розпочати емуляцію" -#: src/gui/gui.cc:1178 +#: src/gui/gui.cc:1204 msgid "Pause emulation" msgstr "Призупинити емуляцію" -#: src/gui/gui.cc:1181 +#: src/gui/gui.cc:1207 msgid "Soft Reset" msgstr "Програмне перезавантаження" -#: src/gui/gui.cc:1184 +#: src/gui/gui.cc:1210 msgid "Hard Reset" msgstr "Апаратне перезавантаження" -#: src/gui/gui.cc:1190 src/gui/widgets/vram-viewer.cc:520 +#: src/gui/gui.cc:1216 src/gui/widgets/vram-viewer.cc:520 msgid "Configuration" msgstr "Конфігурація" -#: src/gui/gui.cc:1192 +#: src/gui/gui.cc:1218 msgid "Manage Memory Cards" msgstr "Керувати картами пам'яті" -#: src/gui/gui.cc:1195 src/gui/gui.cc:1295 +#: src/gui/gui.cc:1221 src/gui/gui.cc:1321 msgid "GPU" msgstr "GPU" -#: src/gui/gui.cc:1196 src/gui/gui.cc:1311 +#: src/gui/gui.cc:1222 src/gui/gui.cc:1337 msgid "SPU" msgstr "SPU" -#: src/gui/gui.cc:1197 +#: src/gui/gui.cc:1223 msgid "UI" msgstr "UI" -#: src/gui/gui.cc:1198 +#: src/gui/gui.cc:1224 msgid "System" msgstr "Система" -#: src/gui/gui.cc:1199 +#: src/gui/gui.cc:1225 msgid "Controls" msgstr "Керування" -#: src/gui/gui.cc:1200 +#: src/gui/gui.cc:1226 msgid "Shader presets" msgstr "Шаблони шейдерів" -#: src/gui/gui.cc:1201 +#: src/gui/gui.cc:1227 msgid "Default shader" msgstr "Типовий шейдер" -#: src/gui/gui.cc:1204 +#: src/gui/gui.cc:1230 msgid "CRT-lottes shader" msgstr "CRT-lottes-шейдер" -#: src/gui/gui.cc:1231 +#: src/gui/gui.cc:1257 msgid "Configure Shaders" msgstr "Налаштувати шейдери" -#: src/gui/gui.cc:1235 +#: src/gui/gui.cc:1261 msgid "PIO Cartridge" msgstr "PIO-картридж" -#: src/gui/gui.cc:1239 src/gui/widgets/assembly.cc:449 +#: src/gui/gui.cc:1265 src/gui/widgets/assembly.cc:484 msgid "Debug" msgstr "Налагодження" -#: src/gui/gui.cc:1240 +#: src/gui/gui.cc:1266 msgid "Show Logs" msgstr "Показати журнали" -#: src/gui/gui.cc:1241 +#: src/gui/gui.cc:1267 msgid "Lua" msgstr "Lua" -#: src/gui/gui.cc:1242 +#: src/gui/gui.cc:1268 msgid "Show Lua Console" msgstr "Показати Lua-консоль" -#: src/gui/gui.cc:1243 +#: src/gui/gui.cc:1269 msgid "Show Lua Inspector" msgstr "Показати Lua-наглядач" -#: src/gui/gui.cc:1244 +#: src/gui/gui.cc:1270 msgid "Show Lua editor" msgstr "Показати Lua-редактор" -#: src/gui/gui.cc:1248 +#: src/gui/gui.cc:1274 msgid "CPU" msgstr "CPU" -#: src/gui/gui.cc:1249 +#: src/gui/gui.cc:1275 msgid "Show Registers" msgstr "Показати регістри" -#: src/gui/gui.cc:1250 +#: src/gui/gui.cc:1276 msgid "Show Assembly" msgstr "Показати збір" -#: src/gui/gui.cc:1252 src/gui/gui.cc:1254 +#: src/gui/gui.cc:1278 src/gui/gui.cc:1280 msgid "Show DynaRec Disassembly" msgstr "Показати розбір динамічної перекомпіляції" -#: src/gui/gui.cc:1256 +#: src/gui/gui.cc:1282 msgid "" "DynaRec Disassembler is not available in Interpreted CPU mode. Try enabling [Dynarec CPU]\n" "in Configuration->Emulation, restart PCSX-Redux, then try again." @@ -1204,270 +1174,270 @@ msgstr "" "перекомпіляція ЦП\" у Конфігурація → Емуляція,\n" "перезапусти PCSX-Redux, потім спробуй знову." -#: src/gui/gui.cc:1259 +#: src/gui/gui.cc:1285 msgid "Show Breakpoints" msgstr "Показати точки зупинки" -#: src/gui/gui.cc:1260 +#: src/gui/gui.cc:1286 msgid "Show Callstacks" msgstr "Показати стеки викликів" -#: src/gui/gui.cc:1261 +#: src/gui/gui.cc:1287 msgid "Memory Editors" msgstr "Редактори пам'яті" -#: src/gui/gui.cc:1272 +#: src/gui/gui.cc:1298 msgid "Show Memory Observer" msgstr "Показати спостерігач пам'яті" -#: src/gui/gui.cc:1273 +#: src/gui/gui.cc:1299 msgid "Show Typed Debugger" msgstr "Показати налагоджувач типів" -#: src/gui/gui.cc:1274 +#: src/gui/gui.cc:1300 msgid "Show Interrupts Scaler" msgstr "Показати скалер переривань" -#: src/gui/gui.cc:1275 +#: src/gui/gui.cc:1301 msgid "First Chance Exceptions" msgstr "Винятки першої можливості" -#: src/gui/gui.cc:1296 +#: src/gui/gui.cc:1322 msgid "VRAM viewers" msgstr "VRAM-переглядачі" -#: src/gui/gui.cc:1297 +#: src/gui/gui.cc:1323 msgid "Show main VRAM viewer" msgstr "Показати головний VRAM-переглядач" -#: src/gui/gui.cc:1298 +#: src/gui/gui.cc:1324 msgid "Show CLUT VRAM viewer" msgstr "Показати CLUT VRAM-переглядач" -#: src/gui/gui.cc:1301 +#: src/gui/gui.cc:1327 msgid "Show VRAM viewer #" msgstr "Показати VRAM-переглядач #" -#: src/gui/gui.cc:1307 +#: src/gui/gui.cc:1333 msgid "Show GPU logger" msgstr "Показати GPU-реєстратор" -#: src/gui/gui.cc:1308 +#: src/gui/gui.cc:1334 msgid "Show GPU debug" msgstr "Показати GPU-налагодження" -#: src/gui/gui.cc:1312 +#: src/gui/gui.cc:1338 msgid "Show SPU debug" msgstr "Показати SPU-налагодження" -#: src/gui/gui.cc:1315 +#: src/gui/gui.cc:1341 msgid "CD-Rom" msgstr "CD-ROM" -#: src/gui/gui.cc:1316 +#: src/gui/gui.cc:1342 msgid "Show Iso Browser" msgstr "Показати ISO-браузер" -#: src/gui/gui.cc:1319 +#: src/gui/gui.cc:1345 msgid "Misc hardware" msgstr "Інше обладнання" -#: src/gui/gui.cc:1320 +#: src/gui/gui.cc:1346 msgid "Show SIO1 debug" msgstr "Показати SIO1-налагодження" -#: src/gui/gui.cc:1324 +#: src/gui/gui.cc:1350 msgid "Kernel" msgstr "Ядро" -#: src/gui/gui.cc:1325 +#: src/gui/gui.cc:1351 msgid "Kernel Events" msgstr "Події ядра" -#: src/gui/gui.cc:1326 +#: src/gui/gui.cc:1352 msgid "Kernel Handlers" msgstr "Опрацьовувачі ядра" -#: src/gui/gui.cc:1327 src/gui/gui.cc:1473 +#: src/gui/gui.cc:1353 src/gui/gui.cc:1499 msgid "Kernel Calls" msgstr "Виклики ядра" -#: src/gui/gui.cc:1330 +#: src/gui/gui.cc:1356 msgid "Rendering" msgstr "Опрацювання" -#: src/gui/gui.cc:1331 +#: src/gui/gui.cc:1357 msgid "Full window render" msgstr "Опрацьовувач повного вікна" -#: src/gui/gui.cc:1334 +#: src/gui/gui.cc:1360 msgid "Fullscreen" msgstr "Опрацьовувач повного екрана" -#: src/gui/gui.cc:1338 +#: src/gui/gui.cc:1364 msgid "Show Output Shader Editor" msgstr "Показати редактор кінцевих шейдерів" -#: src/gui/gui.cc:1339 +#: src/gui/gui.cc:1365 msgid "Show Offscreen Shader Editor" msgstr "Показати редактор позакадрових шейдерів" -#: src/gui/gui.cc:1340 +#: src/gui/gui.cc:1366 msgid "Reset shaders" msgstr "Відновити шейдери" -#: src/gui/gui.cc:1348 +#: src/gui/gui.cc:1374 msgid "Help" msgstr "Довідка" -#: src/gui/gui.cc:1349 +#: src/gui/gui.cc:1375 msgid "Show ImGui Demo" msgstr "Показати демонстрацію Im-Gui" -#: src/gui/gui.cc:1351 +#: src/gui/gui.cc:1377 msgid "Show UvFile information" msgstr "Показати відомості Uv-File" -#: src/gui/gui.cc:1353 src/gui/gui.cc:2258 +#: src/gui/gui.cc:1379 src/gui/gui.cc:2284 msgid "About" msgstr "Про додаток" -#: src/gui/gui.cc:1358 +#: src/gui/gui.cc:1384 #, c-format msgid "CPU: %s" msgstr "ЦП: %s" -#: src/gui/gui.cc:1360 src/gui/widgets/isobrowser.cc:102 +#: src/gui/gui.cc:1386 src/gui/widgets/isobrowser.cc:102 #, c-format msgid "GAME ID: %s" msgstr "ID гри: %s" -#: src/gui/gui.cc:1363 +#: src/gui/gui.cc:1389 #, c-format msgid "%.2f FPS (%.2f ms)" msgstr "%.3f Гц (%.3f мсек)" -#: src/gui/gui.cc:1366 +#: src/gui/gui.cc:1392 #, c-format msgid "%.2f ms audio buffer (%i frames)" msgstr "%.3f мсек аудіобуфер (%i кадрів)" -#: src/gui/gui.cc:1368 +#: src/gui/gui.cc:1394 msgid "Idle" msgstr "Неактивний" -#: src/gui/gui.cc:1449 +#: src/gui/gui.cc:1475 msgid "Logs" msgstr "Журнали" -#: src/gui/gui.cc:1455 +#: src/gui/gui.cc:1481 msgid "Lua Console" msgstr "Lua-консоль" -#: src/gui/gui.cc:1461 +#: src/gui/gui.cc:1487 msgid "Lua Inspector" msgstr "Lua-спостерігач" -#: src/gui/gui.cc:1464 +#: src/gui/gui.cc:1490 msgid "Lua Editor" msgstr "Lua-редактор" -#: src/gui/gui.cc:1467 +#: src/gui/gui.cc:1493 msgid "Kernel events" msgstr "Події ядра" -#: src/gui/gui.cc:1470 +#: src/gui/gui.cc:1496 msgid "Kernel handlers" msgstr "Опрацьовувачі ядра" -#: src/gui/gui.cc:1476 +#: src/gui/gui.cc:1502 msgid "Callstacks" msgstr "Стеки викликів" -#: src/gui/gui.cc:1525 +#: src/gui/gui.cc:1551 msgid "Memory Card Manager" msgstr "Менеджер карт пам'яті" -#: src/gui/gui.cc:1529 src/gui/widgets/registers.cc:65 +#: src/gui/gui.cc:1555 src/gui/widgets/registers.cc:65 msgid "Registers" msgstr "Регістри" -#: src/gui/gui.cc:1533 +#: src/gui/gui.cc:1559 msgid "Assembly" msgstr "Збір" -#: src/gui/gui.cc:1537 +#: src/gui/gui.cc:1563 msgid "DynaRec Disassembler" msgstr "Розбірник динамічної перекомпіляції" -#: src/gui/gui.cc:1541 src/gui/widgets/breakpoints.cc:81 +#: src/gui/gui.cc:1567 src/gui/widgets/breakpoints.cc:81 #: src/gui/widgets/typed_debugger.cc:864 src/gui/widgets/typed_debugger.cc:910 #: src/gui/widgets/typed_debugger.cc:963 msgid "Breakpoints" msgstr "Точки зупинки" -#: src/gui/gui.cc:1545 +#: src/gui/gui.cc:1571 msgid "Named Save States" msgstr "Імена збережених станів" -#: src/gui/gui.cc:1549 src/gui/widgets/memory_observer.cc:382 +#: src/gui/gui.cc:1575 src/gui/widgets/memory_observer.cc:382 #: src/gui/widgets/memory_observer.cc:388 msgid "Memory Observer" msgstr "Спостерігач пам'яті" -#: src/gui/gui.cc:1553 src/gui/widgets/typed_debugger.cc:1062 +#: src/gui/gui.cc:1579 src/gui/widgets/typed_debugger.cc:1062 msgid "Typed Debugger" msgstr "Налагоджувач типів" -#: src/gui/gui.cc:1559 +#: src/gui/gui.cc:1585 msgid "Output Video" msgstr "Кінцеве відео" -#: src/gui/gui.cc:1564 +#: src/gui/gui.cc:1590 msgid "Offscreen Render" msgstr "Позакадрове опрацювання" -#: src/gui/gui.cc:1570 +#: src/gui/gui.cc:1596 msgid "PIO Cartridge Configuration" msgstr "Конфігурація PIO-картриджа" -#: src/gui/gui.cc:1574 +#: src/gui/gui.cc:1600 msgid "SIO1 Debug" msgstr "SIO1-налагодження" -#: src/gui/gui.cc:1578 +#: src/gui/gui.cc:1604 msgid "ISO Browser" msgstr "ISO-браузер" -#: src/gui/gui.cc:1588 +#: src/gui/gui.cc:1614 msgid "GPU Logger" msgstr "GPU-реєстратор" -#: src/gui/gui.cc:1591 +#: src/gui/gui.cc:1617 msgid "UI Configuration" msgstr "Конфігурація UI" -#: src/gui/gui.cc:1597 +#: src/gui/gui.cc:1623 msgid "Locale" msgstr "Мова" -#: src/gui/gui.cc:1612 +#: src/gui/gui.cc:1638 msgid "Reload locales" msgstr "Перезавантажити мови" -#: src/gui/gui.cc:1617 +#: src/gui/gui.cc:1643 msgid "Main Font Size" msgstr "Розмір головного шрифту" -#: src/gui/gui.cc:1618 +#: src/gui/gui.cc:1644 msgid "Mono Font Size" msgstr "Розмір моношрифту" -#: src/gui/gui.cc:1620 +#: src/gui/gui.cc:1646 msgid "Use Widescreen Aspect Ratio" msgstr "Використовувати широкоекранне співвідношення сторін" -#: src/gui/gui.cc:1621 +#: src/gui/gui.cc:1647 msgid "" "Sets the output screen ratio to 16:9 instead of 4:3.\n" "\n" @@ -1495,23 +1465,23 @@ msgstr "" "телевізора для збіжності зі співвідношеннями\n" "сторін гри." -#: src/gui/gui.cc:1640 +#: src/gui/gui.cc:1666 msgid "System Configuration" msgstr "Конфігурація системи" -#: src/gui/gui.cc:1642 +#: src/gui/gui.cc:1668 msgid "Preload Disk Image files" msgstr "Попереднє завантаження файлів образу диска" -#: src/gui/gui.cc:1643 +#: src/gui/gui.cc:1669 msgid "Enable Auto Update" msgstr "Увімкнути автооновлення" -#: src/gui/gui.cc:1650 +#: src/gui/gui.cc:1676 msgid "Update configuration" msgstr "Конфігурація оновлень" -#: src/gui/gui.cc:1651 +#: src/gui/gui.cc:1677 msgid "" "PCSX-Redux can automatically update itself.\n" "\n" @@ -1540,19 +1510,19 @@ msgstr "" "Для зміни налаштування пізніше можна перейти до\n" "Конфігурація → Системне меню." -#: src/gui/gui.cc:1664 +#: src/gui/gui.cc:1690 msgid "Enable auto update" msgstr "Увімкнути автооновлення" -#: src/gui/gui.cc:1670 +#: src/gui/gui.cc:1696 msgid "No thanks" msgstr "Ні, дякую" -#: src/gui/gui.cc:1679 +#: src/gui/gui.cc:1705 msgid "Update available" msgstr "Доступне оновлення" -#: src/gui/gui.cc:1681 +#: src/gui/gui.cc:1707 msgid "" "An update is available.\n" "Click 'Update' to download and apply the update.\n" @@ -1568,7 +1538,7 @@ msgstr "" "Натисни \"Завантажити\" для завантаження оновлення\n" "з браузера та ручного встановлення." -#: src/gui/gui.cc:1688 +#: src/gui/gui.cc:1714 msgid "" "An update is available.\n" "Click 'Update' to download it. While the update can be\n" @@ -1588,90 +1558,90 @@ msgstr "" "Натисни \"Завантажити\" для завантаження оновлення\n" "з браузера та ручного встановлення." -#: src/gui/gui.cc:1699 +#: src/gui/gui.cc:1725 msgid "Update" msgstr "Оновити" -#: src/gui/gui.cc:1711 src/gui/gui.cc:1716 +#: src/gui/gui.cc:1737 src/gui/gui.cc:1742 msgid "" "An error has occured while downloading\n" "and/or applying the update." msgstr "Помилка завантаження та / або встановлення оновлення." -#: src/gui/gui.cc:1722 +#: src/gui/gui.cc:1748 msgid "Download" msgstr "Завантажити" -#: src/gui/gui.cc:1732 +#: src/gui/gui.cc:1758 msgid "An error has occured while downloading the update." msgstr "Помилка завантаження оновлення." -#: src/gui/gui.cc:1738 src/gui/widgets/assembly.cc:947 +#: src/gui/gui.cc:1764 src/gui/widgets/assembly.cc:980 #: src/gui/widgets/breakpoints.cc:38 src/gui/widgets/registers.cc:339 #: src/gui/widgets/sio1.cc:203 msgid "Cancel" msgstr "Скасувати" -#: src/gui/gui.cc:1747 +#: src/gui/gui.cc:1773 msgid "UvFiles" msgstr "Uv-файли" -#: src/gui/gui.cc:1750 +#: src/gui/gui.cc:1776 #, c-format msgid "Read rate: %s" msgstr "Швидкість читання: %s." -#: src/gui/gui.cc:1752 +#: src/gui/gui.cc:1778 #, c-format msgid "Write rate: %s" msgstr "Швидкість запису: %s." -#: src/gui/gui.cc:1754 +#: src/gui/gui.cc:1780 #, c-format msgid "Download rate: %s" msgstr "Швидкість завантаження: %s." -#: src/gui/gui.cc:1756 +#: src/gui/gui.cc:1782 msgid "Caching" msgstr "Кешування" -#: src/gui/gui.cc:1757 src/gui/widgets/memcard_manager.cc:201 +#: src/gui/gui.cc:1783 src/gui/widgets/memcard_manager.cc:201 msgid "Filename" msgstr "Ім'я файлу" -#: src/gui/gui.cc:1944 +#: src/gui/gui.cc:1970 msgid "Emulation Configuration" msgstr "Конфігурація емуляції" -#: src/gui/gui.cc:1945 +#: src/gui/gui.cc:1971 msgid "Idle Swap Interval" msgstr "Інтервал обміну неактивності" -#: src/gui/gui.cc:1950 +#: src/gui/gui.cc:1976 msgid "Reset Scaler" msgstr "Відновити скалер" -#: src/gui/gui.cc:1956 +#: src/gui/gui.cc:1982 msgid "Speed Scaler" msgstr "Швидкість скалера" -#: src/gui/gui.cc:1958 +#: src/gui/gui.cc:1984 msgid "Enable XA decoder" msgstr "Увімкнути XA-декодер" -#: src/gui/gui.cc:1959 +#: src/gui/gui.cc:1985 msgid "Always enable SPU IRQ" msgstr "Завжди вмикати SPU IRQ" -#: src/gui/gui.cc:1960 +#: src/gui/gui.cc:1986 msgid "Decode MDEC videos in B&W" msgstr "Декодувати MDEC-відео до монохрому" -#: src/gui/gui.cc:1961 +#: src/gui/gui.cc:1987 msgid "Dynarec CPU" msgstr "Динамічна перекомпіляція ЦП" -#: src/gui/gui.cc:1969 +#: src/gui/gui.cc:1995 msgid "" "Activates the dynamic recompiler CPU core.\n" "It is significantly faster than the interpreted CPU,\n" @@ -1687,11 +1657,11 @@ msgstr "" "доступне не для всіх ЦП, тому налаштування може не мати\n" "жодного ефекту." -#: src/gui/gui.cc:1975 +#: src/gui/gui.cc:2001 msgid "8MB" msgstr "8 Мбайт" -#: src/gui/gui.cc:1976 +#: src/gui/gui.cc:2002 msgid "" "Emulates an installed 8MB system,\n" "instead of the normal 2MB. Useful for working\n" @@ -1701,11 +1671,11 @@ msgstr "" "звичайних 2 Мбайт. Корисно для роботи\n" "з виробничими двійковими файлами й іграми." -#: src/gui/gui.cc:1980 +#: src/gui/gui.cc:2006 msgid "OpenGL GPU *ALPHA STATE*" msgstr "Open GL GPU *АЛЬФА-СТАН*" -#: src/gui/gui.cc:1981 +#: src/gui/gui.cc:2007 msgid "" "Enables the OpenGL GPU renderer.\n" "This is not recommended for normal use at the moment,\n" @@ -1719,23 +1689,23 @@ msgstr "" "використовувати програмний опрацьовувач.\n" "Необхідне перезавантаження при зміні налаштування." -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "NTSC" msgstr "NTSC" -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "PAL" msgstr "PAL" -#: src/gui/gui.cc:1996 +#: src/gui/gui.cc:2022 msgid "System Type" msgstr "Тип системи" -#: src/gui/gui.cc:2015 +#: src/gui/gui.cc:2041 msgid "Fast boot" msgstr "Швидке завантаження" -#: src/gui/gui.cc:2016 +#: src/gui/gui.cc:2042 msgid "" "This will cause the BIOS to skip the shell,\n" "which may include additional checks.\n" @@ -1747,15 +1717,15 @@ msgstr "" "завантаження буде суттєво прискорено,\n" "оскільки логотип не буде відображено." -#: src/gui/gui.cc:2021 +#: src/gui/gui.cc:2047 msgid "BIOS file" msgstr "BIOS" -#: src/gui/gui.cc:2025 src/gui/widgets/assembly.cc:507 +#: src/gui/gui.cc:2051 src/gui/widgets/assembly.cc:542 msgid "Enable Debugger" msgstr "Увімкнути налагоджувач" -#: src/gui/gui.cc:2032 +#: src/gui/gui.cc:2058 msgid "" "This will enable the usage of various breakpoints\n" "throughout the execution of mips code. Enabling this\n" @@ -1764,11 +1734,11 @@ msgstr "" "Використання різних точок зупинки при виконанні\n" "MIPS-коду. Можливе значне сповільнення емуляції." -#: src/gui/gui.cc:2035 +#: src/gui/gui.cc:2061 msgid "Enable GDB Server" msgstr "Увімкнути GDB-сервер" -#: src/gui/gui.cc:2044 +#: src/gui/gui.cc:2070 msgid "" "This will activate a gdb-server that you can\n" "connect to with any gdb-remote compliant client.\n" @@ -1778,11 +1748,11 @@ msgstr "" "будь-яким GDB-remote-сумісним клієнтом.\n" "Також необхідно увімкнути налагоджувач." -#: src/gui/gui.cc:2048 +#: src/gui/gui.cc:2074 msgid "GDB send manifest" msgstr "Маніфест надсилання GDB" -#: src/gui/gui.cc:2049 +#: src/gui/gui.cc:2075 msgid "" "Enables sending the processor's manifest\n" "from the gdb server. Keep this enabled, unless\n" @@ -1793,19 +1763,19 @@ msgstr "" "Залиш увімкненим для нез'єднання IDA з сервером,\n" "оскільки він має помилку в аналізаторі маніфесту." -#: src/gui/gui.cc:2056 +#: src/gui/gui.cc:2082 msgid "PCSX Logs to GDB" msgstr "Журнали PCSX до GDB" -#: src/gui/gui.cc:2072 +#: src/gui/gui.cc:2098 msgid "GDB Server Port" msgstr "Порт GDB-сервера" -#: src/gui/gui.cc:2074 +#: src/gui/gui.cc:2100 msgid "GDB Server Trace" msgstr "Відстеження GDB-сервера" -#: src/gui/gui.cc:2075 +#: src/gui/gui.cc:2101 msgid "" "The GDB server will start tracing its\n" "protocol into the logs, which can be helpful to debug\n" @@ -1815,11 +1785,11 @@ msgstr "" "протоколу в журналах, що може бути корисним\n" "для налагодження самої системи GDB-сервера." -#: src/gui/gui.cc:2078 +#: src/gui/gui.cc:2104 msgid "Enable Web Server" msgstr "Увімкнути web-сервер" -#: src/gui/gui.cc:2087 +#: src/gui/gui.cc:2113 msgid "" "This will activate a web-server, that you can\n" "query using a REST api. See the wiki for details.\n" @@ -1830,15 +1800,15 @@ msgstr "" "Докладно - Wikipedia. У деяких випадках\n" "необхідний налагоджувач." -#: src/gui/gui.cc:2091 +#: src/gui/gui.cc:2117 msgid "Web Server Port" msgstr "Порт web-сервера" -#: src/gui/gui.cc:2092 +#: src/gui/gui.cc:2118 msgid "Enable SIO1 Server" msgstr "Увімкнути SIO1-сервер" -#: src/gui/gui.cc:2101 +#: src/gui/gui.cc:2127 msgid "" "This will activate a tcp server, that will\n" "relay information between tcp and sio1.\n" @@ -1847,15 +1817,15 @@ msgstr "" "Активація TCP-сервера для передачі\n" "відомостей між TCP і SIO1. Докладно - Wikipedia." -#: src/gui/gui.cc:2105 +#: src/gui/gui.cc:2131 msgid "SIO1 Server Port" msgstr "Порт SIO1-сервера" -#: src/gui/gui.cc:2106 +#: src/gui/gui.cc:2132 msgid "Enable SIO1 Client" msgstr "Увімкнути SIO1-клієнт" -#: src/gui/gui.cc:2119 +#: src/gui/gui.cc:2145 msgid "" "This will activate a tcp client, that can connect\n" "to another PCSX-Redux server to relay information between tcp and sio1.\n" @@ -1865,75 +1835,75 @@ msgstr "" "сервером PCSX-Redux для передачі відомостей\n" "між TCP і SIO1. Докладно - Wikipedia." -#: src/gui/gui.cc:2123 +#: src/gui/gui.cc:2149 msgid "SIO1 Client Host" msgstr "Хост SIO1-клієнта" -#: src/gui/gui.cc:2126 +#: src/gui/gui.cc:2152 msgid "SIO1 Client Port" msgstr "Порт SIO1-клієнта" -#: src/gui/gui.cc:2130 +#: src/gui/gui.cc:2156 msgid "Reset SIO" msgstr "Перезавантажити SIO" -#: src/gui/gui.cc:2141 +#: src/gui/gui.cc:2167 msgid "Reconnect" msgstr "Перез'єднати" -#: src/gui/gui.cc:2154 +#: src/gui/gui.cc:2180 msgid "SIO1Mode" msgstr "SIO1-режим" -#: src/gui/gui.cc:2212 +#: src/gui/gui.cc:2238 msgid "Interrupt Scaler" msgstr "Скалер переривань" -#: src/gui/gui.cc:2213 +#: src/gui/gui.cc:2239 msgid "Reset all" msgstr "Відновити все" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Cherry##Theme name" msgstr "Вишня##Ім'я теми" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Classic##Theme name" msgstr "Класична##Ім'я теми" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Default theme##Theme name" msgstr "Типова##Ім'я теми" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Light##Theme name" msgstr "Світло##Ім'я теми" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Dracula##Theme name" msgstr "Дракула##Ім'я теми" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Mono##Theme name" msgstr "Моно##Ім'я теми" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Olive##Theme name" msgstr "Олива##Ім'я теми" -#: src/gui/gui.cc:2235 +#: src/gui/gui.cc:2261 msgid "Themes" msgstr "Теми" -#: src/gui/gui.cc:2266 src/gui/gui.cc:2340 +#: src/gui/gui.cc:2292 src/gui/gui.cc:2366 msgid "Version" msgstr "Версія" -#: src/gui/gui.cc:2271 +#: src/gui/gui.cc:2297 msgid "Copy to clipboard" msgstr "Копіювати до буфера обміну" -#: src/gui/gui.cc:2277 +#: src/gui/gui.cc:2303 msgid "" "No version information.\n" "\n" @@ -1943,42 +1913,42 @@ msgstr "" "\n" "Імовірно, зібрано з джерела." -#: src/gui/gui.cc:2279 src/gui/gui.cc:2357 +#: src/gui/gui.cc:2305 src/gui/gui.cc:2383 #, c-format msgid "Version: %s" msgstr "Версія: %s" -#: src/gui/gui.cc:2280 +#: src/gui/gui.cc:2306 #, c-format msgid "Changeset: %s" msgstr "Набір змін: %s" -#: src/gui/gui.cc:2283 +#: src/gui/gui.cc:2309 #, c-format msgid "Date & time: %s" msgstr "Дата та час: %s" -#: src/gui/gui.cc:2292 +#: src/gui/gui.cc:2318 msgid "Authors" msgstr "Автори" -#: src/gui/gui.cc:2300 +#: src/gui/gui.cc:2326 msgid "Licenses" msgstr "Ліцензії" -#: src/gui/gui.cc:2312 +#: src/gui/gui.cc:2338 msgid "OpenGL information" msgstr "Відомості Open GL" -#: src/gui/gui.cc:2314 +#: src/gui/gui.cc:2340 msgid "OpenGL error reporting: enabled" msgstr "Увімкнено звітність помилок Open GL." -#: src/gui/gui.cc:2316 +#: src/gui/gui.cc:2342 msgid "OpenGL error reporting: disabled" msgstr "Вимкнено звітність помилок Open GL." -#: src/gui/gui.cc:2319 +#: src/gui/gui.cc:2345 msgid "" "OpenGL error reporting has been disabled because your OpenGL driver is too " "old. Error reporting requires at least OpenGL 4.3. Please update your " @@ -1993,11 +1963,11 @@ msgstr "" "продуктивність програмного забезпечення, але код користувача, наприклад, " "редактор шейдерів, не зможе належно точно повідомляти проблеми." -#: src/gui/gui.cc:2327 +#: src/gui/gui.cc:2353 msgid "Enable OpenGL error reporting" msgstr "Увімкнути звітність помилок Open GL" -#: src/gui/gui.cc:2330 +#: src/gui/gui.cc:2356 msgid "" "OpenGL error reporting is necessary for properly reporting OpenGL problems. " "However it requires OpenGL 4.3+ and might have performance repercussions on " @@ -2007,70 +1977,70 @@ msgstr "" " необхідний Open GL 4.3+, і можливий вплив на продуктивність деяких " "комп'ютерів (необхідний перезапуск емулятора)." -#: src/gui/gui.cc:2334 +#: src/gui/gui.cc:2360 msgid "OpenGL error reporting severity" msgstr "Ретельність звітності помилок Open GL" -#: src/gui/gui.cc:2337 +#: src/gui/gui.cc:2363 #, c-format msgid "Core profile: %s" msgstr "Профіль ядра: %s." -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "no" msgstr "ні" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "yes" msgstr "так" -#: src/gui/gui.cc:2338 +#: src/gui/gui.cc:2364 msgid "Vendor" msgstr "Виробник" -#: src/gui/gui.cc:2339 +#: src/gui/gui.cc:2365 msgid "Renderer" msgstr "Опрацьовувач" -#: src/gui/gui.cc:2341 +#: src/gui/gui.cc:2367 msgid "Shading language version" msgstr "Версія мови шейдера" -#: src/gui/gui.cc:2344 +#: src/gui/gui.cc:2370 #, c-format msgid "Texture units: %d" -msgstr "Блоки текстур: %d." +msgstr "Блоки текстур: %d" -#: src/gui/gui.cc:2347 +#: src/gui/gui.cc:2373 msgid "Extensions:" msgstr "Розширення:" -#: src/gui/gui.cc:2356 +#: src/gui/gui.cc:2382 msgid "FFmpeg information" msgstr "FFmpeg-відомості" -#: src/gui/gui.cc:2358 +#: src/gui/gui.cc:2384 #, c-format msgid "License: %s" msgstr "Ліцензія: %s." -#: src/gui/gui.cc:2359 +#: src/gui/gui.cc:2385 #, c-format msgid "Configuration: %s" msgstr "Конфігурація: %s." -#: src/gui/gui.cc:2362 +#: src/gui/gui.cc:2388 msgid "List of supported formats:" msgstr "Перелік підтримуваних форматів:" -#: src/gui/gui.cc:2380 +#: src/gui/gui.cc:2406 msgid "" "List of supported codecs: (D: Decoder, E: Encoder, L: Lossy, S: Lossless)" msgstr "" "Перелік підтримуваних кодеків: (D: Декодер, E: Кодувальник, L: Утратно, S: " "Без утрат)" -#: src/gui/gui.cc:2420 +#: src/gui/gui.cc:2446 #, c-format msgid "%s codecs" msgstr "%s-кодеки" @@ -2160,38 +2130,68 @@ msgstr "Тріо" msgid "Mask type" msgstr "Тип маски" -#: src/gui/widgets/assembly.cc:443 +#: src/gui/widgets/assembly.cc:334 +msgid "Go to in Memory Editor #1 (Default Click)" +msgstr "Перейти до редактора пам'яті 1 (типове натискання)" + +#: src/gui/widgets/assembly.cc:335 +msgid "Go to in Memory Editor #2 (Shift+Click)" +msgstr "Перейти до редактора пам'яті 2 (Shift + натискання)" + +#: src/gui/widgets/assembly.cc:336 +msgid "Go to in Memory Editor #3 (Ctrl+Click)" +msgstr "Перейти до редактора пам'яті 3 (Ctrl + натискання)" + +#: src/gui/widgets/assembly.cc:339 +msgid "Go to in Memory Editor #{}" +msgstr "Перейти до редактора пам'яті #{}" + +#: src/gui/widgets/assembly.cc:346 +msgid "Go to in Memory Editor..." +msgstr "Перейти до редактора пам'яті..." + +#: src/gui/widgets/assembly.cc:394 +#, c-format +msgid "Go to in Memory Editor #%d" +msgstr "Перейти до редактора пам'яті %d" + +#: src/gui/widgets/assembly.cc:455 +#, c-format +msgid "Go to in Memory Editor #%u" +msgstr "Перейти до редактора пам'яті %u" + +#: src/gui/widgets/assembly.cc:478 msgid "Load symbols map" msgstr "Завантажити мапу символів" -#: src/gui/widgets/assembly.cc:444 +#: src/gui/widgets/assembly.cc:479 msgid "Reset symbols map" msgstr "Відновити мапу символів" -#: src/gui/widgets/assembly.cc:450 src/gui/widgets/assembly.cc:525 +#: src/gui/widgets/assembly.cc:485 src/gui/widgets/assembly.cc:560 msgid "Pause" msgstr "Призупинити" -#: src/gui/widgets/assembly.cc:451 src/gui/widgets/assembly.cc:527 +#: src/gui/widgets/assembly.cc:486 src/gui/widgets/assembly.cc:562 #: src/gui/widgets/gpulogger.cc:47 msgid "Resume" msgstr "Продовжити" -#: src/gui/widgets/assembly.cc:453 src/gui/widgets/assembly.cc:529 +#: src/gui/widgets/assembly.cc:488 src/gui/widgets/assembly.cc:564 msgid "Step In" msgstr "Увійти" #. Options, Filter -#: src/gui/widgets/assembly.cc:459 src/gui/widgets/console.cc:53 +#: src/gui/widgets/assembly.cc:494 src/gui/widgets/console.cc:53 #: src/gui/widgets/dynarec_disassembly.cc:106 msgid "Options" msgstr "Опції" -#: src/gui/widgets/assembly.cc:460 +#: src/gui/widgets/assembly.cc:495 msgid "Combined pseudo-instructions" msgstr "Об'єднані псевдовказівки" -#: src/gui/widgets/assembly.cc:465 +#: src/gui/widgets/assembly.cc:500 msgid "" "When two instructions are detected to be a single pseudo-instruction, " "combine them into the actual pseudo-instruction." @@ -2199,11 +2199,11 @@ msgstr "" "При виявленні двох указівок як однієї псевдовказівки, об'єднай їх до " "справжньої псевдовказівки." -#: src/gui/widgets/assembly.cc:470 +#: src/gui/widgets/assembly.cc:505 msgid "Pseudo-instructions filling" msgstr "Заповнення псевдовказівок" -#: src/gui/widgets/assembly.cc:475 +#: src/gui/widgets/assembly.cc:510 msgid "" "When combining two instructions into a single pseudo-instruction, add a " "placeholder for the second one." @@ -2211,88 +2211,84 @@ msgstr "" "При об'єднанні двох указівок до однієї псевдовказівки додай заповнювач для " "другої." -#: src/gui/widgets/assembly.cc:480 +#: src/gui/widgets/assembly.cc:515 msgid "Delay slot notch" msgstr "Позначка слота затримки" -#: src/gui/widgets/assembly.cc:485 +#: src/gui/widgets/assembly.cc:520 msgid "" "Add a small visible notch to indicate instructions that are on the delay " "slot of a branch." msgstr "Додай невелику видиму позначку для вказівок у слоті затримки гілки." -#: src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:524 msgid "Draw arrows for jumps" msgstr "Показувати стрілки переходів" -#: src/gui/widgets/assembly.cc:493 +#: src/gui/widgets/assembly.cc:528 msgid "Display arrows for jumps. This might crowd the display a bit too much." msgstr "Відображення стрілок переходів. Може перевантажити дисплей." -#: src/gui/widgets/assembly.cc:497 +#: src/gui/widgets/assembly.cc:532 msgid "Columns" msgstr "Стовпці" -#: src/gui/widgets/assembly.cc:516 src/gui/widgets/log.cc:111 +#: src/gui/widgets/assembly.cc:551 src/gui/widgets/log.cc:111 msgid "CPU trace" msgstr "Відстеження CPU" -#: src/gui/widgets/assembly.cc:518 +#: src/gui/widgets/assembly.cc:553 msgid "Skip ISR" msgstr "Пропустити ISR" -#: src/gui/widgets/assembly.cc:520 +#: src/gui/widgets/assembly.cc:555 msgid "Follow PC" msgstr "Відстежити PC" -#: src/gui/widgets/assembly.cc:522 +#: src/gui/widgets/assembly.cc:557 msgid "Jump to PC" msgstr "Перейти до PC" -#: src/gui/widgets/assembly.cc:535 +#: src/gui/widgets/assembly.cc:570 #, c-format msgid "In ISR: %s" msgstr "В ISR: %s." -#: src/gui/widgets/assembly.cc:709 src/gui/widgets/assembly.cc:737 +#: src/gui/widgets/assembly.cc:744 src/gui/widgets/assembly.cc:770 #: src/gui/widgets/breakpoints.cc:171 msgid "GUI" msgstr "Графічний інтерфейс користувача" -#: src/gui/widgets/assembly.cc:718 +#: src/gui/widgets/assembly.cc:753 msgid "Create symbol here" msgstr "Створити символ" -#: src/gui/widgets/assembly.cc:723 +#: src/gui/widgets/assembly.cc:758 msgid "Remove symbol" msgstr "Вилучити символ" -#: src/gui/widgets/assembly.cc:727 +#: src/gui/widgets/assembly.cc:762 msgid "Copy Address" msgstr "Копіювати адресу" -#: src/gui/widgets/assembly.cc:732 src/gui/widgets/registers.cc:39 -msgid "Go to in Memory Editor" -msgstr "Перейти до редактора пам'яті" - -#: src/gui/widgets/assembly.cc:735 +#: src/gui/widgets/assembly.cc:768 msgid "Run to Cursor" msgstr "Запустити до курсора" -#: src/gui/widgets/assembly.cc:744 +#: src/gui/widgets/assembly.cc:777 msgid "Toggle Breakpoint" msgstr "Перемкнути точку зупинки" -#: src/gui/widgets/assembly.cc:748 src/gui/widgets/assembly.cc:753 +#: src/gui/widgets/assembly.cc:781 src/gui/widgets/assembly.cc:786 msgid "Remove Breakpoint" msgstr "Вилучити точку зупинки" -#: src/gui/widgets/assembly.cc:757 src/gui/widgets/assembly.cc:954 -#: src/gui/widgets/assembly.cc:956 src/gui/widgets/assembly.cc:962 +#: src/gui/widgets/assembly.cc:790 src/gui/widgets/assembly.cc:987 +#: src/gui/widgets/assembly.cc:989 src/gui/widgets/assembly.cc:995 msgid "Assemble" msgstr "Зібрати" -#: src/gui/widgets/assembly.cc:887 src/gui/widgets/breakpoints.cc:153 +#: src/gui/widgets/assembly.cc:920 src/gui/widgets/breakpoints.cc:153 #: src/gui/widgets/memory_observer.cc:170 #: src/gui/widgets/memory_observer.cc:328 #: src/gui/widgets/memory_observer.cc:424 @@ -2300,56 +2296,56 @@ msgstr "Зібрати" msgid "Address" msgstr "Адреса" -#: src/gui/widgets/assembly.cc:901 +#: src/gui/widgets/assembly.cc:934 msgid "RAM base" msgstr "RAM-основа" -#: src/gui/widgets/assembly.cc:910 src/gui/widgets/assembly.cc:1011 +#: src/gui/widgets/assembly.cc:943 src/gui/widgets/assembly.cc:1044 msgid "Symbols" msgstr "Символи" -#: src/gui/widgets/assembly.cc:936 src/gui/widgets/assembly.cc:938 +#: src/gui/widgets/assembly.cc:969 src/gui/widgets/assembly.cc:971 msgid "Add symbol" msgstr "Додати символ" -#: src/gui/widgets/assembly.cc:939 +#: src/gui/widgets/assembly.cc:972 #, c-format msgid "Add symbol for address 0x%08x:" msgstr "Додати символ для адреси 0x%08x:" -#: src/gui/widgets/assembly.cc:941 +#: src/gui/widgets/assembly.cc:974 msgid "Add" msgstr "Додати" -#: src/gui/widgets/assembly.cc:957 +#: src/gui/widgets/assembly.cc:990 #, c-format msgid "Assemble code for address 0x%08x:" msgstr "Зібрати код для адреси 0x%08x:" #. Clear items button -#: src/gui/widgets/assembly.cc:982 src/gui/widgets/console.cc:39 +#: src/gui/widgets/assembly.cc:1015 src/gui/widgets/console.cc:39 #: src/gui/widgets/dynarec_disassembly.cc:90 src/gui/widgets/log.cc:128 #: src/gui/widgets/pio-cart.cc:41 src/gui/widgets/typed_debugger.cc:827 msgid "Clear" msgstr "Очистити" -#: src/gui/widgets/assembly.cc:984 src/gui/widgets/dynarec_disassembly.cc:73 +#: src/gui/widgets/assembly.cc:1017 src/gui/widgets/dynarec_disassembly.cc:73 msgid "Close" msgstr "Закрити" -#: src/gui/widgets/assembly.cc:1012 +#: src/gui/widgets/assembly.cc:1045 msgid "Refresh" msgstr "Оновити" -#: src/gui/widgets/assembly.cc:1014 +#: src/gui/widgets/assembly.cc:1047 msgid "Filter" msgstr "Фільтр" -#: src/gui/widgets/assembly.cc:1028 +#: src/gui/widgets/assembly.cc:1061 msgid "Code##{}{:08x}" msgstr "Код##{}{:08x}" -#: src/gui/widgets/assembly.cc:1029 +#: src/gui/widgets/assembly.cc:1062 msgid "Data##{}{:08x}" msgstr "Дані##{}{:08x}" @@ -2987,7 +2983,7 @@ msgstr "Карта пам'яті 2" msgid "Import Memory Card file" msgstr "Імпорт файлу карти пам'яті" -#: src/gui/widgets/memcard_manager.h:78 +#: src/gui/widgets/memcard_manager.h:77 msgid "Export Memory Card file" msgstr "Експорт файлу карти пам'яті" @@ -3166,6 +3162,10 @@ msgstr "Контекст##{}" msgid "Go to in Assembly" msgstr "Перейти до збору" +#: src/gui/widgets/registers.cc:39 +msgid "Go to in Memory Editor" +msgstr "Перейти до редактора пам'яті" + #: src/gui/widgets/registers.cc:42 msgid "Copy Value" msgstr "Копіювати значення" @@ -3639,118 +3639,6 @@ msgstr "" "Активація SPU IRQ на основі запису до буфера декодування / захоплення. " "Необхідно для деяких ігор." -#: src/spu/debug.cc:62 +#: src/spu/debug.cc:581 msgid "SPU Debug" msgstr "SPU-налагодження" - -#: src/spu/debug.cc:84 -msgid "Mute all" -msgstr "Притлумити всі" - -#: src/spu/debug.cc:90 -msgid "Unmute all" -msgstr "Повернути всі" - -#: src/spu/debug.cc:104 -msgid "ADSR channel info" -msgstr "Відомості ADSR-каналу" - -#: src/spu/debug.cc:107 -msgid "" -"Attack:\n" -"Decay:\n" -"Sustain:\n" -"Release:" -msgstr "" -"Посилення:\n" -"Послаблення:\n" -"Стійкість:\n" -"Випуск:" - -#: src/spu/debug.cc:115 -msgid "" -"Sustain level:\n" -"Sustain inc:\n" -"Curr adsr vol:\n" -"Raw enveloppe" -msgstr "" -"Рівень стійкості:\n" -"Приріст стійкості:\n" -"Гучність поточного ADSR:\n" -"Оболонка основи" - -#: src/spu/debug.cc:123 -msgid "Generic channel info" -msgstr "Загальні відомості каналу" - -#: src/spu/debug.cc:127 -msgid "" -"On:\n" -"Stop:\n" -"Noise:\n" -"FMod:\n" -"Reverb:\n" -"Rvb active:\n" -"Rvb number:\n" -"Rvb offset:\n" -"Rvb repeat:" -msgstr "" -"Відтворення:\n" -"Зупинка:\n" -"Шум:\n" -"FMod:\n" -"Відлуння:\n" -"Активність відлуння:\n" -"Номер відлуння:\n" -"Зміщення відлуння:\n" -"Повтор відлуння:" - -#: src/spu/debug.cc:138 -msgid "" -"Start pos:\n" -"Curr pos:\n" -"Loop pos:\n" -"\n" -"Right vol:\n" -"Left vol:\n" -"\n" -"Act freq:\n" -"Used freq:" -msgstr "" -"Початкове положення:\n" -"Поточне положення:\n" -"Циклічне положення:\n" -"\n" -"Гучність праворуч:\n" -"Гучність ліворуч:\n" -"\n" -"Фактична частота:\n" -"Користувацька частота:" - -#: src/spu/debug.cc:150 -msgid "" -"Freq:\n" -"Stereo:\n" -"Samples:\n" -"Volume:\n" -msgstr "" -"Частота:\n" -"Стерео:\n" -"Зразки:\n" -"Гучність:\n" - -#: src/spu/debug.cc:159 -msgid "Spu states" -msgstr "SPU-стани" - -#: src/spu/debug.cc:160 -msgid "" -"Irq addr:\n" -"Ctrl:\n" -"Stat:\n" -"Spu mem:" -msgstr "" -"IRQ-адреса:\n" -"Керування:\n" -"Стан:\n" -"SPU-пам'ять:" diff --git a/i18n/zh_CN.po b/i18n/zh_CN.po index 5bb1db20f..2332a54f0 100644 --- a/i18n/zh_CN.po +++ b/i18n/zh_CN.po @@ -163,8 +163,8 @@ msgstr "写入 32 MAP" msgid "Step in" msgstr "Step in" -#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:454 -#: src/gui/widgets/assembly.cc:531 +#: src/core/debug.cc:178 src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:566 msgid "Step Over" msgstr "Step Over" @@ -181,20 +181,20 @@ msgstr "Step out (没有调用栈)" msgid "Breakpoint triggered: PC=0x%08x - Cause: %s %s\n" msgstr "断点触发:PC=0x%08x-原因:%s%s\n" -#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:455 -#: src/gui/widgets/assembly.cc:533 +#: src/core/debug.cc:319 src/gui/widgets/assembly.cc:490 +#: src/gui/widgets/assembly.cc:568 msgid "Step Out" msgstr "Step Out" -#: src/core/debug.h:37 +#: src/core/debug.h:36 msgid "Exec" msgstr "执行" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:285 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:285 msgid "Read" msgstr "读" -#: src/core/debug.h:37 src/gui/widgets/typed_debugger.cc:287 +#: src/core/debug.h:36 src/gui/widgets/typed_debugger.cc:287 msgid "Write" msgstr "写" @@ -505,7 +505,7 @@ msgstr "未知键盘按键{0}" msgid "Keyboard {}" msgstr "键盘{0}" -#: src/core/pad.cc:986 src/gui/gui.cc:1993 +#: src/core/pad.cc:986 src/gui/gui.cc:2019 msgid "Auto" msgstr "自动" @@ -803,67 +803,37 @@ msgstr "检测到OpenBIOS(%08x)\n" msgid "Unknown bios loaded (%08x)\n" msgstr "检测到未知的BIOS(%08x)\n" -#: src/core/psxmem.cc:276 -#, c-format -msgid "8-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:283 +#: src/core/psxmem.cc:282 #, c-format msgid "8-bit read from unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:313 -#, c-format -msgid "16-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:316 +#: src/core/psxmem.cc:314 #, c-format msgid "16-bit read from unknown address: %8.8lx\n" msgstr "" #: src/core/psxmem.cc:348 #, c-format -msgid "32-bit read redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:351 -#, c-format msgid "32-bit read from unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:452 -#, c-format -msgid "8-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:455 +#: src/core/psxmem.cc:451 #, c-format msgid "8-bit write to unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:482 -#, c-format -msgid "16-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:485 +#: src/core/psxmem.cc:480 #, c-format msgid "16-bit write to unknown address: %8.8lx\n" msgstr "" -#: src/core/psxmem.cc:523 +#: src/core/psxmem.cc:518 #, fuzzy, c-format msgid "Unknown BIU value: %8.8lx\n" msgstr "检测到未知的BIOS(%08x)\n" -#: src/core/psxmem.cc:530 -#, c-format -msgid "32-bit write redirected to Lua for address: %8.8lx\n" -msgstr "" - -#: src/core/psxmem.cc:533 +#: src/core/psxmem.cc:527 #, c-format msgid "32-bit write to unknown address: %8.8lx\n" msgstr "" @@ -1001,204 +971,204 @@ msgstr "BIOS" msgid "VRAM" msgstr "显存" -#: src/gui/gui.cc:1055 +#: src/gui/gui.cc:1081 msgid "Output" msgstr "输出" -#: src/gui/gui.cc:1080 src/gui/widgets/assembly.cc:442 +#: src/gui/gui.cc:1106 src/gui/widgets/assembly.cc:477 #: src/gui/widgets/isobrowser.cc:66 src/gui/widgets/memcard_manager.cc:63 #: src/gui/widgets/vram-viewer.cc:482 msgid "File" msgstr "文件" -#: src/gui/gui.cc:1081 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 +#: src/gui/gui.cc:1107 src/gui/gui.h:377 src/gui/widgets/isobrowser.cc:67 #: src/gui/widgets/isobrowser.h:50 msgid "Open Disk Image" msgstr "打开磁盘文件" -#: src/gui/gui.cc:1082 src/gui/widgets/isobrowser.cc:68 +#: src/gui/gui.cc:1108 src/gui/widgets/isobrowser.cc:68 msgid "Close Disk Image" msgstr "关闭磁盘文件" -#: src/gui/gui.cc:1086 +#: src/gui/gui.cc:1112 msgid "Load binary" msgstr "加载二进制程序" -#: src/gui/gui.cc:1089 +#: src/gui/gui.cc:1115 msgid "Add Lua archive" msgstr "" -#: src/gui/gui.cc:1093 +#: src/gui/gui.cc:1119 msgid "Dump save state proto schema" msgstr "Dump 存档原始文件" -#: src/gui/gui.cc:1098 +#: src/gui/gui.cc:1124 msgid "global{}" msgstr "" -#: src/gui/gui.cc:1100 +#: src/gui/gui.cc:1126 msgid "Save state slots" msgstr "保存存档至存档槽" -#: src/gui/gui.cc:1101 +#: src/gui/gui.cc:1127 msgid "Quick-save slot" msgstr "快速存档" -#: src/gui/gui.cc:1106 src/gui/gui.cc:1127 +#: src/gui/gui.cc:1132 src/gui/gui.cc:1153 msgid "Slot {}" msgstr "槽 {0}" -#: src/gui/gui.cc:1113 +#: src/gui/gui.cc:1139 msgid "Show named save states" msgstr "" -#: src/gui/gui.cc:1118 +#: src/gui/gui.cc:1144 msgid "Save global state" msgstr "保存全局存档" -#: src/gui/gui.cc:1120 +#: src/gui/gui.cc:1146 msgid "Load state slots" msgstr "加载存档槽" -#: src/gui/gui.cc:1123 +#: src/gui/gui.cc:1149 #, fuzzy msgid "Quick-load slot" msgstr "快速存档" -#: src/gui/gui.cc:1148 +#: src/gui/gui.cc:1174 msgid "Load global state" msgstr "加载全局存档" -#: src/gui/gui.cc:1152 +#: src/gui/gui.cc:1178 msgid "Open LID" msgstr "打开 PS光盘盖" -#: src/gui/gui.cc:1156 +#: src/gui/gui.cc:1182 msgid "Close LID" msgstr "关闭 PS光盘盖" -#: src/gui/gui.cc:1160 +#: src/gui/gui.cc:1186 msgid "Open and close LID" msgstr "打开和关闭 PS光盘盖" -#: src/gui/gui.cc:1165 +#: src/gui/gui.cc:1191 msgid "Reboot" msgstr "重启" -#: src/gui/gui.cc:1168 +#: src/gui/gui.cc:1194 msgid "Quit" msgstr "退出" -#: src/gui/gui.cc:1174 src/gui/gui.cc:1191 +#: src/gui/gui.cc:1200 src/gui/gui.cc:1217 msgid "Emulation" msgstr "模拟" -#: src/gui/gui.cc:1175 +#: src/gui/gui.cc:1201 msgid "Start emulation" msgstr "开始模拟" -#: src/gui/gui.cc:1178 +#: src/gui/gui.cc:1204 msgid "Pause emulation" msgstr "暂停模拟" -#: src/gui/gui.cc:1181 +#: src/gui/gui.cc:1207 msgid "Soft Reset" msgstr "软重启" -#: src/gui/gui.cc:1184 +#: src/gui/gui.cc:1210 msgid "Hard Reset" msgstr "硬重启" -#: src/gui/gui.cc:1190 src/gui/widgets/vram-viewer.cc:520 +#: src/gui/gui.cc:1216 src/gui/widgets/vram-viewer.cc:520 msgid "Configuration" msgstr "设置" -#: src/gui/gui.cc:1192 +#: src/gui/gui.cc:1218 msgid "Manage Memory Cards" msgstr "管理记忆卡" -#: src/gui/gui.cc:1195 src/gui/gui.cc:1295 +#: src/gui/gui.cc:1221 src/gui/gui.cc:1321 msgid "GPU" msgstr "GPU" -#: src/gui/gui.cc:1196 src/gui/gui.cc:1311 +#: src/gui/gui.cc:1222 src/gui/gui.cc:1337 msgid "SPU" msgstr "SPU" -#: src/gui/gui.cc:1197 +#: src/gui/gui.cc:1223 msgid "UI" msgstr "UI" -#: src/gui/gui.cc:1198 +#: src/gui/gui.cc:1224 msgid "System" msgstr "系统" -#: src/gui/gui.cc:1199 +#: src/gui/gui.cc:1225 msgid "Controls" msgstr "控制" -#: src/gui/gui.cc:1200 +#: src/gui/gui.cc:1226 msgid "Shader presets" msgstr "着色器预设" -#: src/gui/gui.cc:1201 +#: src/gui/gui.cc:1227 msgid "Default shader" msgstr "默认渲染器" -#: src/gui/gui.cc:1204 +#: src/gui/gui.cc:1230 msgid "CRT-lottes shader" msgstr "CRT-lottes 渲染器" -#: src/gui/gui.cc:1231 +#: src/gui/gui.cc:1257 msgid "Configure Shaders" msgstr "设置渲染器" -#: src/gui/gui.cc:1235 +#: src/gui/gui.cc:1261 msgid "PIO Cartridge" msgstr "" -#: src/gui/gui.cc:1239 src/gui/widgets/assembly.cc:449 +#: src/gui/gui.cc:1265 src/gui/widgets/assembly.cc:484 msgid "Debug" msgstr "调试" -#: src/gui/gui.cc:1240 +#: src/gui/gui.cc:1266 msgid "Show Logs" msgstr "打开日志" -#: src/gui/gui.cc:1241 +#: src/gui/gui.cc:1267 msgid "Lua" msgstr "" -#: src/gui/gui.cc:1242 +#: src/gui/gui.cc:1268 msgid "Show Lua Console" msgstr "打开 Lua 控制台" -#: src/gui/gui.cc:1243 +#: src/gui/gui.cc:1269 msgid "Show Lua Inspector" msgstr "打开 Lua 检查器" -#: src/gui/gui.cc:1244 +#: src/gui/gui.cc:1270 msgid "Show Lua editor" msgstr "打开 Lua 编辑器" -#: src/gui/gui.cc:1248 +#: src/gui/gui.cc:1274 #, fuzzy msgid "CPU" msgstr "GPU" -#: src/gui/gui.cc:1249 +#: src/gui/gui.cc:1275 msgid "Show Registers" msgstr "打开寄存器" -#: src/gui/gui.cc:1250 +#: src/gui/gui.cc:1276 msgid "Show Assembly" msgstr "打开汇编调试器" -#: src/gui/gui.cc:1252 src/gui/gui.cc:1254 +#: src/gui/gui.cc:1278 src/gui/gui.cc:1280 msgid "Show DynaRec Disassembly" msgstr "打开 DynaRec 反汇编器" -#: src/gui/gui.cc:1256 +#: src/gui/gui.cc:1282 msgid "" "DynaRec Disassembler is not available in Interpreted CPU mode. Try enabling " "[Dynarec CPU]\n" @@ -1207,278 +1177,278 @@ msgstr "" "DynaRec 反汇编程序在Interpreted CPU 模式下不可用\n" "请在设置->模拟中打开 [Dynarec CPU]并重启PCSX-Redux 后重试" -#: src/gui/gui.cc:1259 +#: src/gui/gui.cc:1285 msgid "Show Breakpoints" msgstr "显示断点" -#: src/gui/gui.cc:1260 +#: src/gui/gui.cc:1286 msgid "Show Callstacks" msgstr "显示调用堆栈" -#: src/gui/gui.cc:1261 +#: src/gui/gui.cc:1287 msgid "Memory Editors" msgstr "内存编辑器" -#: src/gui/gui.cc:1272 +#: src/gui/gui.cc:1298 msgid "Show Memory Observer" msgstr "打开内存观察器" -#: src/gui/gui.cc:1273 +#: src/gui/gui.cc:1299 msgid "Show Typed Debugger" msgstr "显示 Typed Debugger" -#: src/gui/gui.cc:1274 +#: src/gui/gui.cc:1300 msgid "Show Interrupts Scaler" msgstr "显示中断定标器" -#: src/gui/gui.cc:1275 +#: src/gui/gui.cc:1301 msgid "First Chance Exceptions" msgstr "First Chance Exceptions" -#: src/gui/gui.cc:1296 +#: src/gui/gui.cc:1322 msgid "VRAM viewers" msgstr "显存(VRAM)查看器" -#: src/gui/gui.cc:1297 +#: src/gui/gui.cc:1323 msgid "Show main VRAM viewer" msgstr "打开主显存(VRAM)查看器" -#: src/gui/gui.cc:1298 +#: src/gui/gui.cc:1324 msgid "Show CLUT VRAM viewer" msgstr "打开显存颜色表(CLUT)查看器" -#: src/gui/gui.cc:1301 +#: src/gui/gui.cc:1327 msgid "Show VRAM viewer #" msgstr "打开显存查看器 #" -#: src/gui/gui.cc:1307 +#: src/gui/gui.cc:1333 #, fuzzy msgid "Show GPU logger" msgstr "打开 GPU 调试" -#: src/gui/gui.cc:1308 +#: src/gui/gui.cc:1334 msgid "Show GPU debug" msgstr "打开 GPU 调试" -#: src/gui/gui.cc:1312 +#: src/gui/gui.cc:1338 msgid "Show SPU debug" msgstr "打开 SPU 调试" -#: src/gui/gui.cc:1315 +#: src/gui/gui.cc:1341 msgid "CD-Rom" msgstr "" -#: src/gui/gui.cc:1316 +#: src/gui/gui.cc:1342 msgid "Show Iso Browser" msgstr "" -#: src/gui/gui.cc:1319 +#: src/gui/gui.cc:1345 msgid "Misc hardware" msgstr "" -#: src/gui/gui.cc:1320 +#: src/gui/gui.cc:1346 msgid "Show SIO1 debug" msgstr "打开 SIO1 调试" -#: src/gui/gui.cc:1324 +#: src/gui/gui.cc:1350 #, fuzzy msgid "Kernel" msgstr "内核调用" -#: src/gui/gui.cc:1325 +#: src/gui/gui.cc:1351 msgid "Kernel Events" msgstr "内核事件" -#: src/gui/gui.cc:1326 +#: src/gui/gui.cc:1352 msgid "Kernel Handlers" msgstr "内核处理程序" -#: src/gui/gui.cc:1327 src/gui/gui.cc:1473 +#: src/gui/gui.cc:1353 src/gui/gui.cc:1499 msgid "Kernel Calls" msgstr "内核调用" -#: src/gui/gui.cc:1330 +#: src/gui/gui.cc:1356 #, fuzzy msgid "Rendering" msgstr "渲染器" -#: src/gui/gui.cc:1331 +#: src/gui/gui.cc:1357 #, fuzzy msgid "Full window render" msgstr "全屏渲染" -#: src/gui/gui.cc:1334 +#: src/gui/gui.cc:1360 #, fuzzy msgid "Fullscreen" msgstr "全屏渲染" -#: src/gui/gui.cc:1338 +#: src/gui/gui.cc:1364 msgid "Show Output Shader Editor" msgstr "打开渲染器输出编辑器" -#: src/gui/gui.cc:1339 +#: src/gui/gui.cc:1365 msgid "Show Offscreen Shader Editor" msgstr "显示离屏着色器编辑器" -#: src/gui/gui.cc:1340 +#: src/gui/gui.cc:1366 #, fuzzy msgid "Reset shaders" msgstr "重置 Scaler" -#: src/gui/gui.cc:1348 +#: src/gui/gui.cc:1374 msgid "Help" msgstr "帮助" -#: src/gui/gui.cc:1349 +#: src/gui/gui.cc:1375 msgid "Show ImGui Demo" msgstr "打开 ImGUI Demo" -#: src/gui/gui.cc:1351 +#: src/gui/gui.cc:1377 msgid "Show UvFile information" msgstr "显示 UvFile 信息" -#: src/gui/gui.cc:1353 src/gui/gui.cc:2258 +#: src/gui/gui.cc:1379 src/gui/gui.cc:2284 msgid "About" msgstr "关于" -#: src/gui/gui.cc:1358 +#: src/gui/gui.cc:1384 #, c-format msgid "CPU: %s" msgstr "CPU:%s" -#: src/gui/gui.cc:1360 src/gui/widgets/isobrowser.cc:102 +#: src/gui/gui.cc:1386 src/gui/widgets/isobrowser.cc:102 #, c-format msgid "GAME ID: %s" msgstr "游戏光盘ID:%s" -#: src/gui/gui.cc:1363 +#: src/gui/gui.cc:1389 #, c-format msgid "%.2f FPS (%.2f ms)" msgstr "%.2f FPS (%.2f ms)" -#: src/gui/gui.cc:1366 +#: src/gui/gui.cc:1392 #, c-format msgid "%.2f ms audio buffer (%i frames)" msgstr "%.2f ms 音频缓冲器 (%i 帧)" -#: src/gui/gui.cc:1368 +#: src/gui/gui.cc:1394 msgid "Idle" msgstr "闲置中" -#: src/gui/gui.cc:1449 +#: src/gui/gui.cc:1475 msgid "Logs" msgstr "日志" -#: src/gui/gui.cc:1455 +#: src/gui/gui.cc:1481 msgid "Lua Console" msgstr "Lua 控制台" -#: src/gui/gui.cc:1461 +#: src/gui/gui.cc:1487 msgid "Lua Inspector" msgstr "Lua 检查器" -#: src/gui/gui.cc:1464 +#: src/gui/gui.cc:1490 msgid "Lua Editor" msgstr "Lua 编辑器" -#: src/gui/gui.cc:1467 +#: src/gui/gui.cc:1493 msgid "Kernel events" msgstr "内核事件" -#: src/gui/gui.cc:1470 +#: src/gui/gui.cc:1496 msgid "Kernel handlers" msgstr "内核处理程序" -#: src/gui/gui.cc:1476 +#: src/gui/gui.cc:1502 msgid "Callstacks" msgstr "调用堆栈" -#: src/gui/gui.cc:1525 +#: src/gui/gui.cc:1551 msgid "Memory Card Manager" msgstr "记忆卡管理器" -#: src/gui/gui.cc:1529 src/gui/widgets/registers.cc:65 +#: src/gui/gui.cc:1555 src/gui/widgets/registers.cc:65 msgid "Registers" msgstr "寄存器" -#: src/gui/gui.cc:1533 +#: src/gui/gui.cc:1559 msgid "Assembly" msgstr "汇编" -#: src/gui/gui.cc:1537 +#: src/gui/gui.cc:1563 msgid "DynaRec Disassembler" msgstr "DynaRec 反汇编" -#: src/gui/gui.cc:1541 src/gui/widgets/breakpoints.cc:81 +#: src/gui/gui.cc:1567 src/gui/widgets/breakpoints.cc:81 #: src/gui/widgets/typed_debugger.cc:864 src/gui/widgets/typed_debugger.cc:910 #: src/gui/widgets/typed_debugger.cc:963 msgid "Breakpoints" msgstr "断点" -#: src/gui/gui.cc:1545 +#: src/gui/gui.cc:1571 #, fuzzy msgid "Named Save States" msgstr "保存存档至存档槽" -#: src/gui/gui.cc:1549 src/gui/widgets/memory_observer.cc:382 +#: src/gui/gui.cc:1575 src/gui/widgets/memory_observer.cc:382 #: src/gui/widgets/memory_observer.cc:388 msgid "Memory Observer" msgstr "内存观察器" -#: src/gui/gui.cc:1553 src/gui/widgets/typed_debugger.cc:1062 +#: src/gui/gui.cc:1579 src/gui/widgets/typed_debugger.cc:1062 msgid "Typed Debugger" msgstr "Typed 调试" -#: src/gui/gui.cc:1559 +#: src/gui/gui.cc:1585 msgid "Output Video" msgstr "输出视频" -#: src/gui/gui.cc:1564 +#: src/gui/gui.cc:1590 msgid "Offscreen Render" msgstr "离屏渲染器" -#: src/gui/gui.cc:1570 +#: src/gui/gui.cc:1596 #, fuzzy msgid "PIO Cartridge Configuration" msgstr "手柄配置" -#: src/gui/gui.cc:1574 +#: src/gui/gui.cc:1600 msgid "SIO1 Debug" msgstr "SIO1 调试" -#: src/gui/gui.cc:1578 +#: src/gui/gui.cc:1604 msgid "ISO Browser" msgstr "" -#: src/gui/gui.cc:1588 +#: src/gui/gui.cc:1614 msgid "GPU Logger" msgstr "" -#: src/gui/gui.cc:1591 +#: src/gui/gui.cc:1617 msgid "UI Configuration" msgstr "UI 配置" -#: src/gui/gui.cc:1597 +#: src/gui/gui.cc:1623 msgid "Locale" msgstr "本地化" -#: src/gui/gui.cc:1612 +#: src/gui/gui.cc:1638 msgid "Reload locales" msgstr "重新加载本地化翻译" -#: src/gui/gui.cc:1617 +#: src/gui/gui.cc:1643 msgid "Main Font Size" msgstr "主字体大小" -#: src/gui/gui.cc:1618 +#: src/gui/gui.cc:1644 msgid "Mono Font Size" msgstr "副字体大小" -#: src/gui/gui.cc:1620 +#: src/gui/gui.cc:1646 msgid "Use Widescreen Aspect Ratio" msgstr "使用宽屏长宽比" -#: src/gui/gui.cc:1621 +#: src/gui/gui.cc:1647 msgid "" "Sets the output screen ratio to 16:9 instead of 4:3.\n" "\n" @@ -1501,23 +1471,23 @@ msgstr "" "并要求用户更改设置\n" "他们的电视机以匹配游戏的长宽比。" -#: src/gui/gui.cc:1640 +#: src/gui/gui.cc:1666 msgid "System Configuration" msgstr "系统设置" -#: src/gui/gui.cc:1642 +#: src/gui/gui.cc:1668 msgid "Preload Disk Image files" msgstr "预加载磁盘映像文件" -#: src/gui/gui.cc:1643 +#: src/gui/gui.cc:1669 msgid "Enable Auto Update" msgstr "启动自动更新" -#: src/gui/gui.cc:1650 +#: src/gui/gui.cc:1676 msgid "Update configuration" msgstr "更新设置" -#: src/gui/gui.cc:1651 +#: src/gui/gui.cc:1677 msgid "" "PCSX-Redux can automatically update itself.\n" "\n" @@ -1543,19 +1513,19 @@ msgstr "" "\n" "你可以在设置 -> 系统 菜单中修改自动更新设置" -#: src/gui/gui.cc:1664 +#: src/gui/gui.cc:1690 msgid "Enable auto update" msgstr "启用自动更新" -#: src/gui/gui.cc:1670 +#: src/gui/gui.cc:1696 msgid "No thanks" msgstr "不,谢谢" -#: src/gui/gui.cc:1679 +#: src/gui/gui.cc:1705 msgid "Update available" msgstr "有新更新可用" -#: src/gui/gui.cc:1681 +#: src/gui/gui.cc:1707 msgid "" "An update is available.\n" "Click 'Update' to download and apply the update.\n" @@ -1570,7 +1540,7 @@ msgstr "" "\n" "单击“下载”来通过浏览器手动下载并安装" -#: src/gui/gui.cc:1688 +#: src/gui/gui.cc:1714 msgid "" "An update is available.\n" "Click 'Update' to download it. While the update can be\n" @@ -1587,90 +1557,90 @@ msgstr "" "\n" "单击“下载”通过浏览器手动下载并安装" -#: src/gui/gui.cc:1699 +#: src/gui/gui.cc:1725 msgid "Update" msgstr "更新" -#: src/gui/gui.cc:1711 src/gui/gui.cc:1716 +#: src/gui/gui.cc:1737 src/gui/gui.cc:1742 msgid "" "An error has occured while downloading\n" "and/or applying the update." msgstr "下载或安装更新时发生致命错误" -#: src/gui/gui.cc:1722 +#: src/gui/gui.cc:1748 msgid "Download" msgstr "下载" -#: src/gui/gui.cc:1732 +#: src/gui/gui.cc:1758 msgid "An error has occured while downloading the update." msgstr "下载更新时发生致命错误" -#: src/gui/gui.cc:1738 src/gui/widgets/assembly.cc:947 +#: src/gui/gui.cc:1764 src/gui/widgets/assembly.cc:980 #: src/gui/widgets/breakpoints.cc:38 src/gui/widgets/registers.cc:339 #: src/gui/widgets/sio1.cc:203 msgid "Cancel" msgstr "取消" -#: src/gui/gui.cc:1747 +#: src/gui/gui.cc:1773 msgid "UvFiles" msgstr "UvFiles" -#: src/gui/gui.cc:1750 +#: src/gui/gui.cc:1776 #, c-format msgid "Read rate: %s" msgstr "读取速度:%s" -#: src/gui/gui.cc:1752 +#: src/gui/gui.cc:1778 #, c-format msgid "Write rate: %s" msgstr "写入速度:%s" -#: src/gui/gui.cc:1754 +#: src/gui/gui.cc:1780 #, c-format msgid "Download rate: %s" msgstr "下载速度:%s" -#: src/gui/gui.cc:1756 +#: src/gui/gui.cc:1782 msgid "Caching" msgstr "缓存中" -#: src/gui/gui.cc:1757 src/gui/widgets/memcard_manager.cc:201 +#: src/gui/gui.cc:1783 src/gui/widgets/memcard_manager.cc:201 msgid "Filename" msgstr "文件名" -#: src/gui/gui.cc:1944 +#: src/gui/gui.cc:1970 msgid "Emulation Configuration" msgstr "模拟设置" -#: src/gui/gui.cc:1945 +#: src/gui/gui.cc:1971 msgid "Idle Swap Interval" msgstr "闲置 Swap Interval" -#: src/gui/gui.cc:1950 +#: src/gui/gui.cc:1976 msgid "Reset Scaler" msgstr "重置 Scaler" -#: src/gui/gui.cc:1956 +#: src/gui/gui.cc:1982 msgid "Speed Scaler" msgstr "Speed Scaler" -#: src/gui/gui.cc:1958 +#: src/gui/gui.cc:1984 msgid "Enable XA decoder" msgstr "启用 XA 解码器" -#: src/gui/gui.cc:1959 +#: src/gui/gui.cc:1985 msgid "Always enable SPU IRQ" msgstr "总是启用 SPU IRQ" -#: src/gui/gui.cc:1960 +#: src/gui/gui.cc:1986 msgid "Decode MDEC videos in B&W" msgstr "在B&W中解码 MDEC 视频" -#: src/gui/gui.cc:1961 +#: src/gui/gui.cc:1987 msgid "Dynarec CPU" msgstr "Dynarec CPU" -#: src/gui/gui.cc:1969 +#: src/gui/gui.cc:1995 msgid "" "Activates the dynamic recompiler CPU core.\n" "It is significantly faster than the interpreted CPU,\n" @@ -1686,11 +1656,11 @@ msgstr "" "且不支持所有的CPU型号\n" "所以此设置可能不适应你的电脑" -#: src/gui/gui.cc:1975 +#: src/gui/gui.cc:2001 msgid "8MB" msgstr "8MB 内存" -#: src/gui/gui.cc:1976 +#: src/gui/gui.cc:2002 msgid "" "Emulates an installed 8MB system,\n" "instead of the normal 2MB. Useful for working\n" @@ -1699,11 +1669,11 @@ msgstr "" "使用8MB 内存模式来代替原始的2MB 内存模式\n" "这对于开发程序或游戏来说很实用" -#: src/gui/gui.cc:1980 +#: src/gui/gui.cc:2006 msgid "OpenGL GPU *ALPHA STATE*" msgstr "OpenGL GPU *ALPHA STATE*" -#: src/gui/gui.cc:1981 +#: src/gui/gui.cc:2007 msgid "" "Enables the OpenGL GPU renderer.\n" "This is not recommended for normal use at the moment,\n" @@ -1716,23 +1686,23 @@ msgstr "" "推荐使用软件渲染模式\n" "更改此项目后需要重启才能生效" -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "NTSC" msgstr "NTSC 制式" -#: src/gui/gui.cc:1993 +#: src/gui/gui.cc:2019 msgid "PAL" msgstr "PAL 制式" -#: src/gui/gui.cc:1996 +#: src/gui/gui.cc:2022 msgid "System Type" msgstr "系统类型" -#: src/gui/gui.cc:2015 +#: src/gui/gui.cc:2041 msgid "Fast boot" msgstr "快速启动" -#: src/gui/gui.cc:2016 +#: src/gui/gui.cc:2042 msgid "" "This will cause the BIOS to skip the shell,\n" "which may include additional checks.\n" @@ -1742,15 +1712,15 @@ msgstr "" "这会使BIOS跳过可能会进行附加检查的shell\n" "同时也会取消播放PS logo来减少启动时间" -#: src/gui/gui.cc:2021 +#: src/gui/gui.cc:2047 msgid "BIOS file" msgstr "BIOS 文件" -#: src/gui/gui.cc:2025 src/gui/widgets/assembly.cc:507 +#: src/gui/gui.cc:2051 src/gui/widgets/assembly.cc:542 msgid "Enable Debugger" msgstr "启动调试" -#: src/gui/gui.cc:2032 +#: src/gui/gui.cc:2058 #, fuzzy msgid "" "This will enable the usage of various breakpoints\n" @@ -1760,11 +1730,11 @@ msgstr "" "这将允许在整个 mips 代码的执行过程中使用断点\n" "启用此功能可能会导致模拟效率显著降低" -#: src/gui/gui.cc:2035 +#: src/gui/gui.cc:2061 msgid "Enable GDB Server" msgstr "启用 GDB 服务器" -#: src/gui/gui.cc:2044 +#: src/gui/gui.cc:2070 msgid "" "This will activate a gdb-server that you can\n" "connect to with any gdb-remote compliant client.\n" @@ -1773,11 +1743,11 @@ msgstr "" "激活GDB服务端来允许任何gdb远程客户端连接\n" "此功能需要开启调试选项" -#: src/gui/gui.cc:2048 +#: src/gui/gui.cc:2074 msgid "GDB send manifest" msgstr "GDB send manifest" -#: src/gui/gui.cc:2049 +#: src/gui/gui.cc:2075 msgid "" "Enables sending the processor's manifest\n" "from the gdb server. Keep this enabled, unless\n" @@ -1789,19 +1759,19 @@ msgstr "" "you want to connect IDA to this server, as it\n" "has a bug in its manifest parser." -#: src/gui/gui.cc:2056 +#: src/gui/gui.cc:2082 msgid "PCSX Logs to GDB" msgstr "转发PCSX 日志到GDB" -#: src/gui/gui.cc:2072 +#: src/gui/gui.cc:2098 msgid "GDB Server Port" msgstr "GDB 服务端口" -#: src/gui/gui.cc:2074 +#: src/gui/gui.cc:2100 msgid "GDB Server Trace" msgstr "GDB 服务追踪" -#: src/gui/gui.cc:2075 +#: src/gui/gui.cc:2101 msgid "" "The GDB server will start tracing its\n" "protocol into the logs, which can be helpful to debug\n" @@ -1810,11 +1780,11 @@ msgstr "" "GDB 服务器将开始跟踪它的协议写入日志\n" "这有助于调试gdb 服务器系统本身。" -#: src/gui/gui.cc:2078 +#: src/gui/gui.cc:2104 msgid "Enable Web Server" msgstr "启用 Web 服务器" -#: src/gui/gui.cc:2087 +#: src/gui/gui.cc:2113 msgid "" "This will activate a web-server, that you can\n" "query using a REST api. See the wiki for details.\n" @@ -1823,15 +1793,15 @@ msgstr "" "启动Web服务器来允许你使用REST api查询\n" "详细信息请参考wiki,在某些情况下可能需要启动调试。" -#: src/gui/gui.cc:2091 +#: src/gui/gui.cc:2117 msgid "Web Server Port" msgstr "Web 服务器端口" -#: src/gui/gui.cc:2092 +#: src/gui/gui.cc:2118 msgid "Enable SIO1 Server" msgstr "启动 SIO1 服务器" -#: src/gui/gui.cc:2101 +#: src/gui/gui.cc:2127 msgid "" "This will activate a tcp server, that will\n" "relay information between tcp and sio1.\n" @@ -1840,15 +1810,15 @@ msgstr "" "激活TCP 服务器,允许在TCP和SIO1之间中继信息\n" "详细信息请参阅WIKI" -#: src/gui/gui.cc:2105 +#: src/gui/gui.cc:2131 msgid "SIO1 Server Port" msgstr "SIO1 服务器端口" -#: src/gui/gui.cc:2106 +#: src/gui/gui.cc:2132 msgid "Enable SIO1 Client" msgstr "启动 SIO1客户端" -#: src/gui/gui.cc:2119 +#: src/gui/gui.cc:2145 msgid "" "This will activate a tcp client, that can connect\n" "to another PCSX-Redux server to relay information between tcp and sio1.\n" @@ -1857,76 +1827,76 @@ msgstr "" "激活SIO1 TCP客户端来连接其他PCSX-Redux SIO1服务端\n" "详细信息请参阅WIKI" -#: src/gui/gui.cc:2123 +#: src/gui/gui.cc:2149 msgid "SIO1 Client Host" msgstr "SI01 客户端主机" -#: src/gui/gui.cc:2126 +#: src/gui/gui.cc:2152 msgid "SIO1 Client Port" msgstr "SIO1 客户端端口" -#: src/gui/gui.cc:2130 +#: src/gui/gui.cc:2156 msgid "Reset SIO" msgstr "重启 SIO" -#: src/gui/gui.cc:2141 +#: src/gui/gui.cc:2167 msgid "Reconnect" msgstr "重新连接" -#: src/gui/gui.cc:2154 +#: src/gui/gui.cc:2180 msgid "SIO1Mode" msgstr "SIO1模式" -#: src/gui/gui.cc:2212 +#: src/gui/gui.cc:2238 msgid "Interrupt Scaler" msgstr "中断 Scaler" -#: src/gui/gui.cc:2213 +#: src/gui/gui.cc:2239 msgid "Reset all" msgstr "全部重置" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Cherry##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Classic##Theme name" msgstr "" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 #, fuzzy msgid "Default theme##Theme name" msgstr "默认主题" -#: src/gui/gui.cc:2229 +#: src/gui/gui.cc:2255 msgid "Light##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Dracula##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Mono##Theme name" msgstr "" -#: src/gui/gui.cc:2230 +#: src/gui/gui.cc:2256 msgid "Olive##Theme name" msgstr "" -#: src/gui/gui.cc:2235 +#: src/gui/gui.cc:2261 msgid "Themes" msgstr "主题" -#: src/gui/gui.cc:2266 src/gui/gui.cc:2340 +#: src/gui/gui.cc:2292 src/gui/gui.cc:2366 msgid "Version" msgstr "版本" -#: src/gui/gui.cc:2271 +#: src/gui/gui.cc:2297 msgid "Copy to clipboard" msgstr "复制到剪切板" -#: src/gui/gui.cc:2277 +#: src/gui/gui.cc:2303 msgid "" "No version information.\n" "\n" @@ -1936,42 +1906,42 @@ msgstr "" "\n" "可能是自编译版本" -#: src/gui/gui.cc:2279 src/gui/gui.cc:2357 +#: src/gui/gui.cc:2305 src/gui/gui.cc:2383 #, c-format msgid "Version: %s" msgstr "版本:%s" -#: src/gui/gui.cc:2280 +#: src/gui/gui.cc:2306 #, c-format msgid "Changeset: %s" msgstr "Changeset: %s" -#: src/gui/gui.cc:2283 +#: src/gui/gui.cc:2309 #, c-format msgid "Date & time: %s" msgstr "Date & time: %s" -#: src/gui/gui.cc:2292 +#: src/gui/gui.cc:2318 msgid "Authors" msgstr "作者" -#: src/gui/gui.cc:2300 +#: src/gui/gui.cc:2326 msgid "Licenses" msgstr "协议" -#: src/gui/gui.cc:2312 +#: src/gui/gui.cc:2338 msgid "OpenGL information" msgstr "OpenGL 信息" -#: src/gui/gui.cc:2314 +#: src/gui/gui.cc:2340 msgid "OpenGL error reporting: enabled" msgstr "OpenGL 错误信息报告:启用" -#: src/gui/gui.cc:2316 +#: src/gui/gui.cc:2342 msgid "OpenGL error reporting: disabled" msgstr "OpenGL 错误信息报告:禁用" -#: src/gui/gui.cc:2319 +#: src/gui/gui.cc:2345 #, fuzzy msgid "" "OpenGL error reporting has been disabled because your OpenGL driver is too " @@ -1986,11 +1956,11 @@ msgstr "" "OpenGL 驱动程序。 禁用 OpenGL 错误报告不会对该软件的性能产生负面影响,但着色" "器编辑器等将无法准确地报告问题。" -#: src/gui/gui.cc:2327 +#: src/gui/gui.cc:2353 msgid "Enable OpenGL error reporting" msgstr "启动 OpenGL 错误信息报告" -#: src/gui/gui.cc:2330 +#: src/gui/gui.cc:2356 msgid "" "OpenGL error reporting is necessary for properly reporting OpenGL problems. " "However it requires OpenGL 4.3+ and might have performance repercussions on " @@ -1999,69 +1969,69 @@ msgstr "" "OpenGL 错误报告对于正确报告 OpenGL 问题是必要的。 但是,它需要 OpenGL 4.3+ 版" "本,并且可能会对某些计算机产生性能影响。 (需要重启模拟器)" -#: src/gui/gui.cc:2334 +#: src/gui/gui.cc:2360 msgid "OpenGL error reporting severity" msgstr "OpenGL 错误报告严重性" -#: src/gui/gui.cc:2337 +#: src/gui/gui.cc:2363 #, c-format msgid "Core profile: %s" msgstr "Core profile: %s" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "no" msgstr "否" -#: src/gui/gui.cc:2337 src/gui/widgets/assembly.cc:535 +#: src/gui/gui.cc:2363 src/gui/widgets/assembly.cc:570 msgid "yes" msgstr "是" -#: src/gui/gui.cc:2338 +#: src/gui/gui.cc:2364 msgid "Vendor" msgstr "Vendor" -#: src/gui/gui.cc:2339 +#: src/gui/gui.cc:2365 msgid "Renderer" msgstr "渲染器" -#: src/gui/gui.cc:2341 +#: src/gui/gui.cc:2367 msgid "Shading language version" msgstr "着色器语言版本" -#: src/gui/gui.cc:2344 +#: src/gui/gui.cc:2370 #, c-format msgid "Texture units: %d" msgstr "" -#: src/gui/gui.cc:2347 +#: src/gui/gui.cc:2373 msgid "Extensions:" msgstr "扩展:" -#: src/gui/gui.cc:2356 +#: src/gui/gui.cc:2382 #, fuzzy msgid "FFmpeg information" msgstr "OpenGL 信息" -#: src/gui/gui.cc:2358 +#: src/gui/gui.cc:2384 #, fuzzy, c-format msgid "License: %s" msgstr "协议" -#: src/gui/gui.cc:2359 +#: src/gui/gui.cc:2385 #, fuzzy, c-format msgid "Configuration: %s" msgstr "设置" -#: src/gui/gui.cc:2362 +#: src/gui/gui.cc:2388 msgid "List of supported formats:" msgstr "" -#: src/gui/gui.cc:2380 +#: src/gui/gui.cc:2406 msgid "" "List of supported codecs: (D: Decoder, E: Encoder, L: Lossy, S: Lossless)" msgstr "" -#: src/gui/gui.cc:2420 +#: src/gui/gui.cc:2446 #, c-format msgid "%s codecs" msgstr "" @@ -2152,58 +2122,93 @@ msgstr "Trio" msgid "Mask type" msgstr "Mask 类型" -#: src/gui/widgets/assembly.cc:443 +#: src/gui/widgets/assembly.cc:334 +#, fuzzy +msgid "Go to in Memory Editor #1 (Default Click)" +msgstr "跳转到内存编辑器中" + +#: src/gui/widgets/assembly.cc:335 +#, fuzzy +msgid "Go to in Memory Editor #2 (Shift+Click)" +msgstr "跳转到内存编辑器中" + +#: src/gui/widgets/assembly.cc:336 +#, fuzzy +msgid "Go to in Memory Editor #3 (Ctrl+Click)" +msgstr "跳转到内存编辑器中" + +#: src/gui/widgets/assembly.cc:339 +#, fuzzy +msgid "Go to in Memory Editor #{}" +msgstr "跳转到内存编辑器中" + +#: src/gui/widgets/assembly.cc:346 +#, fuzzy +msgid "Go to in Memory Editor..." +msgstr "跳转到内存编辑器中" + +#: src/gui/widgets/assembly.cc:394 +#, fuzzy, c-format +msgid "Go to in Memory Editor #%d" +msgstr "跳转到内存编辑器中" + +#: src/gui/widgets/assembly.cc:455 +#, fuzzy, c-format +msgid "Go to in Memory Editor #%u" +msgstr "跳转到内存编辑器中" + +#: src/gui/widgets/assembly.cc:478 msgid "Load symbols map" msgstr "加载 symbols map" -#: src/gui/widgets/assembly.cc:444 +#: src/gui/widgets/assembly.cc:479 msgid "Reset symbols map" msgstr "重置 symbols map" -#: src/gui/widgets/assembly.cc:450 src/gui/widgets/assembly.cc:525 +#: src/gui/widgets/assembly.cc:485 src/gui/widgets/assembly.cc:560 msgid "Pause" msgstr "暂停" -#: src/gui/widgets/assembly.cc:451 src/gui/widgets/assembly.cc:527 +#: src/gui/widgets/assembly.cc:486 src/gui/widgets/assembly.cc:562 #: src/gui/widgets/gpulogger.cc:47 msgid "Resume" msgstr "恢复" -#: src/gui/widgets/assembly.cc:453 src/gui/widgets/assembly.cc:529 +#: src/gui/widgets/assembly.cc:488 src/gui/widgets/assembly.cc:564 msgid "Step In" msgstr "Step In" #. Options, Filter -#: src/gui/widgets/assembly.cc:459 src/gui/widgets/console.cc:53 +#: src/gui/widgets/assembly.cc:494 src/gui/widgets/console.cc:53 #: src/gui/widgets/dynarec_disassembly.cc:106 msgid "Options" msgstr "选项" -#: src/gui/widgets/assembly.cc:460 +#: src/gui/widgets/assembly.cc:495 msgid "Combined pseudo-instructions" msgstr "组合伪指令" -#: src/gui/widgets/assembly.cc:465 +#: src/gui/widgets/assembly.cc:500 msgid "" "When two instructions are detected to be a single pseudo-instruction, " "combine them into the actual pseudo-instruction." msgstr "当检测到两条指令是一条伪指令时,将它们组合成实际的伪指令。" -#: src/gui/widgets/assembly.cc:470 +#: src/gui/widgets/assembly.cc:505 msgid "Pseudo-instructions filling" msgstr "Pseudo-instructions filling" -#: src/gui/widgets/assembly.cc:475 +#: src/gui/widgets/assembly.cc:510 msgid "" "When combining two instructions into a single pseudo-instruction, add a " "placeholder for the second one." msgstr "将两条指令组合成一条伪指令时,为第二条指令添加一个占位符。" -#: src/gui/widgets/assembly.cc:480 +#: src/gui/widgets/assembly.cc:515 msgid "Delay slot notch" msgstr "延迟 slot notch" -#: src/gui/widgets/assembly.cc:485 +#: src/gui/widgets/assembly.cc:520 msgid "" "Add a small visible notch to indicate instructions that are on the delay " "slot of a branch." @@ -2211,139 +2216,135 @@ msgstr "" "Add a small visible notch to indicate instructions that are on the delay " "slot of a branch." -#: src/gui/widgets/assembly.cc:489 +#: src/gui/widgets/assembly.cc:524 msgid "Draw arrows for jumps" msgstr "Draw arrows for jumps" -#: src/gui/widgets/assembly.cc:493 +#: src/gui/widgets/assembly.cc:528 msgid "Display arrows for jumps. This might crowd the display a bit too much." msgstr "Display arrows for jumps, 这可能会使屏幕过于拥挤。" -#: src/gui/widgets/assembly.cc:497 +#: src/gui/widgets/assembly.cc:532 msgid "Columns" msgstr "列" -#: src/gui/widgets/assembly.cc:516 src/gui/widgets/log.cc:111 +#: src/gui/widgets/assembly.cc:551 src/gui/widgets/log.cc:111 msgid "CPU trace" msgstr "追踪CPU" -#: src/gui/widgets/assembly.cc:518 +#: src/gui/widgets/assembly.cc:553 msgid "Skip ISR" msgstr "跳过 ISR" -#: src/gui/widgets/assembly.cc:520 +#: src/gui/widgets/assembly.cc:555 msgid "Follow PC" msgstr "跟踪 PC" -#: src/gui/widgets/assembly.cc:522 +#: src/gui/widgets/assembly.cc:557 msgid "Jump to PC" msgstr "跳转PC至" -#: src/gui/widgets/assembly.cc:535 +#: src/gui/widgets/assembly.cc:570 #, c-format msgid "In ISR: %s" msgstr "In ISR: %s" -#: src/gui/widgets/assembly.cc:709 src/gui/widgets/assembly.cc:737 +#: src/gui/widgets/assembly.cc:744 src/gui/widgets/assembly.cc:770 #: src/gui/widgets/breakpoints.cc:171 msgid "GUI" msgstr "GUI" -#: src/gui/widgets/assembly.cc:718 +#: src/gui/widgets/assembly.cc:753 msgid "Create symbol here" msgstr "" -#: src/gui/widgets/assembly.cc:723 +#: src/gui/widgets/assembly.cc:758 #, fuzzy msgid "Remove symbol" msgstr "重置 symbols map" -#: src/gui/widgets/assembly.cc:727 +#: src/gui/widgets/assembly.cc:762 msgid "Copy Address" msgstr "复制地址" -#: src/gui/widgets/assembly.cc:732 src/gui/widgets/registers.cc:39 -msgid "Go to in Memory Editor" -msgstr "跳转到内存编辑器中" - -#: src/gui/widgets/assembly.cc:735 +#: src/gui/widgets/assembly.cc:768 msgid "Run to Cursor" msgstr "运行到光标处" -#: src/gui/widgets/assembly.cc:744 +#: src/gui/widgets/assembly.cc:777 msgid "Toggle Breakpoint" msgstr "切换断点" -#: src/gui/widgets/assembly.cc:748 src/gui/widgets/assembly.cc:753 +#: src/gui/widgets/assembly.cc:781 src/gui/widgets/assembly.cc:786 #, fuzzy msgid "Remove Breakpoint" msgstr "切换断点" -#: src/gui/widgets/assembly.cc:757 src/gui/widgets/assembly.cc:954 -#: src/gui/widgets/assembly.cc:956 src/gui/widgets/assembly.cc:962 +#: src/gui/widgets/assembly.cc:790 src/gui/widgets/assembly.cc:987 +#: src/gui/widgets/assembly.cc:989 src/gui/widgets/assembly.cc:995 #, fuzzy msgid "Assemble" msgstr "汇编" -#: src/gui/widgets/assembly.cc:887 src/gui/widgets/breakpoints.cc:153 +#: src/gui/widgets/assembly.cc:920 src/gui/widgets/breakpoints.cc:153 #: src/gui/widgets/memory_observer.cc:170 #: src/gui/widgets/memory_observer.cc:328 #: src/gui/widgets/memory_observer.cc:424 src/gui/widgets/typed_debugger.cc:961 msgid "Address" msgstr "地址" -#: src/gui/widgets/assembly.cc:901 +#: src/gui/widgets/assembly.cc:934 msgid "RAM base" msgstr "RAM base" -#: src/gui/widgets/assembly.cc:910 src/gui/widgets/assembly.cc:1011 +#: src/gui/widgets/assembly.cc:943 src/gui/widgets/assembly.cc:1044 msgid "Symbols" msgstr "Symbols" -#: src/gui/widgets/assembly.cc:936 src/gui/widgets/assembly.cc:938 +#: src/gui/widgets/assembly.cc:969 src/gui/widgets/assembly.cc:971 #, fuzzy msgid "Add symbol" msgstr "加载Symbols" -#: src/gui/widgets/assembly.cc:939 +#: src/gui/widgets/assembly.cc:972 #, c-format msgid "Add symbol for address 0x%08x:" msgstr "" -#: src/gui/widgets/assembly.cc:941 +#: src/gui/widgets/assembly.cc:974 #, fuzzy msgid "Add" msgstr "地址" -#: src/gui/widgets/assembly.cc:957 +#: src/gui/widgets/assembly.cc:990 #, c-format msgid "Assemble code for address 0x%08x:" msgstr "" #. Clear items button -#: src/gui/widgets/assembly.cc:982 src/gui/widgets/console.cc:39 +#: src/gui/widgets/assembly.cc:1015 src/gui/widgets/console.cc:39 #: src/gui/widgets/dynarec_disassembly.cc:90 src/gui/widgets/log.cc:128 #: src/gui/widgets/pio-cart.cc:41 src/gui/widgets/typed_debugger.cc:827 msgid "Clear" msgstr "清除" -#: src/gui/widgets/assembly.cc:984 src/gui/widgets/dynarec_disassembly.cc:73 +#: src/gui/widgets/assembly.cc:1017 src/gui/widgets/dynarec_disassembly.cc:73 msgid "Close" msgstr "关闭" -#: src/gui/widgets/assembly.cc:1012 +#: src/gui/widgets/assembly.cc:1045 msgid "Refresh" msgstr "刷新" -#: src/gui/widgets/assembly.cc:1014 +#: src/gui/widgets/assembly.cc:1047 msgid "Filter" msgstr "Filter" -#: src/gui/widgets/assembly.cc:1028 +#: src/gui/widgets/assembly.cc:1061 msgid "Code##{}{:08x}" msgstr "Code##{0}{:08x}" -#: src/gui/widgets/assembly.cc:1029 +#: src/gui/widgets/assembly.cc:1062 msgid "Data##{}{:08x}" msgstr "Data##{0}{:08x}" @@ -2960,7 +2961,7 @@ msgstr "记忆卡 2" msgid "Import Memory Card file" msgstr "记忆卡 1" -#: src/gui/widgets/memcard_manager.h:78 +#: src/gui/widgets/memcard_manager.h:77 #, fuzzy msgid "Export Memory Card file" msgstr "记忆卡 1" @@ -3144,6 +3145,10 @@ msgstr "Context##{0}" msgid "Go to in Assembly" msgstr "在汇编中打开" +#: src/gui/widgets/registers.cc:39 +msgid "Go to in Memory Editor" +msgstr "跳转到内存编辑器中" + #: src/gui/widgets/registers.cc:42 msgid "Copy Value" msgstr "复制数值" @@ -3626,121 +3631,110 @@ msgid "" msgstr "" "根据对解码/捕获缓冲区来写入激活 SPU IRQ。,此选项对于某些游戏是必需开启的。" -#: src/spu/debug.cc:62 +#: src/spu/debug.cc:581 msgid "SPU Debug" msgstr "SPU 调试" -#: src/spu/debug.cc:84 -msgid "Mute all" -msgstr "全部静音" - -#: src/spu/debug.cc:90 -msgid "Unmute all" -msgstr "取消全部静音" - -#: src/spu/debug.cc:104 -msgid "ADSR channel info" -msgstr "ADSR 通道信息" - -#: src/spu/debug.cc:107 -msgid "" -"Attack:\n" -"Decay:\n" -"Sustain:\n" -"Release:" -msgstr "" -"Attack:\n" -"Decay:\n" -"Sustain:\n" -"Release:" - -#: src/spu/debug.cc:115 -msgid "" -"Sustain level:\n" -"Sustain inc:\n" -"Curr adsr vol:\n" -"Raw enveloppe" -msgstr "" -"Sustain level:\n" -"Sustain inc:\n" -"Curr adsr vol:\n" -"Raw enveloppe" - -#: src/spu/debug.cc:123 -msgid "Generic channel info" -msgstr "通用频道信息" - -#: src/spu/debug.cc:127 -msgid "" -"On:\n" -"Stop:\n" -"Noise:\n" -"FMod:\n" -"Reverb:\n" -"Rvb active:\n" -"Rvb number:\n" -"Rvb offset:\n" -"Rvb repeat:" -msgstr "" -"On:\n" -"Stop:\n" -"Noise:\n" -"FMod:\n" -"Reverb:\n" -"Rvb active:\n" -"Rvb number:\n" -"Rvb offset:\n" -"Rvb repeat:" - -#: src/spu/debug.cc:138 -msgid "" -"Start pos:\n" -"Curr pos:\n" -"Loop pos:\n" -"\n" -"Right vol:\n" -"Left vol:\n" -"\n" -"Act freq:\n" -"Used freq:" -msgstr "" -"Start pos:\n" -"Curr pos:\n" -"Loop pos:\n" -"\n" -"Right vol:\n" -"Left vol:\n" -"\n" -"Act freq:\n" -"Used freq:" - -#: src/spu/debug.cc:150 -msgid "" -"Freq:\n" -"Stereo:\n" -"Samples:\n" -"Volume:\n" -msgstr "" -"Freq:\n" -"Stereo:\n" -"Samples:\n" -"Volume:\n" - -#: src/spu/debug.cc:159 -msgid "Spu states" -msgstr "SPU 状态" - -#: src/spu/debug.cc:160 -msgid "" -"Irq addr:\n" -"Ctrl:\n" -"Stat:\n" -"Spu mem:" -msgstr "" -"Irq addr:\n" -"Ctrl:\n" -"Stat:\n" -"Spu mem:" +#~ msgid "Mute all" +#~ msgstr "全部静音" + +#~ msgid "Unmute all" +#~ msgstr "取消全部静音" + +#~ msgid "ADSR channel info" +#~ msgstr "ADSR 通道信息" + +#~ msgid "" +#~ "Attack:\n" +#~ "Decay:\n" +#~ "Sustain:\n" +#~ "Release:" +#~ msgstr "" +#~ "Attack:\n" +#~ "Decay:\n" +#~ "Sustain:\n" +#~ "Release:" + +#~ msgid "" +#~ "Sustain level:\n" +#~ "Sustain inc:\n" +#~ "Curr adsr vol:\n" +#~ "Raw enveloppe" +#~ msgstr "" +#~ "Sustain level:\n" +#~ "Sustain inc:\n" +#~ "Curr adsr vol:\n" +#~ "Raw enveloppe" + +#~ msgid "Generic channel info" +#~ msgstr "通用频道信息" + +#~ msgid "" +#~ "On:\n" +#~ "Stop:\n" +#~ "Noise:\n" +#~ "FMod:\n" +#~ "Reverb:\n" +#~ "Rvb active:\n" +#~ "Rvb number:\n" +#~ "Rvb offset:\n" +#~ "Rvb repeat:" +#~ msgstr "" +#~ "On:\n" +#~ "Stop:\n" +#~ "Noise:\n" +#~ "FMod:\n" +#~ "Reverb:\n" +#~ "Rvb active:\n" +#~ "Rvb number:\n" +#~ "Rvb offset:\n" +#~ "Rvb repeat:" + +#~ msgid "" +#~ "Start pos:\n" +#~ "Curr pos:\n" +#~ "Loop pos:\n" +#~ "\n" +#~ "Right vol:\n" +#~ "Left vol:\n" +#~ "\n" +#~ "Act freq:\n" +#~ "Used freq:" +#~ msgstr "" +#~ "Start pos:\n" +#~ "Curr pos:\n" +#~ "Loop pos:\n" +#~ "\n" +#~ "Right vol:\n" +#~ "Left vol:\n" +#~ "\n" +#~ "Act freq:\n" +#~ "Used freq:" + +#~ msgid "" +#~ "Freq:\n" +#~ "Stereo:\n" +#~ "Samples:\n" +#~ "Volume:\n" +#~ msgstr "" +#~ "Freq:\n" +#~ "Stereo:\n" +#~ "Samples:\n" +#~ "Volume:\n" + +#~ msgid "Spu states" +#~ msgstr "SPU 状态" + +#~ msgid "" +#~ "Irq addr:\n" +#~ "Ctrl:\n" +#~ "Stat:\n" +#~ "Spu mem:" +#~ msgstr "" +#~ "Irq addr:\n" +#~ "Ctrl:\n" +#~ "Stat:\n" +#~ "Spu mem:" #~ msgid "Classic" #~ msgstr "经典" diff --git a/src/core/DynaRec_aa64/recompiler.h b/src/core/DynaRec_aa64/recompiler.h index 0fb678c20..cf7d184a0 100644 --- a/src/core/DynaRec_aa64/recompiler.h +++ b/src/core/DynaRec_aa64/recompiler.h @@ -31,7 +31,7 @@ #include "fmt/format.h" #include "regAllocation.h" #include "spu/interface.h" -#include "tracy/Tracy.hpp" +#include "tracy/public/tracy/Tracy.hpp" #define HOST_REG_CACHE_OFFSET(x) ((uintptr_t)&m_hostRegisterCache[(x)] - (uintptr_t)this) #define GPR_OFFSET(x) ((uintptr_t)&m_regs.GPR.r[(x)] - (uintptr_t)this) diff --git a/src/core/DynaRec_x64/recompiler.h b/src/core/DynaRec_x64/recompiler.h index eb34f2d87..407659686 100644 --- a/src/core/DynaRec_x64/recompiler.h +++ b/src/core/DynaRec_x64/recompiler.h @@ -34,7 +34,7 @@ #include "profiler.h" #include "regAllocation.h" #include "spu/interface.h" -#include "tracy/Tracy.hpp" +#include "tracy/public/tracy/Tracy.hpp" #define HOST_REG_CACHE_OFFSET(x) ((uintptr_t)&m_hostRegisterCache[(x)] - (uintptr_t)this) #define GPR_OFFSET(x) ((uintptr_t)&m_regs.GPR.r[(x)] - (uintptr_t)this) diff --git a/src/core/OpenGL_GPU/gpu_opengl.cc b/src/core/OpenGL_GPU/gpu_opengl.cc index 88d0f69a6..33576493d 100644 --- a/src/core/OpenGL_GPU/gpu_opengl.cc +++ b/src/core/OpenGL_GPU/gpu_opengl.cc @@ -29,7 +29,7 @@ #include "core/system.h" #include "fmt/format.h" #include "gui/gui.h" -#include "tracy/Tracy.hpp" +#include "tracy/public/tracy/Tracy.hpp" std::unique_ptr PCSX::GPU::getOpenGL() { return std::unique_ptr(new PCSX::OpenGL_GPU()); } @@ -1022,8 +1022,6 @@ void PCSX::OpenGL_GPU::write1(CtrlHorizontalDisplayRange *ctrl) { m_display.set( void PCSX::OpenGL_GPU::write1(CtrlVerticalDisplayRange *ctrl) { m_display.set(ctrl); } void PCSX::OpenGL_GPU::write1(CtrlDisplayMode *ctrl) { m_display.set(ctrl); } -void PCSX::OpenGL_GPU::write1(CtrlQuery *) {} - // clang-format off void PCSX::OpenGL_GPU::write0(Poly *prim) { polyExec(prim); } void PCSX::OpenGL_GPU::write0(Poly *prim) { polyExec(prim); } diff --git a/src/core/OpenGL_GPU/gpu_opengl.h b/src/core/OpenGL_GPU/gpu_opengl.h index b2b5283f4..9967b3ff4 100644 --- a/src/core/OpenGL_GPU/gpu_opengl.h +++ b/src/core/OpenGL_GPU/gpu_opengl.h @@ -284,7 +284,6 @@ class OpenGL_GPU final : public GPU { void write1(CtrlHorizontalDisplayRange *) override; void write1(CtrlVerticalDisplayRange *) override; void write1(CtrlDisplayMode *) override; - void write1(CtrlQuery *) override; }; } // namespace PCSX diff --git a/src/core/arguments.cc b/src/core/arguments.cc index 4a8219f52..13a62fa4b 100644 --- a/src/core/arguments.cc +++ b/src/core/arguments.cc @@ -30,6 +30,8 @@ PCSX::Arguments::Arguments(const CommandLine::args& args) { if (args.get("testmode") || args.get("no-gui-log")) m_guiLogsEnabled = false; if (args.get("testmode")) m_testModeEnabled = true; if (args.get("portable")) m_portable = true; + auto portablePath = args.get("portable"); + if (portablePath.has_value()) m_portablePath = portablePath.value(); if (std::filesystem::exists("pcsx.json")) m_portable = true; if (std::filesystem::exists("Makefile")) m_portable = true; if (std::filesystem::exists(std::filesystem::path("..") / "pcsx-redux.sln")) m_portable = true; diff --git a/src/core/arguments.h b/src/core/arguments.h index 80f9727ca..4456a64db 100644 --- a/src/core/arguments.h +++ b/src/core/arguments.h @@ -21,6 +21,9 @@ #include +#include +#include + #include "flags.h" namespace PCSX { @@ -74,7 +77,12 @@ class Arguments { // Toggled with the flags -viewports / -no-viewports. bool isViewportsEnabled() const { return m_viewportsEnabled; } + // Returns the path to the portable directory. + // Set with the flag -portable. + std::string_view getPortablePath() const { return m_portablePath; } + private: + std::string m_portablePath = ""; bool m_luaStdoutEnabled = false; bool m_stdoutEnabled = false; bool m_guiLogsEnabled = true; diff --git a/src/core/callstacks.cc b/src/core/callstacks.cc index 0a9bba593..2830fbd8b 100644 --- a/src/core/callstacks.cc +++ b/src/core/callstacks.cc @@ -148,18 +148,18 @@ void PCSX::CallStacks::storeRA(uint32_t sp, uint32_t ra) { void PCSX::CallStacks::loadRA(uint32_t sp) { if (!m_current) { - normalLog("[CS] Got a RA load from 0x%08x, but we don't have any active stack.\n", sp); + debugLog("[CSDBG] Got a RA load from 0x%08x, but we don't have any active stack.\n", sp); return; } auto& calls = m_current->calls; if (calls.size() == 0) { - normalLog("[CS] Got a RA load from 0x%08x, but current stack is empty.\n", sp); + debugLog("[CSDBG] Got a RA load from 0x%08x, but current stack is empty.\n", sp); return; } auto last = --calls.end(); if (last->sp != sp) { - normalLog("[CS] Got a RA load from 0x%08x, but the active stack's at 0x%08x (ra: 0x%08x, size = %i)\n", sp, - last->sp, last->ra, calls.size()); + debugLog("[CSDBG] Got a RA load from 0x%08x, but the active stack's at 0x%08x (ra: 0x%08x, size = %i)\n", sp, + last->sp, last->ra, calls.size()); } } diff --git a/src/core/gpu.cc b/src/core/gpu.cc index 5cd70f87e..cda37c96c 100644 --- a/src/core/gpu.cc +++ b/src/core/gpu.cc @@ -407,6 +407,11 @@ int PCSX::GPU::init(UI *ui) { for (auto poly : m_polygons) poly->setGPU(this); for (auto line : m_lines) line->setGPU(this); for (auto rect : m_rects) rect->setGPU(this); + m_textureWindowRaw = 0; + m_drawingStartRaw = 0; + m_drawingEndRaw = 0; + m_drawingOffsetRaw = 0; + m_dataRet = 0x400; return initBackend(ui); } @@ -564,6 +569,11 @@ void PCSX::GPU::writeStatus(uint32_t value) { CtrlReset ctrl; g_emulator->m_gpuLogger->addNode(ctrl, Logged::Origin::CTRLWRITE, value, 1); write1(&ctrl); + m_textureWindowRaw = 0; + m_drawingStartRaw = 0; + m_drawingEndRaw = 0; + m_drawingOffsetRaw = 0; + m_dataRet = 0x400; } break; case 1: { CtrlClearFifo ctrl; @@ -620,7 +630,29 @@ void PCSX::GPU::writeStatus(uint32_t value) { } } -uint32_t PCSX::GPU::readData() { return m_readFifo.asA()->read(); } +uint32_t PCSX::GPU::readData() { + if (m_readFifo->size() == 0) { + return m_dataRet; + } + return m_readFifo.asA()->read(); +} + +void PCSX::GPU::write1(CtrlQuery *ctrl) { + switch (ctrl->type()) { + case CtrlQuery::TextureWindow: + m_dataRet = m_textureWindowRaw; + return; + case CtrlQuery::DrawAreaStart: + m_dataRet = m_drawingStartRaw; + return; + case CtrlQuery::DrawAreaEnd: + m_dataRet = m_drawingEndRaw; + return; + case CtrlQuery::DrawOffset: + m_dataRet = m_drawingOffsetRaw; + return; + } +} void PCSX::GPU::writeData(uint32_t value) { Buffer buf(value); @@ -635,7 +667,13 @@ void PCSX::GPU::directDMAWrite(const uint32_t *feed, int transferSize, uint32_t } void PCSX::GPU::directDMARead(uint32_t *dest, int transferSize, uint32_t hwAddr) { + auto size = m_readFifo->size(); m_readFifo->read(dest, transferSize * 4); + transferSize -= size / 4; + dest += size / 4; + while (transferSize != 0) { + *dest++ = m_dataRet; + } } void PCSX::GPU::chainedDMAWrite(const uint32_t *memory, uint32_t hwAddr) { @@ -735,22 +773,26 @@ void PCSX::GPU::Command::processWrite(Buffer &buf, Logged::Origin origin, uint32 m_gpu->m_lastTWindow = TWindow(packetInfo); g_emulator->m_gpuLogger->addNode(prim, origin, originValue, length); m_gpu->write0(&prim); + m_gpu->m_textureWindowRaw = packetInfo & 0xfffff; } break; case 3: { // drawing area top left DrawingAreaStart prim(packetInfo); g_emulator->m_gpuLogger->addNode(prim, origin, originValue, length); m_gpu->write0(&prim); + m_gpu->m_drawingStartRaw = packetInfo & 0xfffff; } break; case 4: { // drawing area bottom right DrawingAreaEnd prim(packetInfo); g_emulator->m_gpuLogger->addNode(prim, origin, originValue, length); m_gpu->write0(&prim); + m_gpu->m_drawingEndRaw = packetInfo & 0xfffff; } break; case 5: { // drawing offset DrawingOffset prim(packetInfo); m_gpu->m_lastOffset = DrawingOffset(packetInfo); g_emulator->m_gpuLogger->addNode(prim, origin, originValue, length); m_gpu->write0(&prim); + m_gpu->m_drawingOffsetRaw = packetInfo & 0x3fffff; } break; case 6: { // mask bit MaskBit prim(packetInfo); diff --git a/src/core/gpu.h b/src/core/gpu.h index bd9b3460c..490c80e77 100644 --- a/src/core/gpu.h +++ b/src/core/gpu.h @@ -104,6 +104,7 @@ class GPU { virtual void setDither(int setting) = 0; void reset() { resetBackend(); + m_dataRet = 0; m_readFifo->reset(); m_processor->reset(); m_defaultProcessor.setActive(); @@ -803,6 +804,12 @@ class GPU { TWindow m_lastTWindow; DrawingOffset m_lastOffset; + uint32_t m_dataRet = 0; + uint32_t m_textureWindowRaw = 0; + uint32_t m_drawingStartRaw = 0; + uint32_t m_drawingEndRaw = 0; + uint32_t m_drawingOffsetRaw = 0; + virtual void write0(ClearCache *) = 0; virtual void write0(FastFill *) = 0; @@ -899,7 +906,7 @@ class GPU { virtual void write1(CtrlHorizontalDisplayRange *) = 0; virtual void write1(CtrlVerticalDisplayRange *) = 0; virtual void write1(CtrlDisplayMode *) = 0; - virtual void write1(CtrlQuery *) = 0; + virtual void write1(CtrlQuery *); }; } // namespace PCSX diff --git a/src/core/pad.cc b/src/core/pad.cc index 1d8d2ffe7..b8797e8b4 100644 --- a/src/core/pad.cc +++ b/src/core/pad.cc @@ -988,14 +988,14 @@ bool PadsImpl::Pad::configure() { l_("Keyboard"), }; static std::function const c_buttonNames[] = { - l_("Cross"), l_("Square"), l_("Triangle"), l_("Circle"), l_("Select"), l_("Start"), l_("L1"), - l_("R1"), l_("L2"), l_("R2"), l_("L3"), l_("R3"), l_("Analog Mode"), + l_("╳"), l_("□"), l_("△"), l_("◯"), l_("Select"), l_("Start"), l_("L1"), + l_("R1"), l_("L2"), l_("R2"), l_("L3"), l_("R3"), l_("Analog Mode"), }; static std::function const c_dpadDirections[] = { - l_("Up"), - l_("Right"), - l_("Down"), - l_("Left"), + l_("↑"), + l_("→"), + l_("↓"), + l_("←"), }; static std::function const c_controllerTypes[] = { l_("Digital"), diff --git a/src/core/psxinterpreter.cc b/src/core/psxinterpreter.cc index 1b303d91e..d2896dfcd 100644 --- a/src/core/psxinterpreter.cc +++ b/src/core/psxinterpreter.cc @@ -26,7 +26,7 @@ #include "core/pgxp_gte.h" #include "core/psxemulator.h" #include "core/r3000a.h" -#include "tracy/Tracy.hpp" +#include "tracy/public/tracy/Tracy.hpp" #undef _PC_ #undef _Op_ diff --git a/src/core/psxmem.cc b/src/core/psxmem.cc index 1df492999..beaa0794f 100644 --- a/src/core/psxmem.cc +++ b/src/core/psxmem.cc @@ -273,7 +273,6 @@ uint8_t PCSX::Memory::read8(uint32_t address) { auto L = *g_emulator->m_lua; const uint8_t ret = L.tonumber(); L.pop(); - g_system->log(LogClass::HARDWARE, _("8-bit read redirected to Lua for address: %8.8lx\n"), address); return ret; } else if (address == 0x1f000004 || address == 0x1f000084) { // EXP1 not mapped, likely the bios looking for pre/post boot entry point @@ -310,7 +309,6 @@ uint16_t PCSX::Memory::read16(uint32_t address) { auto L = *g_emulator->m_lua; const uint16_t ret = L.tonumber(); L.pop(); - g_system->log(LogClass::HARDWARE, _("16-bit read redirected to Lua for address: %8.8lx\n"), address); return ret; } else if (isiCacheEnabled()) { g_system->log(LogClass::CPU, _("16-bit read from unknown address: %8.8lx\n"), address); @@ -345,7 +343,6 @@ uint32_t PCSX::Memory::read32(uint32_t address, ReadType readType) { auto L = *g_emulator->m_lua; const uint32_t ret = L.tonumber(); L.pop(); - g_system->log(LogClass::HARDWARE, _("32-bit read redirected to Lua for address: %8.8lx\n"), address); return ret; } else if (isiCacheEnabled()) { g_system->log(LogClass::CPU, _("32-bit read from unknown address: %8.8lx\n"), address); @@ -449,7 +446,6 @@ void PCSX::Memory::write8(uint32_t address, uint32_t value) { } else if ((page & 0x1fff) >= 0x1f00 && (page & 0x1fff) < 0x1f80 && pioConnected) { g_emulator->m_pioCart->write8(address, value); } else if (sendWriteToLua(address, 1, value)) { - g_system->log(LogClass::HARDWARE, _("8-bit write redirected to Lua for address: %8.8lx\n"), address); } else if (isiCacheEnabled()) { g_emulator->m_cpu->Clear(address, 1); g_system->log(LogClass::CPU, _("8-bit write to unknown address: %8.8lx\n"), address); @@ -479,7 +475,6 @@ void PCSX::Memory::write16(uint32_t address, uint32_t value) { } else if ((page & 0x1fff) >= 0x1f00 && (page & 0x1fff) < 0x1f80 && pioConnected) { g_emulator->m_pioCart->write16(address, value); } else if (sendWriteToLua(address, 2, value)) { - g_system->log(LogClass::HARDWARE, _("16-bit write redirected to Lua for address: %8.8lx\n"), address); } else if (isiCacheEnabled()) { g_emulator->m_cpu->Clear(address, 1); g_system->log(LogClass::CPU, _("16-bit write to unknown address: %8.8lx\n"), address); @@ -527,7 +522,6 @@ void PCSX::Memory::write32(uint32_t address, uint32_t value) { break; } } else if (sendWriteToLua(address, 4, value)) { - g_system->log(LogClass::HARDWARE, _("32-bit write redirected to Lua for address: %8.8lx\n"), address); } else if (isiCacheEnabled()) { g_emulator->m_cpu->Clear(address, 1); g_system->log(LogClass::CPU, _("32-bit write to unknown address: %8.8lx\n"), address); diff --git a/src/core/system.cc b/src/core/system.cc index c9e2077fd..02e970d68 100644 --- a/src/core/system.cc +++ b/src/core/system.cc @@ -298,7 +298,7 @@ bool PCSX::System::findResource(std::functiontype()) { - case CtrlQuery::TextureWindow: - m_dataRet = m_textureWindowRaw; - return; - case CtrlQuery::DrawAreaStart: - m_dataRet = m_drawingStartRaw; - return; - case CtrlQuery::DrawAreaEnd: - m_dataRet = m_drawingEndRaw; - return; - case CtrlQuery::DrawOffset: - m_dataRet = m_drawingOffsetRaw; - return; - } -} - // clang-format off void PCSX::SoftGPU::impl::write0(Poly *prim) { polyExec(prim); } void PCSX::SoftGPU::impl::write0(Poly *prim) { polyExec(prim); } diff --git a/src/gpu/soft/interface.h b/src/gpu/soft/interface.h index 724bdfaa9..adc6a2525 100644 --- a/src/gpu/soft/interface.h +++ b/src/gpu/soft/interface.h @@ -89,7 +89,6 @@ class impl final : public GPU, public SoftRenderer { UI *m_ui; - int32_t m_dataRet; bool m_doVSyncUpdate = false; SoftDisplay m_previousDisplay; unsigned char *m_allocatedVRAM; @@ -197,7 +196,6 @@ class impl final : public GPU, public SoftRenderer { void write1(CtrlHorizontalDisplayRange *) override; void write1(CtrlVerticalDisplayRange *) override; void write1(CtrlDisplayMode *) override; - void write1(CtrlQuery *) override; }; } // namespace SoftGPU diff --git a/src/gpu/soft/soft.cc b/src/gpu/soft/soft.cc index 501c90253..8b7d2e727 100644 --- a/src/gpu/soft/soft.cc +++ b/src/gpu/soft/soft.cc @@ -172,8 +172,6 @@ void PCSX::SoftGPU::SoftRenderer::texturePage(GPU::TPage *prim) { void PCSX::SoftGPU::SoftRenderer::twindow(GPU::TWindow *prim) { uint32_t YAlign, XAlign; - m_textureWindowRaw = prim->raw & 0xfffff; - // Texture window size is determined by the least bit set of the relevant 5 bits if (prim->y & 0x01) { m_textureWindow.y1 = 8; // xxxx1 @@ -215,22 +213,16 @@ void PCSX::SoftGPU::SoftRenderer::twindow(GPU::TWindow *prim) { void PCSX::SoftGPU::SoftRenderer::drawingAreaStart(GPU::DrawingAreaStart *prim) { m_drawX = prim->x; m_drawY = prim->y; - - m_drawingStartRaw = prim->raw & 0xfffff; } void PCSX::SoftGPU::SoftRenderer::drawingAreaEnd(GPU::DrawingAreaEnd *prim) { m_drawW = prim->x; m_drawH = prim->y; - - m_drawingEndRaw = prim->raw & 0xfffff; } void PCSX::SoftGPU::SoftRenderer::drawingOffset(GPU::DrawingOffset *prim) { m_softDisplay.DrawOffset.x = prim->x; m_softDisplay.DrawOffset.y = prim->y; - - m_drawingOffsetRaw = prim->raw & 0x3fffff; } void PCSX::SoftGPU::SoftRenderer::maskBit(GPU::MaskBit *prim) { diff --git a/src/gpu/soft/soft.h b/src/gpu/soft/soft.h index aea4cfe6a..5e9a809d6 100644 --- a/src/gpu/soft/soft.h +++ b/src/gpu/soft/soft.h @@ -109,10 +109,6 @@ struct SoftRenderer { uint16_t m_setMask16 = 0; uint32_t m_setMask32 = 0; int32_t m_statusRet; - uint32_t m_textureWindowRaw; - uint32_t m_drawingStartRaw; - uint32_t m_drawingEndRaw; - uint32_t m_drawingOffsetRaw; SoftDisplay m_softDisplay; uint8_t *m_vram; uint16_t *m_vram16; diff --git a/src/gui/gui.cc b/src/gui/gui.cc index f3820e3c9..b4e1248c3 100644 --- a/src/gui/gui.cc +++ b/src/gui/gui.cc @@ -88,7 +88,7 @@ extern "C" { #include "support/uvfile.h" #include "support/zfile.h" #include "supportpsx/binloader.h" -#include "tracy/Tracy.hpp" +#include "tracy/public/tracy/Tracy.hpp" #ifdef _WIN32 extern "C" { @@ -171,7 +171,7 @@ static void drop_callback(GLFWwindow* window, int count, const char** paths) { void LoadImguiBindings(lua_State* lState); ImFont* PCSX::GUI::loadFont(const PCSX::u8string& name, int size, ImGuiIO& io, const ImWchar* ranges, bool combine, - bool isBaseFont) { + bool isSymbolsFont) { if (!ranges) ranges = io.Fonts->GetGlyphRangesDefault(); const System::Range knownRange = System::Range(reinterpret_cast(ranges)); @@ -183,26 +183,24 @@ ImFont* PCSX::GUI::loadFont(const PCSX::u8string& name, int size, ImGuiIO& io, c if (knownRange == System::Range::THAI) ranges = io.Fonts->GetGlyphRangesThai(); if (knownRange == System::Range::VIETNAMESE) ranges = io.Fonts->GetGlyphRangesVietnamese(); - static std::vector rangesVector; - - if (isBaseFont) { + if (isSymbolsFont) { for (unsigned i = 0; ranges[i] != 0; i++) { - rangesVector.push_back(ranges[i]); + m_baseFontRanges.push_back(ranges[i]); } - rangesVector.push_back(0x2190); // ←: U+2190 ↑: U+2191 - rangesVector.push_back(0x2193); // →: U+2192 ↓: U+2193 - rangesVector.push_back(0x25b3); // △: U+25B3 - rangesVector.push_back(0x25b3); - rangesVector.push_back(0x25ef); // ◯: U+25EF - rangesVector.push_back(0x25ef); - rangesVector.push_back(0x2610); // ☐: U+2610 - rangesVector.push_back(0x2610); - rangesVector.push_back(0x2715); // ✕: U+2715 - rangesVector.push_back(0x2715); + m_baseFontRanges.push_back(0x2190); // ←: U+2190 ↑: U+2191 + m_baseFontRanges.push_back(0x2193); // →: U+2192 ↓: U+2193 + m_baseFontRanges.push_back(0x2573); // ╳: U+2573 + m_baseFontRanges.push_back(0x2573); + m_baseFontRanges.push_back(0x25a1); // □: U+25A1 + m_baseFontRanges.push_back(0x25a1); + m_baseFontRanges.push_back(0x25b3); // △: U+25B3 + m_baseFontRanges.push_back(0x25b3); + m_baseFontRanges.push_back(0x25ef); // ◯: U+25EF + m_baseFontRanges.push_back(0x25ef); - rangesVector.push_back(0); - ranges = rangesVector.data(); + m_baseFontRanges.push_back(0); + ranges = m_baseFontRanges.data(); } decltype(s_imguiUserErrorFunctor) backup = [](const char*) {}; @@ -892,6 +890,7 @@ void PCSX::GUI::startFrame() { if (m_reloadFonts) { m_reloadFonts = false; + m_baseFontRanges.clear(); auto scales = m_allScales; if (scales.empty()) scales.emplace(1.0f); @@ -903,13 +902,13 @@ void PCSX::GUI::startFrame() { io.Fonts->AddFontDefault(); for (auto& scale : scales) { m_mainFonts[scale] = loadFont(MAKEU8("NotoSans-Regular.ttf"), settings.get().value * scale, - io, g_system->getLocaleRanges(), false, true); + io, g_system->getLocaleRanges(), false, false); for (auto e : g_system->getLocaleExtra()) { loadFont(e.first, settings.get().value * scale, io, e.second, true, false); } // try loading the japanese font for memory card manager m_hasJapanese = loadFont(MAKEU8("NotoSansCJKjp-Regular.otf"), settings.get().value * scale, - io, reinterpret_cast(PCSX::System::Range::JAPANESE), true, false); + io, reinterpret_cast(PCSX::System::Range::JAPANESE), true, true); m_monoFonts[scale] = loadFont(MAKEU8("NotoMono-Regular.ttf"), settings.get().value * scale, io, nullptr, false, false); } @@ -1950,7 +1949,7 @@ the update and manually apply it.)"))); L.setfield("DrawImguiFrame", LUA_GLOBALSINDEX); } - FrameMark + FrameMark; } bool PCSX::GUI::configure() { diff --git a/src/gui/gui.h b/src/gui/gui.h index 90e872a12..f1f1e187d 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -308,6 +308,7 @@ class GUI final : public UI { GLuint m_VRAMTexture = 0; NVGcontext *m_nvgContext = nullptr; std::map m_nvgSubContextes; + std::vector m_baseFontRanges; unsigned int m_offscreenFrameBuffer = 0; unsigned int m_offscreenTextures[2] = {0, 0}; @@ -441,7 +442,7 @@ class GUI final : public UI { float m_currentScale = 1.0f; ImFont *loadFont(const PCSX::u8string &name, int size, ImGuiIO &io, const ImWchar *ranges, bool combine, - bool isBaseFont); + bool isSymbolsFont); bool m_reloadFonts = true; Widgets::ShaderEditor m_outputShaderEditor = {"output"}; diff --git a/src/lua/fileffi.lua b/src/lua/fileffi.lua index e07aaf320..1066ee713 100644 --- a/src/lua/fileffi.lua +++ b/src/lua/fileffi.lua @@ -173,6 +173,7 @@ local function createFileWrapper(wrapper) close = function(self) Support.extra.safeFFI('File::close', C.closeFile, self._wrapper) end, read = read, readAt = readAt, + gets = function(self) return Support._internal.readFileGets(self._wrapper) end, write = write, writeAt = writeAt, writeMoveSlice = writeMoveSlice, diff --git a/src/lua/luafile.cc b/src/lua/luafile.cc index 7568f5be9..d51c5bf12 100644 --- a/src/lua/luafile.cc +++ b/src/lua/luafile.cc @@ -214,6 +214,17 @@ int readFileUserDataAt(PCSX::Lua L) { return 1; } +int readFileGets(PCSX::Lua L) { + if (L.gettop() != 1) return L.error("Invalid number of arguments to readFileGets"); + + if (!L.iscdata(1)) return L.error("readFileGets: arg 1 not a cdata"); + + LuaFile* wrapper = *L.topointer(1); + + L.push(wrapper->file->gets()); + return 1; +} + int writeFileUserData(PCSX::Lua L) { if (L.gettop() != 2) return L.error("Invalid number of arguments to writeFileUserData"); @@ -363,6 +374,7 @@ void PCSX::LuaFFI::open_file(Lua L) { L.getfieldtable("_internal"); L.declareFunc("readFileUserData", readFileUserData, -1); L.declareFunc("readFileUserDataAt", readFileUserDataAt, -1); + L.declareFunc("readFileGets", readFileGets, -1); L.declareFunc("writeFileUserData", writeFileUserData, -1); L.declareFunc("writeFileUserDataAt", writeFileUserData, -1); L.declareFunc("createPBSliceFromBuffer", createPBSliceFromBuffer, -1); diff --git a/src/main/main.cc b/src/main/main.cc index 8188f4da6..ad682c958 100644 --- a/src/main/main.cc +++ b/src/main/main.cc @@ -17,6 +17,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * ***************************************************************************/ +#include #include #include #include @@ -40,7 +41,7 @@ #include "support/binpath.h" #include "support/uvfile.h" #include "support/version.h" -#include "tracy/Tracy.hpp" +#include "tracy/public/tracy/Tracy.hpp" static PCSX::UI *s_ui; @@ -191,10 +192,12 @@ int pcsxMain(int argc, char **argv) { // Creating the "system" global object first, making sure anything logging-related is // enabled as much as possible. SystemImpl *system = new SystemImpl(args); + PCSX::g_system = system; + auto sigint = std::signal(SIGINT, [](auto signal) { PCSX::g_system->quit(-1); }); + auto sigterm = std::signal(SIGTERM, [](auto signal) { PCSX::g_system->quit(-1); }); const auto &logfileArgOpt = args.get("logfile"); const PCSX::u8string logfileArg = MAKEU8(logfileArgOpt.has_value() ? logfileArgOpt->c_str() : ""); if (!logfileArg.empty()) system->useLogfile(logfileArg); - PCSX::g_system = system; std::filesystem::path self = PCSX::BinPath::getExecutablePath(); std::filesystem::path binDir = std::filesystem::absolute(self).parent_path(); system->setBinDir(binDir); @@ -383,7 +386,7 @@ runner.init({ // First, set up a closer. This makes sure that everything is shut down gracefully, // in the right order, once we exit the scope. This is because of how we're still // allowing exceptions to occur. - Cleaner cleaner([&emulator, &system, &exitCode, luacovEnabled]() { + Cleaner cleaner([&emulator, &system, &exitCode, luacovEnabled, sigint, sigterm]() { emulator->m_spu->close(); emulator->m_cdrom->clearIso(); @@ -402,6 +405,8 @@ runner.init({ PCSX::g_emulator = nullptr; exitCode = system->exitCode(); + std::signal(SIGINT, sigint); + std::signal(SIGTERM, sigterm); delete system; PCSX::g_system = nullptr; }); diff --git a/src/mips/common/hardware/hwregs.h b/src/mips/common/hardware/hwregs.h index 8a3c90d72..7e0e1087f 100644 --- a/src/mips/common/hardware/hwregs.h +++ b/src/mips/common/hardware/hwregs.h @@ -70,4 +70,7 @@ struct SIO { #define ATCONS_IRQ HW_U8(0x1f802030) #define ATCONS_IRQ2 HW_U8(0x1f802032) +#define SYS573_WATCHDOG HW_U16(0x1f5c0000) +#define SYS573_7SEG_POST HW_U16(0x1f640010) + #define POST HW_U8(0xbf802041) diff --git a/src/mips/common/hardware/hwregs.inc b/src/mips/common/hardware/hwregs.inc index 52f29edb5..f277f9ea8 100644 --- a/src/mips/common/hardware/hwregs.inc +++ b/src/mips/common/hardware/hwregs.inc @@ -24,18 +24,22 @@ SOFTWARE. */ -.set SBUS_DEV0_ADDR, 0x1f801000 -.set SBUS_DEV8_ADDR, 0x1f801004 +.set SBUS_DEV0_ADDR, 0x1f801000 +.set SBUS_DEV8_ADDR, 0x1f801004 -.set SBUS_DEV0_CTRL, 0x1f801008 -.set SBUS_DEV1_CTRL, 0x1f80100C -.set SBUS_DEV2_CTRL, 0x1f801010 -.set SBUS_DEV4_CTRL, 0x1f801014 -.set SBUS_DEV5_CTRL, 0x1f801018 -.set SBUS_DEV8_CTRL, 0x1f80101C +.set SBUS_DEV0_CTRL, 0x1f801008 +.set SBUS_DEV1_CTRL, 0x1f80100C +.set SBUS_DEV2_CTRL, 0x1f801010 +.set SBUS_DEV4_CTRL, 0x1f801014 +.set SBUS_DEV5_CTRL, 0x1f801018 +.set SBUS_DEV8_CTRL, 0x1f80101C -.set SBUS_COM_CTRL, 0x1f801020 +.set SBUS_COM_CTRL, 0x1f801020 -.set RAM_SIZE, 0x1f801060 +.set RAM_SIZE, 0x1f801060 -.set BIU_CONFIG, 0xfffe0130 +.set BIU_CONFIG, 0xfffe0130 + +.set SYS573_JAMMA_P2_EXT, 0x1f40000e +.set SYS573_WATCHDOG, 0x1f5c0000 +.set SYS573_7SEG_POST, 0x1f640010 diff --git a/src/mips/common/hardware/sio1.c b/src/mips/common/hardware/sio1.c index 2043f6cec..c09409bc0 100644 --- a/src/mips/common/hardware/sio1.c +++ b/src/mips/common/hardware/sio1.c @@ -29,8 +29,9 @@ SOFTWARE. #include "common/hardware/hwregs.h" void sio1_init() { - // enable TX and RX, and nothing else - SIO1_CTRL = 5; + // TX and RX enabled, all other bits disabled + // RTS on (for systems that loop it back to CTS, e.g. 573) + SIO1_CTRL = 0x25; // 01001110 // Baudrate Reload Factor: MUL16 (2) // Character length: 8 (3) diff --git a/src/mips/openbios/Makefile b/src/mips/openbios/Makefile index 8a4e62eeb..c3f8d7082 100644 --- a/src/mips/openbios/Makefile +++ b/src/mips/openbios/Makefile @@ -1,4 +1,5 @@ BOOT ?= rom +BOARD ?= psx TARGET = openbios TYPE = bin @@ -6,7 +7,7 @@ TYPE = bin SRCS = \ ../common/hardware/sio1.c \ ../common/psxlibc/fastmemset.s \ -boot/boot.s \ +boot/$(BOARD).s \ card/backupunit.c \ card/device.c \ cdrom/cdrom.c \ @@ -35,6 +36,7 @@ kernel/threads.c \ kernel/util.c \ kernel/vectors.s \ main/main.c \ +main/splash.c \ pio/pio.c \ shell/shell.c \ sio0/busyloop.s \ @@ -85,6 +87,23 @@ uC-sdk-glue/init.c \ ../../../third_party/uC-sdk/os/src/init.c \ ../../../third_party/uC-sdk/os/src/osdebug.c \ +# Ensure all files are always cleaned up. +ifeq ($(MAKECMDGOALS),clean) +SRCS += boot/psx.s boot/system573.s font1.o font2.o ./psexe_data.o +endif +ifeq ($(MAKECMDGOALS),deepclean) +SRCS += boot/psx.s boot/system573.s font1.o font2.o ./psexe_data.o +endif + +CPPFLAGS = + +ifeq ($(BOARD),system573) +CPPFLAGS += -DOPENBIOS_BOARD_SYS573 +# The 573 does not support CD-ROM or cheat cart booting. +BOOT = rom +BOOT_MODE = psexe +endif + ifeq ($(BOOT),rom) LDSCRIPT = $(ROOTDIR)openbios/psx-bios.ld SRCS += font1.o font2.o @@ -92,7 +111,7 @@ else LDSCRIPT = $(ROOTDIR)openbios/psx-bios-as-cart.ld endif -CPPFLAGS = -DNOFLOATINGPOINT -DXPRINTFNOALLOC -DXPRINTFNOSTDIO +CPPFLAGS += -DNOFLOATINGPOINT -DXPRINTFNOALLOC -DXPRINTFNOSTDIO CPPFLAGS += -I../../../third_party/uC-sdk/libc/include CPPFLAGS += -I../../../third_party/uC-sdk/os/include CPPFLAGS += -IuC-sdk-glue @@ -103,7 +122,17 @@ SRCS += ./psexe_data.o endif ifneq ($(FASTBOOT),) -CPPFLAGS += -DOPENBIOS_FASTBOOT +BOOT_MODE ?= fast +endif + +ifeq ($(BOOT_MODE),fast) +CPPFLAGS += -DOPENBIOS_BOOT_MODE_NO_SHELL +else ifeq ($(BOOT_MODE),psexe) +CPPFLAGS += -DOPENBIOS_BOOT_MODE_NO_SHELL -DOPENBIOS_BOOT_MODE_NO_CDROM +endif + +ifneq ($(SPLASH_SCREEN),) +CPPFLAGS += -DOPENBIOS_SHOW_SPLASH_SCREEN endif ifneq ($(INSTALL_TTY_CONSOLE),) @@ -114,9 +143,12 @@ include ../common.mk ../shell/shell_data.o: shell +# The executable is aligned to 32 bytes in order to make it easier for tools and +# homebrew apps to locate it by searching the ROM. ./psexe_data.o: $(EMBED_PSEXE) cp $(EMBED_PSEXE) psexe.bin - $(PREFIX)-objcopy -I binary --set-section-alignment .data=4 --rename-section .data=.rodata,alloc,load,readonly,data,contents -O $(FORMAT) -B mips psexe.bin psexe_data.o + $(PREFIX)-objcopy -I binary --set-section-alignment .data=32 --rename-section .data=.rodata,alloc,load,readonly,data,contents -O $(FORMAT) -B mips psexe.bin psexe_data.o + rm -f psexe.bin ./font1.o: charset/font1.raw $(PREFIX)-objcopy -I binary --set-section-alignment .data=4 --rename-section .data=.font1,alloc,load,readonly,data,contents -O $(FORMAT) -B mips charset/font1.raw font1.o diff --git a/src/mips/openbios/README.md b/src/mips/openbios/README.md index 679fd273c..211cb323c 100644 --- a/src/mips/openbios/README.md +++ b/src/mips/openbios/README.md @@ -29,11 +29,15 @@ It is also possible to build using any PS1 compatible compiler, but this isn't t The result of the compilation should be a file called `openbios.elf` that contains all useful debugging symbols, and a file called `openbios.bin` which can be used in emulators or even burned to a chip and placed on a retail console. The Makefile features several toggles to mutate the way the compilation works. Don't forget to run `make clean` prior to try a different set of compilation options. - - `BUILD=SmallDebug` will produce a working, yet somewhat debuggable version of the code. - - `BOOT=cart` will produce a rom that's flashable on cheat carts like the action replay. This will disable booting from a cart, since it'd otherwise obviously lead to an infinite boot. - - `EMBED_PSEXE=binary.ps-exe` will make the bios embed the specified ps-exe binary, and run it before running the shell. - - `FASTBOOT=true` will skip running the shell and try booting the CD-Rom immediately. The code will not attempt re-reading the CD-Rom if inserted after booting. - - `INSTALL_TTY_CONSOLE=true` will make OpenBIOS install its tty driver, instead of the null driver. The driver will be the same as the DTL-H2000 console, which is simpler than the default DUART driver from the retail bios. + +- `BUILD=SmallDebug` will produce a working, yet somewhat debuggable version of the code. +- `BOOT=cart` will build the kernel as an expansion port ROM, bootable from an Action Replay or similar cheat carts. This will disable support for booting from a cart in order to prevent bootlooping. +- `BOARD=system573` will build a kernel that can run on the Konami System 573 arcade board. Note that this option is only useful alongside `EMBED_PSEXE`, as it will force `BOOT=rom` and `BOOT_MODE=psexe` due to the 573's different CD-ROM hardware. +- `EMBED_PSEXE=binary.ps-exe` will embed the specified executable into the kernel and run it before the shell. +- `BOOT_MODE=fast` will skip running the shell and try booting from the CD-ROM after the embedded executable returns, or immediately on boot if `EMBED_PSEXE` is not used. Note that the code will *not* wait for a disc to be inserted after the executable returns. The old `FASTBOOT=true` option is kept for compatibility and is equivalent to `BOOT_MODE=fast`. +- `BOOT_MODE=psexe` will remove the shell and CD-ROM boot code altogether. This is meant to be used alongside `EMBED_PSEXE` to build ROMs for arcade systems and such, which typically use non-standard storage devices and require a custom shell. +- `SPLASH_SCREEN=true` will make the kernel display color bars on screen during initialization. This is also done by some official non-retail BIOS variants and is useful when using the `EMBED_PSEXE` option with a large (100+ KB) binary, as relocating it to RAM will take a couple of seconds. +- `INSTALL_TTY_CONSOLE=true` will make OpenBIOS install a DTL-H2000 host console driver in place of the default "dummy" TTY driver. Note that this is *not* the DUART driver found in a retail BIOS. ## Status @@ -49,7 +53,7 @@ While the first part is the main one that's being targeted here, the second one The original code was most likely chunked into several sub-projects, that were all linked together like a giant patchwork. This approach is less readable, and for this reason, we're not going to do this. However this will result in the ROM/RAM split to be less obvious, and slower at times than the original. Tuning of the hot functions is eventually required. -The startup point for the ROM version is the function `_reset` located in [`boot/boot.s`](boot/boot.s). The rom cart version is the function `_cartBoot` in the same file. +The startup point for the ROM version is the function `_reset` located in [`boot/psx.s`](boot/psx.s) (or [`boot/system573.s`](boot/system573.s) depending on which board the kernel is compiled for). The rom cart version is the function `_cartBoot` in the same file. ## Direction @@ -57,7 +61,7 @@ The primary repository for this project is a subdirectory of PCSX-Redux at the m ## Technicalities -The code has been rewritten based off the reverse engineering of a dump of the BIOS of an american SCPH-7001 machine. MD5sum: 1e68c231d0896b7eadcad1d7d8e76129 +The code has been rewritten based off the reverse engineering of a dump of the BIOS of an american SCPH-7001 machine (MD5 `1e68c231d0896b7eadcad1d7d8e76129`). The System 573 specific parts are based on the kernel of the Konami 700B01 ROM (MD5 `d6960997e499f39047b64fa73e6ff382`). The ghidra database for it is currently being hosted on a server, alongside a few other pieces of software being reversed. Contact one of the authors if you want access. diff --git a/src/mips/openbios/boot/boot.s b/src/mips/openbios/boot/psx.s similarity index 100% rename from src/mips/openbios/boot/boot.s rename to src/mips/openbios/boot/psx.s diff --git a/src/mips/openbios/boot/system573.s b/src/mips/openbios/boot/system573.s new file mode 100644 index 000000000..d1adef1e1 --- /dev/null +++ b/src/mips/openbios/boot/system573.s @@ -0,0 +1,238 @@ +/* + +MIT License + +Copyright (c) 2019 PCSX-Redux authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +.include "common/hardware/hwregs.inc" + + .section .boot, "ax", @progbits + .align 2 + .global flushCache + .global _reset + .type _reset, @function + +_reset: + /* set bios memory bus width and speed. */ + li $t0, (19 << 16) | 0x243f + sw $t0, SBUS_DEV2_CTRL + + /* psx.s configures the DRAM controller here, but we are going to do that + after setting up DEV0/EXP1 as we have to probe a bit in there first. */ + nop + nop + nop + nop + + /* this may be here to let the hardware pick up the new bus settings + before moving on with the actual code. Also, some tools like IDA + or even PCSX-Redux use it as a signature to detect this is a PS1 + BIOS file. */ + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + + /* jumping over the interrupt vector. */ + j _boot + +.ascii "OpenBIOS" + + .section .text._boot, "ax", @progbits + .align 2 + .global _boot + .type _boot, @function + +_boot: + /* initializing all of the buses now */ + li $t0, 0x31125 + sw $t0, SBUS_COM_CTRL + + li $t0, 0x1f000000 + sw $t0, SBUS_DEV0_ADDR + + li $t0, 0x1f802000 + sw $t0, SBUS_DEV8_ADDR + + /* 8 MB with a 16-bit bus, different value from the default one in psx.s */ + li $t0, 0x24173f47 + sw $t0, SBUS_DEV0_CTRL + + li $t0, 0x200931e1 + sw $t0, SBUS_DEV4_CTRL + + li $t0, 0x20843 + sw $t0, SBUS_DEV5_CTRL + + li $t0, 0x3022 + sw $t0, SBUS_DEV1_CTRL + + /* The original code uses 70777 here, but we have + some debugging routines hitting 0x1f802080, + beyond the normal range, so we need to extend it, + to avoid crashes on the real hardware. */ + li $t0, 0x80777 + sw $t0, SBUS_DEV8_CTRL + + /* Clear the watchdog. */ + sh $0, SYS573_WATCHDOG + + /* The 700B01 BIOS uses the following code to determine whether the board + is an older one with eight 512 KB RAM chips, or a revision D populated + with two 2 MB chips. The 700A01 BIOS predates such revision and always + sets the RAM size register to 0xc80. */ + lhu $t1, SYS573_JAMMA_P2_EXT + li $t0, 0xc80 + andi $t1, 1 << 10 + bnez $t1, old_board_revision + +new_board_revision: + li $t0, 0x4788 + +old_board_revision: + sw $t0, RAM_SIZE + + /* clearing out all registers */ + .set push + .set noat + move $1, $0 + .set pop + move $2, $0 + move $3, $0 + move $4, $0 + move $5, $0 + move $6, $0 + move $7, $0 + move $8, $0 + move $9, $0 + move $10, $0 + move $11, $0 + move $12, $0 + move $13, $0 + move $14, $0 + move $15, $0 + move $16, $0 + move $17, $0 + move $18, $0 + move $19, $0 + move $20, $0 + move $21, $0 + move $22, $0 + move $23, $0 + move $24, $0 + move $25, $0 + move $26, $0 + move $27, $0 + move $28, $0 + move $29, $0 + move $30, $0 + move $31, $0 + + jal flushCache + + /* ensuring cop0 is fully reset */ + mtc0 $0, $7 + nop + mtc0 $0, $3 + nop + mtc0 $0, $5 + nop + mtc0 $0, $6 + nop + mtc0 $0, $9 + nop + mtc0 $0, $11 + nop + mtc0 $0, $12 + nop + mtc0 $0, $13 + nop + + /* Extra from OpenBIOS, not in the original BIOS: + Enable cop2, as some games may rely on it being + enabled as a side effect of the shell running, + and our replacement shell does not enable it. */ + lui $t0, 0x4000 + mtc0 $t0, $12 + nop + + /* Now we are ready for a typical crt0. + The original bios does not do this, most likely + for speed reasons. It would be more efficient to + run these loops in RAM instead of the ROM. But + we have enough code that would rely in all this + to be set up already before starting, it would + be a mistake to not do it here. */ + la $t0, __data_start + la $t1, __data_end + la $t2, __rom_data_start + + beq $t0, $t1, data_copy_skip + +data_copy: + lw $t3, 0($t2) + sw $t3, 0($t0) + addiu $t0, 4 + addiu $t2, 4 + bne $t0, $t1, data_copy + +data_copy_skip: + la $t0, __bss_start + la $t1, __bss_end + + beq $t0, $t1, bss_init_skip + +bss_init: + sw $0, 0($t0) + addiu $t0, 4 + bne $t0, $t1, bss_init + +bss_init_skip: + /* technically have to set $gp, but we are not using it, so, not */ + la $sp, __sp + move $fp, $sp + + jal _ucsdk_start + + li $t0, 0x1f802080 + li $t1, 10 + sb $t1, 0($t0) + sb $t1, 1($t0) +stop: + b stop diff --git a/src/mips/openbios/kernel/handlers.c b/src/mips/openbios/kernel/handlers.c index b923e9234..90512eaba 100644 --- a/src/mips/openbios/kernel/handlers.c +++ b/src/mips/openbios/kernel/handlers.c @@ -294,6 +294,7 @@ void copyDataAndInitializeBSS() { We can't rely on the code to already exist in RAM, so we have to do this in ROM, which will be slower. */ memcpy(&__data_start, &__rom_data_start, __data_len); + clearWatchdog(); /* The original code does this step by jumping into 0x500. Likely the intend being that there's a faster memset at this location, for the specific purpose of handling diff --git a/src/mips/openbios/main/main.c b/src/mips/openbios/main/main.c index cda784153..383c2f7cb 100644 --- a/src/mips/openbios/main/main.c +++ b/src/mips/openbios/main/main.c @@ -47,6 +47,7 @@ SOFTWARE. #include "openbios/kernel/setjmp.h" #include "openbios/kernel/threads.h" #include "openbios/kernel/util.h" +#include "openbios/main/splash.h" #include "openbios/pio/pio.h" #include "openbios/shell/shell.h" #include "openbios/tty/tty.h" @@ -54,6 +55,9 @@ SOFTWARE. static void boot(char *systemCnfPath, char *binaryPath); void bootThunk() { +#ifdef OPENBIOS_BOOT_MODE_NO_CDROM + boot(NULL, NULL); +#else char binaryPath[80]; char systemCnfPath[80]; @@ -62,6 +66,7 @@ void bootThunk() { strcpy(binaryPath, "cdrom:"); strcat(binaryPath, "PSX.EXE;1"); boot(systemCnfPath, binaryPath); +#endif } int main() { @@ -75,8 +80,20 @@ int main() { POST = 0x0f; muteSpu(); - if (checkExp1PreHookLicense()) runExp1PreHook(); + // Pre- and post-boot hooks are implemented in the retail BIOS through two + // separate functions for each hook, one in charge of validating the + // signature and the other actually jumping to the vector. For simplicity's + // sake, both steps are combined into a call to a single function here. The + // 573 kernel lacks these calls completely (rather than stubbing out the + // function's body as done here). + runExp1PreHook(); POST = 0x0e; + + // Same as above, the retail BIOS lacks the drawSplashScreen() call + // completely instead of merely stubbing out the function. Note that this + // functionality is in no way 573-specific, so it makes sense to allow + // enabling it regardless of the target platform. + drawSplashScreen(); g_installTTY = 0; bootThunk(); } @@ -284,8 +301,14 @@ static void boot(char *systemCnfPath, char *binaryPath) { writeCOP0Status(readCOP0Status() & ~0x401); muteSpu(); POST = 2; + // The 573 kernel kicks the watchdog before, after and in the middle of + // copyDataAndInitializeBSS(), as it is by far the slowest part of the + // initialization sequence. clearWatchdog() is an inline function that does + // nothing in non-573 builds (see main.h). + clearWatchdog(); copyDataAndInitializeBSS(); POST = 3; + clearWatchdog(); copyA0table(); installKernelHandlers(); syscall_patchA0table(); @@ -341,12 +364,15 @@ static void boot(char *systemCnfPath, char *binaryPath) { // always passed down to the shell is 0x07, due to the POST // set just above, and the way this is deterministic. startShell(7); + +#ifndef OPENBIOS_BOOT_MODE_NO_CDROM POST = 8; IMASK = 0; IREG = 0; initCDRom(); SETJMPFATAL(0x399); - if (checkExp1PostHookLicense()) runExp1PostHook(); + // See the note about hooks in main(). + runExp1PostHook(); psxprintf("\nBOOTSTRAP LOADER\n"); SETJMPFATAL(0x386); POST = 9; @@ -387,6 +413,8 @@ static void boot(char *systemCnfPath, char *binaryPath) { enterCriticalSection(); SETJMPFATAL(0x38b); gameMainThunk(&s_binaryInfo, 1, NULL); +#endif + psxprintf("End of Main\n"); fatal(0x38c); } diff --git a/src/mips/openbios/main/main.h b/src/mips/openbios/main/main.h index 269269d38..c8edae03a 100644 --- a/src/mips/openbios/main/main.h +++ b/src/mips/openbios/main/main.h @@ -26,8 +26,20 @@ SOFTWARE. #pragma once +#include "common/hardware/hwregs.h" #include "common/psxlibc/setjmp.h" +// The original 700B01 kernel clears the watchdog using inline code in some +// places and a subroutine call in others. As there is no point in replicating +// this inconsistency, we are going to always use an inline function for this +// purpose. This additionally lets us easily stub out all watchdog calls for +// non-573 builds in a single place. +static inline void clearWatchdog() { +#ifdef OPENBIOS_BOARD_SYS573 + SYS573_WATCHDOG = 0; +#endif +} + void setConfiguration(int eventsCount, int taskCount, void* stackBase); void getConfiguration(int* eventsCount, int* taskCount, void** stackBase); diff --git a/src/mips/openbios/main/splash.c b/src/mips/openbios/main/splash.c new file mode 100644 index 000000000..65ac8e058 --- /dev/null +++ b/src/mips/openbios/main/splash.c @@ -0,0 +1,70 @@ +/* + +MIT License + +Copyright (c) 2024 PCSX-Redux authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +#include "openbios/main/splash.h" + +#include + +#include "common/hardware/gpu.h" +#include "common/hardware/hwregs.h" + +static const union Color s_colors[] = {{.r = 255, .g = 255, .b = 255}, {.r = 255, .g = 255, .b = 0}, + {.r = 0, .g = 255, .b = 255}, {.r = 0, .g = 255, .b = 0}, + {.r = 255, .g = 0, .b = 255}, {.r = 255, .g = 0, .b = 0}, + {.r = 0, .g = 0, .b = 255}, {.r = 0, .g = 0, .b = 0}}; + +// The original version of this function (as found in the 573 BIOS) invokes a +// subroutine repeatedly in order to draw each color bar, rather than using an +// array and a loop, and has several completely unnecessary checks. This is a +// much simpler and more straightforward but functionally equivalent +// implementation. +void drawSplashScreen() { +#ifdef OPENBIOS_SHOW_SPLASH_SCREEN + struct DisplayModeConfig config = {.hResolution = HR_256, + .vResolution = VR_240, + .videoMode = VM_NTSC, + .colorDepth = CD_15BITS, + .videoInterlace = VI_OFF, + .hResolutionExtended = HRE_NORMAL}; + + GPU_STATUS = 0x00000000; // Reset + setDisplayArea(0, 0); + setHorizontalRange(0, 256 * 10); + setVerticalRange(16, 255); + setDisplayMode(&config); + + const int barCount = sizeof(s_colors) / sizeof(union Color); + struct FastFill ff = {.c = 0, .x = 0, .y = 0, .w = 256 / barCount, .h = 240}; + + for (int i = 0; i < barCount; i++, ff.x += ff.w) { + ff.c.packed = s_colors[i].packed; + fastFill(&ff); + } + + waitGPU(); + enableDisplay(); +#endif +} diff --git a/src/mips/openbios/main/splash.h b/src/mips/openbios/main/splash.h new file mode 100644 index 000000000..f0f121d6b --- /dev/null +++ b/src/mips/openbios/main/splash.h @@ -0,0 +1,29 @@ +/* + +MIT License + +Copyright (c) 2024 PCSX-Redux authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +#pragma once + +void drawSplashScreen(); diff --git a/src/mips/openbios/pio/pio.c b/src/mips/openbios/pio/pio.c index 33b1621a0..6a56ae5f8 100644 --- a/src/mips/openbios/pio/pio.c +++ b/src/mips/openbios/pio/pio.c @@ -42,10 +42,14 @@ static int is_running_from_rom() { return _reset == (const char *)0xbfc00000; } static const char *const licenseText = "Licensed by Sony Computer Entertainment Inc."; -int checkExp1PreHookLicense() { return is_running_from_rom() && strcmp(preHookInfo->signature, licenseText) == 0; } - -void runExp1PreHook() { preHookInfo->vector(); } - -int checkExp1PostHookLicense() { return is_running_from_rom() && strcmp(postHookInfo->signature, licenseText) == 0; } - -void runExp1PostHook() { postHookInfo->vector(); } +void runExp1PreHook() { +#ifndef OPENBIOS_BOARD_SYS573 + if (is_running_from_rom() && (strcmp(preHookInfo->signature, licenseText) == 0)) preHookInfo->vector(); +#endif +} + +void runExp1PostHook() { +#ifndef OPENBIOS_BOARD_SYS573 + if (is_running_from_rom() && (strcmp(postHookInfo->signature, licenseText) == 0)) postHookInfo->vector(); +#endif +} diff --git a/src/mips/openbios/pio/pio.h b/src/mips/openbios/pio/pio.h index b0d0046fd..2081d991c 100644 --- a/src/mips/openbios/pio/pio.h +++ b/src/mips/openbios/pio/pio.h @@ -26,7 +26,5 @@ SOFTWARE. #pragma once -int checkExp1PreHookLicense(); void runExp1PreHook(); -int checkExp1PostHookLicense(); void runExp1PostHook(); diff --git a/src/mips/openbios/shell/shell.c b/src/mips/openbios/shell/shell.c index 8dfafb059..2e0fa1312 100644 --- a/src/mips/openbios/shell/shell.c +++ b/src/mips/openbios/shell/shell.c @@ -27,32 +27,53 @@ SOFTWARE. #include "openbios/shell/shell.h" #include +#include #include #include #include "openbios/kernel/flushcache.h" +#include "openbios/main/main.h" extern const uint8_t _binary_shell_bin_start[]; extern const uint8_t _binary_shell_bin_end[]; extern const uint32_t _binary_psexe_bin_start[]; extern const uint32_t _binary_psexe_bin_end[]; +static void copyExecutableData(uintptr_t dest, uintptr_t source, size_t length) { + // On platforms with a watchdog (currently only the 573), larger binaries + // must be copied in smaller chunks in order to make sure the watchdog is + // cleared frequently enough. Konami's kernel offloads this task to a + // separate binary in the BIOS ROM - with a "Lisenced by Sony" [sic] + // signature similar to the one required for EXP1 hooks - which then + // proceeds to chainload the actual shell into memory. + while (length > 0) { + size_t chunkLength = (length > 0x8000) ? 0x8000 : length; + memcpy((void *)dest, (const void *)source, chunkLength); + clearWatchdog(); + dest += chunkLength; + source += chunkLength; + length -= chunkLength; + } +} + int startShell(uint32_t arg) { + clearWatchdog(); #ifdef OPENBIOS_USE_EMBEDDED_PSEXE if (strncmp("PS-X EXE", (const char *)_binary_psexe_bin_start, 8) == 0) { const uint32_t *header = _binary_psexe_bin_start; - memcpy((uint8_t *)header[6], &_binary_psexe_bin_start[512], header[7]); + copyExecutableData(header[6], (uintptr_t)&_binary_psexe_bin_start[512], header[7]); flushCache(); ((void (*)(int, char **))header[4])(0, NULL); } #endif -#ifdef OPENBIOS_FASTBOOT +#ifdef OPENBIOS_BOOT_MODE_NO_SHELL // Embed a simple jr $ra / nop to simulate a shell being copied and run, // so cheat cart hooks and other tricks can still work properly. - static const uint32_t dummy[2] = {0x03e00008, 0}; - memcpy((uint32_t *)0x80030000, dummy, sizeof(dummy)); + uint32_t *shell = (uint32_t *)0x80030000; + shell[0] = 0x03e00008; + shell[1] = 0; #else - memcpy((uint32_t *)0x80030000, _binary_shell_bin_start, _binary_shell_bin_end - _binary_shell_bin_start); + copyExecutableData(0x80030000, (uintptr_t)_binary_shell_bin_start, _binary_shell_bin_end - _binary_shell_bin_start); #endif flushCache(); return ((int (*)(int))0x80030000)(arg); diff --git a/src/mips/psyqo/GETTING_STARTED.md b/src/mips/psyqo/GETTING_STARTED.md index e735736e5..d7000f8e7 100644 --- a/src/mips/psyqo/GETTING_STARTED.md +++ b/src/mips/psyqo/GETTING_STARTED.md @@ -43,7 +43,7 @@ The computer might need to be rebooted after the installation of this script. Next, run the following command to install the proper toolchain and its dependencies: ```cmd -mips install 13.2.0 +mips install 14.2.0 ``` ## Docker diff --git a/src/mips/psyqo/examples/gte/gte.cpp b/src/mips/psyqo/examples/gte/gte.cpp index bb7682c23..d91bfc476 100644 --- a/src/mips/psyqo/examples/gte/gte.cpp +++ b/src/mips/psyqo/examples/gte/gte.cpp @@ -26,7 +26,6 @@ SOFTWARE. #include -#include "common/syscalls/syscalls.h" #include "psyqo/application.hh" #include "psyqo/fixed-point.hh" #include "psyqo/font.hh" diff --git a/src/mips/psyqo/examples/torus/Makefile b/src/mips/psyqo/examples/torus/Makefile new file mode 100644 index 000000000..ed95c8329 --- /dev/null +++ b/src/mips/psyqo/examples/torus/Makefile @@ -0,0 +1,14 @@ +TARGET = torus +TYPE = ps-exe + +SRCS = \ +torus.cpp \ + +ifeq ($(TEST),true) +CPPFLAGS = -Werror +endif +CXXFLAGS = -std=c++20 + +LDFLAGS += -Wl,-wrap,memcpy -Wl,-wrap,memset + +include ../../psyqo.mk diff --git a/src/mips/psyqo/examples/torus/README.md b/src/mips/psyqo/examples/torus/README.md new file mode 100644 index 000000000..8d45e800d --- /dev/null +++ b/src/mips/psyqo/examples/torus/README.md @@ -0,0 +1,5 @@ +# Torus example + +This example contains a very extensive example of how to do 3D using psyqo. It'll render an animated torus with a texture on it, as well as a projected shadow underneath. The code is extensively commented. + +The triangle and cross buttons of the pad can be used to change its color. diff --git a/src/mips/psyqo/examples/torus/presets.hh b/src/mips/psyqo/examples/torus/presets.hh new file mode 100644 index 000000000..99d208bfd --- /dev/null +++ b/src/mips/psyqo/examples/torus/presets.hh @@ -0,0 +1,303 @@ +/* + +MIT License + +Copyright (c) 2024 PCSX-Redux authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +// These are the color presets for the torus demo. They are stored in a +// separate file to keep the main source file clean, but the fact this is +// a header file is an implementation detail and isn't reusable. + +// Each preset is a 256-entry lookup table of RGB colors. The colors are +// going to be used as vertex colors, and the vertex colors are going to +// be interpolated across the triangles that make up the torus using +// gouraud shading. The exact selected color for each vertex will depend +// on the rotated z-value of the vertex normal. + +// metallic gold +static constexpr psyqo::Color m_lut1[256] = { + {{.r = 39, .g = 42, .b = 4}}, {{.r = 42, .g = 44, .b = 4}}, {{.r = 43, .g = 45, .b = 5}}, + {{.r = 46, .g = 47, .b = 5}}, {{.r = 48, .g = 49, .b = 5}}, {{.r = 51, .g = 51, .b = 6}}, + {{.r = 53, .g = 52, .b = 7}}, {{.r = 56, .g = 53, .b = 7}}, {{.r = 59, .g = 56, .b = 8}}, + {{.r = 62, .g = 57, .b = 8}}, {{.r = 64, .g = 59, .b = 9}}, {{.r = 66, .g = 61, .b = 9}}, + {{.r = 69, .g = 63, .b = 9}}, {{.r = 72, .g = 64, .b = 9}}, {{.r = 74, .g = 66, .b = 11}}, + {{.r = 77, .g = 67, .b = 11}}, {{.r = 78, .g = 68, .b = 11}}, {{.r = 81, .g = 70, .b = 12}}, + {{.r = 84, .g = 72, .b = 12}}, {{.r = 86, .g = 74, .b = 12}}, {{.r = 89, .g = 75, .b = 13}}, + {{.r = 91, .g = 76, .b = 14}}, {{.r = 93, .g = 78, .b = 14}}, {{.r = 95, .g = 80, .b = 14}}, + {{.r = 98, .g = 81, .b = 14}}, {{.r = 100, .g = 83, .b = 15}}, {{.r = 103, .g = 84, .b = 16}}, + {{.r = 105, .g = 86, .b = 16}}, {{.r = 107, .g = 87, .b = 17}}, {{.r = 110, .g = 89, .b = 17}}, + {{.r = 113, .g = 91, .b = 18}}, {{.r = 114, .g = 93, .b = 18}}, {{.r = 117, .g = 94, .b = 19}}, + {{.r = 120, .g = 95, .b = 19}}, {{.r = 122, .g = 96, .b = 20}}, {{.r = 124, .g = 98, .b = 20}}, + {{.r = 127, .g = 100, .b = 20}}, {{.r = 129, .g = 101, .b = 21}}, {{.r = 131, .g = 103, .b = 21}}, + {{.r = 134, .g = 105, .b = 21}}, {{.r = 136, .g = 106, .b = 22}}, {{.r = 138, .g = 109, .b = 23}}, + {{.r = 140, .g = 111, .b = 24}}, {{.r = 142, .g = 113, .b = 26}}, {{.r = 144, .g = 115, .b = 28}}, + {{.r = 146, .g = 117, .b = 29}}, {{.r = 148, .g = 119, .b = 29}}, {{.r = 150, .g = 122, .b = 31}}, + {{.r = 152, .g = 124, .b = 32}}, {{.r = 154, .g = 126, .b = 33}}, {{.r = 156, .g = 129, .b = 34}}, + {{.r = 158, .g = 130, .b = 36}}, {{.r = 159, .g = 132, .b = 37}}, {{.r = 161, .g = 135, .b = 38}}, + {{.r = 164, .g = 137, .b = 39}}, {{.r = 165, .g = 139, .b = 40}}, {{.r = 167, .g = 142, .b = 42}}, + {{.r = 170, .g = 145, .b = 45}}, {{.r = 172, .g = 148, .b = 46}}, {{.r = 174, .g = 150, .b = 48}}, + {{.r = 177, .g = 152, .b = 51}}, {{.r = 180, .g = 155, .b = 53}}, {{.r = 182, .g = 157, .b = 55}}, + {{.r = 185, .g = 160, .b = 57}}, {{.r = 187, .g = 163, .b = 60}}, {{.r = 190, .g = 166, .b = 62}}, + {{.r = 192, .g = 169, .b = 64}}, {{.r = 194, .g = 171, .b = 66}}, {{.r = 197, .g = 173, .b = 68}}, + {{.r = 200, .g = 176, .b = 70}}, {{.r = 202, .g = 179, .b = 72}}, {{.r = 205, .g = 182, .b = 74}}, + {{.r = 207, .g = 184, .b = 76}}, {{.r = 209, .g = 186, .b = 78}}, {{.r = 210, .g = 189, .b = 80}}, + {{.r = 213, .g = 192, .b = 82}}, {{.r = 215, .g = 194, .b = 84}}, {{.r = 216, .g = 196, .b = 85}}, + {{.r = 218, .g = 199, .b = 88}}, {{.r = 220, .g = 202, .b = 89}}, {{.r = 222, .g = 204, .b = 91}}, + {{.r = 225, .g = 207, .b = 93}}, {{.r = 226, .g = 208, .b = 94}}, {{.r = 228, .g = 211, .b = 96}}, + {{.r = 230, .g = 214, .b = 98}}, {{.r = 233, .g = 216, .b = 100}}, {{.r = 234, .g = 218, .b = 102}}, + {{.r = 235, .g = 219, .b = 102}}, {{.r = 235, .g = 221, .b = 103}}, {{.r = 236, .g = 221, .b = 104}}, + {{.r = 237, .g = 223, .b = 104}}, {{.r = 237, .g = 223, .b = 105}}, {{.r = 238, .g = 224, .b = 105}}, + {{.r = 238, .g = 225, .b = 106}}, {{.r = 238, .g = 226, .b = 106}}, {{.r = 239, .g = 227, .b = 107}}, + {{.r = 240, .g = 228, .b = 108}}, {{.r = 241, .g = 229, .b = 108}}, {{.r = 242, .g = 230, .b = 109}}, + {{.r = 242, .g = 231, .b = 109}}, {{.r = 243, .g = 232, .b = 110}}, {{.r = 243, .g = 233, .b = 111}}, + {{.r = 243, .g = 235, .b = 111}}, {{.r = 245, .g = 235, .b = 112}}, {{.r = 244, .g = 235, .b = 111}}, + {{.r = 243, .g = 234, .b = 110}}, {{.r = 241, .g = 232, .b = 109}}, {{.r = 240, .g = 230, .b = 108}}, + {{.r = 238, .g = 229, .b = 106}}, {{.r = 238, .g = 227, .b = 105}}, {{.r = 237, .g = 225, .b = 103}}, + {{.r = 235, .g = 223, .b = 102}}, {{.r = 233, .g = 221, .b = 100}}, {{.r = 232, .g = 220, .b = 100}}, + {{.r = 231, .g = 218, .b = 98}}, {{.r = 230, .g = 217, .b = 97}}, {{.r = 228, .g = 214, .b = 96}}, + {{.r = 227, .g = 213, .b = 94}}, {{.r = 226, .g = 211, .b = 93}}, {{.r = 224, .g = 210, .b = 91}}, + {{.r = 223, .g = 208, .b = 90}}, {{.r = 221, .g = 206, .b = 88}}, {{.r = 220, .g = 203, .b = 87}}, + {{.r = 218, .g = 202, .b = 85}}, {{.r = 217, .g = 200, .b = 85}}, {{.r = 215, .g = 198, .b = 82}}, + {{.r = 214, .g = 197, .b = 81}}, {{.r = 213, .g = 195, .b = 80}}, {{.r = 211, .g = 193, .b = 79}}, + {{.r = 210, .g = 191, .b = 76}}, {{.r = 208, .g = 189, .b = 76}}, {{.r = 206, .g = 186, .b = 73}}, + {{.r = 205, .g = 183, .b = 72}}, {{.r = 203, .g = 181, .b = 70}}, {{.r = 202, .g = 179, .b = 67}}, + {{.r = 200, .g = 176, .b = 65}}, {{.r = 198, .g = 173, .b = 63}}, {{.r = 196, .g = 171, .b = 62}}, + {{.r = 195, .g = 169, .b = 60}}, {{.r = 194, .g = 167, .b = 59}}, {{.r = 192, .g = 164, .b = 57}}, + {{.r = 191, .g = 162, .b = 55}}, {{.r = 190, .g = 160, .b = 53}}, {{.r = 188, .g = 158, .b = 52}}, + {{.r = 187, .g = 156, .b = 51}}, {{.r = 186, .g = 155, .b = 50}}, {{.r = 184, .g = 154, .b = 49}}, + {{.r = 183, .g = 153, .b = 50}}, {{.r = 182, .g = 152, .b = 48}}, {{.r = 181, .g = 151, .b = 48}}, + {{.r = 179, .g = 151, .b = 47}}, {{.r = 178, .g = 150, .b = 47}}, {{.r = 176, .g = 149, .b = 46}}, + {{.r = 176, .g = 147, .b = 45}}, {{.r = 175, .g = 147, .b = 45}}, {{.r = 173, .g = 146, .b = 44}}, + {{.r = 172, .g = 145, .b = 44}}, {{.r = 170, .g = 144, .b = 43}}, {{.r = 170, .g = 143, .b = 43}}, + {{.r = 168, .g = 142, .b = 42}}, {{.r = 169, .g = 144, .b = 43}}, {{.r = 172, .g = 146, .b = 45}}, + {{.r = 174, .g = 148, .b = 47}}, {{.r = 177, .g = 150, .b = 48}}, {{.r = 178, .g = 152, .b = 50}}, + {{.r = 181, .g = 154, .b = 52}}, {{.r = 183, .g = 156, .b = 53}}, {{.r = 186, .g = 158, .b = 55}}, + {{.r = 187, .g = 160, .b = 56}}, {{.r = 189, .g = 162, .b = 58}}, {{.r = 191, .g = 163, .b = 60}}, + {{.r = 192, .g = 165, .b = 61}}, {{.r = 195, .g = 167, .b = 63}}, {{.r = 197, .g = 169, .b = 64}}, + {{.r = 198, .g = 170, .b = 65}}, {{.r = 200, .g = 173, .b = 67}}, {{.r = 202, .g = 175, .b = 68}}, + {{.r = 203, .g = 176, .b = 70}}, {{.r = 205, .g = 178, .b = 71}}, {{.r = 205, .g = 180, .b = 71}}, + {{.r = 207, .g = 182, .b = 72}}, {{.r = 208, .g = 184, .b = 74}}, {{.r = 209, .g = 186, .b = 76}}, + {{.r = 210, .g = 187, .b = 76}}, {{.r = 211, .g = 190, .b = 78}}, {{.r = 212, .g = 192, .b = 79}}, + {{.r = 213, .g = 193, .b = 80}}, {{.r = 214, .g = 195, .b = 81}}, {{.r = 216, .g = 197, .b = 82}}, + {{.r = 216, .g = 199, .b = 83}}, {{.r = 217, .g = 201, .b = 85}}, {{.r = 217, .g = 202, .b = 86}}, + {{.r = 217, .g = 201, .b = 85}}, {{.r = 217, .g = 200, .b = 84}}, {{.r = 216, .g = 199, .b = 83}}, + {{.r = 216, .g = 198, .b = 82}}, {{.r = 214, .g = 197, .b = 81}}, {{.r = 214, .g = 196, .b = 80}}, + {{.r = 213, .g = 195, .b = 80}}, {{.r = 212, .g = 194, .b = 79}}, {{.r = 212, .g = 193, .b = 78}}, + {{.r = 212, .g = 192, .b = 77}}, {{.r = 210, .g = 191, .b = 76}}, {{.r = 210, .g = 190, .b = 76}}, + {{.r = 209, .g = 189, .b = 75}}, {{.r = 209, .g = 188, .b = 74}}, {{.r = 208, .g = 187, .b = 73}}, + {{.r = 207, .g = 185, .b = 72}}, {{.r = 205, .g = 183, .b = 70}}, {{.r = 204, .g = 181, .b = 69}}, + {{.r = 202, .g = 179, .b = 67}}, {{.r = 202, .g = 177, .b = 66}}, {{.r = 200, .g = 175, .b = 65}}, + {{.r = 199, .g = 173, .b = 63}}, {{.r = 197, .g = 171, .b = 61}}, {{.r = 196, .g = 169, .b = 60}}, + {{.r = 195, .g = 167, .b = 59}}, {{.r = 193, .g = 165, .b = 57}}, {{.r = 192, .g = 163, .b = 56}}, + {{.r = 190, .g = 161, .b = 54}}, {{.r = 189, .g = 159, .b = 53}}, {{.r = 188, .g = 157, .b = 52}}, + {{.r = 185, .g = 154, .b = 50}}, {{.r = 182, .g = 151, .b = 48}}, {{.r = 178, .g = 148, .b = 46}}, + {{.r = 175, .g = 144, .b = 45}}, {{.r = 171, .g = 141, .b = 43}}, {{.r = 168, .g = 138, .b = 42}}, + {{.r = 164, .g = 134, .b = 39}}, {{.r = 161, .g = 131, .b = 37}}, {{.r = 158, .g = 128, .b = 36}}, + {{.r = 154, .g = 124, .b = 34}}, {{.r = 151, .g = 121, .b = 33}}, {{.r = 147, .g = 117, .b = 31}}, + {{.r = 144, .g = 115, .b = 29}}, {{.r = 141, .g = 111, .b = 27}}, {{.r = 137, .g = 109, .b = 26}}, + {{.r = 144, .g = 116, .b = 39}}, {{.r = 149, .g = 124, .b = 50}}, {{.r = 155, .g = 132, .b = 62}}, + {{.r = 161, .g = 138, .b = 73}}, {{.r = 168, .g = 146, .b = 86}}, {{.r = 174, .g = 153, .b = 97}}, + {{.r = 180, .g = 162, .b = 109}}, {{.r = 186, .g = 168, .b = 121}}, {{.r = 192, .g = 176, .b = 132}}, + {{.r = 198, .g = 185, .b = 146}}, {{.r = 207, .g = 195, .b = 163}}, {{.r = 216, .g = 206, .b = 179}}, + {{.r = 225, .g = 217, .b = 196}}, {{.r = 234, .g = 228, .b = 213}}, {{.r = 242, .g = 238, .b = 230}}, + {{.r = 250, .g = 250, .b = 246}}, {{.r = 255, .g = 255, .b = 255}}, {{.r = 255, .g = 255, .b = 255}}, + {{.r = 255, .g = 255, .b = 255}}, +}; +// purple chrome +static constexpr psyqo::Color m_lut2[256] = { + {{.r = 77, .g = 28, .b = 70}}, {{.r = 79, .g = 30, .b = 74}}, {{.r = 81, .g = 31, .b = 78}}, + {{.r = 83, .g = 32, .b = 81}}, {{.r = 84, .g = 34, .b = 86}}, {{.r = 87, .g = 36, .b = 89}}, + {{.r = 88, .g = 36, .b = 93}}, {{.r = 90, .g = 38, .b = 98}}, {{.r = 92, .g = 40, .b = 102}}, + {{.r = 94, .g = 42, .b = 106}}, {{.r = 96, .g = 43, .b = 111}}, {{.r = 98, .g = 45, .b = 114}}, + {{.r = 99, .g = 46, .b = 118}}, {{.r = 101, .g = 48, .b = 123}}, {{.r = 103, .g = 49, .b = 126}}, + {{.r = 105, .g = 50, .b = 131}}, {{.r = 108, .g = 53, .b = 137}}, {{.r = 110, .g = 55, .b = 142}}, + {{.r = 113, .g = 57, .b = 148}}, {{.r = 115, .g = 59, .b = 153}}, {{.r = 118, .g = 61, .b = 159}}, + {{.r = 121, .g = 63, .b = 165}}, {{.r = 123, .g = 65, .b = 170}}, {{.r = 126, .g = 67, .b = 176}}, + {{.r = 128, .g = 69, .b = 182}}, {{.r = 131, .g = 71, .b = 187}}, {{.r = 132, .g = 71, .b = 187}}, + {{.r = 133, .g = 72, .b = 187}}, {{.r = 133, .g = 72, .b = 186}}, {{.r = 133, .g = 73, .b = 186}}, + {{.r = 134, .g = 73, .b = 185}}, {{.r = 134, .g = 73, .b = 185}}, {{.r = 135, .g = 74, .b = 184}}, + {{.r = 135, .g = 74, .b = 183}}, {{.r = 136, .g = 74, .b = 182}}, {{.r = 136, .g = 74, .b = 182}}, + {{.r = 137, .g = 75, .b = 182}}, {{.r = 138, .g = 76, .b = 181}}, {{.r = 138, .g = 76, .b = 181}}, + {{.r = 139, .g = 76, .b = 179}}, {{.r = 140, .g = 77, .b = 179}}, {{.r = 140, .g = 76, .b = 179}}, + {{.r = 141, .g = 77, .b = 178}}, {{.r = 142, .g = 77, .b = 178}}, {{.r = 142, .g = 77, .b = 177}}, + {{.r = 143, .g = 78, .b = 177}}, {{.r = 143, .g = 78, .b = 176}}, {{.r = 145, .g = 78, .b = 175}}, + {{.r = 145, .g = 79, .b = 174}}, {{.r = 146, .g = 80, .b = 173}}, {{.r = 147, .g = 80, .b = 173}}, + {{.r = 148, .g = 80, .b = 172}}, {{.r = 148, .g = 81, .b = 171}}, {{.r = 149, .g = 82, .b = 170}}, + {{.r = 151, .g = 82, .b = 170}}, {{.r = 152, .g = 82, .b = 169}}, {{.r = 152, .g = 83, .b = 168}}, + {{.r = 153, .g = 84, .b = 167}}, {{.r = 154, .g = 85, .b = 166}}, {{.r = 154, .g = 84, .b = 165}}, + {{.r = 152, .g = 84, .b = 165}}, {{.r = 150, .g = 83, .b = 163}}, {{.r = 149, .g = 82, .b = 162}}, + {{.r = 147, .g = 81, .b = 161}}, {{.r = 145, .g = 81, .b = 160}}, {{.r = 143, .g = 80, .b = 158}}, + {{.r = 141, .g = 80, .b = 158}}, {{.r = 140, .g = 79, .b = 156}}, {{.r = 138, .g = 78, .b = 155}}, + {{.r = 136, .g = 78, .b = 154}}, {{.r = 135, .g = 77, .b = 153}}, {{.r = 133, .g = 76, .b = 153}}, + {{.r = 131, .g = 76, .b = 151}}, {{.r = 130, .g = 75, .b = 151}}, {{.r = 127, .g = 74, .b = 150}}, + {{.r = 126, .g = 73, .b = 148}}, {{.r = 125, .g = 72, .b = 147}}, {{.r = 123, .g = 72, .b = 146}}, + {{.r = 121, .g = 71, .b = 144}}, {{.r = 119, .g = 71, .b = 144}}, {{.r = 117, .g = 70, .b = 142}}, + {{.r = 116, .g = 69, .b = 142}}, {{.r = 115, .g = 68, .b = 140}}, {{.r = 113, .g = 68, .b = 139}}, + {{.r = 111, .g = 67, .b = 139}}, {{.r = 109, .g = 67, .b = 138}}, {{.r = 107, .g = 66, .b = 136}}, + {{.r = 106, .g = 65, .b = 135}}, {{.r = 104, .g = 64, .b = 134}}, {{.r = 102, .g = 64, .b = 133}}, + {{.r = 99, .g = 63, .b = 131}}, {{.r = 95, .g = 60, .b = 128}}, {{.r = 91, .g = 60, .b = 126}}, + {{.r = 88, .g = 58, .b = 124}}, {{.r = 84, .g = 57, .b = 121}}, {{.r = 81, .g = 54, .b = 119}}, + {{.r = 77, .g = 54, .b = 117}}, {{.r = 73, .g = 52, .b = 114}}, {{.r = 70, .g = 50, .b = 112}}, + {{.r = 66, .g = 49, .b = 110}}, {{.r = 63, .g = 48, .b = 107}}, {{.r = 59, .g = 46, .b = 105}}, + {{.r = 55, .g = 45, .b = 104}}, {{.r = 52, .g = 43, .b = 101}}, {{.r = 53, .g = 44, .b = 101}}, + {{.r = 54, .g = 45, .b = 102}}, {{.r = 57, .g = 46, .b = 103}}, {{.r = 59, .g = 47, .b = 104}}, + {{.r = 61, .g = 48, .b = 105}}, {{.r = 62, .g = 49, .b = 106}}, {{.r = 64, .g = 50, .b = 106}}, + {{.r = 67, .g = 51, .b = 107}}, {{.r = 68, .g = 52, .b = 108}}, {{.r = 70, .g = 53, .b = 110}}, + {{.r = 72, .g = 54, .b = 110}}, {{.r = 74, .g = 55, .b = 110}}, {{.r = 76, .g = 56, .b = 112}}, + {{.r = 78, .g = 56, .b = 113}}, {{.r = 80, .g = 58, .b = 113}}, {{.r = 81, .g = 59, .b = 115}}, + {{.r = 84, .g = 60, .b = 115}}, {{.r = 85, .g = 61, .b = 116}}, {{.r = 87, .g = 62, .b = 117}}, + {{.r = 90, .g = 63, .b = 118}}, {{.r = 92, .g = 64, .b = 119}}, {{.r = 94, .g = 65, .b = 120}}, + {{.r = 97, .g = 67, .b = 121}}, {{.r = 99, .g = 67, .b = 122}}, {{.r = 101, .g = 69, .b = 123}}, + {{.r = 104, .g = 70, .b = 125}}, {{.r = 106, .g = 71, .b = 126}}, {{.r = 108, .g = 72, .b = 127}}, + {{.r = 111, .g = 74, .b = 128}}, {{.r = 113, .g = 75, .b = 129}}, {{.r = 116, .g = 76, .b = 130}}, + {{.r = 117, .g = 77, .b = 131}}, {{.r = 120, .g = 79, .b = 132}}, {{.r = 123, .g = 80, .b = 133}}, + {{.r = 125, .g = 81, .b = 134}}, {{.r = 127, .g = 82, .b = 135}}, {{.r = 128, .g = 83, .b = 136}}, + {{.r = 129, .g = 84, .b = 137}}, {{.r = 129, .g = 84, .b = 138}}, {{.r = 130, .g = 85, .b = 138}}, + {{.r = 131, .g = 86, .b = 139}}, {{.r = 131, .g = 87, .b = 140}}, {{.r = 132, .g = 87, .b = 141}}, + {{.r = 132, .g = 88, .b = 142}}, {{.r = 133, .g = 88, .b = 143}}, {{.r = 134, .g = 89, .b = 144}}, + {{.r = 134, .g = 90, .b = 144}}, {{.r = 134, .g = 91, .b = 146}}, {{.r = 135, .g = 92, .b = 146}}, + {{.r = 136, .g = 93, .b = 147}}, {{.r = 137, .g = 94, .b = 148}}, {{.r = 137, .g = 94, .b = 149}}, + {{.r = 137, .g = 94, .b = 150}}, {{.r = 138, .g = 95, .b = 151}}, {{.r = 138, .g = 96, .b = 152}}, + {{.r = 139, .g = 97, .b = 153}}, {{.r = 139, .g = 97, .b = 154}}, {{.r = 140, .g = 98, .b = 155}}, + {{.r = 141, .g = 99, .b = 155}}, {{.r = 142, .g = 100, .b = 157}}, {{.r = 143, .g = 100, .b = 157}}, + {{.r = 143, .g = 101, .b = 158}}, {{.r = 144, .g = 101, .b = 159}}, {{.r = 143, .g = 103, .b = 160}}, + {{.r = 144, .g = 103, .b = 161}}, {{.r = 145, .g = 104, .b = 162}}, {{.r = 146, .g = 104, .b = 163}}, + {{.r = 146, .g = 106, .b = 164}}, {{.r = 147, .g = 106, .b = 164}}, {{.r = 148, .g = 106, .b = 166}}, + {{.r = 148, .g = 107, .b = 166}}, {{.r = 149, .g = 108, .b = 167}}, {{.r = 149, .g = 109, .b = 168}}, + {{.r = 150, .g = 110, .b = 168}}, {{.r = 151, .g = 110, .b = 170}}, {{.r = 151, .g = 112, .b = 171}}, + {{.r = 151, .g = 112, .b = 171}}, {{.r = 152, .g = 112, .b = 173}}, {{.r = 152, .g = 113, .b = 173}}, + {{.r = 154, .g = 115, .b = 175}}, {{.r = 155, .g = 116, .b = 176}}, {{.r = 155, .g = 117, .b = 178}}, + {{.r = 157, .g = 118, .b = 179}}, {{.r = 157, .g = 119, .b = 180}}, {{.r = 158, .g = 120, .b = 182}}, + {{.r = 159, .g = 121, .b = 183}}, {{.r = 160, .g = 122, .b = 185}}, {{.r = 161, .g = 123, .b = 186}}, + {{.r = 162, .g = 124, .b = 188}}, {{.r = 163, .g = 126, .b = 189}}, {{.r = 165, .g = 127, .b = 190}}, + {{.r = 165, .g = 128, .b = 192}}, {{.r = 165, .g = 129, .b = 193}}, {{.r = 167, .g = 130, .b = 195}}, + {{.r = 167, .g = 131, .b = 196}}, {{.r = 169, .g = 132, .b = 198}}, {{.r = 170, .g = 134, .b = 199}}, + {{.r = 171, .g = 135, .b = 201}}, {{.r = 171, .g = 136, .b = 201}}, {{.r = 172, .g = 137, .b = 203}}, + {{.r = 173, .g = 139, .b = 205}}, {{.r = 175, .g = 140, .b = 206}}, {{.r = 175, .g = 141, .b = 208}}, + {{.r = 176, .g = 141, .b = 209}}, {{.r = 177, .g = 143, .b = 210}}, {{.r = 178, .g = 144, .b = 212}}, + {{.r = 178, .g = 144, .b = 212}}, {{.r = 176, .g = 142, .b = 209}}, {{.r = 173, .g = 140, .b = 206}}, + {{.r = 171, .g = 138, .b = 203}}, {{.r = 169, .g = 137, .b = 200}}, {{.r = 166, .g = 135, .b = 198}}, + {{.r = 164, .g = 133, .b = 195}}, {{.r = 161, .g = 131, .b = 192}}, {{.r = 159, .g = 129, .b = 190}}, + {{.r = 157, .g = 127, .b = 187}}, {{.r = 155, .g = 126, .b = 184}}, {{.r = 152, .g = 123, .b = 180}}, + {{.r = 150, .g = 121, .b = 178}}, {{.r = 147, .g = 119, .b = 175}}, {{.r = 145, .g = 118, .b = 172}}, + {{.r = 143, .g = 116, .b = 169}}, {{.r = 140, .g = 114, .b = 167}}, {{.r = 138, .g = 112, .b = 164}}, + {{.r = 136, .g = 110, .b = 161}}, {{.r = 133, .g = 108, .b = 159}}, {{.r = 131, .g = 106, .b = 155}}, + {{.r = 129, .g = 104, .b = 153}}, {{.r = 126, .g = 102, .b = 150}}, {{.r = 123, .g = 100, .b = 147}}, + {{.r = 121, .g = 98, .b = 145}}, {{.r = 119, .g = 96, .b = 142}}, {{.r = 117, .g = 94, .b = 139}}, + {{.r = 114, .g = 92, .b = 136}}, {{.r = 111, .g = 90, .b = 132}}, {{.r = 108, .g = 87, .b = 128}}, + {{.r = 104, .g = 85, .b = 124}}, {{.r = 100, .g = 82, .b = 120}}, {{.r = 97, .g = 79, .b = 116}}, + {{.r = 94, .g = 76, .b = 112}}, {{.r = 90, .g = 73, .b = 107}}, {{.r = 86, .g = 70, .b = 102}}, + {{.r = 83, .g = 68, .b = 98}}, {{.r = 79, .g = 64, .b = 95}}, {{.r = 75, .g = 62, .b = 90}}, + {{.r = 72, .g = 58, .b = 85}}, {{.r = 68, .g = 55, .b = 82}}, {{.r = 65, .g = 53, .b = 77}}, + {{.r = 61, .g = 50, .b = 73}}, {{.r = 57, .g = 47, .b = 69}}, {{.r = 54, .g = 44, .b = 64}}, + {{.r = 51, .g = 41, .b = 60}}, +}; +// skyline +static constexpr psyqo::Color m_lut3[256]{ + {{.r = 255, .g = 255, .b = 255}}, {{.r = 254, .g = 255, .b = 253}}, {{.r = 254, .g = 255, .b = 253}}, + {{.r = 254, .g = 254, .b = 252}}, {{.r = 254, .g = 254, .b = 250}}, {{.r = 254, .g = 254, .b = 250}}, + {{.r = 253, .g = 254, .b = 249}}, {{.r = 253, .g = 254, .b = 248}}, {{.r = 253, .g = 254, .b = 247}}, + {{.r = 253, .g = 253, .b = 247}}, {{.r = 252, .g = 254, .b = 245}}, {{.r = 252, .g = 253, .b = 244}}, + {{.r = 252, .g = 253, .b = 244}}, {{.r = 252, .g = 253, .b = 243}}, {{.r = 251, .g = 253, .b = 242}}, + {{.r = 251, .g = 252, .b = 240}}, {{.r = 251, .g = 252, .b = 239}}, {{.r = 250, .g = 253, .b = 239}}, + {{.r = 251, .g = 253, .b = 238}}, {{.r = 250, .g = 252, .b = 237}}, {{.r = 250, .g = 252, .b = 236}}, + {{.r = 249, .g = 252, .b = 235}}, {{.r = 249, .g = 251, .b = 234}}, {{.r = 249, .g = 251, .b = 233}}, + {{.r = 249, .g = 252, .b = 232}}, {{.r = 248, .g = 251, .b = 232}}, {{.r = 249, .g = 251, .b = 231}}, + {{.r = 248, .g = 251, .b = 229}}, {{.r = 248, .g = 251, .b = 229}}, {{.r = 248, .g = 251, .b = 228}}, + {{.r = 247, .g = 250, .b = 227}}, {{.r = 247, .g = 251, .b = 226}}, {{.r = 246, .g = 251, .b = 225}}, + {{.r = 246, .g = 250, .b = 224}}, {{.r = 246, .g = 250, .b = 223}}, {{.r = 246, .g = 249, .b = 222}}, + {{.r = 245, .g = 249, .b = 222}}, {{.r = 246, .g = 250, .b = 220}}, {{.r = 245, .g = 249, .b = 220}}, + {{.r = 245, .g = 249, .b = 218}}, {{.r = 245, .g = 249, .b = 218}}, {{.r = 244, .g = 249, .b = 217}}, + {{.r = 244, .g = 249, .b = 215}}, {{.r = 244, .g = 249, .b = 215}}, {{.r = 243, .g = 249, .b = 214}}, + {{.r = 244, .g = 248, .b = 213}}, {{.r = 243, .g = 248, .b = 212}}, {{.r = 243, .g = 248, .b = 211}}, + {{.r = 242, .g = 248, .b = 210}}, {{.r = 242, .g = 247, .b = 210}}, {{.r = 242, .g = 248, .b = 208}}, + {{.r = 242, .g = 247, .b = 207}}, {{.r = 242, .g = 247, .b = 206}}, {{.r = 242, .g = 246, .b = 205}}, + {{.r = 242, .g = 244, .b = 203}}, {{.r = 242, .g = 243, .b = 201}}, {{.r = 242, .g = 242, .b = 200}}, + {{.r = 243, .g = 240, .b = 199}}, {{.r = 243, .g = 240, .b = 197}}, {{.r = 243, .g = 239, .b = 195}}, + {{.r = 243, .g = 237, .b = 194}}, {{.r = 243, .g = 236, .b = 193}}, {{.r = 243, .g = 235, .b = 191}}, + {{.r = 244, .g = 234, .b = 190}}, {{.r = 244, .g = 232, .b = 188}}, {{.r = 243, .g = 231, .b = 186}}, + {{.r = 244, .g = 230, .b = 185}}, {{.r = 244, .g = 229, .b = 183}}, {{.r = 244, .g = 227, .b = 181}}, + {{.r = 245, .g = 227, .b = 180}}, {{.r = 245, .g = 225, .b = 179}}, {{.r = 244, .g = 224, .b = 176}}, + {{.r = 245, .g = 222, .b = 175}}, {{.r = 245, .g = 222, .b = 174}}, {{.r = 245, .g = 220, .b = 172}}, + {{.r = 245, .g = 219, .b = 170}}, {{.r = 245, .g = 218, .b = 169}}, {{.r = 245, .g = 216, .b = 168}}, + {{.r = 246, .g = 215, .b = 166}}, {{.r = 246, .g = 215, .b = 164}}, {{.r = 246, .g = 213, .b = 163}}, + {{.r = 246, .g = 212, .b = 162}}, {{.r = 246, .g = 211, .b = 160}}, {{.r = 247, .g = 210, .b = 158}}, + {{.r = 246, .g = 209, .b = 156}}, {{.r = 246, .g = 207, .b = 155}}, {{.r = 247, .g = 206, .b = 153}}, + {{.r = 247, .g = 204, .b = 152}}, {{.r = 247, .g = 204, .b = 150}}, {{.r = 247, .g = 203, .b = 149}}, + {{.r = 248, .g = 201, .b = 147}}, {{.r = 247, .g = 201, .b = 146}}, {{.r = 248, .g = 199, .b = 144}}, + {{.r = 248, .g = 198, .b = 143}}, {{.r = 248, .g = 196, .b = 141}}, {{.r = 248, .g = 195, .b = 140}}, + {{.r = 248, .g = 194, .b = 138}}, {{.r = 249, .g = 192, .b = 136}}, {{.r = 248, .g = 190, .b = 134}}, + {{.r = 249, .g = 188, .b = 130}}, {{.r = 249, .g = 187, .b = 128}}, {{.r = 250, .g = 185, .b = 126}}, + {{.r = 249, .g = 182, .b = 123}}, {{.r = 250, .g = 181, .b = 120}}, {{.r = 250, .g = 179, .b = 118}}, + {{.r = 250, .g = 177, .b = 116}}, {{.r = 251, .g = 175, .b = 113}}, {{.r = 251, .g = 173, .b = 111}}, + {{.r = 251, .g = 171, .b = 108}}, {{.r = 252, .g = 169, .b = 105}}, {{.r = 252, .g = 167, .b = 103}}, + {{.r = 252, .g = 165, .b = 100}}, {{.r = 253, .g = 163, .b = 98}}, {{.r = 253, .g = 162, .b = 95}}, + {{.r = 252, .g = 160, .b = 93}}, {{.r = 253, .g = 157, .b = 90}}, {{.r = 253, .g = 156, .b = 88}}, + {{.r = 254, .g = 153, .b = 85}}, {{.r = 254, .g = 152, .b = 83}}, {{.r = 254, .g = 150, .b = 81}}, + {{.r = 254, .g = 148, .b = 78}}, {{.r = 254, .g = 146, .b = 75}}, {{.r = 255, .g = 144, .b = 73}}, + {{.r = 255, .g = 142, .b = 70}}, {{.r = 251, .g = 136, .b = 68}}, {{.r = 238, .g = 122, .b = 65}}, + {{.r = 225, .g = 108, .b = 62}}, {{.r = 212, .g = 94, .b = 58}}, {{.r = 202, .g = 83, .b = 56}}, + {{.r = 194, .g = 74, .b = 54}}, {{.r = 185, .g = 65, .b = 53}}, {{.r = 178, .g = 56, .b = 50}}, + {{.r = 170, .g = 47, .b = 48}}, {{.r = 161, .g = 39, .b = 46}}, {{.r = 152, .g = 30, .b = 45}}, + {{.r = 144, .g = 26, .b = 41}}, {{.r = 135, .g = 27, .b = 38}}, {{.r = 126, .g = 29, .b = 34}}, + {{.r = 116, .g = 31, .b = 30}}, {{.r = 108, .g = 33, .b = 26}}, {{.r = 99, .g = 34, .b = 23}}, + {{.r = 91, .g = 36, .b = 20}}, {{.r = 83, .g = 38, .b = 16}}, {{.r = 74, .g = 40, .b = 13}}, + {{.r = 74, .g = 42, .b = 20}}, {{.r = 74, .g = 45, .b = 28}}, {{.r = 75, .g = 48, .b = 37}}, + {{.r = 76, .g = 51, .b = 44}}, {{.r = 76, .g = 54, .b = 52}}, {{.r = 76, .g = 57, .b = 60}}, + {{.r = 77, .g = 60, .b = 68}}, {{.r = 77, .g = 63, .b = 77}}, {{.r = 78, .g = 65, .b = 84}}, + {{.r = 79, .g = 68, .b = 92}}, {{.r = 79, .g = 71, .b = 100}}, {{.r = 79, .g = 74, .b = 108}}, + {{.r = 80, .g = 76, .b = 113}}, {{.r = 80, .g = 77, .b = 117}}, {{.r = 80, .g = 79, .b = 122}}, + {{.r = 80, .g = 80, .b = 125}}, {{.r = 81, .g = 82, .b = 130}}, {{.r = 81, .g = 83, .b = 134}}, + {{.r = 81, .g = 85, .b = 138}}, {{.r = 81, .g = 86, .b = 142}}, {{.r = 82, .g = 88, .b = 147}}, + {{.r = 82, .g = 89, .b = 151}}, {{.r = 83, .g = 91, .b = 155}}, {{.r = 83, .g = 93, .b = 160}}, + {{.r = 83, .g = 94, .b = 164}}, {{.r = 84, .g = 96, .b = 168}}, {{.r = 84, .g = 97, .b = 172}}, + {{.r = 84, .g = 98, .b = 176}}, {{.r = 84, .g = 101, .b = 180}}, {{.r = 85, .g = 102, .b = 185}}, + {{.r = 84, .g = 103, .b = 190}}, {{.r = 85, .g = 105, .b = 194}}, {{.r = 85, .g = 106, .b = 197}}, + {{.r = 86, .g = 108, .b = 202}}, {{.r = 87, .g = 109, .b = 205}}, {{.r = 89, .g = 112, .b = 205}}, + {{.r = 90, .g = 113, .b = 206}}, {{.r = 92, .g = 115, .b = 206}}, {{.r = 93, .g = 117, .b = 207}}, + {{.r = 95, .g = 119, .b = 208}}, {{.r = 97, .g = 121, .b = 209}}, {{.r = 99, .g = 123, .b = 209}}, + {{.r = 101, .g = 125, .b = 210}}, {{.r = 102, .g = 127, .b = 211}}, {{.r = 104, .g = 128, .b = 211}}, + {{.r = 106, .g = 130, .b = 212}}, {{.r = 108, .g = 132, .b = 212}}, {{.r = 109, .g = 134, .b = 213}}, + {{.r = 111, .g = 136, .b = 214}}, {{.r = 113, .g = 138, .b = 215}}, {{.r = 115, .g = 140, .b = 215}}, + {{.r = 116, .g = 142, .b = 216}}, {{.r = 119, .g = 143, .b = 217}}, {{.r = 120, .g = 146, .b = 217}}, + {{.r = 121, .g = 148, .b = 218}}, {{.r = 123, .g = 150, .b = 219}}, {{.r = 125, .g = 151, .b = 219}}, + {{.r = 127, .g = 153, .b = 220}}, {{.r = 129, .g = 155, .b = 221}}, {{.r = 130, .g = 157, .b = 221}}, + {{.r = 133, .g = 159, .b = 222}}, {{.r = 134, .g = 161, .b = 223}}, {{.r = 135, .g = 163, .b = 223}}, + {{.r = 137, .g = 165, .b = 224}}, {{.r = 139, .g = 167, .b = 225}}, {{.r = 141, .g = 168, .b = 225}}, + {{.r = 143, .g = 170, .b = 226}}, {{.r = 144, .g = 173, .b = 227}}, {{.r = 147, .g = 174, .b = 227}}, + {{.r = 148, .g = 176, .b = 228}}, {{.r = 149, .g = 178, .b = 228}}, {{.r = 152, .g = 180, .b = 229}}, + {{.r = 153, .g = 182, .b = 230}}, {{.r = 155, .g = 183, .b = 230}}, {{.r = 156, .g = 185, .b = 231}}, + {{.r = 159, .g = 187, .b = 232}}, {{.r = 160, .g = 189, .b = 233}}, {{.r = 161, .g = 191, .b = 234}}, + {{.r = 164, .g = 193, .b = 234}}, {{.r = 165, .g = 194, .b = 235}}, {{.r = 167, .g = 197, .b = 235}}, + {{.r = 168, .g = 198, .b = 236}}, {{.r = 170, .g = 200, .b = 236}}, {{.r = 171, .g = 201, .b = 237}}, + {{.r = 173, .g = 204, .b = 238}}, {{.r = 175, .g = 205, .b = 239}}, {{.r = 176, .g = 207, .b = 239}}, + {{.r = 178, .g = 209, .b = 240}}, {{.r = 180, .g = 211, .b = 241}}, {{.r = 181, .g = 213, .b = 241}}, + {{.r = 183, .g = 214, .b = 242}}, {{.r = 185, .g = 216, .b = 242}}, {{.r = 187, .g = 218, .b = 243}}, + {{.r = 188, .g = 220, .b = 244}}, {{.r = 190, .g = 222, .b = 245}}, {{.r = 191, .g = 224, .b = 245}}, + {{.r = 193, .g = 225, .b = 245}}, {{.r = 195, .g = 227, .b = 246}}, {{.r = 197, .g = 229, .b = 247}}, + {{.r = 198, .g = 230, .b = 247}}, {{.r = 200, .g = 232, .b = 248}}, {{.r = 202, .g = 235, .b = 249}}, + {{.r = 203, .g = 236, .b = 250}}, {{.r = 205, .g = 238, .b = 250}}, {{.r = 207, .g = 240, .b = 251}}, + {{.r = 208, .g = 242, .b = 251}}, {{.r = 210, .g = 244, .b = 252}}, {{.r = 211, .g = 245, .b = 253}}, + {{.r = 213, .g = 247, .b = 254}}, {{.r = 214, .g = 249, .b = 254}}, {{.r = 216, .g = 251, .b = 255}}, + {{.r = 217, .g = 251, .b = 255}}, +}; diff --git a/src/mips/psyqo/examples/torus/torus.cpp b/src/mips/psyqo/examples/torus/torus.cpp new file mode 100644 index 000000000..bb0da6cdc --- /dev/null +++ b/src/mips/psyqo/examples/torus/torus.cpp @@ -0,0 +1,810 @@ +/* + +MIT License + +Copyright (c) 2024 PCSX-Redux authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +#include + +#include "common/hardware/dma.h" +#include "common/syscalls/syscalls.h" +#include "psyqo/application.hh" +#include "psyqo/fixed-point.hh" +#include "psyqo/font.hh" +#include "psyqo/fragments.hh" +#include "psyqo/gpu.hh" +#include "psyqo/gte-kernels.hh" +#include "psyqo/gte-registers.hh" +#include "psyqo/ordering-table.hh" +#include "psyqo/primitives/control.hh" +#include "psyqo/primitives/lines.hh" +#include "psyqo/primitives/misc.hh" +#include "psyqo/primitives/quads.hh" +#include "psyqo/primitives/rectangles.hh" +#include "psyqo/scene.hh" +#include "psyqo/simplepad.hh" +#include "psyqo/soft-math.hh" +#include "psyqo/trigonometry.hh" +#include "psyqo/vector.hh" + +using namespace psyqo::fixed_point_literals; +using namespace psyqo::timer_literals; +using namespace psyqo::trig_literals; + +namespace { + +// We're going to use the scratchpad to store the color lookup tables. +__attribute__((section(".scratchpad"))) psyqo::Color s_lut[256]; + +constexpr psyqo::Color c_backgroundColor{{.r = 0x34, .g = 0x58, .b = 0x6c}}; + +// This is for debugging purposes only. +template +void printVec(const T& v) { + ramsyscall_printf("x: "); + v.x.print([](char c) { syscall_putchar(c); }); + ramsyscall_printf(", y: "); + v.y.print([](char c) { syscall_putchar(c); }); + ramsyscall_printf(", z: "); + v.z.print([](char c) { syscall_putchar(c); }); + syscall_putchar('\n'); +} + +class TorusDemo final : public psyqo::Application { + void prepare() override; + void createScene() override; + + public: + psyqo::Font<2> m_font; + psyqo::Trig<> m_trig; + psyqo::SimplePad m_input; +}; + +TorusDemo torusDemo; + +// Our torus is going to be a template with a fixed number of circles and points. +template +struct TorusTemplate { + static constexpr size_t C = Circles; + static constexpr size_t P = Points; + // Conveniently, due to the shape of a torus, the number of total vertices is the same as the number of faces. + static constexpr size_t Count = Circles * Points; + // For each torii, we're going to store the vertices and the normals. We use the PackedVec3 type to store the + // data, which are fixed point 4.12 numbers. This limits us to a maximum of 8.0 in each direction, which is + // totally fine for normals, and for the vertices, our torii will be roughly 7 units in radius maximum. + // This saves us a lot of memory, as we only need 6 bytes per PackedVec3, instead of 12 bytes for a Vec3. + eastl::array vertices; + eastl::array normals; + // Looking up the vertices for a face is easy. The vertices are stored in a linear grid, so we can just look + // up the vertices for the face by looking up the vertices for the corners of the face. + static void getVerticesForFace(unsigned index, unsigned& v1, unsigned& v2, unsigned& v3, unsigned& v4) { + unsigned circle = index / Points; + unsigned point = index % Points; + v1 = circle * Points + point; + v2 = circle * Points + ((point + 1) % Points); + v3 = ((circle + 1) % Circles) * Points + point; + v4 = ((circle + 1) % Circles) * Points + ((point + 1) % Points); + } + // Similarly, we can easily look up the four faces adjacent to a vertex. + static void getFacesForVertex(unsigned index, unsigned& f1, unsigned& f2, unsigned& f3, unsigned& f4) { + int circle = index / Points; + int point = index % Points; + f1 = ((circle - 1) % Circles) * Points + ((point - 1) % Points); + f2 = ((circle - 1) % Circles) * Points + point; + f3 = circle * Points + ((point - 1) % Points); + f4 = circle * Points + point; + } + // Theoretically, the normals of a torus are easy to compute. But our torii have some animated ripples, so we're + // going to compute the normals at boot time. This is a bit more expensive, but it's a one-time cost. + void computeNormals() { + psyqo::Vec3 cp; + psyqo::Vec3 sq; + // First, compute all normals for all the faces + eastl::array faceNormals; + for (unsigned index = 0; index < Count; index++) { + unsigned a, b, c, d; + getVerticesForFace(index, a, b, c, d); + // We only need two vectors to compute the normal of a face. We're going to use the first three + // vertices of the face. + psyqo::Vec3 va = psyqo::Vec3(vertices[a]); + psyqo::Vec3 vb = psyqo::Vec3(vertices[b]); + psyqo::Vec3 vc = psyqo::Vec3(vertices[c]); + psyqo::Vec3 s = vb - va; + psyqo::Vec3 t = vc - va; + // The cross product operation uses the diagonal of the rotation matrix (R11, R22, R33) for the first + // vector, and the IR registers for the second vector. + psyqo::GTE::write(s.x.value); + psyqo::GTE::write(s.y.value); + psyqo::GTE::write(s.z.value); + psyqo::GTE::write(reinterpret_cast(&t.x.value)); + psyqo::GTE::write(reinterpret_cast(&t.y.value)); + psyqo::GTE::write(reinterpret_cast(&t.z.value)); + psyqo::GTE::Kernels::cp(); + // The result is stored in the LV register, so first we simply read it. + psyqo::GTE::read(&cp); + // Then we square LV to get the square of the length of the normal. + psyqo::GTE::Kernels::sqr(); + psyqo::GTE::read(&sq); + // We still need to add the three components of the square. + auto square = sq.x + sq.y + sq.z; + // Finally, we compute the square root of the square of the length of the normal. + // A fast method to compute the square root is to use the inverse square root. And we're going to use + // log2 of the square to get an approximation of the square root, before refining it with the inverse + // square root method. + psyqo::GTE::write(square.raw()); + auto approx = 1 << (psyqo::GTE::readRaw() - 9); + auto approxFP = psyqo::FixedPoint<>(approx, psyqo::FixedPoint<>::RAW); + auto len = psyqo::SoftMath::inverseSquareRoot(square, approxFP); + // We multiply the normal by the inverse square root of the square of the length of the normal in order to + // normalize it. + cp.x *= len; + cp.y *= len; + cp.z *= len; + faceNormals[index] = cp; + } + + // Then, average all 4 normals for each vertex + for (unsigned index = 0; index < Count; index++) { + unsigned a, b, c, d; + getFacesForVertex(index, a, b, c, d); + psyqo::Vec3 na = faceNormals[a]; + psyqo::Vec3 nb = faceNormals[b]; + psyqo::Vec3 nc = faceNormals[c]; + psyqo::Vec3 nd = faceNormals[d]; + psyqo::Vec3 n = na + nb + nc + nd; + // Technically, we could re-compute the square of the length of the normal and normalize it again, but + // it's not necessary since we just added 4 normalized vectors, meaning we can simply normalize the + // result by dividing it by 4. + n.x /= 4; + n.y /= 4; + n.z /= 4; + normals[index] = psyqo::GTE::PackedVec3(n); + } + } +}; + +// This is the scene that will display the torus animation. +class TorusScene final : public psyqo::Scene { + public: + static constexpr size_t Count = 256; + TorusScene() { + // Make sure the scratchpad contains our first LUT. + __builtin_memcpy(s_lut, m_lut1, sizeof(m_lut1)); + // Pre-fill the platform quads. + for (auto& platformQuads : m_platformQuads) { + // The platform is a 3x3 grid of quads. We just need to fill the UV coordinates and the TPage attributes, + // as they will never change throughout the demo. We could also pre-fill the X and Y coordinates, but we + // don't want to use the GTE at this point. Also maybe we want to move the platform later. + for (unsigned v = 0; v < 3; v++) { + for (unsigned u = 0; u < 3; u++) { + auto& quad = platformQuads.primitive[u * 3 + v]; + auto u0 = u * 85; + auto v0 = v * 85; + auto u1 = (u + 1) * 85 - 1; + auto v1 = (v + 1) * 85 - 1; + quad.uvA.u = v0; + quad.uvA.v = u0; + quad.uvB.u = v1; + quad.uvB.v = u0; + quad.uvC.u = v0; + quad.uvC.v = u1; + quad.uvD.u = v1; + quad.uvD.v = u1; + quad.tpage.setPageX(12).setPageY(0).enableDisplayArea().setDithering(false).set( + psyqo::Prim::TPageAttr::Tex16Bits); + } + } + } + // Pre-fill the quads to display the torus. The UV coordinates will always be the same. The color + // and X and Y coordinates will be computed and set at runtime. + for (auto& quads : m_quads) { + unsigned incrementU = 4 * 256 / Torus::C; + unsigned incrementV = 256 / Torus::P; + for (unsigned u = 0; u < Torus::C; u++) { + for (unsigned v = 0; v < Torus::P; v++) { + auto& prim = quads[u * Torus::P + v].primitive; + prim.uvA.u = u * incrementU; + prim.uvA.v = v * incrementV; + prim.uvB.u = u * incrementU; + prim.uvB.v = (v + 1) * incrementV - 1; + prim.uvC.u = (u + 1) * incrementU - 1; + prim.uvC.v = v * incrementV; + prim.uvD.u = (u + 1) * incrementU - 1; + prim.uvD.v = (v + 1) * incrementV - 1; + prim.clutIndex = {{.x = 0, .y = 511}}; + prim.tpage.setPageX(13).setPageY(1).enableDisplayArea().setDithering(true).set( + psyqo::Prim::TPageAttr::Tex8Bits); + } + } + } + // Next up is pre-filling the shadow texture off-screen rendering. We're going to use a 256x256 texture + // located at (768, 0) to (1024, 256). We're going to fill it with a white color, and then draw some + // quads on it. The quads will be colored dark blue. + m_shadowTexture.prologue.scissor.start = {{.x = 768, .y = 0}}; + m_shadowTexture.prologue.scissor.end = {{.x = 1024, .y = 256}}; + m_shadowTexture.prologue.scissor.offset = {{.x = 768, .y = 0}}; + m_shadowTexture.prologue.fill.setColor({.r = 0xff, .g = 0xff, .b = 0xff}); + m_shadowTexture.prologue.fill.rect = {.pos = {{.x = 768, .y = 0}}, .size = {{.w = 256, .h = 256}}}; + for (auto& quad : m_shadowTexture.primitives) { + quad.setColor({.r = 0x08, .g = 0x12, .b = 0x20}); + } + // And finally, we're going to pre-fill the CLUT upload primitives. There's only four possible + // combinations of CLUTs, so we're going to pre-fill all four of them, selecting the proper one + // at runtime. The location of the CLUTs is at (0, 511), and what we're doing here is patching + // the existing CLUT with the chunk of animation we need. + unsigned index = 0; + for (auto& clutUpload : m_clutUpload) { + auto& prim = clutUpload.primitive; + prim.fill.setColor({.r = 0x80, .g = 0x80, .b = 0x80}); + prim.fill.rect = {.pos = {{.x = 0, .y = 511}}, .size = {{.w = 256, .h = 1}}}; + prim.upload.region = {.pos = {{.x = 0, .y = 511}}, .size = {{.w = 8, .h = 1}}}; + switch (index) { + case 0: + prim.data[0] = 0xce73bdef; + prim.data[1] = 0xef7bdef7; + prim.data[2] = 0xef7bffff; + prim.data[3] = 0xce73def7; + break; + case 1: + prim.data[0] = 0xdef7ce73; + prim.data[1] = 0xffffef7b; + prim.data[2] = 0xdef7ef7b; + prim.data[3] = 0xbdefce73; + break; + } + index ^= 1; + } + } + + private: + void frame() override; + void start(StartReason reason) override { + // The generator finished, our scene starts. We set the proper context. + m_lastFrameCounter = gpu().getFrameCount(); + torusDemo.m_input.setOnEvent([this](const psyqo::SimplePad::Event& event) { + if (event.type != psyqo::SimplePad::Event::ButtonReleased) return; + if (event.button == psyqo::SimplePad::Button::Triangle) { + m_lutIndex = (m_lutIndex + 1) % 3; + } + if (event.button == psyqo::SimplePad::Button::Cross) { + m_lutInverted = !m_lutInverted; + } + const psyqo::Color* lut = nullptr; + switch (m_lutIndex) { + case 0: + lut = m_lut1; + break; + case 1: + lut = m_lut2; + break; + case 2: + lut = m_lut3; + break; + } + if (m_lutInverted) { + for (unsigned i = 0; i < 256; i++) { + s_lut[i] = lut[255 - i]; + } + } else { + __builtin_memcpy(s_lut, lut, sizeof(m_lut1)); + } + }); + // These will never change. + psyqo::GTE::clear(); + psyqo::GTE::clear(); + } + + // This array will represent our biggest memory chunk. It's going to be used to store the torii + // with all of their vertices and normals. It goes to 1'572'864 bytes, which will get filled up + // by the generator. + typedef TorusTemplate<32, 16> Torus; + eastl::array m_tori; + + // After this, we reserve memory for all of the possible draw calls. + // First, we store the commands for the off-screen rendering of the shadow texture. There's not going + // to be any double bufferingn on them, so we only need one set of commands. + struct ShadowTexturePrologue { + psyqo::Prim::Scissor scissor; + psyqo::Prim::FastFill fill; + }; + psyqo::Fragments::FixedFragmentWithPrologue m_shadowTexture; + // Then we store all the commands which will be chained together to draw the rest of the scene. We store + // them in the order they will be sent, purely for readability. + // Our scene starts with a fast fill of the entire screen, to clear it. + psyqo::Fragments::SimpleFragment m_startScene[2]; + // Then we patch the CLUT with the proper animation. There are only four possible combinations of CLUTs patches, + // so we don't even need to double buffer them. They'll be naturally used in sequence, frame by frame. The only + // case where this would fail is if the frame rate goes low enough that we're skipping 3 frames, but that's not + // going to happen. + struct ClutUpload { + psyqo::Prim::FastFill fill; + psyqo::Prim::VRAMUpload upload; + uint32_t data[4]; + psyqo::Prim::FlushCache flushCache; + }; + psyqo::Fragments::SimpleFragment m_clutUpload[4]; + // Then we draw the platform. The platform is a 3x3 grid of quads. Technically as of now, the platform is + // static, but we could animate it later, so we can keep double buffering it. + psyqo::Fragments::SimpleFragment> m_platformQuads[2]; + // Finally, we have the draw calls for our torus. Note that this is an array of fragments, instead of + // being a fragment composed of an array, because we're going to chain them together in a specific order. + // In other words, the other fragments are simple contiguous memory blocks sent in one go, while this one + // is a bunch of memory blocks that we'll chain together into the ordering table, working as a sort of + // arena allocator. And as usual, we're going to double buffer them. This is a significant memory chunk, + // of roughly 54kB. + eastl::array, Torus::Count> m_quads[2]; + + // The last needed piece we need is the ordering table. We're going to use two of them, for double buffering. + psyqo::OrderingTable<4096> m_ots[2]; + + // The rest of our variables are normal state keeping. + uint32_t m_lastFrameCounter; + psyqo::Angle m_angleX = 0.0_pi; + psyqo::Angle m_angleY = 0.0_pi; + psyqo::Angle m_angleZ = 0.0_pi; + unsigned m_animationCounter = 0; + +#include "presets.hh" + + unsigned m_lutIndex = 0; + bool m_lutInverted = false; + uint8_t m_clutCounter = 0; + + public: + // The helper function to generate one torus. This is a fairly normal torus generation function, with the + // exception that we're adding a ripple effect to the torus. The depth of the ripples is determined by the + // index of the torus. + void generateTorus(unsigned torusIndex) { + constexpr psyqo::Angle incrementOutside = 2.0_pi / Torus::C; + constexpr psyqo::Angle incrementInside = 2.0_pi / Torus::P; + constexpr psyqo::Angle rippleIncrement = 1.0_pi / Count; + psyqo::Angle ripple = rippleIncrement * torusIndex; + auto& torus = m_tori[torusIndex]; + ramsyscall_printf("Generating torus %u\n", torusIndex); + + auto amplitude = torusDemo.m_trig.sin(ripple) * 0.6_fp; + unsigned index = 0; + for (psyqo::Angle outside = 0; outside < 2.0_pi; outside += incrementOutside) { + auto rot = psyqo::SoftMath::generateRotationMatrix33(outside, psyqo::SoftMath::Axis::Z, &torusDemo.m_trig); + psyqo::GTE::writeUnsafe(rot); + psyqo::FixedPoint<> rippleAmplitude = amplitude * torusDemo.m_trig.sin(outside * 5 + ripple * 8) + 1.5_fp; + for (psyqo::Angle inside = 0; inside < 2.0_pi; inside += incrementInside) { + psyqo::Vec3 v; + auto c = torusDemo.m_trig.cos(inside); + auto s = torusDemo.m_trig.sin(inside); + v.x = 0.0_fp; + v.y = c * rippleAmplitude + 4.0_fp; + v.z = s * rippleAmplitude; + psyqo::GTE::writeSafe(v); + psyqo::GTE::Kernels::mvmva(); + torus.vertices[index++] = psyqo::GTE::readUnsafe(); + } + } + torus.computeNormals(); + } +}; + +TorusScene torusScene; + +// This is the scene that will generate the torus animation. It'll be a simple progress bar. +// It's also the first scene that will be pushed. +class TorusGeneratorScene final : public psyqo::Scene { + void frame() override; + unsigned m_generationFrame = 0; + uint32_t m_startTimestamp = 0; + // Our generator scene won't try to double buffer, so we only need one set of primitives. + struct ProgressBar { + psyqo::Prim::PolyLine<4> line; + psyqo::Prim::Rectangle rect; + } m_progressBar; + uint8_t computePixel(uint8_t x, uint8_t y); + + public: + TorusGeneratorScene() { + // Preparing the progress bar drawing calls. + m_progressBar.line.setColor({{.r = 255, .g = 255, .b = 255}}); + m_progressBar.line.points[0] = {{.x = 30, .y = 118}}; + m_progressBar.line.points[1] = {{.x = 30, .y = 138}}; + m_progressBar.line.points[2] = {{.x = 290, .y = 138}}; + m_progressBar.line.points[3] = {{.x = 290, .y = 118}}; + m_progressBar.line.points[4] = {{.x = 30, .y = 118}}; + m_progressBar.rect.position = {{.x = 32, .y = 120}}; + m_progressBar.rect.size = {{.w = 0, .h = 17}}; + m_progressBar.rect.setColor({{.r = 255, .g = 255, .b = 255}}); + } +}; + +TorusGeneratorScene torusGeneratorScene; + +} // namespace + +void TorusDemo::prepare() { + psyqo::GPU::Configuration config; + config.set(psyqo::GPU::Resolution::W320) + .set(psyqo::GPU::VideoMode::AUTO) + .set(psyqo::GPU::ColorMode::C15BITS) + .set(psyqo::GPU::Interlace::PROGRESSIVE); + gpu().initialize(config); +} + +void TorusDemo::createScene() { + m_font.uploadSystemFont(gpu()); + m_input.initialize(); + pushScene(&torusGeneratorScene); +} + +// See the proctex example for more details on this. +uint8_t TorusGeneratorScene::computePixel(uint8_t x_, uint8_t y_) { + const auto& trig = torusDemo.m_trig; + psyqo::Angle x(x_ * 8, psyqo::Angle::RAW); + psyqo::Angle y(y_ * 8, psyqo::Angle::RAW); + auto v = trig.sin(x) + 0.8_fp * trig.sin(x * 2) + 0.3_fp * trig.cos(x * 3) * trig.sin(x * 5) + trig.sin(y * 2) + + 0.7_fp * trig.cos(y * 8) + 0.2_fp * trig.sin(y * 4) * trig.cos(y * 11) * trig.sin(x * 8); + return eastl::clamp(v.integer<32>() + 128, int32_t(0), int32_t(255)); +} + +void TorusGeneratorScene::frame() { + // Each frame of the generator will be used to generate exactly one torus, and one line of our procedural texture. + // We're going to generate 256 torii and 256 lines of the texture, so this works out perfectly. The current + // generation code takes about 7 seconds to generate all the torii and the texture, and we're generating 256 + // frames, so roughly 30ms per frame. This means that this screen will run at 30fps, which is more than enough. + if (m_generationFrame < eastl::max(TorusScene::Count, size_t(256))) { + if (m_generationFrame == 0) { + m_startTimestamp = gpu().now(); + } + if (m_generationFrame < TorusScene::Count) { + torusScene.generateTorus(m_generationFrame); + } + if (m_generationFrame < 256) { + psyqo::Rect region = {.pos = {{.x = 830, .y = int16_t(m_generationFrame + 256)}}, + .size = {{.w = 128, .h = 1}}}; + psyqo::Prim::VRAMUpload upload; + upload.region = region; + gpu().sendPrimitive(upload); + for (unsigned x = 0; x < 256; x += 4) { + uint32_t d = 0; + for (unsigned i = 0; i < 4; i++) { + uint32_t c = computePixel(x + i, m_generationFrame); + d >>= 8; + c <<= 24; + d |= c; + } + gpu().sendRaw(d); + } + } + } else { + // Once we're all done, we're going to upload a solid CLUT, which will be then patched with the animation. + psyqo::Rect region = {.pos = {{.x = 0, .y = 511}}, .size = {{.w = 256, .h = 1}}}; + psyqo::Prim::VRAMUpload upload; + upload.region = region; + gpu().sendPrimitive(upload); + for (unsigned i = 0; i < 128; i++) { + gpu().sendRaw(0xbdefbdef); + } + psyqo::Prim::FlushCache fc; + gpu().sendPrimitive(fc); + pushScene(&torusScene); + } + m_generationFrame++; + uint32_t elapsed = (gpu().now() - m_startTimestamp) / 1000; + int32_t eta = (elapsed * eastl::max(TorusScene::Count, size_t(256))) / m_generationFrame - elapsed; + gpu().clear(c_backgroundColor); + torusDemo.m_font.print(gpu(), "Generating animation...", {{.x = 60, .y = 80}}, {{.r = 255, .g = 255, .b = 255}}); + torusDemo.m_font.printf(gpu(), {{.x = 60, .y = 160}}, {{.r = 255, .g = 255, .b = 255}}, "Elapsed: %us, ETA: %us", + elapsed / 1000, eastl::max(eta, int32_t(0)) / 1000); + // This is the only dynamic part of the progress bar, so that's the only write to our draw calls we're doing. + m_progressBar.rect.size.w = int16_t(m_generationFrame); + gpu().sendPrimitive(m_progressBar); +} + +// Last but not least, the main loop of the demo. A lot of work happens for each frame, but it's all +// done under 10ms, which is more than good enough for 60fps, with room to spare. +void TorusScene::frame() { + // We're still going to do adaptive frame rate, so we're going to look at the number of frames that have passed + // since the last frame, and we're going to adjust the animation accordingly. + uint32_t beginFrame = gpu().now(); + auto currentFrameCounter = gpu().getFrameCount(); + auto frameDiff = currentFrameCounter - torusScene.m_lastFrameCounter; + if (frameDiff == 0) { + // This shouldn't happen, but, eh. + return; + } + torusScene.m_lastFrameCounter = currentFrameCounter; + // We're going to update the various animation counters first thing. + unsigned animationIndex = 0; + if (m_animationCounter >= 1500) { + m_animationCounter = 0; + } else { + if (m_animationCounter < (m_tori.size() * 2)) { + animationIndex = m_animationCounter / 2; + } + m_animationCounter += frameDiff; + } + for (unsigned i = 0; i < frameDiff; i++) { + m_angleX += 0.001_pi; + m_angleY += 0.002_pi; + m_angleZ += 0.003_pi; + } + if (m_angleX >= 2.0_pi) { + m_angleX -= 2.0_pi; + } + if (m_angleY >= 2.0_pi) { + m_angleY -= 2.0_pi; + } + if (m_angleZ >= 2.0_pi) { + m_angleZ -= 2.0_pi; + } + + // And now we go into the meat of the frame. Generating the transformation matrix here, and uploading it to the GTE. + // It is relevant to note that at this point, the previous frame may still be sent to the GPU through the DMA chain. + // These matrix multiplications are done in software, and they're not particularly fast, but it's done only once per + // frame, so it's not really a problem. The computation could be accelerated using the GTE however, but we're not + // starving for CPU at this point, so it's all good. + auto transform = psyqo::SoftMath::generateRotationMatrix33(m_angleX, psyqo::SoftMath::Axis::X, &torusDemo.m_trig); + auto rot = psyqo::SoftMath::generateRotationMatrix33(m_angleY, psyqo::SoftMath::Axis::Y, &torusDemo.m_trig); + psyqo::SoftMath::multiplyMatrix33(&transform, &rot, &transform); + psyqo::SoftMath::generateRotationMatrix33(&rot, m_angleZ, psyqo::SoftMath::Axis::Z, &torusDemo.m_trig); + psyqo::SoftMath::multiplyMatrix33(&transform, &rot, &transform); + psyqo::GTE::writeUnsafe(transform); + + // All these will be reused multiple times over the course of the frame. + psyqo::GTE::Long sz; + eastl::array projected; + eastl::array zNormal; + eastl::array zValues; + unsigned i = 0; + const auto parity = gpu().getParity(); + + // This phase is to generate the drawcalls for the off-screen rendering of the shadow texture. + + // So we need to adjust the GTE rendering context accordingly. We're going to render the torus with a + // sort of telephoto lens angle, in a 256x256 destination texture. + psyqo::GTE::write(40000); + psyqo::GTE::write(320); + psyqo::GTE::write(psyqo::FixedPoint<16>(128.0).raw()); + psyqo::GTE::write(psyqo::FixedPoint<16>(128.0).raw()); + + // We don't need to sort the quads, or try to cull them, as they'll all be mushed together in a single + // black-ish shadow blob. So we just first have a pass of projecting all of the vertices for our + // currently selected torus. + for (; i < Torus::Count - 2; i += 3) { + psyqo::GTE::writeUnsafe(m_tori[animationIndex].vertices[i + 0]); + psyqo::GTE::writeUnsafe(m_tori[animationIndex].vertices[i + 1]); + psyqo::GTE::writeSafe(m_tori[animationIndex].vertices[i + 2]); + psyqo::GTE::Kernels::rtpt(); + psyqo::GTE::read(&projected[i + 0].packed); + psyqo::GTE::read(&projected[i + 1].packed); + psyqo::GTE::read(&projected[i + 2].packed); + } + for (; i < Torus::Count; i++) { + psyqo::GTE::writeSafe(m_tori[animationIndex].vertices[i]); + psyqo::GTE::Kernels::rtps(); + psyqo::GTE::read(&projected[i].packed); + } + + // Then we simply fill in the primitives buffer of the off-screen render with the projected vertices. + for (unsigned index = 0; index < Torus::Count; index++) { + unsigned a, b, c, d; + Torus::getVerticesForFace(index, a, b, c, d); + auto pA = projected[a]; + auto pB = projected[b]; + auto pC = projected[c]; + auto pD = projected[d]; + auto& prim = m_shadowTexture.primitives[index]; + prim.pointA = pA; + prim.pointB = pB; + prim.pointC = pC; + prim.pointD = pD; + } + + // Now we're going to render the rest of the scene, so we adjust the GTE context. Our camera gets a wider + // angle, and we're going to render to the full screen of 320x240. + psyqo::GTE::write(60000); + psyqo::GTE::write(280); + psyqo::GTE::write(psyqo::FixedPoint<16>(160.0).raw()); + psyqo::GTE::write(psyqo::FixedPoint<16>(120.0).raw()); + + // The first piece to render is the platform with the shadow texture. We might want to animate the platform + // in the future, but for now it's static, so we just upload the identity matrix to the GTE's rotation register. + static constexpr psyqo::Matrix33 identity = {{ + {1.0_fp, 0.0_fp, 0.0_fp}, + {0.0_fp, 1.0_fp, 0.0_fp}, + {0.0_fp, 0.0_fp, 1.0_fp}, + }}; + psyqo::GTE::writeUnsafe(identity); + i = 0; + // The platform is a simple 3x3 grid of quads. We're going to project the vertices and then fill in the + // primitives buffer for it. As noted before, these values will technically never change, but we're going + // to put this in the main loop still in case we want to animate it later. + psyqo::Vertex platformVertices[16]; + auto* platformVertex = platformVertices; + psyqo::FixedPoint<> v = -7.0_fp; + for (unsigned j = 0; j < 4; j++) { + psyqo::FixedPoint<> u = -7.0_fp; + for (unsigned i = 0; i < 4; i++) { + psyqo::GTE::writeSafe(psyqo::Vec3(u + 1.70166_fp, 4.39747_fp, v - 0.10009)); + psyqo::GTE::Kernels::rtps(); + psyqo::GTE::read(&platformVertex->packed); + platformVertex++; + u += 3.5_fp; + } + v += 3.5_fp; + } + auto& platformQuads = m_platformQuads[parity]; + for (unsigned i = 0; i < 3; i++) { + for (unsigned j = 0; j < 3; j++) { + auto quad = &platformQuads.primitive[i * 3 + j]; + quad->pointA = platformVertices[(3 - i) * 4 + j]; + quad->pointB = platformVertices[(3 - i) * 4 + j + 1]; + quad->pointC = platformVertices[(2 - i) * 4 + j]; + quad->pointD = platformVertices[(2 - i) * 4 + j + 1]; + } + } + + // Almost done. Next, we render our torus. We retrieve the previous rotation matrix used to render the off-screen + // shadow texture, and we multiply it by a 90 degree rotation around the X axis, as the platform is going to be + // rendered visually underneath the torus. This will make the appearance that everything has been projected + // properly, but it's all just a visual trick. + psyqo::SoftMath::generateRotationMatrix33(&rot, 0.5_pi, psyqo::SoftMath::Axis::X, &torusDemo.m_trig); + psyqo::SoftMath::multiplyMatrix33(&transform, &rot, &transform); + psyqo::GTE::writeUnsafe(transform); + + // At this point, our background DMA chain has most likely finished. At some point, we want to send + // the draw calls for the off-screen rendering of the shadow texture, and ensure that we're not just going + // to idly stall until it's done rendering, so we should send it mid-frame, after some computation has + // been done, but also while there's still some computation to be done. This spot is as good as any. + + // We're still going to ensure that the previous frame's DMA chain has been done sending. + gpu().waitChainIdle(); + + // And then we're going to send the shadow texture rendering commands. We'll have to stall at the end + // of our computation to ensure the shadow texture is done rendering, so we keep a boolean on the stack + // indicating whether the shadow texture has been sent, and it'll toggle during the ISR at the end of + // the transfer. + bool shadowSent = false; + gpu().sendFragment( + m_shadowTexture, + [&shadowSent]() { + shadowSent = true; + // Since we're going to mutate a stack variable from the ISR, we need to tell our compiler that. + eastl::atomic_signal_fence(eastl::memory_order_release); + }, + psyqo::DMA::FROM_ISR); + + // With this intermission done, we can now proceed to render the torus. We're going to project the vertices and + // rotate the normals. This loop is a balance between waiting for the GTE to finish projecting the vertices and + // the CPU doing the rotation of the normals. The GTE is faster, and we technically would be better off + // doing the rotation in the GTE, but (1) we have a special z-only rotation kernel function, and (2) we're + // basically pipelining the GTE and the CPU here, for maximum throughput. We'll only use the z value for each + // normal to compute the light incidence from a light source located at (0, 0, 0). + for (; i < Torus::Count - 2; i += 3) { + psyqo::GTE::writeUnsafe(m_tori[animationIndex].vertices[i + 0]); + psyqo::GTE::writeUnsafe(m_tori[animationIndex].vertices[i + 1]); + psyqo::GTE::writeUnsafe(m_tori[animationIndex].vertices[i + 2]); + psyqo::Vec3 v0 = m_tori[animationIndex].normals[i + 0]; + psyqo::Vec3 v1 = m_tori[animationIndex].normals[i + 1]; + psyqo::Vec3 v2 = m_tori[animationIndex].normals[i + 2]; + psyqo::GTE::Kernels::rtpt(); + auto sz = -psyqo::SoftMath::matrixVecMul3z(&transform, &v0); + int32_t z = sz.integer<256>() - 1; + zNormal[i + 0] = eastl::clamp(z, int32_t(0), int32_t(255)); + sz = -psyqo::SoftMath::matrixVecMul3z(&transform, &v1); + z = sz.integer<256>() - 1; + zNormal[i + 1] = eastl::clamp(z, int32_t(0), int32_t(255)); + sz = -psyqo::SoftMath::matrixVecMul3z(&transform, &v2); + z = sz.integer<256>() - 1; + zNormal[i + 2] = eastl::clamp(z, int32_t(0), int32_t(255)); + psyqo::GTE::read(&projected[i + 0].packed); + psyqo::GTE::read(reinterpret_cast(&zValues[i + 0])); + psyqo::GTE::read(&projected[i + 1].packed); + psyqo::GTE::read(reinterpret_cast(&zValues[i + 1])); + psyqo::GTE::read(&projected[i + 2].packed); + psyqo::GTE::read(reinterpret_cast(&zValues[i + 2])); + } + for (; i < Torus::Count; i++) { + psyqo::GTE::writeUnsafe(m_tori[animationIndex].vertices[i]); + psyqo::Vec3 v = m_tori[animationIndex].normals[i]; + psyqo::GTE::Kernels::rtps(); + auto sz = -psyqo::SoftMath::matrixVecMul3z(&transform, &v); + int32_t z = sz.integer<256>() - 1; + zNormal[i] = eastl::clamp(z, int32_t(0), int32_t(255)); + psyqo::GTE::read(&projected[i].packed); + psyqo::GTE::read(reinterpret_cast(&zValues[i])); + } + + // What's left for us to do to render the torus is to adjust the primitive buffer for the torus using the ordering + // table while culling the back faces using nclip. + auto& quads = m_quads[parity]; + auto& ot = m_ots[parity]; + const psyqo::Color* lut = s_lut; + for (unsigned index = 0; index < Torus::Count; index++) { + unsigned a, b, c, d; + Torus::getVerticesForFace(index, a, b, c, d); + auto pA = projected[a]; + auto pB = projected[b]; + auto pC = projected[c]; + psyqo::GTE::write(pA.packed); + psyqo::GTE::write(pB.packed); + psyqo::GTE::write(pC.packed); + psyqo::GTE::Kernels::nclip(); + int32_t dot = psyqo::GTE::readRaw(); + if (dot > 0) continue; + // Our quad didn't get culled, so we adjust its 4 points and colors, and insert + // it into the ordering table. + auto pD = projected[d]; + auto& prim = quads[index].primitive; + auto z = zValues[a] + zValues[b] + zValues[c] + zValues[d]; + prim.pointA = pA; + a = zNormal[a]; + prim.pointB = pB; + b = zNormal[b]; + prim.pointC = pC; + c = zNormal[c]; + prim.pointD = pD; + d = zNormal[d]; + z -= 140000; + prim.setColorA(lut[a]); + prim.setColorB(lut[b]); + prim.setColorC(lut[c]); + prim.setColorD(lut[d]); + ot.insert(quads[index], z >> 5); + } + + // And finally, we need to patch the CLUT for its animation. + uint8_t clutCounter = m_clutCounter; + clutCounter += frameDiff; + m_clutCounter = clutCounter; + auto& clutUpload = m_clutUpload[(clutCounter & 1) * 2 + parity]; + clutUpload.primitive.upload.region.pos.x = 256 - clutCounter; + + // We're all done, so all that's left for us to do is to chain the draw calls together and finish our frame. + auto& startScene = m_startScene[parity]; + gpu().getNextClear(startScene.primitive, c_backgroundColor); + gpu().chain(startScene); + gpu().chain(clutUpload); + gpu().chain(platformQuads); + gpu().chain(ot); + +#ifdef MEASURE_PERFORMANCE + // We can measure and display the performance of the demo, which is useful when optimizing. + torusDemo.m_font.chainprintf(gpu(), {{.x = 2, .y = 2}}, {{.r = 0xff, .g = 0xff, .b = 0xff}}, "FPS: %i", + gpu().getRefreshRate() / frameDiff); + // The `now()` function will not return a new value until `pumpCallbacks()` is called, so we need to do that + // to ensure that we're measuring the time correctly. + gpu().pumpCallbacks(); + uint32_t endFrame = gpu().now(); + uint32_t spent = endFrame - beginFrame; + ramsyscall_printf("Frame took %ius to complete\n", spent); +#endif + + // At this point our off-screen rendering of the shadow texture should be done, but we're still going to + // try stalling for it just in case, as we can't let the DMA chain to begin if there's still another + // DMA in progress. + eastl::atomic_signal_fence(eastl::memory_order_acquire); + while (!shadowSent) { + gpu().pumpCallbacks(); + eastl::atomic_signal_fence(eastl::memory_order_acquire); + } +} + +int main() { return torusDemo.run(); } diff --git a/src/mips/psyqo/font.hh b/src/mips/psyqo/font.hh index d5e42689a..64ca16b90 100644 --- a/src/mips/psyqo/font.hh +++ b/src/mips/psyqo/font.hh @@ -88,7 +88,7 @@ class FontBase { * @details This method unpacks and uploads a font to VRAM. The compressed font data is expected to be in the * format generated by the `font-compress.lua` script. See this script for more details. */ - void unpackFont(GPU& gpu, const uint8_t* data, Vertex location, Vertex textureSize); + static void unpackFont(GPU& gpu, const uint8_t* data, Vertex location, Vertex textureSize); /** * @brief Initializes the object for use. diff --git a/src/mips/psyqo/gpu.hh b/src/mips/psyqo/gpu.hh index faee5a0e4..078331c9d 100644 --- a/src/mips/psyqo/gpu.hh +++ b/src/mips/psyqo/gpu.hh @@ -63,10 +63,14 @@ namespace timer_literals { * `gpu().armPeriodicTimer(1_s, callback)` will create a timer that * fires every second. */ -constexpr uint32_t operator""_ns(unsigned long long int value) { return value / 1'000; } -constexpr uint32_t operator""_us(unsigned long long int value) { return value; } -constexpr uint32_t operator""_ms(unsigned long long int value) { return value * 1'000; } -constexpr uint32_t operator""_s(unsigned long long int value) { return value * 1'000'000; } +consteval uint32_t operator""_ns(unsigned long long int value) { return value / 1'000; } +consteval uint32_t operator""_us(unsigned long long int value) { return value; } +consteval uint32_t operator""_ms(unsigned long long int value) { return value * 1'000; } +consteval uint32_t operator""_s(unsigned long long int value) { return value * 1'000'000; } +consteval uint32_t operator""_ns(long double value) { return value / 1'000; } +consteval uint32_t operator""_us(long double value) { return value; } +consteval uint32_t operator""_ms(long double value) { return value * 1'000; } +consteval uint32_t operator""_s(long double value) { return value * 1'000'000; } } // namespace timer_literals @@ -85,6 +89,7 @@ class GPU { enum class VideoMode { AUTO, NTSC, PAL }; enum class ColorMode { C15BITS, C24BITS }; enum class Interlace { PROGRESSIVE, INTERLACED }; + enum class MiscSetting { CLEAR_VRAM, KEEP_VRAM }; void initialize(const Configuration &config); static constexpr uint32_t US_PER_HBLANK = 64; @@ -371,6 +376,14 @@ class GPU { */ bool isChainTransferred() const; + /** + * @brief Waits until the background DMA transfer operation initiated by a frame flip is complete. + * + */ + void waitChainIdle() { + while (isChainTransferring()) pumpCallbacks(); + } + /** * @brief Gets the current timestamp in microseconds. * @@ -501,7 +514,7 @@ class GPU { uint32_t *m_chainHead = nullptr; uint32_t *m_chainTail = nullptr; size_t m_chainTailCount = 0; - enum { CHAIN_IDLE, CHAIN_TRANSFERRING, CHAIN_TRANSFERRED } m_chainStatus; + enum { CHAIN_IDLE, CHAIN_TRANSFERRING, CHAIN_TRANSFERRED } m_chainStatus = CHAIN_IDLE; struct Timer { eastl::function callback; uint32_t deadline; diff --git a/src/mips/psyqo/internal/gpu/configuration.hh b/src/mips/psyqo/internal/gpu/configuration.hh index 62d16e593..79efd7edb 100644 --- a/src/mips/psyqo/internal/gpu/configuration.hh +++ b/src/mips/psyqo/internal/gpu/configuration.hh @@ -80,6 +80,17 @@ struct psyqo::GPU::Configuration { config.vResolution = interlace == Interlace::INTERLACED ? VR_480 : VR_240; return *this; } + Configuration &set(MiscSetting setting) { + switch (setting) { + case MiscSetting::CLEAR_VRAM: + clearVRAM = true; + break; + case MiscSetting::KEEP_VRAM: + clearVRAM = false; + break; + } + return *this; + } private: enum HResolution { @@ -125,5 +136,7 @@ struct psyqo::GPU::Configuration { }; DisplayModeConfig config = {}; + bool clearVRAM = true; + friend class GPU; }; diff --git a/src/mips/psyqo/kernel.hh b/src/mips/psyqo/kernel.hh index b37d25be3..006f768e3 100644 --- a/src/mips/psyqo/kernel.hh +++ b/src/mips/psyqo/kernel.hh @@ -29,6 +29,8 @@ SOFTWARE. #include #include +#include + namespace psyqo { /** @@ -81,7 +83,7 @@ enum class DMA : unsigned { /** * @brief Stops the execution of the application. */ -[[noreturn]] void abort(const char* msg); +[[noreturn]] void abort(const char* msg, std::source_location location = std::source_location::current()); /** * @brief A C++ wrapper around the `openEvent` syscall. @@ -164,8 +166,12 @@ void beginFrame(); /** * @brief A simple `assert` macro. */ -inline void assert(bool condition, const char* message) { - if (!condition) abort(message); +inline void assert(bool condition, const char* message, + std::source_location location = std::source_location::current()) { + if (!condition) { + abort(message, location); + __builtin_unreachable(); + } } } // namespace Kernel diff --git a/src/mips/psyqo/src/application.cpp b/src/mips/psyqo/src/application.cpp index f789c6e24..589ad994d 100644 --- a/src/mips/psyqo/src/application.cpp +++ b/src/mips/psyqo/src/application.cpp @@ -26,7 +26,6 @@ SOFTWARE. #include "psyqo/application.hh" -#include "common/hardware/hwregs.h" #include "common/syscalls/syscalls.h" #include "psyqo/alloc.h" #include "psyqo/kernel.hh" diff --git a/src/mips/psyqo/src/font-compress.lua b/src/mips/psyqo/src/font-compress.lua index 33c7217c2..21fbb78d4 100644 --- a/src/mips/psyqo/src/font-compress.lua +++ b/src/mips/psyqo/src/font-compress.lua @@ -206,8 +206,8 @@ function compressFont(fontfile) local size = #lut tree.leaf = size == 0 and 0 or -size lut[size + 1] = tree.byte + tree.lut = size + 1 leaves[tree.byte] = tree - tree.byte = nil return end tree.index = index @@ -232,7 +232,7 @@ function compressFont(fontfile) if tree.left then local index = tree.left.index if index then - btree[tree.index * 2 + 1] = index * 2 + btree[tree.index * 2 + 1] = index * 2 + 2 buildBinaryTree(tree.left) else btree[tree.index * 2 + 1] = tree.left.leaf @@ -241,7 +241,7 @@ function compressFont(fontfile) if tree.right then local index = tree.right.index if index then - btree[tree.index * 2 + 2] = index * 2 + btree[tree.index * 2 + 2] = index * 2 + 2 buildBinaryTree(tree.right) else btree[tree.index * 2 + 2] = tree.right.leaf @@ -252,17 +252,18 @@ function compressFont(fontfile) -- last step: build the compressed bitstream local bitstream = {} - local bitbucket = 1 + local bitbucket = 65536 local function pushBit(bit) - bitbucket = bitbucket * 2 + bit - if bitbucket >= 256 then + bitbucket = bitbucket / 2 + bit * 128 + if bitbucket < 512 then bitstream[#bitstream + 1] = bitbucket - 256 - bitbucket = 1 + bitbucket = 65536 end end local function encode(byte) local function buildEncoding(node) - if node.parent then buildEncoding(node.parent) end + if not node.parent then return end + buildEncoding(node.parent) pushBit(node.isLeft and 0 or 1) end buildEncoding(leaves[byte]) @@ -270,7 +271,10 @@ function compressFont(fontfile) for _, v in ipairs(d) do encode(v) end - if bitbucket ~= 1 then bitstream[#bitstream + 1] = bitbucket end + if bitbucket ~= 65536 then + while bitbucket >= 512 do bitbucket = bitbucket / 2 end + bitstream[#bitstream + 1] = bitbucket - 256 + end -- all the compression is done, dump everything diff --git a/src/mips/psyqo/src/gpu.cpp b/src/mips/psyqo/src/gpu.cpp index 61438b9e1..d509016a3 100644 --- a/src/mips/psyqo/src/gpu.cpp +++ b/src/mips/psyqo/src/gpu.cpp @@ -117,9 +117,11 @@ void psyqo::GPU::initialize(const psyqo::GPU::Configuration &config) { syscall_enableEvent(event); syscall_enableTimerIRQ(3); syscall_setTimerAutoAck(3, 1); - Prim::FastFill ff; - ff.rect = Rect{0, 0, 1024, 512}; - sendPrimitive(ff); + if (config.clearVRAM) { + Prim::FastFill ff; + ff.rect = Rect{0, 0, 1024, 512}; + sendPrimitive(ff); + } // Enable Display Hardware::GPU::Ctrl = 0x03000000; Kernel::enableDma(Kernel::DMA::GPU); @@ -165,7 +167,7 @@ void psyqo::GPU::initialize(const psyqo::GPU::Configuration &config) { } } break; } - // GPU back in Fifo polling mode, effectively disabling DMA + // GPU back in Fifo polling mode, in case we were uploading to VRAM Hardware::GPU::Ctrl = 0x04000001; if (m_flushCacheAfterDMA) { Prim::FlushCache fc; @@ -351,7 +353,7 @@ void psyqo::GPU::uploadToVRAM(const uint16_t *data, Rect region, eastl::function upload.region = region; sendPrimitive(upload); - // Activating CPU->GPU DMA + // Activating VRAM DMA upload mode Hardware::GPU::Ctrl = 0x04000002; while ((Hardware::GPU::Ctrl & uint32_t(0x10000000)) == 0) ; @@ -395,6 +397,7 @@ void psyqo::GPU::sendFragment(const uint32_t *data, size_t count, eastl::functio void psyqo::GPU::scheduleNormalDMA(uintptr_t data, size_t count) { uint32_t bcr = count; + Kernel::assert((DMA_CTRL[DMA_GPU].CHCR & 0x01000000) == 0, "GPU DMA busy"); unsigned bs = 1; while (((bcr & 1) == 0) && (bs < 16)) { bs <<= 1; @@ -404,8 +407,6 @@ void psyqo::GPU::scheduleNormalDMA(uintptr_t data, size_t count) { bcr <<= 16; bcr |= bs; - // Activating CPU->GPU DMA - Hardware::GPU::Ctrl = 0x04000002; while ((Hardware::GPU::Ctrl & uint32_t(0x10000000)) == 0) ; DMA_CTRL[DMA_GPU].MADR = data; @@ -464,8 +465,7 @@ void psyqo::GPU::sendChain(eastl::function &&callback, DMA::DmaCallback } void psyqo::GPU::scheduleChainedDMA(uintptr_t head) { - // Activating CPU->GPU DMA - Hardware::GPU::Ctrl = 0x04000002; + Kernel::assert((DMA_CTRL[DMA_GPU].CHCR & 0x01000000) == 0, "GPU DMA busy"); while ((Hardware::GPU::Ctrl & uint32_t(0x10000000)) == 0) ; DMA_CTRL[DMA_GPU].MADR = head; diff --git a/src/mips/psyqo/src/kernel.cpp b/src/mips/psyqo/src/kernel.cpp index 52ad128cd..d5c7f02ff 100644 --- a/src/mips/psyqo/src/kernel.cpp +++ b/src/mips/psyqo/src/kernel.cpp @@ -59,26 +59,23 @@ void trampoline(int slot) { s_functions[slot].lambda(); } KernelEventFunction allocateEventFunction(eastl::function&& lambda) { for (unsigned slot = 0; slot < SLOTS; slot++) { if (!s_functions[slot].lambda) { - s_functions[slot].code[0] = Mips::Encoder::j(reinterpret_cast(trampoline)); - s_functions[slot].code[1] = Mips::Encoder::addiu(Mips::Encoder::Reg::A0, Mips::Encoder::Reg::R0, slot); s_functions[slot].lambda = eastl::move(lambda); - syscall_flushCache(); return s_functions[slot].getFunction(); } } psyqo::Kernel::abort("allocateEventFunction: no function slot available"); - return reinterpret_cast(-1); + __builtin_unreachable(); } } // namespace -[[noreturn]] void psyqo::Kernel::abort(const char* msg) { +[[noreturn]] void psyqo::Kernel::abort(const char* msg, std::source_location loc) { fastEnterCriticalSection(); + ramsyscall_printf("Abort at %s:%i: %s\n", loc.file_name(), loc.line(), msg); pcsx_message(msg); pcsx_debugbreak(); - syscall_puts(msg); - syscall_putchar('\n'); while (1) asm(""); + __builtin_unreachable(); } uint32_t psyqo::Kernel::openEvent(uint32_t classId, uint32_t spec, uint32_t mode, eastl::function&& lambda) { @@ -94,6 +91,7 @@ unsigned psyqo::Kernel::registerDmaEvent(DMA channel_, eastl::function&& unsigned channel = static_cast(channel_); if (channel >= static_cast(DMA::Max)) { psyqo::Kernel::abort("registerDmaEvent: invalid dma channel"); + __builtin_unreachable(); } auto& slots = s_dmaCallbacks[channel]; for (unsigned slot = 0; slot < SLOTS; slot++) { @@ -104,13 +102,14 @@ unsigned psyqo::Kernel::registerDmaEvent(DMA channel_, eastl::function&& } psyqo::Kernel::abort("registerDmaEvent: no function slot available"); - return 0xffffffff; + __builtin_unreachable(); } void psyqo::Kernel::enableDma(DMA channel_, unsigned priority) { unsigned channel = static_cast(channel_); if (channel >= static_cast(DMA::Max)) { psyqo::Kernel::abort("enableDma: invalid dma channel"); + __builtin_unreachable(); } uint32_t dpcr = Hardware::CPU::DPCR; if (priority > 7) priority = 7; @@ -128,6 +127,7 @@ void psyqo::Kernel::disableDma(DMA channel_) { unsigned channel = static_cast(channel_); if (channel >= static_cast(DMA::Max)) { psyqo::Kernel::abort("disableDma: invalid dma channel"); + __builtin_unreachable(); } uint32_t dpcr = Hardware::CPU::DPCR; unsigned shift = channel * 4; @@ -142,6 +142,7 @@ void psyqo::Kernel::unregisterDmaEvent(unsigned slot) { if ((channel >= static_cast(DMA::Max)) || (slot >= SLOTS) || !s_dmaCallbacks[channel][slot]) { psyqo::Kernel::abort("unregisterDmaEvent: function wasn't previously allocated."); + __builtin_unreachable(); } s_dmaCallbacks[channel][slot] = nullptr; } @@ -158,6 +159,11 @@ void psyqo::Kernel::Internal::addInitializer(eastl::function&& lambda) { } void psyqo::Kernel::Internal::prepare() { + for (unsigned slot = 0; slot < SLOTS; slot++) { + s_functions[slot].code[0] = Mips::Encoder::j(reinterpret_cast(trampoline)); + s_functions[slot].code[1] = Mips::Encoder::addiu(Mips::Encoder::Reg::A0, Mips::Encoder::Reg::R0, slot); + } + syscall_flushCache(); syscall_dequeueCDRomHandlers(); syscall_setDefaultExceptionJmpBuf(); uint32_t event = syscall_openEvent(EVENT_DMA, 0x1000, EVENT_MODE_CALLBACK, []() { diff --git a/src/mips/tests/cop0/cester-cop0.c b/src/mips/tests/cop0/cester-cop0.c index 30fe2ae3a..983bd0282 100644 --- a/src/mips/tests/cop0/cester-cop0.c +++ b/src/mips/tests/cop0/cester-cop0.c @@ -71,8 +71,11 @@ CESTER_BODY( uint32_t cpu_LWR_LWL_half(uint32_t buff[], uint32_t initial); uint32_t cpu_LWR_LWL_nodelay(uint32_t buff[], uint32_t initial); uint32_t cpu_LWR_LWL_delayed(uint32_t buff[], uint32_t initial); + uint32_t cpu_LWR_LWL_load_different(uint32_t buff[], uint32_t initial); + uint32_t cpu_LW_LWR(uint32_t buff[], uint32_t initial); uint32_t cpu_delayed_load(uint32_t buff[], uint32_t override); uint32_t cpu_delayed_load_cancelled(uint32_t buff[], uint32_t override); + uint64_t cpu_delayed_load_load(uint32_t buff[], uint32_t override); uint32_t linkandload(); uint32_t lwandlink(); uint32_t nolink(); diff --git a/src/mips/tests/cpu/cpu.c b/src/mips/tests/cpu/cpu.c index 3176a025b..ca726a7d7 100644 --- a/src/mips/tests/cpu/cpu.c +++ b/src/mips/tests/cpu/cpu.c @@ -83,6 +83,18 @@ CESTER_TEST(cpu_LWR_LWL_delayed, cpu_tests, cester_assert_uint_eq(0x88112233, out); ) +CESTER_TEST(cpu_LWR_LWL_load_different, cpu_tests, + uint32_t buff[3] = {0x11223344, 0x55667788, 0xaabbccdd}; + uint32_t out = cpu_LWR_LWL_load_different(buff, 0xeeffeffe); + cester_assert_uint_eq(0x88556677, out); +) + +CESTER_TEST(cpu_LW_LWR, cpu_tests, + uint32_t buff[3] = {0x11223344, 0x55667788, 0xaabbccdd}; + uint32_t out = cpu_LW_LWR(buff, 0xeeffeffe); + cester_assert_uint_eq(0xaa112233, out); +) + CESTER_TEST(cpu_delayed_load, cpu_tests, uint32_t buff[1] = {1}; // As lw has a delayed load, the old value of the loaded @@ -100,10 +112,19 @@ CESTER_TEST(cpu_delayed_load_cancelled, cpu_tests, // move into the same register, the delayed load is // cancelled, and the register will contain the new // value - uint32_t out = cpu_delayed_load(buff, 0); + uint32_t out = cpu_delayed_load_cancelled(buff, 0); cester_assert_uint_eq(0, out); ) +CESTER_MAYBE_TEST(cpu_delayed_load_load, cpu_tests, + uint32_t buff[2] = {1, 2}; + // The above becomes complicated once you have two + // lw instructions in a row loading the same register + uint64_t out = cpu_delayed_load_load(buff, 4); + out = ((out >> 16) | out) & 0xffffffff; + cester_assert_uint_eq(0x00020004, out); +) + CESTER_MAYBE_TEST(cpu_BRANCH_BRANCH_slot, cpu_tests, // running a branch in a branch delay slot is technically // not allowed, but some games still do this, and the diff --git a/src/mips/tests/cpu/loads.s b/src/mips/tests/cpu/loads.s index 03a1b2808..1aef86af1 100644 --- a/src/mips/tests/cpu/loads.s +++ b/src/mips/tests/cpu/loads.s @@ -32,6 +32,7 @@ SOFTWARE. .type cpu_delayed_load, @function /* This can happen. */ +/* uint32_t cpu_delayed_load(uint32_t buff[], uint32_t override); */ cpu_delayed_load: lw $a1, 0($a0) move $v0, $a1 @@ -43,8 +44,23 @@ cpu_delayed_load: .type cpu_delayed_load_cancelled, @function /* This happens even more frequently. */ +/* uint32_t cpu_delayed_load_cancelled(uint32_t buff[], uint32_t override); */ cpu_delayed_load_cancelled: lw $v0, 0($a0) move $v0, $a1 jr $ra nop + + .align 2 + .global cpu_delayed_load_load + .type cpu_delayed_load_load, @function + +/* This is extremely infrequent */ +/* uint64_t cpu_delayed_load_load(uint32_t buff[], uint32_t override); */ +cpu_delayed_load_load: + lw $a1, 0($a0) + lw $a1, 4($a0) + move $v0, $a1 + move $v1, $a1 + jr $ra + nop diff --git a/src/mips/tests/cpu/lwlr.s b/src/mips/tests/cpu/lwlr.s index 45f7f3e37..8d126680c 100644 --- a/src/mips/tests/cpu/lwlr.s +++ b/src/mips/tests/cpu/lwlr.s @@ -32,6 +32,7 @@ SOFTWARE. .type cpu_LWR_LWL_half, @function /* While this usage is rare, it is technically valid and allowed. */ +/* uint32_t cpu_LWR_LWL_half(uint32_t buff[], uint32_t initial); */ cpu_LWR_LWL_half: lwl $a1, 4($a0) jr $ra @@ -43,6 +44,7 @@ cpu_LWR_LWL_half: /* This is technically invalid, and undefined behaviour. The result will be deterministic however on the r3000a PSX CPU. */ +/* uint32_t cpu_LWR_LWL_delayed(uint32_t buff[], uint32_t initial); */ cpu_LWR_LWL_nodelay: lwl $a1, 4($a0) lwr $a1, 1($a0) @@ -55,8 +57,30 @@ cpu_LWR_LWL_nodelay: .type cpu_LWR_LWL_delayed, @function /* This is the proper usage of lwl / lwr. */ +/* uint32_t cpu_LWR_LWL_delayed(uint32_t buff[], uint32_t initial); */ cpu_LWR_LWL_delayed: lwl $a1, 4($a0) lwr $a1, 1($a0) j $ra move $v0, $a1 + + .align 2 + .global cpu_LWR_LWL_load_different + .type cpu_LWR_LWL_load_different, @function + +/* uint32_t cpu_LWR_LWL_load_different(uint32_t buff[], uint32_t initial); */ +cpu_LWR_LWL_load_different: + lwl $a1, 4($a0) + lwr $a1, 5($a0) + j $ra + move $v0, $a1 + + .align 2 + .global cpu_LW_LWR + .type cpu_LW_LWL, @function +/* uint32_t cpu_LW_LWR(uint32_t buff[], uint32_t initial); */ +cpu_LW_LWR: + lw $a1, 8($a0) + lwr $a1, 1($a0) + j $ra + move $v0, $a1 diff --git a/src/spu/debug.cc b/src/spu/debug.cc index 8c2a63f70..7d84ce5a7 100644 --- a/src/spu/debug.cc +++ b/src/spu/debug.cc @@ -41,58 +41,36 @@ struct Grid { static constexpr auto WidthGeneralNoise = 70.0f; static constexpr auto WidthGeneralFMod = 70.0f; static constexpr auto WidthGeneralPlot = 150.0f; - static constexpr auto WidthGeneral = - WidthGeneralIndex + - WidthGeneralTag + - WidthGeneralOn + - WidthGeneralOff + - WidthGeneralMute + - WidthGeneralSolo + - WidthGeneralNoise + - WidthGeneralFMod + - WidthGeneralPlot; + static constexpr auto WidthGeneral = WidthGeneralIndex + WidthGeneralTag + WidthGeneralOn + WidthGeneralOff + + WidthGeneralMute + WidthGeneralSolo + WidthGeneralNoise + WidthGeneralFMod + + WidthGeneralPlot; static constexpr auto WidthFrequencyActive = 70.0f; static constexpr auto WidthFrequencyUsed = 70.0f; - static constexpr auto WidthFrequency = - WidthFrequencyActive + - WidthFrequencyUsed; + static constexpr auto WidthFrequency = WidthFrequencyActive + WidthFrequencyUsed; static constexpr auto WidthPositionStart = 120.0f; static constexpr auto WidthPositionCurrent = 120.0f; static constexpr auto WidthPositionLoop = 120.0f; - static constexpr auto WidthPosition = - WidthPositionStart + - WidthPositionCurrent + - WidthPositionLoop; + static constexpr auto WidthPosition = WidthPositionStart + WidthPositionCurrent + WidthPositionLoop; static constexpr auto WidthVolumeL = 70.0f; static constexpr auto WidthVolumeR = 70.0f; - static constexpr auto WidthVolume = - WidthVolumeL + - WidthVolumeR; + static constexpr auto WidthVolume = WidthVolumeL + WidthVolumeR; static constexpr auto WidthAdsrA = 70.0f; static constexpr auto WidthAdsrD = 70.0f; static constexpr auto WidthAdsrS = 70.0f; static constexpr auto WidthAdsrR = 70.0f; - static constexpr auto WidthAdsr = - WidthAdsrA + - WidthAdsrD + - WidthAdsrS + - WidthAdsrR; + static constexpr auto WidthAdsr = WidthAdsrA + WidthAdsrD + WidthAdsrS + WidthAdsrR; static constexpr auto WidthAdsrSustainLevel = 70.0f; static constexpr auto WidthAdsrSustainIncrease = 70.0f; - static constexpr auto WidthAdsrSustain = - WidthAdsrSustainLevel + - WidthAdsrSustainIncrease; + static constexpr auto WidthAdsrSustain = WidthAdsrSustainLevel + WidthAdsrSustainIncrease; static constexpr auto WidthAdsrVolumeCurrent = 70.0f; static constexpr auto WidthAdsrVolumeEnvelope = 80.0f; - static constexpr auto WidthAdsrVolume = - WidthAdsrVolumeCurrent + - WidthAdsrVolumeEnvelope; + static constexpr auto WidthAdsrVolume = WidthAdsrVolumeCurrent + WidthAdsrVolumeEnvelope; static constexpr auto WidthReverbAllowed = 70.0f; static constexpr auto WidthReverbActive = 70.0f; @@ -100,23 +78,19 @@ struct Grid { static constexpr auto WidthReverbOffset = 70.0f; static constexpr auto WidthReverbRepeat = 70.0f; static constexpr auto WidthReverb = - WidthReverbAllowed + - WidthReverbActive + - WidthReverbNumber + - WidthReverbOffset + - WidthReverbRepeat; + WidthReverbAllowed + WidthReverbActive + WidthReverbNumber + WidthReverbOffset + WidthReverbRepeat; }; namespace { using namespace PCSX::SPU; constexpr auto SPU_CHANNELS_SIZE = impl::MAXCHAN; -using SPU_CHANNELS_INFO = SPUCHAN(&)[SPU_CHANNELS_SIZE + 1]; +using SPU_CHANNELS_INFO = SPUCHAN (&)[SPU_CHANNELS_SIZE + 1]; using SPU_CHANNELS_TAGS = char (&)[SPU_CHANNELS_SIZE][impl::CHANNEL_TAG]; using SPU_CHANNELS_PLOT = float (&)[SPU_CHANNELS_SIZE][impl::DEBUG_SAMPLES]; -constexpr auto TableColumnFix = 2; // fixes ImGui possibly screwing last column width -constexpr auto TablePadding = 18; // inner padding to make it look neat +constexpr auto TableColumnFix = 2; // fixes ImGui possibly screwing last column width +constexpr auto TablePadding = 18; // inner padding to make it look neat constexpr auto BasicTableFlags = ImGuiTableFlags_SizingFixedSame | ImGuiTableFlags_NoHostExtendX; constexpr auto BasicTableColumnWidth = 150; @@ -134,8 +108,7 @@ bool& GetChannelSolo(SPU_CHANNELS_INFO channels, const size_t channel) { return GetChannelData(channels, channel).value; } -void HandleChannelMute( - SPU_CHANNELS_INFO channels, bool& muteThis, bool& soloThis) { +void HandleChannelMute(SPU_CHANNELS_INFO channels, bool& muteThis, bool& soloThis) { muteThis = !muteThis; if (muteThis) { soloThis = false; @@ -150,8 +123,7 @@ void HandleChannelMute( } } -void HandleChannelSoloMute( - SPU_CHANNELS_INFO channels, const size_t channel1, const size_t channel2) { +void HandleChannelSoloMute(SPU_CHANNELS_INFO channels, const size_t channel1, const size_t channel2) { auto& muteOther = GetChannelMute(channels, channel2); auto& soloOther = GetChannelSolo(channels, channel2); @@ -167,16 +139,14 @@ void HandleChannelSoloMute( } } else { // mute this to keep solo ones correct - if (std::any_of(channels, channels + SPU_CHANNELS_SIZE, [](const SPUCHAN& c) { - return c.data.get().value; - })) { + if (std::any_of(channels, channels + SPU_CHANNELS_SIZE, + [](const SPUCHAN& c) { return c.data.get().value; })) { GetChannelMute(channels, channel1) = true; } } } -void HandleChannelSolo( - SPU_CHANNELS_INFO channels, const size_t channel, bool& muteThis, bool& soloThis) { +void HandleChannelSolo(SPU_CHANNELS_INFO channels, const size_t channel, bool& muteThis, bool& soloThis) { soloThis = !soloThis; if (soloThis) { muteThis = false; @@ -188,12 +158,10 @@ void HandleChannelSolo( } // no more solo channels -> ensure none are muted - if (std::all_of(channels, channels + SPU_CHANNELS_SIZE, [](const SPUCHAN& c) { - return c.data.get().value == false; - })) { - std::for_each(channels, channels + SPU_CHANNELS_SIZE, [](SPUCHAN& c) { - c.data.get().value = false; - }); + if (std::all_of(channels, channels + SPU_CHANNELS_SIZE, + [](const SPUCHAN& c) { return c.data.get().value == false; })) { + std::for_each(channels, channels + SPU_CHANNELS_SIZE, + [](SPUCHAN& c) { c.data.get().value = false; }); } } @@ -263,24 +231,17 @@ void DrawTableGeneralSolo(SPU_CHANNELS_INFO channels, const size_t channel, cons } } -void DrawTableGeneralNoise(const Chan::Data& data) { - ImGui::Text("%i", data.get().value); -} +void DrawTableGeneralNoise(const Chan::Data& data) { ImGui::Text("%i", data.get().value); } -void DrawTableGeneralFMod(const Chan::Data& data) { - ImGui::Text("%i", data.get().value); -} +void DrawTableGeneralFMod(const Chan::Data& data) { ImGui::Text("%i", data.get().value); } void DrawTableGeneralPlot(SPU_CHANNELS_PLOT plot, size_t channel) { constexpr auto plotSize = ImVec2(Grid::WidthGeneralPlot - TablePadding, 0); ImGui::PlotHistogram("", plot[channel], impl::DEBUG_SAMPLES, 0, nullptr, 0.0f, 1.0f, plotSize); } -void DrawTableGeneral( - SPU_CHANNELS_INFO channels, - const float rowHeight, - SPU_CHANNELS_TAGS tags, - SPU_CHANNELS_PLOT plot) { +void DrawTableGeneral(SPU_CHANNELS_INFO channels, const float rowHeight, SPU_CHANNELS_TAGS tags, + SPU_CHANNELS_PLOT plot) { if (ImGui::BeginTable("TableGeneral", 9, Grid::FlagsTableInner)) { ImGui::TableSetupColumn("#", Grid::FlagsColumn, Grid::WidthGeneralIndex); ImGui::TableSetupColumn("Tag", Grid::FlagsColumn, Grid::WidthGeneralTag); @@ -302,15 +263,24 @@ void DrawTableGeneral( constexpr auto solo = MSButton{"S##SpuSolo", ImVec4(0.0f, 0.6f, 0.0f, 1.0f), Grid::WidthGeneralSolo}; // @formatter:off - ImGui::TableNextColumn(); DrawTableGeneralIndex(i); - ImGui::TableNextColumn(); DrawTableGeneralTag(i, tags); - ImGui::TableNextColumn(); DrawTableGeneralOn(data); - ImGui::TableNextColumn(); DrawTableGeneralOff(data); - ImGui::TableNextColumn(); DrawTableGeneralMute(channels, i, mute); - ImGui::TableNextColumn(); DrawTableGeneralSolo(channels, i, solo); - ImGui::TableNextColumn(); DrawTableGeneralNoise(data); - ImGui::TableNextColumn(); DrawTableGeneralFMod(data); - ImGui::TableNextColumn(); DrawTableGeneralPlot(plot, i); + ImGui::TableNextColumn(); + DrawTableGeneralIndex(i); + ImGui::TableNextColumn(); + DrawTableGeneralTag(i, tags); + ImGui::TableNextColumn(); + DrawTableGeneralOn(data); + ImGui::TableNextColumn(); + DrawTableGeneralOff(data); + ImGui::TableNextColumn(); + DrawTableGeneralMute(channels, i, mute); + ImGui::TableNextColumn(); + DrawTableGeneralSolo(channels, i, solo); + ImGui::TableNextColumn(); + DrawTableGeneralNoise(data); + ImGui::TableNextColumn(); + DrawTableGeneralFMod(data); + ImGui::TableNextColumn(); + DrawTableGeneralPlot(plot, i); // @formatter:on } ImGui::EndTable(); @@ -327,8 +297,10 @@ void DrawTableFrequency(SPU_CHANNELS_INFO channels, const float rowHeight) { ImGui::TableNextRow(Grid::FlagsRow, rowHeight); ImGui::AlignTextToFramePadding(); // @formatter:off - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value); - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value); // @formatter:on } ImGui::EndTable(); @@ -346,9 +318,12 @@ void DrawTablePosition(SPU_CHANNELS_INFO channels, const float rowHeight, const ImGui::TableNextRow(Grid::FlagsRow, rowHeight); ImGui::AlignTextToFramePadding(); // @formatter:off - ImGui::TableNextColumn(); ImGui::Text("%i", static_cast(chan.pStart - spuMemC)); - ImGui::TableNextColumn(); ImGui::Text("%i", static_cast(chan.pCurr - spuMemC)); - ImGui::TableNextColumn(); ImGui::Text("%i", static_cast(chan.pLoop - spuMemC)); + ImGui::TableNextColumn(); + ImGui::Text("%i", static_cast(chan.pStart - spuMemC)); + ImGui::TableNextColumn(); + ImGui::Text("%i", static_cast(chan.pCurr - spuMemC)); + ImGui::TableNextColumn(); + ImGui::Text("%i", static_cast(chan.pLoop - spuMemC)); // @formatter:on } ImGui::EndTable(); @@ -365,8 +340,10 @@ void DrawTableVolume(SPU_CHANNELS_INFO channels, const float rowHeight) { ImGui::TableNextRow(Grid::FlagsRow, rowHeight); ImGui::AlignTextToFramePadding(); // @formatter:off - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value); - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value); // @formatter:on } ImGui::EndTable(); @@ -385,10 +362,14 @@ void DrawTableAdsr(SPU_CHANNELS_INFO channels, const float rowHeight) { ImGui::TableNextRow(Grid::FlagsRow, rowHeight); ImGui::AlignTextToFramePadding(); // @formatter:off - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value ^ 0x7F); - ImGui::TableNextColumn(); ImGui::Text("%i", (data.get().value ^ 0x1F) / 4); - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value ^ 0x7F); - ImGui::TableNextColumn(); ImGui::Text("%i", (data.get().value ^ 0x1F) / 4); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value ^ 0x7F); + ImGui::TableNextColumn(); + ImGui::Text("%i", (data.get().value ^ 0x1F) / 4); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value ^ 0x7F); + ImGui::TableNextColumn(); + ImGui::Text("%i", (data.get().value ^ 0x1F) / 4); // @formatter:on } ImGui::EndTable(); @@ -405,8 +386,10 @@ void DrawTableAdsrSustain(SPU_CHANNELS_INFO channels, const float rowHeight) { ImGui::TableNextRow(Grid::FlagsRow, rowHeight); ImGui::AlignTextToFramePadding(); // @formatter:off - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value >> 27); - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value >> 27); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value); // @formatter:on } ImGui::EndTable(); @@ -423,8 +406,10 @@ void DrawTableAdsrVolume(SPU_CHANNELS_INFO channels, const float rowHeight) { ImGui::TableNextRow(Grid::FlagsRow, rowHeight); ImGui::AlignTextToFramePadding(); // @formatter:off - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value); - ImGui::TableNextColumn(); ImGui::Text("%08X", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%08X", data.get().value); // @formatter:on } ImGui::EndTable(); @@ -444,19 +429,24 @@ void DrawTableReverb(SPU_CHANNELS_INFO channels, const float rowHeight) { ImGui::TableNextRow(Grid::FlagsRow, rowHeight); ImGui::AlignTextToFramePadding(); // @formatter:off - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value); - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value); - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value); - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value); - ImGui::TableNextColumn(); ImGui::Text("%i", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value); + ImGui::TableNextColumn(); + ImGui::Text("%i", data.get().value); // @formatter:on } ImGui::EndTable(); } } -void DrawSectionChannels( - SPU_CHANNELS_INFO channels, SPU_CHANNELS_TAGS tags, SPU_CHANNELS_PLOT plot, const uint8_t* spuMemC) { +void DrawSectionChannels(SPU_CHANNELS_INFO channels, SPU_CHANNELS_TAGS tags, SPU_CHANNELS_PLOT plot, + const uint8_t* spuMemC) { if (ImGui::CollapsingHeader("Channels", ImGuiTreeNodeFlags_DefaultOpen)) { const auto style = ImGui::GetStyle(); const auto rowHeight = ImGui::GetFrameHeightWithSpacing(); @@ -476,23 +466,30 @@ void DrawSectionChannels( ImGui::TableHeadersRow(); // @formatter:off - ImGui::TableNextColumn(); DrawTableGeneral(channels, rowHeight, tags, plot); - ImGui::TableNextColumn(); DrawTableFrequency(channels, rowHeight); - ImGui::TableNextColumn(); DrawTablePosition(channels, rowHeight, spuMemC); - ImGui::TableNextColumn(); DrawTableVolume(channels, rowHeight); - ImGui::TableNextColumn(); DrawTableAdsr(channels, rowHeight); - ImGui::TableNextColumn(); DrawTableAdsrSustain(channels, rowHeight); - ImGui::TableNextColumn(); DrawTableAdsrVolume(channels, rowHeight); - ImGui::TableNextColumn(); DrawTableReverb(channels, rowHeight); + ImGui::TableNextColumn(); + DrawTableGeneral(channels, rowHeight, tags, plot); + ImGui::TableNextColumn(); + DrawTableFrequency(channels, rowHeight); + ImGui::TableNextColumn(); + DrawTablePosition(channels, rowHeight, spuMemC); + ImGui::TableNextColumn(); + DrawTableVolume(channels, rowHeight); + ImGui::TableNextColumn(); + DrawTableAdsr(channels, rowHeight); + ImGui::TableNextColumn(); + DrawTableAdsrSustain(channels, rowHeight); + ImGui::TableNextColumn(); + DrawTableAdsrVolume(channels, rowHeight); + ImGui::TableNextColumn(); + DrawTableReverb(channels, rowHeight); // @formatter:on ImGui::EndTable(); } } } -void DrawSectionSpu( - const uint16_t spuCtrl, const uint16_t spuStat, const uint32_t spuAddr, - const uint8_t* spuMemC, const uint8_t* pSpuIrq) { +void DrawSectionSpu(const uint16_t spuCtrl, const uint16_t spuStat, const uint32_t spuAddr, const uint8_t* spuMemC, + const uint8_t* pSpuIrq) { if (ImGui::CollapsingHeader("SPU", ImGuiTreeNodeFlags_DefaultOpen)) { if (ImGui::BeginTable("SpuBase", 4, BasicTableFlags)) { ImGui::TableSetupColumn("IRQ", 0, BasicTableColumnWidth); @@ -501,10 +498,14 @@ void DrawSectionSpu( ImGui::TableSetupColumn("MEM", 0, BasicTableColumnWidth); ImGui::TableHeadersRow(); // @formatter:off - ImGui::TableNextColumn(); ImGui::Text("%08X", static_cast(pSpuIrq ? -1 : pSpuIrq - spuMemC)); - ImGui::TableNextColumn(); ImGui::Text("%04X", spuCtrl); - ImGui::TableNextColumn(); ImGui::Text("%04X", spuStat); - ImGui::TableNextColumn(); ImGui::Text("%i", spuAddr); + ImGui::TableNextColumn(); + ImGui::Text("%08X", static_cast(pSpuIrq ? -1 : pSpuIrq - spuMemC)); + ImGui::TableNextColumn(); + ImGui::Text("%04X", spuCtrl); + ImGui::TableNextColumn(); + ImGui::Text("%04X", spuStat); + ImGui::TableNextColumn(); + ImGui::Text("%i", spuAddr); // @formatter:on ImGui::EndTable(); } @@ -521,18 +522,23 @@ void DrawSectionXa(const xa_decode_t* xapGlobal, const int iLeftXAVol, const int ImGui::TableSetupColumn("Volume R", 0, BasicTableColumnWidth); ImGui::TableHeadersRow(); // @formatter:off - ImGui::TableNextColumn(); ImGui::Text("%i", xapGlobal ? xapGlobal->freq : 0); - ImGui::TableNextColumn(); ImGui::Text("%i", xapGlobal ? xapGlobal->stereo : 0); - ImGui::TableNextColumn(); ImGui::Text("%i", xapGlobal ? xapGlobal->nsamples : 0); - ImGui::TableNextColumn(); ImGui::Text("%i", iLeftXAVol); - ImGui::TableNextColumn(); ImGui::Text("%i", iRightXAVol); + ImGui::TableNextColumn(); + ImGui::Text("%i", xapGlobal ? xapGlobal->freq : 0); + ImGui::TableNextColumn(); + ImGui::Text("%i", xapGlobal ? xapGlobal->stereo : 0); + ImGui::TableNextColumn(); + ImGui::Text("%i", xapGlobal ? xapGlobal->nsamples : 0); + ImGui::TableNextColumn(); + ImGui::Text("%i", iLeftXAVol); + ImGui::TableNextColumn(); + ImGui::Text("%i", iRightXAVol); // @formatter:on ImGui::EndTable(); } } } -} +} // namespace void impl::debug() { auto delta = std::chrono::steady_clock::now() - m_lastUpdated; diff --git a/src/spu/spu.cc b/src/spu/spu.cc index eb18836eb..0a86a0a9e 100644 --- a/src/spu/spu.cc +++ b/src/spu/spu.cc @@ -694,7 +694,8 @@ void PCSX::SPU::impl::MainThread() { ////////////////////////////////////////////// // ok, left/right sound volume (psx volume goes from 0 ... 0x3fff) - if (pChannel->data.get().value && !pChannel->data.get().value) + if (pChannel->data.get().value && + !pChannel->data.get().value) pChannel->data.get().value = 0; // debug mute else { SSumL[ns] += (pChannel->data.get().value * diff --git a/src/support/ffmpeg-audio-file.cc b/src/support/ffmpeg-audio-file.cc index 4f7fefb13..02ed6d9e9 100644 --- a/src/support/ffmpeg-audio-file.cc +++ b/src/support/ffmpeg-audio-file.cc @@ -231,6 +231,7 @@ ssize_t PCSX::FFmpegAudioFile::read(void *dest_, size_t size) { size -= p; ret += p; dest += p; + m_filePtr += p; } return ret; @@ -257,7 +258,6 @@ ssize_t PCSX::FFmpegAudioFile::decompSome(void *dest_, ssize_t size) { } } } - memcpy(dest, m_resampledFrame->data[0] + m_packetPtr, toCopy); m_packetPtr += toCopy; m_totalOut += toCopy; size -= toCopy; diff --git a/src/support/file.h b/src/support/file.h index 389a9206d..3c55869f8 100644 --- a/src/support/file.h +++ b/src/support/file.h @@ -150,7 +150,8 @@ class File { Slice read(ssize_t size) { void* data = malloc(size); - read(data, size); + size = read(data, size); + data = realloc(data, size); Slice slice; slice.acquire(data, size); return slice; @@ -158,7 +159,8 @@ class File { Slice readAt(ssize_t size, ssize_t pos) { void* data = malloc(size); - readAt(data, size, pos); + size = readAt(data, size, pos); + data = realloc(data, size); Slice slice; slice.acquire(data, size); return slice; diff --git a/src/supportpsx/assembler/pseudo.lua b/src/supportpsx/assembler/pseudo.lua index 2130a4364..eabc1c347 100644 --- a/src/supportpsx/assembler/pseudo.lua +++ b/src/supportpsx/assembler/pseudo.lua @@ -42,12 +42,16 @@ PCSX.Assembler.Internals.pseudoInstructions = { if type(args[2]) ~= 'number' then error('li second argument must be a number') end local imm = args[2] if imm < -0x8000 or imm > 0xffff then + local lo16 = bit.band(imm, 0xffff) + if lo16 == 0 then + return { base = 0x3c000000, rt = checkGPR(args[1]), imm16 = bit.rshift(imm, 16) } + end return { { base = 0x3c000000, rt = checkGPR(args[1]), imm16 = bit.rshift(imm, 16) }, - { base = 0x34000000, rt = checkGPR(args[1]), imm16 = bit.band(imm, 0xffff) }, + { base = 0x34000000, rt = checkGPR(args[1]), rs = checkGPR(args[1]), imm16 = lo16 }, } else - return { base = 0x3c000000, rt = checkGPR(args[1]), imm16 = args[2] } + return { base = 0x34000000, rt = checkGPR(args[1]), imm16 = args[2] } end end, diff --git a/tests/support/circular.cc b/tests/support/circular.cc index b61b6c87f..a36f0785a 100644 --- a/tests/support/circular.cc +++ b/tests/support/circular.cc @@ -23,7 +23,7 @@ #include "gtest/gtest.h" -TEST(Circular, Basic) { +TEST(DISABLED_Circular, Basic) { PCSX::Circular circ; uint32_t data[500]; diff --git a/third_party/imgui_lua_bindings/generate_imgui_bindings.pl b/third_party/imgui_lua_bindings/generate_imgui_bindings.pl index 7b655f48f..15de6860b 100755 --- a/third_party/imgui_lua_bindings/generate_imgui_bindings.pl +++ b/third_party/imgui_lua_bindings/generate_imgui_bindings.pl @@ -200,6 +200,10 @@ sub generateImguiGeneric { $callMacro = "${callPrefix}CALL_FUNCTION"; push(@funcArgs, "float"); push(@after, "PUSH_NUMBER(ret)"); + } elsif ($retType =~ /^int$/) { + $callMacro = "${callPrefix}CALL_FUNCTION"; + push(@funcArgs, "int"); + push(@after, "PUSH_NUMBER(ret)"); } elsif ($retType =~ /^ImVec2$/) { $callMacro = "${callPrefix}CALL_FUNCTION"; push(@funcArgs, "ImVec2"); diff --git a/third_party/imgui_lua_bindings/imgui_iterator.inl b/third_party/imgui_lua_bindings/imgui_iterator.inl index 6b27193b4..765ac62ad 100644 --- a/third_party/imgui_lua_bindings/imgui_iterator.inl +++ b/third_party/imgui_lua_bindings/imgui_iterator.inl @@ -1432,11 +1432,20 @@ END_IMGUI_FUNC // IMGUI_API ImGuiTableSortSpecs* TableGetSortSpecs(); // get latest sort specs for the table (NULL if not sorting). Lifetime: don't hold on this pointer over multiple frames or past any subsequent call to BeginTable(). // Unsupported return type ImGuiTableSortSpecs* // IMGUI_API int TableGetColumnCount(); // return number of columns (value passed to BeginTable) -// Unsupported return type int +IMGUI_FUNCTION(TableGetColumnCount) +CALL_FUNCTION(TableGetColumnCount, int) +PUSH_NUMBER(ret) +END_IMGUI_FUNC // IMGUI_API int TableGetColumnIndex(); // return current column index. -// Unsupported return type int +IMGUI_FUNCTION(TableGetColumnIndex) +CALL_FUNCTION(TableGetColumnIndex, int) +PUSH_NUMBER(ret) +END_IMGUI_FUNC // IMGUI_API int TableGetRowIndex(); // return current row index. -// Unsupported return type int +IMGUI_FUNCTION(TableGetRowIndex) +CALL_FUNCTION(TableGetRowIndex, int) +PUSH_NUMBER(ret) +END_IMGUI_FUNC // IMGUI_API const char* TableGetColumnName(int column_n = -1); // return "" if column didn't have a name declared by TableSetupColumn(). Pass -1 to use current column. IMGUI_FUNCTION(TableGetColumnName) OPTIONAL_INT_ARG(column_n, -1) @@ -1470,7 +1479,10 @@ IMGUI_FUNCTION(NextColumn) CALL_FUNCTION_NO_RET(NextColumn) END_IMGUI_FUNC // IMGUI_API int GetColumnIndex(); // get current column index -// Unsupported return type int +IMGUI_FUNCTION(GetColumnIndex) +CALL_FUNCTION(GetColumnIndex, int) +PUSH_NUMBER(ret) +END_IMGUI_FUNC // IMGUI_API float GetColumnWidth(int column_index = -1); // get column width (in pixels). pass -1 to use current column IMGUI_FUNCTION(GetColumnWidth) OPTIONAL_INT_ARG(column_index, -1) @@ -1496,7 +1508,10 @@ NUMBER_ARG(offset_x) CALL_FUNCTION_NO_RET(SetColumnOffset, column_index, offset_x) END_IMGUI_FUNC // IMGUI_API int GetColumnsCount(); -// Unsupported return type int +IMGUI_FUNCTION(GetColumnsCount) +CALL_FUNCTION(GetColumnsCount, int) +PUSH_NUMBER(ret) +END_IMGUI_FUNC // IMGUI_API bool BeginTabBar(const char* str_id, ImGuiTabBarFlags flags = 0); // create and append into a TabBar IMGUI_FUNCTION(BeginTabBar) LABEL_ARG(str_id) @@ -1771,7 +1786,10 @@ END_IMGUI_FUNC // IMGUI_API double GetTime(); // get global imgui time. incremented by io.DeltaTime every frame. // Unsupported return type double // IMGUI_API int GetFrameCount(); // get global imgui frame count. incremented by 1 every frame. -// Unsupported return type int +IMGUI_FUNCTION(GetFrameCount) +CALL_FUNCTION(GetFrameCount, int) +PUSH_NUMBER(ret) +END_IMGUI_FUNC // IMGUI_API ImDrawListSharedData* GetDrawListSharedData(); // you may use this when creating your own ImDrawList instances. // Unsupported return type ImDrawListSharedData* // IMGUI_API const char* GetStyleColorName(ImGuiCol idx); // get a string corresponding to the enum value (for display, saving, etc.). @@ -1819,7 +1837,6 @@ END_IMGUI_FUNC // IMGUI_API bool IsKeyChordPressed(ImGuiKeyChord key_chord); // was key chord (mods + key) pressed, e.g. you can pass 'ImGuiMod_Ctrl | ImGuiKey_S' as a key-chord. This doesn't do any routing or focus check, please consider using Shortcut() function instead. // Unsupported arg type ImGuiKeyChord key_chord // IMGUI_API int GetKeyPressedAmount(ImGuiKey key, float repeat_delay, float rate); // uses provided repeat rate/delay. return a count, most often 0 or 1 but might be >1 if RepeatRate is small enough that DeltaTime > RepeatRate -// Unsupported return type int // Unsupported arg type ImGuiKey key // IMGUI_API const char* GetKeyName(ImGuiKey key); // [DEBUG] returns English name of the key. Those names a provided for debugging purpose and are not meant to be saved persistently not compared. // Unsupported arg type ImGuiKey key @@ -1854,7 +1871,11 @@ CALL_FUNCTION(IsMouseDoubleClicked, bool, button) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API int GetMouseClickedCount(ImGuiMouseButton button); // return the number of successive mouse-clicks at the time where a click happen (otherwise 0). -// Unsupported return type int +IMGUI_FUNCTION(GetMouseClickedCount) +INT_ARG(button) +CALL_FUNCTION(GetMouseClickedCount, int, button) +PUSH_NUMBER(ret) +END_IMGUI_FUNC // IMGUI_API bool IsMouseHoveringRect(const ImVec2& r_min, const ImVec2& r_max, bool clip = true);// is mouse hovering given bounding rect (in screen space). clipped by current clipping settings, but disregarding of other consideration of focus/window ordering/popup-block. IMGUI_FUNCTION(IsMouseHoveringRect) IM_VEC_2_ARG(r_min) diff --git a/third_party/tracy b/third_party/tracy index 07778badc..075395620 160000 --- a/third_party/tracy +++ b/third_party/tracy @@ -1 +1 @@ -Subproject commit 07778badcced109b8190805fbf2d7abfaef0d3b9 +Subproject commit 075395620a504c0cdcaf9bab3d196db16a043de7 diff --git a/tools/build/Dockerfile b/tools/build/Dockerfile index de611f058..b5956b318 100644 --- a/tools/build/Dockerfile +++ b/tools/build/Dockerfile @@ -1,6 +1,6 @@ # Dockerfile for ghcr.io/grumpycoders/pcsx-redux-build -FROM ubuntu:23.10 +FROM ubuntu:24.04 # The tzdata package isn't docker-friendly, and something pulls it. ENV DEBIAN_FRONTEND noninteractive @@ -15,7 +15,7 @@ RUN apt install -y make RUN apt install -y pkg-config # Compilers & base libraries -RUN apt install -y g++-12 +RUN apt install -y g++ RUN apt install -y g++-mipsel-linux-gnu # Development packages @@ -48,13 +48,6 @@ RUN pip3 install --break-system-packages appimage-builder pydpkg COPY appimage-dpkg.patch /appimage-dpkg.patch RUN patch -p 1 < appimage-dpkg.patch RUN apt install -y imagemagick-6.q16 gtk-update-icon-cache appstream -ENV NVM_DIR /usr/local/nvm -ENV NODE_VERSION 14.17.0 -RUN mkdir -p /usr/local/nvm -RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash -RUN . $NVM_DIR/nvm.sh && nvm alias default $NODE_VERSION -RUN . $NVM_DIR/nvm.sh && nvm use default -RUN . $NVM_DIR/nvm.sh && npm install -g appcenter-cli RUN apt install -y squashfs-tools zip zsync RUN mkdir /project diff --git a/tools/build/appimage-dpkg.patch b/tools/build/appimage-dpkg.patch index c94b74457..8f88d9453 100644 --- a/tools/build/appimage-dpkg.patch +++ b/tools/build/appimage-dpkg.patch @@ -1,7 +1,7 @@ diff --git a/appimagebuilder/modules/deploy/apt/package.py b/appimagebuilder/modules/deploy/apt/package.py index 792a724d..6b59d3a3 100644 ---- a/usr/local/lib/python3.11/dist-packages/appimagebuilder/modules/deploy/apt/package.py -+++ b/usr/local/lib/python3.11/dist-packages/appimagebuilder/modules/deploy/apt/package.py +--- a/usr/local/lib/python3.12/dist-packages/appimagebuilder/modules/deploy/apt/package.py ++++ b/usr/local/lib/python3.12/dist-packages/appimagebuilder/modules/deploy/apt/package.py @@ -13,7 +13,7 @@ import urllib from pathlib import Path diff --git a/tools/linux-mips/spawn-compiler.sh b/tools/linux-mips/spawn-compiler.sh index a74cbda8f..603569bfb 100755 --- a/tools/linux-mips/spawn-compiler.sh +++ b/tools/linux-mips/spawn-compiler.sh @@ -13,17 +13,17 @@ set -ex PREFIX=${PREFIX:-"/usr/local"} -wget https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.gz -tar xvfz binutils-2.42.tar.gz -cd binutils-2.42 +wget https://ftp.gnu.org/gnu/binutils/binutils-2.43.tar.gz +tar xvfz binutils-2.43.tar.gz +cd binutils-2.43 ./configure --target=mipsel-none-elf --disable-multilib --disable-nls --disable-werror --prefix=$PREFIX make make install-strip cd .. -wget https://ftp.gnu.org/gnu/gcc/gcc-14.1.0/gcc-14.1.0.tar.gz -tar xvfz gcc-14.1.0.tar.gz -cd gcc-14.1.0 +wget https://ftp.gnu.org/gnu/gcc/gcc-14.2.0/gcc-14.2.0.tar.gz +tar xvfz gcc-14.2.0.tar.gz +cd gcc-14.2.0 ./contrib/download_prerequisites mkdir build cd build diff --git a/tools/macos-mips/mipsel-none-elf-binutils.rb b/tools/macos-mips/mipsel-none-elf-binutils.rb index 50db65894..fb4072816 100644 --- a/tools/macos-mips/mipsel-none-elf-binutils.rb +++ b/tools/macos-mips/mipsel-none-elf-binutils.rb @@ -1,8 +1,8 @@ class MipselNoneElfBinutils < Formula desc "FSF Binutils for mipsel cross development" homepage "https://www.gnu.org/software/binutils/" - url "https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.gz" - sha256 "5d2a6c1d49686a557869caae08b6c2e83699775efd27505e01b2f4db1a024ffc" + url "https://ftp.gnu.org/gnu/binutils/binutils-2.43.tar.gz" + sha256 "025c436d15049076ebe511d29651cc4785ee502965a8839936a65518582bdd64" depends_on "texinfo" => :build diff --git a/tools/macos-mips/mipsel-none-elf-gcc.rb b/tools/macos-mips/mipsel-none-elf-gcc.rb index 42ef6663a..0a8ffdb15 100644 --- a/tools/macos-mips/mipsel-none-elf-gcc.rb +++ b/tools/macos-mips/mipsel-none-elf-gcc.rb @@ -1,8 +1,8 @@ class MipselNoneElfGcc < Formula desc "The GNU compiler collection for mipsel" homepage "https://gcc.gnu.org" - url "https://ftp.gnu.org/gnu/gcc/gcc-14.1.0/gcc-14.1.0.tar.xz" - sha256 "e283c654987afe3de9d8080bc0bd79534b5ca0d681a73a11ff2b5d3767426840" + url "https://ftp.gnu.org/gnu/gcc/gcc-14.2.0/gcc-14.2.0.tar.xz" + sha256 "a7b39bc69cbf9e25826c5a60ab26477001f7c08d85cec04bc0e29cabed6f3cc9" depends_on "gmp" depends_on "mipsel-none-elf-binutils" diff --git a/tools/macos-mips/mipsel-none-elf-gdb.rb b/tools/macos-mips/mipsel-none-elf-gdb.rb index 22d5909b0..753893f0b 100644 --- a/tools/macos-mips/mipsel-none-elf-gdb.rb +++ b/tools/macos-mips/mipsel-none-elf-gdb.rb @@ -1,8 +1,8 @@ class MipselNoneElfGdb < Formula desc "GDB: The GNU Project Debugger compiled for Mips" homepage "https://sourceware.org/gdb/" - url "https://ftp.gnu.org/gnu/gdb/gdb-14.2.tar.xz" - sha256 "2d4dd8061d8ded12b6c63f55e45344881e8226105f4d2a9b234040efa5ce7772" + url "https://ftp.gnu.org/gnu/gdb/gdb-15.1.tar.xz" + sha256 "38254eacd4572134bca9c5a5aa4d4ca564cbbd30c369d881f733fb6b903354f2" # inspired by https://github.com/orgs/Homebrew/discussions/1114#discussioncomment-8863715 diff --git a/tools/vscode-extension/README.md b/tools/vscode-extension/README.md index 67d270a93..ea4e6aaed 100644 --- a/tools/vscode-extension/README.md +++ b/tools/vscode-extension/README.md @@ -19,8 +19,14 @@ The panel will have the ability to install the tools on the most popular platfor ### Changelog +- 0.3.7 + - Bumping gcc to 14.2.0 + - Bumping binutils to 2.43 +- 0.3.6 + - Bumping gcc to 14.1.0. - 0.3.5 - Bumping binutils to 2.42 + - Changing the way the PCSX-Redux dependency is installed, from AppCenter to AppDistrib. - 0.3.4 - Added CMake bare-metal templates. - Added support for detecting and installing CMake and Python. diff --git a/tools/vscode-extension/package.json b/tools/vscode-extension/package.json index 7ccb91440..b1cd63f03 100644 --- a/tools/vscode-extension/package.json +++ b/tools/vscode-extension/package.json @@ -2,7 +2,7 @@ "name": "psx-dev", "displayName": "PSX.Dev", "description": "PlayStation 1 development made easy", - "version": "0.3.5", + "version": "0.3.7", "engines": { "vscode": "^1.75.0" }, diff --git a/tools/vscode-extension/pcsx-redux.js b/tools/vscode-extension/pcsx-redux.js index e3ccddc58..36882f0de 100644 --- a/tools/vscode-extension/pcsx-redux.js +++ b/tools/vscode-extension/pcsx-redux.js @@ -19,27 +19,16 @@ const os = require('node:os') const updateInfo = { win32: { - updateCatalog: - 'https://install.appcenter.ms/api/v0.1/apps/grumpycoders/pcsx-redux-win64-cli/distribution_groups/public/public_releases', - updateInfoBase: - 'https://install.appcenter.ms/api/v0.1/apps/grumpycoders/pcsx-redux-win64-cli/distribution_groups/public/releases/', - method: 'appcenter', + infoBase: + 'https://distrib.app/storage/manifests/pcsx-redux/dev-win-cli-x64/', fileType: 'zip' }, linux: { - updateCatalog: - 'https://install.appcenter.ms/api/v0.1/apps/grumpycoders/pcsx-redux-linux64/distribution_groups/public/public_releases', - updateInfoBase: - 'https://install.appcenter.ms/api/v0.1/apps/grumpycoders/pcsx-redux-linux64/distribution_groups/public/releases/', - method: 'appcenter', + infoBase: 'https://distrib.app/storage/manifests/pcsx-redux/dev-linux-x64/', fileType: 'zip' }, darwin: { - updateCatalog: - 'https://install.appcenter.ms/api/v0.1/apps/grumpycoders/pcsx-redux-macos/distribution_groups/public/public_releases', - updateInfoBase: - 'https://install.appcenter.ms/api/v0.1/apps/grumpycoders/pcsx-redux-macos/distribution_groups/public/releases/', - method: 'appcenter', + infoBase: 'https://distrib.app/storage/manifests/pcsx-redux/dev-macos-x64/', fileType: 'dmg' } } @@ -119,9 +108,10 @@ exports.install = async () => { : globalStorageUri.fsPath await mkdirp(outputDir) + const manifestUrl = updateInfoForPlatform.infoBase + 'manifest.json' const responseCatalog = await axios.request({ method: 'get', - url: updateInfoForPlatform.updateCatalog, + url: manifestUrl, responseType: 'stream' }) const updateId = await new Promise((resolve, reject) => { @@ -129,33 +119,38 @@ exports.install = async () => { responseCatalog.data .on('close', () => resolve(highestId)) .on('error', (err) => reject(err)) - .pipe(jsonStream.parse([true])) + .pipe(jsonStream.parse(['builds', true])) .on('data', (data) => { if (data.id > highestId) highestId = data.id }) }) + const packageManifestUrl = + updateInfoForPlatform.infoBase + 'manifest-' + updateId + '.json' const response = await axios.request({ method: 'get', - url: updateInfoForPlatform.updateInfoBase + updateId, + url: packageManifestUrl, responseType: 'stream' }) - const downloadUrl = await new Promise((resolve, reject) => { - let downloadUrl + const downloadPath = await new Promise((resolve, reject) => { + let downloadPath response.data - .on('close', () => resolve(downloadUrl)) + .on('close', () => resolve(downloadPath)) .on('error', (err) => reject(err)) - .pipe(jsonStream.parse(['download_url'])) + .pipe(jsonStream.parse(['path'])) .on('data', (data) => { - downloadUrl = data + downloadPath = data }) }) - if (downloadUrl === undefined) { - throw new Error('Invalid AppCenter catalog information.') + if (downloadPath === undefined) { + throw new Error('Invalid AppDistrib manifest information.') } + const downloadUrl = 'https://distrib.app' + downloadPath await downloader.downloadFile( downloadUrl, - process.platform === 'darwin' ? path.join(outputDir, 'PCSX-Redux.dmg') : outputDir, + process.platform === 'darwin' + ? path.join(outputDir, 'PCSX-Redux.dmg') + : outputDir, updateInfoForPlatform.fileType === 'zip' ) switch (process.platform) { diff --git a/tools/vscode-extension/scripts/mipsel-none-elf-binutils.rb b/tools/vscode-extension/scripts/mipsel-none-elf-binutils.rb index 50db65894..fb4072816 100644 --- a/tools/vscode-extension/scripts/mipsel-none-elf-binutils.rb +++ b/tools/vscode-extension/scripts/mipsel-none-elf-binutils.rb @@ -1,8 +1,8 @@ class MipselNoneElfBinutils < Formula desc "FSF Binutils for mipsel cross development" homepage "https://www.gnu.org/software/binutils/" - url "https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.gz" - sha256 "5d2a6c1d49686a557869caae08b6c2e83699775efd27505e01b2f4db1a024ffc" + url "https://ftp.gnu.org/gnu/binutils/binutils-2.43.tar.gz" + sha256 "025c436d15049076ebe511d29651cc4785ee502965a8839936a65518582bdd64" depends_on "texinfo" => :build diff --git a/tools/vscode-extension/scripts/mipsel-none-elf-gcc.rb b/tools/vscode-extension/scripts/mipsel-none-elf-gcc.rb index 42ef6663a..0a8ffdb15 100644 --- a/tools/vscode-extension/scripts/mipsel-none-elf-gcc.rb +++ b/tools/vscode-extension/scripts/mipsel-none-elf-gcc.rb @@ -1,8 +1,8 @@ class MipselNoneElfGcc < Formula desc "The GNU compiler collection for mipsel" homepage "https://gcc.gnu.org" - url "https://ftp.gnu.org/gnu/gcc/gcc-14.1.0/gcc-14.1.0.tar.xz" - sha256 "e283c654987afe3de9d8080bc0bd79534b5ca0d681a73a11ff2b5d3767426840" + url "https://ftp.gnu.org/gnu/gcc/gcc-14.2.0/gcc-14.2.0.tar.xz" + sha256 "a7b39bc69cbf9e25826c5a60ab26477001f7c08d85cec04bc0e29cabed6f3cc9" depends_on "gmp" depends_on "mipsel-none-elf-binutils" diff --git a/tools/vscode-extension/scripts/mipsel-none-elf-gdb.rb b/tools/vscode-extension/scripts/mipsel-none-elf-gdb.rb index 22d5909b0..753893f0b 100644 --- a/tools/vscode-extension/scripts/mipsel-none-elf-gdb.rb +++ b/tools/vscode-extension/scripts/mipsel-none-elf-gdb.rb @@ -1,8 +1,8 @@ class MipselNoneElfGdb < Formula desc "GDB: The GNU Project Debugger compiled for Mips" homepage "https://sourceware.org/gdb/" - url "https://ftp.gnu.org/gnu/gdb/gdb-14.2.tar.xz" - sha256 "2d4dd8061d8ded12b6c63f55e45344881e8226105f4d2a9b234040efa5ce7772" + url "https://ftp.gnu.org/gnu/gdb/gdb-15.1.tar.xz" + sha256 "38254eacd4572134bca9c5a5aa4d4ca564cbbd30c369d881f733fb6b903354f2" # inspired by https://github.com/orgs/Homebrew/discussions/1114#discussioncomment-8863715 diff --git a/tools/vscode-extension/tools.js b/tools/vscode-extension/tools.js index 5ca4fca69..f69a671b2 100644 --- a/tools/vscode-extension/tools.js +++ b/tools/vscode-extension/tools.js @@ -14,7 +14,7 @@ const { Octokit } = require('@octokit/rest') const octokit = new Octokit() const os = require('node:os') -const mipsVersion = '13.2.0' +const mipsVersion = '14.2.0' let extensionUri let globalStorageUri let requiresReboot = false diff --git a/tools/win32-gdb/Dockerfile b/tools/win32-gdb/Dockerfile index 30b196116..1d33ede8e 100644 --- a/tools/win32-gdb/Dockerfile +++ b/tools/win32-gdb/Dockerfile @@ -1,6 +1,6 @@ # escape=` -# Dockerfile to generate the Windows gdb-multiarch-14.2.zip package. +# Dockerfile to generate the Windows gdb-multiarch-15.1.zip package. FROM mcr.microsoft.com/windows/servercore:ltsc2022 WORKDIR C:\windows\temp @@ -45,23 +45,23 @@ RUN C:\msys64\usr\bin\bash.exe -l -c 'pacman -S --needed --noconfirm mingw-w64-x RUN C:\msys64\usr\bin\bash.exe -l -c 'pacman -S --needed --noconfirm mingw-w64-x86_64-python mingw-w64-x86_64-readline' RUN C:\msys64\usr\bin\bash.exe -l -c 'pacman -Scc --noconfirm' -ARG GDB=https://ftp.gnu.org/gnu/gdb/gdb-14.2.tar.xz +ARG GDB=https://ftp.gnu.org/gnu/gdb/gdb-15.1.tar.xz RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; ` - Invoke-WebRequest $env:GDB -OutFile "C:\Windows\Temp\gdb-14.2.tar.xz"; ` - Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList e, "C:\Windows\Temp\gdb-14.2.tar.xz", `-oC:\Windows\Temp\ -NoNewWindow -PassThru -Wait; ` - Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList x, "C:\Windows\Temp\gdb-14.2.tar", `-oC:\ -NoNewWindow -PassThru -Wait; ` + Invoke-WebRequest $env:GDB -OutFile "C:\Windows\Temp\gdb-15.1.tar.xz"; ` + Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList e, "C:\Windows\Temp\gdb-15.1.tar.xz", `-oC:\Windows\Temp\ -NoNewWindow -PassThru -Wait; ` + Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList x, "C:\Windows\Temp\gdb-15.1.tar", `-oC:\ -NoNewWindow -PassThru -Wait; ` Remove-Item @('C:\Windows\Temp\*', 'C:\Users\*\Appdata\Local\Temp\*') -Force -Recurse; ENV MSYSTEM MINGW64 -RUN C:\msys64\usr\bin\bash.exe -l -c 'mkdir /BUILD && cd /BUILD && /c/gdb-14.2/configure --disable-gdbtk --disable-shared --disable-readline --with-system-readline --with-expat --with-system-zlib --without-guile --without-babeltrace --enable-tui --with-lzma --without-python --with-xxhash --with-mpfr=/mingw64 --enable-64-bit-bfd --enable-targets=all --disable-sim --prefix=/DIST || (cat /BUILD/config.log && exit 1)' +RUN C:\msys64\usr\bin\bash.exe -l -c 'mkdir /BUILD && cd /BUILD && /c/gdb-15.1/configure --disable-gdbtk --disable-shared --disable-readline --with-system-readline --with-expat --with-system-zlib --without-guile --without-babeltrace --enable-tui --with-lzma --without-python --with-xxhash --with-mpfr=/mingw64 --enable-64-bit-bfd --enable-targets=all --disable-sim --prefix=/DIST || (cat /BUILD/config.log && exit 1)' RUN C:\msys64\usr\bin\bash.exe -l -c 'LOADLIBES=-lws2_32\ -lbcrypt make -C /BUILD all' RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /BUILD install-strip' RUN C:\msys64\usr\bin\bash.exe -l -c 'cd /DIST/bin && ldd *.exe | cut -f2 -d\> | cut -f2 -d\ | grep mingw64 | while read f ; do cp $f . ; done' -RUN C:\msys64\usr\bin\bash.exe -l -c 'cp /c/gdb-14.2/COPYING* /DIST' +RUN C:\msys64\usr\bin\bash.exe -l -c 'cp /c/gdb-15.1/COPYING* /DIST' RUN C:\msys64\usr\bin\bash.exe -l -c 'cp /DIST/bin/gdb.exe /DIST/bin/gdb-multiarch.exe' -RUN C:\msys64\usr\bin\bash.exe -l -c 'cd /DIST && zip /c/gdb-multiarch-14.2.zip . -r' +RUN C:\msys64\usr\bin\bash.exe -l -c 'cd /DIST && zip /c/gdb-multiarch-15.1.zip . -r' CMD C:\msys64\usr\bin\bash.exe -l diff --git a/tools/win32-mips/Dockerfile b/tools/win32-mips/Dockerfile index f7335228c..bb8bab76b 100644 --- a/tools/win32-mips/Dockerfile +++ b/tools/win32-mips/Dockerfile @@ -1,6 +1,6 @@ # escape=` -# Dockerfile to generate the Windows g++-mipsel-none-elf-14.1.0.zip package. +# Dockerfile to generate the Windows g++-mipsel-none-elf-14.2.0.zip package. FROM mcr.microsoft.com/windows/servercore:ltsc2022 WORKDIR C:\windows\temp @@ -45,41 +45,41 @@ RUN C:\msys64\usr\bin\bash.exe -l -c 'pacman -S --needed --noconfirm mingw-w64-x RUN C:\msys64\usr\bin\bash.exe -l -c 'pacman -S --needed --noconfirm mingw-w64-x86_64-python mingw-w64-x86_64-readline' RUN C:\msys64\usr\bin\bash.exe -l -c 'pacman -Scc --noconfirm' -ARG BINUTILS=https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.xz -ARG GCC=https://ftp.gnu.org/gnu/gcc/gcc-14.1.0/gcc-14.1.0.tar.xz +ARG BINUTILS=https://ftp.gnu.org/gnu/binutils/binutils-2.43.tar.xz +ARG GCC=https://ftp.gnu.org/gnu/gcc/gcc-14.2.0/gcc-14.2.0.tar.xz RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; ` - Invoke-WebRequest $env:BINUTILS -OutFile "C:\Windows\Temp\binutils-2.42.tar.xz"; ` - Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList e, "C:\Windows\Temp\binutils-2.42.tar.xz", `-y, `-oC:\Windows\Temp\ -NoNewWindow -PassThru -Wait; ` - Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList x, "C:\Windows\Temp\binutils-2.42.tar", `-y, `-oC:\ -NoNewWindow -PassThru -Wait; ` + Invoke-WebRequest $env:BINUTILS -OutFile "C:\Windows\Temp\binutils-2.43.tar.xz"; ` + Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList e, "C:\Windows\Temp\binutils-2.43.tar.xz", `-y, `-oC:\Windows\Temp\ -NoNewWindow -PassThru -Wait; ` + Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList x, "C:\Windows\Temp\binutils-2.43.tar", `-y, `-oC:\ -NoNewWindow -PassThru -Wait; ` Remove-Item @('C:\Windows\Temp\*', 'C:\Users\*\Appdata\Local\Temp\*') -Force -Recurse; RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; ` - Invoke-WebRequest $env:GCC -OutFile "C:\Windows\Temp\gcc-14.1.0.tar.xz"; ` - Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList e, "C:\Windows\Temp\gcc-14.1.0.tar.xz", `-y, `-oC:\Windows\Temp\ -NoNewWindow -PassThru -Wait; ` - Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList x, "C:\Windows\Temp\gcc-14.1.0.tar", `-y, `-oC:\ -NoNewWindow -PassThru -Wait; ` + Invoke-WebRequest $env:GCC -OutFile "C:\Windows\Temp\gcc-14.2.0.tar.xz"; ` + Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList e, "C:\Windows\Temp\gcc-14.2.0.tar.xz", `-y, `-oC:\Windows\Temp\ -NoNewWindow -PassThru -Wait; ` + Start-Process -FilePath "C:\7-Zip\7z.exe" -ArgumentList x, "C:\Windows\Temp\gcc-14.2.0.tar", `-y, `-oC:\ -NoNewWindow -PassThru -Wait; ` Remove-Item @('C:\Windows\Temp\*', 'C:\Users\*\Appdata\Local\Temp\*') -Force -Recurse; ENV MSYSTEM MINGW64 -RUN C:\msys64\usr\bin\bash.exe -l -c 'cd /c/binutils-2.42 && /c/binutils-2.42/configure --target=mipsel-none-elf --disable-multilib --disable-nls --disable-werror --prefix=/DIST || (cat /BUILD/config.log && exit 1)' +RUN C:\msys64\usr\bin\bash.exe -l -c 'cd /c/binutils-2.43 && /c/binutils-2.43/configure --target=mipsel-none-elf --disable-multilib --disable-nls --disable-werror --prefix=/DIST || (cat /BUILD/config.log && exit 1)' -RUN C:\msys64\usr\bin\bash.exe -l -c 'cd /c/binutils-2.42/libiberty && sed -i s/\\\\buint\\\\b/unsigned/ rust-demangle.c' +RUN C:\msys64\usr\bin\bash.exe -l -c 'cd /c/binutils-2.43/libiberty && sed -i s/\\\\buint\\\\b/unsigned/ rust-demangle.c' -RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/binutils-2.42 all -j8' -RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/binutils-2.42 install-strip' -RUN C:\msys64\usr\bin\bash.exe -l -c 'cp /c/binutils-2.42/COPYING* /DIST' +RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/binutils-2.43 all -j8' +RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/binutils-2.43 install-strip' +RUN C:\msys64\usr\bin\bash.exe -l -c 'cp /c/binutils-2.43/COPYING* /DIST' -RUN C:\msys64\usr\bin\bash.exe -l -c 'mkdir /c/gcc-14.1.0/build && cd /c/gcc-14.1.0/build && ../configure --target=mipsel-none-elf --without-isl --disable-nls --disable-threads --disable-shared --disable-libssp --disable-libstdcxx-pch --disable-libgomp --disable-werror --without-headers --disable-hosted-libstdcxx --with-as=/DIST/bin/mipsel-none-elf-as --with-ld=/DIST/bin/mipsel-none-elf-ld --enable-languages=c,c++ --prefix=/DIST || (cat /BUILD/config.log && exit 1)' -RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/gcc-14.1.0/build all-gcc -j4' -RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/gcc-14.1.0/build all-target-libgcc -j4' -RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/gcc-14.1.0/build all-target-libstdc++-v3 -j4' -RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/gcc-14.1.0/build install-strip-gcc install-strip-target-libgcc install-strip-target-libstdc++-v3' +RUN C:\msys64\usr\bin\bash.exe -l -c 'mkdir /c/gcc-14.2.0/build && cd /c/gcc-14.2.0/build && ../configure --target=mipsel-none-elf --without-isl --disable-nls --disable-threads --disable-shared --disable-libssp --disable-libstdcxx-pch --disable-libgomp --disable-werror --without-headers --disable-hosted-libstdcxx --with-as=/DIST/bin/mipsel-none-elf-as --with-ld=/DIST/bin/mipsel-none-elf-ld --enable-languages=c,c++ --prefix=/DIST || (cat /BUILD/config.log && exit 1)' +RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/gcc-14.2.0/build all-gcc -j4' +RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/gcc-14.2.0/build all-target-libgcc -j4' +RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/gcc-14.2.0/build all-target-libstdc++-v3 -j4' +RUN C:\msys64\usr\bin\bash.exe -l -c 'make -C /c/gcc-14.2.0/build install-strip-gcc install-strip-target-libgcc install-strip-target-libstdc++-v3' RUN C:\msys64\usr\bin\bash.exe -l -c 'for t in cat cp echo mkdir rm touch which ; do cp /usr/bin/$t.exe /DIST/bin ; done' RUN C:\msys64\usr\bin\bash.exe -l -c 'cp /mingw64/bin/mingw32-make.exe /DIST/bin/make.exe' RUN C:\msys64\usr\bin\bash.exe -l -c 'cd /DIST && find . -name *.exe | while read bin ; do ldd $bin | cut -f2 -d\> | cut -f2 -d\ | grep -v /c/Windows/S | while read f ; do cp $f $(dirname $bin) ; done ; done || true' -RUN C:\msys64\usr\bin\bash.exe -l -c 'cd /DIST && zip /c/g++-mipsel-none-elf-14.1.0.zip . -r' +RUN C:\msys64\usr\bin\bash.exe -l -c 'cd /DIST && zip /c/g++-mipsel-none-elf-14.2.0.zip . -r' CMD C:\msys64\usr\bin\bash.exe -l diff --git a/vsprojects/tracy/tracy.vcxproj b/vsprojects/tracy/tracy.vcxproj index 2c926c068..691a617b3 100644 --- a/vsprojects/tracy/tracy.vcxproj +++ b/vsprojects/tracy/tracy.vcxproj @@ -163,7 +163,7 @@ true true - + diff --git a/vsprojects/tracy/tracy.vcxproj.filters b/vsprojects/tracy/tracy.vcxproj.filters index 3ebe0bebe..9223fb7ef 100644 --- a/vsprojects/tracy/tracy.vcxproj.filters +++ b/vsprojects/tracy/tracy.vcxproj.filters @@ -110,7 +110,7 @@ - + Source Files