❌

Lees weergave

March 16th, 2026, FFmpeg 8.1 "Hoare"

A new minor release, FFmpeg 8.1 "Hoare", is now available for download. Here are some of the highlights:

  • Decoders: xHE-AAC Mps212 (experimental) MPEG-H decoding via libmpeghdec
  • EXIF Metadata Parsing
  • LCEVC: support for parsing and forwarding metadata
  • Vulkan compute-based codecs: ProRes encoding and decoding, DPX decoding
  • D3D12: D3D12 H.264/AV1 encoding, scale_d3d12, mestimate_d3d12, deinterlace_d3d12 filters
  • Rockchip H.264/HEVC hardware encoding
  • IAMF: Projection mode Ambisonic Audio Elements muxing and demuxing
  • Formats: hxvs demuxer
  • Filters: drawvg, vpp_amf

This release features a lot of internal changes and bugfixes. The groundwork for the upcoming swscale rewrite is progressing. The Vulkan compute-based codecs, and a few filters, no longer depend on runtime GLSL compilation, which speeds up their initialization.

A companion post about the Vulkan Compute-based codec implementations has been published on the Khronos blog, featuring technical details on the implementations and future plans.

We recommend users, distributors, and system integrators to upgrade unless they use current git master.

  •  

Blog: v7.36.0 released

You can download it from GitHub.

This version adds image processing in linear color on the CPU (previously only Movit). Plus, it extends 10-bit video processing on the CPU to many more services.

Framework

  • Added mlt_image_default_colorspace()
  • Added mlt_image_default_trc()
  • Added mlt_image_default_primaries()
  • Added mlt_color_convert_trc()
  • Added the mlt_consumer property mlt_color_trc to drive a new color_transform normalizer filter. This sets the color transfer function to use for image/video effects. It is beneficial and correct to use linear color for any pixel mixing whether for blending or interpolation.
  • Removed atexit(mlt_factory_close) in mlt_factory_init(). Close the factory yourself if you feel the need to (not generally needed when exiting a process).
  • Prevent possible crash in mlt_service_connect_producer().
  • Added mlt_profile_is_valid() and Mlt::Profile::is_valid().
  • Fixed crash on invalid profile (CVE-2025-65834) in:
    • mlt_consumer_start()
    • mlt_factory_producer()
    • xml producer

Modules

  • Drop support for Qt 5.
  • Fixed bad color in luma transition’s dissolve (regression in v7.34.0).
  • Fixed HLG HDR broken in decklink consumer (regression in v7.34.0).
  • Fixed warnings when flushing audio in the avformat consumer.
  • Added support for hwaccel=vulkan to the avformat producer.
  • Added a color_transform normalizer filter to the core module to convert all image/video producers to and from linear color. It is abstract in the core module and drives the following filters:
    • avfilter.zscale
    • sws_colortransform
    • avfilter.scale
  • Added filter sws_colortransform that is more efficient than avfilter.swscale but requires FFmpeg 8.
  • Changed the default property values of the null consumer:
    • real_time: -1
    • terminate_on_pause: 1
  • Changed the luma and movit.luma transitions to progress linearly with linear color_trc.
  • Fixed the alpha channel dropped by the xml-clip producer.
  • Added mlt_image_rgba64 format to:
    • avcolor_space filter
    • avdeinterlace filter
    • affine filter and transition
    • audiolevelgraph filter
    • audiospectrum filter
    • audiowaveform filter
    • autofade filter
    • avformat producer and consumers
    • box_blur filter
    • brightness filter
    • pillar_echo filter
    • color producer
    • dropshadow filter
    • dynamictext filter (when used with qtext)
    • frei0r.alpha0ps filter
    • frei0r.alphagrad filter
    • frei0r.alphaspot filter
    • frei0r.bluescreen0r filter
    • frei0r.select0r filter
    • frei0r.transparency filter
    • gpsgraphic filter
    • gpstext filter
    • gradientmap filter
    • hslprimaries filter
    • hslrange filter
    • kdenlivetitle producer
    • lift_gamma_gain filter
    • lightshow filter
    • mask_apply (when used with qtblend)
    • movit.convert filter
    • outline filter
    • qtblend filter and transition
    • qtcrop filter
    • qtext producer
    • shape filter
    • spot_remover filter
    • strobe filter
    • subtitle filter (when used with qtext)
    • swscale filter
    • text filter (when used with qtext)
    • timeremap link
    • timer filter (when used with qtext)
    • vqm transition
  • Changed the mask_apply filter default transition to qtblend.
  • Removed the maximum for the alpha property on the brightness filter so that you can increase the opacity of an existing alpha channel.
  • Fixed background image scaling in the gpsgraphic filter.
  • Fix audio artifacts with pcm_s24le in mkv in avformat producer.

Other

  • Removed bitrate and quality limits in the vp9 and webm avformat presets.
  • Fixed melt on Windows not reading file path/name with extended characters (regression in v7.34.0).
  • Fixed building the ruby bindings with Ruby 3.0.
  • More fixes for MSVC.
  • Removed win32/strptime.c and replaced with Qt functions.
  • Stop showing melt usage on error exit.
  •  

Blog: v7.34.0 released

You can download it from GitHub.

This versions adds 10-bit video processing on the CPU, but you must ensure you are using compatible filters and transitions.

Framework

  • Added mlt_image_rgba64 format. This change touched core, avformat, and qt modules as well.
  • Added mlt_color_trc, mlt_color_primaries, and more mlt_colorspaces along with functions:
    • mlt_image_color_trc_name
    • mlt_image_color_trc_id
    • mlt_image_colorspace_name
    • mlt_image_colorspace_id
    • mlt_image_color_pri_name
    • mlt_image_color_pri_id
  • Fixed some minor memory leaks with cppcheck.

Modules

  • Added rgba and rgba64 formats to the luma transition.
  • Added rgba64 format to affine filter and transition.
  • Added rgba64 format to the qtblend transition.
  • Added support for FFmpeg 8 to the avformat module.
  • Fixed audio panner filter for 5.1 channel layout.
  • Fixed converting 10-bit full to limited range in avformat producer (regression in v7.30.0).
  • Fixed shadow not working for multi-line template titles in kdenlivetitle producer.
  • Fixed mask_apply filter with custom transition.
  • Added input_chmask & output_chmask properties to mono filter.
  • Added channel_mask property to LADSPA/LV2/VST2 filters.
  • Added channel_mask to the volume filter.
  • Added an outline video filter.
  • Fixed a deadlock on image with a % in the name in qimage producer.
  • Added scrubbing to the decklink consumer.
  • Fixed & not decoded to & in the xml producer.
  • Fixed converting BT.709 to BT.2020 in the avformat module.
  • Fixed building a ladspa module without JACK as dependency.
  • Deprecate a JACK Rack XML file in the jackrack and ladspa modules.
  • Added filter qtblend_mode.
  • Fixed incorrect alpha channel breaking optimization of qtblend.
  • Fixed pixel format gbrap (Ut Video with alpha channel) in the avformat producer.
  • Fixed opencv_tracker filter on cut playlist clips.
  • Fixed warning about missing color range for avfilters that use it (e.g. avfilter.colorspace).
  • Added typewriter properties to the qtext filter.
  • Fixed color distortion or a crash if using hwaccel with orientation rotation in avformat producer.

Other

  • Enable Qt 6 and disable Qt 5 modules in CMake by default.
  • Disable the SDL1 module in CMake by default.
  • Changed melt now exits with 1 if the producer is invalid.
  • Various changes to work with MSVC compiler.
  • Changed SVT-AV1 encode presets to VBR for Opus audio.
  • Fixed initializing Qt on the main thread in melt.
  • Documented the -progress2 option for melt.
  • Increased the minimum C++ version to C++20.
  • Converted many modules to use CMake find_package().
  • Added libgen.c and libgen.h for MSVC.
  •  

Blog: v7.32.0 released

You can download it from GitHub.

Framework

  • Added mlt_service_set_consumer() and `Mlt::Service::set_consumer().
  • Optimized mlt_multitrack to not request a frame from a producer that is both hidden and muted.

Modules

  • Fixed pixel format for VP8/VP9 streams in avformat producer.
  • Fixed yuva422p pixel format in avformat producer.
  • Added MLT_AVFORMAT_HWACCEL & MLT_AVFORMAT_HWACCEL_DEVICE environment variables to avformat producer.
  • Updated decklink module for recent hardware and drivers.
  • Added colorspace and color_trc (including HDR) properties to the decklink consumer.
  • Fixed silencing extra audio channel (e.g. 6 => 8) in decklink consumer.
  • Fixed 5.1 C/LFE channels swapped over HDMI in decklink consumer.
  • Fixed text outline had sharp angles in kdenlivetitle producer.
  • Fixed default gamma to be Rec. 709 for 10-bit Y’CbCr from movit module.
  • Added support for HLG gamma to movit module (requires ddennedy/movit fork).
  • Fixed opencv_tracker filter should require multiple keyframes to be ready.
  • Fixed OpenCV crash on rect <= 1 pixel in opencv_tracker filter.
  • Fixed aspect ratio in qtblend filter and transition.
  • Fixed QT_QPA_PLATFORM=offscreen not working in qt and glaxnimate modules.
  • Improved preview scaling in qtblend filter.
  • Fixed requesting huge images on multiple qtblend filters or transitions.
  • Fixed sdl2 consumer on macOS.
  • Fixed the strobe filter not working with movit.
  • Fixed color and gamma using timeremap link with movit.
  • Fixed consumer properties (e.g. channels) missing on qglsl consumer injected by the xml producer.
  •  

Blog: v7.30.0 released

You can download it from GitHub.

Framework

  • Fixed Mlt::Producer::set_creation_time() not exported on i686.
  • Fixed Mlt::Properties::set(int64_t) symbol version.
  • Fixed mlt_factory_init() on Linux/BSD may fail to initialize when compiled with -DRELOCATABLE.
  • Added generic non-drop-frame timecode in mlt_property.c. Previously, it was only done for 30000/1001 and 60000/1001 frame rates, but 24000/1001 is especially important as well.
  • Added support for MLT XML embedded in chains. This, along with xml-clip producer handles mismatching frame rate between parent and child producers and facilites time-affecting links on the child.
  • Added mlt_image_full_range(const char *color_range) where any of the following strings return true (1): full, jpeg, pc.

Modules

  • Added xml-clip producer.
  • Fixed link in and out properties arenot serialized in the xml consumer.
  • Added hslprimaries and hslrange filters to the plus module.
  • Added a gradientmap filter to the plus module.
  • Fixed avfilter audio filters with FFmpeg 7.
  • Fixed incorrect frame rate for AVCHD (and possibly others) in avformat.
  • Fixed window_id property in consumer sdl2 by using SDL_CreateWindowFrom(), especially important for embedding in GTK+ or Qt.
  • Fixed text not rendering in transition vqm since Qt 6.
  • Added decimals keyword to gpstext filter and move RAW keyword check.
  • Fixed time_offset property handling in gpstext filter.
  • Fixed reading and writing SRT files with unicode in the path.
  • Fixed subtitle_feed filter on producers with an in point > 0.
  • Fixed opaque alpha channels become translucent in luma transition.
  • Fixed a crash in the mix transition with consumer producer.
  • Fixed freeze filter freezing too much.
  • Fixed avfilter.fillborders with preview scaling.
  • Fixed non-proportional scaling in qtblend transition and filter.
  • Fixed avfilter color distortion with mlt_image_rgb and mlt_image_rgba.
  • Extended support for colorspace=2020 consumer property and the BT.2020 colorspace in the avformat producer and consumer. This does not imply HDR, which is signaled through a color_trc property.
  • Added support for mlt_image_yuv420p10, mlt_image_yuv444p10, and mlt_image_yuv422p16 in avfilter, swscale, and rescale filters. This facilitates using these pixel formats end-to-end when using only FFmpeg producers, certain avfilters, and avformat consumer. This means it is possible to do 10-bit end-to-end on the CPU when being careful to select compatible components and options to avoid conversions. One can pass-through HDR; however, you must set the color_trc and pix_fmt properties on the avformat consumer (see ffmpeg -h full for these values). The avformat consumer automatically converts MLT colorspace (integer value) to FFmpeg’s colorspace and color_primaries (unless explicit) options.

Other

  • Cleaned up the examples in src/swig.
  • Changed the x264-medium preset to a higher quality.
  •  

Blog: v7.28.0 released

You can download it from GitHub.

This fixes a couple of major regressions in the previous version 7.26.0:

  • Fixed seeking and frozen video due by reverting β€œImproved performance with intra-only video and reducing the frame rate.”
  • Fixed using melt to render MLT XML with OpenGL effects from movit.

Other fixes and changes:

  • Deprecated the composite transition and the sdl and ndi modules.
  • Fixed Android camera video has the wrong frame rate (broken in v7.26.0).
  • Fixed audio not playing for audio-only DTS WMA.
  • Fixed using β€œhttps:” URLs in the xml producer.
  • Fixed crash on exit when running melt -query or melt -query links.
  • Added a transition property to the watermark filter. Now, it defaults to using affine.
  • Changed affine transition argument to set rect property if supplied.
  •  

Blog: v7.26.0 released

You can download it from GitHub.

This release adds support for subtitles and LV2 & VST2 audio plugins.

Framework

  • Fixed a double-free crash in Mlt::Service::profile().

Modules

  • Fixes and improvements to the avformat producer:
    • Changed to prefer r_frame_rate over avg_frame_rate.
    • Fixed lowres if set too high.
    • Fixed audio_index=all.
    • Fixed variable_frame_rate incorrectly set true on 59.94 fps in Matroska.
    • Improved performance with intra-only video and reducing the frame rate.
    • Fixed mono audio handling regression on FFmpeg 7.
    • Fixed audio samples may be dropped unexpectly esp. with uncompressed.
  • Fixed movit transitions with a non-movit filter on one of its inputs.
  • Fixed duration in the glaxnimate producer off by one frame.
  • Added dropshadow filter to the qt module.
  • Fixed resetting animation in kdenlivetitle producer.
  • Added support for LV2 and VST2 plugins in the jackrack module.
  • Fixed crash using av.declick audio filter on FFmpeg 7.
  • Added subtitle filter and producer and subtitle_feed filter to the plus module.
  • Added subtitle encoding to the avformat consumer (new properties beginning with β€œsubtitle.”).
  • Fixed alang in the the avformat consumer.
  • Added #gps_power keyword to the gpstext filter.
  • Fixed tab handling in the kdenlivetitle producer.

Other

  • Added 8- and 10-bit encode presets for SVT-AV1.
  • Fixed building on OpenBSD.
  • Fixed building on musl libc.
  • Fixed consumer properties not updating the automatic profile on the melt command line.
  • Added -loglevel command line option to melt.
  •  

Blog: v7.24.0 released

You can download it from GitHub.

The highlight of this release is support for FFmpeg 7 and Ambsonic audio.

Framework

  • Fixed a small memory leak in mlt_repository.
  • Fixed a small memory leak in MltPushConsumer C++ class.
  • Block connecting a null producer to a service.
  • Include locale.h on any GNU libc platform.

Modules

  • Added a new spatialaudio module with filters:
    • ambisonic-decoder
    • ambisonic-encoder
  • Fixed building with FFmpeg 7.
  • Fixed text keywords do not work with non-ASCII filenames on Windows:
    • pixbuf producer
    • opencv_tracker filter
    • dynamictext filter
    • qimage producer
  • Added β€œmeta.media.aspect_ratio” property to the avformat producer.
  • Fixed distort property not working in movit.rect filter.
  • Fixed frames dropping or repeating in the multi consumer.
  • Fixed the dynamic_loudness filter maximizing audio gain.
  • Fixed distortion in the mono filter.
  • Also check for WAYLAND_DISPLAY to detect a graphical session in the qt and glaxnimate modules.
  • Fixed the wave filter distorts if wave = 1 with preview scaling.
  • Added the read-only meta.media.%u.codec.layout property to avformat producer.
  • Set the channel_layout property on the frame for the noise and tone audio producers.
  • Fixed outline maximum for the text and dynamictext filters.

Other

  • Fixed crash when using -chain from melt.
  • Fixed a small memory leak on Windows fopen().
  •  

Blog: v7.22.0 released

You can download it from GitHub.

The highlight of this release is support animation easing functions via new keyframe types. Also, new versions of the smooth keyframe type is added that avoids overshoots and cusps.

Framework

  • Added new functions:
    • mlt_property_is_color()
    • mlt_property_is_numeric()
    • mlt_property_is_rect()
  • Many new keyframe types:
    • mlt_keyframe_smooth_loose - ~= (same as old mlt_keyframe_smooth - Unity Catmull-Rom spline)
    • mlt_keyframe_smooth_natural - $= (Centripetal Catmull-Rom spline with natural slope)
    • mlt_keyframe_smooth_tight - -= (Centripetal Catmull-Rom spline with 0 slope)
    • mlt_keyframe_sinusoidal_in - a=
    • mlt_keyframe_sinusoidal_out - b=
    • mlt_keyframe_sinusoidal_in_out - c=
    • mlt_keyframe_quadratic_in - d=
    • mlt_keyframe_quadratic_out - e=
    • mlt_keyframe_quadratic_in_out - f=
    • mlt_keyframe_cubic_in - g=
    • mlt_keyframe_cubic_out - h=
    • mlt_keyframe_cubic_in_out - i=
    • mlt_keyframe_quartic_in - j=
    • mlt_keyframe_quartic_out - k=
    • mlt_keyframe_quartic_in_out - l=
    • mlt_keyframe_quintic_in - m=
    • mlt_keyframe_quintic_out - n=
    • mlt_keyframe_quintic_in_out - o=
    • mlt_keyframe_exponential_in - p=
    • mlt_keyframe_exponential_out - q=
    • mlt_keyframe_exponential_in_out - r=
    • mlt_keyframe_circular_in - s=
    • mlt_keyframe_circular_out - t=
    • mlt_keyframe_circular_in_out - u=
    • mlt_keyframe_back_in - v=
    • mlt_keyframe_back_out - w=
    • mlt_keyframe_back_in_out - x=
    • mlt_keyframe_elastic_in - y=
    • mlt_keyframe_elastic_out - z=
    • mlt_keyframe_elastic_in_out - A=
    • mlt_keyframe_bounce_in - B=
    • mlt_keyframe_bounce_out - C=
    • mlt_keyframe_bounce_in_out - D=
  • Fixed missing support for mlt_service_transition in Mlt::Producer() C++ constructor.

Modules

  • Fixed rotoscoping filter crash on image with height = 0.
  • Fixed crashed due to qtblend transition requesting an image of 0 width or height.
  • Added support for RtAudio 6 in the rtaudio consumer.
  • Fixed createdate keyword deletes preceeding text in dynamictext filter.
  • Added opacity property to filters that use qtext:
    • dynamictext
    • gpstext
    • qtext
    • timer
  • Added fade_video, fade_audio, and fade_color properties to autofade filter.
  • Added backwards compatibility for changed filter names in frei0r v2.3.1:
    • frei0r.measure_pr0be
    • frei0r.measure_pr0file
    • frei0r.tehroxx0r
    • frei0r.alpha0ps_alpha0ps
    • frei0r.alpha0ps_alphagrad
    • frei0r.alpha0ps_alphaspot
    • frei0r.denoise_hqdn3d
  • Fixed a memory leak in avformat producer with consumer deinterlacer=yadif.
  • Fixed qimage producer color if consumer color_range=pc pix_fmt=yuv444p.

Other

  • Fixed ten_bit/ProRes 422 avformat preset produced ProRes 444.
  • Fixed YouTube avformat preset did not output high profile with some hardware encoders.
  •  

Blog: v7.20.0 released

You can download it from GitHub.

Framework

  • Fixed β€œblank” in a playlist does not have audio normalization filters.
  • Fixed serializing mlt_color transparent black as β€œ#00000000” when the property was set using an integer or mlt_color.
  • Fixed mlt_chain_set_source() would always fetch a frame from the producer even if it has β€œmeta.media.frame_rate_num” and β€œmeta.media.frame_rate_den” properties making things slow.
  • Fixed Mlt::Chain leaking memory.

Modules

  • Added a blank producer to the core module.
  • Added keywords to gpstext filter:
    • #gps_cadence#
    • #gps_grade_degrees#
    • #gps_grade_percentage#
    • #gps_temperature#
  • Added some color_styles to the gpsgraphic filter:
    • 10 = color by speed (max 100 km/h)
    • 11 = color by grade (max 90 degrees)
    • 12 = color by grade (max 20 degrees)
  • Added more unit formats to legend_unit property of gpsgraphic filter:
    • mmin or m/min
    • ftmin or ft/min
  • Added keywords to dynamictext filter:
    • #basename#
    • #filename#
  • Fixed installing filter_audioseam.yml.
  • Added an avlink link to the avformat module for FFmpeg filters that can benefit from future frames such as adeclick.
  • Added the preserve_alpha property to the box_blur filter.
  • Fixed loading service metadata for the qt6 and glaxnimate-qt6 modules.
  • Fixed a crash when changing the rotate property in avformat producer with interlace video.
  • Add astream and vstream properties to avformat producer. Unlike audio_index and video_index are absolute indices across the entire array of streams regardless their type, these new 0-based properties are relative to the type audio or video. For example, astream=1 is the second audio stream.
  • Fixed a possible crash in the avformat producer’s mlt_producer_probe virtual function.
  • Updated the glaxnimate module to version 0.5.4.
  • Fixed the sdl2 consumer crashing with the Linux radeonsi_dri driver and showing only all black with the Linux nvidia driver.

Other

  • Fix compiling on Android (not supported by the core developers).
  • Changed the avformat consumer FLAC preset to use the flac format.
  • Fixed the melt Shift+H and Shift+L keyboard shortcuts when the SDL2 window has focus.
  •  

Blog: v7.18.0 released

You can download it from GitHub.

Framework

  • Added mlt_audio_free_data().
  • Added meta.playlist.clip_position and meta.playlist.clip_length properties to mlt_playlist.
  • Fixed mlt_frame_get_audio fails on mlt_audio_none.

Modules

  • Added two audio filters to core module to be used on a playlist/track:
    • audioseam
    • autofade
  • Fixed a crash in vidstab filter on image format change.
  • Fixed font weight in qtext filter on Qt 6.
  • Fixed yuv420p not working in rescale filter.
  • Fixed text shadow outline in kdenlivetitle producer.
  • Fixed crash when changing the profile with count producer.
  • Fixed constructor corruption in frei0r module.
  • Fixed deinterlace link was added to invalid producer in xml producer.
  • Fixed producers not indicating progressive scan video:
    • kdenlivetitle
    • pango
    • qimage
    • qtext
  • Fixed video scan mode detection in avformat producers that only indicate on their container format and not on frames such as Ut Video in Matroska.
  • Fixed very large images in qimage producer on Qt 6.
  • Fixed seeking on clips that use speed_map in timeremap link.
  • Fixed a color level problem with sRGB inputs in the movit module.
  • Fixed avformat producer’s deallocation function for AVCodecContext.
  • Fixed field order of qtblend and frei0r.cairoblend transitions.
  • Changed the avformat producer seek_threshold default to 64.
  • Updated ebur128 filter to version 1.2.6.
  •  

3.0.1

CSMWrap Version 3.0.1

Changelog since CSMWrap 3.0.0

Bug Fixes

  • ap_trampoline: Skip APIC disable when x2APIC is active, preventing #GP on systems with locked x2APIC (e.g. Nova Lake xAPIC deprecation).
  • apic: Clear stale vector bits when configuring LINT0/LINT1 for ExtINT/NMI.
  • mptable: Read LAPIC address and version from MSR instead of MADT, fixing x2APIC mode where MMIO LAPIC reads don't work.
  • video: Backport GOP quirks and fixes from Limine - reject PixelBltOnly/unknown pixel formats, validate all-zero PixelBitMask, check PixelsPerScanLine, and calculate correct BPP for non-32bpp PixelBitMask modes.

SeaBIOS

  • mptable: Use x2APIC MSR for APIC version read when in x2APIC mode.

Full Changelog: 3.0.0...3.0.1

  •  

3.0.0

CSMWrap Version 3.0.0

Changelog since CSMWrap 2.1.0

New Features

  • INI configuration file support - CSMWrap now reads an optional csmwrap.ini placed alongside the EFI executable. See README.md for available options.
  • Runtime-configurable serial output - Serial debug is now controlled via the config file instead of a compile-time flag.
  • VGA device selection - A non-primary video card can be selected by PCI address for multi-GPU setups.
  • Verbose mode - Screen output is suppressed by default; banner and panics always shown.

Bug Fixes

  • Fix framebuffer address double-adjustment during BAR relocation - A PCI bridge's prefetchable and non-prefetchable windows could alias after relocation, causing the framebuffer address to be adjusted twice to a wrong address.
  • Fix BIOS proxy helper ready signal race (SeaBIOS) - The helper core now signals ready only after its first mailbox check, eliminating a startup race condition.

Other Changes

  • README.md updated with clearer instructions and new FAQ entries and more.

Full Changelog: 2.1.0...3.0.0

  •  

2.1.0

CSMWrap Version 2.1.0

Changelog since CSMWrap 2.0.0

Bug Fixes

  • Fix heap buffer overflow in uacpi_kernel_io_map() bounds tracking
  • Fix find_table buffer overread and add VBIOS size bounds check
  • Fix SMBIOS 2.1 entry point checksum covering wrong range
  • Fix printf format specifier for EFI_PHYSICAL_ADDRESS on ia32
  • Fix off-by-one page count in thunk data allocation
  • Fix BAR type check to match exactly type 2 (64-bit) instead of any bit-2-set value
  • Fix division by zero in get_nanoseconds_since_boot for sub-1GHz TSC
  • Fix get_nanoseconds_since_boot() intermediate overflow
  • Fix uACPI-to-MADT interrupt flag conversion for PCI link device routing
  • Fix ExitBootServices retry to re-call GetMemoryMap to avoid stale map key
  • Guard vbios_loc memcpy against NULL
  • Guard __builtin_ffs against zero PixelBitMask to avoid bogus mask position
  • Reject extended config space offsets in PIO fallback
  • Use -1ULL for EfiAcpiAddressRangeHole to ensure consistent width on ia32
  • Widen get_unix_epoch nanosecond parameter to uint32_t to match EFI_TIME
  • Re-hide P2SB before early return on ia32 BARH overflow

New Features & Enhancements

  • Add TSC calibration, delay functions, and CPUID-based frequency detection (time.c/h)
  • Use TSC-based timing for uACPI instead of low-resolution RTC
  • Add RDNA 4 (Navi 48/44, 0x75xx) to AMD discrete GPU detection
  • Add Lunar Lake (model 0xBD) PIT clock gating workaround
  • Initialize CMOS memory registers for legacy software compatibility
  • Add panic() function
  • Add bounds check for PCI interrupt routing entries
  • Warn when pci_early_initialize fails
  • Check acpi_init() return value

IOMMU

  • Disable VT-d interrupt remapping and queued invalidation
  • Add pause instruction to VT-d polling loops
  • Remove VT-d polling timeout and unnecessary AMD-Vi polling

Legacy Handoff

  • Zero CR3, TR, and GDTR before legacy handoff
  • Mask stale LVT entries before legacy handoff
  • Send second SIPI per Intel MP spec INIT-SIPI-SIPI sequence
  • Hardware-disable helper core LAPIC to prevent stale IPIs from legacy OS
  • Remove all MADT entries for helper core (both LAPIC and x2APIC)
  • Limit helper core selection to xAPIC-addressable APIC IDs (<255)
  • Allocate helper stack as RuntimeServicesData to prevent OS reuse
  • Align helper signature to 8 bytes and use aligned 64-bit scan
  • Move mailbox out of EBDA
  • Invalidate ConOut after ExitBootServices to prevent stale access

Dependencies

  • Update uACPI from 3.2.0 to 4.0.0
  • Update SeaBIOS submodule

Code Quality

  • Convert CRLF line endings to LF
  • Replace VLA swap buffer in qsort with fixed-size chunked copy
  • Use uintptr_t comparison in memmove to avoid relational pointer UB
  • Cache CLFLUSH CPUID check to avoid repeated serializing instruction
  • Drop CPUID 0x16 TSC frequency fallback
  • Round up delay_us() tick count for sub-MHz timer frequencies
  • Check add_bar return value for bridge window BARs
  • Remove dead type==0 check in e820 (convert_memory_type never returns 0)
  • Remove unused AssignedDriveNumber (SeaBIOS uses BootPriority only)
  • Fix misleading PAM0 comments
  • Remove double semicolon in PCI code

Full Changelog: 2.0.0...2.1.0

  •  

2.0.0

CSMWrap Version 2.0.0

Major New Features

  • PCI BAR Relocation - Automatically relocate PCI BARs from >4GB to <4GB, eliminating the need to disable "Above 4G Decoding" in UEFI settings.
  • PCIe Resizable BAR Support - Shrink large BARs (e.g., 4GB GPU VRAM) to 256MB using PCIe ReBAR capability, eliminating the need to disable "Resizable Bar/Smart Access Memory" in UEFI settings.
  • BIOS Proxy Helper Core - Dedicate an AP for BIOS calls from the BSP. This allows usage of CSMWrap with legacy OSes calling BIOS routines from Virtual 8086 Mode and other improvements.
  • MP Table Generation - Generate Intel MPS 1.4 tables from ACPI MADT for legacy OSes that don't support ACPI.
  • SMBIOS 3.0 β†’ 2.x Synthesis - Generate SMBIOS 2.x entry point when only 3.0 is available.
  • Boot Device Detection - Auto-detect boot drive and build BBS table with correct priority.

Platform Support

  • IOMMU Disable - Automatically disable Intel VT-d and AMD-Vi before legacy OS handoff.
  • x2APIC Handling - Transition to xAPIC mode if possible or configure ExtINT passthrough for PIC interrupts.
  • Intel PIT Workaround - Fix timer interrupts on Arrow Lake, Meteor Lake, Panther Lake.
  • AMD RDNA+ Detection - Force SeaVGABIOS for RDNA/RDNA2/RDNA3 GPUs with broken legacy OpROMs.

Video

  • Flanterm Integration - Faster, better video output via Flanterm library.
  • GOP Modesetting Fixes - Handle Intel iGPU where default mode has FrameBufferBase=0.
  • VGA Arbitration - Only claim VGA routing when using OpROM path.

Many other minor fixes and improvements!

Full Changelog: 1.3.0...2.0.0

  •  

1.3.0

Many bug fixes and improvements, and reapplication of (fixed versions of) previously reverted commits.

Add support for loading a custom VGA Video BIOS from \EFI\CSMWrap\vgabios.bin, if present.

Merged pull requests

New Contributors

  • @Gelip made their first contribution in #92

Full Changelog: 1.2.3...1.3.0

  •  

1.2.3

This is a follow-up to fix regression introduced in previous release (#87).

What's Changed

  • Remove a potentially unnecessary statement that increments pmm_base by LOW_STACK_SIZE by @Mintsuki in #84

Full Changelog: 1.2.2...1.2.3

  •  

1.2.2

New wiki site

Thanks to @FarelRA and other contributors, we now have a comprehensive documentation collection on our GitHub wiki!

What's Changed

New Contributors

Full Changelog: 1.2.1...1.2.2

  •  

1.1.0

Implement VGA Arbitration mechanism.

  •  

DDrawCompat v0.7.1

General changes:

  • Fixed a potential crash when clearing helper surfaces (#530)
  • Fixed a regression in v0.7.0 causing corrupted mipmaps on NVIDIA GPUs (#530)
  • Fixed a deadlock in Lunar: Silver Star Story on Windows 7 (#531)
  • Fixed several issues with depth buffer CPU access (#489, #529, #534, #542)
  • Games that use depth buffer CPU access now support antialiasing on all GPUs (#160, #524)
  • Fixed a bug related to shader constants that could cause various display glitches on AMD GPUs
  • Fixed the gamma ramp resetting to default after alt-tabbing in some cases (e.g. in Revenant)
  • Points and lines rendered by Direct3D now preserve their relative thickness when using resolution scaling (currently not supported with hardware vertex processing (T&L) or video memory vertex buffers) (#339)
  • Fixed a potential crash when using ResolutionScaleFilter=bilinear
  • Improved support for resolution scaling (#542)
  • Fixed fog of war not updating in Star Trek: Armada when using ColorKeyMethod=alphatest
  • Fixed a potential crash on startup when libretro common-shaders are available (e.g. in Delta Force 2)
  • Fixed stuttering cursor in Half-Life WON 1.0.1.6 menus
  • Fixed a crash when playing movies on some Intel GPUs in Populous: The Beginning
  • Fixed alt-tab issues in Commandos: BEL demo (#544)

Updated configuration settings:

  • CapsPatches: added &=~ operator and fixed the broken = operator
  • CompatFixes: added forcevidmem, nodepthblt, nodepthlock and singlemonitor options
  • SupportedDepthFormats: removed the 15-bit depth options

  •  

DDrawCompat v0.7.0

General changes:

  • Fixed texture transparency issues with the ColorKeyMethod=alphatest setting in House of the Dead 2 (#447)
  • Fixed a crash in Moto Racer 2 (#452)
  • Fixed a deadlock when exiting Flower Story (#454)
  • Fixed a crash related to DXTn texture formats (#383)
  • Fixed palette issues in Armed & Delirious (#402)
  • Fixed palette issues with device-dependent bitmaps (#404)
  • Fixed some rendering issues in Final Racing: CyberSpace 2001 (#271)
  • Fixed blank textures in Desperados: Be Quick or Be Dead (#527)
  • Fixed a crash with the ColorKeyMethod=alphatest setting in The Legacy of Rosemond Hill
  • Fixed texture filtering for sprites when enabling the SpriteDetection setting
  • Fixed window screenshots (Alt+Prtscn) in scaled fullscreen mode (#480)
  • Fixed Steam screenshot/recording issues on some drivers (#480)
  • Fixed a performance regression in Hostile Waters: Antaeus Rising (#485)
  • Fixed a deadlock in Revenant (#489)
  • Fixed fullscreen mode not working on non-primary monitors (#501)
  • Fixed black window content when starting Recoil (issue #486)
  • Fixed gamma issues in Thief Gold (#503)
  • Fixed graphical artifacts in Hostile Waters: Antaeus Rising (#485) and Jane's F-15 (#449)
  • Fixed the FpsLimiter setting not working with the SetDIBitsToDevice function (#506)
  • Fixed potential thread safety issues when changing configuration settings through the overlay
  • Added a workaround for missing Indeo video codecs on recent Windows 11 versions (#508)
  • Fixed temporary dialog window glitches in Lego Loco (#179)
  • Fixed Z-fighting with the Discord overlay
  • Fixed glitchy menu bar in Daytona USA (#471)
  • Fixed graphical artifacts in Warhammer: Dark Omen (#514)
  • Fixed incorrectly rendered buttons in A-10 Cuba! (#479)
  • Fixed dialog windows opening off-screen in scaled fullscreen mode (#519)
  • Fixed AltTabFix=noactivateapp not restoring properly when popup windows are open (#519)
  • Fixed combo box dropdown lists extending beyond the bottom of the screen in scaled fullscreen mode (#519)
  • Fixed a crash in Dukes of Hazzard: Racing for Home (#520)
  • Fixed rendering issues on very old Intel GPUs (#463)
  • Reduced flickering of desktop image during display mode changes in fullscreen mode
  • Fixed screen freezing in The Sims on some Intel GPUs (#523)
  • Disabled CPU access to multisampled depth buffers on RDNA drivers due to crashes (#524)
  • Fixed the DesktopResolution setting not applying early enough for Lego Loco (#179)
  • Fixed incorrect cursor image in some games after alt-tabbing (e.g. Beach Life, Red Alert 2)
  • Fixed various rendering issues affecting modern Intel GPU drivers (igd9trinity32.dll)

Updated configuration settings:

  • DisplayAspectRatio: can now be changed via the configuration overlay
  • DisplayFilter: added integer option; added support for the libretro common-shaders library (check the wiki for further information)
  • SurfacePatches: now also applies to system memory surfaces and allows specifying a percentage between 1 and 1000 (#446)

New configuration settings:

  • GdiInterops

  •  

DDrawCompat v0.6.0

General changes:

  • Fixed incorrect surface pitch for DXTn system memory textures, which was causing graphics artifacts in Europa 1400 on Intel GPUs (#348)
  • Disabled vertex buffer optimizations, which was causing graphics artifacts or crashes in Competitions at Rosemond Hill (#354)
  • Fixed palette issues causing incorrect colors in Star Wars: Rebellion (#379)
  • Fixed some graphics artifacts with palettized textures in Metro-Police (#373)
  • Fixed a crash during initialization on Windows Vista
  • Fixed a crash in Braveheart (#399)
  • Fixed raw mouse input not getting blocked while the configuration overlay is open
  • Fixed blank videos in some games using QuickTime 7 (#273)
  • Fixed Direct3D hardware accelerated mode in Jane's F-15 (#178)
  • Fixed red screen flash effect when getting hit in Shogo M.A.D. (#246)
  • Fixed menu issues in Worms Armageddon (#370)
  • Fixed incorrectly rendered shadows in Superbike 2001 (#385)
  • Fixed video playback issues in Heavy Gear (#392)
  • Fixed blank loading screen in Heavy Gear 2 when in-game color depth is set to 32 bits (#398)
  • Fixed the configuration overlay's Reset/Import/Export buttons not applying to settings outside the current view
  • Fixed a bug in the runtime's handling of point primitives in execute buffers, which was causing crashes in Terracide (#433)
  • Gamma ramps are now also emulated in exclusive fullscreen mode, to work around missing native support on NVIDIA drivers
  • Fixed the configuration/stats overlays sometimes automatically hiding when they shouldn't
  • Fixed lower than expected presentation rate when using variable refresh rate technologies
  • Fixed Jane's F-15 sometimes switching to windowed mode in the menus
  • Fixed ResolutionScale and RenderColorDepth settings sometimes not applying to some frames
  • Added an experimental workaround for freezes on Windows 11 24H2 when using NVIDIA GPUs with single processor affinity (#387)
  • Fixed various stability issues (crashes and deadlocks)
  • Mouse sensitivity has been changed to be consistent with the desktop by default, use the new MouseSensitivity setting if experiencing problems (the native option reverts to the previous behavior)

Updated configuration settings:

  • AlternatePixelCenter: added custom option (#429)
  • AltTabFix: fixed some issues with the noactivateapp option (#364)
  • ColorKeyMethod: removed auto option, default value changed to alphatest(1)
  • CpuAffinity: no longer applies to DDrawCompat's own threads and some safe system threads
  • DesktopResolution: added initial option
  • FpsLimiter: the flipstart and flipend options now also apply when presenting via fullscreen copy (blit)
  • FullscreenMode: added VSync parameter to the exclusive option
  • SpriteDetection: now tests all triangles in a batch instead of just the first one (#427)
  • TextureFilter: fixed interworking with mipmaps (#364)

New configuration settings:

  • CapsPatches
  • CompatFixes
  • EnableDDrawCompat
  • MousePollingRate
  • MouseSensitivity
  • PresentDelay
  • SpriteAltPixelCenter
  • SupportedDevices
  • SupportedRefreshRates

Removed configuration settings:

  • AlignSysMemSurfaces: use CompatFixes=unalignedsurfaces instead of AlignSysMemSurfaces=off
  • GdiStretchBltMode: use CompatFixes=nohalftone instead of GdiStretchBltMode=coloroncolor
  • RemoveBorders: use CompatFixes=nowindowborders instead of RemoveBorders=on

  •  

DDrawCompat v0.5.3

General changes:

  • Fixed blocking of the ForceDirectDrawEmulation shim (#280)
  • Fixed a crash on some old Intel drivers (#299, #302, #315)
  • Fixed windowed mode presentation (#298, #308, #312, #314)
  • Fixed dialog boxes not appearing in Lego Loco (#179)
  • Added missing check for invalid color depth during display mode change (#303)
  • Fixed resolution scaling with D24S8 depth format when S8D24 is not supported (#300)
  • Fixed some flickering GUI elements in Sacred Gold
  • Fixed video playback on systems that have the VMR-9 DirectShow filter enabled (#299)
  • Fixed launcher window turning black in Wild Wild West: The Steel Assassin (#306)
  • Fixed rendering issues in Ultima IX when the game's MultiPassChromakey setting is set to 1 or 2
  • Fixed a race condition that could cause a crash when installing hooks (#306)
  • Fixed AltTabFix=keepvidmem(1) not keeping the back buffers of the primary surface chain (#316)
  • Removed dependency on the Windows debugger engine (dbgeng.dll) (#318)
  • Fixed blank config/stats overlays on AMD Radeon RX 7xxx GPUs (#325)
  • Improved the fix for inaccurate cursor clipping in DPI unaware mode (#319)
  • Fixed missing ground textures in Carnivores on some GPUs (#320)
  • Fixed stuttering fullscreen presentation in some cases (#298)
  • Fixed a window clipping issue when moving dialog boxes in Close Combat 4
  • Fixed a performance issue with windowed fullscreen GDI presentation on some systems (#273)
  • Fixed oversized dialog windows (except non-client area) in some fullscreen games in DPI aware mode
  • Fixed mispositioned trackbar sliders in Red Alert 2 in DPI aware mode
  • Fixed ColorKeyMethod=alphatest not working on some textures in Carnivores
  • Fixed broken presentation after switching from fullscreen to windowed mode in some games
  • Fixed a deadlock when alt-tabbing in Star Trek: Armada with the config overlay open
  • Fixed hotkeys not working in some games that use DirectInput 8
  • Fixed presentation in some palettized fullscreen games, e.g. Carmen Sandiego's Great Chase Through Time
  • Fixed incorrect texture filtering applied in some cases, e.g. to trees in Carnivores
  • Fixed invisble network detection window in Empire Earth NeoEE (#251)

Updated configuration settings:

  • StatsRows: ddiusage was removed from the default value to improve performance

New configuration settings:

  • GdiStretchBltMode
  • VertexFixup

Update (October 6, 2024): The v0.5.2-17-g291e50ac and older builds in the DDrawCompat-v0.5.3-debug-previous-builds.7z asset were broken by the Windows 11 24H2 update. Patched builds have been added with the DDrawCompat-v0.5.3-debug-previous-builds-win11-24h2.7z asset to resolve the issue by backporting the following commit: 89b2a63. See diff.txt in the new builds for the exact changes. v0.5.2-18-g89b2a631 and newer builds are also included for completeness' sake. These were simply recompiled without source code changes.

  •  

DDrawCompat v0.5.2

General changes:

  • Fixed incompatibilities with Empire Earth NeoEE mod (#251)
  • Fixed black screen and ClipCursor issues in Mig Alley main menu
  • Fixed main menu issues with WinZMod (#196)
  • Fixed sporadic crashes caused by registry hooks
  • Fixed Dark Earth screen transition effects (#260)
  • Fixed invisible menu buttons after alt-tabbing in Red Alert 2 (#262)
  • Fixed slow loading of Skirmish menu in Red Alert 2 (#288)
  • Fixed broken keyboard input in some games (#254)
  • Fixed a GDI resource leak when NVIDIA overlay is enabled (#282)
  • Fixed video playback issues in Prince of Persia 3D (#273)
  • Fixed Intel Indeo Video codec support on Windows 7 (#274)
  • Fixed display driver timeouts caused by invalid FPU state (#293)
  • Fixed rendering issues caused by custom viewports on AMD GPUs (#290)
  • Fixed sporadic deadlocks in some games when alt-tabbing
  • Fixed handling of invalid alpharef render state value on old Intel drivers (#295)
  • Fixed flashing screen in Glover (#295)
  • Fixed inaccurate cursor clipping in DPI unaware mode
  • Fixed some display issues when using D3D9On12 with a RenderColorDepth setting not matching the application's color depth
  • When ForceD3D9On12 is off, Intel GPUs that use D3D9On12 by default will now try to use igd9trinity32.dll instead
  • Available surface formats now include all DX9 formats (#259)
  • Added support for Steam overlay in fullscreen mode

Updated configuration settings:

  • AltTabFix: merged keepwithmemnp into keepvidmem as a parameter, added noactivateapp option
  • RenderColorDepth: default value changed to 32

New configuration settings:

  • SurfacePatches

Update (October 6, 2024): This release was broken by the Windows 11 24H2 update. Patched builds have been added with the win11-24h2 suffix to resolve the issue by backporting the following commit: 89b2a63. See diff.txt in the new builds for the exact changes.

  •  

DDrawCompat v0.5.1

This release fixes some issues introduced in v0.5.0:

  • Fixed an issue that made DDrawCompat unusable with Intel GPU drivers (#255, #256)
  • Fixed the DisplayFilter=point setting not working as expected (#252)
  • Reverted a small fix that could cause a crash (#256)

Update (October 6, 2024): This release was broken by the Windows 11 24H2 update. Patched builds have been added with the win11-24h2 suffix to resolve the issue by backporting the following commit: 89b2a63. See diff.txt in the new builds for the exact changes.

  •  

DDrawCompat v0.5.0

General changes:

  • Fixed crashes when loading hooks on Windows 7 (#149)
  • Fixed a crash caused by a clipper reference counting error
  • Fixed texture creation errors in Extreme-G 2 (#159)
  • Fixed a GDI resource leak and other issues with emulated hardware cursors (#148, #152)
  • Fixed several crashes and other issues related to D3D9On12
  • Fixed QuickTime videos in Carmen Sandiego series (#156)
  • Fixed a black screen issue when app resolution is higher than display resolution
  • Fixed a deadlock when exiting Age of Wonders (#167)
  • Disabled timer resolution throttling to fix some stuttering issues
  • Fixed occasional deadlocks when alt-tabbing
  • Added emulation of unsupported render target formats to fix NVIDIA rendering issues in Midtown Madness 2 (#159)
  • Fixed palettized color fills on NVIDIA GPUs (#201)
  • Fixed HUD glitches in Jane's FA-18 (#175)
  • Fixed black briefing screen in StarCraft (#206)
  • Fixed a deadlock when using resolution scaling (#197)
  • Fixed a crash in CreateDIBitmap when BITMAPINFO is null
  • Reverted sRGB gamma correction on bilinear blits that was accidentally introduced in v0.4.0 (#208)
  • Fixed incorrect detection of default gamma ramps and a crash related to using non-default gamma ramps (#216)
  • Fixed invisible dialog windows in RollerCoaster Tycoon (#225)
  • Clicking on the scroll bar shafts in the config overlay now scrolls by 5% instead of jumping immediately to the cursor position
  • Windows compatibility shims can no longer override the FullscreenMode=borderless setting to exclusive (#235)
  • Reduced screen flickering during temporary display mode changes in fullscreen mode
  • Fixed most of the cursor trail issues in Lego Loco (#179)
  • Intel Indeo Video codecs are now automatically enabled for processes running with DDrawCompat
  • Fixed a crash in Colin McRae Rally (#232)
  • Fixed software rendered palettized textures when the PalettizedTextures setting is set to off
  • Added a workaround for OBS window recording: use a target window whose title begins with the "[DDrawCompat]" prefix (#109)
  • Fixed taskbar thumbnails (#231)
  • Improved support for DPI unaware mode on high DPI displays
  • DirectDraw no longer forces the high DPI aware compatibility setting on the executable when it enters fullscreen mode
  • Broken tooltip fade animations are now replaced with the classic slide animations
  • DPI scaling no longer affects emulated hardware cursors, which resulted in oversized cursors
  • Fixed FlipToGDISurface result code when the GDI surface is already active (#204)
  • Maximum reported disk space is limited to 2GB to fix some applications getting a "not enough free disk space" error
  • Fixed an occasional crash caused by resolution scaling when alt-tabbing in Need for Speed III
  • Added support for depth fill blits on NVIDIA GPUs
  • Depth fills now work correctly with antialiased and resolution scaled depth buffers
  • Fixed hotkeys not working in some cases
  • Added a configuration file with default settings (commented out) in the Tools directory of the source code
  • Added a stats overlay (see new settings starting with the Stats prefix below)

Updated configuration settings:

  • AltTabFix: added keepvidmemnp option
  • ConfigHotKey: added alt and ctrl as synonyms for menu and control respectively
  • DisplayFilter: added bicubic, lanczos and spline options
  • PalettizedTextures: default value changed to off
  • RenderColorDepth: added appd8, appd10, 16d8, 16d10 and 32d10 options

New configuration settings:

  • ColorKeyMethod
  • ConfigRows
  • ConfigTransparency
  • CpuAffinityRotation
  • CrashDump
  • DepthFormat
  • DesktopResolution
  • DisplayAspectRatio
  • StatsColumns
  • StatsAggregateTime
  • StatsHotKey
  • StatsPosX
  • StatsPosY
  • StatsRows
  • StatsTransparency
  • StatsUpdateRate
  • SupportedDepthFormats
  • SupportedTextureFormats
  • TerminateHotKey
  • VertexBufferMemoryType

Update (October 6, 2024): This release was broken by the Windows 11 24H2 update. Patched builds have been added with the win11-24h2 suffix to resolve the issue by backporting the following commit: 89b2a63. See diff.txt in the new builds for the exact changes.

  •  

DDrawCompat v0.4.0

  • Fixed hooking of delay-loaded DLL functions (#99)
  • GDI redirection is now restricted to the main monitor in fullscreen mode, which fixes display issues with games not respecting surface pitch (#110)
  • Fixed conflicts with outdated versions of DbgHelp.dll shipping with some games
  • Fixed performance issues caused by D3DKMTWaitForVerticalBlankEvent on Windows 7 (#120)
  • Prevent Windows 7 from dynamically disabling desktop composition, which fixes main menu flickering in Rogue Spear (#126)
  • Added a partial workaround for a bug affecting NVIDIA drivers, where black texels were treated as transparent even when color keying was disabled for the texture stage
  • Fixed an issue with the application taskbar button sometimes remaining in the taskbar after exiting the application
  • Added a file-based configuration system and an in-game config overlay (see the wiki for details)
  • Removed the ReleaseWithDebugLogs build type, since LogLevel is now configurable
  • New configuration options:
    • AlignSysMemSurfaces
    • AlternatePixelCenter
    • AltTabFix
    • Antialiasing
    • BltFilter
    • ConfigHotkey
    • CpuAffinity
    • DesktopColorDepth
    • DisplayFilter
    • DisplayRefreshRate
    • DisplayResolution
    • DpiAwareness
    • FontSmoothing
    • ForceD3D9On12
    • FpsLimiter
    • FullscreenMode
    • LogLevel
    • PalettizedTextures
    • RemoveBorders
    • RenderColorDepth
    • ResolutionScale
    • ResolutionScaleFilter
    • SoftwareDevice
    • SpriteDetection
    • SpriteFilter
    • SpriteTexCoord
    • SupportedResolutions
    • TextureFilter
    • ThreadPriorityBoost
    • VSync
    • WinVersionLie

Update (October 6, 2024): This release was broken by the Windows 11 24H2 update. Patched builds have been added with the win11-24h2 suffix to resolve the issue by backporting the following commit: 89b2a63. See diff.txt in the new builds for the exact changes.

  •  

DDrawCompat v0.3.2

  • Fixed a deadlock when loading DDrawCompat on Windows 11 22H2

Update (October 6, 2024): This release was broken by the Windows 11 24H2 update. Patched builds have been added with the win11-24h2 suffix to resolve the issue by backporting the following commit: 89b2a63. See diff.txt in the new builds for the exact changes.

  •  
❌