{"id":22264504,"url":"https://github.com/ricardoquesada/unijoysticle2","last_synced_at":"2025-07-28T10:32:16.602Z","repository":{"id":37355979,"uuid":"180724013","full_name":"ricardoquesada/unijoysticle2","owner":"ricardoquesada","description":"Bluetooth gamepad support for the Commodore 64 / Atari / Amiga, etc.","archived":false,"fork":false,"pushed_at":"2025-03-06T13:50:42.000Z","size":22755,"stargazers_count":48,"open_issues_count":1,"forks_count":9,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-04T19:27:24.446Z","etag":null,"topics":["bluetooth","commodore64","esp32","gamepad"],"latest_commit_sha":null,"homepage":"https://retro.moe/unijoysticle2","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ricardoquesada.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/supported_gamepads.md","governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-11T05:56:32.000Z","updated_at":"2025-04-02T11:00:00.000Z","dependencies_parsed_at":"2024-02-06T01:29:28.101Z","dependency_job_id":"104af784-6a64-4836-a5e6-38a24ce61c9c","html_url":"https://github.com/ricardoquesada/unijoysticle2","commit_stats":null,"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/ricardoquesada/unijoysticle2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoquesada%2Funijoysticle2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoquesada%2Funijoysticle2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoquesada%2Funijoysticle2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoquesada%2Funijoysticle2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ricardoquesada","download_url":"https://codeload.github.com/ricardoquesada/unijoysticle2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoquesada%2Funijoysticle2/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267502496,"owners_count":24098155,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluetooth","commodore64","esp32","gamepad"],"created_at":"2024-12-03T10:09:21.737Z","updated_at":"2025-07-28T10:32:15.557Z","avatar_url":"https://github.com/ricardoquesada.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unijoysticle™ 2\n\n[![discord](https://img.shields.io/discord/775177861665521725.svg)](https://discord.gg/r5aMn6Cw5q)\n\n![logo][uni_logo]\n\nUnijoysticle is a device that allows you to use modern Bluetooth gamepads and mice in retro computers.\n\nUnijoysticle 2 models:\n\n|                                          | 800XL                       | C64                         | A500                        | 2+                                 | 2                                     |\n| ---------------------------------------- | --------------------------- | --------------------------- | --------------------------- | ---------------------------------- | ------------------------------------- |\n| Top                                      | ![uni2800xl_photo_front]    | ![uni2c64_photo_front]      | ![uni2a500_photo_front]     | ![uni2plus_photo_front]            | ![uni2_photo_front]                   |\n| Bottom                                   | ![uni2800xl_photo_back]     | ![uni2c64_photo_back]       | ![uni2a500_photo_back]      | ![uni2plus_photo_back]             | ![uni2_photo_back]                    |\n| Release date                             | July 2023                   | March 2023                  | July 2022                   | October 2021                       | April 2019                            |\n| Best for                                 | Atari 800XL / 600XL         | C64 / C128                  | Amiga                       | -                                  | -                                     |\n| Good for                                 | Atari 400 / Amiga / AtariST | Amiga / AtariST             | C64 / AtariST / Atari 8bit  | C64 / Amiga / AtariST / Atari 8bit | C64 / Amiga / AtariST / Atari 8bit    |\n| Status                                   | Active / Supported          | Active / Supported          | Active / Supported          | Discontinued / Supported           | Discontinued / Supported              |\n| Amiga / AtariST mouse support            | Yes                         | No                          | Yes                         | Yes                                | Yes                                   |\n| Amiga / AtariST 2nd \u0026 3rd button support | No                          | No                          | Yes                         | Yes                                | Only in Port 1                        |\n| Atari 8-bit 2nd \u0026 3rd button support (5) | Yes                         | No                          | No                          | No                                 | No                                    |\n| C64 2nd \u0026 3rd button support             | No                          | Yes                         | No                          | No                                 | No                                    |\n| C64 4th and 5th button support (4)       | No                          | Yes                         | No                          | No                                 | No                                    |\n| C64 Paddle support                       | No                          | Might (1)                   | No                          | No                                 | No                                    |\n| Rumble (2)                               | No                          | Yes                         | No                          | No                                 | No                                    |\n| Fits                                     | 800XL / 600XL               | C64 / C128                  | Amiga 500 / 1200            | C64 / C128                         | C64 / C128                            |\n| Buttons                                  | Reset, Mode, Swap           | Reset, Mode, Swap           | Reset, Mode,  Swap          | Reset, Mode                        | Reset, Mode                           |\n| LEDs                                     | Port 1, 2, Bluetooth, Power | Port 1, 2, Bluetooth, Power | Port 1, 2, Bluetooth, Power | Port 1, 2, Power                   | Port 1, 2, Power                      |\n| Filter noise ([Issue #17][issue_17])     | Yes                         | Yes                         | Yes                         | Yes                                | No                                    |\n| Case friendly                            | Yes                         | Yes                         | Yes                         | Yes                                | No                                    |\n| Easy to solder                           | No. Most components are SMD | No. Most components are SMD | No. Most components are SMD | No. Most components are SMD        | Yes. All components are through-hole  |\n| Self-powered                             | Yes                         | Yes                         | Yes                         | Yes                                | Yes, can be turned on/off with switch |\n| External power                           | USB                         | USB                         | USB                         | USB                                | Both USB and Barrel Jack 5V+          |\n| Total Size (mm)                          | 65 x 75 x 13.6              | 72 x 68 x 13.6              | 67 x 72 x 13.6              | 64 x 64 x 13.6                     | 63 x 66 x 17                          |\n| PCB Size (mm)                            | 53 x 72 x 1.6               | 63 x 60 x 1.6               | 52 x 67 x 1.6               | 49 x 62 x 1.6                      | 46 x 57 x 1.6                         |\n| Weight (gr)                              | 27                          | 27.1                        | 25.6                        | 24                                 | 37                                    |\n| Current (mA)                             | ~96                         | ~96                         | ~96                         | ~96                                | ~100                                  |\n| USB connector                            | Micro USB                   | Micro USB                   | Micro USB                   | Micro USB                          | Micro USB                             |\n\n\nNotes:\n\n- (1): Hardware physically connected, but firmware is still WIP.\n- (2): Some C64 games can turn on/off rumble on gamepads. See: [Rambo], and [Lemans] ([video][rumble_video])\n- (3): Right and Middle mouse buttons not supported in C64.\n- (4): Based on [CrystalCT 5 buttons joystick][crystalct/5plusbuttonsJoystick] ([video][5_buttons_video])\n- (5): Based on [Ascrnet Joy 2B+][atari_joy2bplus]\n\nUnijoysticle 2 allows you to use modern Bluetooth gamepads. E.g. DualSense controller in retro computers like the Commodore 64, Amiga and AtariST.\n\nIt also supports mice (for Amiga / AtariST only).\n\n[issue_17]: https://gitlab.com/ricardoquesada/unijoysticle2/-/issues/17\n[uni2_photo_front]: https://lh3.googleusercontent.com/pw/AM-JKLUphquTBg9JoV-L7wuMtze_aKIJ8LvfokTakuBKSVFClziLWCViggcrlNZtqGUMgv6u6yYpZ_RuE2jdGSn3Q0oYl0jOQzzGcutRt-JiMjLZY_oAvK4LehrawNj_aNbthCJ-VEJzsW3dywhJNekjhTsfNQ=-no\n[uni2_photo_back]: https://lh3.googleusercontent.com/pw/AM-JKLXnMbJt7A55lUrtmiuKj4As98He7ZVi6YuPKg8N1sGbw1w5d5TtC8B-ilfoqC5QCKcZG8MFkmHNj5HgVbP8fdHhMBPx2CLgyRhaRmohx0SWF-_wZ57WYCfo7RlH4k7sEmh1txsTvHto2ko0H_0l9aUALg=-no\n[uni2plus_photo_front]: https://lh3.googleusercontent.com/pw/AM-JKLWV2Zo912VtOfuM71AluanNXGwVQiAehNEiQ1VL3L7SkWDl-9k0fA6tfza9QpGL52petBfFFFHMb8rh_ybSj17LOQA70IycMDQw6AVqlN8Jp4HDWT8sWcXHIPEQZTxNuQ-RFygKbmVpW2n52wwi5cJgwA=-no\n[uni2plus_photo_back]: https://lh3.googleusercontent.com/pw/AM-JKLWs_G63eJRX8WuVVRoKKur8UQ-VcWTNbmkjFumwZYvDRhgjqamVa-X9CROAnoPyK3sHDmfwtqAtJiI1DHiwlINBPCgiEY4yWFYWl8SlHA_QOG7LmVKuOKy1UQa-5dALC2r0FBfhS9He6utE7Kz5nWAXiw=-no\n[uni2a500_photo_front]: https://lh3.googleusercontent.com/pw/AM-JKLU1BbKnbuLE7Oa_VOY3AnBjYwNVcAPKJcmYa7WUnCK5gMM1bHZyK3lTZ1Mo0NtS30ogeeSqxySx3Qi2ux3AGOlocQnQe9a87NoiKz5tnmHV_IGf3hPln0qsr8t5yfD5biKKVbGlRJ6vN2IbmI8H2Wg6iw=-no\n[uni2a500_photo_back]: https://lh3.googleusercontent.com/pw/AM-JKLXMUngI6ctahY5clP-76UBjUem9L4Eehj4GFsEwUJwtZ3-MuZCV2nOsxiN3Go1PKvoc9sJbLRY8hCZ9TcV4cq5AtcAtscdjH1LiNzltFSgQY4IQEwSiPHfvhjhZCDezhgHKQDrmmA3EGFM7kJ4MKNxtig=-no\n[bluepad32-fw]: https://gitlab.com/ricardoquesada/bluepad32\n[uni2c64_photo_front]: https://lh3.googleusercontent.com/pw/AMWts8AzoDnIOIiM-50UpjAqY8OgdsM6pzM3BuYWb2ZOg4K_o4TxygtSjuZvrKI92lrl4Qqf8sLT6PtLYsXzDbragTDgoeX4yTpymqoc450FiyjiBT1YHxRbLBtGWgUOQHezXUxKCORs5aOcxPwowfrgR4PcQw=-no\n[uni2c64_photo_back]: https://lh3.googleusercontent.com/pw/AMWts8C_vxauz3FAOv8NGAh64LGTExHwCj0N0bX73xsWIeDyR3efFPPUQb3JJQK5S8Qcm9B8bx3r_yio6WWAML1si4u8E9FejXP9DL8vxSCg_TR7rLi5aPiwisQaIptN8hJdfz3Zoh_B4cqiRE9vMi9t50R_gw=-no\n[uni2800xl_photo_front]: https://lh3.googleusercontent.com/pw/AIL4fc9fcgdY3Gka6iSZmyUlBTA1Q9ABujo-9v_4qE85St2GdW-2TBzzLNx-pc25o0rFloL0ghWZDDVW_kGWpQjcXaP-SJf9NWPnNw-2jpc_8tcVKp8gzLH7fxnFd7DBEV1ahWYLy97WvthAy7p193wtZ7uM4w=-no\n[uni2800xl_photo_back]: https://lh3.googleusercontent.com/pw/AIL4fc9PNSKKiA7PHsUTLKXGF1O9ywK-qLHS0nw2-Y6FxWQcgmtZJjajQh9Uch0aqZ2Pw-grH_Vg05IKYZilissF6nxUJPDszew0ouzGu91golm1RYJJpPS0CDANAfk3_O4qbwN_gam6dgGnafzsk4u0Xke0uw=-no\n[Rambo]: https://gitlab.com/ricardoquesada/c64-rambo\n[Lemans]: https://gitlab.com/ricardoquesada/c64-lemans\n[crystalct/5plusbuttonsJoystick]: https://github.com/crystalct/5plusbuttonsJoystick/\n[5_buttons_video]: https://www.youtube.com/watch?v=9Em_kUAHEuA\n[rumble_video]: https://www.youtube.com/watch?v=vCj45OX43JE\n[atari_joy2bplus]: https://github.com/ascrnet/Joy2Bplus\n[uni_logo]: https://lh3.googleusercontent.com/pw/AIL4fc_k4CtBs9deXjMuCJOotXbNoRwON1CdYCMshG41PpEf2v-7xc2IcIPFvYCOFeLriESlXEJhm5nK72st8v1E04ZzyqawW8x5DPJt2ug6ZzhGXdnJvasD577CX1YbHRWDtmlz1JtyhDNHE_BeBeNnVb92vg=-w200-no?authuser=0\n\n## Basic functionality\n\nOne Bluetooth gamepad controls one joystick.\nYou need two gamepads to control the two joysticks.\n\n![Basic mode](https://lh3.googleusercontent.com/pw/AM-JKLW09v8uSrCzB-2ooXXoH-leP2SPqV0-vg6Ym_IFNjwlpQoVELZQguo9oVIl3WhdzG2N-RQTyjH0xV8amFrCSv1XYpcUmgdRKJwGePIeBYQoUtx8JzbZS_c1L3nC3nRmTWdwSolBOnELwMal9qSkSpzfVw=h330-no)\n\nThe mappings are:\n\n- D-pad/joypad: controls up/down/left/right.\n- Button A / Cross: fire button\n- Button B / Circle: \"up\"  (ideal for platform games).\n- Button X / Square: 2nd button (Amiga / AtariST only)\n- Button Y / Triangle: 3rd button (Amiga / AtariST only)\n- Button shoulder-right: autofire.\n- System button swaps between Joystick 1 and 2\n\n## Twin Stick functionality (AKA Enhanced mode)\n\n![Twin Stick mode](https://lh3.googleusercontent.com/pw/AIL4fc_MqBokDp6iNP9CjfJVIDPorKzkewVF6r139qHNmiq8C2hoTpbLyT_4TRiVXIMbtde3fxuOmS_Ag-RMR6G5KzQKheq6ewwZp-DuR4hjCAeTwgByG_CtxPKVF-rIbSLw0tm3waibuNuze19TpGmP3JacMQ=w512-no)\n\nWhen in \"Enhanced mode\", you control the two joysticks with only one gamepad.\nThe mappings are:\n\n- Left joypad / d-pad: control Joystick 2 movements.\n- Right joypad: control Joystick 1 movements.\n- Button A / Cross: fire for Joystick 2\n- Button B / Circle: fire for Joystick 1\n- Button X / Square: 2nd button for Joystick 2\n- Button Y / Triangle: 2nd button for Joystick 1\n- Button Shoulder Left: auto-fire for Joystick 2\n- Button Shoulder Right: auto-fire for Joystick 1\n\nThis mode is ideal for games like [Commando][2] or [1942][3] since it allows you\nthrow grenades / roll by pressing Button B.\n\n## Supported controllers\n\n### Gamepads\n![Supported gamepads](https://lh3.googleusercontent.com/pw/AM-JKLXpmyDvNXZ_LmlmBSYObRZDhwuY6hHXXBzAicFw1YH1QNSgZrpiPWXZMiPNM0ATgrockqGf5bLsI3fWceJtQQEj2_OroHs1SrxsgmS8Rh4XHlnFolchomsTPVC7o5zi4pXGQkhGEFbinoh3-ub_a4lQIw=-no?authuser=0)\n\n- Sony DualSense\n- Sony DUALSHOCK 4\n- Sony DUALSHOCK 3\n- Nintendo Switch Pro\n- Nintendo JoyCons\n- Nintendo Wii U\n- Nintendo Wii + accesories\n- Xbox Wireless controller (model 1708)\n- Steam\n- Stadia\n- Android gamepads\n- PC/Windows gamepads\n- 8BitDo controllers\n- iCade\n- And more\n\nSee:\n\n* [Supported gamepads][gamepads]\n* [Supported mice][mice]\n\n[gamepads]: https://gitlab.com/ricardoquesada/unijoysticle2/blob/master/docs/supported_gamepads.md\n[mice]: https://gitlab.com/ricardoquesada/bluepad32/blob/develop/docs/supported_mice.md\n\n### Mice\n\n![Supported mice](https://lh3.googleusercontent.com/pw/AM-JKLW1uSIck7GkC2YmalJdDoPwxmnD_NynS7tAiiIsn5N2UQnYtBAMCkZBeR8LMFUe8W4Fqbzo7JW1t7i_77sn-y3wYtw-Xbv3wYGhd4sSejTz3ec1T-HCLOguJ5NJMnv0h9fTlj4Wz2ytlPzXotm__bZW2A=h420-no)\n\nMouse emulation is only available for **Amiga and Atari ST** computers.\n\nFor a detailed list of supported mice, see here:\n\n* [Supported mice][supported_mice]\n\n[supported_mice]:  https://gitlab.com/ricardoquesada/bluepad32/blob/develop/docs/supported_mice.md\n\n## Order info\n\nIf you are looking for ready-to-use boards, you can purchase one from here:\n\n\u003ca href=\"https://www.tindie.com/stores/riq/?ref=offsite_badges\u0026utm_source=sellers_riq\u0026utm_medium=badges\u0026utm_campaign=badge_large\"\u003e\u003cimg src=\"https://d2ss6ovg47m0r5.cloudfront.net/badges/tindie-larges.png\" alt=\"I sell on Tindie\" width=\"200\" height=\"104\"\u003e\u003c/a\u003e\n\nLooking for a remix and/or 3rd party vendors. Go here: [SELLING_DEVICES.md][selling_devices]\n\n[selling_devices]: SELLING_DEVICES.md\n\n## More Info\n\n- [Users guide][users_guide]\n- [Discord][discord]\n- [Email group][email_group]\n\n[users_guide]: https://gitlab.com/ricardoquesada/unijoysticle2/blob/master/docs/user_guide.md\n[discord]: https://discord.gg/r5aMn6Cw5q\n[email_group]: https://groups.google.com/forum/#!forum/unijoysticle\n\n[1]: https://retro.moe/unijoysticle\n[2]: https://csdb.dk/release/?id=137173\n[3]: https://csdb.dk/release/?id=38140\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricardoquesada%2Funijoysticle2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fricardoquesada%2Funijoysticle2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricardoquesada%2Funijoysticle2/lists"}