Giter Club home page Giter Club logo

pupdate's Introduction

Current Release Downloads Donate

A free utility for updating the openFPGA cores, firmware, and a bunch of other stuff on your Analogue Pocket.

A complete list of available cores can also be found here: https://openfpga-cores-inventory.github.io/analogue-pocket/

I can't (and don't want to) support old versions, so please make sure you download the latest release before submitting any issues.

Easy Mode

If you just want to use this utility, do not clone the source repository. Just download the latest release. Unzip it, put the executable file for your platform (windows, mac os, or linux) in the root of your sd card, and run the program.

At the main menu run Settings to have it walk through the available settings for you.

Interactive Console Menu

For a full view of the interactive console menu, see here.

RTFM

Update All | Update Firmware | Select Cores | Download Assets | Backup Saves & Memories | Image Packs | Library Images | GameBoy Palettes | PC Engine CD | Game & Watch | Display Modes | Super GameBoy Aspect Ratio | Pocket Maintenance | Pocket Extras | Settings | Additional Settings | CLI Commands and Parameters | Jotego Beta Cores |

Update All

Install/Update all of your cores, plus a bunch of other stuff. It can basically be used as the "do everything I want" option. Everything marked with a * can be turned on/off via settings.

  1. Checks for new firmware updates *
  2. Compress and backup Saves and Memories *
  3. Installs/updates every core you have selected
  4. Checks for missing required assets for each core you have selected *
  5. Deletes cores that you do not have selected *
  6. Runs the instance JSON generator for each core you have selected (currently, only PC Engine CD) *
  7. Rename every Jotego core you have selected *

Update Firmware

Self explanatory. Just checks for firmware updates and exits.

Select Cores

This will prompt you to ask if you want new cores installed by default, with 3 options:

  • Yes
    • Selecting this automatically chooses all existing cores, and will continue to automatically install new cores as they are released.
  • No
    • Selecting this means as new cores are released, they will not be installed automatically, nor will you be asked about them. Then you will be presented with a list of all currently available cores, to select from for yourself.
  • Ask
    • Selecting this means as new cores are released, you will be notified each time you run the app and have the option to select them for installation. Then you will be presented with a list of all currently available cores, to select from for yourself.

Download Assets

Checks for missing assets for each core you have selected (mainly arcade ROM files and BIOSes).

Note: You are responsible for finding and adding your own ROMs for non-arcade cores.

Backup Saves & Memories

This will compress the Saves and Memories directories from your Pocket to the location specified in the config settings.

Pocket Setup - Download Platform Image Packs

This will present you with a list of available image packs and automatically download and extract it to the Platforms/_images directory for you

Pocket Setup - Download Pocket Library Images

This will download the System Library Images that were published by Spiritualized1997. They are used for the Library functionality on the Pocket.

Pocket Setup - Download GameBoy Palettes

This will download the palette files for the Pocket GameBoy cartridges. This is currently maintained by davewongillies on GitHub and by R.A.Helllord on Discord and Reddit.

Contents:

  • All official GBC, SGB, NSO, and 3DS VC palettes
  • Custom palettes for all Limited Edition Pockets
  • SGB2 Vaporwave Edition palettes courtesy of flamepanther
  • Trashuncle's palettes for Mister
  • Sameboy and BGB palettes
  • Pipboy palettes (Amber, Green, Blue, and White)
  • 300+ palettes covering a ton of systems and themes by TheWolfBunny64

Pocket Setup - Generating Instance JSON Files (PC Engine CD)

  • Only supported by PC Engine CD, currently

  • Put your games in /Assets/{platform}/common

  • Each game needs to be in its own directory (and be sure to name the directory the full title of the game)

  • Examples:

    • /Assets/pcecd/common/Rondo of Blood
    • /Assets/pcecd/common/Bonk
    • etc
  • All games (for PC Engine CD) must be in cue/bin format. The generated json file will be saved using the same filename as the cue file, so be sure to also name that with the full title of the game

  • When you run the Generate Instance JSON Files or Update All menu items, it will search through every directory in common and create a json file that can be launched by the core

  • You can disable this process in Update All by setting build_instance_jsons to false in your settings file, if you don't want it to run every time you update.

Pocket Setup - Generate Game & Watch ROMs

How to build game and watch roms that are compatible with the Pocket:

Create 2 new folders.

/Assets/gameandwatch/agg23.GameAndWatch/artwork and /Assets/gameandwatch/agg23.GameAndWatch/roms

Place your [artwork].zip files into the artwork folder and your [rom].zip files into the roms folder

Should look like this:

/Assets/gameandwatch/agg23.GameAndWatch/artwork/gnw_dkong.zip

/Assets/gameandwatch/agg23.GameAndWatch/roms/gnw_dkong.zip

Now just run the menu option in the updater and it will build your games

Pocket Setup - Enable All Display Modes

This will enable all of the Pocket Display Modes for the openFPGA cores.

Pocket Setup - Super GameBoy Aspect Ratio

This allows you to apply the 8:7 aspect ratio to any of the Super GameBoy cores you may have installed. When selected you will be asked which cores you want to do this for.

The 8:7 aspect ratio gives you a more 'full screen' look and feel on the Pocket.

You also have the ability to reset any of the Super GameBoy cores back to the original 4:3 aspect ratio.

Pocket Maintenance - Reinstall or Uninstall Cores

These give you the ability to reinstall all or select cores. The reinstall will erase and reinstall all core specific files and assets. It will not touch your ROMs or Save files.

If you wish to uninstall one or more cores, selecting 'Uninstall Select Cores' will allow you to choose which cores you'd like to remove. It will also prompt you to ask if you wish to remove core specific assets. Doing so will not touch your ROMs or Save files.

Pocket Extras

This section contains some extra functionality that individuals have created. Each item in this menu will provide a description and links to the authors GitHub before installing it. That way you get more information and can choose accordingly.

Note: If you are an advanced user, you can disable the description functionality by setting the show_menu_description config setting to false

There are 3 main categories:

Additional Assets

This contains extras that enhance or modify existing cores. For example, addition additional ROM support to Arcade cores or allowing an Arcade core to load multiple games rather than just one.

This type of extra requires you have the necessary core installed. If you don't, you will be prompted to install it.

Combination Platforms

This contains new platforms that combine multiple cores into a single one. This helps in reducing the number of items you see in your openFPGA menu on your Pocket and to leverage the 'Change Core' functionality.

Variant Cores

This contains a list of alternate core setups. These take existing cores and make copies of them with some changes, leaving the original core intact and providing new functionality with the additional core.

Settings

The following settings are all available via the Settings menu item.

Name Description
Download Firmware Updates Check for firmware updates when running "Update All"
Download Missing Assets Check for missing assets (ROMs, BIOS files, etc) when running "Update All"
Download Game & Watch ROMS Download Game & Watch ROMS when running "Update All"
Build game JSON Files Run the Instance JSON builder during "Update All"
Delete untracked cores Any core that is available, but you have not chosen in the "Core Selector" will be uninstalled, if found on your SD card when running "Update All"
Automatically rename Jotego cores Jotego's cores will be renamed to the correct titles of the platforms they are emulating, when running "Update All". example: jtcontra is Contra
Use CRC check Use CRC file hashes to verify Asset files, and re-download if needed. When running "Update All" or "Download Required Assets"
Preserve Platforms folder Don't overwrite changes made to files in the Platforms folder when running "Update All"
Skip alternative ROMs Ignore files if they are in a folder named "_alternatives" when checking for Assets (Note: this is on by default)
Compress and backup Saves and Memories This will compress and backup the Saves and Memories directory to the specified location. By default, a Backups directory will be created off the root. The location can be changed manually by setting the "backup_saves_location" with the absolute path in the settings file.
Show Menu Descriptions This will show descriptions for some of the advanced menu items after they are selected, including a prompt asking if you want to proceed. This is enabled by default.
Use custom archive Allows you to use a custom site for Asset file checking (there is a pre-configured site available). The actual URL of the custom site can be set manually by editing the settings file in an editor.

Additional Settings

The following settings can be set by editing pupdate_settings.json in a text editor.

Name Description
config.archive_name The account on archive.org that the app will use to check for Assets
config.github_token The app will use this when making API calls to GitHub
config.download_new_cores This will be set automatically by the Select Cores menu item. It can be set to "yes", "no", or "ask"
config.custom_archive You can set a custom URL here, if you don't want to use the default. index is a relative path to the index of your custom site's files. This is not required, but it's needed for CRC checking. If you have CRC checking enabled, the setting will be ignored unless this provides the necessary format. It must match the output of archive.org's json endpoint. https://archive.org/developers/md-read.html
config.backup_saves Set this to true if you want your Saves directory to be backed up automatically during Update All
config.backup_saves_location Put the absolute path to the backup location here to backup your Saves directory to. This defaults to Backups in the current directory when not set.
coreSettings This allows you to set a subset of settings on a per core basis. It contains a list of every core, with 3 options. skip, download_assets, and platform_rename. You can use these to override your global defaults

CLI Commands and Parameters

  menu                     Interactive Main Menu (Default Verb)
    -p, --path                Absolute path to install location
    -s, --skip-update         Go straight to the menu, without looking for an update

  fund                     List sponsor links. Lists all if no core is provided
    -p, --path                Absolute path to install location
    -c, --core                The core to check funding links for
    
  update                   Run update all. (Can be configured via the settings menu)
    -p, --path                Absolute path to install location
    -c, --core                The core you want to update. Runs for all otherwise
    -r, --clean               Clean install. Remove all existing core files, and force a fresh re-install
  
  uninstall                Delete a core
    -p, --path                Absolute path to install location
    -c, --core                The core you want to uninstall. Required
    -a, --assets              Delete the core specific Assets folder. ex: Assets/{platform}/{corename}

  assets                   Run the asset downloader
    -p, --path                Absolute path to install location
    -c, --core                The core you want to download assets for.

  firmware                 Check for Pocket firmware updates
    -p, --path                Absolute path to install location

  images                   Download image packs
    -p, --path                Absolute path to install location
    -o, --owner               Image pack repo username
    -i, --imagepack           Github repo name for image pack
    -v, --variant             The optional variant

  instance-generator       Run the instance JSON generator for PC Engine CD
    -p, --path                Absolute path to install location

  backup-saves             Compress and backup Saves & Memories directories
    -p, --path                Absolute path to install location
    -l, --location            Absolute path to backup location. Required
    -s, --save                Save settings to the config file for use during 'Update All'

  gameboy-palettes         Run the instance JSON generator
    -p, --path                Absolute path to install location

  pocket-library-images    Run the instance JSON generator
    -p, --path                Absolute path to install location

  pocket-extras            Download Pocket Extras
    -p, --path                Absolute path to install location
    -n, --name                The name of the extra to install. Required
    -i, --info                Shows the details for the specified 'name'
    -l, --list                Lists out all of the values for 'name' and their details

  display-modes            Enable all Display Modes
    -p, --path                Absolute path to install location

  update-self              Check for updates to pupdate

  help                     Display more information on a specific command.

  version                  Display version information.

examples:

/path/to/pupdate -p /path/to/sdcard/

/path/to/pupdate update -c boogermann.bankpanic

/path/to/pupdate assets -c jotego.jtcontra

/path/to/pupdate images -i pocket-platform-images -o dyreschlock -v home

Jotego Beta Cores

Now that Jotego is releasing his beta cores publicly (and requiring a beta key to play them), you can just drop the jtbeta.zip file from patreon onto the root of your sd card and run Update All, and it will automatically copy the beta key to the correct folders for the cores that need it. It also will let you install the yhe cores directly from the updater, now. Make sure you don't rename the file, it's going to look for exactly jtbeta.zip

Troubleshooting

  • Slow asset downloads? Try toggling use_custom_archive to true, in your settings.

  • If you run the update process and get a message like Error in framework RS: bridge not responding when running a core, try to run the updater in a local folder on your pc, and then copy the files over to the sd card afterwards. I'm not entirely sure what the issue is, but I've seen it reported a bunch of times now and running the updater locally seems to help.

  • I keep getting a Missing ROM ID [1] message when trying to launch arcade games in the _alternatives folder. Check your settings and make sure you have Skip Alternative ROMS turned off.

Submitting new cores

You can submit new cores here https://github.com/openfpga-cores-inventory/analogue-pocket

Credits

Thanks to neil-morrison44. This is a port built on top of the work originally done by him here.

With special thanks to:

Michael Hallett for contributing a ton to the project.

RetroDriven for maintaining the arcade rom archive.

dyreschlock for hosting the updated platform files for Jotego's cores.

espiox for maintaining the game & watch rom archive.

Other Options

If you're looking for something with a few more features and a user interface, check out this updater. https://github.com/RetroDriven/Pocket_Updater

Or if you want something cross platform that will run on a mac or linux: https://github.com/neil-morrison44/pocket-sync

pupdate's People

Contributors

codewario avatar davewongillies avatar dyreschlock avatar ericlewis avatar guspaz avatar hallem avatar keeniidx avatar knorrium avatar loneboco avatar manefunction avatar mattpannella avatar mbaran5 avatar retrodriven avatar rpetersnil avatar starquake avatar tolaris avatar

pupdate's Issues

JTBeta Key Issues - Remove all Keys

People seem to have a lot of issues with the JTBeta Key.

  • Message better that the beta key is missing and give the name and location
  • Add a maintenance menu option to completely remove all beta keys from the cores
  • Add collection to cores service for a list of beta cores to make it easier

Error Handling

Write a cleaner message to the console on error but log the full details in a log file.

Super GameBoy Multi-Platform Extra Support

The way core identifiers work right now, if there are duplicates, only the first one is selected. It's also used to denote the required base core for the additional assets type.

In order to support multiple extras for the same core identifier, the primary lookup can't be done by core identifier.

  • either add the id to the core settings OR replace the boolean with the id instead (leaning towards the latter)
    • be careful with the update process & make sure that the update check works
  • consider changing how the required base core is handled

Arcade Alternate Assets Question

When downloading an arcade core, if the skip alternate assets flag is false, prompt the user and ask if they want to change it.

Include a warning that there could be a lot of files and may take longer to download.

How to detect if it's an arcade core?

  • Maintain a list? (Messy)
  • Instance Json files? (Ick)

Super GameBoy Additional ROM & Core Support

  • get the Super GameBoy 2 rom added to the openFPGA Files archive
  • look into being able to apply the IPS patch for the SGB 2 Vaporwave Edition ROM hack
  • ability to set the aspect ratio of any SGB core to 8:7 with a menu and CLI

Note: the SGB bios and ROM file don't automatically download because they are not marked as required in the data.json (I think I fixed this in my fork, double check.)

Pocket Library Images Download Menu

Redesign the Menu system

  • move lesser used menu items to a submenu
  • see what can be done with the core selection menu systems
  • see what can be done to bring the settings menu into a standard submenu
  • see what can be done to bring the image packs menu into a standard submenu

CLI Parameters

Go over the CLI parameters and see where they should override config settings. (i.e. preserve platforms directory)

Game & Watch ROMs

Add support for downloading all the game and watch roms when the core is installed.

Error Handling, Debug, & Logging Support

  • Add a setting to enable debug support. When enabled, output exception details to a file.
  • Add a logging mode for the screen output (mimimal, verbose)
    • i.e. suppress already downloaded messages, complete messages, etc.
    • if minimal display some kind of progress bar to let the user know things are still happening
    • a way to write output to both the screen and file

Download Assets Core Setting Menu

Add a core selector ability to be able to toggle the core specific download assets flag in the console menu. Include a prompt to ask to set them all to true.

Consider how to separate the execution functionality it currently has from the above new functionality.

Verify Cores data.json and Required Assets

It seems some of the cores are missing the required: true setting on some of the specified assets (bios, rom, etc.). For example, the spiritualized1997 Super GameBoy core.

Check to see how systemic this issue is with the other cores. Yeah it's a long ass list.

Update Check Logic

Move the update check logic up to be the first thing that happens if allowed. That way if there's an error in the Global Helper it doesn't block the update.

Clean Install Menu

Add menu support for doing a clean install (reinstall) of any or all of the installed cores.

Pocket Extras Support

https://github.com/dyreschlock/pocket-extras

  • Donkey Kong
    -- updated data.json to allow for rom choosing
    -- core rom json files (roms should be in the archive already)
  • Radar Scope
    -- updated data.json to allow for rom choosing
    -- core rom json files (roms should be in the archive already)
  • Jotego Extras
    -- core rom json files (roms should be in the archive already)
  • Coin Op Collective merge multi cores into single (Toaplan2)

Game Boy Palettes Download

Menu and CLI option to download the palette pack of choice.

  • look for references in the discord
  • list the choices out with option to download all
  • setting to download on update all? (would have to override)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.