diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 941f94ae26..ac67f73d00 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -2,9 +2,9 @@
# some stuff needs cleaned up etc
name: eden-build
-on:
- push:
- branches: [ "master" ]
+#on:
+# push:
+# branches: [ "master" ]
# TODO: combine build.yml into trigger_release.yml
jobs:
diff --git a/.github/workflows/trigger_release.yml b/.github/workflows/trigger_release.yml
index 638ab3424b..645b21e25a 100644
--- a/.github/workflows/trigger_release.yml
+++ b/.github/workflows/trigger_release.yml
@@ -1,8 +1,8 @@
name: Build Application and Make Release
-on:
- push:
- tags: [ "*" ]
+#on:
+# push:
+# tags: [ "*" ]
permissions:
contents: write
diff --git a/README.md b/README.md
index 724e567516..8e8c769070 100644
--- a/README.md
+++ b/README.md
@@ -15,8 +15,7 @@
-
Eden is a open-source Nintendo Switch emulator, forked from the Yuzu emulator — started by former Citron developer Camille LaVey and the Eden team.
-
+Eden is an open-source Nintendo Switch emulator, forked from the Yuzu emulator — started by former Citron developer Camille LaVey and the Eden team.
It is written in C++ with portability in mind, and we actively maintain builds for Windows, Linux and Android.
@@ -76,7 +75,7 @@ Any donations received will go towards things such as:
* Additional hardware (e.g. GPUs as needed to improve rendering support, other peripherals to add support for, etc.)
* CI Infrastructure
-If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/edenemu), once public, and talk to Camille or any of our other developers.
+If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/edenemu) and talk to Camille or any of our other developers.
## License
diff --git a/docs/Development.md b/docs/Development.md
new file mode 100644
index 0000000000..4f17bf6977
--- /dev/null
+++ b/docs/Development.md
@@ -0,0 +1,174 @@
+# Development
+
+* **Windows**: [Windows Building Guide](./docs/build/Windows.md)
+* **Linux**: [Linux Building Guide](./docs/build/Linux.md)
+* **Android**: [Android Building Guide](./docs/build/Android.md)
+* **Solaris**: [Solaris Building Guide](./docs/build/Solaris.md)
+* **FreeBSD**: [FreeBSD Building Guide](./docs/build/FreeBSD.md)
+* **macOS**: [macOS Building Guide](./docs/build/macOS.md)
+
+# Building speedup
+
+If you have an HDD, use ramdisk (build in RAM):
+```sh
+sudo mkdir /tmp/ramdisk
+sudo chmod 777 /tmp/ramdisk
+# about 10GB needed
+sudo mount -t tmpfs -o size=10G myramdisk /tmp/ramdisk
+cmake -B /tmp/ramdisk
+cmake --build /tmp/ramdisk -- -j32
+sudo umount /tmp/ramdisk
+```
+
+# How to test JIT
+
+## gdb
+
+Run `./build/bin/eden-cli -c -d -g `
+
+Then hook up an aarch64-gdb (use `yay aarch64-gdb` or `sudo pkg in arch64-gdb` to install)
+Then type `target remote localhost:1234` and type `c` (for continue) - and then if it crashes just do a `bt` (backtrace) and `layout asm`.
+
+### gdb cheatsheet
+
+- `mo `: Monitor commands, `get info`, `get fastmem` and `get mappings` are available.
+- `detach`: Detach from remote (i.e restarting the emulator).
+- `c`: Continue
+- `p `: Print variable, `p/x ` for hexadecimal.
+- `r`: Run
+- `bt`: Print backtrace
+- `info threads`: Print all active threads
+- `thread `: Switch to the given thread (see `info threads`)
+- `layout asm`: Display in assembly mode (TUI)
+- `si`: Step assembly instruction
+- `s` or `step`: Step over LINE OF CODE (not assembly)
+- `display `: Display variable each step.
+- `n`: Next (skips over call frame of a function)
+- `frame `: Switches to the given frame (from `bt`)
+- `br `: Set breakpoint at ``.
+- `delete`: Deletes all breakpoints.
+- `catch throw`: Breakpoint at throw. Can also use `br __cxa_throw`
+
+Expressions can be `variable_names` or `1234` (numbers) or `*var` (dereference of a pointer) or `*(1 + var)` (computed expression).
+
+For more information type `info gdb` and read [the man page](https://man7.org/linux/man-pages/man1/gdb.1.html).
+
+## Bisecting older commits
+
+Since going into the past can be tricky (especially due to the dependencies from the project being lost thru time). This should "restore" the URLs for the respective submodules.
+
+```sh
+#!/bin/sh
+cat > .gitmodules < externals/dynarmic/src/dynarmic/common/x64_disassemble.cpp <
+#include
+#include
+namespace Dynarmic::Common {
+void DumpDisassembledX64(const void* ptr, size_t size) {}
+std::vector DisassembleX64(const void* ptr, size_t size) { return {}; }
+}
+EOF
+```
+
+If having issues with older artifacts, then run `rm -r externals/dynarmic/build externals/dynarmic/externals externals/nx_tzdb/tzdb_to_nx/externals externals/sirit/externals`.
+
+Configuring CMake with `-DSIRIT_USE_SYSTEM_SPIRV_HEADERS=1 -DCMAKE_CXX_FLAGS="-Wno-error" -DCMAKE_C_FLAGS="-Wno-error -Wno-array-parameter -Wno-stringop-overflow"` is also recommended.
+
diff --git a/externals/dynarmic/externals/catch b/externals/dynarmic/externals/catch
index 74fcff6e5b..5aa8d11321 160000
--- a/externals/dynarmic/externals/catch
+++ b/externals/dynarmic/externals/catch
@@ -1 +1 @@
-Subproject commit 74fcff6e5b190fb833a231b7f7c1829e3c3ac54d
+Subproject commit 5aa8d113215bd9a97ecc1a2f3fc9506947a2fa57
diff --git a/externals/dynarmic/externals/fmt b/externals/dynarmic/externals/fmt
index 02de29e003..35dcc58263 160000
--- a/externals/dynarmic/externals/fmt
+++ b/externals/dynarmic/externals/fmt
@@ -1 +1 @@
-Subproject commit 02de29e00321787fa515ca60f0f5911e61892dc6
+Subproject commit 35dcc58263d6b55419a5932bd6b0b3029a0a8c00
diff --git a/externals/dynarmic/externals/xbyak b/externals/dynarmic/externals/xbyak
index 44a72f3692..12557954c6 160000
--- a/externals/dynarmic/externals/xbyak
+++ b/externals/dynarmic/externals/xbyak
@@ -1 +1 @@
-Subproject commit 44a72f369268f7d552650891b296693e91db86bb
+Subproject commit 12557954c68a780563f9ab9fc24a3a156c96cba1
diff --git a/externals/dynarmic/externals/zycore-c b/externals/dynarmic/externals/zycore-c
index 7ad36e5211..75a36c45ae 160000
--- a/externals/dynarmic/externals/zycore-c
+++ b/externals/dynarmic/externals/zycore-c
@@ -1 +1 @@
-Subproject commit 7ad36e52110b39cfb62b47bfdb6def94ac531309
+Subproject commit 75a36c45ae1ad382b0f4e0ede0af84c11ee69928
diff --git a/externals/dynarmic/externals/zydis b/externals/dynarmic/externals/zydis
index 6372690e30..c2d2bab025 160000
--- a/externals/dynarmic/externals/zydis
+++ b/externals/dynarmic/externals/zydis
@@ -1 +1 @@
-Subproject commit 6372690e30389a94db65ece2d8a1f0a2310475ed
+Subproject commit c2d2bab0255e53a7c3e9b615f4eb69449eb942df
diff --git a/externals/dynarmic/src/dynarmic/CMakeLists.txt b/externals/dynarmic/src/dynarmic/CMakeLists.txt
index a43c9eae10..ab2d653152 100644
--- a/externals/dynarmic/src/dynarmic/CMakeLists.txt
+++ b/externals/dynarmic/src/dynarmic/CMakeLists.txt
@@ -5,7 +5,10 @@ add_library(dynarmic
backend/block_range_information.h
backend/exception_handler.h
common/always_false.h
+ common/assert.cpp
+ common/assert.h
common/cast_util.h
+ common/common_types.h
common/crypto/aes.cpp
common/crypto/aes.h
common/crypto/crc32.cpp
diff --git a/externals/dynarmic/src/dynarmic/backend/arm64/a32_interface.cpp b/externals/dynarmic/src/dynarmic/backend/arm64/a32_interface.cpp
index 6b38c41093..a22f296e94 100644
--- a/externals/dynarmic/src/dynarmic/backend/arm64/a32_interface.cpp
+++ b/externals/dynarmic/src/dynarmic/backend/arm64/a32_interface.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
/* This file is part of the dynarmic project.
* Copyright (c) 2021 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -7,9 +10,9 @@
#include
#include
-#include
+#include "dynarmic/common/assert.h"
#include
-#include
+#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/arm64/a32_address_space.h"
#include "dynarmic/backend/arm64/a32_core.h"
diff --git a/externals/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.cpp b/externals/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.cpp
index e24654c7db..67390a311d 100644
--- a/externals/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.cpp
+++ b/externals/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
/* This file is part of the dynarmic project.
* Copyright (c) 2016 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -6,7 +9,7 @@
#include "dynarmic/backend/arm64/a32_jitstate.h"
#include
-#include
+#include "dynarmic/common/common_types.h"
namespace Dynarmic::Backend::Arm64 {
diff --git a/externals/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.h b/externals/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.h
index 978bf84ad2..b4fee9a4d0 100644
--- a/externals/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.h
+++ b/externals/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.h
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
/* This file is part of the dynarmic project.
* Copyright (c) 2021 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -7,7 +10,7 @@
#include
-#include
+#include "dynarmic/common/common_types.h"
#include "dynarmic/frontend/A32/a32_location_descriptor.h"
#include "dynarmic/ir/location_descriptor.h"
diff --git a/externals/dynarmic/src/dynarmic/backend/arm64/a64_interface.cpp b/externals/dynarmic/src/dynarmic/backend/arm64/a64_interface.cpp
index 7d7716783a..96170f08a8 100644
--- a/externals/dynarmic/src/dynarmic/backend/arm64/a64_interface.cpp
+++ b/externals/dynarmic/src/dynarmic/backend/arm64/a64_interface.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
/* This file is part of the dynarmic project.
* Copyright (c) 2022 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -7,9 +10,9 @@
#include
#include
-#include
+#include "dynarmic/common/assert.h"
#include
-#include
+#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/arm64/a64_address_space.h"
#include "dynarmic/backend/arm64/a64_core.h"
diff --git a/externals/dynarmic/src/dynarmic/backend/arm64/a64_jitstate.h b/externals/dynarmic/src/dynarmic/backend/arm64/a64_jitstate.h
index 215e6987f3..3dd422b6d4 100644
--- a/externals/dynarmic/src/dynarmic/backend/arm64/a64_jitstate.h
+++ b/externals/dynarmic/src/dynarmic/backend/arm64/a64_jitstate.h
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
/* This file is part of the dynarmic project.
* Copyright (c) 2022 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -7,7 +10,7 @@
#include
-#include
+#include "dynarmic/common/common_types.h"
#include "dynarmic/frontend/A64/a64_location_descriptor.h"
diff --git a/externals/dynarmic/src/dynarmic/backend/arm64/abi.cpp b/externals/dynarmic/src/dynarmic/backend/arm64/abi.cpp
index 6d7b96379b..04d8ca2eaf 100644
--- a/externals/dynarmic/src/dynarmic/backend/arm64/abi.cpp
+++ b/externals/dynarmic/src/dynarmic/backend/arm64/abi.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
/* This file is part of the dynarmic project.
* Copyright (c) 2022 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -8,7 +11,7 @@
#include
#include
-#include
+#include "dynarmic/common/common_types.h"
#include
namespace Dynarmic::Backend::Arm64 {
diff --git a/externals/dynarmic/src/dynarmic/backend/arm64/abi.h b/externals/dynarmic/src/dynarmic/backend/arm64/abi.h
index d3d5de963a..ca7c9187db 100644
--- a/externals/dynarmic/src/dynarmic/backend/arm64/abi.h
+++ b/externals/dynarmic/src/dynarmic/backend/arm64/abi.h
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
/* This file is part of the dynarmic project.
* Copyright (c) 2022 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -10,7 +13,7 @@
#include
#include
-#include
+#include "dynarmic/common/common_types.h"
#include
#include "dynarmic/common/always_false.h"
diff --git a/externals/dynarmic/src/dynarmic/backend/arm64/address_space.h b/externals/dynarmic/src/dynarmic/backend/arm64/address_space.h
index 792ecf696b..25b1ab4b04 100644
--- a/externals/dynarmic/src/dynarmic/backend/arm64/address_space.h
+++ b/externals/dynarmic/src/dynarmic/backend/arm64/address_space.h
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
/* This file is part of the dynarmic project.
* Copyright (c) 2022 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -8,7 +11,7 @@
#include