Commit graph

5187 commits

Author SHA1 Message Date
Aidan MacDonald
9d6dfe2245 Fix yellow in 017dd72ff3
Change-Id: Ib228acef524b0527b9bc0de3cf2104efda350e73
2026-02-22 15:15:10 +00:00
Solomon Peachy
017dd72ff3 plugins: Convert all plugins to using mixer API for playback
pcm_play_data -> mixer_channel_play_data
pcm_set_frequeny -> mixer_set_frequency
pcm_play_stop -> audio_stop at startup / mixer_channel_stop at shutdown
pcm_is_playing -> mixer_channel_status

All of these have been removed from the plugin API.  Updated API docs to
clarify role of audio_stop() vs mixer_channel_stop()

Todo:  get rid of pcm_play_[un]lock().

Change-Id: I8800c131b51f064ee923a4c6e42aa405d33851fc
2026-02-22 08:15:14 -05:00
Christian Soffke
ac3999d5ab plugins: stopwatch: fix missing or wrong SBS title
Change-Id: Iecdb7a3a142ee3754f25d374e71dae62dc4d5a17
2026-02-21 12:34:41 -05:00
Christian Soffke
a70436fe8e plugins: lrcplayer: fix non-UI font info vp w/ SBS enabled
With the statusbar enabled, the UI viewport's
font may be different from the UI font, which
breaks stringsize calculations in LRC Player
that are currently all based on the UI font.

Change-Id: Ib53de62134b250fa50353074959843278f38478f
2026-02-21 14:34:45 +01:00
Aidan MacDonald
59cc0282ec plugins: remove never-released beatbox plugin
It was added back in 2007 (commit 8b6d28790e) apparently
in a half-baked state, and has never been enabled since.

Change-Id: I728b5730fe05262bae292cd7fcdcfe4b53c4b315
2026-02-19 19:27:17 -05:00
Lourenço Soares
0b3a5ab1e6 plugin lrcplayer: Added manual scrolling feature
lrcplayer currently automatically scrolls the lyrics for you, as it assumes that there is sync information in the lyrics. In the case where there aren't (like for ID3V2 USLT tags), the plugin will automatically assume timestamps and will scroll automatically.
This commit adds an option in the Display Menu to allow automatic scrolling to be disabled. When disabled, you can scroll the lyrics using the volume keys (like you would on the iPod's OS).

Change-Id: I87ef27fd2b84c97374bdfd0e47f4c00ddb4bc85e
2026-02-19 16:10:14 -05:00
Solomon Peachy
6f302083b5 cleanup: Get rid of erroneous execututable bit on various source files
Change-Id: I6382ba56dc6d99189c8647b010208c33fc2da7ca
2026-02-19 07:54:35 -05:00
Roman Artiukhin
aea9e1b63f configure: add ability to select plugins to build in --plugins flag
Use ":" as the separator. Useful for plugin development and debugging.

Example:
../tools/configure --target=hibyr1 --type=ADS --plugins="properties.c:imageviewer"

This creates a debug simulator build for Hiby R1 with the properties.c file and the imageviewer directory plugins enabled.

Change-Id: If974cfb0c54bd2c1a53ae11cc3f942c698ef2fe4
2026-02-16 13:42:58 +02:00
William Wilgus
46d644fcd7 stars.lua screen does not update int the sim
SDL needs to do lcd_update from the main thread
stars.lua uses an event that runs in a timer thread
so in the sim the screen never updates

Change-Id: I6002525363010c3133ebbfb490763f747c5d773a
2026-02-10 10:46:15 -05:00
William Wilgus
ed84047884 [Fix Red] open_plugins rb-> is required
Change-Id: I1f1a7e487d46a0427be7cebd319c65b848b4a9fb
2026-02-08 14:39:17 -05:00
William Wilgus
ef7739160b [BugFix] open_plugins allow more than one entry with a plugin / parameter
you should be able to have multiple parameters to a single plugin
you can do this from outsid the plugin, but not from within the plugin
this makes it possible to have several entries with the same
plugin and a different parameter for each entry

it now also updates the name of the entry to the name of the parameter
instead of the name of the plugin (unless user edited it)

Change-Id: Ifb52b21e3b8ed3257364635b5d92e7c21a35a199
2026-02-08 13:58:36 -05:00
Aidan MacDonald
58b186d6de Remove Creative Zen Vision and Vision:M ports
They haven't seen development activity for the better part
of two decades and apparently were never able to even boot
to Rockbox, although the Rockbox bootloader could load the
original firmware.

Change-Id: I5cfa5909c21feaf2825aa685a05e78044b893a13
2026-02-06 07:31:54 -05:00
Aidan MacDonald
a6c290e8e5 jz47xx: fix plugins/codec link address
Removing STUBOFFSET in commit 78542df466 caused DRAMSIZE
to be computed incorrectly, not taking into account the
16k offset used for 'IRAM'. As a result plugins & codecs
got shifted 16k upwards from their intended load address,
making them unable to load.

Change-Id: I6c338e04506e12fa2b8a69286a1ed785a2f8042d
2026-02-05 20:33:51 +00:00
Aidan MacDonald
92b0bf7a27 Clean up .ncdata/ncbss hackery in plugin linker script
The mess here can be reduced by paying careful attention to
how the linker allocates LMAs/VMAs within MEMORY regions.

Changing the way .ncdata and .ncbss are defined so that they
reserve the LMA/VMA ranges they use in PLUGIN_RAM removes the
need to explicitly set the VMAs of other sections, cutting
down on the number of ifdefs needed and making the script a
bit simpler.

Change-Id: I316fc6e8dedd621537261d52c1ec7c20ec09438a
2026-02-05 09:38:51 -05:00
Aidan MacDonald
bce2c4e069 Convert users of SHAREDDATA_ATTR to SHAREDBSS_ATTR
The handful of uses are only doing zero initialization
so don't need to go in the data section, they can go in
bss instead.

Change-Id: I7108ac60867aa20b4429ac0747d00109563bb3bf
2026-02-05 07:57:07 -05:00
Aidan MacDonald
7b91b81e49 stm32h7: define correct DRAM origin for plugins
Change-Id: I7fab9da0e99f328ce602607057f52620812476a8
2026-02-05 10:08:45 +00:00
Aidan MacDonald
653bca7ff4 make: allow building flat binary plugins on USE_ELF targets (attempt 2)
Looks like I forgot to test the hosted builds and for some
reason thought that make would expand objcopy recursively...

Change-Id: I61264eadcb1235660566f6a9f19f8718ebe14583
2026-02-04 16:45:25 +00:00
Solomon Peachy
1e2950cc6c Revert "make: allow building flat binary plugins on USE_ELF targets"
This reverts commit 91ec6f1e1e.

Reason for revert: Massive sea of red, looks like hosted + sim builds.

Change-Id: I98a3954d68ad2cc521e13c3683bf4a6f45f88b36
2026-02-04 08:49:19 -05:00
Aidan MacDonald
91ec6f1e1e make: allow building flat binary plugins on USE_ELF targets
From what I can see the Creative Zen Vision ports, which
were the only ones to set USE_ELF prior to the Echo R1 port,
do not work except for a bootloader and never even got to
the point of booting Rockbox. This explains why they build
codecs and plugins as ELF binaries, yet there is no code to
load ELF format codecs or plugins.

Anyhow, add a new setting, PLUGIN_USE_ELF, which controls
whether plugins & codecs are left as ELF or converted to
flat binaries. This makes it possible for the Echo R1 to
use the flat binary .rock format, and makes it possible to
have ELF plugins/codecs on targets with non-ELF main binaries.

Seeing as nothing needs ELF plugins/codecs right now, the
new default is to generate them as flat binaries unless
the target requests otherwise.

Change-Id: I9ffae669978de5cc7ad214cd50d97ad6e8938394
2026-02-04 07:32:43 -05:00
Aidan MacDonald
1a33d7990a Remove Meizu M3/M6SL/M6SP and Samsung YP-S3 ports
These targets haven't seen any changes since 2008-09
have bitrotted to the point they don't compile anymore.
With only internal NAND flash for storage which doesn't
seem to have ever been accessible from Rockbox, they've
never been usable and there's probably not much point
keeping them around any more.

Change-Id: I2fc63da20682b439126672065ae013044cb2d1c4
2026-02-03 16:32:56 +00:00
Aidan MacDonald
78542df466 Nuke GDB stub
It looks like the GDB stub only ever worked for the Archos
Recorder and iRiver IFP-7xx, neither of which are in-tree
any more.

Change-Id: If1910675b88b4707d26df9bc095818902af2d25b
2026-02-03 10:55:53 +00:00
Aidan MacDonald
2429e117d0 Replace all uses of PLUGIN_USE_IRAM with USE_IRAM
PLUGIN_USE_IRAM is almost equivalent to USE_IRAM except
that USE_IRAM might be defined in core, but not plugins.
All remaining uses of PLUGIN_USE_IRAM are inside plugins,
however, so there is no point keeping both defines around.

Change-Id: I6902c85651f3d82b7d19ea32eaa60fc5c19eded7
2026-02-02 17:11:04 -05:00
Aidan MacDonald
01f96e40a7 mpegplayer: remove IRAM save/restore hack
On targets where plugins can use IRAM, mpegplayer copies
its own IRAM region to main memory before enabling voiced
menus and then copies it back when exiting the menu.

I'm reasonably certain this is unnecessary because the
core IRAM area is completely separate from plugin IRAM
(which is the same memory as codec IRAM). If they _did_
conflict, then we'd expect to see massive problems with
voiced menus during normal playback since most codecs
make fairly heavy use of IRAM.

There are two other reasons to get rid of this hack:
(1) it's ugly, and (2) it will not work on targets with
"split" IRAM like on the STM32H743 where the fastest
code/data memories are separate.

Change-Id: Id8656539c7cafb724691494c54a07448fbcf8129
2026-02-01 09:55:04 -05:00
Christian Soffke
11263d73af imageviewer: add back semicolon
accidentally removed in 3c6b9bb

file isn't normally used, so there was no error

Change-Id: I65cc59bfcb3c59678a990b9804070d518318b016
2026-01-30 14:12:57 +01:00
mojyack
1951c17e0b pass event data to usb_acknowledge
add second argument to usb_acknowledge.
it can be used for more appropriate connection tracking that does not
rely on timeout in the future.

Change-Id: I8a44366b7c7a1f944524c4ba8ecd6d9673746a65
2026-01-26 19:47:09 -05:00
William Wilgus
6035b1fc1b [lua][BUGFIX] splash_scroller FS#13753, 13754 unicode + default font/fg/bg
FS#13753 - Rocklua error splash don't display part or full filename when
it is non-ASCII
FS#13754 - Rocklua error splash don't reset gui settings (bg, fg and font)

when using signed char unicode codepoints can show up as < '0'
code was looking to remove control chars < ' ' which also removed
unicode code points in the process

Change-Id: I48074a7854f2bee195ca554e1f86505fe5567db6
2026-01-24 09:19:19 -05:00
William Wilgus
2b6029ae8d rliimg add flip image example (#FS13745) Try #2
FS#13745 - Add transpose (like in python pillow module) and smooth resizing in rocklua

most of this is supplied 'require image'

flipping an image is built-in to the image generator function

add image flip example to rliimg

pushed the wrong script

Change-Id: I2c512a70ed26b0457e46f2f2a187d3365783af67
2026-01-24 01:43:58 -05:00
William Wilgus
b3683c84d8 [FIX Yellow] kbd_helper.c unsigned / signed
Change-Id: I10382b5ad930d350945da950a5d829c000e18f31
2026-01-23 23:00:12 -05:00
William Wilgus
a0bd28a408 rliimg add flip image example (#FS13745)
FS#13745 - Add transpose (like in python pillow module) and smooth resizing in rocklua

most of this is supplied 'require image'

flipping an image is built-in to the image generator function

add image flip example to rliimg

Change-Id: Ia53933c9ad09d2a5b92af45eb7a1140b64b6ae01
2026-01-23 22:43:08 -05:00
William Wilgus
1194a968bd [BUGFIX] pluginlib kbd_helper.c buffer ovfl
sizeof is in bytes len counts as a ucschar
should also be added to total_len

yep buffer ovfl

Change-Id: Ibebb8574e6dbab0ca78d1cdfeb04cbbda38f05e9
2026-01-23 21:58:32 -05:00
William Wilgus
163c3723bc announce_status re-fix splashf voice prompts, add missing lang entry
%s thru an ID2P() won't be voiced

Change-Id: Ibce1e818a6ae35c388f75182c3a8226371b420b3
2026-01-23 21:05:44 -05:00
William Wilgus
c80723b539 announce_status plugin command line arguments + force_enque_next
I had commented out 'talk_force_enqueue_next()' in the voice prompts
pretty sure it was because really long prompts just keep droning on
problem being as soon as the plugin returns in some cases the prompt
gets cut off by the parent calling shutup on us

so it is now a setting (on by default)

Now allows command line arguments
so you can announce whatever prompt you want whenever / wherever you want
(checkout open plugins for a way to create a plugin with command line arguments)
you can then add this .opx shortcut to your shortcuts or quick screen

and as before you can use a hotkey which also will allow command line args..

Change-Id: Id8883c0a4e85e1cb813959ab72e89817f388a397
2026-01-23 11:02:36 -05:00
William Wilgus
3c6b9bb458 FS#13748 - The imageviewer plugin decodes the file infinitely when opening a empty JPEG file.
Couldn't reproduce this on most of my devices or the sims
turns out the bug depends on uninitialized memory being FF
and the file empty

Uninitialized memory fixed what I saw at least..

Change-Id: Ie267af0a20685003ee28ff42d008dd7942a7c6fc
2026-01-22 23:59:00 -05:00
William Wilgus
e75ffe5f72 lua add rb_poly.lua vector drawing and memoization demo
just playing around with using lots of ram (and processing power)
in lua threw this together vector draws Rb logo and flips rotates and zoom

Change-Id: Ie1fe16a9a50271657f2ab7b9a39bf71e6db90d2c
2026-01-21 08:54:16 -05:00
William Wilgus
530cad0c7a FS#13718 - The image_save library (rocklua) can't correctly save an image with an odd resolution.
the image save script apparently does not like odd numbers for width

local bytesleft = linebytes - (bytesperpixel * w )

this should actually be pxleft since the image loop below returns pixels not bytes

tested on 1 bit 2 bit, 16 bit and 32 bit images in sim

Change-Id: Ic186c095c29d318dcfb7d76b83e07c75f1460584
2026-01-21 08:15:56 -05:00
Christian Soffke
f0d99391de plugins: random folder advance: misc improvements
fixes:
- traverse_dir was called recursively using two
  MAX_PATH local buffers => possible stack overflow
- The import function inserted additional, incorrect,
  entries when the whole line buffer was filled
- "Dirs not found" message overlapped number
  of folders when generating folder list
- Final number of scanned folders wasn't displayed
- Wouldn't stop inserting when maximum number
  of files in playlist was already reached
- Prevent buffer overflow when importing
- Don't write to fd after opening failed
- Use whole buffer with read_line, instead
  of subtracting 1. Remove hard coded sizes
- CRs don't need to be removed in import function
  (already handled by read_line)

features:
- Use insert context for *much* faster insertion
  of large # of folders, and nicer progress display
- Use UI viewport
- Add progress indicator when saving or loading
- Display number of folders in edit list title
- Go back to plugin's main menu from edit list
- Only ask to save changes if list is dirty
- Warn before erasing modified playlist
- Flag successfully created playlist as modified
- Make folder scan wait for dircache
- Shorten menu item names
- Put "Play Shuffled" menu item first
- Remember selection when returning from submenus
- Go to WPS after ACTION_TREE_WPS
- Exit menu when pressing Back
- Perform an initial scan, if no data file exists
  yet, when "Play Shuffled" or "Edit" is selected

Change-Id: I7df76f8fb8387888ce491d8b74b01b481e9997d3
2026-01-16 16:49:38 +01:00
Christian Soffke
18dfd8f691 Reduce list title glitches when switching between menus
Each time viewportmanager_theme_enable (or _undo) is called,
the SBS title is reset, even if the theme remains enabled.
Thus switching from one menu to another, if do_menu is called
again, briefly results in an empty title before the correct
one is displayed. Even unchanged titles will unnecessarily
flash for a moment. Other theme elements that are drawn using
conditions based on the title, may also appear glitchy.

This patch adds a way to make the status bar title persist by
copying it to a static buffer. Persistent titles are not reset
by toggle_theme (although scrolling will be stopped in
viewportmanager_theme_undo), so that the theme can immediately
display the appropriate title in do_menu, simplelist_show_list,
the yesno screen, or plugins that want to keep the theme enabled.

Change-Id: I1ec8f233b730321793eb7d3cad51496ee1b35440
2026-01-13 20:06:33 -05:00
Mauricio Garrido
752467dee4 3ds: Various fixes, optimizations.
This commit does the following changes:

- Fix mkdir implementation not reporting EEXIST error.
- Fix database build feature.
- Small speed-up when parsing directories and files.
- Fix buffering thread hogging cpu and preventing other threads to run.
- Fix sdl plugins not compiling by re-adding ctru specific cflags in sdl.make.

Change-Id: I507c0dcc85cdbcc607ab9c9c6d0b42e6a80caa5a
2026-01-09 20:54:44 -05:00
William Wilgus
032a38df4e lua -- remove direct rb-> libc calls infavor of macro substitution WIP
there are no functional changes in this patch
it just makes it easier to build lua in core app
or plugin form

-Update moved some things around messing up compilation on Native targets
due to *errno

Change-Id: I0921df62d72a87516ad95c68e986b5931c35345e
2026-01-08 22:32:23 -05:00
William Wilgus
ded29fd751 lua plugin remove strfrtime in favor of strfrtm.lua
saves 2.2k on the bin

also supplies gmtime, and a test script to check the returned time/dates

Change-Id: Ib83b11d89bdf44a50830ff51c72ac6395b675603
2026-01-08 21:39:54 -05:00
Marc Aarts
1f97ae73a5 Use user preferred touchscreen mode in 'Main Menu Config' plugin instead of defaulting to 'button' mode.
Motivation:

1. 'Absolute point' mode works fine in this plugin.
2. This plugin is part of the Rockbox menus. If the user setting is not 'button' mode, it is unexpected to have only this menu work in a different mode compared to all other menus.

Change-Id: Iec91d3cd875e8a80e835a4a58d87a6ec84529def
2026-01-03 20:25:13 -05:00
Mauricio Garrido
09a31fff91 3ds: Enable plugins for the 3ds platform.
This commit enables plugins for the 3ds platform.
And adds 3ds specific pad configurations for each plugin.

Change-Id: Ie28fef4da32ed4cd2caa6c9fa3b2fe312ee009ef
2025-12-31 21:13:34 -05:00
Roman Artiukhin
7d067ca798 imageviewer: jpegp: improve downscale quality
Use simple area-averaging for smoother images.

Change-Id: I7ac2db05262500041286404c97a615e4b3a43194
2025-12-31 21:11:51 -05:00
Petr Mikhalicin
19a49220b1 plugin lrcplayer: Fix late rewinding at lrcplayer
If you try to rewind music at lrcplayer it
1. returns back to old time
2. play for some time (1-2 seconds)
3. only after that returns for new time

According to wps code audio_pre_ff_rewind function should be called
before any rewinding. It stops playback and automatically resumes it
after audio_ff_rewind call

Change-Id: Id3755bfe4deeb7cd5d889ad7d8e1dec45061fa5c
2025-12-29 12:58:47 -05:00
Petr Mikhalicin
6f7d70797e plugin api: Add audio_pre_ff_rewind to plugin's API
According to wps code audio_pre_ff_rewind function should be called
before any rewinding. It stops playback and automatically resumes it
after audio_ff_rewind call

So, let's add audio_pre_ff_rewind to plugin's API

Lua scipts were tested:
```lua
-- has issue with rewinding
rb.audio("ff_rewind", 0)
```

```lua
-- no issue with rewinding
rb.audio("pre_ff_rewind")
rb.audio("ff_rewind", 0)
```

Change-Id: I2ad6b9c396760b2086bc0a28633a1c80c3512739
2025-12-29 19:58:26 +05:00
Marc Aarts
1183b1ab1b Rockbox for the HiBy R3 Pro II/R1
Original author Melissa Autumn (https://codeberg.org/oopsallnaps/rockbox-hibyos) with contributions from Marc Aarts.

Adaptation to Rockbox standards by Marc Aarts

Change-Id: I09e5af7ba0a75c648e4b9fd424badc2d3665c943
2025-12-27 15:44:54 -05:00
Petr Mikhalicin
eee6c31b4a plugin otp: Stop freezing display when generate OTP
Sometimes OTP code expires soon and we can't use it. So, We have to
wait for new one. And it's really anoying, when devide stucking at this
time

Change-Id: Ic5e0105b6c051ad2ec2a2421068867be2e497683
2025-12-27 12:08:16 -05:00
Petr Mikhalicin
4e13e69de3 plugin otp: Fix handling of unknown otpauth uri parameters
OTP uri parameters is key value options separated by '&'.
So, we on unknown params we have to reject also everything what was
behind '&'

Example:
otpauth://totp/kek?issuer=petya%40IPARTKN.TEST&secret=1234567890&digits=6&algorithm=SHA1&period=30

"algorithm" was unknown. So, next token after it was "SHA1&period", not "period"

Change-Id: I48eb198fd46212c6422dd8eac214adafdf3a52eb
2025-12-27 12:08:06 -05:00
Petr Mikhalicin
ca57184ff0 plugin otp: Make 'Generate Code' first option at otp plugin
Generating code is more popular action then adding accounts. So, let's
make it first

Change-Id: I15ea07ef63186611c4a87ba741c5a7b5d0d5041c
2025-12-27 12:06:57 -05:00
Christian Soffke
f7ede2b9df plugins: Disk Tidy: wait for dircache
Running Disk Tidy while the dircache is loading is a lot
slower than waiting for it to finish building first.

Typical scenarios for this would be starting Disk Tidy
immediately after booting or after unplugging from USB.

Deleting files during a dircache build also seems to easily
result in memory corruption, as evidenced by visual glitches
appearing in the theme.

Change-Id: I9250d918d916b112ffe2504a9225a0b52bcc3622
2025-12-27 16:29:16 +01:00