Commit graph

18325 commits

Author SHA1 Message Date
Aidan MacDonald
e61bf40542 make: define PLUGIN when preprocessing plugin linker scripts
This matches the behavior of codecs, which define CODEC,
and is needed to get an accurate definition of USE_IRAM
out of config.h.

Change-Id: I84855ba88d01495bb63c609b3e4d67922b908440
2026-03-06 14:49:00 +00:00
Aidan MacDonald
676d3b6432 plugins: always include cpu.h in linker script
Change-Id: I5a5dad0c6094735fa3af676667232571bf0efdf3
2026-03-05 21:13:50 +00:00
Aidan MacDonald
5a236963e4 misc: get rid of unused LOADADDRESS define in makefiles
Change-Id: I990aaca9b0b8230efba09c87ace2430fbfa29b74
2026-03-05 20:11:07 +00:00
Aidan MacDonald
cf1e3fd5a3 misc: remove leftover pnx0101 support code
Remove now-unused stuff related to the PNX0101 processor,
which was missed during the removal of the IFP-7xx port.

Change-Id: I5ff248b3e83cb67a357743130c3e51ed84a720e5
2026-03-05 15:41:06 +00:00
Aidan MacDonald
58ffe7bc34 plugins: remove default value of DRAMORIG
Change-Id: Ia5efdbef207890682bfd8aa8cacce32d7e79c2b2
2026-03-05 10:31:35 -05:00
Solomon Peachy
d76c9c992c FS#13746: open_plugin_run() doesn't handle "not found" properly
If the specified key wasn't found, we would fall back to trying to launch
a plugin with the LANG_* key.  This will fail, resulting in an error
that spells out the (inappropriate) LANG_* text.

Instead, fail out with a more appropriate error.

Change-Id: I046878f87a2ef2bc994d0b7d037359695a18d392
2026-03-05 08:40:12 -05:00
Solomon Peachy
ba69fb9bbf doom: Rework audio init to properly respect pcm_sink capabilities
Try to use 11KHz if possible, if that's not an option, fall
back to 44KHz which is always available.  Simulators always use
44KHz.

Change-Id: I7547e7c1bddf7ce4634f7fd7bc64d4a5c9b62c29
2026-03-05 07:51:27 -05:00
mojyack
f81126bcf0 plugins: test_sampr: remove hw_freq_sampr usage
Change-Id: Iaf9f7f495364fd87db8e25f4ce147540b370f82b
2026-03-05 07:43:25 -05:00
William Wilgus
086c29267c [bugfix, AS] zxbox keyboard input overflows text variable
int zx_kbd_input(char* text/*, int buflen*/)
is supplied with a single char by all callers
thats fine till we get to here in the decode routine
while (*utf8)

since it just reads till it hits a 0 its probably fine
but Address Sanitizer caught it

make c a char array of 8 bytes to ensure a NULL

Change-Id: Iad3284df34cb7451422fc96ae0bb8e159ee440b0
2026-03-05 01:14:17 -05:00
Solomon Peachy
fe0c404db1 FS#13810 - Updated Italian Translation (Alessio Lenzi)
Change-Id: I8143e6fcb78dba6d5aabf9bf227862c1e025b6a9
2026-03-04 08:25:37 -05:00
Solomon Peachy
5d1185774c plugins: Remove audio_master_sampr_list from the plugin API
From what I can tell it has _never_ been used.

Change-Id: I08f3860f04add35859e82b8e94abfa9789a45026
2026-03-03 21:31:58 -05:00
mojyack
f343168051 settings_list: apply playback freq changes only when current sink is builtin
Change-Id: I1410b9fef621be31676f10269fdb07d31d827acb
2026-03-03 20:02:52 -05:00
mojyack
38d978a512 plugins: sdl: remove hw_freq_sampr usage
Change-Id: I78311f63f04a68b968a584dd485e795813876fc3
2026-03-03 20:00:46 -05:00
mojyack
f87ff3a9b2 playback: support non-builtin sinks in audio_guess_frequency
Change-Id: I87b1b489ffc5b9ae05c3233bc091cd7be3da406e
2026-03-03 18:19:07 -05:00
mojyack
76d63246c5 playback: do not hardcode pcm sink in audio_set_playback_frequency
make audio_set_playback_frequency() can be used for non-builtin pcm
sinks.

Change-Id: I9d1110f28753e912b84515594a1361cd17fa5e74
2026-03-03 18:17:16 -05:00
Solomon Peachy
ea570c5728 pcm: Make more of the low-level PCM API private
* pcm_play_data
 * pcm_play_stop
 * pcm_play_stop_int
 * pcm_is_playing
 * pcm_set_frequency
 * pcm_get_frequency
 * pcm_apply_settings

Now, the only user of these functions are the mixer and recording layers
that provide a higher-level API to plugins and the main [playback]
application.

Outside of the PCM core, pcm_apply_settings() was only used immediately
following a call to mixer_set_frequency(), so the latter function
now always calls the former.

Change-Id: I61c3144dc156b9de9b7963160b525c6d10c6ad4b
2026-03-03 13:09:21 -05:00
Solomon Peachy
be1e074800 doom: minor code cleanup (replace magic constant with an existing define)
Change-Id: I39dd9accb0bb116c0c23035b75b7be141a236c01
2026-03-03 12:42:09 -05:00
Vencislav Atanasov
b782f15eaa Update Bulgarian translation
Change-Id: Iac4ef4b9ae6e5778dc37fb423297336480f9b8a0
2026-03-03 14:20:49 +02:00
Solomon Peachy
c9417e24c1 FS#13807 - Updated German translation (Wilfried Winkler)
Change-Id: I01f4ba343de72386cf07efe9afdf1535659cb19f
2026-03-03 06:59:40 -05:00
Aidan MacDonald
eafcbd3fd6 debug_menu: show 2nd SD/MMC card info only if NUM_DRIVES > 1
Toggling to the second card was allowed if HAVE_HOTSWAP
was defined, but on targets with a single hotswappable
SD card -- for example many JZ47xx/X1000 targets -- this
ends up calling card_get_info() on a non-existent drive.

A slightly better option is to check if NUM_DRIVES is
greater than 1. This is still just guessing the number
of SD/MMC slots, but it should be wrong in fewer cases.

Change-Id: Ifca29323f1c7091d9cce55c73147d0d1decae9a5
2026-03-02 17:10:55 -05:00
Solomon Peachy
c9c6fde6eb Translation updates:
- Korean (Hoseok Seo)
 - Polish (Adam Rak)
 - Slovak (Matej Golian)

Change-Id: I5c6920c93ed7c9dd92eea2a076b763e5ff86f20e
2026-03-02 07:50:32 -05:00
Solomon Peachy
e15451815a tagcache: Prevent a infinite tagcache scan/commit loop
If no new entries were committed, there's no need to kick
off a new scan/autoupdate.

Change-Id: I3e8e497e4fe04d46612401e1ec6b72f30a8b77a4
2026-03-01 21:11:36 -05:00
mojyack
dfa33c246b pcm: introduce pcm_sink
move target-specific pcm operations into builtin_pcm_sink.
in subsequent commits, another pcm_sink is added, and it becomes
possible to switch between them.

Change-Id: I8f8b9661e01d6e6472f34224ddc3760856778457
2026-03-02 10:09:11 +09:00
Solomon Peachy
9931781185 Translation updates
- Polish (Adam Rak)
 - Slovak (Matej Golian)
 - US English (myself)

Change-Id: I68eb6405709ce8e964b8cd749377a5df4a7d8f5a
2026-03-01 17:48:25 -05:00
Solomon Peachy
17edcbd42a talk: Improvements in voicing "years"
* Enhance LANG_VOICED_DATE_FORMAT to distinguish between "numeric year"
   and "grouped year"  (2020 -> "two thousand twenty" vs "twenty twenty",
   respectively)
 * Metadata year voicing will now use "numeric year" if specified in
   LANG_VOICED_DATE_FORMAT instead of always using grouped year.
 * Datetime year voicing respects the format instead of always using
   "numeric year"

Change-Id: Icc25da7c36107d3e4e8c70291f87a915e2bcabd3
2026-03-01 16:31:27 -05:00
yegor chernyshov
c86fd2318d added setting to retain file browser directory on reboots WIP
I added the setting keep_directory which automatically updates
the last directory visited and restores it on next boot

--added manual entry

Change-Id: I0ffe6531d591d693806ce0bf56fe22b99e3315e9
2026-03-01 15:05:09 -05:00
Solomon Peachy
380b7b3e32 FS#13794 - Slovak Translation improvements (Matej Golian)
ImageViewer & the Playback Control Menu

Change-Id: Ia39ad381e2e9560add3d45b9ce6396f0cb24f76e
2026-03-01 08:46:36 -05:00
Aidan MacDonald
3a70003d23 echoplayer: fix STD_CONTEXT action being masked by STD_OK in keymap
Change-Id: I4e7546c0817b027d04ac12ba151dfca764915c6f
2026-02-26 18:15:24 -05:00
William Wilgus
9a6e3799e1 validate global_settings.start_directory on startup
check for an ending slash and verify paths other than root
exist

Change-Id: I4e1b3d51d99e5f5b66bcc0d66866ae35a554f84d
2026-02-26 09:50:34 -05:00
Solomon Peachy
ad10ed806b FS#13791 - Slovak Translation improvements (Matej Golian)
'Single Mode', 'USB-DAC' & 'Sharp' filter type

Change-Id: I6e6fb7f55acaf00cc30088cb61fc4fb00de7f766
2026-02-25 09:11:49 -05:00
Solomon Peachy
3d37de4d01 FS#13790 - Update ro translations (Mihai Alexandru Vasiliu)
Change-Id: I4ed1399c006342887db0ac0393ca641d111cb117
2026-02-24 08:52:09 -05:00
Solomon Peachy
d1fa956079 talk: Voice discnum/tracknum as a generic number, not "year".
Only applies to "string" values, numeric values were already
voiced correctly.

Change-Id: If66991ced6e04834a8b210cbbf45cbf3741da06e
2026-02-24 08:07:21 -05:00
Solomon Peachy
bcdec75f94 FS#13789 - Slovak: Fix Bitrate Translation in Recording Menu (Matej Golian)
Change-Id: Id0557dd64cfeb8ac4ee214c78afc76839354f7fe
2026-02-23 09:26:46 -05:00
Solomon Peachy
7c2800beb4 FS#13788 - Updated Slovak Translation (Matej Golian)
Change-Id: I3baa9eee462f1960ccd0d6374983c44d4132d392
2026-02-22 14:35:43 -05:00
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
Roman Artiukhin
3373ed6744 playback: fix single mode handling with auto frequency switch enabled
Fix single mode fails to pause between tracks with different sample rates with auto frequency switch enabled.

Fixup for c199d9a3

Change-Id: I51bbd33a15be16b711b3a8e46c0cab1b15a93705
2026-02-19 11:59:10 -05:00
Roman Artiukhin
5cf3c6bf9a Add ability to specify autostart plugin path and argument
Extend AUTOROCK define functionality to allow specifying both the
autostart plugin path and its argument.

Example:
#define AUTOROCK VIEWERS_DATA_DIR "/imageviewer.rock"
#define AUTOROCK_ARG "/jpegs/sample.jpg"

Change-Id: Icc41bceac676e8db17d3a63baefdf96e3023c181
2026-02-19 10:28:35 -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
c199d9a369 playback: fix single mode briefly plays audio from the next track before pausing
Change-Id: Iab82427d5429210701e65103325f72c7919685e1
2026-02-18 17:04:31 +02: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
ea5b0fb33a Clip Plus, Zip, Xduoo X3 Reconfigure keyboard to better use screen
Someone opened a bug, its not a bug but it is annoying
these are the smallest screens so the 18 character width ends up
wasting lines that could be displaying characters

this layout repeats some but should be more ergonomic

Change-Id: I2ed4c0887477aac49821c4edb6f3bf174e38d36e
2026-02-09 22:17:22 -05:00
Solomon Peachy
3629a765d2 FS13774 - Translate units in file operation splash messages
'MiB' and 'KiB' were hardcoded; use LANG_MEBIBYTE/KIBIBYTE instead.

Change-Id: I456521a222e213379f929e4d1113e084f87a3ac4
2026-02-08 20:02:38 -05:00
Solomon Peachy
7c00a059ff FS#13781 - Updated Hungarian Translation (Gyúróczki Norbert)
Change-Id: I59c57b025c4afdfd5b66ffc63f5316da1d86c657
2026-02-08 17:29:21 -05:00
William Wilgus
ed84047884 [Fix Red] open_plugins rb-> is required
Change-Id: I1f1a7e487d46a0427be7cebd319c65b848b4a9fb
2026-02-08 14:39:17 -05:00