Commit graph

5238 commits

Author SHA1 Message Date
Christian Soffke
7ab1a81806 simple_viewer: use UI viewport and SBS title
Also adjust scrollbar margins and height so it matches
the look of normal lists, and hide scrollbars when set
to SCROLLBAR_OFF.

Change-Id: I27f6de7b16cf5ec72e12c7d6377a8772d84947ac
2026-04-29 14:19:48 -04:00
William Wilgus
2d419b4b93 [Feature] FS#13850 - Add SELECT button support in calculator on FiiO M3K
baremetal port add select as a second way to enter

Change-Id: I0e3ab76fee8e6accd4425def3da48fb12a6142e8
2026-04-29 11:29:10 -04:00
William Wilgus
1068433d5b [Bugfix] FS#13878 FS#13862 lua alpha bmp overflow and image flip example
FS#13878 - 292x216 images cause panic
 alpha channel causes overflow

FS#13862 - In rlimg example "flip image" cause error
 missing local variable

save random and rainbow images

fix ball bounce direction

Change-Id: I717eb029f30bf63d2eef0b7997eb04036ffeda15
2026-04-29 02:17:46 -04:00
William Wilgus
6928581bf9 [bugfix] open_plugin_import fails to import full path WIP
settings_load_config() only reads up to 128 characters
while openplugin entries could be upwards of 600

instead use the open_plugins plugin to restore entries

add import from .cfg file
add save to .cfg file
better dupe checking

Change-Id: Iec2506aad14a3eb89dcc558b0fbc1f014aad98b5
2026-04-26 12:56:13 -04:00
Aidan MacDonald
31d8118581 plugins: sdl: fix LoadWAVStream failing to load WAV files
Reading the WAV length seems to have been accidentally
commented out in commit e28d1fe916. The WAV length is
not used here but disabling the read broke WAV header
parsing completely.

Change-Id: Ia6d0b1a168b2b029bd1cbec9bdc482caf6fa0487
2026-04-25 15:54:34 +01:00
Christian Soffke
2690418551 plugins: imageviewer: use theme in all submenus
Affects submenus "Toggle Slideshow Mode"
and "Slideshow Time" that were left un-themed.

Also prevents theme from being re-toggled
when entering "Display Options" submenu.

Change-Id: I3995d5eb12bbc8fb868c179db8043576eb675dbc
2026-04-24 15:25:41 -04:00
Christian Soffke
7960dbb9a7 plugins: Fix muted mixer channel (FS#13809)
Fixes regression where you may not have heard
any audio from some of the plugins modified by
commit 017dd72, due to the playback channel not
being unmuted.

Change-Id: Iaa184161c79d353dff6ef9bf3e0b39778c8b1bcd
2026-04-24 01:01:14 +02:00
Aidan MacDonald
f9a5d6fe86 quake: fix crash from strange printf behavior (FS#13821)
This was a latent bug exposed by commit a3f2b64a46
("Enable float formatting in printf"). The version
number is passed as 1.09f, but somehow ends up printing
a string that is so huge it overruns the destination
buffer and corrupts the return address on the stack.

Using snprintf prevents the buffer overrun and gets
quake working again, though this doesn't address the
underlying bug with printf.

Change-Id: I37e4426bc6ebca42d83b5a3b659da497b652d1ae
2026-04-22 22:49:36 +01:00
Aidan MacDonald
d815053360 Add support for -fstack-protector in native builds
-fstack-protector only needs a small amount of runtime
support to work on native builds. It increases code size
by ~1.5% on ARM/MIPS; -fstack-protector-strong adds 3-4%.
This is disabled by default and must be enabled by passing
'--with-stack-protector' to configure.

Change-Id: If952e711d3673c9b469895f08c7bff70b3d95df6
2026-04-21 21:16:28 -04:00
Christian Soffke
088b3345fb pitchscreen: Fix unbalanced pcmbuf_set_low_latency when connecting USB
Change-Id: I73652ef27c24485faefe16c678406d78b0d6e0fd
2026-04-19 17:57:41 -04:00
Christian Soffke
9000614224 pitchscreen: Fix dropouts when button held down
Change-Id: I0f23ad6463f7938e832b0c5da2c121c5a5e5faa8
2026-04-19 17:57:34 -04:00
seroteunine
a1040cda5d plugins: add timer/countdown plugin
-New countdown timer plugin with pause, overtime support
-Add full name to credits and manual entry
-Make status strings translatable

Change-Id: I1437b2e5ac5ede292bdab8d36e58b81326ea2ba3
2026-04-16 21:35:52 -04:00
Christian Soffke
f4dc4d89dc plugins: imageviewer: Hide info by default when loading file
Looks nicer, especially when the "View Album Art"
option is used.

Add delay to progress bar, so it only appears when
250ms have passed.

Change-Id: I183c839f1ab206385cd01327922933b544c4b78b
2026-04-16 07:58:27 -04:00
mojyack
e2040cc98c pcm_mixer: introduce mixer_buffer_cbs
intended to add sampr_changed callback to buffer hook as well as mixer
playback

Change-Id: I9df6194a884cfb813342a827b7fdc3bccbe3d60c
2026-04-14 06:50:39 -04:00
mojyack
cb04b8167c pcm_mixer: introduce mixer_play_cbs
the added sampr_changed callback can be used to notify the mixer user of
frequency changes

Change-Id: I309db76576090fd5c019a1ba082af446129dd4a3
2026-04-14 06:47:36 -04:00
mojyack
012c61eadf plugins: mikmod: remove hw_freq_sampr usage
TODO:

 * Dynamically hide the sample rates that aren't supported
   by the current sink
 * Better "default" selection based on hardware type/speed

Change-Id: I261544fc3ba78429eaaa81c89aebd2e68106caa3
2026-04-11 14:18:36 -04:00
Solomon Peachy
d82d0be595 FS#13802 - Correct untranslated menu headings in mpegplayer
Every menu heading except the top-level "MPEG Player" (ie the name of
the plugin) now uses pre-existing translated strings.

Change-Id: I65ee64ddc537be4947872da4757bc2f6a27d0bae
2026-04-06 08:13:30 -04:00
mojyack
4cd3d3c519 doom: fix out-of-bounds access of caps->samprs
Change-Id: Icde0146648477dbd0442c67258ff6ae1ff62c994
2026-04-05 14:48:28 -04:00
Solomon Peachy
a2f652cf1f disktidy: Add '__MACOSX' directories to the list
Change-Id: If25ccbeaf1ada8ae4bcc9a1853302c297f7a3e08
2026-04-01 10:32:40 -04:00
mojyack
6be230275e plugins: pdbox: remove HW_SAMPR_CAPS usage
Change-Id: I4e37213a38ac5d1260bc2fa208828abd55fc2647
2026-04-01 08:48:12 -04:00
Solomon Peachy
65f2105445 Revert "sdlapp: Enable compilation of most apps/games"
This reverts commit 96b5642c93.

Reason for revert: Accidentlly merged this before it was ready.

Change-Id: I9344988f6556b774479dd4fd209f30e450ad0858
2026-03-30 20:52:42 -04:00
Erin of Yukis
96b5642c93 sdlapp: Enable compilation of most apps/games
Removes `#ifdef`s in many places to just have `HAVE_TOUCHSCREEN` be the
input fall back, as is already tentatively the case in the code.

Solitaire was the only app excluded since there aren’t enough buttons
for it mapped in the SDL layer.

Change-Id: I62450b7110b86c8037a121e96cd2e46754be79a3
2026-03-29 20:32:58 -04:00
Solomon Peachy
e677895e29 xrick: Fix a race condition that could result in audio stopping
get_more() can disable audio when there's nothing more to genreate
but that can get called (and "fail") _before_ we set the flag
that audio is turned on.  If this occurs, we will incorrecly
set the "audio on" flag after the failure which will prevent
the mixer from being re-started.

(We're at the mercy of thread scheduling)

Change-Id: I4f6c50a71c7ad685ff45f775e7e4b1c61b8b7777
2026-03-29 18:07:00 -04:00
Solomon Peachy
f235443ba1 FS13829 - Add Android-specific entries to disktidy plugin
Notably, the 'Android' and 'LOST.DIR' top-level directories.

Change-Id: Idee411e518a8b73e4f0a4283e368e35c8a2f0938
2026-03-29 09:25:28 -04:00
mojyack
9b207bfb91 plugins: pacbox: remove hw_freq_sampr usage
Change-Id: I365b4f901dd2fbcc22bf1a8009a9d9b58a1da556
2026-03-25 07:35:52 -04:00
Solomon Peachy
2578411f00 Fix red in 9c708e3876
Test build didn't catch this due to a dependency failure.  (WTF?)

Change-Id: I0487a02e9fad8b6bec9b93066619aef04c838d3b
2026-03-25 07:30:27 -04:00
mojyack
9c708e3876 plugins: midi: remove HW_SAMPR_CAPS usage
Change-Id: Ie4962cf6d4f2f9078fa348f8f6f638cfbc0047a5
2026-03-25 07:02:49 -04:00
William Wilgus
db849f5f8a OpenPlugins reset start_in_screen when database record is deleted
This is more of an ease of use enhancement than a bug
but it should prevent the annoyance of the  message about the missing entry
without needing to go and reset the start in screen setting

Change-Id: I15eb005ce254eb0f0d3f2543abf710b68468a8b3
2026-03-19 12:05:51 -04:00
William Wilgus
314becf2ac FS#13824 - In keyremap plugin in "test keymap" context is wrong
The context was supplied with context|flag but expected context x flag

Also fixes a bug where the user export doesn't show the correct save location
if changed -- it still saved properly anyway..

Change-Id: I061d63e15475d2cb73d070737dc18d56d7800472
2026-03-14 11:28:00 -04:00
Vencislav Atanasov
a77c5d2219 3ds: Various fixes, mostly for compiler warnings
- Move all devkitpro includes before the Rockbox ones so that the macros which are both conflicting and unused can be undef'd
- Remove unused result variables
- Exclude an unused function from being compiled for this target
- Fix hex number formatting
- Fix the return value of dummy functions
- Fix macro redefinition in the plugins keypad config
- Remove duplicate button mapping
- Turn off -Wchar-subscripts as it's already handled in Rockbox's ctype.h

Change-Id: I3f5a3d492c585f233277a380feaea5fe877a044f
2026-03-13 10:24:36 -04:00
William Wilgus
86f5665cd0 [bugfix] FS#13709 - Mpegplayer conflicts with additional fonts in the theme
FONT_UI is a placeholder when it gets assigned it isn't resolved
immediately

when its time to resolve the font it is processed with font_get(int font)
first it sets it to the last slot
and then decrements till it gets a valid font

I think this is intended to allow the largest
chance of getting a loaded font

instead if global_status->font_id has been set use that
similar to how the screen helper does

Change-Id: If97e504466265fafecbe07b7b72adb4808b67e6a
2026-03-09 11:05:32 -04:00
William Wilgus
951cbdbec6 [bugfix] FS#13812 - ZXBox always returns a leak file handles error
tapefiles return a leak handle error if it is quit before end of tape is
reached, ensure it always gets closed on exit

Change-Id: I0f6224c7164fd87c209166be9e10d62d6a644a50
2026-03-08 12:07:53 -04:00
William Wilgus
4503d63ec8 [bugfix] zxbox unsupported files crash OOB access to extension list
invalid files return -1 but thats not checked before accessing
invalid array position

Change-Id: Ic07cca250e2584e2e95fa7c41085b254f94ad591
2026-03-08 11:26:12 -04:00
Aidan MacDonald
d6d4ff7af2 make: fix '--plugins=' option not being respected in all cases
If the list of plugins given to configure did not include
a subdir-based plugin, then all subdir-based plugins would
be built (since SELECTED_PLUGINS_SUBDIRS is empty then).

To prevent this issue use an explicit value ('DEFAULT') to
signal that we want to build the standard set of plugins.

Change-Id: I42d9dc8d754ed9ac1cd4b5c62c0a106ca3dfcd91
2026-03-07 21:57:34 +00:00
William Wilgus
a5853b1173 FS#13796 - Add search to text editor plugin
Adds a case-insensitive find function to text_editor

Change-Id: I8d4bc7a65d2659d5f6aec0304e69905bf2ffe0e1
2026-03-07 12:58:04 -05:00
Aidan MacDonald
a80911a0ce plugins: clean up IRAM memory region definitions
Check for USE_IRAM to determine if IRAM should be used.
SoCs that don't define USE_IRAM no longer need to define
IRAMSIZE to 0 either.

When IRAM is not used, any symbols bound for IRAM will
be discarded instead of linking them in DRAM. In theory
these symbols shouldn't exist, since nothing should be
placed into IRAM sections to begin with for !USE_IRAM.
If an IRAM section attribute leaks into the plugin/codec
anyway, it should now cause a link time error.

Change-Id: I55c1854cfe8beb5cb09b865336906f9945084b33
2026-03-06 16:26:35 -05:00
Aidan MacDonald
c9172d4ff8 plugins: clean up target DRAM/IRAM mapping defines
Move the definition of DRAMSIZE into the SoC-specific
ifdef block below. This keeps the memory map defines
for a SoC together in one place and as a result it is
much easier to understand.

Change-Id: Ie7293616a3c572b381cfeab3531751562c19a9c4
2026-03-06 16:26:04 -05:00
Aidan MacDonald
a24142b234 firmware: cleanup duplicated DM320 LCD memory defines
Move the rather large block of code that's been copied
in three separate linker scripts into the CPU header.

Change-Id: I9f38e4901fa4ff699f00d97064a9cdaf7cfd6aab
2026-03-06 15:55:35 -05:00
Aidan MacDonald
99dd797169 firmware: cleanup PortalPlayer NOCACHE_BASE defines
Move the definition of NOCACHE_BASE to the CPU headers
instead of having them copy-and-pasted in a few places.

Change-Id: Ibbab27a5a07906d46dbd4dd9065f2238bc885d6b
2026-03-06 14:15:29 -05:00
Aidan MacDonald
7eeb4e4302 firmware: refactor CACHEALIGN_BITS/SIZE defines
Mostly motivated by PP needing CACHEALIGN_SIZE in linker
scripts, which can't include system.h, so move these to
cpu.h instead. Also gets rid of the default 32 byte line
size that was used if the target didn't define alignment
itself. RK24xx, DM320, and JZ4740 were missing this but
have been confirmed (from datasheets) to use 32-byte cache
lines.

Add checks to make sure the macros are appropriately
(un)defined based on the HAVE_CPU_CACHE_ALIGN define,
and make sure their values are consistent when they
are defined.

Disable HAVE_CPU_CACHE_ALIGN for hosted targets since it
arguably doesn't matter if there's a cache, if we aren't
responsible for cache maintenance.

A few files in rbcodec use CACHEALIGN_SIZE, but these
can be converted to MEM_ALIGN_SIZE, which is identical
to CACHEALIGN_SIZE if the latter is defined. On other
targets, it aligns to at least sizeof(intptr_t).

Change-Id: If8cf8f6ec327dc3732f4cd5022a858546b9e63d6
2026-03-06 14:49:00 +00:00
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
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
mojyack
38d978a512 plugins: sdl: remove hw_freq_sampr usage
Change-Id: I78311f63f04a68b968a584dd485e795813876fc3
2026-03-03 20:00:46 -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