Skip to content

Tool for installing and updating MiSTer cores and other files

License

Notifications You must be signed in to change notification settings

MiSTer-devel/Downloader_MiSTer

Repository files navigation

MiSTer Downloader

This tool installs and updates all the cores and other extra files for your MiSTer. It also updates the menu core, the MiSTer firmware and the Linux system. The source for all downloads is the MiSTer Distribution repository.

Setup and Usage

Download this ZIP file and extract downloader.sh to your /Scripts folder on your primary SD card (create that folder if it doesn't exist). You only need to perform this operation once, since this tool self-updates itself.

To use it, on your MiSTer main menu, go to the Scripts screen, and select downloader.

Options

You may create a /media/fat/downloader.ini file to tweak some parameters.

Here you can see the default parameters and the options that you may change:

[MiSTer]
; storage_priority defines how this tool will use external storage during the installation
;         of files that are designed for external locations (usually games & docs files).
;         
;         * Examples of external storage are USB Drives or CIFS partitions detected by MiSTer.
;
;         * When you have more than one external storage, the one used will be determined
;           by the first path match following the path priority described here:
;             https://mister-devel.github.io/MkDocs_MiSTer/cores/paths/
;
; Options:
;   'prefer_sd' -> This tool will install new files on a external location if a parent folder
;                  is present. (Parent folder examples: games/NES, docs/AO486)
;
;   'prefer_external' -> This tool will always install new files on a external location
;                        even if no parent folders are present.
;
;   'off' -> Disables this feature. Affected files will always be installed in your SD.
storage_priority = 'prefer_sd'

; allow_delete options:
;   0 -> Don't allow this tool to delete anything at all.
;   1 -> Allow this tool to delete any old file from previous updates.
;   2 -> Allow this tool to delete only old cores that receive a new version.
allow_delete = 1

; allow_reboot options:
;   0 -> Don't allow this tool to ever reboot automatically.
;   1 -> Allow this tool to reboot the system after any system file has been updated.
;   2 -> Allow this tool to reboot the system only after Linux has been updated.
allow_reboot = 1

; update_linux options:
;   true -> Updates Linux when there is a new update (very recommended).
;   false -> Doesn't update Linux.
update_linux = true

; minimum_system_free_space_mb: Fee space needed to install files with Downloader
;   This minimum applies solely to the system partition (SD card).
;   Reducing this value is not advised.
minimum_system_free_space_mb = 512

; minimum_external_free_space_mb: Free space needed to install files in external storages
;   This minimum applies to all external storages (USBs & CIFS).
;   Reducing this value is not advised.
minimum_external_free_space_mb = 128

; downloader_timeout: Can be tweaked to increase the timeout time in seconds
;   It is useful to increase this value for users with slow connections.
downloader_timeout = 300

; downloader_retries: Can be tweaked to increase the retries per failed download
;   It is useful to increase this value for users with very unstable connections.
downloader_retries = 3

; verbose: when true, will make Downloader output to display additional debug information
;   This is also necessary to be active to display benchmark information.
verbose = false

Roadmap

  • Initial Release
  • Cheats fetching
  • First-run optimisations
  • Configurable custom download filters
  • Storage Priority Resolution for auto-detecting connected drives
  • Free space check
  • Uninstall database feature
  • Integration with MiSTer binary

Check the CHANGELOG for more information about past releases.

PC Launcher (for Windows, Mac, and Linux)

With this different launcher you'll be able to install all MiSTer files without using a MiSTer. This is especially useful if your MiSTer can't access the internet.

Learn how to use the PC Launcher here.

Custom Download Filters

With download filters, users will be able to opt-out from installing files that they don't want in their system, like for example, cheats or readme files.

Example:

This filter will only install console cores, while avoiding all related cheats and documentation files.

More information about Download Filters here.

Custom Databases

Custom Databases give users the ability to download more file collections.

NOTE: If you manually add custom databases, you might want to make sure that you also have a [distribution_mister] section. That way you'll still be downloading the content from MiSTer Distribution together with the content from the custom database/s that you introduced.

Custom INI file

You can use a different INI file by renaming the launcher downloader.sh to your preferred name. After renaming the launcher, it will use an INI file with the same name but with the .ini extension. For instance, if you rename the launcher to /media/fat/Scripts/my_custom_name.sh, it will use the INI file /media/fat/my_custom_name.ini instead of /media/fat/downloader.ini.

This flexibility allows for various use cases, such as running a specific database in isolation.

How to avoid executing remote code altogether

If you're concerned about executing a build that the launcher fetches from the web, you can avoid this by manually installing the latest version of Downloader's build. Just get this file and save it at /media/fat/Scripts/.config/downloader/downloader_latest.zip (remember to rename the file as instructed). You can verify the file's integrity using the provided MD5 checksum here.

If not done manually, the launcher will automatically install that build on its first run. This auto-installation occurs only once and is designed to be secure.

Supporters+ shout-out!

Daniel Tarsky, James D Eberhart, Koala Koa, MiSTerFPGA.co.uk, Tony Escobar, turbochop3300 and Wayne Booker

Thank you so much for supporting this project! If you would like to show up here, join us as Supporter+ on Patreon: