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 | Jotego Cores Analogizer Setup |

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.
config.temp_directory When left null all zip files are downloaded and extracted using a temp directory in your pocket install location. If you supply a path, that will be used, instead
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

Jotego Cores Analogizer Setup

To set your global configuration for the Analogizer in Jotego's Cores just go to Pocket Setup > Jotego Analogizer Config and it will walk you through the available settings. The settings will be saved to the correct location, so you don't need to do anything else. For more help please refer to his github repo.

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

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pupdate's Issues

dmg_bios.bin download fails if you don't already have the GB core installed

It appears that it doesn't try to create the directory first if the core hasn't been installed previously. Once I installed the GB core manually the updater script was able to install this and the remaining cores without issue (though I already had the GBC core so not sure if the same issue affects that installation as well).

Here is the program output from before I installed the Spiritualized1997 GB core manually:

Analogue Pocket Core Updater v1.3.0
Checking for updates...
Download master cores list file from github? (This will overwrite your current file) [y/n]:
yDownloading...
Download complete:
D:\/auto_update.json
Starting update process...
Starting Repo: openFPGA-GBA
v1.2.0 is the most recent release, checking local core...
local core found: v1.2.0
Looking for BIOS
BIOS file already installed: gba_bios.bin
Up to date. Skipping core
------------
Starting Repo: openFPGA-GB-GBC
v1.3.0 is the most recent release, checking local core...
local core found: v1.3.0
Looking for BIOS
BIOS file already installed: gbc_bios.bin
Downloading dmg_bios.bin
Unhandled exception. System.IO.DirectoryNotFoundException: Could not find a part of the path 'D:\assets\gb\common\dmg_bios.bin'.
   at Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.File.OpenHandle(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.File.WriteAllBytes(String path, Byte[] bytes)
   at pannella.analoguepocket.HttpHelper.DownloadFileAsync(String uri, String outputPath)
   at pannella.analoguepocket.PocketCoreUpdater.SetupBios(Bios bios)
   at pannella.analoguepocket.PocketCoreUpdater.RunUpdates()
   at Program.Main(String[] args)
   at Program.<Main>(String[] args)

macOS version error (with 2.1.0)

I ran the pocket_updater that was previously on 1.4.0 and it crashed out ending with this:

....
Starting Repo: openfpga-tecmo
v2.0 is the most recent release, checking local core...
local core found: v2.0.0
Looking for BIOS
Downloading gemini.rom
Unhandled exception. System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found).
   at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
   at System.Net.Http.HttpClient.GetByteArrayAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
   at pannella.analoguepocket.HttpHelper.DownloadFileAsync(String uri, String outputPath)
   at pannella.analoguepocket.PocketCoreUpdater.SetupBios(Bios bios)
   at pannella.analoguepocket.PocketCoreUpdater.RunUpdates()
   at Program.Main(String[] args)
   at Program.<Main>(String[] args)
[1]    59579 abort      ./pocket_updater

Full log here

So I downloaded the latest release (2.1.0) and put it on the pocket's SD card, and now it crashes immediately:

Analogue Pocket Core Updater v2.1.0
Checking for updates...
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
   at pannella.analoguepocket.SettingsManager..ctor(String settingsPath, List`1 cores)
   at Program.Main(String[] args)
   at Program.<Main>(String[] args)
[1]    61299 abort      ./pocket_updater

Any ideas?

Check that ROM sources exist when referenced in JSON files

I used a crude method to verify that all ROMs existed on my filesystem:

grep '"filename":' Assets///json Cores//data.json | grep -v NeoGeo | sed 's/^."filename": "//' | sed 's/".$//' | sort -u > /tmp/needed
find Assets// -name *rom | grep -v Assets/ng/common | sed 's@^.*/@@' | sort -u > /tmp/found

Then I used diff (Meld, in my case) to compare them and identify 4 missing ROMs.

A better method is to make a Python or similar script to traverse the JSON files and build a list of needed ROMs. Then check that each exists in the filesystem.

The best solution is to run this as a presubmit. Before merging in changes to pocket_updater_assets.json and pocket_updater_cores.json, check that all references in pocket_updater_cores.json have a matching reference in pocket_updater_assets.json. And also add a mode to pocket_updater to run in "testing mode", e.g. throw an exception when a rom 404's on download. If we run these two checks before checking in new changes, we'll ensure all new Cores+ROMs are correctly added.

I can write this in Python, but perhaps that's not the language you want for this project?

Ask for permission to download Arcade ROMs

Some of us have ISPs who will get angry at seeing us downloading this stuff or are in residency at a place that requires we use someone else's network and follow their rules.

The addition of a prompt that asks if it is okay for the updater to download ROM files before it does so would be greatly appreciated.

Choosing Download Required Assets in Menu does not check the Assets

pocket_updater_settings.json:
"config": {
"download_assets": false,
"archive_name": "openFPGA-Files",
"github_token": null,
"download_firmware": false,
"core_selector": false,
"preserve_platforms_folder": false,
"delete_skipped_cores": true,
"download_new_cores": "yes",
"build_instance_jsons": true,
"crc_check": true
},

I tried the new "6) Configuration Wizard" Feature, i said no to firmware and no to assets and just pressed return at the rest of the questions.

Now before i did this "0) Update All" always checked the Assets for new Files that are needed. But when i now choose "2) Download Required Assets" from the menu, i just get the following output and it ends after around 1 second. So it looks like nothing is checked.

output:

0) Update All
1) Update Firmware
2) Download Required Assets
3) Select Cores
4) Download Platform Image Packs
5) Generate Instance JSON Files
6) Configuration Wizard
7) Exit

Choose your destiny: 2
Checking for requied files...
agg23.Arduboy
-------------
agg23.Pong
-------------
agg23.NES
-------------
agg23.PC Engine
-------------
agg23.PokemonMini
-------------
agg23.SNES
-------------
agg23.WonderSwan
-------------
antongale.performan
-------------
antongale.slapfight
-------------
...
-------------
-------------
All Done
we did it, come again soon

Improvement - Updating PC Engine CD Core - BIOS and missing files

As I was recreating JSON files for my games in Asset/pcecd/common, I checked the output from Terminal and noticed [BIOS] TurboGrafx CD Super System Card (USA) (v3.0).pce being added. Is it possible to include [BIOS] Super CD-ROM System (Japan) (v3.0).pce? This seems to be the most compatible BIOS for PC Engine CD and TurboGrafx CD games with this core.

Checking Core: Mazamars312.PC Engine CD
0.1.5 is the most recent release, checking local core...
local core found: 0.1.5
Looking for Assets
Already installed: [BIOS] TurboGrafx CD Super System Card (USA) (v3.0).pce
Unable to find mpu.bin in archive
Building instance json files.

Also, I realized when deleting old JSON files for my games that I accidentally deleted the mpu.bin and image_template.json under Mazamars312.PC Engine CD folder path. From the above output, it says "unable to find mpu.bin", but doesn't repopulate the file if missing. Can that also be included?

pulling files from

Can someone tell me where bios files ie intellivision is being pulled from? Can't seem to find it in the code.

thx

Spiritualized.Odyssey2: 404 errors for two bin files

Checking Core: Spiritualized.Odyssey2
1.0.2 is the most recent release, checking local core...
Downloading core
Downloading file https://github.com/spiritualized1997/openFPGA-Odyssey-2/releases/download/1.0.2/Spiritualized_Odyssey2_1.0.2_2022_11_08.zip...
Extracting...
Looking for Assets
Downloading o2bios.bin
Finished downloading o2bios.bin
Downloading SP128_03.BIN
Response status code does not indicate success: 404 (Not Found).
Downloading SP128_04.BIN
Response status code does not indicate success: 404 (Not Found).
Installation complete.

Use an external API for getting the up-to-date list of cores

I've noticed there are several tools in the community for updating Pocket cores. I have contributed to the update-pocket project, I'm aware of your project, and I know there is now a Windows application. Every time a new core is released, every project needs to update its own internal list of cores. It is my proposal that instead, we create a new API outside of these projects where the core list can be retrieved from.

We already have the great resource openfpga-cores-inventory, so I suggest that we utilize that for hosting the API. This is another place that has to be independently updated every time a core is released, and is the best resource for members of the community to find the list of available cores. I already have the API put together in a local branch, ready to be put up as a PR, but for this to be successful, the developers of updater tools should all agree on a set JSON structure for the data.

I would love to get your feedback on this, and if there is a consensus in the community that this is a good idea, I'm more than happy to stand up the API myself.

Boogerman cores MAC

None of the boogerman cores get the Roms for me on mac whilst all the other arcade cores are fine. Guessing it is what is and should just be done manually?

Unable to run utility.

As of this morning, I seem to be having issues running the Auto Updater. I'm guessing there's a repo down or something and it's not this app specifically, but here's the error I'm getting. It happens on my Pocket's SD card and also a fresh SD card with nothing on it. I've also changed my network to make sure it wasn't URL filtering blocking the connection, or GitHub blocking my IP and/or token. I have not restarted my computer or tested on a different computer, but I'm about to.

Analogue Pocket Core Updater v2.8.1
Checking for updates...
Well, something went wrong. Sorry about that.
'}' is an invalid start of a value. Path: $[15] | LineNumber: 331 | BytePositionInLine: 2.

A restart seemed to have resolved the issue. Cheers!

GBA Core Save Creation

Hi.

I ran this utility today on a new out of box Analogue Pocket, and while the GBA Core does work, it books games correctly, it refuses to save. For some games I can make do with save states, but games like Minish Cap atlre unplayable, because they insist that my save data is corrupted, and won't let me create me create a save to start playing.

Looking on my SD card, there isn't a GBA folder in my saves folder. I tried creating a Saves / GBA / common folder to match the other systems, but that didn't help.

Any ideas on what I need to do?

Kaspersky antivirus

When executed "Access Denied" error then quarantines the file. VHO:Trojan-PSW.Win32.Convagent.gen. Zip file is being d/led from github. Anybody else getting the same thing?

Can't launch the Auto Update on my sd card (MacOs OSX 10.9.5)

I'm on an old Mac (10.9.5), I tried to install the Auto Updater on my SD Card but I've got this on my Terminal :

Last login: Wed Oct 19 08:10:26 on console
mbpdalburdajaud:~ albanbourdajaud$ /Volumes/Macintosh\ HD_2/Analogue\ POCKET/pocket_updater ; exit;
dyld: Symbol not found: _kSecAttrKeyTypeECSECPrimeRandom
Referenced from: /Volumes/Macintosh HD_2/Analogue POCKET/pocket_updater
Expected in: /System/Library/Frameworks/Security.framework/Versions/A/Security
in /Volumes/Macintosh HD_2/Analogue POCKET/pocket_updater
Trace/BPT trap: 5
logout

[Opération terminée]

Any ideas ? (I'm french, sorry for my english)

jotego.jtgng diamond.rom 404's on download

In my last pull request I added diamond.rom, but it's not found:

Checking Core: jotego.jtgng
20221202 is the most recent release, checking local core...
local core found: 20221205
Looking for Assets
Downloading diamond.rom
Response status code does not indicate success: 404 (Not Found).

Looks like it's not distributed from wherever we're getting it or build from the .mra files.

Feature Request: select cores

Firstly thanks for this super-useful tool. I've got a small feature request. It'd be great to be able to either select or ignore cores to download.

Instance json files include hidden files

Most of my bin/cue files in Assets/pce/common had corresponding hidden files (macOS). When the instance JSON files were generated, these hidden files were included. In many cases, the JSON file was not generated at all since the hidden files would create more than 27 tracks.

Suggestion: Files that begin with a . should be ignored when searching for bin/cue files when creating instance JSON files.

Install Image Pack #5 Froze microSD Card

After choosing option 5 from the image packs, my entire microSD card (newest Samsung Pro Plus) randomly showed as empty and was stuck in a process even after I closed the terminal. Then following a reboot of my MacBook, all folders are present again in the microSD (thank goodness). As shown from the terminal output below - "something went wrong", but ended with 'Process Complete' even though the microSD seemed to still run the script (wouldn't eject without force quitting). Not sure if this is the result of the image pack install itself or the updater utility.

Choose your destiny: 3

Checking for image packs...

  1. spiritualized1997: openFPGA-Platform-Art-Set
  2. dyreschlock: pocket-platform-images
  3. terminator2k2: Analogue-Pocket-Core-Art
  4. MegaZXretro: Analogue-Pocket-Custom-Platform-Art JAPAN
  5. MegaZXretro: Analogue-Pocket-Custom-Platform-Art PAL-EU
  6. MegaZXretro: Analogue-Pocket-Custom-Platform-Art USA
  7. Go back

So, what'll it be?: 5
Downloading image pack...
Download complete.
Installing...
Well, something went wrong. Sorry about that.
Input/output error : '/Volumes/Pocket/temp'

logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
Deleting expired sessions...none found.

[Process completed]

pocket_updater keeps running when showing `--help` or `--version`

When running pocket_updater with --help or --version, it keeps running instead of exiting

$ ./pocket_updater --help
pocket_updater 1.0.0
Copyright (C) 2022 pocket_updater

  -u, --update    Automatically download newest core list without asking.

  -p, --path      Absolute path to install location

  -a, --all       Extract all release assets, instead of just ones containing openFPGA cores.

  --help          Display this help screen.

  --version       Display version information.

Analogue Pocket Core Updater v2.0.1
Checking for updates...
Download master cores list file from github? (This will overwrite your current file) [y/n]: (default is y)
$ ./pocket_updater --version
pocket_updater 1.0.0
Analogue Pocket Core Updater v2.0.1
Checking for updates...
Download master cores list file from github? (This will overwrite your current file) [y/n]: (default is y)

Also its printing two versions

Having Trouble with Downloading

I successfully downloaded the pocket_updater and ran it, initially I ran individual cores and that was successful, but then I realized I would like to try just downloading them all. There were a lot so I tried deleting the cores on my SD card and choose to download all when I brought back up the updater. When I did this it simply said it was done and would bring me back to the main menu. I noticed I still had files in assets so I deleted those and tried again, with the same result. I tried deleting everything off the SD card and redownload the updater. When it asks me if I want to automatically install cores and I choose Y, it just brings me to the main menu. Choosing cores doesn't seem to do anything, and when I chose 0 for updating everything, it actually began the process again but there are a lot of errors. To many to go over but, for example, some say, "Error communicating with Github API" and others say, "uh oh something went wrong"

The weird thing is a handful of cores seem to have gone through. I've got assets for arduboy, asteroids, nes, pce, poke_mini, and snes. Which, actually, are ones I chose not to download on one attempt when doing the manual asking about each core method.

Sorry if this is all obvious, I just don't know what to do.

JTCPS1 do not appear to install

Due to loss, I had to install new SD card for the Pocket. All cores reinstalled with the pocket updater, but JT CPS1 cores do not appear for installation. Have they been pulled?

Unhandled exception

Hello, I tried to run it from windows pc, and got following issue
Unhandled exception. System.Net.Http.HttpRequestException: The requested name is valid, but no data of the requested type was found. (raw.githubusercontent.com:443) ---> System.Net.Sockets.SocketException (11004): The requested name is valid, but no data of the requested type was found. at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError , CancellationToken ) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 ) at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|277_0(AwaitableSocketAsyncEventArgs , ValueTask , CancellationToken ) at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String , Int32 , HttpRequestMessage , Boolean , CancellationToken ) --- End of inner exception stack trace --- at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String , Int32 , HttpRequestMessage , Boolean , CancellationToken ) at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage , Boolean , CancellationToken ) at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage , Boolean , CancellationToken ) at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage ) at System.Threading.Tasks.TaskCompletionSourceWithCancellation1.WaitWithCancellationAsync(CancellationToken )
at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage , Boolean , CancellationToken )
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage , Boolean , Boolean , CancellationToken )
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage , Boolean , CancellationToken )
at System.Net.Http.HttpClient.GetStringAsyncCore(HttpRequestMessage , CancellationToken )
at pannella.analoguepocket.HttpHelper.GetHTML(String uri)
at pannella.analoguepocket.AssetsService.GetAssets()`

Updater fails on MacOS ARM unless Rosetta installed

I ran the updater on my new ARM Mac laptop and got the following error (using zsh):

"Bad CPU type in executable"

It turns out that Rosetta is no longer installed by default, and command line apps don't give a very good error if it is missing. To resolve the issue, I installed install Rosetta via:

softwareupdate –-install-rosetta

Ideally the updater would support ARM as well as x86-64 so others don't run into this.

"Error in framework RS: bridge not responding" issue

Here's everything in the terminal after I run it:

Analogue Pocket Core Updater v2.5.0
Checking for updates...
Starting update process...
Checking for firmware updates...
Firmware up to date.

Checking Core: agg23.Arduboy
0.9.0 is the most recent release, checking local core...
local core found: v0.9.0
Up to date. Skipping core

Checking Core: agg23.Pong
1.2.0 is the most recent release, checking local core...
local core found: v1.2.0
Up to date. Skipping core

Checking Core: agg23.NES
0.2.0 is the most recent release, checking local core...
local core found: v0.2.0
Up to date. Skipping core

Checking Core: agg23.SNES
0.3.2 is the most recent release, checking local core...
local core found: v0.3.2
Up to date. Skipping core

Checking Core: ericlewis.Asteroids
1.0.1 is the most recent release, checking local core...
local core found: v1.0.1
Looking for Assets
Asset already installed: asteroid.rom
Up to date. Skipping core

Checking Core: ericlewis.Dominos
0.0.1 is the most recent release, checking local core...
local core found: v0.0.1
Looking for Assets
Asset already installed: dominos.rom
Up to date. Skipping core

Checking Core: ericlewis.DonkeyKong
0.0.1 is the most recent release, checking local core...
local core found: v0.0.1
Looking for Assets
Asset already installed: dkong.rom
Up to date. Skipping core

Checking Core: ericlewis.Genesis
0.4.2 is the most recent release, checking local core...
local core found: v0.4.2
Up to date. Skipping core

Checking Core: ericlewis.LunarLander
0.9.1 is the most recent release, checking local core...
local core found: v0.9.1
Looking for Assets
Asset already installed: llander.rom
Up to date. Skipping core

Checking Core: ericlewis.SpaceRace
1.0.1 is the most recent release, checking local core...
local core found: v1.0.1
Up to date. Skipping core

Checking Core: ericlewis.SuperBreakout
0.0.1 is the most recent release, checking local core...
local core found: v0.0.1
Looking for Assets
Asset already installed: sbrkout.rom
Up to date. Skipping core

Checking Core: ericlewis.QBert
1.1.0 is the most recent release, checking local core...
local core found: v1.1.0
Looking for Assets
Asset already installed: qbert.rom
Up to date. Skipping core

Checking Core: Mazamars312.NeoGeo
Alpha_0.7.5_2022-19-09 is the most recent release, checking local core...
local core found: v0.7.5
Looking for Assets
Asset already installed: uni-bios_1_0.rom
Asset already installed: 000-lo.lo
Asset already installed: sfix.sfix
Up to date. Skipping core

Checking Core: nullobject.tecmo
v2.0 is the most recent release, checking local core...
local core found: v2.0.0
Looking for Assets
Asset already installed: gemini.rom
Asset already installed: rygar.rom
Asset already installed: geminij.rom
Asset already installed: rygar2.rom
Asset already installed: rygarj.rom
Asset already installed: silkworm.rom
Asset already installed: silkwrmj.rom
Up to date. Skipping core

Checking Core: boogermann.bankpanic
0.1.0 is the most recent release, checking local core...
local core found: v0.1.0
Looking for Assets
Asset already installed: bankp.rom
Asset already installed: combh.rom
Up to date. Skipping core

Checking Core: boogermann.digdug
0.1.0 is the most recent release, checking local core...
local core found: v0.1.0
Looking for Assets
Asset already installed: digdug.rom
Asset already installed: digduat1.rom
Asset already installed: digdug1.rom
Asset already installed: digdugat.rom
Asset already installed: digsid.rom
Up to date. Skipping core

Checking Core: boogermann.galaga
v0.1.0 is the most recent release, checking local core...
local core found: v0.1.0
Looking for Assets
Asset already installed: galaga.rom
Asset already installed: galagads.rom
Asset already installed: galagaef.rom
Asset already installed: galagamf.rom
Asset already installed: galagamw.rom
Asset already installed: galagao.rom
Asset already installed: galagosb.rom
Asset already installed: galagost.rom
Asset already installed: galaped.rom
Asset already installed: galgaxin.rom
Asset already installed: gatsbee.rom
Asset already installed: nebulbee.rom
Asset already installed: vgalaga.rom
Asset already installed: vgalagaf.rom
Asset already installed: vgalagam.rom
Up to date. Skipping core

Checking Core: boogermann.gberet
0.1.1 is the most recent release, checking local core...
local core found: v0.1.1
Looking for Assets
Asset already installed: gberet.rom
Asset already installed: mrgoemon.rom
Asset already installed: rushatck.rom
Up to date. Skipping core

Checking Core: boogermann.pooyan
0.1.0 is the most recent release, checking local core...
local core found: v0.1.0
Looking for Assets
Asset already installed: pooyan.rom
Asset already installed: pooyaiag.rom
Asset already installed: pooyans.rom
Asset already installed: pootan.rom
Up to date. Skipping core

Checking Core: boogermann.supervision
0.1.1 is the most recent release, checking local core...
local core found: v0.1.1
Up to date. Skipping core

Checking Core: boogermann.xevious
0.1.0 is the most recent release, checking local core...
local core found: v0.1.0
Looking for Assets
Asset already installed: battles2.rom
Asset already installed: gaous.rom
Asset already installed: sxevious.rom
Asset already installed: xeviblk.rom
Asset already installed: xevios.rom
Asset already installed: xevious.rom
Asset already installed: xevious3.rom
Asset already installed: xevious4.rom
Asset already installed: xevious5.rom
Asset already installed: xevioush.rom
Up to date. Skipping core

Checking Core: Spacemen3.PDP1
v1.1.0 is the most recent release, checking local core...
local core found: v3.1.0
Up to date. Skipping core

Checking Core: Spiritualized.GB
v1.3.0 is the most recent release, checking local core...
local core found: v1.3.0
Up to date. Skipping core

Checking Core: Spiritualized.GBA
v1.2.0 is the most recent release, checking local core...
local core found: v1.2.0
Looking for Assets
Asset already installed: gba_bios.bin
Up to date. Skipping core

Checking Core: Spiritualized.GBC
v1.3.0 is the most recent release, checking local core...
local core found: v1.3.0
Looking for Assets
Asset already installed: gbc_bios.bin
Asset already installed: dmg_bios.bin
Up to date. Skipping core

Checking Core: Spiritualized.NES
1.0.0 is the most recent release, checking local core...
local core found: v1.0.0
Looking for Assets
Asset already installed: fds.bios
Up to date. Skipping core

Checking Core: Spiritualized.GG
v1.3.0 is the most recent release, checking local core...
local core found: v1.3.0
Up to date. Skipping core

Checking Core: Spiritualized.SMS
v1.2.0 is the most recent release, checking local core...
local core found: v1.2.0
Up to date. Skipping core

Checking Core: Spiritualized.SG-1000
v1.2.0 is the most recent release, checking local core...
local core found: v1.2.0
Up to date. Skipping core


Update Process Complete
we did it, come again soon

Remove bad files before install

Some cores, like the Jotego ones, are often packaged bad and included Mac OSX folders and whatnot inside them. A good new feature would be to sanitize the files that are installed to ignore any bad files or directories.

When the zip file is extracted into a temporary directory, the software could go through and sanitize things a bit. Delete all the .DS_Store directories and anything that we know will not be handled properly by the Pocket.

Version and Scope of Github Personal Access Token not Stated in README.md

The readme.md states you can add a Github Personal Access Token if you run up against a rate limit, but does not state which version of the token (Fine-grained or Classic token) nor the scope settings (if using Classic tokens).

I'm guessing you mean to use the fine-grained tokens but it would be helpful if it was mentioned in the readme

fix tag regex for pulling semver

the sloppy regex that tries to pull a semver out of the release tag doesn't appreciate Mazamars312.Amiga.500.0.0.5-Alpha
so the updater will just download the amiga core every time as it fails to properly grab the 0.0.5 out of there

Unable to download jotego.jtkarnov assets. Tested on OSX 13.0

Checking Core: jotego.jtkarnov
No releases found. Skipping
Looking for Assets
Downloading karnova.rom
Unable to find karnova.rom in archive
Downloading karnov.rom
Unable to find karnov.rom in archive
Downloading chelnovu.rom
Unable to find chelnovu.rom in archive
Downloading karnovj.rom
Unable to find karnovj.rom in archive
Downloading chelnov.rom
Unable to find chelnov.rom in archive
Downloading chelnovj.rom
Unable to find chelnovj.rom in archive

Contents of Assets/jtkarnov/jotego.jtkarnov/Chelnov - Atomic Runner (US).json:

{
	"instance":{
		"magic": "APF_VER_1",
		"variant_select": {
			"id": 0,
			"select": false
		},
		"data_path": "",
		"data_slots": [
			{
				"id": 1,
				"filename": "chelnovu.rom"
			}
		],
		"memory_writes": [
			{
				"address": "0xf9000000",
				"data": "0x0"
			}
		]
	}
}

Donkey Kong arcade roms not downloading

Title says it all. When running the updater it doesn't download any roms for Eric Lewis' Donkey Kong arcade core. On my side anyways (tested on a Mac).

Thank you for your hard work!

Option If you wanna run core selector?

Would it be possible add option that pocket updater utility would ask if you wanna run core selector Y/N when you run it?

Other question is that if run core pocket updater again with core selector option does it only remove core from list, it doesn’t delete any rom files from memory card?

How to Use This?

My apologies if I'm going about this the wrong way, this is my first time on GitHub. I was wondering if you could explain how to utilize this? I finally figured out that I can download a ZIP of the files by clicking on the green code button, I extracted the files and transferred them to my micro-SD card. The instructions I read online said that the included json file has every core inside of it, and that all you have to do is run 'pocket_updater'. How do I do that? Any file I click on, all I seem to be able to do is bring up the RAW on the internet. I'm very confused, any help would be greatly appreciated.

Amiga core downloads lowercased "assets" and "platforms"

I updated the to 2.9.2 today and downloaded the amiga core. It installed the files in lowercase "assets" and "platforms" folders:

tyler@laptop:~/tmp/Pocket
$ find assets/amiga Assets/amiga/ platforms/_images/
assets/amiga
assets/amiga/common
assets/amiga/Mazamars312.amiga
assets/amiga/Mazamars312.amiga/mpu.bin
Assets/amiga/
Assets/amiga/common
Assets/amiga/common/kickstart.rom
platforms/_images/
platforms/_images/amiga.bin

The rest of my filesystem has "Assets" and "Platforms", and you can see that "common/kickstart.rom" is in the right folder but Mazamars312.amiga/mpu.bin is not.

Some guesses about what is happening:

I stage in a directory on an ext4 filesystem and then push to my exfat-formatted sdcards. ext4 is case-sensitive, exfat is case-preserving (aware of case but doesn't allow case collisions, like "assets" and "Assets" to co-exist). This means installing "assets/amiga" on an exfat filesystem that already has "Assets" will silently install into the "Assets" folder. So this bug will only present on a case-sensitive filesystem.

I looked through the pull requests for the Amiga core and can't see an obvious problem. Any ideas where this is caused?

Improvement - SGB2 checksums

Hi, I really like your software. I am using the SGB with the boot and bios rom from the SGB2. Works perfect. But when i update, your software makes a checksum for the bios and boot rom of the SGB core and it only checks for the SGB1 version. Then it overwrites the SGB2 files. It would be a nice improvement if it checks for both or is asking to use which one. Thank you for creating this tool, makes it really easy to manage a pocket.

CPS1 Assets Fail to Install, Tested on Mac

Thanks for the awesome util!

Ran into this issue running MacOS latest and having tested on no other devices. CPS1 assets are failing to install:

Checking Core: jotego.jtcps1
No releases found. Skipping
Looking for Assets
Already installed: chikij.rom
Uh oh something went wrong.
'0x00' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.

pocket-updater downgrades your manually updated cores

Version: 2.10.4

If you update some core manually and then run pocket_updater it might downgrade the core.

Example: I had Spiritualized.GG v1.3.0 installed, but after running pocket_updater it was downgraded to 1.2.0:

1.2.0 is the most recent release, checking local core...
local core found: 1.3.0
Updating core
Downloading file https://github.com/spiritualized1997/openFPGA-GG/releases/download/v1.3.0/Spiritualized_GG_1.3.0_2022_08_25.zip...
Extracting...
Installing...
Looking for Assets
Installation complete.
-------------
Restoring platforms folder
-------------
-------------
Update Process Complete
Cores Updated:
Spiritualized.GG 1.2.0

Even though the log referred to v1.3.0 when downloading, now if I check the Cores/Spiritualized.GG/core.json file I'm getting v1.2.0:

        "metadata": {
            "platform_ids": [
				"gg"
            ],
            "shortname": "GG",
            "description": "GG Core",
            "author": "Spiritualized",
            "url": "",
            "version": "1.2.0",
            "date_release": "2022-08-25"
        },

Running the command again will just skip it:

Checking Core: Spiritualized.GG
1.2.0 is the most recent release, checking local core...
local core found: 1.2.0
Looking for Assets
Up to date. Skipping core

Always updates openFPGA-GG v1.3.0

Running update 2.1, and noticed the updater always updates to openFPGA-GG v1.3.0 even after previously updated to v1.3.0


Starting Repo: openFPGA-GG
v1.3.0 is the most recent release, checking local core...
local core found: v1.2.0
Updating core
Downloading file https://github.com/spiritualized1997/openFPGA-GG/releases/download/v1.3.0/Spiritualized_GG_1.3.0_2022_08_25.zip...
Extracting...
Installation complete.

Not a show stopper, but just wanted to let you know in case it is a bug.

Thanks for your work on this!

MacOS: ran, and now it's not generating files…?

When I first ran this, I ran it from my /Downloads directory (wrong I know now), and it appeared to generate the directories.

So I removed these, and moved the pocket_updater to my bin path (locally to me) and moved auto_updater.json to the root of my sdcard.

I ran the program again (from the terminal), and it prints the output, but suggests cores are being skipped, and nothing changes on the sdcard.

I've also created a new directory on my machine, put the JSON file in there, and run - and it doesn't generate any new files.

(As an extra test I've managed to run it enough times for the logging to show I've hit the rate limit, but this was well after the attempts I've already made).

Any ideas?

Full log here
Analogue Pocket Core Updater v1.2.0
Checking for updates...
Download master cores list file from github? (This will overwrite your current file) [y/n]:
yDownloading...
Download complete:
/Users/remy/bin/auto_update.json
Starting update process...
Starting Repo: openFPGA-GBA
v1.2.0 is the most recent release, checking local core...
local core found: v1.2.0
Up to date. Skipping core
Looking for BIOS
BIOS file already installed: gba_bios.bin
------------
Starting Repo: openFPGA-GB-GBC
v1.3.0 is the most recent release, checking local core...
local core found: v1.3.0
Up to date. Skipping core
Looking for BIOS
BIOS file already installed: gbc_bios.bin
------------
Starting Repo: PDP-1
v1.1.0 is the most recent release, checking local core...
local core found: v3.1.0
Up to date. Skipping core
------------
Starting Repo: Analogue_Pocket_Neogeo
Alpha_0.6.0_2022-15-08 is the most recent release, checking local core...
local core found: v0.6.0
Up to date. Skipping core
Looking for BIOS
BIOS file already installed: uni-bios_1_0.rom
BIOS file already installed: 000-lo.lo
------------
Starting Repo: openFPGA-SG1000
v1.2.0 is the most recent release, checking local core...
local core found: v1.2.0
Up to date. Skipping core
------------
Starting Repo: openFPGA-SMS
v1.2.0 is the most recent release, checking local core...
local core found: v1.2.0
Up to date. Skipping core
------------
Starting Repo: openFPGA-GG
v1.3.0 is the most recent release, checking local core...
local core found: v1.2.0
Updating core
Downloading file https://github.com/spiritualized1997/openFPGA-GG/releases/download/v1.3.0/Spiritualized_GG_1.3.0_2022_08_25.zip...
Extracting...
Installation complete.
------------
Starting Repo: analogue-pong
1.1.0 is the most recent release, checking local core...
local core found: v1.1.0
Up to date. Skipping core
------------
Starting Repo: openfpga-tecmo
v1.0 is the most recent release, checking local core...
local core found: v1.0.0
Up to date. Skipping core
------------
and now its done

Automatically installs newly released cores

The utility automatically installs newly released cores. For example, since the last time I ran the utility, the boogermann.congo core was released and the utility automatically downloaded and installed it.

It would be nice to be able to control how the utility handles new cores. Either a setting to default allow/deny the new core, or maybe a setting to allow you to choose if it would be installed (like the core selector process, but only for the newly encountered cores).

Response status code does not indicate success: 404 (Not Found).

Maybe a temporary issue, but it's not clear what is failing from stdout:

Analogue Pocket Core Updater v2.10.5
Checking for updates...
A new version is available. Downloading now...
Download complete.
/Volumes/POCKET/pocket_updater.zip
Go to https://github.com/mattpannella/pocket-updater-utility/releases/tag/2.19.2 for a change log
Would you like to continue anyway? [Y/n]:
Well, something went wrong. Sorry about that.
Response status code does not indicate success: 404 (Not Found).

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.