Skip to content

Freeze and compare

NuclearMeltdown edited this page Sep 25, 2026 · 2 revisions

Freeze and compare

src/app.cpp (ToggleFreeze(), ToggleCompare(), ChooseCompare(), ToggleBypass()), src/app_ui.cpp (DragCompareDivider()), src/render/shaders.h (CompareRaw())

A GameCube title screen split down the middle by a white line: the filters off on the left half, on on the right

Three aids for setting filters, all on a key and all in the right-click menu:

Key Action
F11 Freeze
F12 Compare filters
Shift+F12 All filters off

They change only what is on screen and are never saved: quitting ends all three, whatever profile is loaded. The profile keeps only compare's direction and where its divider stands. They sit in the right-click menu because you reach for them while looking at the picture, not at a tab.

Freeze

F11 holds the picture. Frames are still taken from the card — the queue would otherwise back up and the statistics would lie — but none of them reaches the texture. Everything behind that keeps running on the still picture: filters, scaling, picture controls. A slider moved during a freeze changes the frozen frame live, which is the point. Setting dot crawl or sharpening against a game that keeps moving is guesswork.

Leaving the freeze empties the frame delay line, if the A/V offset has one running. What stood in it is as old as the freeze was long, and showing it would first play back the past.

Compare

F12 splits the picture. On one side every filter is off, on the other every filter is on. The unfiltered side drops exactly what All filters off drops (below); deinterlacing, crop and colour run on both sides.

Unfiltered side Filtered side
Composite filters off on
Sharpening off on
Brightness, contrast, saturation, hue off on
Native pixel grid off on
Scanlines and mask off on
Deinterlacing, crop, rotation, aspect, scaling on on
Colour range and matrix on on

The split happens in two places, because the filters do. The composite chain runs in pass 1 and skips the unfiltered side there; the rest sits in the scale pass, where CompareRaw() decides per pixel which side it is on. Both passes are told the same divider.

Direction. Vertical puts the unfiltered side on the left, horizontal puts it on top. The right-click menu has Compare filters as a submenu with both directions; choosing one switches compare on in that direction, choosing the one already shown switches it off. F12 itself uses whichever direction was chosen last. Settings → Picture → Compare has the same switch, the direction and the divider as a slider.

The divider can be dragged in the picture, like the crop edges. It lives in the source's own grid rather than on the screen, so it turns with a rotated picture; DragCompareDivider() works out where it lands on screen and turns the mouse position back into a share of the source. A double click that starts on the divider is a drag, not a fullscreen switch.

Compare works on every input. Up to 4.4 it sat at the end of the composite section and compared only that chain, so it disappeared with any digital source. Sharpening, picture controls and the CRT effects exist on every input, and so does the question whether they help.

A GameCube title screen under F12, magnified across the divider: the logo and the lettering beaded with dot crawl on the left half, clean on the right

All filters off

Shift+F12 shows the whole picture the way the unfiltered side of compare shows half of it. It answers a different question: not "what does this filter do" but "does any of them help at all".

What stays is what puts the picture right in the first place — deinterlacing, crop, aspect, rotation, scaling, range and matrix. Without those the picture would not be unfiltered but wrong.

Deinterlacing used to be on the other side of that line and dropped to weave. Comb lines are not the signal as it arrives, though; they are two fields that were never meant to be shown together, and next to them every filter was hard to judge. Since 5.0 it stays on.

Switching one on switches the other off: next to a picture with no filters at all there is nothing to compare. The Picture tab says at the top that the filters are off while they are, since otherwise every slider below it would seem to do nothing.

Not while recording

None of the three works during a recording, and starting one ends all three. The recording and the virtual camera take their picture from behind the same passes as the display, so a frozen, half filtered or unfiltered picture would end up in the file. Starting a recording turns them off rather than refusing: whoever presses F9 means the whole picture, from now.

Clone this wiki locally