From 4c78e984615493609044f1aad747c333796ceca8 Mon Sep 17 00:00:00 2001 From: Marcin Bukat Date: Mon, 5 Oct 2026 09:58:26 +0200 Subject: [PATCH] cabbiev2: 400x240 FM screen, sharing the WPS backdrop CabbieV2 had an FM screen only for the 160x128 and 128x128 greyscale targets. Add one for 400x240, laid out like its WPS: station art and names where the album art and track info are, the frequency in the progress bar, Scan/Preset, MHz and Stereo/Mono below it, and hold, battery, volume and signal strength along the bottom. Both screens share one backdrop, its header bar empty: each draws its label, NOW PLAYING or FM RADIO, in Helvetica Bold rather than having it painted into a backdrop of its own. The shuffle and repeat placeholders, painted into the old WPS backdrop, are images drawn while those are off. Co-Authored-By: Claude Opus 5.5 Change-Id: I0331184479589cd4953bd78f4ead336f5d9b6fea --- wps/WPSLIST | 1 + wps/cabbiev2-400x240x16.fms | 94 ++++++++++++++++++ wps/cabbiev2.400x240x16.wps | 20 +++- ...400x240x16.bmp => backdrop-400x240x16.bmp} | Bin 288054 -> 288054 bytes wps/cabbiev2/repeatoff-400x240x16.bmp | Bin 0 -> 1342 bytes wps/cabbiev2/shuffleoff-400x240x16.bmp | Bin 0 -> 1846 bytes 6 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 wps/cabbiev2-400x240x16.fms rename wps/cabbiev2/{wpsbackdrop-400x240x16.bmp => backdrop-400x240x16.bmp} (88%) create mode 100644 wps/cabbiev2/repeatoff-400x240x16.bmp create mode 100644 wps/cabbiev2/shuffleoff-400x240x16.bmp diff --git a/wps/WPSLIST b/wps/WPSLIST index d9438bb77b..5e303ebc04 100644 --- a/wps/WPSLIST +++ b/wps/WPSLIST @@ -110,6 +110,7 @@ wps.112x64x1: cabbiev2.112x64x1.wps wps.96x96x(16|24|32): cabbiev2.96x96x16.wps # override implicit .fms filename +fms.400x240x(16|24|32): cabbiev2-400x240x16.fms fms.160x128x2: cabbiev2-160x128x2.fms fms.128x128x2: cabbiev2-128x128x2.fms diff --git a/wps/cabbiev2-400x240x16.fms b/wps/cabbiev2-400x240x16.fms new file mode 100644 index 0000000000..9e5199efca --- /dev/null +++ b/wps/cabbiev2-400x240x16.fms @@ -0,0 +1,94 @@ +# Cabbie v2.0 +# (C) 2010-2026 The Authors (see /rockbox/wps/AUTHORS) +# Derived from "Cabbie v2.0" (C) 2010-2012 The Authors +# +# One backdrop for the WPS and the FM screen: the header label is drawn, +# rather than painted into it. +# +# Disable Status Bar +%wd +# +# Load Backdrop +%X(backdrop-400x240x16.bmp) +# +# Header font +%Fl(2,12-Adobe-Helvetica-Bold.fnt) +# +# Preload Images +%xl(lock,lock-320x240x16.bmp,0,0,2) +%xl(battery,battery-320x240x16.bmp,0,0,10) +%xl(volume,volume-320x240x16.bmp,0,0,10) +# +# Station Art/Info Viewport Conditional +# Preset present conditional +# RDS present conditional +%?C<%Vd(art)> +%?Ti<%?C<%Vd(art_preset)|%Vd(noart_preset)>> +%?tx<%?Ti<%?C<%Vd(art_preset_rds)|%Vd(noart_preset_rds)>|%?C<%Vd(art_nopreset_rds)|%Vd(noart_nopreset_rds)>>|> +# +# Header +%V(10,11,380,12,2)%Vf(0F0B00) +%acFM RADIO +# +# Frequency Bar +%V(10,162,380,15,-) +%pb(0,0,380,15,pb-400x240x16.bmp) +# +# Hold +%V(144,207,30,23,-) +%xd(lock,%mh) +# +# Battery +%V(182,207,44,23,-) +%?bp<%?bc<%xd(battery,1)|%xd(battery,2)>|%xd(battery,%bl,2)> +# +# Volume +%V(233,207,34,23,-) +%xd(volume,%pv) +# +# Signal strength +%V(277,207,113,23,1) +%ar%tr dBuV +# +# Below frequency bar Scan/Preset frequency MHz Force Mono/Mono/Stereo +%V(32,180,336,20,1) +%al%?tm<%Sx(Scan)|%Sx(Preset)> %ac%tf MHz %ar%?St(force fm mono)<%Sx(Force Mono)|%?ts<%Sx(Stereo)|%Sx(Mono)>> +# +# Station Art +%ax%Vl(art,16,32,120,120,-) +%Cl(0,0,120,120,c,c) +%Cd +# +# Station Art +# Preset present +%ax%Vl(art_preset,153,40,-,20,1) +%Vp(0,%s%al%?Ti%?Tn<%Tn|%Tf>) +%ax%Vl(art_preset,153,62,-,20,1) +%Vp(1,%s%al%?Ti%?Tn<%Tn|%Tf>) +# +%ax%Vl(art_preset_rds,153,94,-,40,1) +%s%al%ty +%s%al%tz +# +# Station Art +# Preset absent +%ax%Vl(art_nopreset_rds,153,62,-,40,1) +%s%al%ty +%s%al%tz +# +# No station art +# Preset present +%Vl(noart_preset,10,40,380,20,1) +%Vp(0,%s%ac%?Ti%?Tn<%Tn|%Tf>) +%Vl(noart_preset,10,62,380,20,1) +%Vp(1,%s%ac%?Ti%?Tn<%Tn|%Tf>) +# +%Vl(noart_preset_rds,10,94,380,40,1) +%s%ac%ty +%s%ac%tz +# +# No station art +# Preset absent +%Vl(noart_nopreset_rds,10,62,380,40,1) +%s%ac%ty +%s%ac%tz diff --git a/wps/cabbiev2.400x240x16.wps b/wps/cabbiev2.400x240x16.wps index 469ee3d2f1..e9294d32a6 100644 --- a/wps/cabbiev2.400x240x16.wps +++ b/wps/cabbiev2.400x240x16.wps @@ -1,12 +1,18 @@ # Cabbie v2.0 -# (C) 2007-2012 The Authors (see /rockbox/wps/AUTHORS) +# (C) 2007-2026 The Authors (see /rockbox/wps/AUTHORS) # Derived from "cabbie" (C) Yohann Misquitta # +# One backdrop for the WPS and the FM screen: the header label is drawn, +# rather than painted into it. +# # Disable Status Bar %wd # # Load Backdrop -%X(wpsbackdrop-400x240x16.bmp) +%X(backdrop-400x240x16.bmp) +# +# Header font +%Fl(2,12-Adobe-Helvetica-Bold.fnt) # # Preload Images %xl(A,lock-320x240x16.bmp,0,0,2) @@ -15,10 +21,16 @@ %xl(D,shuffle-320x240x16.bmp,0,0) %xl(E,repeat-320x240x16.bmp,0,0,4) %xl(F,playmode-320x240x16.bmp,0,0,5) +%xl(G,shuffleoff-400x240x16.bmp,0,0) +%xl(H,repeatoff-400x240x16.bmp,0,0) # # Album Art/Info Viewport Conditional %?C<%Vd(a)|%Vd(b)> # +# Header +%V(10,11,380,12,2)%Vf(0F0B00) +%acNOW PLAYING +# # Progress Bar %V(10,162,380,15,-) %pb(0,0,380,15,pb-400x240x16.bmp) @@ -37,11 +49,11 @@ # # Shuffle %V(277,211,37,16,-) -%?ps<%xd(D)> +%?ps<%xd(D)|%xd(G)> # # Repeat %V(320,207,18,23,-) -%?mm<|%xd(Ea)|%xd(Eb)|%xd(Ec)|%xd(Ed)> +%?mm<%xd(H)|%xd(Ea)|%xd(Eb)|%xd(Ec)|%xd(Ed)> # # Playmode %V(346,207,24,23,-) diff --git a/wps/cabbiev2/wpsbackdrop-400x240x16.bmp b/wps/cabbiev2/backdrop-400x240x16.bmp similarity index 88% rename from wps/cabbiev2/wpsbackdrop-400x240x16.bmp rename to wps/cabbiev2/backdrop-400x240x16.bmp index 3a7514f4e1e19f0698936a20165c8a35c8acf09a..3f04ea6caaff5d0dc58a088d3ae081725eb5c803 100644 GIT binary patch delta 3171 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 diff --git a/wps/cabbiev2/repeatoff-400x240x16.bmp b/wps/cabbiev2/repeatoff-400x240x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..675a917f21fde3c87a1c9e4760257ad015571cf4 GIT binary patch literal 1342 zcmZ{kYfl$Z|3%^%~X} zARzqVoGqjfDrqUUx3^hrTAmjxv9$)b0w2!wAuhZ$+Hc3b*UZ-Oy{@kCtHbWP_$pP|pE@FFPSvfXYq&S$)SuXl5E)4jS%B;sgFq7ur0vY>0U$K~ba zU@*A8zNQ#La4JlP!(p%2Bfl9*5*0ii&&*CV8trzw@bG|R#TyKU&Yjcm_a$$pu2W7J zdOH0xnM@gm!4c6A)DzH(LeRpuqucR#eBJNI;xX*cAL)utzyUGQ6@22J^X4T4?dUkS zkB^VUfW9-yiAeo zb-P#l`}@K5pb!Bw!1;}TkEheux7W9S@%sA47Lsv)e?J_JXf^&j3}a(sgVJJ}EFYFI znaGdnbo&1O4v9IrkQe&!yoTZRnr3i!Z%-D*8NOvnPORFVtg_4#n6?t>)4 yo=Gn+`CyM{p3=5nEM=wo%RBg9{C2IOx5 literal 0 HcmV?d00001 diff --git a/wps/cabbiev2/shuffleoff-400x240x16.bmp b/wps/cabbiev2/shuffleoff-400x240x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1a0f325ed9f351ae4f3753d61e5cffbd1a21905a GIT binary patch literal 1846 zcmZ{k3sV|N6oqHYVTR%r6e}PPU9)FiDDLY^GElG?bqGF8Y_EY zdb)4lbI$GC-BTMBOifyW_LS!XPmt#iEkcVi|4%?Y%AsjH8`F36P4~a|YgafN{#^Ln zY&JWcPPf~w*X!AAE)aP48b`c`8Ea za=H9vW2Mp;RFTBt()G|@h-|P_I&B)Jq!3JkN|DL8(EDGLp@Bf)_V%{jZo`h=8>6bE z5|77YvDk1p?DcvKi^XCv82l}*7L7(N%Q`>5piQOH@p!`P_31hp3v=nNvomWj7_c}h zi6KCr3~Ke7^01dTH#fm|!Dh47YPZ;6Bvemh@fiI6{ysr|zaNT0f1vh;Vln(PnPksMks{+~3(56Xh&KQ#CoO%LsYfgt6NyXH zKyLMvYOmj$OeW-En&$5AE@?t1uRxbbN(b=h=*XVfFap6yLRN_VTYHpWNy2b(apCcJ z0E+d^W;0wAlzQ@qoh2ff&*wj7KG9K+y4h+LU^78VMsrh`aX1__3 z*smfQlP_kS8PGXpPaYp@kw_$+=FX%!pCre`a=Cnbe0+F#_%4l(8ZH(Kc8jv0hxvRy zYU4PL(i8kLE#Qg)6a=71>-zedtpTM;EDd+mK+>5z2s~pis*$hfXPi)T`7 zk{>^2xEt&rTSeKS{_Dq&mzS5PrzaqY4Tqz2D#cNdLZ&8#1X$tuQjz9z`LJ58kOa9} zJ&`ZYYPEuZKnn1d!SH%Kp-_nP%nq^2pMU=ZcYl9Rsrc|kB4M=}03bE-+L~eVUAQh5 zlmY_79PALde>p-QpMad2~hwDUUtPCKKOeW*?dVh^V&&}_Rxj7VPmX*zBbGh8P zW$_IXLF&JGneH`CzTDgps)rs+sd`$<)(VWCji4F+X|h*ALpA$!`ty`(cW literal 0 HcmV?d00001