Commit graph

34152 commits

Author SHA1 Message Date
Franklin Wei
02a6985799 Add build code for Docker development environment
This simplifies the tedious task of building all the Rockbox
toolchains manually by providing a build code for a Docker container
image. It's useful for quickly spinning up a build client with just a
couple commands and no waiting to compile (though downloading takes a
little while).

I've built an image as built1n/rbclient on Docker Hub.

All toolchains (even the weird ones) are included, except android16.

Change-Id: I6b863628ffb397604f59ec6def2f8bb8c8c7185f
2019-07-28 21:13:56 +02:00
Vencislav Atanasov
7f9fc20afa Use full_path_subst on more places, to avoid replacing the wrong occurrences in
paths.

If ROOTDIR=/rockbox and BUILDDIR=/rockbox/build-something, it is now possible to
successfully build both target binaries and simulators.

Change-Id: If12d1d5933c5a15feebf627a4f1636dc1e3a67fa
2019-07-28 21:00:57 +02:00
Franklin Wei
d8330c9c18 sdl: gut OS/2, win32 code from SDL.c
This should help with compiling win32 simulators.

Change-Id: Icfbf78f7d0a8b0ddebffa8daac3adf55ac21f139
2019-07-28 14:27:49 -04:00
Franklin Wei
090bdedc62 quake: add README with some notes
Change-Id: I702e81f8715b505d4ed6d0eca861e3ddb680038d
2019-07-28 14:06:45 -04:00
Franklin Wei
711ddfdaad sdl: gut non-Rockbox platform detection code
This should prevent false positives when simulators for other systems (e.g.
win32).

Change-Id: Ib14a277fbfeb1b0ae141ebc4591d80a2cc0f526d
2019-07-28 13:59:32 -04:00
Solomon Peachy
c2139db6c5 Ninety-nine bugs on the wall, Fix one bug, pass it around, 101 bugs on the wall..
Properly fixes bug introduced in 4beafe1 (and incorrectly fixed in 51fe1b6)

Change-Id: I053bb110746afdc3d9588b1b502a4cb333468a2b
2019-07-28 10:07:27 -04:00
Solomon Peachy
51fe1b6705 volume_ismounted is gated by HAVE_DIRCACHE rather than HAVE_MULTIVOLUME
Should fix the various sim builds.

Change-Id: I1dc5e8228698afb32c84ada2aa916e52e19f49d7
2019-07-28 15:27:04 +02:00
William Wilgus
45bd14b392 Lua Add Emergency Garbage Collector
Derivative of work by RobertGabrielJakabosky
 http://lua-users.org/wiki/EmergencyGarbageCollector

I've only implemented the not enough memory part and
 expanded this idea to adding a mechanism to signal
 the OOM condition of the plugin buffer which allows us to only
 grab the playback buffer after garbage collection fails
 (SO THE MUSIC KEEPS PLAYING AS LONG AS POSSIBLE)

Change-Id: I684fb98b540ffc01f7ba324ab5b761ceb59b9f9b
2019-07-28 15:17:48 +02:00
Solomon Peachy
4beafe16fa Show time, date, and recording directory in the info screen
Patch by Igor Poretsky

Change-Id: I5db0d018742c11dd9bf3ca4c9539cd91f94d4c2e
2019-07-28 14:57:14 +02:00
William Wilgus
ddf612c84b lua remove unneeded plugin functions
Change-Id: I04bc38d03b7f0ca65a815685eb6ab0f5ff825c45
2019-07-28 07:29:10 -05:00
Franklin Wei
fd20114eb2 robotfindskitten: clear message line before cinema scene
Just writes a bunch of spaces to clear the space before playing our
animation.

Change-Id: I9422190b691039252de70a5c7eec6286c686f031
2019-07-28 01:30:29 +02:00
Franklin Wei
feacbcd639 quake: cache files in memory to eliminate skips
This caches large files (arbitrarily defined as >1MB) in memory, which
reduces the delay when a new model or sound is needed.

Change-Id: I0f96449555a32f05d771fe900c10eaf21ecbb4f6
2019-07-27 16:07:39 -04:00
William Wilgus
42263152d4 Multiboot update manual entry
Change-Id: I99abe45adaade350222fa1f0aaf864a06d6dfcdf
2019-07-27 21:46:54 +02:00
William Wilgus
e1475a38ef Fix non aligned crashes with tlsf
When the starting address of the plugin buffer
 is not aligned to 8 bytes crashes occur in tlsf
(on ARM atleast)

Change-Id: I655500c25e1c8f84b4a2418e9ec5c5948e4bea82
2019-07-27 14:30:45 +02:00
Vencislav Atanasov
321de68b21 Add Vagrant configuration for creating a development VM
Vagrant is an application that automates creation and provisioning of a virtual
machine for development. The config here creates an Ubuntu 16.04 LTS machine,
updates it, downloads and installs the toolchains for sh, m68k and arm,
mingw-w64, SDL (for Windows simulators) and other packages needed for building
Rockbox.

It works fine for building a Windows simulator and compiling iPod classic
binaries. It should be possible to make the other build types, too.

MIPS toolchain fails to build, ARM-APP is not tested because the files download
very slow on my connection. Please test if it works for you, and let me know.

Quick start: download and install Vagrant and VirtualBox for your operating
system, make sure VT-x / AMD-V is enabled in your BIOS/EFI setup, open a
shell in rockbox/tools and input the command "vagrant up"

Change-Id: Ief5476ab066663a4db7e85404b25d2d781d90532
2019-07-26 20:20:07 -04:00
Franklin Wei
4e357167b5 Add Andy Potter to CREDITS
Again, this is inferred from their Gerrit username. I've also emailed
them to confirm the name.

Change-Id: I2aced94a5a0a8847c86da0e425db4130b4dccb69
2019-07-26 20:17:03 -04:00
LiveboxAndy
d462d26ff0 Fix issue with building the UI Simulator for Windows
Addition of rtc support for AGPtEK ROCKER broke building the UI Simulator
for Windows. This patch removes the rtc support if building UI Simulator for
Windows.
2019-07-26 20:11:33 -04:00
Franklin Wei
c8ec64ed27 Add Yangyong Wu to CREDITS
This name is inferred from the contributor's Github account email
(interpreted using the standard given-family name Chinese convention).

Change-Id: I2285a62c3332d562f44c5087b296e4ea2d61200e
2019-07-25 18:17:20 -04:00
aozima
975e309264 fixed alac_set_info() issues. 2019-07-25 18:16:48 -04:00
Franklin Wei
cdfb7d44f2 sdl: fix video regression introduced by 5d05b9d
The quake commit tried to optimize lcd updates but inadvertently broke
wolf3d (which always uses a 320x200 screen size). This fixes that and also
lets direct mode truly exit early to hopefully save some cycles.

Change-Id: I41d96cd584257fe25e791c7f615812849f348e4f
2019-07-25 14:27:17 -04:00
William Wilgus
6e32e06498 lua add sound_current, consolidate sound_ functions
add defines for sound functions
 SOUND_VOLUME, SOUND_BALANCE, SOUND_CHANNELS, SOUND_STEREO_WIDTH ...
 defines depend on target
 require "sound_defines" to add them to rb.sound_settings[]

consolidates:
 sound_set, sound_current, sound_default, sound_min, sound_max,
 sound_unit, sound_pitch, sound_val2phys to a single function

 rb.sound("name", setting, [value])

 require "sound.lua" for old functionality

Change-Id: Ice695218aa433f4fcbb48fbd6b8a9bf29c994110
2019-07-25 10:17:40 -05:00
William Wilgus
3834094172 Fix Red -- sound_current #_2
Change-Id: Iae31a5fd414708b4a222ba0b05b5828a8e0d19af
2019-07-25 08:49:11 -05:00
William Wilgus
b5b43a0fef Fix Red -- sound_current
Remove dependency on settings.g for bootloader

ifdef out AUDIOHW_HAVE_EQ Settings these should be indexing the
global_settings.hw_eq_bands[AUDIOHW_EQ_BAND_NUM] struct

Change-Id: I1d1a8556ef88ce43397b600261696dacdf372034
2019-07-25 08:03:18 -05:00
William Wilgus
5f9d1f59d3 Add sound_current to plugin api
Adds:
	sound_current(int setting)
		returns the current sound setting from global_settings
		complements sound_max, sound_min and sound_default

Change-Id: I35bd893753c958f808492906fe533edc51d5d57c
2019-07-25 00:48:40 -05:00
Franklin Wei
7e4902bf6b quake: fix errorneous endian-correcting reads
ef9ee89 introduced Read{Big,Little}{Short,Long,Float} functions to safely
read a value in memory. These incorrectly take char*, which causes them to
output erroneous 0xff bytes when given bytes with bit 7 set.

Change-Id: I9531172301aecfdacae405d2f782f662608ce6df
2019-07-24 21:02:11 -04:00
Solomon Peachy
7bef453e03 FS#12887: Fix playlist order after moving a track before current
Original patch by Juan Gonzalez
Updated by Igor Poretsky

Change-Id: I913d96df906e56fb4063485a6725cd13e395f165
2019-07-24 14:20:03 -04:00
Franklin Wei
ef9ee8935f quake: fix unaligned accesses in model.c
Allows playing registered episodes.

Change-Id: I20e1ca2000776a19767a9c3caef790d4f62ca188
2019-07-21 15:13:35 -04:00
Franklin Wei
2ca47176f9 quake: pack structs which could potentially be unaligned
The d*_t structs are from "d"isk, which means they could be
unaligned. Packing them saves me from having to rewrite every single
access to them.

Change-Id: I6d5a9525fff368bf29bdb85cf1672fce02ce3396
2019-07-21 15:13:35 -04:00
Franklin Wei
f83de422fa quake: enable building Quake2
Change-Id: I67f8f7c6e7e337806751057d1c9ebdae16c54119
2019-07-21 15:13:35 -04:00
Solomon Peachy
5a84239e43 Add speech feedback to imageviewer plugin
Patch by Igor Poretsky

Change-Id: Ifcca7342d07f0d7fb90d282468f7e6576c13d36b
2019-07-20 17:20:19 -04:00
Frank Gevaerts
859f762814 Move get_codepage_name() back out of #ifdef HAVE_LCD_BITMAP
55eb1c54 accidentally put it there.

Change-Id: I25d1984f7d4a1e6d65d23aafab5eefea4f92322e
2019-07-20 22:06:30 +02:00
Frank Gevaerts
4d2874fd3d Don't have the inclusion of lang_enum.h depend on PLUGIN
This #ifdef apparcntly confuses dependency generation, and since lang_enum.h
just declares an enum, including it unconditionally is harmless.

Change-Id: I8feaff7657080962f1ae6305492075c8a5bca673
2019-07-20 21:32:23 +02:00
Solomon Peachy
78892b5eb0 FS#7705: Voice enable battery bench plugin
Original patch by Daniel Dalton
Updated by Igor Poretsky

Change-Id: I40d3bb89dbaf3582e1d7af8e8964205507cd2a8d
2019-07-20 20:42:02 +02:00
Solomon Peachy
4edaf3fb98 FS#7912: Voice enable the chessbox plugin
Original patch by Mario Lang
Heavily updated by Igor Poretsky

Change-Id: Iaa0c32a79a464860ff294096825ae788f35cf312
2019-07-20 20:14:18 +02:00
Franklin Wei
ee659d4d7a Move date/time strings out of RTC context
Should fix plugin build.

Change-Id: I332235a4e7d08a80abd91fa0705e950c7dfec449
2019-07-20 13:36:10 -04:00
Solomon Peachy
d1b8b39f55 Fix build on non-RTC targets.
talk_time and talk_date are now exposed to plugins, so the strings they
reference need to be moved from rtc-only to global.

Change-Id: I88166dc21455d595878d3d1ec557289cd3a5ff6b
2019-07-20 13:00:30 -04:00
Frank Gevaerts
3665eecf47 Increase set_time_screen() buffer size for hosted to keep the compiler happy.
The format strings in the snprintf can in theory need 60 characters
This will not happen in practice (because seconds are 0..60 and not
full-range integers etc.), but -D_FORTIFY_SOURCE will still warn
about it, so we use 60 characters for HOSTED to make the compiler
happy. Native builds still use 20, which is enough in practice.

Change-Id: I22a2bab8134442e531a10bf883f3a369ade0fdc3
2019-07-20 17:11:32 +02:00
Solomon Peachy
3cb272c97a build: Fix puzzles build due to missing dependency
As rbcompat.h is -include'd on the command line, the mkdep script doesn't
pick it up.  Explicitly add the dependency to lang_enum.h to the makefile.

Also add lang_enum.h to the 'make clean' target!

Change-Id: I33c8ed0cd5c1d44dce02ac9285469c0e4feac00e
2019-07-20 10:06:12 -04:00
William Wilgus
14d91cafca Fix Red - Talk support for plugins
generate lang_enum prior to apps

Change-Id: Ib484138e2b01267db856415db0364d8c93237073
2019-07-20 05:47:51 -05:00
William Wilgus
6392e05476 Plugin API
Reorganize Plugin functions in prep for API bump

Stub in sound_current

add sleep_timer

Change-Id: I74b3a433c86bd6cec43a7c45ae0d2db95c97bb60
2019-07-20 04:50:57 -05:00
Solomon Peachy
55eb1c54eb FS#7704 - Talk support for plugins
Original patch by Mario Lang
Heavily updated by Igor Poretsky
Further updated by myself

  This patch breaks binary API compatibility by placing the new
  functions where they make the most logical sense. IMO this is
  the better approach to take given the scope of the changes needed
  for talk support.

  Since binary API is changing, the patch also moves some other
  functions around to more logical locations.

  As well as voice support in plugins, this patch voice-enables several
  simple plugins.  There will be follow-up patches for many plugins that
  build on this one.

Change-Id: I18070c06e77e8a3c016c2eb6b6c5dbe6633b9b54
2019-07-20 08:48:35 +02:00
Franklin Wei
9c17734394 Silence warning in stdio_compat.h
Change-Id: I5aecaf6fcf42fbaf2deb933e590dcda6d01ac212
2019-07-19 23:51:07 -04:00
Franklin Wei
b0e9bb1b91 Limit float formatting to only targets building Quake
The Quake plugin is the only code that actually relies on float
formatting. Because Quake only runs on targets with huge memory
anyway, limiting their formatting to just those targets will minimize
the increased memory use in the core.

Change-Id: Icdbe26ec6ede564861cc01ac4add76a12b00ecd5
2019-07-19 23:20:56 -04:00
Franklin Wei
5d05b9d3e9 Quake!
This ports id Software's Quake to run on the SDL plugin runtime. The
source code originated from id under the GPLv2 license. I used
https://github.com/ahefner/sdlquake as the base of my port.

Performance is, unsurprisingly, not on par with what you're probably
used to on PC. I average about 10FPS on ipod6g, but it's still
playable.

Sound works well enough, but in-game music is not supported. I've
written ARM assembly routines for the inner sound loop. Make sure you
turn the "brightness" all the way down, or colors will look funky.

To run, extract Quake's data files to /.rockbox/quake. Have fun!

Change-Id: I4285036e967d7f0722802d43cf2096c808ca5799
2019-07-19 22:37:40 -04:00
Michael Sevakis
b70fecf21d Add proper float formatting to vuprintf
Wanted to see how gnarly it is to do.

Big number handling could be done with better algorithms
since it can get a bit slow with large integers or tiny
fractions with many lead zeros when only a few digits are
needed.

Anyway, it supports %e, %E, %f, %F, %g and %G. No %a or long
double support seems warranted at the moment.

Assumes IEEE 754 double format but it's laid out to be able to
replace a function to handle others if needed.

Tested in a driver program that has a duplicate vuprintf and
the content was pasted in once it looked sound enough to put
up a patch.

Change-Id: I6dae8624d3208e644c88e36e6a17d8fc9144f988
2019-07-19 22:07:41 -04:00
William Wilgus
3e2b50ed3b lua events from rockbox
This library allows events to be subscribed / recieved within a lua script
most events in rb are synchronous so flags are set and later checked by a
secondary thread to make them (semi?) asynchronous.

There are a few caveats to be aware of:

FIRST, The main lua state is halted till the lua callback(s) are finished
 Yielding will not return control to your script from within a callback
 Also, subsequent callbacks may be delayed by the code in your lua callback
SECOND, You must store the value returned from the event_register function
 you might get away with it for a bit but gc will destroy your callback
 eventually if you do not store the event
THIRD, You only get one cb per event type
 ["action", "button", "custom", "playback", "timer"]
 (Re-registration of an event overwrites the previous one)

Usage:
 possible events =["action", "button", "custom", "playback", "timer"]

 local evX = rockev.register("event", cb_function, [timeout / flags])
  cb_function([id] [, data]) ... end

 rockev.suspend(["event"/nil][true/false]) passing nil affects all events
  stops event from executing, any but the last event before
  re-enabling will be lost, passing false, unregistering or re-registering
  an event will clear the suspend

 rockev.trigger("event", [true/false], [id])
  sets an event to triggered,
  NOTE!, CUSTOM_EVENT must be unset manually
  id is only passed to callback by custom and playback events

 rockev.unregister(evX)
  Use unregister(evX) to remove an event
  Unregistering is not necessary before script end, it will be
  cleaned up on script exit

Change-Id: Iea12a5cc0c0295b955dcc1cdf2eec835ca7e354d
2019-07-19 20:48:34 -05:00
Frank Gevaerts
b0de98ad3b Put -lfirmware in CORE_LIBS, to fix -thumb builds
For unknown reasons, -thumb builds need -lfirmware after -lrbcodec (but
still before -lunwarminder)i. Other builds are still happy if we do that.
Including it via CORE_LIBS instead of explicitly achieves that.

Change-Id: Id69e4a0c042f90f71cfd9a72202ce4d8ef6a4181
2019-07-19 15:16:37 +02:00
William Wilgus
8bd992c503 lua disable bytecode dump & undump functions
Adds a flag to remove the ability to dump and load lua bytecode

saves 6+kb

Change-Id: I080323df7f03f752e0a10928e22a7ce3190a9633
2019-07-18 14:56:00 -05:00
William Wilgus
d5908f520e Fix Red lua move constants out of binary image
didn't consider sims might have reserved enums

Change-Id: Ic404972f0836bc81ba149f4ecdd3ec61bd8bd4b3
2019-07-18 10:53:34 -05:00
William Wilgus
c9aeb4284e lua move constants out of binary image
Rockbox constants are auto generated by a perl script like the majority
 of the plugin functions.

Constants are contained in rb_defines.lua, if the file exists it is auto loaded
 by the lua state for backwards compatibility

Frees ~1k

Change-Id: I237700576c748f468249e501c839d89effca3f39
2019-07-18 08:42:00 -05:00