U-DESKTOP-SPFP6AQ\twistedtechre 6ffed08948 core: video pipeline - SW framebuffer, hoist invariants, drop NTSC memcpy
Rework retro_run_blit to:

* Try GET_CURRENT_SOFTWARE_FRAMEBUFFER for zero-copy. If the frontend
  hands us its own scanout buffer with a compatible pixel format, the
  blit writes the palette-LUT conversion directly into it instead of
  routing through fceu_video_out. Falls back to the existing buffer
  when the frontend declines or returns a mismatched format. The
  pixel format negotiated at retro_load_game is now cached in a file-
  scope active_pixformat for this validation.

* Drop the per-frame memcpy in the NTSC path. nes_ntsc_blit writes
  into ntsc_video_out with a wider stride (NES_NTSC_WIDTH includes
  right-margin padding); the previous code copied row-by-row into a
  tightly packed fceu_video_out before video_cb. The pitch parameter
  to video_cb already lets the frontend skip past padding per
  scanline, so the copy was redundant. Saves ~580 KB / frame at 32
  bpp - around 35 MB/s of memory traffic at 60 fps.

* Hoist loop-invariant decisions out of the per-pixel inner loop.
  GameInfo->type != GIT_NSF and use_raw_palette do not change mid-
  frame; emphasis (XDBuf) is uniform per scanline because the PPU
  writes one colour_emphasis byte to all 256 entries of dtarget at
  ppu.c:683-685. The deemphasis branch is now once per row instead
  of once per pixel.

* Replace fceu_video_out[y * width + x] indexing with a running
  out_row pointer (strength reduction).

* Remove the unused incr local.

Bit-exact verified against the baseline across 4 test ROMs (silent,
idle, active gameplay, all-channel max-volume stress) for non-NTSC,
SW-framebuffer-granted, and NTSC composite paths - 1200+ frames
total. Audio output also bit-identical.

Determinism audit pass over the video pipeline turned up no issues:
no rand/srand/time/clock/gettimeofday in any core path; PPU writes
to XBuf are scanline-deterministic; nes_ntsc_blit is stateless;
burst_phase initializes to zero and toggles deterministically; and
the existing FCEU_MemoryRand and rt-01 weakbits state machines from
earlier passes remain in place.
2026-05-04 07:16:54 +02:00
2024-09-23 05:55:21 -07:00
2023-01-02 19:47:36 +01:00
2026-04-02 10:14:04 +01:00
Fix
2017-12-21 20:40:28 +09:00
2014-12-23 09:50:29 +01:00
2015-08-06 13:28:43 +02:00
2025-09-03 16:20:50 +02:00
2019-06-28 23:44:06 +02:00

Build Status Build status

FCE Ultra mappers modified

FCEU "mappers modified" is an unofficial build of FCEU Ultra by CaH4e3, which supports a lot of new mappers including some obscure mappers such as one for unlicensed NES ROM's.

Sequential targets Light Guns support added

Support for Sequential targets Light Guns has been added. "Gun Aux A" serves as light sensor logic input.

Description
Pinned internal source mirror of libretro/libretro-fceumm for Supergame releases
Readme 4.3 MiB
Languages
C 97.7%
Python 2%
C++ 0.2%