<feed xmlns='http://www.w3.org/2005/Atom'>
<title>eglantine-cirakg/src/core/hle/service/hid, 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-03T01:15:22+00:00</updated>
<entry>
<title>Vibration support for ns2 games</title>
<updated>2026-11-03T01:15:22+00:00</updated>
<author>
<name>néo Luigi</name>
<email>85024393+neoluigi4123@users.noreply.github.com</email>
</author>
<published>2026-11-03T01:15:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=465aa33077f44d3f8664c076f8580e78446c0dee'/>
<id>urn:sha1:465aa33077f44d3f8664c076f8580e78446c0dee</id>
<content type='text'>
This branch supports vibration by achieving proper rumble reading from
games and uses regular eglantine/eden logic from ns1 to send them over.

Tested on windows 10 on Mario Kart World

Assisted-by: Claude Opus 5.5 (code cleanup)
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/nx2' into neo.ai/vibration-fix</title>
<updated>2026-11-02T23:49:36+00:00</updated>
<author>
<name>néo Luigi</name>
<email>85024393+neoluigi4123@users.noreply.github.com</email>
</author>
<published>2026-11-02T23:49:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=c84e5caf82a786f748c233e27b7f4ed9aaad9f44'/>
<id>urn:sha1:c84e5caf82a786f748c233e27b7f4ed9aaad9f44</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;

# Conflicts:
#	src/core/hle/service/hid/hid_server.cpp
#	src/core/hle/service/hid/hid_server.h
</content>
</entry>
<entry>
<title>service: placeholder handlers for known but unimplemented commands</title>
<updated>2026-11-01T17:39:36+00:00</updated>
<author>
<name>Takoroka</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-10-31T07:02:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=a07b8a31908ef8cc56e430449f374cdf997cd4fb'/>
<id>urn:sha1:a07b8a31908ef8cc56e430449f374cdf997cd4fb</id>
<content type='text'>
Add StubReplyZeroed, StubReplyEvent and StubReplyInterface to
ServiceFrameworkBase: for Switch 2 callers they reply with zeroed data, with
zeroed data and a copy handle to an event that never fires, or with an nx2:
stub interface; other callers get the unimplemented-function path as before.
Each command is logged once.

Use them for the commands of the interfaces games open that had no handler
or a nullptr one (hid, am, audio, aoc, caps, mii, set, lm, acc, ssl, bsd and
the nx2 vi2/gsv/gpu/syncpt sessions): a command that returns an interface now
returns one, a command that returns a handle returns an event, so callers no
longer get handle 0 or object 0 back.
</content>
</entry>
<entry>
<title>hid: handle Switch 2 commands 213 and 220</title>
<updated>2026-11-01T17:35:44+00:00</updated>
<author>
<name>Takoroka</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-10-31T07:01:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=efe9283de57cd28a2b35652047869513c5660fc7'/>
<id>urn:sha1:efe9283de57cd28a2b35652047869513c5660fc7</id>
<content type='text'>
213 (32 bytes and the aruid, no reply data) is sent per controller every
frame by Kirby Air Riders; through the auto stub it logged two lines per
call. 220 (16 bytes and the aruid) replies with one byte, which the auto
stub left to the message buffer's leftovers. Accept 213 quietly and answer
220 with zero.
</content>
</entry>
<entry>
<title>Vibration fix for ns2 games | Assisted by claude (code)</title>
<updated>2026-11-01T02:04:13+00:00</updated>
<author>
<name>néo Luigi</name>
<email>85024393+neoluigi4123@users.noreply.github.com</email>
</author>
<published>2026-11-01T02:04:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=2b413a46a2820f0a646baaa8dbd683009f096f32'/>
<id>urn:sha1:2b413a46a2820f0a646baaa8dbd683009f096f32</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Switch 2: back GPU-only regions, pace presents, interleaved split methods</title>
<updated>2026-10-28T02:28:10+00:00</updated>
<author>
<name>Takoroka</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-10-28T02:28:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=81eaf7ccbf07bfc73553d8e752a256aa3719bcb9'/>
<id>urn:sha1:81eaf7ccbf07bfc73553d8e752a256aa3719bcb9</id>
<content type='text'>
- gpu 214 creates GPU-only memory the graphics server backs itself (title 4
  renders everything into six 300 MB regions at 0x81_0000_0000). Back each
  with application-pool pages mapped into the alias code region and map that
  for the GPU. This is what made title 4's frames appear.
- vi2 229 waits (bounded) for the presented frame's GPU fence: the reply
  reports every buffer free, so without this the game laps Eden's GPU thread
  and rewrites command memory it has not read yet.
- Split methods: keep several parked methods keyed by resume address (NVN
  interleaves command buffers) and drop them when the submission ends.
- hid 214 (per-frame vibration send) answered quietly.
- Debug aids: EDEN_NX2_WINDOW_TRACE / EDEN_NX2_RT_TRACE (render targets,
  clears, textures), EDEN_NX2_AUDIO_LEVEL (output peak), EDEN_NX2_PB_DUMP
  (command list for offline replay), parsed-entry change check.
</content>
</entry>
<entry>
<title>Revert "[hle] constexpr handler dispatch maps, introduce version gating (#4480)" (#4532)</title>
<updated>2026-10-15T06:45:15+00:00</updated>
<author>
<name>PavelBARABANOV</name>
<email>pavelbarabanov94@gmail.com</email>
</author>
<published>2026-10-15T06:45:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=e255c20db4111485d228c10478bda63aabcfdde5'/>
<id>urn:sha1:e255c20db4111485d228c10478bda63aabcfdde5</id>
<content type='text'>
This reverts commit 218c6705d950635bc18f8458d738a1996fb592b6.

- [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.

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

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4532
Reviewed-by: lizzie &lt;lizzie@eden-emu.dev&gt;
Reviewed-by: CamilleLaVey &lt;camillelavey99@gmail.com&gt;
Reviewed-by: Maufeat &lt;sahyno1996@gmail.com&gt;
</content>
</entry>
<entry>
<title>[hle] constexpr handler dispatch maps, introduce version gating (#4480)</title>
<updated>2026-10-13T02:38:36+00:00</updated>
<author>
<name>lizzie</name>
<email>lizzie@eden-emu.dev</email>
</author>
<published>2026-10-13T02:38:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=218c6705d950635bc18f8458d738a1996fb592b6'/>
<id>urn:sha1:218c6705d950635bc18f8458d738a1996fb592b6</id>
<content type='text'>
This PR primarily focuses on upbringing constexpr maps for handlers.

Each time an HLE object of a service is construed, it registers it's own handlers, over and over.
Regardless of whetever it needs them at the moment or not.
Additionally we don't require to keep track of different function pointers amongst each object.
This can be done by overriding the given function instead, as opposed to having a separate
hash map for every given object.

In other words: Remove handlers (and handlers_tipc) map for every instance
then read from a static defined per-class.

- [x] Migrate all HLE functions to new `frozen::map` constexpr time finder
- [ ] Measure if this approach actually makes better codegen

Optional:
- [x] Properly gate all functions (that have versions commented next to them)
- [x] Maybe store `HandlerFnP&lt;&gt;` and `const char*` separately, version gating can go in a different map as well

Information such as name can be used on debug builds, but doesn't particularly help on release as one can consult an external reference (or have an annotated IPC map)

Signed-off-by: lizzie &lt;lizzie@eden-emu.dev&gt;

- [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.

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

Co-authored-by: Maufeat &lt;sahyno1996@gmail.com&gt;
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4480
Reviewed-by: Maufeat &lt;sahyno1996@gmail.com&gt;
Reviewed-by: MaranBr &lt;maranbr@eden-emu.dev&gt;
</content>
</entry>
<entry>
<title>[npad,hid,am] npad WriteEmptyEntry fix, hid function 551 stub, and applet PopOutData rework (#4442)</title>
<updated>2026-09-18T21:49:17+00:00</updated>
<author>
<name>xbzk</name>
<email>xbzk@eden-emu.dev</email>
</author>
<published>2026-09-18T21:49:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=07f40d5cac635ff102aa6ce9c32572cc20d69959'/>
<id>urn:sha1:07f40d5cac635ff102aa6ce9c32572cc20d69959</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.

-------------------
This was intended to fix Dave the Diver issue, but we found a real silly hid bug, then a maybe broader applet issue:

By testing with John it was found out only the last controller connected worked, the others caused the game to freeze peacefully, no crashes, suggesting some loop or deadlock.

After seeking that lead, it was found that the freeze was caused by a malformed HID history entry when the controller applet removed P2.
Pressing P1 opens the controller applet, then Qt applet disconnects P2, which is expected.

Upon seeking callstack and hid sync path, it was found out that NPad::WriteEmptyEntry:
was using: ReadCurrentEntry().sampling_number + 1
instead of: ReadCurrentEntry().state.sampling_number + 1 (checked AtomicStorage in src\hid_core\resources\ring_lifo.h)
Fixing that fixed the freeze, but killed the sound!

Later handheld/docked was accidentally clicked and sound returned. Good lead.
Then i just had to corner which part of the toggle was causing the refresh and do something similar at the controller applet return routine (PopOutData in library_applet_accessor.cpp). This part seems harmless, but i'm not clearly sure about how proper it is, since it was like a transplant and test operation.

UPDATE:
To try Diablo 3 on my machine it was needed to stub HID function 551.

And to fix all abnormalies like multiple applet requests and crash the function PopOutData was reworked to ensurey idempotency among different applet focus conditions:

focus state changed: updates state and signals if needed
no state change, HLE application frontend: requests focus state changed notification
already pending change message: flag remains true and no duplicate pushed to queue entry

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4442
Reviewed-by: MaranBr &lt;maranbr@eden-emu.dev&gt;
Reviewed-by: lizzie &lt;lizzie@eden-emu.dev&gt;
</content>
</entry>
<entry>
<title>[core, hle, video_core, memory] Improve multi-process, display layers, dynamic shader cache and rework overlay (#4238)</title>
<updated>2026-08-28T23:04:02+00:00</updated>
<author>
<name>Maufeat</name>
<email>sahyno1996@gmail.com</email>
</author>
<published>2026-08-28T23:04:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=54cd5fb8ebf11b71c676b72a32811873caef20de'/>
<id>urn:sha1:54cd5fb8ebf11b71c676b72a32811873caef20de</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.

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

- Dynamic shader cache reloading capability for qlaunch
- Multi-process improvements (thanks to @frank1734), instead of just using the main application we now respect caller process (also did it for HID devices while I was at it)
- Layer stack masks &amp; shared buffer screenshot for video core, added different masks (screenshot, recording, etc.) this was discovered as an issue due to how in qlaunch the transition was not right between applications. May not be perfect but also fixes screenshots while using qlaunch
- Reworked overlay display management (input and visibility) - instead of random numbers as I've previously did, I decided to add an AppletZIndex enum for better readability. Also split capability of input by touch and gamepad.
- etc.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4238
Reviewed-by: Samuel &lt;lizzie@eden-emu.dev&gt;
Reviewed-by: CamilleLaVey &lt;camillelavey99@gmail.com&gt;
Reviewed-by: MaranBr &lt;maranbr@eden-emu.dev&gt;
</content>
</entry>
</feed>
