# funkyfr3sh/cnc-ddraw

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/funkyfr3sh-cnc-ddraw).**

3,090 stars · 203 forks · C · mit · fork

## Links

- GitHub: https://github.com/FunkyFr3sh/cnc-ddraw
- awesome-repositories: https://awesome-repositories.com/repository/funkyfr3sh-cnc-ddraw.md

## Topics

`borderless` `compatiblity` `d3d9` `ddraw` `directdraw` `directx` `integer-scaling` `opengl` `upscaling` `windowed` `wrapper`

## Description

cnc-ddraw is a DirectDraw wrapper and emulation layer designed to ensure legacy 2D graphics software runs on modern operating systems. It functions as a compatibility layer that intercepts legacy API calls and redirects them to a modern rendering backend to prevent crashes and black screens.

The project provides a 2D graphics upscaler that uses shaders to increase the resolution of low-fidelity visuals for high-definition screens. It also includes a frame rate controller to synchronize frame timing and limit output speed, which prevents stuttering and performance drops.

The tool manages display modes by allowing users to toggle between windowed and fullscreen views while preserving the original window size and position. It further stabilizes legacy graphics through vertical refresh synchronization.

## Tags

### Graphics & Multimedia

- [Graphics API Emulators](https://awesome-repositories.com/f/graphics-multimedia/graphics-api-emulators.md) — Emulates legacy DirectDraw rendering interfaces to prevent crashes and black screens on modern operating systems.
- [Compatibility Wrappers](https://awesome-repositories.com/f/graphics-multimedia/real-time-neural-renderers/real-time-3d-rendering-engines/render-loop-interception/compatibility-wrappers.md) — Intercept legacy rendering calls to fix display issues and add modern features to older software. ([source](https://github.com/FunkyFr3sh/cnc-ddraw/blob/master/Makefile))
- [Game Graphics Upscalers](https://awesome-repositories.com/f/graphics-multimedia/game-graphics-upscalers.md) — Provides shader-based upscaling to improve the visual clarity of low-resolution graphics on modern high-definition screens.
- [API Interception Hooks](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/graphics-rendering-apis/api-interception-hooks.md) — Intercepts legacy graphics calls and redirects them to a modern rendering backend to prevent software crashes.
- [Graphics Rendering Backends](https://awesome-repositories.com/f/graphics-multimedia/graphics-rendering-backends.md) — Draw visuals using different backends to maintain performance across various hardware configurations and operating systems. ([source](https://github.com/FunkyFr3sh/cnc-ddraw/blob/master/README.md))
- [Frame Rate Stabilization](https://awesome-repositories.com/f/graphics-multimedia/predictive-frame-drop-prevention/frame-rate-stabilization.md) — Preventing screen stuttering and performance drops by controlling frame rates and synchronizing vertical refresh.
- [Resolution Upscaling Shaders](https://awesome-repositories.com/f/graphics-multimedia/video-upscaling-pipelines/chroma-upscaling-shaders/resolution-upscaling-shaders.md) — Increases image resolution by processing legacy pixels through programmable graphics shaders for improved visual clarity.
- [Backend-Agnostic Rendering Pipelines](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/graphics-pipeline-architectures/backend-agnostic-rendering-pipelines.md) — Decouples graphics logic from the display hardware to support multiple rendering engines and operating systems.

### Software Engineering & Architecture

- [Legacy Compatibility Wrappers](https://awesome-repositories.com/f/software-engineering-architecture/legacy-compatibility-wrappers.md) — Resolve stability problems and crashes to ensure legacy software runs correctly on modern operating systems. ([source](https://github.com/FunkyFr3sh/cnc-ddraw/blob/master/README.md))

### Part of an Awesome List

- [Compatibility Wrappers](https://awesome-repositories.com/f/awesome-lists/devtools/rendering-libraries/compatibility-wrappers.md) — Swap legacy rendering libraries for updated versions to resolve compatibility issues and introduce modern display features. ([source](https://github.com/FunkyFr3sh/cnc-ddraw/blob/master/res.rc))

### System Administration & Monitoring

- [Runtime GPU API Call Substitutions](https://awesome-repositories.com/f/system-administration-monitoring/diagnostic-tools/diagnostics/execution-tracers/kernel-tracing-frameworks/gpu-api-call-tracing/runtime-gpu-api-call-substitutions.md) — Replace outdated API calls with updated implementations to ensure compatibility with modern hardware and operating systems. ([source](https://github.com/FunkyFr3sh/cnc-ddraw/blob/master/exports.def))
- [Frame Rate Controllers](https://awesome-repositories.com/f/system-administration-monitoring/frame-rate-controllers.md) — Synchronizes frame timing and limits output speed to eliminate stuttering and performance drops in legacy software.

### Business & Productivity Software

- [Resolution Upscalers](https://awesome-repositories.com/f/business-productivity-software/desktop-application-enhancers/resolution-upscalers.md) — Increase display resolution using shaders to improve visual quality when viewing low-resolution content on modern screens. ([source](https://github.com/FunkyFr3sh/cnc-ddraw/blob/master/README.md))

### Development Tools & Productivity

- [Frame Timing Regulation](https://awesome-repositories.com/f/development-tools-productivity/real-time-performance-profilers/frame-timing-regulation.md) — Synchronize frames with the vertical refresh rate and limit maximum output to prevent stuttering and performance drops. ([source](https://github.com/FunkyFr3sh/cnc-ddraw#readme))

### User Interface & Experience

- [Refresh Rate Synchronization](https://awesome-repositories.com/f/user-interface-experience/animation-and-motion-systems/animation-lifecycle-hooks/animation-frame-monitors/refresh-rate-synchronization.md) — Synchronizes the graphics output with the monitor refresh rate to eliminate screen tearing and stuttering.
- [Windowed Fullscreen Toggles](https://awesome-repositories.com/f/user-interface-experience/presentation-frameworks/presentation-modes/fullscreen-controls/windowed-fullscreen-toggles.md) — Implements toggles between windowed and fullscreen modes while preserving the original window size and position.
- [Window Display Modes](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces/layout-structural-components/interface-display-modes/full-screen-modes/window-display-modes.md) — Switch between windowed and fullscreen display modes while saving and restoring the previous window state. ([source](https://github.com/FunkyFr3sh/cnc-ddraw/blob/master/README.md))
- [Window State Persistence](https://awesome-repositories.com/f/user-interface-experience/window-state-persistence.md) — Tracks and restores window dimensions and display modes to ensure a consistent user experience during transitions.
