Git Product home page Git Product logo

pocket-sync's Introduction

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.

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)
  • French (@f00b4r0)
  • Portuguese (@reinaldosimoes)

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

Soon

  • Switching to Tauri v2 which should improve Linux performance, allow some awkward bits to be rewritten & allow the Linux / Flatpak builds to use versions of things which aren't end of life. Also enables using features from latest Rust versions.

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

pocket-sync's People

Contributors

abfarid avatar auer1329 avatar dependabot[bot] avatar dstaley avatar f00b4r0 avatar neil-morrison44 avatar nilsjacobsen avatar rayelward avatar reinaldosimoes avatar remy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pocket-sync's Issues

MiSTer Save Sync - pocket-sync looks for PC Engine CD saves in the wrong location?

On my MiSTer, the PC Engine CD game saves are located in /media/fat/saves/TGFX16 (even though the games themselves are under /media/fat/games/TGFX16-CD - I think the problem is that the MiSTer core doesn't discriminate between CD and non-CD games when writing saves, so puts everything in the TGFX16 directory).

pocket-sync is only checking /media/fat/saves/TGFX16-CD on the MiSTer and so can't sync my PC Engine CD saves.

All other systems (including non-CD PC Engine games) get their saves synced fine.

I'm running pocket-sync v3.0.0 on a Windows 11 PC, and my MiSTer is up to date - MiSTer software v230223, Turbo Duo Core v23.02.24.

MacOS 11: Error / crash on clicking "image packs"

Describe the bug

Manually added the jtcps1 core and related files to my SD card. Then loaded Pocket Sync, selected "Platforms", then "jtcps1" then clicked on "Image Packs" (I didn't know what it would do) and it crashes with:

Platforms: jtcps1
options.signal must be AbortSignal
pipeThrough@[native code]
gS@tauri://localhost/assets/index-09e71954.js:3200:1104040
tauri://localhost/assets/index-09e71954.js:3200:1107497
asyncFunctionResume@[native code]
tauri://localhost/assets/index-09e71954.js:3201:1161148
asyncFunctionResume@[native code]
[native code]
promiseReactionJobWithoutPromise@[native code]

Retry lets me repeat the process.

If I don't click retry, the sidebar links don't work - it just keeps the error and changes Platforms: jtcps1 to Games: null, etc.

Screenshots

Desktop (please complete the following information):

  • OS: macOS big sur
  • Pocket Sync Version: 2.4.0

Installing cores via zip file not checking for folders in correct heirarchy

First, many thanks for providing this wonderful tool. I wanted to suggest an enhancement to the core installation routine when installing a new core from a zip file (for example JT beta cores).

When dragging a zip file into the UI, the UI helpfully shows the contents and lets you pick what you want to extract to the SD card.

However, it does not appear to check the zip files folder layout to ensure it places the folders in the correct heirarchy on the destination SD card.
It makes the assumption that the ZIP file contains the Platforms, Assets, Cores and Presets folders are located at the root.

In some cases this may not be the case, see below example the JT beta core update zips - where the contents that need extracting the to pocket SD card are situated in the pocket subfolder:

image

When installing this zip via Pocket Sync, it leads to an invalid folder structure.
As a workaround, I have to recompress the contents of pocket into a separate archive.

It seems Pocket Sync is already checking ZIP file contents for things to exclude (like .MACOSX foider) - suggest adding a subroutine to make sure the folders are copied to the right location.

No text/image is displayed on window

No text/image is displayed inside pocket sync menu on mac 10.15.7 after pocket sync 2.2.1, just a grey color window.

2.2.1 and below works fine
2.3.0 + show nothing inside window

2 2 1
2 3 0

GitHub rate limit reached

GitHub rate limit reached, retry after 07/01/2023, 23:11:14
@tauri://localhost/assets/index-8f6733b8.js:10:74063
asyncFunctionResume@[native code]
@[native code]
promiseReactionJobWithoutPromise@[native code]
promiseReactionJob@[native code]

Error during tag_name parsing

I think I was about to download one of the opengateware arcade cores, and perhaps this repo didn't have a release or tag (not 100% sure). But I think the error is cached and stuck that way, because if I relaunch the Pocket Sync v1.7.0 app, and connect to the same SD card, I can't switch between tabs or navigate away from the error afterwards. I'll try uninstalling / reinstalling, or connecting to a new SD card.

undefined is not an object (evaluating 't[0].tag_name')
@tauri://localhost/assets/index-7e9f8851.js:3163:58974
useMemo@tauri://localhost/assets/index-7e9f8851.js:6:25905
jte@tauri://localhost/assets/index-7e9f8851.js:3163:58965
OM@tauri://localhost/assets/index-7e9f8851.js:6:19559
aD@tauri://localhost/assets/index-7e9f8851.js:8:44430
iD@tauri://localhost/assets/index-7e9f8851.js:8:40067
g6@tauri://localhost/assets/index-7e9f8851.js:8:39995
Iy@tauri://localhost/assets/index-7e9f8851.js:8:39848
F1@tauri://localhost/assets/index-7e9f8851.js:8:36180
tD@tauri://localhost/assets/index-7e9f8851.js:8:35126
tD@[native code]
E@tauri://localhost/assets/index-7e9f8851.js:1:10047
re@tauri://localhost/assets/index-7e9f8851.js:1:10411

Feature request: ROM syncing

I'm requesting a feature that would allow syncing the whole roms library with a local folder on the pc.

Ideally it would be possible to choose a different folder for each system but also a global folder could work, as long as the resulting folder structure is generic enough to be compatible with other emulators or syncing apps

'Group openFPGA' option bugged after using the app

Describe the bug
After installing and updating several cores, upon entering the openFPGA menu with 'Group openFPGA' selected, only the 'All' option will be viewable. Upon selecting 'All', all my cores are visible and usable, but if I back out from this menu, there are suddenly lots of different options labelled as each corresponding core's category (All, Arcade, Console, Console, Arcade etc). Selecting anything but 'All' can send the Pocket into a similar state that occurs if 'Resume Browser' is selected when the last viewed folder has been deleted (flashing white screen, only fixable by reboot).

Replication
Despite having had this occur to me twice, I am unsure exactly what steps there are to replicate this bug. All I've done between the two times this has happened to me is install new cores, update existing ones, and download files from the archive. In this specific case, I installed several of jotego's cores, some of the individual arcade cores such as Pooyan, and downloaded their respective files. Turning off 'Group openFPGA' shows no issues in the openFPGA browser, and I believe the last time this happened I just swapped to a backup of my SD card before using the app.

Expected behaviour
I expect the Group openFPGA function to work as normal.

Screenshots
pic1
pic2

Desktop (please complete the following information):

  • OS: Windows
  • Version: 10

Flatpak - GNOME 42 is EOL

When performing Flatpak updates, I get the following notice:

Info: runtime org.gnome.Platform branch 42 is end-of-life, with reason:
   The GNOME 42 runtime is no longer supported as of March 21, 2023. Please ask your application developer to migrate to a supported platform.
Info: applications using this runtime:
   io.github.neil_morrison44.pocket-sync

Linux DEB - Error loading shared library - libssl

Linux Mint 21 Cinnamon

Get this when running:

pocket-sync: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

I have the package libssl-dev installed which I thought should satisfy that dependency.

Question: can you rename core labels?

I've not been able to test yet, but this looks great.

I wanted to know if renaming a core (or specifically it's label) such as "genesis" to "mega drive" is supported and whether it'll stick if there's a core update?

I guess the same question to categories too, as I tend to rename Jotego's cores to "arcade" rather than what they have as "arcade compatible".

Cheers.

Stuck Loading Core Data - macOS (Pokemon Mini, Pong, Slap Fight)

On my machine, the Pokemon Mini, Pong, and, Slap Fight cores get stuck when loading Cores details. These cores display well on the Platforms and Games pages, but the Cores details can't load when you click into them from there or when you visit the Cores page. Pokemon Mini and Pong were loaded manually, Slap Fight was loaded by Pocket Sync. I tried deleting all the related files for the Slap Fight core and allowing Pocket Sync to reinstall them, but received the same results. I've not had similar problems with any of the other cores - some of which were successfully set up by Pocket Sync.

Here are my system specs:

  • Analogue Pocket - 1st Generation
  • macOS - Ventura 13.0.1 (22A400)
  • Pocket Sync - Version 2.0.0 (20221224.040553)

Thank you for looking into this. If you need me to test anything else or provide additional information, just let me know.

Feature Request: Auto Connect

Would it be possible to have an option to set a drive letter that Pocket Sync automatically looks at when starting the app, rather than having to manually point it there each time?

Can't open game folders

Platform: Windows
Version: 1.0.1

Issue:
Loading the SD card through an SD card reader (not through Pocket USB).

When I select the Games tab in the program, the window populates installed cores and lists how many games are in the respective folders. "1 Games", "5 Games", etc.

But no matter where I click on any of the icons or text, the program doesn't open a Windows Explorer file window.

Is there something I'm missing, or is this a bug?

The start window appears and immediately disappears

I found a bug on my Macbook Air Mid 2012 13", macOS Mojave 10.14.6. Tested versions 1.0.0 — 2.0.0.
I installed the application, but on the first launch, the start window appears and immediately disappears, leaving behind an empty gray application window, with which nothing can be done. Restarting, reinstalling, rebooting, with the connected Pocket and without, lead to the same effect. Please fix it.

IMG_9849.mov

Game Gear core shows old release as update

On the Game Gear core it alway shows me the 1.2.0 as an update marked green although there is no 1.2.0 version and the actual latest one is 1.3.0 which is already installed.

Instant crash/unable to open

Describe the bug
The program instantly crashes or is unable to open. A window flashes with the title "PocketSync" for a frame or two then closes.

To Reproduce
Steps to reproduce the behaviour

  1. Install PocketSync
  2. Try to open program.

Expected behaviour
The program to open and run.

Desktop (please complete the following information):

  • OS: Windows 11
  • Version 22H2
  • Build 22621.1702

Connection to Pocket Fails on MacOS

Mac OS Monterey 12.5

Apologies, but the setup is not entirely clear. I have a pocket with correctly formatted SD card. When I click "connect to pocket" there is a slight delay but the pocket device is not visible in the file browser that opens.

Are there examples of how the connection process should behave on MacOS?

Changed in JTBIN folders

Hi, just to tell you that I moved the Pocket files in JTBIN from /pocket to /pocket/raw, in order to have release zip files in /pocket/zip.

Thank you for making life easier to users.

Stuck loading screenshot and save states on Windows 11

Hi, the app shows screenshots but once I click on any there is only loading animation, as for save states it doesn't show anything but loading animation, also when I try to make backup of saves the app creates empty zip files.

Windows 11 build 22623.1020
Pocket Sync 1.4.1

"npm run build" doesn't finish building app

Trying to package this app as a Flatpak, I ran into problems getting the application to finish building. The dist/ directory doesn't have any binaries as can be seen by the debug find dist/ being run after npm run build.

The (unfinished) Flatpak manifest is at:
https://github.com/hadess/flathub/blob/pocket-sync/com.github.neil_morrison44.pocket-sync.yaml

I tested with both node16 and node18 runtimes.

Running: npm ci --offline --cache=$FLATPAK_BUILDER_BUILDDIR/flatpak-node/npm-cache

added 399 packages, and audited 400 packages in 6s

107 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
Running: npm run build

> [email protected] build
> tsc && vite build

vite v3.2.4 building for production...
transforming (1355) node_modules/lodash/_Uint8Array.jsUse of eval is strongly discouraged, as it poses security risks and may cause issues with minification
✓ 1844 modules transformed.
dist/assets/AnalogueOS-Regular.fd6d491a.woff2   9.25 KiB
dist/assets/AnalogueOS-Regular.7911d8ee.woff    14.88 KiB
dist/index.html                                 0.44 KiB
dist/assets/index.96367cfe.css                  18.93 KiB / gzip: 4.17 KiB
dist/assets/index.cf1f3b26.js                   1271.25 KiB / gzip: 351.58 KiB

(!) Some chunks are larger than 500 KiB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/guide/en/#outputmanualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
Running: find dist/
dist/
dist/tauri.svg
dist/vite.svg
dist/index.html
dist/assets
dist/assets/AnalogueOS-Regular.fd6d491a.woff2
dist/assets/AnalogueOS-Regular.7911d8ee.woff
dist/assets/index.96367cfe.css
dist/assets/index.cf1f3b26.js

Pocket - Sync Won't Open on Catalina

my MacBook air is running Catalina 10.15.7 and
the latest pocket sync update just open a blank window.
Previous Version was working perfectly.

JSON Parse error

JSON Parse error: Unexpected comma at the end of array expression
parse@[native code]
@tauri://localhost/assets/index-9f9c9e3f.js:16:255012
asyncFunctionResume@[native code]
@[native code]
promiseReactionJobWithoutPromise@[native code]
promiseReactionJob@[native code]

Check for core/firmware updates without connected Pocket?

As someone who has converted to using Pocket Sync exclusively, I was wondering if there was a way that Pocket Sync could "remember" which core versions/firmware are installed on a specific Pocket and let you know if there are updates available without connecting the Pocket or the memory card?
(I'm aware firmware updates aren't supported yet, but just for completeness' sake)

Catalina (10.15) Support

The app launches to blank grey screen on Mac OS 10.15(.7) aka Catalina. Connected, disconnecting, reconnecting via USB seems to have no effect. Yes, "USB SD Access" is enabled, pocket-updated-utility works for example.

Granted, this is my miraculously not-yet-dead MacBook Pro (Retina, 13-inch, Late 2012)...

Stuck loading screenshot on macOS

On macOS 12.6.1 when I open a screenshot the app show the loading animation indefinitely. Pocket-sync Version 1.4.1 (20221206.003950). There's no debug console, so I cannot share an eventual js error

image

Blank screen clicking on installed SNES core

I get a blank screen requiring a restart when clicking on the installed SNES core. I was able to install it though. It doesn't happen with any other core I tested.

My setup: using the AppImage on Arch Linux.

Platforms -> Image Packs List Missaligned - Mac OS 11

When viewing the list of Image Packs, the Rows in the Current column do not align with the rows in the adjacent columns. It appears like the images in the other columns are 2x the desired height.

Screen Shot 2023-02-27 at 1 18 08 PM

I observe this issue on MacOS 11.7.4.

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.