PSP CMFileManager PSP - A New PSP Homebrew Release by Joel16

Discussion in 'Apps' started by Joel16, Sep 25, 2018.

By Joel16 on Sep 25, 2018 at 11:20 PM
  1. 434

    Joel16 Developer

    Oct 8, 2014
    Likes Received:
    Trophy Points:
    Home Page:
    Considering the mess of CyanogenPSP, an old project of mine (@Joel16) that I wrote when I was around 16, I wanted to give my favorite handled one final contribution. CyanogenPSP, may *look good* and *work* well in the most part, however the code base that it uses is a huge horrible mess and I can't emphasize it any further. I'm noticing this now as I approach my final year in Computer Engineering. The file manager in it never even worked, the coding concepts used inside of it is very bad, many duplicate functions that do the same thing, no proper error handling, bad use of resources etc. I wouldn't want anyone to use that as a code base to anything, hence why I want to make one final contribution no matter how late it is. A final contribution with a clean, dev-friendly open source code base. My answer to this CM File Manager PSP - a minimalistic approach to a file manager with a variety of user friendly features. PS. I don't care how late this is, the PSP is an amazing device and I want to do this even if just 3-4 people are interested.


    • Features:

      • Copy files/folders.
      • Move files/folders.
      • Delete files/folders.
      • Multi file handling functions for copy/move/delete.
      • File properties. (File size, creation time, modification time, access times, permissions)
      • Creating directories.
      • Renaming files/folders.
      • Image viewer.
      • Auto USB mount.
      • Dark theme mode.
      • Browse other drives like flash0 and flash1. (Please be careful not to delete/move/rename anything here)





      Anticipated features:
      • Built in FTP.
      • Handling certain file archives.
      • Media (music, pictures, reading text files).

    Last edited by a moderator: Oct 15, 2018


Discussion in 'Apps' started by Joel16, Sep 25, 2018.

    1. Joel16
      New release v1.10 is up!

      Notice: Please delete your "data" folder and config.cfg file in (ms0/ef0):/PSP/GAME/CMFileManager/. The data folder is no longer needed, since all of the external assets are now embedded into the binary. The config file has some changes that won't work with previous versions. After you delete the config file, the app will create a new one. From this update on wards, deleting the config file if any changes pertaining to the config is made will be handled automatically.


      • Handle config version so that user won't have to manually delete it for upcoming releases.
      • Fixed buffer overflow when multi selecting a file with a long path name.
      • Embed all assets and fonts into the binary and load them from memory. (You no longer need the datafolder)
      • Added a help dialog under settings menu.
      • Get enter/cancel buttons from registry. (For example the cross button implies enter/accept in the west, but Asian games use the cross button as a cancel button).
      • Highlight current selected drive in menu bar.
      • Fixed auto USB storage for PSP GO. (Now displays both ef0:/ and ms0:/ in USB mode)
      • USB mode no longer requires the app to restart if "Auto usb mounting" is toggled under settings.
      • Now uses a much cleaner method of detecting if running from ef0:/ on a PSP Go.
      • disc0:/ (UMD) can now be accessed in non GO models as an additional drive in the menu bar.
      • Implement error dialog for failures with file/directory functions and .zip archives.
      • Only delete destination if it exists in copy mode. (overwriting)

    2. Joel16
      New release v2.0.0 is up. To avoid any issues its best to delete your CMFileManagerPSP folder before replacing it with this one. Anyways:

      • Built under latest PSP toolchain using GCC 8.2, with many optimizations. (Switched to the -Os optimization flag since the PSP has a small cache.)
      • No longer relies on outdated libpng/libjpeg versions or oslib. Now uses a modified version of g2dlib which uses stb_image to load textures and make use of scegu directly! This is a major change, since it gets rid of a bunch of needless functions from oslib, and uses a library purely written for 2d graphics.
      • Added support for displaying .BMP images. (Remember no support for any images over 512 x 512!)
      • Screenshots now use .BMP format.
      • Improved copy file mechanism - should be a little bit more faster and the animation should be more fluid than previous releases.
      • Now uses updated Roboto font.
      • Add support for accessing both ef0:/ and ms0:/ on PSP Go (Due to this mechanism the boot time is a little longer than previous releases)
      • Add dialog for extracting .zip archives.
      • Properly use transparency when accessing certain elements like dialog boxes, menu bar etc.
    3. Joel16
      New release v2.1.0 is up!


      • Fixed error 80010002 due to hardcoded app path if game categories plugin is enabled.
      • Fixed incorrect clock frequency during boot.
      • Properly use delta time for menu bar animation.
      • Check if services are initialized properly during boot, other wise exit.
      • Properly use the correct app path when logging.
      • Added the following various functionalities for image viewer:
        • Automatically scale images if height > 272. (Note only images less than 512 x 512 can be viewed).
        • Added support for viewing .TGA, .PGM and .PPM images.
        • Added zooming in/out (D-PAD up/D-PAD down)
        • Added a help menu to view image functionalities (Select when viewing an image)
        • Allow positioning image after it's zoomed in. (Analog stick)
        • Added ability to flip vertically (Triangle button) or flip horizontally (Square button).
      • Fix incorrect CWD path after .zip extraction.
      • Initial 16-Bit 44.1 KHz audio playback support (no metadata, seeking, shuffle or repeat functionality implemented):
        • Added support for playing FLAC, OGG, WAV and XM files. (Note some formats already supported by the XMB aren't included, and I probably won't).
        • Display progress of audio samples.
        • Display duration and current time.
      • Log data if config/last visited directory fails to be properly read during boot.
      • Many consistency changes and minor clean ups.



      STLcardsWS, MixeryMaxe and Casavult like this.
    4. Casavult
      As a avid PSP fan, this update is truly exciting!

      And hey Joel, long time no see. :p
      DeViL303 and Joel16 like this.
    5. Joel16
      Thanks! Didn't know you were here. And yes, this is my favourite console and I've always wanted to do more with this amazing device.
    6. Casavult
      Been here a while but I went MIA last few years you could say (hence, lack on scene activity), but I'm back now :p

      I'm glad you want to do more! Hopefully we'll see some more creations of yours for years to come lol.
      Joel16 likes this.
    7. Berion
      @Joel16 I have tried last build and doesn't launch on Adrenaline 6.9 (black screen but it doesn't hang, it allows me to back to PSP XMB).

      Of course I know that PSP virtualizer doesn't see anything outside and also we have VitaShell to manager all Vita stuff, but I don't have PSP and was curious how it works and how it looks like.

      Would You kindly You look into this? If this is anyhow important, I'm using PSTV on 3.60.
    8. Joel16
      Hey, I'm not entirely sure why it would crash, I do all my testing on my PSP device/PPSSPP. But anyways, I did check to see if v2.1.0 did crash and it did. However, I've made new changes and released a new version (2.2.0) and this seems to work fine on the vita now. I'm not sure what I did to fix it apart from using a kernel prx to set audio frequency, and adding support for mp3 but something fixed the issue. Here's the updated release, please let me know how it goes!:

      • Fixed crash on PS VITA caused by v2.10.
      • Add MP3 playback support (ID3v1 and ID3v2) using mpg123 v1.25.10.
      • Use audio_driver.prx (custom kernel plugin to enable sampling frequencies at 48k Hz)
      • XM player uses 48k Hz now.
      • Use VFPU for handling texture rotation.
      • glib2D now uses stbi_image's standard load file for textures instead of loading via sceIo* wrappers and then decoding from memory using stbi_image.
      • Removed unused code, and made minor consistency/optimization changes.

      Last edited: Mar 29, 2019
    9. Berion
      I can confirm that 2.20 works on PSTV. Thanks.
      Looks nice, clean and... Androidish. :)

      And questions: ^^
      1. Are R1/L1 alone are used for something? If not, they could be a quick page up/down on file list.
      2. Why there is no "flash2:/" and "flash3:/"?
      3. Context menu is not practical. Yet it looks nice, it is not handy to make it split into two switchable menu IMO. The best idea is in my opinion old idea but very usable: menu shifting from i.e right (like in VitaShell). All operations then will fit on one menu.
      4. Have You plans adding also text editor?
      5. "theme = 0"? ;)
      STLcardsWS, Joel16 and DeViL303 like this.
    10. Joel16
      1) L1 + R1 generates a screenshot. Left/Right takes you to the top/bottom of the list.
      2) They didn't seem to have anything interesting so I didn't bother to put them :P
      3) I want this to stay identical to the original CM file manager, which is why it works like that.
      4) Not yet
      5) No themes, they add too much bulk and complexity to the code. I'd rather keep things minimal and stable. The most I'd probably do is allow some sort of icon pack system.
    11. Berion
      On flash2 is activation data, I think it's quite important to have possibility of backup up it. :)
      Joel16 likes this.
    12. Joel16
      Well, I took your advise so a new release is up :P

      • Add support for playing .MOD, .S3m and .IT audio files.
      • Remove audio_driver.prx and use a modified version of pspaudiolib.
        • This fixes support for mono audio files.
        • No longer dependent on kernel mode prx, and samples everything at 44.1K.
      • Initialize mpg123 during boot-up to save time instead of re-initializing for each MP3 file.
      • Cleaned up how ID3v1 genres are handled for MP3 files.
      • Fixed filename not being displayed when no ID3 data found.
      • Flash2 and Flash2 can now be accessed.
      • Properly display module name for XM/MOD/S3M/IT audio files.
      • Added support OPUS audio playback.
    13. Joel16
      Major Release v3.00 is now available with FTP mode!
      • Hotfix: fix metadata not being terminated after XM playback.
      • Added support for loading .PCX images.
      • Many Audio changes:
        • Properly clear metadata struct.
        • Update dr_libs (dr_flac and dr_wav)
        • Use libFLAC to display FLAC tags and cover image if they exist.
        • Allow gapless playback via mpg123.
        • Increase string limit for mp3 ID3v2.
        • Enforce a sample rate of 44100 Hz for MP3.
        • Fix mpg123 not being properly terminated after no more samples can be decoded.
        • Remove stb_vorbis and use libvorbis to decode OGG samples.
        • Display OGG and OPUS tag data if it exists.
      • Added FTP mode.
      1. Press START to open settings menu and select FTP connection.
      2. Select a network connection when the Network dialog pops up.
      3. After it is connected successfully, a message will appear saying FTP Connection established IP : Port. Use an FTP client like WinSCP and enter the IP and port (1337) and make sure to use anonymous login.
      4. Once an FTP connection is established from your server, you won't see any folders or files. You have to manually search for the path "/ms0:" or "/ef0:". You can also search for other devices like "/flash0:" or UMD - "/disc0:" (Please use caution when browsing any flash0-flash3)

      Grey_Wolf and MixeryMaxe like this.
    14. Joel16
      CMFileManager PSP - v3.10 Released!

      • Add libarchive support
        • Now supports extracting more archive formats such as 7z, ISO 9660, AR, XAR and other formats supported by libarchive.
        • Removed ISO/CSO loading as this feature isn't necessary in this program.
      • Added a kernel plugin to disable/enable screen in FTP and music player. (Press start to toggle screen to save battery)
      • Display message when deleting a file/folder and progress for multiple files/folders.
      • Fix crash on start up on Adrenaline.
      • Fix down-sampled MP3 files not being played properly, and providing inaccurate timings.
      • Clean-up audio decoder functions and add support for audio files with a sample rate of 48KHz through a kernel plugin (audio_driver.prx).
      • Use builtin allegrex for byte swapping.
      • Based on the latest version of mpg123 properly without hacky makefile.
      • Add dialog helper to reduce redundant calls.
      • Bump max file limit in a single directory from 1024 to 2048.
      • Update stb_image and dr_libs to their latest versions.
      • Fix 'for' loop initial declarations for travis builds.

      RivalK93, STLcardsWS and MixeryMaxe like this.

Share This Page