Commit graph

2522 commits

Author SHA1 Message Date
Solomon Peachy
3f43fe3cd8 checkwps: Validate all fonts in themes
Makes sure any fonts specified are either:

 * Present in the theme itself
 * One of the fonts in the Rockbox bundle

Change-Id: I215132835e2ae7faa06662637bc867df9c5dba92
2025-10-27 09:52:16 -04:00
Mauricio Garrido
b47d0ef3cf 3ds: Restored default cflags to devkitarm compiler
This commit fixes a "Data Abort" segfault when loading a codec.

Change-Id: I7b0b8f37b588504edec4a029fdd69f0875f664f5
2025-10-26 20:09:54 -06:00
Mauricio Garrido
a4de1195cd 3ds: 3ds port sources. First set of two
This commit adds changes to the original rockbox sources.

Note: the port files, functions, folders, etc., will be referred
to as 'ctru' to avoid using the Nintendo name elsewhere.

Change-Id: I0e2d3d4d2a75bd45ea67dc3452eb8d5487cf1f5a
2025-10-23 20:09:09 -04:00
Solomon Peachy
af7f45bac0 Revert "genlang: Explicitly decompose all display strings"
This reverts commit 4bc336b8be.

Reason for revert:  Font coverage for decomposed diacritics is actually *worse* than using fully composed characters.

Change-Id: Ide37dadd5e9883c1c764ffa35f7e64a7ba91d705
2025-10-22 09:28:35 -04:00
Solomon Peachy
4bc336b8be genlang: Explicitly decompose all display strings
We already have pretty solid support for glyph combining, so this will
allow us to utilize that to fill in gaps of our font coverage.  This is
most notable for Vietnamese, Turkish, and numerous other latin-based
writing systems that have unique glyphs that are essentially just a
"standard" ascii letter plus a diacritic mark.

This leaves *voice* strings fully composed/normalized.

It also has no effect on user-supplied strings (eg filenames or file
metadata)

When we eventually utf8proc merged, this can be removed in favor
of always doing the [de]composition in-system.  We will also need
to revisit our diacritic tables to ensure there's nothing missing.

Change-Id: I7012d27010bb33fb0b565ac7dfd57a16bdcad34f
2025-10-22 08:00:18 -04:00
Solomon Peachy
e09747fe2b builds: Enable Vietnamese voices on nightly runs
Change-Id: I0f2c33d2d95695829be672aa2e6fe5b8e683d63a
2025-10-20 16:51:46 -04:00
Solomon Peachy
0f8f05db29 build: Enforce -Wundef on all targets.
Simulators (and some hosted targets) no longer get a free pass!

This commit includes general fixes for simulator builds, but it
will undoubtedly result in many more warnings that need to be properly
fixed.

Change-Id: I6bb9d3fc4a29ccfe40366c438e058b5dfff0ddc3
2025-10-12 16:12:56 -04:00
Solomon Peachy
7ba4af6ab0 configure: Delete an obsolete, unused toolchain reference
'arm946cc' was only used by the never-finished 'tcc77x' targets that
were removed from the tree in 3ba2f6e5c7 (April 2021)

Change-Id: I935847ec9d339b8e90c6d2362113c2ff94b8b20f
2025-10-08 13:46:10 -04:00
Solomon Peachy
b4565feed6 builds.pm: Add disabled TTS entry for Hungrarian
Will enable once we cross the 85% threshold.

Change-Id: Ia3c5c591fe0bd8bec610e7025e98b8c868e0bfc8
2025-10-04 10:18:27 -04:00
Solomon Peachy
79e4e075e6 updatelang: Respect the target ordering in individual phrases
When matching the target id in a phrase, if there is more than one match
we always use the final one.  This allows us to easily specify a
default/wildcard entry that gets overridden by a target-specific one.

The list of targets was sorted alphabetically to ensure consistent ordering
from one run of the tooling to the next.

However, if a phrase contained both device-specific phrases as well as a
generic "feature" fallback, alphabetical sorting may screw things up, as
the "feature default" was no longer at the top of the list. This is
known to be an issue for LANG_TIME_SET_BUTTON and LANG_TIME_REVERT, but
may affect other phrases as well.

(To be blunt, we shouldn't be mixing feature and device-specific targets
 in this context.  The "feature default" should be removed in favor of
 target-specific entries, but in this specific case it looks to be a
 real PITA due to incomplete keymaps)

Consequently, work around this by sorting the target list within each phrase
based on the ordering in the master (ie English) language file.

Change-Id: Id32439c179a98663f414530fb36012f9b217c1b6
2025-10-02 12:36:49 -04:00
Solomon Peachy
8a94a37502 checkwps: Exclude targets that only exist as a bootloader from buildall
Change-Id: I95cb65a204b4e509d48c9a8fb009d438f382a9f6
2025-09-27 13:47:04 -04:00
Solomon Peachy
d7d7627baf checkwps: Validate %?St() tags
This will bail if referenced setting name does not exist.

Change-Id: I7abd54ec1260d3da6024ebec809f8e270b0a84e5
2025-09-27 10:19:20 -04:00
Solomon Peachy
d29663a412 Revert "configure: remove redundant ARG_ARM_THUMB checks"
This reverts commit 5323c49fe6.

This caused build failures on two of the three affected targets.  The intent
of the delted code was to force thumb on unless it had been explicitly
disabled.  Due to extreme space constraints those targets _need_ to
be built in thumb mode.
2025-09-21 15:50:24 -04:00
Solomon Peachy
977b6ef692 Toolchains: Update to GCC 9.5.0
GCC 9.5.0, binutils 2.38, gmp 6.1.2, mpfr 4.1.1, mpc 1.2.1, isl 0.18

Native:

  * arm - mini2g, nano2g, ipod6g works
  * mips - xduoox3 works
  * m68k - binaries untested

Hosted:

  * arm - samsungypr0 works
  * mips - xduoox3ii works
  * Android NDK - unchanged at GCC 4.9.4

Change-Id: I80faed4c74f7238265bf7a19b794e8476c351411
2025-09-21 09:03:00 -04:00
Solomon Peachy
5a1a5de3e3 build: Use 'nproc' instead of counting /proc/cpuinfo entries
Change-Id: If3b31504bcd37692ad109bb2779620e2302aa9fa
2025-09-21 09:03:00 -04:00
Solomon Peachy
5323c49fe6 configure: remove redundant ARG_ARM_THUMB checks
Change-Id: I25a5e631605173596de5971ff8d9bd7b7500791f
2025-09-21 09:03:00 -04:00
Solomon Peachy
c14ea0e01e samsung ypr0/r1: Shrink audio buffer from 31 to 23MB.
This frees up some headroom in the OS for things like dlopen() and
more effective disk caches.

Change-Id: I8b8dca65ad70adecfcbe674129c294e5ab3b21bb
2025-09-13 08:44:38 -04:00
Solomon Peachy
19ee9363d1 ibasso: Rejigger RAM and buffer sizes a little
Shrink audio buffer from ~256MB to ~192MB.  Increase plugin buffer size
to 2MB, not that it should matter given how much extra RAM this platform has.

This leaves plenty of room for the base OS to do what it needs to do.

Change-Id: I59ca235b9cf80cf86d406e4a144fee7d7784ed5d
2025-09-13 08:44:38 -04:00
Solomon Peachy
32d52e0415 hosted: Shrink audiobuffer to (MEMORY_SIZE-1) megabytes
This represents a 256K increase from the former (MEMORYSIZE-0.75), and
is necessary due to the growth in our binary sizes over the past decade
or so.

It is debatable if this is enough given that our actual memory
usage is approximately (MEMORYSIZE+3) megabytes (plus runtime OS
overhead) for the typical hosted build, but giving the host OS a bit
more breathing room is warranted.

Change-Id: I53e044585a32efd50a85e68d64fd21921eda01a3
2025-09-12 23:15:11 -04:00
Solomon Peachy
161f8c0e24 configure: Document the 'memory' parameter for hosted builds
Change-Id: I49979cf20fd5405bbb90dff297f5e695e046f2b9
2025-09-12 20:50:17 -04:00
Solomon Peachy
a2c10f6189 unicode: Support characters beyond the first unicode plane
We used 16-bit variables to store the 'character code' everywhere but
this won't let us represent anything beyond U+FFFF.

This patch changes those variables to a custom type that can be 32 or 16
bits depending on the build, and adjusts numerous internal APIs and
datastructures to match.  This includes:

 * utf8decode() and friends
 * font manipulation, caching, rendering, and generation
 * on-screen keyboard
 * FAT filesystem (parsing and generating utf16 LFNs)
 * WIN32 simulator platform code

Note that this patch doesn't _enable_ >16bit unicode support; a followup
patch will turn that on for appropriate targets.

Appears to work on:

  * hosted linux, native, linux simulator in both 16/32-bit modes.

Needs testing on:

  * windows and macos simulator (16bit+32bit)

Change-Id: Iba111b27d2433019b6bff937cf1ebd2c4353a0e8
2025-09-12 09:24:30 -04:00
Solomon Peachy
eb03c7b4d0 build: Newer toolchains need a few tweaks to linker options.
Pull those fixes in now

Change-Id: I71c373ecc9d062ca997eb940c7d84a94e2d678aa
2025-09-07 15:40:44 -04:00
Solomon Peachy
e9b8413f49 Revert "Toolchains: Update to GCC 10.5.0"
I pushed the wrong working tree AGAIN

This reverts commit b92033f716.
2025-09-07 15:22:31 -04:00
Solomon Peachy
b92033f716 Toolchains: Update to GCC 10.5.0
All toolchain dependencies are circa the GCC 10.5.0 release:

  GCC 10.5.0, binutils 2.40, gmp 6.2.1, mpfr 4.1.1, mpc 1.3.1, isl 0.24

Native:

 * arm - mini2g, nano2g works
       - ipod6g hangs at logo display
 * mips - xduoox3 works
 * m68k - binaries untested

Hosted:

 * arm - samsungypr0 works
 * mips - xduoox3ii works
 * Android NDK - unchanged at GCC 4.9.4

Change-Id: Ic157255d76030e66325719e64331f553cb7c4363
2025-09-07 15:11:52 -04:00
Christian Soffke
8418fc9078 tools: makefile: include wavtrim and voicefont in CLEANALL
Change-Id: I79040c0a5ac8dd68c46e984501e523efcc4c5f6f
2025-08-28 06:52:25 +02:00
Solomon Peachy
a60c09c24c Revert "Toolchains: Update to GCC 10.5.0"
This reverts commit 94712b34d4.
2025-08-20 16:09:54 -04:00
Solomon Peachy
84504c7471 Revert "internals: Support characters beyond the first unicode plane (WIP)"
This reverts commit d05c59f35b.
2025-08-20 16:09:49 -04:00
Solomon Peachy
d05c59f35b internals: Support characters beyond the first unicode plane (WIP)
We used 16-bit variables to store the 'character code' everywhere but
this won't let us represent anything beyond U+FFFF.

This patch changes those variables to a custom type that can be 32 or 16
bits depending on the build, and adjusts numerous internal APIs and
datastructures to match.  This includes:

 * utf8decode() and friends
 * on-screen keyboard
 * font manipulation, caching, rendering, and generation
 * VFAT code parses and generates utf16 dirents
 * WIN32 simulator reads and writes utf16 filenames

Note that this patch doesn't _enable_ >16bit unicode support; a followup
patch will turn that on for appropriate targets.

Known bugs:

  * Native players in 32-bit unicode mode generate mangled filename
    entries if they include UTF16 surrogate codepoints.  Root cause
    is unclear, and may reside in core dircache code.

Needs testing on:

 * windows simulator (16bit+32bit)

Change-Id: I193a00fe2a11a4181ddc82df2d71be52bf00b6e6
2025-08-20 16:08:43 -04:00
Solomon Peachy
94712b34d4 Toolchains: Update to GCC 10.5.0
All toolchain dependencies are circa the GCC 10.5.0 release:

  GCC 10.5.0, binutils 2.40, gmp 6.2.1, mpfr 4.1.1, mpc 1.3.1, isl 0.24

Native:

 * arm - mini2g, nano2g works
       - ipod6g hangs at logo display
 * mips - xduoox3 works
 * m68k - binaries untested

Hosted:

 * arm - samsungypr0 works
 * mips - xduoox3ii works
 * Android NDK - unchanged at GCC 4.9.4

Change-Id: Ic9c4ad487927d2ad4247c140f1a7db2740e5f316
2025-08-20 09:16:57 -04:00
Solomon Peachy
b0a4aae76e tools: Delete the unused 'buildtheme.pl' script
It was forked off of wpsbuild.pl but never utilized, and wpsbuild
continued to receive improvements

Change-Id: I38de687e45560398f438830ba920bacceff5cc24
2025-08-19 21:39:06 -04:00
Hairo R. Carela
69f27d4c66 rgnano: Use proper lcd depth and pixelformat
According to screen driver this device screen is actually 16 bit RGB565 (https://github.com/DrUm78/linux/blob/FunKey_S/drivers/staging/fbtft/fb_st7789v.c#L137).

This also fixes the color banding issues we had before and boomshine doesn't segfault anymore. Also building rockpaint now that's possible.

Change-Id: Icee49c347fbfabc79e0040314ec148cb77ca6325
2025-08-18 21:43:13 -04:00
Hairo R. Carela
707585e6c0 rgnano: Change ROCKBOX_DIR to /mnt/FunKey/.rockbox
For consistency's sake.

Change-Id: Ia2ef27dceaf143ab85adb22581c6461d50914a84
2025-08-10 14:47:17 -04:00
Christian Soffke
921abc7beb toolchains: mips: prevent failing build on MacOS
mips gcc will fail to build using the system's
BSD sed. Make sure the Homebrew-installed GNU sed
'sed' simlink is in the PATH. Otherwise, only 'gsed'
can be used to run GNU sed by default.

Change-Id: I0a793c692d9a6de4f326e447281892eb08e4f4cb
2025-08-05 18:37:19 -04:00
Christian Soffke
b713f1190a toolchains: fix building on MacOS with clang 17
The zlib version used by GCC 4.9.4 and binutils 2.26.1
is incompatible with clang 17 from the latest Xcode
command line tools, resulting in fdopen being defined
as NULL.

Remove the define for MacOS, as in zlib 1.31:

4bd9a71f35

Change-Id: Ic7f3108dc4fcaca4ae9a571f2bdb9039be095f36
2025-08-05 18:37:19 -04:00
Hairo R. Carela
7b0f408c71 rgnano: UI simulator support
Change-Id: Id488d16e01ef49a9d1b57641bc1c22ed2fef4931
2025-08-05 08:30:30 -04:00
Solomon Peachy
e4abe9177e build: Turn on -fno-common globally
Can make global variable access more efficient at the price of erroring
out if a variable is declared in more than one place.

Change-Id: I918eacf4a4c8c7827be64f7f2ee04cc6cc2009e0
2025-08-04 23:12:42 -04:00
Hairo R. Carela
8dfd219598 rgnano: Fix duplicated target_id
The surfansf28 port was already using 120, my bad.

Change-Id: I40574d818e4bf5635996d6babce546172ff500ba
2025-08-02 19:06:50 -04:00
Solomon Peachy
543f2494dd builds: Indicate that the RG Nano now has a manual
Change-Id: I6acb4992ca2dd6b89d179c744148501ae54beb64
2025-08-02 13:51:15 -04:00
Solomon Peachy
340273a74c builds.pm: Add the new RG Nano port as an "unstable" build.
With this it will filter through the UI and hopefully get the
nightlies going.

Change-Id: I04638f31737ee69212ac966f38f4289f6fa30f87
2025-07-30 20:11:57 -04:00
neofright
7e2b129c64 Fix typo in database.c
Change-Id: I08e82013db80534284cebc054d0b6d705b473e33
2025-07-30 17:39:07 +01:00
Solomon Peachy
52e3fe4906 misc: Fix warble build
Change-Id: If5672285f2832ca6a5034e3f765785769e813409
2025-07-30 11:30:25 -04:00
Solomon Peachy
8e9125ee28 configure: re-export FUNKEY_SDK_PATH
Change-Id: I41bb5ba91fd69a40f2136315c6f27b00c78a7792
2025-07-30 10:46:49 -04:00
Hairo R. Carela
48392bab94 New port: Anbernic RG Nano
A bit of context, this device is a clone of the FunKey-S with a different form factor, hardware is mostly identical, the relevant difference is it has audio out (via usb-c, adapter to 3.5mm is included), this is the reason why the FunKey-SDK is needed for bulding.

This port is based on the old SDL 1.2 code because the device doesn't have SDL2 support. Alongside what was supported in the SDL 1.2 builds this port supports battery level, charging status and backlight control.

Change-Id: I7fcb85be62748644b667c0efebabf59d6e9c5ade
2025-07-29 21:01:53 -04:00
Dana Conrad
f2ea677b4d hibyos_nativepatcher: make tolerant of spaces in paths
Change-Id: Ibc0f2e6e1a00c526b4617e4b4ebfcfe132cbfa25
2025-06-30 17:07:36 -04:00
Christian Soffke
e7110c0beb macos: tools: configure: use GCC 15
Matches updated GCC Homebrew formula:
https://formulae.brew.sh/formula/gcc

Change-Id: I9b8e66a16ccfaf840fd50bbe313cae33e44d4f11
2025-05-25 14:46:16 -04:00
Solomon Peachy
33c74d948c convbdf: Replace magic number with #define shared with main code
Change-Id: Id46d5f2fe88fdaac94d00b1a4810ab161baad35b
2025-05-23 18:55:11 -04:00
Solomon Peachy
2f6ecaf3c2 convttf: Switch to c99 fixed size integers for fnt file header
Change-Id: Idff55a88a9bddaec42e568cf3c3ff3f6df15ec34
2025-05-23 09:01:56 -04:00
Solomon Peachy
adaae1731f tools: Switch CFLAGS to -Os -Wall -Wextra
(From -Og -W -Wall -pendantic)

Change-Id: If094a22e7c7cd4fb175909fd12b9d8de514f1f38
2025-05-23 09:01:56 -04:00
Solomon Peachy
70b6a08be5 lang: Update the documentation in the "master" english.lang
Also improve the documentation in voice-corrections.txt

Change-Id: I81cdd8b3aac71d849e8ce54211ee1fdff1d19f5b
2025-05-08 21:19:34 -04:00
Solomon Peachy
950909fd5a build: Further simplification of checkwps build.
Change-Id: Ic6436ba744457d92606eaf24d6449f8c7009ba0f
2025-05-06 14:27:04 -04:00