/pocket-sync

A GUI tool (Mac, Windows, Linux) for doing stuff with the Analogue Pocket

Primary LanguageTypeScriptGNU Affero General Public License v3.0AGPL-3.0

pocket-sync

"And fan-created apps let you load up a microSD card quickly and effortlessly."

wired.com - Review: Analogue Pocket

A Windows / Mac / Linux GUI to do stuff with the Analogue Pocket.

Built using Tauri

Main Screen

The Core ListSNES core details Updating all coresBrowsing Save StatesExporting a screenshotExporting GB Camera photos

Features:

  • Browse, configure, & install cores
  • Export corrected & upscalled screenshots
  • Backup & restore save files
  • Quick links to open game file folders
  • Browse & manage (bulk delete) save states
  • Export GB Camera photos
  • Automatically copy files over to the Pocket

Installation

  • Download the installer for your platform from The Latest Release
  • Note you'll need to click through to allow the application on Windows & right click to allow the application on MacOS since I can't be bothered setting up (& paying yearly for) the signing process
  • The SD card will need to have been initialised by the Pocket to get recognised
  • Plug in your Pocket / put in the SD card, click "Connect to Pocket", select the root folder (the one with Assets & Cores & Saves etc in it) and go
  • It'll create a pocket_sync.json file on to your pocket to hold config on first run

Windows Defender (& other AntiVirus) warnings

If this starts happening again let me know & I'll resubmit the app to the Windows Defender team to have them change the virus definitions since it's a false positive.

macOS 'Apple could not verify "Pocket Sync"' warning

Starting with macOS Catalina, Apple requires apps distributed outside the App Store to be notarized by Apple, which requires a paid developer account. Apps that aren't notarized will show a warning when opened, like the "Apple couldn't verify Pocket Sync" message. You can safely bypass this warning by following these steps:

  1. Download the latest release from releases.

  2. Double click Pocket.Sync_X.X.X_universal.dmg to mount the image.

  3. Drag Pocket Sync.app to the Applications folder.

  4. Open the app, resulting in the following message being displayed, "Apple could not verify "Pocket Sync".

    Apple could not verify "Pocket Sync"

    Important: This message must be displayed at least once to allow a new option to appear in system settings

  5. Open "System Settings" (click  in upper left -> click "System Settings").

  6. Scroll to "Privacy & Security".

  7. Under the Security header, click "Open anyway" next to the message "Pocket Sync was blocked to protect your Mac."

    Open anyway

Philosophy

  • What this purposely isn't is a way to install 100 Cores in 20 seconds without really knowing what any of them are (however you can "Update All")
  • I'll not be adding any sort of "Install All" button to the UI, instead it's a slower process of choosing what cores you're interested in & seeing them, including links to support whoever put the time into getting the core onto the Pocket, in more detail. Also, with the number of cores coming from github now you'll run into rate limiting if you try and pull them all down at once. (If you really want to just download every core at once I'd recommend the mattpannella / RetroDriven updaters for this over this one)
  • I'll not be supporting customising the video.json files (e.g. to add "Full Screen" modes), since I think this should be up to the core authors / users advanced enough to edit their own JSON (and deal with it if they break things). The app'll always allow you to opt out of any incoming video.json file though & if Analogue introduces a way to customise the video out without conflicting with the core author's files then I'll support it.

Roadmap

Translations

The app now supports translations into the user's language & locale for most things in the UI.

You can now use fink.inlang.com to edit / create translations & submit them as PRs

If you're fluent in another language and feel like helping out you can find the files in https://github.com/neil-morrison44/pocket-sync/tree/main/src/i18n/locales , just add one for the language (e.g. en) then make tweaks on top of it for locale specific things (e.g. en-US).

So far I've got translations for:

  • Chinese (@fevaoctwh)
  • Spanish (@rayelward)
  • German (@auer1329 & @sir-codealot)
  • French (@f00b4r0)
  • Portuguese (@reinaldosimoes)
  • Japanese (@bigmoonur)
  • Vietnamese (@anh-tuan)

Which I've been keeping up to date as I add new features (hopefully well enough). I'd particularly also like a Japanese translation, but any language will be accepted if the translation seems good enough.

It's in the ICU message format, which there are some guides available online for, but the main trick is that the brackets create levels of stuff to change vs leave e.g. "Change me {leave me {change me}}" so a "language" which is just english but shouting might have:

{
  "item": {
    "game_count": "THERE ARE {count, plural, =0 {NO GAMES} one {ONE GAME} other {# GAMES}}"
  }
}

Done

  • Hopefully get the saves backups working how I'd planned (close enough)
  • Support for adding custom images from PNGs, editing platform data, etc
  • Improve Search
  • Save State management (search, bulk delete etc)
  • Input viewer
  • Core settings
  • Screenshot bulk delete / save
  • Autobackup saves on connection (if there's changes)
  • Input viewer supporting game specific inputs
  • Settings supporting game specific settings
  • Image packs
  • Manual MiSTer save file sync
  • Installing / Checking for firmware updates (might wait for the real release of 1.1 for this)
  • Newsfeed support
  • Support for i18n translations
  • List new cores / updates since the last Pocket was connected (covered by the inventory's newsfeed)
  • Export Game Boy Camera images from the save state
  • "Update All" feature to update multiple installed cores at once
  • GB Palette editor / catalogue
  • Switched to Tauri v2
  • Auto-Repair button for some common issues causing errors
  • New icons by @AbFarid

Soon

Longer term

  • Library viewing / editing if that's ever rolled out to OpenFPGA

FAQs

Anything about files from the archive

I have no involvement in managing the files on the archive, try the FPGA Gaming discord.

Why doesn't this work on older MacOS version?

The tool I use to make this tauri only supports back to 10.13, so anything before then probably won't even open -- also Apple don't keep the default browser in old OSes up to date (Windows does for a while via service packs & in Linux you can do what you want) so I can only really support / can test on the last 2 major versions, sorry.

Why's the linux version using some EOL runtimes (webkitgtk issues)?

This particularly affects the Flatpak version I believe. The short, and vauge, version is due to Tauri v1 only supporting a particular version of webkitgtk.

I'm planning on updating to Tauri v2 soon after release, assuming I have the time around whenever it comes. Hopefully nothing fully breaks before then.

Can read more here tauri-apps/tauri#4426 (comment)

Why isn't some core in the list?

If it's new it could just be that it's not yet added to https://github.com/openfpga-cores-inventory/analogue-pocket. If it's been released outwith Github then support for whatever the format is will need to be added to the inventory.

You can install cores by dragging & dropping the .zip onto any running Pocket Sync window and it'll install as if you've downloaded it.

OpenFPGA Validator

I've put together this https://github.com/neil-morrison44/openfpga-validator which can be run by core devs by doing npx openfpga-validator@latest check <path_to_zip>.

It should catch places where any files in the core differ from what's specified on https://www.analogue.co/developer/docs/overview as well as make some warnings / recommendations for things which aren't specified in the Analogue docs but will trip up updaters.

Donations?

If you want to sponsor to help out with on going maintenance / future features / bug fixing then there should be a github sponsorship thing to the right somewhere. There's no extra features from being a sponsor, and I don't have plans of adding any.

You should donate to the folks actually porting / building cores first tough, since that's where the fun stuff comes from.

Thanks to