What's New for PSPRadio
========================
1.xx.xxxx (2007-04-xx)
*NEW FEATURES*
(raf) Core: Updated visualizer plugin interface to level 2. Cleaned-up, reorganized fields, and added gu support. (Also added exclusive mode, and song information to plugin).
(raf) TextUI3D: Added wait for VBlank before page flipping, this eliminates tearing; but reduces framerate because the render thread also waits for vblank; need to optimize.
(raf) TextUI3D: Added complete support for visualizers (just like TextUI).
(raf) Core: Using Alexander Berl (a.k.a. Raphael) routines for VRAM allocation.
(raf) VIS: Added a cube visualizer, displays a scope on every side.
(raf) VIS: Interface changed. Now plugin gets notified when song starts/stops/pauses. Also, now the plugin can request song information.
(raf) VIS: Visualizers can now run in exclusive mode. Added support to TextUI and TextUI3D, and sample code to the repository.
(raf) Core: Updated config file so the default directory for localfiles is ms0:/MUSIC now instead of ms0:/PSP/MUSIC
*BUG FIXES*
(raf) Core: Fixed an old bug where if a song had no metadata (like an old MP3 without ID3 info), the metadata would be populated from the currently highlighted song.
(raf) TextUI: Fixed crash that could be caused if switching screens (START) while starting a plugin (specially a visualizer).
(raf) TextUI: Don't go to fullscreen if no visualizer loaded.
(raf) TextUI3D: Don't go to fullscreen if no visualizer loaded.
(raf) Core: PSPApp/PSPApp_Network.cpp: Fixed wifi profile enumeration. This has been broken since day one, causing wifi profiles to some times not be displayed, or garbage to be displayed instead.
*KNOWN BUGS*
(raf) TextUI: When switching skins all the text will disappear. This happens on occasion. Just move up or down for the text to re-render.
*OE related Problems on this release*
(raf) Core: Static IP connections don't work correctly. Seems the gateway is not used as it should.  (Also, make sure CPU speed is 222 when establishing a WiFi connection). Possible solution, if you have a proxy server in your network, set it up in PSPRadio.cfg. A static IP may work then. (This is untested).

1.18.1377 (2007-04-02)
NEW FEATURES
(raf) TextUI: Msgbox now goes away after 3sec (not based on frames rendered anymore, but time).
(raf) Core: (Supported by TextUI) Framerate configuration file is now set globally in PSPRadio.cfg (PLUGINS:DISPLAY_FPS)
(raf) TextUI: Now uses GU more; which reduces flickering and improves framerate. 
(raf) TextUI: Cleaned up the way stream time and info is displayed while on fullscreen visualization mode.
BUG FIXES
(raf) Core: PSPRadio would crash on startup if the visualizer plugin was disabled.
(raf) Core: PSPRadio would crash on startup if the SHOUTcast database (newdb.xml) file was empty.
(raf) TextUI: Corrected problem where PSPRadio would crash when downloading the SHOUTcast database. (The problem was caused by lack of complete support for values -1 and -2 in the configuration files after the TextUI rendering changes.
(raf) TextUI: Corrected problem that caused a crash when switching from TextUI3d to TextUI.
(raf) Core: Corrected problem that caused a crash on restore from suspend mode when the wifi was enabled. Now it will also resume play.
(raf) Core: Disabled UI rendering while shutting down; this makes sure the "shutting down" screen is not drawn over.
KNOWN BUGS
(raf) TextUI: When switching skins all the text will disappear. This happens on occasion. Just move up or down for the text to re-render.
OE related Problems on this release
(raf) Core: Static IP connections don't work correctly. Seems the gateway is not used as it should.  (Also, make sure CPU speed is 222 when establishing a WiFi connection). Possible solution, if you have a proxy server in your network, set it up in PSPRadio.cfg. A static IP may work then. (This is untested).

1.18.1365 (2007-03-26)
NEW FEATURES
(raf) TextUI: After a configurable amount (default 10 seconds) during playback, the visualizer goes into fullscreen.
(raf) Core: Use PSPRadio.cfg PLUGINS:VISUALIZER_FULLSCREEN_WAIT to set the wait before going into visualizer fullscreen mode. (Set to 0 to disable).
(raf) Core: This fullscreen config wait parameter is now configurable from the PLUGINS Options menu.
(raf) Core: Added kiss-fft routines, and now provide frequency data to visualizer plugins if requested.
(raf) Plugins: Added a spectrum analyzer plugin (based on finespectrum.c for XMMS).
(raf) Core: FFT and VIS_Spectrum use vfpu for some calculations, to get a speedup. (Thanks to MrMr[iCE] for his helpful vfpu library pspmath).
(raf) Core: Removed VBLANK message across the core and sent to UI. UIs need to do it themselves.
(raf) TextUI3d: Updated to use a renderthread instead of vblank message -- Good speed-up.
(raf) Core/Plugins: UI Plugins have versioning now, and won't work across versions of PSPRadio that don't support the same interface.
(raf) Core: Clean-up.
(raf) CScreen: Using GU for clearing screen and background copies. This makes rendering (TextUI) MUCH faster; especially during fullscreen visualization!.
BUG FIXES
(raf) TextUI: When switching skins all the text will disappear. Corrected.
(raf) Choosing exit from option menu is much faster, and less prone to crashing.
KNOWN BUGS
(raf) Core: Static IP connections don't work correctly. Seems the gateway is not used as it should.  (Also, make sure CPU speed is 222 when establishing a WiFi connection).
(raf) Core: Module unloading doesn't free up all memory correctly. Even though plugins can now be loaded/unloaded, the PSP can eventually crash as it runs out of memory (after loading/unloading enough times; even though I switched back and forth between the text and 3d UIs over 20 times, and everything worked fine).

1.17.1349 (2007-03-20)
NEW FEATURES
(raf) Plugins: Added some VERY SIMPLE visualization plugins. This only works under TextUI at the moment. (Look under the Options-Plugins menu)
(raf) Plugins: PSPRadio saves current selected plugin in config file section PLUGINS:DEFAULT_VISUALIZER
(raf) Core: Localfiles: Empty directories are not listed anymore.
(albadross) TextUI: Updated screens for the visualizer plugins. Added new skins: Selector2 and Spectrum.
(raf) TextUI: Converted rendering to use page flipping (double buffering).
(raf) TextUI: Added a PLUGINS:DISPLAY_FPS option to config files. (not there by default -- disabled).
(raf) Plugins: Added sample sourcecode for a simple visualizer plugin to the release.
BUG FIXES
(raf) Core: Fixed button repeat handling that broke when implemented the button mapping. (This also corrected problems with HPRM)
(raf) Core: If resuming(from suspend) from a paused state, it would not continue from where it left off.
(raf) Core: Changed the default button mapping to be closer to the original mapping, (so it matches the current skins).
KNOWN BUGS
(raf) TextUI: Sometimes, when switching skins all the text will disappear. Moving Up/Down, or pressing START is the current work-around.
(raf) Core: Static IP connections don't work correctly. Seems the gateway is not used as it should.  (Also, make sure CPU speed is 222 when establishing a WiFi connection).
(raf) Core: Module unloading doesn't free up all memory correctly. Even though plugins can now be loaded/unloaded, the PSP can eventually crash as it runs out of memory (after loading/unloading enough times; even though I switched back and forth between the text and 3d UIs over 20 times, and everything worked fine).

1.15.1283 (2007-02-26)
NEW FEATURES
(raf) Core: Added AUTOSTART option under USB, instead of it being its own option, and using up screenspace.
(raf) Core: Better Suspend/Resume support.
(raf) Core: Added Tell/Seek functions to the streams/decoding. Added support to resume to continue playing where it was before it went into suspend mode (localfiles).
(raf) Core: Buttons can now be mapped. Look at PSPRadio.cfg for details. Changed the default mappings. SQUARE=CANCEL now. L+R cycle screens. (Button combinations are now also allowed).
(raf) Core/Plugin/Version: Changed the interface to .15. Working on a revamped interface. (will be .2). TextUI uses the button mapping to remap buttons if the skin is configured to do so (look at SHOUTcastScreen.cfg for an example).
BUG FIXES
(raf) Core: USB is now working again, thanks to AhMan's for the help.
KNOWN BUGS
(raf) Core: Static IP connections don't work correctly. Seems the gateway is not used as it should.
(raf) Core: Module unloading doesn't free up all memory correctly. Even though plugins can now be loaded/unloaded, the PSP can eventually crash as it runs out of memory (after loading/unloading enough times; even though I switched back and forth between the text and 3d UIs over 20 times, and everything worked fine).

1.1.1271 (2007-02-12)
NEW FEATURES
(raf) Core+UI Plugins: Added Skin selection support to PSPRadio (finally). This can be accessed via the Options menu (skin option). -Optimized.
(raf) Plugins: Added a version check system. From now on, plugins will only work if designed for the same interface version of PSPRadio (in this case 1.1).
BUG FIXES
(raf) Plugins: Plugin unloading work-around implemented. Root cause still under investigation. This means plugins can now be loaded/unloaded, switching between user interfaces works, etc.
(raf) Core: Added skins made by Albatross. Thanks, Alba!
KNOWN BUGS
(raf) Core: USB is not working, menu option removed for now (With AhMan's help this will hopefully be working again on the next version)
(raf) Core: Static IP connections don't work correctly. Seems the gateway is not used as it should.
(raf) Core: Module unloading doesn't free up all memory correctly. Even though plugins can now be loaded/unloaded, the PSP can eventually crash as it runs out of memory (after loading/unloading enough times; even though I switched back and forth between the text and 3d UIs over 20 times, and everything worked fine).

1.1.1258 (2007-02-05)
NEW FEATURES
(raf) Core: Version number is now 1.1.XXXX, where XXXX is the subversion revision at the time of the build.
(raf) Core: Modified Makefile targets. No more static/dynamic versions. Only Dynamic, for f/w 2.0+ (OE F/W).
BUG FIXES
KNOWN BUGS
(raf) Core: Modules can be loaded, but unloading causes a crash
(raf) Core: USB is not working (help is appreciated)

0.38.12 (r1237) (2006-08-24) (I'll call this release 1.0)
NEW FEATURES
(sandberg) Core: Implemented a direct VRAM version of Danzeff for use in Links2.
(raf) Core: Now root of /PSP/MUSIC is also used in the local files screen. (It is shown as 'MUSIC')
(mbf) Core: Patched to run under devhook
BUG FIXES

0.38.11 (r1184) (2006-05-28)
NEW FEATURES
(raf) Added support for the new SHOUTcast DB Listing. This will retrieve now 500 stations by default. Look at the config file to change.
(raf) Dyn/Retawq: Updated priority to 45 so it will co-operate with pspradio better.
(sandberg) Core: Updated danzeff to support 90 degrees CW rotated keyboards.
(raf) Code: Started adding proxy support. Test it by enabling in the .cfg file.
BUG FIXES

0.38.10 (r1159)(2006-05-19)
NEW FEATURES
(raf) Core/(Links2): Updated/enhanced pthreads implementation.
(raf) Core/SHOUTcast: The SHOUTcast request string can now be specified in the configuration file.
(sandberg) Dyn/Core: -Prepared the plugin framework for game plugins.
(sandberg) Dyn/Retawq: -Modified Retawq plugin to use danzeff for inputs.
(raf) Dyn: If plugin load fails because of lack of memory, then the message displayed on the screen will say so.
(raf) Dyn/Code: Now PSPRadio allocates 6MB instead of 8MB or RAM. This to give more RAM to plugins.
(danzel) Core: Added lite version to danzeff library.
(sandberg) Core: Added GU version to danzeff library.
(raf) Dyn/Retawq: -Updated code to take advantage of changes to newlib (for pipes/file descriptors/sockets)
(raf) Dyn/Retawq: -Cleaned up the code to make it easier to update when a new version of retawq is available.
BUG FIXES
(raf) Calling network termination functions before exit -- hope this helps exit when using eLoader.
(raf) When a socket closed, writestring() would keep trying to send, and keep reporting errors, filling up the event queue, and causing pspradio to exit. Thanks PSP KEVIN for the report.

0.38.091 (r1029) (2006-04-06)
NEW FEATURES
(raf) Dyn/Retawq: tips can be overriden with your own html. Just replace APP_Retawq/tips.html!
(raf) Dyn/Dev: New export to allow for plugins to access the sound device buffer (for visualization plugins).
(raf) Dyn/Core: When the key combo for killing plugins is used, now the plugin will be unloaded as well (L+R+START). (A red -exception- screen may flash will unloading the plugin.. this is expected atm.)
(raf) Core: Rename directories per HalfastII directions so that corrupted icons don't get displayed on f/w 1.5.
(raf) Dyn/Core: Plugins are now automatically unloaded when they exit.
(raf) Core: Updated default SHOUTcast.xml to the latest.
BUG FIXES
(raf) Core: Networking. Network profile enumeration code modification. Based on idea from Danzel from ps2dev forums. This may help people who's profile wasn't showing up.
(raf) Dyn/Core: No longer tries to 'continue' a plugin if 'Off' is selected.
(raf) Dyn/Core: Now plugin giveup access code is better handled. Retawq can switch to pspradio now seamlessly. (Select the running plugin again to return to the plugin.)
(raf/ditlew) Core: If F/W 2.6 is detected, don't poll for HPRM. This allows PSPRadio to work on 2.6 via eLoader.
(raf) Core: On exit, just call the game exit syscall. This may prevent the app from crashing when on eLoader. (It still hangs on 2.6)
(raf) Dyn/Core: Corrected bug that would cause FSS plugins to report error when loading even if they loaded correctly.
(raf) Dyn/Retawq: Reduced most of the drawing issues by decreasing the number of columns by 1.
(raf) Static: Changed directories back to PSPRadio and PSPRadio%.

0.38.08 (r990) (2006-03-31)
NEW FEATURES
(raf) Dyn/UI Plugins: Implemented albadross idea to use the plugin name to load configuration files. This allows to select different skins via the plugin menu. (Implemented for Text and Text3D plugins). (r930)
(raf) TextUI: OptionsScreen and Plugins Menu can now display more options than what fits on the line. This was implemented using a new config element in the OptionsScreen.cfg (X_RANGE) so skins will need to be revised. (r934)
	  If X_RANGE is not set, then defaults are used (r944)
(raf) Dynamic: Added Application plugins. Sample plugin added too: netscan. (If plugin stops responding, L+R+TRIANGLE can be used to return control to pspradio.).
(raf) TextUI: If the background specified in the config file is just a filename, then we look under the text ui config directory. Also, if the filename starts with "ms0:", then we asume it's a absolute path.
(raf) Dynamic: New plugin: Retawq (text based web browser).
(raf) TextUI: Added new screen config for plugins screen.
(raf) TextUI: Updated Options / Plugins screen background with new art from Semtex199.
(raf) TextUI: Support for -2 flag in config file extended to y field, and to clear rutines. (-2 = don't print)
BUG FIXES
(raf) Core: Corrected problem when reading directories, where a good read could be interpreted as bad, ended up in nothing being read at all. (r936)
(raf) Core: When changing UIs, the sound is now stopped to prevent event queue fill-ups.
(raf) TextUI: Added elements to options/plugin config files to not print music related data on these screens.

0.38.07 (r928) (2006-03-20)
NEW FEATURES
(raf) Dynamic/Core: Now UIs are selected from a new plugins menu. The menu is auto populated with available plugins. Currently supported: UIs and FSS (File system Servers.)
(raf) Dynamic/FSS: New Plugin: FTPD; not working quite right yet.
(raf) Core: Updated SHOUTcast database (2006-03-17)
BUG FIXES
(raf) png: The shutdown.png was a copy of init.png; corrected.
(raf) Core: Now in Options screen, options that have no alternatives don't have a default "Yes" (like exit pspradio).
(raf) Core: Now the sound is stopped when a screenshot is taken to prevent the event queue from backing up and the app exiting (reported by albadross) (r888)
(sandberg) 3DUI: The new plugin menu is now handled correct when switching UIs.(r909)
(raf) Core: ID3v2 decoding could crash the system on invalid tags.
(raf) Dyn/Core: Plugins now retain memory until they are removed.


0.38.06 (r881) (2006-03-02)
NEW FEATURES
(raf) Core/All: Added plugin system - this will only currently work under f/w 1.5. UIs have been converted to PRXs, as well as PSPRadio. A Loader starts PSPRadio now (on 1.5) (r817-861).
(raf) All: Reorganized hierarchy of files. And enchanced build system.
(raf) Now build generates dynamic and static releases. The dynamic release will currently only work with f/w 1.5 The static release (won't support plugins) should work on all f/w's but won't attempt loading usb/wifi drivers, so it won't have networking/usb unless provided by a loader (needs to be tested under eloader).
BUG FIXES
(raf) Core: Using the Home menu option to Exit PSPRadio should always work now. (even if the app crashed.)

0.38.05 (r820) (2006-02-17)
NEW FEATURES
(raf) Core: Added exception handler. This will display some useful information (for the developers) if/when PSPRadio crashes. (r804,805)
BUG FIXES
(sandberg) 3DUI: Rewrote the textrendering of lists and options so only one event is sent, to make it more stable (r798)
(sandberg) 3DUI: Removed the layer between the UI and the WindowManager, since it was redundant. (r799)
(sandberg) 3DUI: Rewrote several event handlers to reduce context switches and make it more stable. (r800)
(sandberg) 3DUI: Last event stuff (for now) cleaned up. The 3DUI seems quite more stable now. (r801)
(sandberg) 3DUI: Reordered the initialization, to remove reset while switching UIs. (r802)

0.38.04 (r797) (2006-02-10)
NEW FEATURES
(raf) Core: Now playlist entries are sorted by title if the playlist is v2. (r768)
BUG FIXES
(raf) Core: Made the decoding/playback more stable (r770)
(raf) Core: Now only UP/DOWN generate REPEATs (No more 'jumpy' START button, etc.)(r772)
(raf) Core: Now long press are also handled as a release (r773)
(raf) Core: Corrected erroneous button hits being sent continuosly when the power saving kicked off (r774)
(sandberg) 3DUI: Fixed a cacheproblem with the panels (r778)
(sandberg) 3DUI: Some of the gfxsizes setup in the configuration was used incorrect in the code (r779)
(raf) Core: Now buttons/hprm data is sent by value in the events - this could cause incorrect or erroneous data from being processed, based on timing. (r782)
(raf) Core: Eliminated possibility of certain race conditions from happening (when a stream ends). This should provide more stability/consistency on stream ends -- this applies mostly to local files. (r783)
(raf) Core: Now stream handling screen is assigned correctly when stream starts playing. (r784)
(raf) Core(OGG): Now stops parsing comments (metadata) from OGG file after TITLE and ARTIST have been retrieved. (this was causing random crashes) (r784)
(raf) Core: Corrected bug that could crash the app if the first thing the user did was NEXT or PREV with the HPRM. (r785)
(raf) All: Replaced unsafe strncpy globally with safe counterpart strlcpy().
(raf) Core: Cleanup to Driver initialization routines and system callbacks (power) (r789)
(raf) Core: Re-enabled HOME menu. (r789,790)
(sandberg) 3DUI: Fixed a memory error and removed some traces (to avoid context switches) (r792)
(sandberg) 3DUI: Disabled the visualizer until I've made it more stable (it was causing resets all the time) (r793)
(raf) 3DUI: Added support for showing the currently playing track in a different color (r796)

0.38.03 (r767) (2006-02-03)
NEW FEATURES
(sandberg) 3DUI: Messages from the PSPRadio (e.g. when downloading the list from shoutcast.com) are now shown in a separate panel. (r746)
(sandberg) 3DUI: The UI now supports 4 different fonts (Lists, Scroller, System info and Messages/Errors). (r747)
(sandberg) 3DUI: Both messages and errors are now displayed using the native panels, scaled to fit the message length. (r748)
(sandberg) 3DUI: Support for colored native panels has been added, which is used for the message and error panels. (r748)
(raf) TextUI: Now clock format is still compatible and configurable as in 0.37-Final. New mode added (0). If set to that in the config file, then the format is retrieved from the system configuration. (r752)
(raf) Core: Now MP3 report the current elapsed time (r755)
(raf) TextUI: Added support to display current (implemented) and total (not implemented) time of the playing stream. (r755)
(raf) Core: Now total time is also calculated for MP3s (VBR MP3 will probably show wrong data). (r756)
(sandberg) Core: Added support for visualization effects has been added. (r757)
(sandberg) 3DUI: Visualization panel added the the 3DUI. (r757)
(sandberg) 3DUI: Added support for using different skins on the main panels and the message/error panels. (r757)
(raf) Core: OGG Files now also report their time (r758)
(raf) Core: Switched from Tremor to regular OGG Vorbis library (slower, but may solve issues with ogg processing) (r759)
(sandberg) 3DUI: Added support for displaying current and total time for local files. (r760)
(sandberg) 3DUI: Update to r760 to handle the case where the total time isn't known. (r761)
(sandberg) 3DUI: Cleanup of the graphics (new fonts, panels etc.). (r762)
(raf) Core/TextUI: Now the system differientiates between the selected(highlighted) track, and the currently playing track. This is shown using different colors on the TextUI. (r764)
(sandberg) 3DUI: Background modified to include space for the playtime/total time. (r763)
(raf) Core: Changed versioning scheme. Hopefully less people will be confused now...
(raf) TextUI: The folder of the currently playing track is now highlighted. (r766)
BUG FIXES
(sandberg) Core/3DUI: Rearranged the order of the VBlank operations to remove some of the jitter on the UI. (r745)
(sandberg) Core: [ Bug #6256 ] WiFi logging is always enabled (r754)
(raf) Core: Fixed a bunch of small issues related to pausing/playing/changing tracks both using the buttons and HPRM. The current implementation should be a lot more reliable/intuitive. (r766)

0.38-Pre2 (r744) (2006-01-27)
NEW FEATURES
(sandberg) Core: Added support for logging via WiFi instead of using the memorystick. (r729)
(sandberg) External: Added a simple server application which can receive the log-entries via WiFi on the PC. (r729)
(sandberg) 3DUI: A new popup dialog has been added to show error messages from PSPRadio. (r732)
(raf) Core: Next/Prev via HPRM are now global (r733)
(raf) TextUI: Updated skins from Semtex199 (r733)
(raf) Core: Added new playmode "GLOBAL". When on this mode, when the last track of an album finishes, the player goes to the first track of the next album. (r734)
(raf) Core: Updated SHOUTcast db.xml to lastest as of 1-26-06 (r736)
(raf) Core: Added support for ID3 tags (v1 and v2) (r738/739)
(raf) Core: Made Playback mode a config item in PSPRadio.cfg. Now its saved with the other config options. Make sure you update your PSPRadio.cfg for this to work. (r744)
BUG FIXES
(sandberg) 3DUI: The active item are now default selected when entering the option screen. (r728)
(sandberg) 3DUI: The program version is now only shown on the option screen when using the 3D UI (r727)
(sandberg) 3DUI: Fixed a couple of bug which caused the UI to read random data. (r730)
(sandberg) Core: Added check for buffer event, so they are only sent when there are changes. (r731)
(raf) Core: Fixed bug where HPRM would crash the localfiles screen (r733)
(raf) TextUI: Corrected problem where 12AM was being displayed as 00AM (r734)

0.38-Pre1 (r726) (2006-01-20)
NEW FEATURES
(sandberg) Core/3DUI: Merged the new TextUI3D into the main branch. (r712)
(sandberg) Core: Support for USB enabled/disabled events to the UIs has been added. (r712)
(raf) Core: Added code to sort all lists (localfiles/playlists/SHOUTcast listings) alphabetically in ascending order (r713)
(sandberg) 3DUI: Made the graphics in the new UI configurable, to allow new skins to be made. (r716)
(raf) Core Now duplicates are eliminated from SHOUTcast listing genres. Duplicates are looked for in case insensitive mode. (r717)
(raf) Core: Top 600 listing is now left unsorted (so it stays sorted by popularity). (r718)
(raf) TextUI: Clock format (12/24) is now retrieved from the system settings, and the config option is not used anymore. (r719)
(sandberg) 3DUI: New graphics from Semtex integrated. (r720)
(raf) Core: Now SHOUTcast Titles are parsed and corrected to display & instead of #amp; and the correct character for &#XX; (r721)
(raf) Core:  Refactoring/ Added option to select directory for localfiles in the config file. (r724)
BUG FIXES
(raf) Core: Removed the config option to turn logging on/off. Just use log levels.
(sandberg) 3DUI: shutdown screen are now shown on the new UI. (r720)
(sandberg) 3DUI: IP number and program title are shown after switching UIs. (r720)

0.37-Final (r706) (2006-01-16) (svn.berlios.de/svnroot/repos/pspradio/Releases/PSPRadio0.37/)
NEW FEATURES
(raf) TextUI: Added a new config element to specify the length of the metadata.
(raf) GraphicsUI: Removed from the build as it doesn't work correctly with the current core.
(raf) TextUI: Added config item/implementation to provide 24/12-hour clock configuration.
(raf) TextUI: Separate config files per screen
(raf) TextUI: Metadata color is now configurable (see bug #5907)
(raf) Core: Removed local LibPSPNet; using pspsdk's pspnet now.
(raf) Core: Added new LocalFiles screen.
(raf) TextUI: Using new screens by semtex199.
(raf) TextUI: Added configuration items to cfg file to configure the list's titles.
(raf) TextUI: -2 in the X position for configuration items makes the item not be printed (suggested by HalfastII)
(raf) TextUI: The config file is now partitioned into one section per screen (suggested by HalfastII)
(raf) TextUI: Added support for showing the time and the battery level.
(raf) TextUI: Now files defined in playlists are displayed without the path, and the extension is only shown if configured to in the config file.
(raf) Compiled against latest pspsdk (r1542). There should be some speed improvements, as things like memcpy are now optimized.
(raf) Core/TextUI: Added support to print text using pixel coordinates
(raf) TexUI: Removed cleaning code that was unnecessary in the options screen renderer. This should speed it up a bit.
(sandberg) Added support for showing the time and the battery level on the 3D UI.
(raf) Enabled pausing of local streams
(raf) Cleanup/robustness added for play/stop core.
(raf) Created playmodes; defaults to NORMAL (will play next track after current one ends), also has SINGLE and REPEAT modes.
(raf) Completely re-wrote buffering system. (Using stl lists, and optimized buffers). New change from one stream to the next is seamless.
(raf) Made font size configurable in the textui config file. If these settings are set correctly, then the artifacts produced when using outlined/shadowed text should go away. (The downside, is that the number of columns/rows is also modified as these values change.)
(sandberg) Added support for showing the battery status and the current local time.
(raf) TextUI is now more configurable (for listboxes/textmode(font modes))
(raf) Added shadowed font mode for textui.
(raf) Added option to select if file extensions should be displayed or not in textui.
(raf) Added pngs for startup/shutdown of PSPRadio
(raf) Now using pngs designed by Semtex/albadross/HalfastII
(raf) Added better support for suspending/resuming psp.
(Halfast) Minor tweaking of the textui.cfg
(raf) The initial screen can now be selected in the PSPRadio.cfg file, under SYSTEM/INITIAL_SCREEN
(raf) Can now refresh the playlists from the Options screen.
(raf) Options can now be saved from options screen.
(raf) 0.37-pre3c: Now you can save and restore USB autostart / wifi autostart / intial screen from the options screen
(raf) Added a genre processing/parsing stage for shoutcast.com database.
(raf) Changed the text ui layout a bit, so that the stream name has more room
(sandberg) Added a radial blur effect as a background effect on the 3D UI.
(raf) Added code to draw font with outline - thanks to Halfast for the idea.
(raf) Revamped code to handle playlists in memory.
(raf) Now shoutcast.com entries are sorted by genre
(raf) Now will reload shoutcast.com db on download. Also now include a default db.xml

BUG FIXES
(raf) ScreenHandler: Now selecting to refresh playlists in Options screen will also refresh the local files screen virtual playlists. (Bug #5904).
(raf) Core: Corrected basename implementation bug #5982. (files shorter than 4 chars weren't getting displayed).
(raf) Core: Corrected bug #5924, if PSP/MUSIC folder was empty, the app would crash.
(raf) Core: Corrected problem where if no playlist or local files where present, the app would crash when the user tried to access the next track/playlist using UP/DOWN.
(sandberg) Core: VBlank fix.
(sandberg) Core: Updated to use socket headers from the new pspsdk.
(raf) TextUI: Fixed bug where localfiles where getting truncated as they were displayed.
(raf) Corrected logging timestamping, now using localtime (inspired by sandberg's code).
(raf) Core: Logging instantiated in the heap instead of the data segment.
(raf) Core: Modifications to make it compatible with the latest pspsdk (r1542)
(raf) Playback: Corrected bug that caused app to crash when a stream failed.
(raf) TextUI: Made the title shorter so it fits no matter what font is used.
(sandberg) Updated the 3D UI so all options are fitted to the screen.
(raf) Corrected log times now that clock changed in sdk
(raf) Corrected bug with playlists v2, where streams with spaces were getting truncated.
(raf) Fixed problem where PSPRadio was exiting when it went into screen blank mode.
(raf) Some refactoring of options code/pspapp_network. Corrections on loglevels.
(raf) 0.37-pre3b: Corrected the WIFI:AUTOSTARTing.
(raf) Corrected issue where SHOUTcast screen wasn't allocating memory for the lists, reusing the playlists' memory. This was causing instability in version 0.37-pre1.


--------------------------------------------------------------------------------

0.36-final (svn.berlios.de/svnroot/repos/pspradio/Releases/PSPRadio0.36/)
(raf) If AUTOSTART set to 1 in config file, App starts in Options screen, starts the network, then goes back to main screen.
(raf) Lots of cleanup / refactoring
(raf) Now downloads a compressed version of SHOUTcast.com's database instead. Thanks to echto again for providing the routines to do the zlib uncompression, and SHOUTcast.com db download URL service setup, etc!!
(sandberg) Added a particle system as a new background effect for the 3D UI.
(raf) Simplified wifi selection. One option to select profile or turn off.
(raf) Screens are classes now. If going back and forth between screens, they will retain their state.
(sandberg) Added support for taking screenshots. Use the Hold button to take a screenshot. When the LED stops flashing the screenshot is stored in the Screenshots folder (you need to create that folder, if you don't have it already).
(raf) Modified the pspsdk's text rendering system to allow for png backgrounds and transparent text.
(raf) Gave the TextUI a facelift by using backgrounds for the different screens.. This is configurable via the cfg file.
(raf) Fixed bug where if the playlist was empty, garbage was being used when the user pressed X or O.
(sandberg) Added support repeated and long key presses. The repeated key presses are usefull when navigating the playlists.
(sandberg) Moved the screenshot function to be activated on a long key press on Select (appr. 1 second). The screenshot will be taken when releasing the button.
(raf) Backup the db in case the download fails.
(raf) Disabled the HOME menu button for now. To exit PSPRadio, go to Options and select Exit.
(raf) Enabled the CPU speed change option.
(raf) Added 111MHz; which is not useful for MP3, but works for OGGs in the text ui, and can save battery.
(raf) Refactored PSPApp/PSPRadio so that it runs in USERMODE. The drivers for the network and USB are now started from a kernel thread during app construction.
This allows for DHCP to work! (thanks to PspPet and 'benji' for figuring this out.)
(raf) L and R now navigate like Page UP/Down.
(raf) Started adding SHOUTcast.com support
(sandberg) Implemented a VRAM memory manager, so all textures are now loaded from files
into VRAM.
(sandberg) Added full playlist and playlist entries support for the 3D UI.
(sandberg) made 2 minor error correction to the option menu.
(sandberg) Added rendering of the background effect to the option menu.
(jpfouch48) Re-vamped Grapics UI Theme class
(jpfouch48) Cleaned up theme implementation and theme file
(jpfouch48) Created icons for buffer display, network status, and stream status
(sandberg) Implemented support for using the Select(raf: changed to Start) button for entering the option menu.
The triangle button is only used for swapping between the playlist and Shoutcast list.
(raf) Now user needs to press X or O to go from playlist selection over to entries box.
(raf) Fixed crash on exit when logging is 80 or higher.
(raf) Added logging level selection and UI selection in Options menu.
(raf) Added option to download latest database from SHOUTcast.com (this is usable, but still work in progress. -- the app only lets you do this once a minute, not more often. (Shouldn't have to anyway))
(sandberg) Added support for the option menu in the 3D UI.
(jpfouch48) GraphicsUI playlist browser and playlist item browser is now functional
(jpfouch48) Made the text display funtions more modulare to make future enhancments easier
(jpfouch48) Added a unique ItemIndex to the MetaData structure and directorydata structure to make the browsable playlist integration a little bit easier
(raf) Some more work on the OGG decoder.
(raf) Now TextUI will display selectable lists for playlist and playlist entries
(raf) Made the current selections more dynamic so they follow the list.
(raf) Changed user interface for playlist access: User now uses UP/DOWN to select a playlist, then
press X or O to go and select an entry. Navigation in entries box is also with UP/DOWN.
User can also use <- or -> to go back and forth between List and Entries. (need to iron out)
(jpfouch48) Added options screen
(jpfouch48) Updated how playlist scrolls
(jpfouch48) Fixed problem with theme clipping song filename in upper pannel
(sandberg) Added support for displaying the MetaData in the 3D UI.
------------------------------------------------------------------------
r320 | rafpsp | 2005-10-17 02:19:15 -0400 (Mon, 17 Oct 2005) | 38 lines

svn merge -r305:319 branches/OGGSupportAddition to trunk/
----------------------------------------------------------------------
	r319 | rafpsp | 2005-10-17 01:52:33 -0400 (Mon, 17 Oct 2005) | 1 line

	Now if content type is not defined, it defaults to MPEG. Also added case for AAC (not supported yet)
	------------------------------------------------------------------------
	r318 | rafpsp | 2005-10-17 01:51:34 -0400 (Mon, 17 Oct 2005) | 1 line

	Added support for determining content types for ogg and aac.
	------------------------------------------------------------------------
	r317 | rafpsp | 2005-10-17 01:51:05 -0400 (Mon, 17 Oct 2005) | 1 line

	Added support for determining content types for ogg and aac.
	------------------------------------------------------------------------
	r316 | rafpsp | 2005-10-17 00:50:34 -0400 (Mon, 17 Oct 2005) | 2 lines

	Added support for different stream types in preparation for addition of new decoders. It detects the stream type (content type) from filename if local file, or
	from content-type: metadata from online stream response. (Some servers don't send the response.. so may want to default to MAD.
	------------------------------------------------------------------------
	r315 | rafpsp | 2005-10-16 04:07:39 -0400 (Sun, 16 Oct 2005) | 1 line

	More modularization in progress...
	------------------------------------------------------------------------
	r314 | rafpsp | 2005-10-16 03:23:21 -0400 (Sun, 16 Oct 2005) | 1 line

	More modularization in progress...
	------------------------------------------------------------------------
	r306 | rafpsp | 2005-10-16 00:17:10 -0400 (Sun, 16 Oct 2005) | 1 line

	Making decoder more modular..
	------------------------------------------------------------------------
	r305 | rafpsp | 2005-10-15 17:40:37 -0400 (Sat, 15 Oct 2005) | 1 line

	Redoing dir by using copy from branch
	------------------------------------------------------------------------
	Also fix to report stream info (like samplerate) everytime
	Also updated readme/whatsnew with what was actually released for 0.35.
------------------------------------------------------------------------
r322 | sandberg | 2005-10-17 04:22:14 -0400 (Mon, 17 Oct 2005) | 1 line

Added another background object and fixed the lights
------------------------------------------------------------------------
r323 | rafpsp | 2005-10-17 12:12:13 -0400 (Mon, 17 Oct 2005) | 1 line

Starting ogg decoder. PSPSound will instantiate it. Basing decoder class from MAD decoder. Now need to implement
------------------------------------------------------------------------
r324 | sandberg | 2005-10-17 16:26:39 -0400 (Mon, 17 Oct 2005) | 1 line

Playlist filename added.
------------------------------------------------------------------------
r325 | sandberg | 2005-10-17 17:51:28 -0400 (Mon, 17 Oct 2005) | 1 line

Added network, sound and loading buttons.
------------------------------------------------------------------------
r326 | jpfouch48 | 2005-10-17 18:52:54 -0400 (Mon, 17 Oct 2005) | 2 lines

Fixed selection box that was not the propper size

------------------------------------------------------------------------
r327 | sandberg | 2005-10-17 19:16:22 -0400 (Mon, 17 Oct 2005) | 1 line

Internal cleanup for the icon drawing. The start/stop buttons are now also drawn as normal icons.
------------------------------------------------------------------------
r328 | rafpsp | 2005-10-18 16:50:39 -0400 (Tue, 18 Oct 2005) | 1 line

Added support for ogg vorbis streams (files/online streams)
------------------------------------------------------------------------
r329 | rafpsp | 2005-10-19 00:08:12 -0400 (Wed, 19 Oct 2005) | 1 line

Moved metadata structure from CPlayList to CPSPSoundStream. Get current metadata from CurrentSoundStream using accessors (ie CurrentSoundStream.GetURI() or GetTitle(), etc)
------------------------------------------------------------------------
r330 | rafpsp | 2005-10-19 01:16:22 -0400 (Wed, 19 Oct 2005) | 2 lines

Moved currentmetadata copy from pspradio to CurrentSoundStream. Also metadata processing from pspradio to pspsounddecoder
Simplified metadata notification
------------------------------------------------------------------------
r331 | rafpsp | 2005-10-19 01:27:11 -0400 (Wed, 19 Oct 2005) | 1 line

Renamed Author to Artist
------------------------------------------------------------------------
r332 | rafpsp | 2005-10-19 01:27:44 -0400 (Wed, 19 Oct 2005) | 1 line

Populating more metadata fields for ogg: bitrate, title, artist
------------------------------------------------------------------------
r333 | rafpsp | 2005-10-19 01:36:56 -0400 (Wed, 19 Oct 2005) | 1 line

Display Artist
------------------------------------------------------------------------
r334 | rafpsp | 2005-10-19 02:25:35 -0400 (Wed, 19 Oct 2005) | 1 line

Refactoring to allow for oggs to set samplerate. SoundBuffer now gets samplerate from CurrentSoundStream instead of keeping its own copy
------------------------------------------------------------------------
r335 | rafpsp | 2005-10-19 02:28:32 -0400 (Wed, 19 Oct 2005) | 1 line

Show artist only if available
------------------------------------------------------------------------
r336 | rafpsp | 2005-10-19 02:38:54 -0400 (Wed, 19 Oct 2005) | 1 line

Updates to readme and whatsnew for 0.36-pre1
------------------------------------------------------------------------



0.35-final (r312)
-Refactored PSPSound/PSPSound_MP3. (lots of things are different. but one thing that is evident to the end
user is that the buffers were reduced by a factor of 5. Next -pre release will allow for the
buffers to be configurable).
-Added basic multiple samplerate support!
Supported rates:
8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000.
Any rate can be implemented, I just need to add it to the code, let me know if other rates are required.
Note that the samplerate conversion is really linear and simplistic, and hence the produced sound will not
be very good. Still, better than nothing.
-UI now displays buffer percentage (instead of in/out number)
-sound buffers configurable in .cfg file. Post your results!
-fixed bug where app would crash on exit if played a stream until end and then exited.
-Now the Text user interface is configurable, look at TextUI.cfg, play and post results!
-now multiple playlists are supported. The playlist configuration changed as well.. Now, you
need to put your playlist files under the PlayLists directory, and don't need to do anything
with the config file.
-The current playlist is selectable by using UP/DOWN
-cleaned up the display of playlist/stream, metadata. as 3 completely independent entities.
-Can browse playlists/entries while playing current stream. (It doesn't stop anymore when changing tracks)
-Refactoring of PSPSound/PSPSound_MP3 -> PSPSound/PSPSoundDecoder_MAD, internal OO changes.
-Thread priorities are now configurable in the .cfg file.
-Added message queue class for inter thread communications and synchronization.
-Revamped comm system for PSPApp (PSPRadio) using message q. This solves the problem with callback messaging
(thread prio boosting/inheritance from caller, overhead on caller thread, etc. -- Also, now polling of buttons/vblank
is done in a separate thread. -- still work in progress --).
-Message queue system renamed to event queue.. Everything is now using this, except for vblank.
-Changes to Logging to show time(in ms) and line numbers.
-Buffer Percentage is updated at 6fps max now (this to not overtax main thread+event handler)
-Now clear metadata on stream stop (including buffer %).
-more internal refactoring...
(sandberg)-Added button support to the 3D UI so it shows play/stop/pause.
(sandberg)-Added hprm (headphone remote control) support to PSPRadio. The keys are mapped to that forward/back
maps to Rtrigger/LTrigger. The Play/Pause button will start playing when stopped and stop when playing.
(jpfouch48)-Text items in GraphicsUI are now configurable thru the theme file.
(jpfouch48)-Cleaned up warning messages in GraphicsUI.
(sandberg) Added graphics for the button commands.
(raf)-added handler to have "multiple screens" - currently using for an options screen. Use TRIANGLE to get to options
screen. Only supported by text ui right now.
(raf)-The options menu is the only way for now to select a profile and start the network; so use network autostart in
the config file if using PSPRaio with another UI.
(raf)-Currently network and usb can be started from options screen. Will add CPU speed here also.
(raf)-Only restart stream on stop if different than the current stream
(raf)-(hopefully)Fixed bug where event queue was filling up causing PSPRadio to quit with event 0x31 (decoder done).
(raf)-Only display the filename for playlists now.
(raf)-Ignore buttons while HOME menu is up.

0.34 (r181)
-Corrected the mutex and semaphore implementations..
(Now logging needs more resources because of this though, so it's probably a good idea to keep high).
-Also found a bug that would cause the crash on exit (one at least).
(PSPSound's destructor was accessing the m_ThDecode without checkin if it existed first.)
-Also added USB support. Needs to be enabled in the config file. ([USB]ENABLED=1;)
-USB support is dangerous. Not recommended.
-Disabled pause for URL streams.
-Lots of internal refactoring.
-Support for playlists v2 was added.
-Now data from playlist v2 is shown, then updated when metadata arrives.
-Can force a profile now, look in the .cfg file to see how.
-Dropped the 'b' as is redundant with the -pre.
-Now when pressing L and R, the song only auto starts if the user was currently playing a song.
-Added thread exit synchronization using the semaphore. (Should help make sure the app exits correctly).
-Removed forced network profile code. (As users having problems where able to solve them themselves).
-Tweaked the playlist v2 support so that it (hopefully, test) works with winamp .pls files. (Now I just
ignore the "NumberOfEntries"/"numberofentries" tag.

0.33b (r130)
-Corrected logging, so that it won't double-line feed.
-Added connection timeout so that if the server is not respoding, PSPRadio will timeout after 5 seconds.
-The connection now sends a message (can and will be used for the gui) for now, a '.' is printed every second while trying to connect.
-New option in config file: WIFI-AUTOSTART if set to 0, then the user can select the WIFI profile from inside the app.
-Now reports an error if the user tries to start the network and the switch is off
-Metadata is now parsed
-Network profile selection now is limited to actual configured network profiles, plus it displays the network profile name.
-Reverted resolver ntoa / aton logic, to help ppl with DNS problems.
-UI now completely encapsulated as a separate object, and an interface created that all UI need to follow. - This will allow for multiple
user interfaces to coexist, and to ease transition to GUI.
-Text UI now follows the interface; was also cleaned up a bit during conversion.
-Added exit synchronization, to help prevent crashes on exit. This is done with a semaphore.
-Keeping the loglevel at 20 seems to help prevent the app from crashing on exit also.

0.32b
-Reports of sound skipping on 0.31b. Looking at the code, I realize I forgot to do something when processing metadata.
Hopefully this is corrected now.
-Solved the problem with threads not logging. I needed to use an absolute path to the log file.
-Change your LOG_LEVEL to 50, (or more), so that it doesn't fill up your ms.
-Metadata is only logged (to log file) when it changes.
-Metadata should update faster on the screen now.


0.31b
-Corrected problem when PLAYLIST not defined in config file.
-Disabled feature to go to next song in list for now.


0.3b
-Added support for comments. Use ';' as the first character. (Blank lines are also ignored)
-Now urls with no path work (http://64.202.98.193:8000 didn't work, but http://64.202.98.193:8000/ did. Now both do).
-Now asking the server to send metadata.
-Metadata information is displayed for the current stream.
-Added a logging library
-Integrated logging with everything (framework, app, config)
-Added an event system
-Integrated the event system. This will be useful when the gui is developed.
-When a stream finishes, it goes on to the next on the playlist
-Fixed problem where the last entry in the playlist was getting inserted twice into the list.
-Having trouble getting the threads to log anything..
