From 1eea7366156ccafb71504707b3af5f229fd004f2 Mon Sep 17 00:00:00 2001 From: lizzie Date: Mon, 17 Aug 2026 03:02:09 +0000 Subject: [PATCH] [docs] overview doc for newcomers Signed-off-by: lizzie --- README.md | 2 +- docs/DesignOverview.md | 47 +++++++++++++++++++++++++++++++++++++++++ docs/README.md | 1 + docs/user/QuickStart.md | 38 +++++++++++++++++++++++++++++++++ docs/user/README.md | 4 +++- docs/user/RunOnMacOS.md | 37 -------------------------------- 6 files changed, 90 insertions(+), 39 deletions(-) create mode 100644 docs/DesignOverview.md delete mode 100644 docs/user/RunOnMacOS.md diff --git a/README.md b/README.md index 9fc27551a9..6f0b4291bc 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@
-

Eden is a free and opensource (FOSS) Switch 1 emulator, derived from Yuzu and Sudachi - started by developer Camille LaVey. +

Eden is a free and opensource (FOSS) Switch 1 emulator, derived from Yuzu, Citron, and Sudachi - started by developer Camille LaVey. It's written in C++ with portability in mind, with builds for Windows, Linux, macOS, Android, FreeBSD and more.

diff --git a/docs/DesignOverview.md b/docs/DesignOverview.md new file mode 100644 index 0000000000..e2af566c54 --- /dev/null +++ b/docs/DesignOverview.md @@ -0,0 +1,47 @@ +# Design Overview + +Modern game consoles require heavy power to be emulated appropriatedly. This is why the emulator uses an approach known as HLE (High-Level-Emulation), in a nuthsell: Instead of accurately emulating every subsystem that forms part of a component, emulate the resulting visible I/O interface instead. + +For example, take a disk write, instead of emulating a proper SD card we instead use the C++ standard library for I/O. Additionally we use the abstractions provided by the `fs` service to "lie" to programs about certain SD card properties. Notably this includes making up sizes for the fake SD card, giving "realistic" values or expected outputs for a given card, and so on. And instead of writing to an actual SD card, the emulator simply writes to a file. + +This also means grand part of the emulator consists of just re-implementing firmware but using HLE primitives; for example audio doesn't go to an emulated audio device, but rather gets processed on the fly by a dedicated service and then passed to SDL3/cubeb/etc. + +As such, many of the systems implemented are not 100% accurate to the original software, but they're "good enough" to pass as being so. While we do strive to maintain high compatibility (especially with homebrew), there are realistic limitations to these approaches. + +No formal fuzzing or formal verification has been done on the emulator as a whole, this means there may be hundreds of bugs hiding in each subsystem. As such, output may also not correctly match due to those aforementioned issues. + +## src/android/ + +Entire Android frontend, written mostly in Kotlin and generally having asinine hacks (thanks Android) due to the particularly horrific (and particular way) to do things. + +## src/audio_core/ + +Handles everything related to audio, this is where most of the filtering and processing occurs (CPU intensive task!). + +## src/common/ + +The [common](../src/common) folder contains just your basic pollyfills for whatever missing functionality. We heavily encourage new PRs to make use of one of the dependencies, or the standard C++ library. Minimizing the amount of things we reinvent the wheel for is always a good thing. + +## src/core/ + +The [core folder](../src/core) is the main heart of the emulator, while we don't officially support having other frontends out of the box (RetroArch, for example); any prospective developer can reuse this library (compiled as one by CMake) to stitch up their own RetroArch core, for example. + +## src/dynarmic/ + +See [Dynarmic](./dynarmic). + +## src/hid_core/ + +Input, joysticks, controllers and everything related to input devices. + +## src/shader_recompiler/ + +Dedicated shader recompiler to translate Maxwell assembly code to either SPIR-V, GLSL or GLASM. + +## src/video_core/ + +Most of the things here have their own dedicated section. In short this is basically the entire Tegra NVIDIA Maxwell GPU emulation. Additionally it includes some [extra effects](../src/video_core/host_ahders) to emulate MSAA, D24 copies or as polyfill. + +Available backends are: Null, Vulkan, and OpenGL. + +See [NVIDIA GPU](./NvidiaGpu.md). diff --git a/docs/README.md b/docs/README.md index 594564d7f8..ac6ac801f0 100644 --- a/docs/README.md +++ b/docs/README.md @@ -20,6 +20,7 @@ This contains documentation created by developers. This contains build instructi - **[Driver Bugs](./DriverBugs.md)** - **[Building Older Commits](./build/OlderCommits.md)** - Subsystems: + - **[Design Overview](./DesignOverview.md)** - **[Dynarmic](./dynarmic/README.md)** - **[HOS Kernel](./HosKernel.md)** - **[Settings](./Settings.md)** diff --git a/docs/user/QuickStart.md b/docs/user/QuickStart.md index 74f987aee2..de644cbb08 100644 --- a/docs/user/QuickStart.md +++ b/docs/user/QuickStart.md @@ -77,3 +77,41 @@ Use this guide to get starting using the Eden emulator. 8. Double-Click the main window to add the folder containing your games. 9. Go to *Emulation > Configure > Input* and set up your controller. Click **OK** to close the dialog window. 10. Double-Click a game to run it. + +## macOS + +Current macOS support is still experimental and very reliant on MoltenVK developments, plans have shifted to properly provide support for KosmicKrisp and similar new GPU endeavours, but macOS users still are bound to MoltenVK itself. + +Users of macOS may wish to use [Asahi Linux](https://wiki.gentoo.org/wiki/Project:Asahi/Guide) for the rising KosmicKrisp support. + +As of writing, neither macOS nor Asahi has support for NCE; additionally Asahi has extraneous paging bugs with fastmem. + +### Allowing Eden to Run on MacOS + +Use this guide when you need to allow Eden to run on a Mac system, but are being blocked by Apple Security policy. + +**Click [Here](https://evilperson1337.notion.site/Allowing-Eden-to-Run-on-MacOS-2b057c2edaf681fea63dc81027efeffd) for a version of this guide with images & visual elements.** + +--- + +##### Pre-Requisites + +- Permissions to modify settings in MacOS + +--- + +#### Why am I Seeing This? + +Recent versions of MacOS (Catalina & newer) introduced the **Gatekeeper** security functionality, requiring software to be signed by Apple or a trusted (aka - paying) developer. If the signature isn't on the list of trusted ones, it will stop the program from executing and display the message above. + +--- + +#### Steps + +1. Open the *System Settings* panel. +2. Navigate to *Privacy & Security*. +3. Scroll down and observe the following message under the **Security** settings. +4. Select **Open Anyway** to tell your Mac that you trust the application. +5. You will now get another window appearing to verify you want to open Eden. Select **Open Anyway**. +6. You will be prompted for your password to authorize the request. Enter the credentials of an account that has permission to modify settings and press **OK**. +7. Eden will now open and any subsequent launches of the program will not prompt this. diff --git a/docs/user/README.md b/docs/user/README.md index 0b1a434a37..48b107958b 100644 --- a/docs/user/README.md +++ b/docs/user/README.md @@ -10,13 +10,15 @@ A copy of this handbook is [available online](https://git.eden-emu.dev/eden-emu/ - **[The Basics](Basics.md)** - **[Quickstart](./QuickStart.md)** + - **[Windows](./QuickStart.md#windows)** + - **[Steamdeck](./QuickStart.md#steamdeck)** + - **[macOS](./QuickStart.md#macos)** - **[Settings](./Settings.md)** - **[Controllers](./Controllers.md)** - **[Controller profiles](./Controllers.md#configuring-controller-profiles)** - **[Audio](Audio.md)** - **[Graphics](Graphics.md)** - **[Installing Mods](./Mods.md)** -- **[Run On macOS](./RunOnMacOS.md)** - **[Data, Savefiles and Storage](Storage.md)** - **[Orphaned Profiles](Orphaned.md)** - **[Troubleshooting](./Troubleshoot.md)** diff --git a/docs/user/RunOnMacOS.md b/docs/user/RunOnMacOS.md deleted file mode 100644 index fcec9af546..0000000000 --- a/docs/user/RunOnMacOS.md +++ /dev/null @@ -1,37 +0,0 @@ -# User Handbook - Run on macOS - -Current macOS support is still experimental and very reliant on MoltenVK developments, plans have shifted to properly provide support for KosmicKrisp and similar new GPU endeavours, but macOS users still are bound to MoltenVK itself. - -Users of macOS may wish to use [Asahi Linux](https://wiki.gentoo.org/wiki/Project:Asahi/Guide) for the rising KosmicKrisp support. - -As of writing, neither macOS nor Asahi has support for NCE; additionally Asahi has extraneous paging bugs with fastmem. - -## Allowing Eden to Run on MacOS - -Use this guide when you need to allow Eden to run on a Mac system, but are being blocked by Apple Security policy. - -**Click [Here](https://evilperson1337.notion.site/Allowing-Eden-to-Run-on-MacOS-2b057c2edaf681fea63dc81027efeffd) for a version of this guide with images & visual elements.** - ---- - -#### Pre-Requisites - -- Permissions to modify settings in MacOS - ---- - -### Why am I Seeing This? - -Recent versions of MacOS (Catalina & newer) introduced the **Gatekeeper** security functionality, requiring software to be signed by Apple or a trusted (aka - paying) developer. If the signature isn't on the list of trusted ones, it will stop the program from executing and display the message above. - ---- - -### Steps - -1. Open the *System Settings* panel. -2. Navigate to *Privacy & Security*. -3. Scroll down and observe the following message under the **Security** settings. -4. Select **Open Anyway** to tell your Mac that you trust the application. -5. You will now get another window appearing to verify you want to open Eden. Select **Open Anyway**. -6. You will be prompted for your password to authorize the request. Enter the credentials of an account that has permission to modify settings and press **OK**. -7. Eden will now open and any subsequent launches of the program will not prompt this. \ No newline at end of file