Fixing Overscan and Cropped Edges Without Distorting the Original Image
Separate television zoom, frontend viewport, shader masks, core overscan, and intentional border pixels before changing retro-game geometry.
Consumer CRTs commonly hid part of a video signal behind the cabinet bezel. Game developers sometimes left unstable, blank, or decorative pixels in that area, but occasionally placed useful graphics near the edge. Modern emulation can expose or crop those pixels deliberately. A television’s zoom mode can then crop the already cropped image a second time.
Do not repair missing edges by stretching to 16:9. Aspect ratio changes proportions; overscan changes which source pixels are visible. Establish which layer removes the pixels before saving any override.
Step 1: identify cropping, borders, and distortion separately
Use a scene with a border, HUD, or calibration grid. Capture a screenshot from the emulator and photograph the physical screen. If the saved screenshot contains the missing edge but the display does not, the television, monitor, capture device, or operating-system scaling is cropping after rendering.
If the screenshot itself lacks the pixels, inspect the core, frontend viewport, shader, overlay, and content. If the whole image is visible but objects are wide, narrow, or irregular, follow aspect-ratio troubleshooting instead.
Step 2: disable display-side zoom
Select the manufacturer’s 1:1 pixel or no-overscan mode—often named Just Scan, Screen Fit, Full Pixel, Dot by Dot, or similar. Names vary, so consult the exact display manual. Disable picture zoom and accessibility magnification. On a capture chain, inspect the receiver and capture-card scaling too.
Some televisions remember sizing separately for each HDMI input, resolution, and refresh rate. Verify the mode while the emulator is actually outputting its normal signal, not only on the desktop.
Avoid changing undocumented service-menu geometry. Service menus can affect every input and may expose settings intended for technicians; normal picture-size controls are the safe diagnostic surface.
Step 3: create a plain frontend baseline
Temporarily disable bezels, overlays, custom viewports, video filters, and shader presets. Set RetroArch’s aspect ratio to Core Provided. Test integer scaling both off and on, but understand the result: integer scaling can create unused border space because the source does not divide evenly into the output. That is not cropping.
Settings → Video → Scaling → Aspect Ratio → Core Provided
Settings → Video → Scaling → Integer Scale
Reset custom X/Y/width/height only after recording them. Do not delete the full configuration; per-game and per-core overrides may contain unrelated working settings.
Step 4: inspect the core’s overscan option
Open Quick Menu → Core Options and read the official page for the exact core. Snes9x documents Crop Overscan as removing output that a standard-definition television bezel might hide. Mesen-S exposes separate vertical and horizontal overscan controls and explains that most SNES games use 224 lines while some use 239.
Set crop to off or zero to see the maximum core output, restart content if required, and compare screenshots. Then choose automatic or a measured crop if exposed border noise is undesirable. Do not copy an eight-pixel value from one core into another: option units and source geometry differ.
Step 5: verify region and resolution changes
PAL and NTSC content can use different timings and visible line counts. Some games switch resolution between gameplay, menus, and high-resolution text screens. Test all of those states before defining a custom viewport.
An apparent black border may be generated by the game itself and therefore be part of the emulated frame. Cropping it globally can remove real graphics in another title. Keep a core-wide default conservative and use a per-content override only with evidence.
Step 6: restore shaders and bezels one layer at a time
CRT shaders can include masks, curvature, integer-scale requirements, or explicit viewport assumptions. Bezel presets reserve a window for content; an incorrect preset resolution can cover edges without altering the underlying frame.
Restore the shader alone and compare, then the overlay alone, then the combined preset. Use assets from RetroArch’s supported updater or the shader project’s official repository. Avoid opaque configuration packs that overwrite directories or execute installers.
If a preset crops, inspect its documented parameters rather than expanding the content aspect ratio until it fits. The latter produces a visually full opening at the cost of geometric accuracy.
Step 7: account for MAME’s artwork and aspect options
MAME distinguishes aspect preservation, artwork, integer scaling, and view selection. Its keepaspect option preserves the correct aspect ratio, while disabling it can distort the image to fill an unmatched window. MAME views may intentionally include cabinet artwork or screen masks.
Select a screen-only view for diagnosis and leave aspect preservation enabled. A multi-screen arcade machine can have a layout that is not reducible to one generic 4:3 crop; use the machine’s defined view rather than a console preset.
Step 8: measure and save the narrowest override
After the host display and plain core output are correct, count the actual pixels or lines hidden on each edge. Verify a second game, a menu, gameplay, and any resolution switch. Save a content override for a title-specific exception or a core override only when the hardware family justifies it.
Record display model and picture mode, output resolution/refresh, frontend/core versions, region, crop values, aspect mode, integer scaling, shader, overlay, and viewport. This makes the result reproducible after updates.
The correct outcome may include visible noise at edges or black space around the image. Those are honest source or scaling artifacts. A fully filled panel is not proof of correctness, and stretching is never a substitute for identifying who performed the crop.
Related:
- Fixing Stretched or Wrong Aspect Ratio in Emulators
- How to Build and Use Custom Bezels and Overlays in RetroArch
Sources: