<feed xmlns='http://www.w3.org/2005/Atom'>
<title>eglantine-cirakg/src/common/fs/fs_paths.h, branch nx2</title>
<subtitle>Mirror of github.com/cira0100/Eglantine-public nx2, a fork of Djihads80/Eglantine.</subtitle>
<id>https://git.cirakg.xyz/eglantine-cirakg/atom?h=nx2</id>
<link rel='self' href='https://git.cirakg.xyz/eglantine-cirakg/atom?h=nx2'/>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/'/>
<updated>2026-11-03T17:33:16+00:00</updated>
<entry>
<title>video_core: NVIDIA DLSS through NVIDIA Streamline in place of a game's DLSS</title>
<updated>2026-11-03T17:33:16+00:00</updated>
<author>
<name>Duck912</name>
<email>350528965+Duck912@users.noreply.github.com</email>
</author>
<published>2026-11-03T17:13:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=63e87a22c60394bc4f427ee5f8d6ddbce7b0ac7f'/>
<id>urn:sha1:63e87a22c60394bc4f427ee5f8d6ddbce7b0ac7f</id>
<content type='text'>
Adds a Graphics setting, "Use NVIDIA DLSS in place of a game's DLSS" (nvidia_dlss, off by
default). When it is on, in Windows builds configured with EGLANTINE_STREAMLINE_SDK, the
evaluation Eglantine already replaces with FSR 3.1 goes to NVIDIA DLSS on GeForce RTX cards, with
the same inputs (colour, depth, motion vectors, jitter). When DLSS can't run, FSR 3.1 runs as
before.

Only Streamline's MIT-licensed headers are compiled in; nothing of NVIDIA's is linked or shipped.
At run time Eglantine looks for sl.interposer.dll in the user folder's "streamline" folder (or
EDEN_STREAMLINE_DIR, or "streamline" next to the executable), checks its Streamline signature and
starts Streamline with manual hooking. Streamline's plugins come from that folder or the NVIDIA
app's downloads. DLSS itself is nvngx_dlss.dll in the same folder, else the newest DLSS 310 or
later that the NVIDIA app has downloaded, checked for NVIDIA's Authenticode signature and copied
as streamline/nvidia-app/nvngx_dlss.dll. Like other tools that call DLSS outside a game, it uses
its own fixed project id with the custom engine type.

- Preset K for all modes (EDEN_NX2_DLSS_PRESET overrides it): the default Performance model (M)
  and L draw thin dark horizontal lines in some frames at 2x resolution scale; K doesn't.
- HDR input with auto exposure; the mode follows the render/output ratio.
- Buffer device address stays enabled when DLSS needs it, for DLSS only.
- The upscaler waits for the device instead of submitting when it is destroyed: by then the
  game's channels are released, and a submit read the state tracker's stale flags (a crash when
  stopping a game).

With the setting off, or in builds without the SDK path (the setting is hidden there), nothing
changes.

Testing: Windows 11, RTX 5080, Fire Emblem: Fortune's Weave docked at 1x (720p -&gt; 1440p) and 2x
(1440p -&gt; 2880p), CLI runs and GUI play, stopping and restarting games with DLSS on. Not tested on
other GPUs or games.

Assisted-by: Claude Opus 5.5 (implementation, debugging)
Signed-off-by: Duck912 &lt;350528965+Duck912@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>[vulkan, android] Add feature of post-processing shaders on Android (#4348)</title>
<updated>2026-09-10T13:14:02+00:00</updated>
<author>
<name>CamilleLaVey</name>
<email>camillelavey99@gmail.com</email>
</author>
<published>2026-09-10T13:14:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=ed566919f468e45ecb56e4e61185d98142a2cd1c'/>
<id>urn:sha1:ed566919f468e45ecb56e4e61185d98142a2cd1c</id>
<content type='text'>
Very self-explanatory; implementation of the feature for post-processing shaders for Android (at least for now); will allow users to enhance the graphic quality of video games based on the use of multiple shaders adjustable, presets and more, inspired on the PPSSPP implementation, this feature adds 22 customizable shaders (1 pass) that lives on the overlay of the screen, which means that aside of the capability to chain multiple shaders on the screen, this doesn't have depths (pixel/ depth z-buffer) so it ensures the performance with it's use. Few shaders were a faithful port from PPSSPP with their respective attribution on the shader headers for their respective owners; and there are adaptations from public references/ cinematographic (Anime4K) and the rest are my own addition.

_Special Credits:_

1.- PPSSPP Team for their contribution on the public references for shaders: Henrik Rydgard, ShadX, SimoneT, KillaMaaki and guest(r).
2.- Niklas Haas.
3.- bloc97.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4348
Reviewed-by: lizzie &lt;lizzie@eden-emu.dev&gt;
Reviewed-by: Maufeat &lt;sahyno1996@gmail.com&gt;
</content>
</entry>
<entry>
<title>[vulkan, android] Initial implementation of LSFG-VK (#4263)</title>
<updated>2026-08-16T22:30:19+00:00</updated>
<author>
<name>CamilleLaVey</name>
<email>camillelavey99@gmail.com</email>
</author>
<published>2026-08-16T22:30:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=2000fdfb7b27e5e2546098b44268fc74887b22a5'/>
<id>urn:sha1:2000fdfb7b27e5e2546098b44268fc74887b22a5</id>
<content type='text'>
Pretty much self explanatory, own implementation based on LSFG-VK available with some additional reverse engineer work for the actual use of shaders inside Lossless.dll, we don't store/ bundle any tools that bypass security and self ownership: to use this feature is required to own your own copy of Lossless Scaling and I encourage to support developers behind this work.

Special thanks:

1.- THS - Original developer behind Lossless Scaling
2.- PancakeTAS - Developer behind LSFG-VK
3.- The Big Smolio The Sleeper (@gidoly)

Co-authored-by: lizzie &lt;lizzie@eden-emu.dev&gt;
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4263
</content>
</entry>
<entry>
<title>[qt] Ryujinx save data link (#2815)</title>
<updated>2025-10-28T02:46:47+00:00</updated>
<author>
<name>crueter</name>
<email>crueter@eden-emu.dev</email>
</author>
<published>2025-10-28T02:46:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=39f226a853470df63a8bc56f052d3b738460f2d5'/>
<id>urn:sha1:39f226a853470df63a8bc56f052d3b738460f2d5</id>
<content type='text'>
This adds an action to the Game List context menu that lets users link
save data from Eden to Ryujinx, or vice versa.

Unfortunately, this isn't so simple to deal with due to the way Ryujinx's saves work. Ryujinx stores its saves in the... config directory... in `bis/user/save`. Unlike Yuzu, however, it doesn't store things by TitleID, instead it's just a bunch of directories from 000...01 to 000...0f and so on. The way it *maps* TitleID to SaveID is via `imkvdb.arc` in `bis/system/save/8000000000000000/0/` and also an identical copy in the `1` directory for... some reason. `imkvdb.arc` is handled by `FlatMapKeyValueStore` in LibHac, which, as the name implies, is a key-value storage system that `imkvdb.arc`, and seemingly `imkvdb.arc` alone, uses. The way this class is written is really weird, almost as if it's designed to accommodate more types of kvdbs... but for now we can safely assume that there aren't gonna be any other `kvdb` implementations added to HorizonNX.

Regardless, the file format is ridiculously simple so I didn't actually need to do a deep dive into C# code... of which I can basically only read Avalonia. A simple `xxd` on the `imkvdb.arc` is all that's needed, and here's everything that matters:
- The `IMKV` magic header (4 bytes)
- 8 bytes that don't really have anything useful to us, except for a size byte (presumably a `u32`) strewn at offset `0x08` from the start of the file, which is useless to us
- Then we start the `IMEN` list. I don't know what the `IM` stands for, but `IMEN` is just, well, an ENtry. Offsets shown are relative to the start of the `IMEN` header.
  * 4-byte `IMEN` magic header at 0x0
  * 8 bytes of filler data. It contains two `0x40` bytes, but I'm not really sure what they do
  * TitleID (u64) at `0xC`, for example `00a0 df10  501f 0001` for Legends: Arceus (the byte order is swapped)
  * 0x38 bytes of filler starting at offset 0x14
  * SaveID (u64) at `0x4C`, for example `0a00 0000 0000 0000` for my Legends: Arceus save
  * 0x38 bytes of filler starting at offset 0x54

Full example for Legends: Arceus:
```
000001b0: 494d 454e 4000 0000 4000 0000 00a0 df10  IMEN@...@.......
000001c0: 501f 0001 0100 0000 0000 0000 0000 0000  P...............
000001d0: 0000 0000 0000 0000 0000 0000 0100 0000  ................
000001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000001f0: 0000 0000 0000 0000 0000 0000 0a00 0000  ................
00000200: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000210: 0000 0000 0100 0000 0000 0000 0000 0000  ................
00000220: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000230: 0000 0000 0000 0000 0000 0000 494d 454e  ............IMEN
```
Ultimately, the size of the `IMEN` sits at 0x8C or 140 bytes. With this knowledge reading all the TitleID -&gt; SaveID pairs is basically free, and outside of validation and stuff is like 15 lines of relevant code. Some interesting caveats, though:
- There are two entries for some TitleIDs for... some reason? Ignoring the second one seems to work though.
- Within each save directory, there are directories `0` and `1`... and only `0` ever seems used??? It's where Ryujinx points you to for save, so I just chose to use that.

Once everything is parsed, the rest of the implementation is extremely trivial:
- When the user requests a Ryujinx link, match the current program_id to the corresponding SaveID in `imkvdb`
- If it doesn't exist, just error out (save data is probably nonexistent)
- If it does though, give the user the option to use Eden's current save data OR Ryujinx's current save data.

Old save data is deleted depending on which one you chose.

Signed-off-by: crueter &lt;crueter@eden-emu.dev&gt;
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2815
Reviewed-by: Lizzie &lt;lizzie@eden-emu.dev&gt;
Reviewed-by: MaranBr &lt;maranbr@eden-emu.dev&gt;
</content>
</entry>
<entry>
<title>[user] prioritize 'user' directory if it exists (without needing a portable build) + docs (#338)</title>
<updated>2025-09-07T22:57:08+00:00</updated>
<author>
<name>lizzie</name>
<email>lizzie@eden-emu.dev</email>
</author>
<published>2025-09-07T22:57:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=2f82b63e6ad4f26544e74f86224f4e240933d602'/>
<id>urn:sha1:2f82b63e6ad4f26544e74f86224f4e240933d602</id>
<content type='text'>
Signed-off-by: lizzie &lt;lizzie@eden-emu.dev&gt;
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/338
Reviewed-by: crueter &lt;crueter@eden-emu.dev&gt;
Co-authored-by: lizzie &lt;lizzie@eden-emu.dev&gt;
Co-committed-by: lizzie &lt;lizzie@eden-emu.dev&gt;
</content>
</entry>
<entry>
<title>Fix License headers &amp; CI (#168)</title>
<updated>2025-06-09T01:40:21+00:00</updated>
<author>
<name>crueter</name>
<email>swurl@swurl.xyz</email>
</author>
<published>2025-06-09T01:40:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=a9f9b207c204650478ddbb9581daa1af8645dc36'/>
<id>urn:sha1:a9f9b207c204650478ddbb9581daa1af8645dc36</id>
<content type='text'>
Signed-off-by: crueter &lt;swurl@swurl.xyz&gt;
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/168
Co-authored-by: crueter &lt;swurl@swurl.xyz&gt;
Co-committed-by: crueter &lt;swurl@swurl.xyz&gt;
</content>
</entry>
<entry>
<title>User Data Migration from Citron, Sudachi, and Yuzu (#91)</title>
<updated>2025-05-08T22:16:07+00:00</updated>
<author>
<name>swurl</name>
<email>swurl@swurl.xyz</email>
</author>
<published>2025-05-08T22:16:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=f786802b9b699548d0160cf52dff58018566fd70'/>
<id>urn:sha1:f786802b9b699548d0160cf52dff58018566fd70</id>
<content type='text'>
Includes citron, sudachi, yuzu

currently broken, because the eden dir is always made early?

Signed-off-by: swurl &lt;swurl@swurl.xyz&gt;

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/91
Co-authored-by: swurl &lt;swurl@swurl.xyz&gt;
Co-committed-by: swurl &lt;swurl@swurl.xyz&gt;
</content>
</entry>
<entry>
<title>Rename log file to `eden_log`</title>
<updated>2025-04-01T16:36:48+00:00</updated>
<author>
<name>Briar</name>
<email>205427297+icybriarr@users.noreply.github.com</email>
</author>
<published>2025-04-01T16:36:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=0c4d8a8b08320e8c5855f95aba8b52dfc59a77f9'/>
<id>urn:sha1:0c4d8a8b08320e8c5855f95aba8b52dfc59a77f9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge pull request #11689 from liamwhite/breakpad</title>
<updated>2023-10-30T03:41:13+00:00</updated>
<author>
<name>liamwhite</name>
<email>liamwhite@users.noreply.github.com</email>
</author>
<published>2023-10-30T03:41:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=4940a6b3104e5734d8f15f3155625d098b4ef28c'/>
<id>urn:sha1:4940a6b3104e5734d8f15f3155625d098b4ef28c</id>
<content type='text'>
qt: implement automatic crash dump support</content>
</entry>
<entry>
<title>Merge pull request #11705 from FearlessTobi/windows-sc</title>
<updated>2023-10-08T21:11:52+00:00</updated>
<author>
<name>liamwhite</name>
<email>liamwhite@users.noreply.github.com</email>
</author>
<published>2023-10-08T21:11:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=2c7e606aa4285c790a1bbe66d75fc49a5384a2be'/>
<id>urn:sha1:2c7e606aa4285c790a1bbe66d75fc49a5384a2be</id>
<content type='text'>
yuzu: Add desktop shortcut support for Windows (continuation of #11344)</content>
</entry>
</feed>
