Skip to content

Sharper frames ​

2026-10-24, the frame scaler.

The same menu button through four filters

One button of the ATI build's main menu through each filter, all blown up to the same size: nearest and scale2x at 2×, crt at 3×, smooth at 2×.

The ATI and S3 builds draw their textured scene in software at 640 × 480 (see the previous entry), so the picture cannot gain detail. What a wrapper can still do is scale it well. Until now ddraw.dll stretched the frame with Windows' own StretchDIBits, which is either blocky at uneven sizes or soft.

Four filters ​

The new scalers crate scales the finished frame on the CPU to a whole multiple of its size, and the result is drawn pixel for pixel, centred in the window. DDRAW_FILTER chooses:

  • nearest, the default: the largest whole multiple that fits, each pixel a sharp square block. At a whole multiple, nothing is lost or invented.
  • scale2x: Scale2x, also called EPX. Where two neighbouring pixels that meet at a corner agree, the corner takes their colour. Stair steps on edges become diagonals and nothing is blurred; the letters of the menus come out rounder. It runs once per doubling, and nearest does the rest.
  • crt: nearest, then a darker last row in each pixel (a scanline) and, from 3×, a faint red/green/blue column mask. It is a look chosen by eye, not a model of a measured monitor.
  • smooth: Windows' halftone stretch, as before, for window sizes that are not a whole multiple.

The request was for an "xBR-style" filter. xBR and xBRZ are large pieces of code with many cases; Scale2x is the small classic of the same idea. Scale2x is what is here, and it is called by its own name.

MENU PRINCIPAL through the CRT filter at 1920 × 1440

The ATI build's main menu through crt at 3× (1920 × 1440), shown at 960 pixels wide; at this size the scanlines blend into a darker picture.

How it is known ​

  • That the filters do what they say: measured, the crate's tests (whole blocks, flat areas kept, a diagonal edge rounded, the scanline darker), and the captures above from the ATI build in the emulated PC.
  • That they look right in a race and in the S3 build: not checked yet; only the main menu was captured.
  • How a 1997 monitor looked: not measured; the CRT filter is a look.

What is next ​

  • A capture of a race through each filter, and the S3 build.
  • The same DirectDraw and filters for WINPOD.EXE and PODMMX.EXE.

Prose CC0 1.0, code Apache 2.0. POD: Planet of Death is © Ubi Soft; none of its files are on this site.