Elektrine lite

← Feed

@alice@mk.nyaa.place

Post #3434639

2025-10-02 02:23 UTC

A bit of controller refactoring: - It's now possible to enable/disable individual controls on per-player basis. This means, in particular, that NES pad and NES pad with mic are now the same controller, and DS can disable the swap screens buttons for the vertical mode. Famicom games now have a shortcut for using mic for player 2 - it's now possible to use multiple touch layouts with the same controller depending on the situation. This means that DS and Lynx both use a single controller now Ther are still a few messy places (e.g. Zapper including a full NES pad), but this takes care of some of the most annoying things, so the list of controllers is a lot cleaner now. Names are also messy, but this should be workable for now

Replies (1)

  • @alice@mk.nyaa.place 2025-10-11 03:24

    I fixed a few input mappings (there were a few typos from transferring them to keyfiles, and typos in this context means missing or nonexistent controls - not good) In particular, keyboard controls overlay doesn't crash when displaying DualShock controls now, and Lynx dpad actually works with all screen orientations. Next, N64. So, Mupen64plus is async, and it's a bit annoying in terms of video output. Its colorburst phase, interlaced field and overscan weren't always in sync with the current frame, so it was flickering more than other platforms, the game would resize back and forth when switching to interlaced or back, etc. This is now all fixed; specifically by making Mupen port's run_frame() implementation wait for swap_buffers(). This does not result in a performance hit; we're waiting in the runner process' main thread - which is mostly idling anyway, since all the heavy lifting happens in Mupen's own thread, and audio playback is in its own thread as well. So, it just works, with no performance hit. If anything, performance seems more consistent on my end, but it may just be the fact I rebooted recently, so I'm just going to assume it's same as before. So - dot crawl on composite NTSC video now blends together on 60hz screens like it should and like it already did on NES, SNES, PlayStation, Saturn and PC Engine, and interlaced video is consistent. it also means that the flicker when starting the game or loading a state is completely gone, and it's basically perfect now. Speaking of N64, I noticed I had a wrong buffer size for N64 in the TV filter, so it looked completely off, and in particular reacted to sharpness changed in an inconsistent way. Can't believe it was just this. So with this I was able to revert a few recent changes that were attempts to fix that, tho it also means a few accuracy changes are lost too. Anyway, N64 should look appropriately crunchy now with maximum sharpness, especially in dark areas. Meanwhile, 8bitdo 64 controller now has a mapping in SDL, so we now default to that and I slightly changed how we map it internally (swapped A and B buttnos), so now OOTB everything except the C buttons is mapped correctly for it. C buttons are not, but nothign I can do here - upstream maps them to the right stick, which makes sense, but in highscore it doesn't - we really need it to be 4 buttons to provide nice integration. Oh well.

    Open ##3434638