GoPocket is a versatile command-line tool designed for Analogue Pocket enthusiasts. It provides a convenient and efficient way to install, update and delete firmware and Cores for the Analogue Pocket handheld gaming device. With GoPocket, users can easily stay up to date with the latest firmware releases, access a wide range of compatible openFPGA cores, and manage their gaming experience effortlessly. Whether you're a retro gaming enthusiast or an avid Analogue Pocket user, GoPocket is here to enhance your gaming journey with its seamless cross-platform functionality and user-friendly command-line interface. ## Usage ```bash= $ gopocket ``` Expected output: ```bash= Analogue Pocket Control Tool Usage: gopocket <command> [options] [arguments] Commands: install - Install new platform cores update - Update cores remove - Remove cores list - List available cores info - Show detailed information about a core firmware - Download the latest firmware version - Show gopocket version details Options: --handheld List handheld gaming cores --console List console gaming cores --arcade List arcade gaming cores --computer List computer system cores --other List arcade compatible cores (specific category) ``` ### List command The `list` command is used to retrieve a list of available cores for the Analogue Pocket gaming device. This command provides users with essential information about the available cores, including their names, platforms, current installed versions, available versions, categories, and status. #### Without any arguments ```bash= $ gopocket list ``` Running the `gopocket list` command without any additional arguments will display a list of available cores along with their details. Expected Output: ```bash= $ gopocket list Loading openfpga data... Reading installed cores... Available Cores: Name | Platform | Current | Avail. | Category | Status ----------+--------------+---------+--------+----------+-------- pong | Pong | 1.0.2 | 1.2.0 | Arcade | Outdated nes | NES | 0.3.1 | 0.3.1 | Console | Latest pce | PC Engine | - | 0.3.0 | Computer | poke_mini | Pokemon Mini | - | 0.2.0 | Handheld | There is 1 available update. Run 'gopocket update'. ``` Hint: Use red color to highlight the "Outdated" and green color to highlight "Latest". #### Filtering by category If you want to view cores of a specific category, you can use one of the options `--handheld`, `--console`, `--arcade`, `--computer`, `--other`. ### Info Command The `gopocket info` command is used to retrieve detailed information about a specific core installed on the Analogue Pocket gaming device. By providing the name of the core as an argument, users can access essential details such as its category, system information, latest version, repository URL, upstream URL, developer, installation status, ROMs folder, BIOS file availability, and a description. ```bash= $ gopocket info snes ``` Expected output ```bash= Loading openfpga data... Reading installed cores... Core Information for SNES: -------------------------- Category: Console System Info: Nintendo SNES (1990) Latest Version: 0.4.3 (2022-12-14) Repository URL: https://github.com/agg23/openfpga-SNES Upstream URL: https://github.com/srg320/SNES_MiSTer Developer: Adam Gastineau Installed: Yes Status: out-of-date (version 0.4.1 installed) ROMs folder: /Assets/snes/common/*{smc,sfc,bs} BIOS file: Present Description: The Super Nintendo Entertainment System (SNES) core allows you to emulate SNES games on the Analogue Pocket. Enjoy a vast library of classic games and relive the nostalgia of the 16-bit era. ``` Hint: Highlight the ROMs folder and BIOS file with yellow color. Also if it's out-of-date with red color or if it's up-to-date with green color. ### Update Command The `gopocket update` command allows you to update the installed cores on your Analogue Pocket gaming device. This command provides options for updating specific cores, checking for updates on all installed cores, and updating all outdated cores. #### Updating a specific core Running the `gopocket update <core>` command with a specific core name will check if an update is available and proceed with the update process if necessary. ```bash= $ gopocket update snes ``` Expected output: ```bash Loading openfpga data... Reading installed cores... Checking for newer versions... Name | Platform | Current | Avail. | Category | Status ----------+--------------+---------+--------+----------+-------- snes | Super NES | 0.4.2 | 0.4.3 | Console | Outdated 1 core installed, 1 update available. The following cores are going to be updated: snes-0.4.2 --> snes-0.4.3 Overall download size: X.XX MB. Continue? [y/n] ? (y) Downloading core files... Retrieving: snes-0.4.3.........[done] Updating core files... (1/1) Installing: snes-0.4.3...........[done] The SNES core has been successfully updated to version 0.4.3. ``` Hint: Outdate with red color. Done with green color. Hint: Bold letters 'The following cores are going to be updated:' and 'Continue? [y/n] ? (y)' #### No update available Running the `gopocket update $core` command for a specific core that is already up to date will display a message indicating that no update is available. ```bash= $ gopocket update snes ``` Expected output: ```bash= Loading openfpga data... Reading installed cores... Checking for newer versions... Name | Platform | Current | Avail. | Category | Status ----------+--------------+---------+--------+----------+-------- snes | Super NES | 0.4.3 | 0.4.3 | Console | Latest 1 core installed, 0 updates available. No update available for the SNES core. The core is already up to date at version 0.4.3. ``` #### Updating All Outdated Cores Running the `gopocket update` command without specifying a core will check for updates on all installed cores and update the outdated ones. ```bash= $ gopocket update ``` Expected output: ```bash= Loading openfpga data... Reading installed cores... Checking for newer versions... Name | Platform | Current | Avail. | Category | Status ----------+--------------+---------+--------+----------+-------- snes | Super NES | 0.4.2 | 0.4.3 | Console | Outdated poke-emu | Pokemon Emu | 0.1.1 | 1.2.0 | Handheld | Outdated ng | NeoGeo | 0.2 | 0.3 | Console | Outdated ... (omitted for brevity) ... (omitted for brevity) ... (omitted for brevity) 16 cores installed cores checked, 3 updates available. The following cores are going to be updated: snes-0.4.2 --> snes-0.4.3 poke-emu-0.1.1 -> poke-emu-1.2 ng-0.2 -> ng-0.3 3 cores to update. Overall download size: X.XX MB. Continue? [y/n] ? (y) Downloading core files... Retrieving: snes-0.4.3.........[done] Retrieving: poke-emu-1.2.0.....[done] Retrieving: ng-0.3 ............[done] Updating core files... (1/3) Installing: snes-0.4.3...........[done] (2/3) Installing: poke-emu-1.2.0.......[done] (3/3) Installing: ng-0.3...............[done] The SNES core has been successfully updated to version 0.4.3. The poke-emu core has been successfully updated to version 1.2.0 The ng core has been successfully updated to version 0.3. ``` ### Install Command The `gopocket install` command allows you to install and update cores on your Analogue Pocket gaming device. This command provides options for installing specific cores, checking if a core is already installed, and updating existing cores to the latest version. #### Installing a new core Running the `gopocket install $core` command for a core that is not currently installed will initiate the installation process. ```bash= $ gopocket install snes ``` Expected output: ```bash= Loading openfpga data... Reading installed cores... Checking if core is already installed ... SNES core is not currently installed on your Analogue Pocket gaming device. The following cores are going to be installed: snes-0.4.2 --> snes-0.4.3 Overall download size: X.XX MB. Continue? [y/n] ? (y) Downloading core files... Retrieving: snes-0.4.3.........[done] Installing core files... (1/1) Installing: snes-0.4.3...........[done] The SNES core has been successfully updated to version 0.4.3. Note: Run 'gopocket info snes' to get information regarding the location of the ROMs folder and the required BIOS files for the SNES core. ``` #### Core Already Installed and Up-to-Date Running the `gopocket install $core` command for a core that is already installed and up to date will display a message indicating that no further installation is required. ```bash= $ gopocket install snes ``` Expected Output: ```bash= Loading openfpga data... Reading installed cores... Checking if core is already installed ... The SNES core is already installed on your Analogue Pocket gaming device. No further installation or update is required. ``` #### Installing an out-of-date core Running the `gopocket install $core` command for a core that is already installed but not up to date will initiate the update process. ```bash= gopocket install snes ``` Expected Output: ```bash= Loading openfpga data... Reading installed cores... Checking if core is already installed ... Checking for newer versions... Name | Platform | Current | Avail. | Category | Status ----------+--------------+---------+--------+----------+-------- snes | Super NES | 0.4.2 | 0.4.3 | Console | Outdated 1 core installed, 1 update available. The following cores are going to be updated: snes-0.4.2 --> snes-0.4.3 Overall download size: X.XX MB. Continue? [y/n] ? (y) Downloading core files... Retrieving: snes-0.4.3.........[done] Updating core files... (1/1) Installing: snes-0.4.3...........[done] The SNES core has been successfully updated to version 0.4.3. ``` ### Remove Command The `gopocket remove` command allows you to remove a core from your Analogue Pocket handheld gaming device. This command provides options for removing specific cores. #### Remove a specific core (that is present) ```bash= $ gopocket remove snes ``` Expected Output: ```bash Loading openfpga data... Reading installed cores... This will remove snes core along with all its ROMs and BIOS files. Do you want to proceed with the removal? [y/n] y Removing SNES core... SNES core successfully removed. ``` #### Remove a Core Not Present ```bash= $ gopocket remove snes ``` Expected Output: ```bash= Loading openfpga data... Reading installed cores... SNES core not found. No action required. ``` Please exercise caution when removing a core, as it will also remove all associated ROMs and BIOS files.