Skip to content

Coverflow

NathanNeurotic (Ripto) edited this page Sep 16, 2026 · 4 revisions

Coverflow

RiptOPL's default theme — a centered cover-art carousel with an alpha-faded reflection, animated scrolling between titles, and aspect-correct cover frames in both 4:3 and widescreen. It is a built-in theme: no files to copy, active out of the box.

ℹ Built-in, not a THM folder theme

<Coverflow> is compiled into RiptOPL and appears in the theme list alongside any custom THM/ themes you add. You can switch to a different theme in Interface → Theme and switch back at any time. The Coverflow Settings button only appears in Interface while a Coverflow-based theme is active.

How it works

When the <Coverflow> theme is active, the game list view shows a row of cover-art images centred on the screen. The currently selected title sits at the centre; side covers fan out to the left and right. Below each cover a mirrored, alpha-faded reflection is drawn automatically. Scrolling left or right slides the entire carousel with a smooth animation; the selection lands on the new title when the animation completes.

Covers are drawn inside a two-layer frame: a plastic-case layer (case) sits over the raw cover art, and a second overlay layer (case_overlay) sits over that, keeping the frame visually aligned regardless of cover art dimensions. The engine keeps the frame aspect-correct automatically in both 4:3 and widescreen — it does not apply an extra widescreen scale on top of what the PS2 already does, so covers never warp when widescreen is toggled.

The element type driving the carousel is type=Coverflow. The built-in theme defines three variants of this element:

Block Used for Box size Default cover
main2 PS2 games 184 × 256 px (portrait) cover
appsMain2 Apps 184 × 184 px (square) coverapp
vcdMain2 PS1 / VCD games 184 × 184 px (square) cover

Apps and PS1 covers use a square box so the frame matches their square art; PS2 games use the taller portrait box that matches a standard PS2 case.

On a mixed carousel — the Favorites All in One shelf, or a device page under PS2/PS1 Game Display = Mixed — more than one of these blocks is live at once, and each cover is drawn from the block for its own media kind rather than one shape being stretched onto all three. The cover width stays uniform so carousel spacing does not move; only the height follows each row's aspect, and every cover stands on a common bottom edge, so portrait and square covers share one baseline and their reflections start together. See Block families for the full resolution rules.

Coverflow Settings

Open Interface and press the Coverflow Settings button (it appears only when a Coverflow theme is active). Four options are available:

Setting Options What it does
Cover Count 3 / 5 Number of covers shown simultaneously. 3 = one centre + one each side; 5 = one centre + two each side.
Center Scale None / Small / Medium / Large How much the centre cover grows relative to the side covers. None = all covers the same size.
Animation Speed Off / Fast / Normal / Slow Duration of the slide animation when the selection changes. Off = instant snap (0 ms); Fast = 100 ms; Normal = 200 ms; Slow = 400 ms.
Dim Side Covers On / Off When on, non-centre covers are drawn darker to focus attention on the selected title.

These settings are saved to settings_riptopl.cfg under the keys coverflow_count, coverflow_scale, coverflow_anim, and coverflow_dim. They apply to any theme that uses a type=Coverflow element — not just the built-in one.

Cover art

The carousel pulls cover art from the ART/ folder on the active storage device (same folder used by all OPL themes). Name your art files by Game ID:

ART/
  SLUS_012.34_COV.png   ← cover art (used by Coverflow)
  SLUS_012.34_SCR.png   ← screenshot 1 (shown on the info page)
  SLUS_012.34_SCR2.png  ← screenshot 2

If no matching cover is found the carousel shows the built-in cover placeholder instead. Art is loaded into a shared texture cache. The cache is pre-sized internally (the built-in carousel uses a fixed slot count) and is not user-configurable.

ℹ Art is shared across OPL builds

Because all OPL-family builds use the same ART/ folder layout, artwork you already have for stock OPL, uOPL, or wOPL works with RiptOPL's Coverflow carousel without any changes.

Authoring a Coverflow theme

You can create your own theme that uses the type=Coverflow element — custom background, fonts, colors, and overlay art, with the same live settings above. See Theme Engine for the full authoring reference, including:

  • The type=Coverflow element properties (default, overlay, overlay2, reflection, width/height, overlay corners)
  • The global coverflow_cover_offset key for horizontal nudging of the whole carousel
  • Block family prefixes (appsMain*, vcdMain*, favsMain*, and the opt-in favsVcdMain* / favsAppsMain* for PS1 and app favorites) for per-view overrides
  • The two-layer overlay system (overlay + overlay2) used by the built-in case frame

The built-in theme's source, misc/theme_coverflow.cfg in the repository, is a complete working reference you can copy and modify.

Config key reference

The Coverflow Settings are stored in settings_riptopl.cfg. For completeness, the underlying keys and their value ranges:

Config key Type Values Notes
coverflow_count int 3 or 5 Visible covers in the carousel
coverflow_scale int 0 / 15 / 30 / 45 Centre-cover grow amount (0 = None, 15 = Small, 30 = Medium, 45 = Large)
coverflow_anim int (ms) 0 / 100 / 200 / 400 Slide duration (0 = Off, 100 = Fast, 200 = Normal, 400 = Slow)
coverflow_dim bool 0 / 1 Dim non-centre covers

Where does the per-theme horizontal nudge live?

The coverflow_cover_offset key is a theme-level global property — it lives inside the theme's conf_theme.cfg, not in settings_riptopl.cfg. It shifts the entire carousel left or right (range −1024 to 1024, default 0). The built-in <Coverflow> theme sets it to 0. If you author a custom theme and need to reposition the carousel horizontally, set this in your conf_theme.cfg — it does not appear in the Coverflow Settings menu.


Source: coverflow.html @ fc2e13154e51. Read on the documentation website.

Clone this wiki locally