<feed xmlns='http://www.w3.org/2005/Atom'>
<title>eglantine-cirakg/src/core/core.cpp, 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-02T22:28:10+00:00</updated>
<entry>
<title>core: detect Switch 2 programs in NSP containers</title>
<updated>2026-11-02T22:28:10+00:00</updated>
<author>
<name>cirakg</name>
<email>cirakg@cirakg.xyz</email>
</author>
<published>2026-11-02T18:32:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=b504f4e82bb0b675d953d14b67e307eac58226d3'/>
<id>urn:sha1:b504f4e82bb0b675d953d14b67e307eac58226d3</id>
<content type='text'>
Read the selected program metadata before kernel initialization so NSP launches receive the Switch 2 memory layout and clock. This fixes Mario Kart World 1.8.0 crashing during startup while its loose 1.0 dump already boots.
</content>
</entry>
<entry>
<title>loader: add NUP (Unencrypted (Archival) Package) container support</title>
<updated>2026-11-01T18:53:47+00:00</updated>
<author>
<name>a55uka</name>
<email>59313695+a55uka@users.noreply.github.com</email>
</author>
<published>2026-11-01T18:53:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=31b901b93b992580d608fc2f4db9ddac1d755e43'/>
<id>urn:sha1:31b901b93b992580d608fc2f4db9ddac1d755e43</id>
<content type='text'>
</content>
</entry>
<entry>
<title>1st pass of review: code cleanup &amp; windows test</title>
<updated>2026-10-31T17:04:23+00:00</updated>
<author>
<name>néo Luigi</name>
<email>85024393+neoluigi4123@users.noreply.github.com</email>
</author>
<published>2026-10-31T14:33:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=82963e6750cef756d2ad4d1115dc9dca420d4313'/>
<id>urn:sha1:82963e6750cef756d2ad4d1115dc9dca420d4313</id>
<content type='text'>
Assisted-by: Claude Opus 5.5 (review, cleanup and log analysis)
</content>
</entry>
<entry>
<title>texture_cache: keep Switch 2 VRAM use under the driver's budget</title>
<updated>2026-10-31T17:04:23+00:00</updated>
<author>
<name>Wael3rd</name>
<email>29479851+Wael3rd@users.noreply.github.com</email>
</author>
<published>2026-10-31T06:34:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=2065b1431c0ecfeade61a7e7511889c4800b6bb9'/>
<id>urn:sha1:2065b1431c0ecfeade61a7e7511889c4800b6bb9</id>
<content type='text'>
Mario Kart World filled the GPU after a few minutes on 8 GB cards, and on
16 GB cards with uncompressed ASTC: textures were created without memory
(garbage), then the emulator crashed. The Switch 2 collector thresholds
came from the sum of all heap budgets, but on AMD the host-visible
device-local heap is the same VRAM, so the critical threshold ended above
the real budget and the collector never kicked in. Unbacked images were
also counted at their full size.

Thresholds now follow the main device-local heap's budget, re-read every
30 frames, and images count the memory they really have. Switch 2 titles
on GPUs under 12 GiB re-compress ASTC to BC3 for the session when it is
set to Uncompressed (EDEN_NX2_KEEP_ASTC=1 opts out), and
EDEN_NX2_VRAM_LIMIT_MIB simulates a smaller GPU for testing.

Assisted-by: Claude Opus 5.5 (diagnosis and code)
</content>
</entry>
<entry>
<title>Fixed game support about docked/handheld mode, applying only to ns2 games. Tested on windows.</title>
<updated>2026-10-30T19:27:35+00:00</updated>
<author>
<name>néo Luigi</name>
<email>85024393+neoluigi4123@users.noreply.github.com</email>
</author>
<published>2026-10-30T17:04:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=d2ac2275247a9ecb3e1404606f7026c6402533b8'/>
<id>urn:sha1:d2ac2275247a9ecb3e1404606f7026c6402533b8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>core: return empty perf stats before the system is running (#30)</title>
<updated>2026-10-30T14:09:38+00:00</updated>
<author>
<name>givethesourceplox</name>
<email>itsports@proton.me</email>
</author>
<published>2026-10-30T14:09:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=24e3cb462e47b22edda334939123694ff6920e95'/>
<id>urn:sha1:24e3cb462e47b22edda334939123694ff6920e95</id>
<content type='text'>
The SDL frontend's title timer can fire before perf_stats exists and
crashed on its null mutex during boot.

Assisted-by: Claude (Anthropic)

Co-authored-by: givethesourceplox &lt;272928635+givethesourceplox@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>nx2: run the guest counter at 31.25 MHz for Switch 2 titles</title>
<updated>2026-10-30T06:31:58+00:00</updated>
<author>
<name>Takoroka</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-10-30T05:55:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=0218eacfd560d0ce48b3ffe64d279ee85bbf1347'/>
<id>urn:sha1:0218eacfd560d0ce48b3ffe64d279ee85bbf1347</id>
<content type='text'>
The Switch 2 counter runs at 31.25 MHz and its SDK converts ticks with
that constant: Mario Kart World's sdk builds 31,250,000 in
nn::os::GetSystemTickFrequency, TickManager::ConvertToTimeSpan and
TickManager::ConvertToTick (19.2 MHz appears nowhere). Eglantine counted
at the Switch 1 rate for every title, so every tick-based time in a
Switch 2 game was off by 1.63x: elapsed times read short, and a deadline
of one 60 Hz frame converted to ticks waited ~27 ms.

The wall clock now has a guest counter frequency, set at boot: 31.25 MHz
for Switch 2 programs, 19.2 MHz otherwise, EDEN_NX2_CNTFRQ=&lt;Hz&gt; to force
one. CNTPCT reads, CNTFRQ_EL0, svcGetSystemTick, thread tick counts and
the time services' tick conversions follow it, and the CNTPCT spin
detection keeps its ~1.7 us threshold.

Mario Kart World, title screen and attract demo, 180 s, same build:
frame times unchanged (17-19 ms once warm), process CPU time 848 s
instead of 930 s.
</content>
</entry>
<entry>
<title>core: use the 12 GiB layout and auto-stub IPC for Switch 2 titles</title>
<updated>2026-10-29T07:40:34+00:00</updated>
<author>
<name>Takoroka</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-10-29T07:22:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=c1fbe684ef7981e5b3c48ce9027b6ea81092eec0'/>
<id>urn:sha1:c1fbe684ef7981e5b3c48ce9027b6ea81092eec0</id>
<content type='text'>
Switch 2 titles size their heap from the total memory and stop at the
first unimplemented command, so they only booted with the 12 GiB layout
and EDEN_NX2_AUTO_STUB set by hand. Detect them from main.npdm before the
kernel starts and apply the layout as a per-game value (the configured
layout comes back once the game is closed), and auto-stub unknown
commands from Switch 2 processes.
</content>
</entry>
<entry>
<title>nx2: frame-locked input replay and quieter logs</title>
<updated>2026-10-28T08:56:14+00:00</updated>
<author>
<name>Takoroka</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-10-28T08:56:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=64c91974f4455a63a025149a4ba8e2c46894bdc7'/>
<id>urn:sha1:64c91974f4455a63a025149a4ba8e2c46894bdc7</id>
<content type='text'>
EDEN_NX2_KEY_RECORD records keyboard transitions as "f&lt;frame&gt;:code" against a
global count of guest presents; EDEN_NX2_KEY_SCRIPT replays them on the same
frames (or by seconds, as before), so a played session reproduces exactly.

Debug aids: the PC/LR/SP of the first unmapped reads, NSO load addresses,
EDEN_NX2_IPC_SUMMARY (request counts every 5 s), EDEN_NX2_FORCE_LOD0.
Unmapped-access logging is rate limited and the per-draw/semaphore spam is
demoted, so long sessions stay under the log size cap.
</content>
</entry>
<entry>
<title>[hle][core] Hang Freeze Fix - Video Fixes - Revert Microsleep (#4316) (#4525)</title>
<updated>2026-10-26T16:25:47+00:00</updated>
<author>
<name>John</name>
<email>john@eden-emu.dev</email>
</author>
<published>2026-10-26T16:25:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=cbd4cf2d8ce9b66936bff8a19be4715e770e0c71'/>
<id>urn:sha1:cbd4cf2d8ce9b66936bff8a19be4715e770e0c71</id>
<content type='text'>
- [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions).
- [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md)
- [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability.

-------------------

Credit: amicuchu
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;

- Fixes Mario Strikers Intro Freezing from legacy.
- Microsleep no longer needed for Absolum Video freezing and other videos freezing.
- Revert `[service, nvhost] added machinery to allow microsleep between nvdec read requests to avoid guest panic in some games #4316`
- Tested with CPU/GPU decoding on Linux/Windows.
Special thanks to xbzk

&lt;video src="/attachments/9f4a4494-78ee-4b65-ad26-628e83d5c83b" title="strikers" controls&gt;&lt;/video&gt;

Co-authored-by: Your Name &lt;John@John.localdomain&gt;
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4525
Reviewed-by: Maufeat &lt;sahyno1996@gmail.com&gt;
Reviewed-by: Shinmegumi &lt;shinmegumi@eden-emu.dev&gt;
</content>
</entry>
</feed>
