{"id":34838403,"url":"https://github.com/jevonlipsey/pico-ios","last_synced_at":"2026-01-22T04:11:13.285Z","repository":{"id":330708410,"uuid":"1122514064","full_name":"jevonlipsey/pico-ios","owner":"jevonlipsey","description":"An iOS Native Emulator for the PICO-8 fantasy console. Free and Open Source. Experimental Alpha available for Android!","archived":false,"fork":false,"pushed_at":"2026-01-19T13:14:17.000Z","size":95471,"stargazers_count":122,"open_issues_count":18,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-19T17:03:56.429Z","etag":null,"topics":["android","apk","emulation","emulationonios","emulator","gaming","ios","ipa","iphone","javascript","lowlevel","pico","pico8","retrogaming","swift","vue"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jevonlipsey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"jevonlipsey","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2025-12-24T22:53:14.000Z","updated_at":"2026-01-19T09:47:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jevonlipsey/pico-ios","commit_stats":null,"previous_names":["jevonlipsey/pico-ios"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/jevonlipsey/pico-ios","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jevonlipsey%2Fpico-ios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jevonlipsey%2Fpico-ios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jevonlipsey%2Fpico-ios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jevonlipsey%2Fpico-ios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jevonlipsey","download_url":"https://codeload.github.com/jevonlipsey/pico-ios/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jevonlipsey%2Fpico-ios/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28653821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"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":["android","apk","emulation","emulationonios","emulator","gaming","ios","ipa","iphone","javascript","lowlevel","pico","pico8","retrogaming","swift","vue"],"created_at":"2025-12-25T16:49:54.708Z","updated_at":"2026-01-22T04:11:13.280Z","avatar_url":"https://github.com/jevonlipsey.png","language":"JavaScript","funding_links":["https://ko-fi.com/jevonlipsey"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n  \u003cimg src=\"assets/icon.png\" alt=\"App Icon\" width=\"120\" /\u003e\n\n  \u003ch2\u003ePocket8 • The native PICO-8 Companion for iOS.\u003c/h2\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/jevonlipsey/pico-ios/releases/latest\"\u003e\n      ⬇️ Download the latest build\n    \u003c/a\u003e\n    \u0026nbsp;•\u0026nbsp;\n    \u003ca href=\"https://ko-fi.com/jevonlipsey\"\u003e\n      ☕ Support on Ko-fi\n    \u003c/a\u003e\n  \u003c/p\u003e\n\n\u003c/div\u003e\n\nhttps://github.com/user-attachments/assets/ec24f92e-d29a-4319-8293-439487d60b35\n\n## Features\n\n- **Native Engine**: Runs flawlessly on **iOS**, due to the official PICO-8 engine being implemented as a WASM module.\n- **Quick Save \u0026 Load**: The **only** PICO-8 experience with instant save states. Freeze time and resume anywhere, across devices.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/quickload.gif\" width=\"20%\" alt=\"quickload\" /\u003e\n\u003c/p\u003e\n\n- **Adaptive Controls**: Custom Gameboy-esque controls with tactile haptics. Works in portrait and landscape. Swap to virtual joystick.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/xzero-joystick.gif\" width=\"50%\" alt=\"joystick\" /\u003e\n\u003c/p\u003e\n\n- **Smart Library**: Automatically extracts cartridge labels and metadata, presenting your collection in a polished grid.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/libscroll-new.gif\" width=\"20%\" alt=\"libscroll\" /\u003e\n\u003c/p\u003e\n\n## Under the Hood: A Rant\n\nThe core engineering challenge was **reconciling the asynchronous nature of mobile file I/O with the synchronous requirements of the Emscripten/WASM virtual file system.**\n\nPICO-8 demands a synchronous file system. Bridging this to mobile required completely reverse-engineering the Emscripten boot sequence.\n\n- **Bootloader Hijacking:** The engine defaults to booting the standard \"JELPI\" demo cart. To bypass this, I had to intercept the `Module.preRun` lifecycle, manually injecting user code into the WASM heap and forcing the pointer to the correct entry point before the runtime could initialize.\n- **True State Persistence:** I architected a system that dumps the _entire simulated RAM_ into a serialized blob. I implemented **GZIP** compression to keep these memory snapshots lightweight, allowing for atomic, instant state restoration.\n\nIt’s _not_ a browser wrapper; it’s a custom runtime environment built for native mobile hardware. Enjoy the speeds!\n\n## Tech Stack\n\n![Vue.js](https://img.shields.io/badge/Vue.js-35495E?style=for-the-badge\u0026logo=vuedotjs\u0026logoColor=4FC08D)\n![Capacitor](https://img.shields.io/badge/Capacitor-1199EE?style=for-the-badge\u0026logo=capacitor\u0026logoColor=white)\n![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-38B2AC?style=for-the-badge\u0026logo=tailwindcss\u0026logoColor=white)\n![iOS](https://img.shields.io/badge/iOS-000000?style=for-the-badge\u0026logo=apple\u0026logoColor=white)\n![Android](https://img.shields.io/badge/Android-3DDC84?style=for-the-badge\u0026logo=android\u0026logoColor=white)\n\n## Installation\n\n### iOS (Sideload)\n\nYou can sideload Pocket8 via AltStore, SideStore, or Sideloadly.\n\n**Auto-Update Source (Recommended)**\nAdd the official source to **SideStore** or **AltStore** to get updates automatically (no computer needed!).\n\n1. Copy this URL: `https://raw.githubusercontent.com/jevonlipsey/pico-ios/main/altstore.json`\n2. Open SideStore/AltStore -\u003e **Sources** -\u003e **+** -\u003e **Add Source**.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://i.imgur.com/IEgMrg6.gif\" width=\"20%\" alt=\"Auto-Update Guide\" /\u003e\n\u003c/p\u003e\n\n**Manual IPA Install**\n\n1. Download `Pocket8.ipa` from [Releases](https://github.com/jevonlipsey/pico-ios/releases/latest).\n2. Sideload via **AltStore**, **SideStore**, or **Sideloadly**.\n3. Enable **Developer Mode** in iOS Settings (Settings \u003e General \u003e Device Management \u003e Your Name).\n\n### Android (APK)\n\n1. Download `Pocket8-Android.apk` from [Releases](https://github.com/jevonlipsey/pico-ios/releases/latest).\n2. Open the file on your device.\n3. If prompted, allow installation from **Unknown Sources**.\n   _(Note: Play Protect may ask for confirmation. Click \"More Details\" -\u003e \"Install Anyway\".)_\n\n## Project Status\n\nPocket8 is developed in collaboration with **Zep (Lexaloffle)** to be the official BBS Companion app for PICO-8.\nApart from the PICO-8 engine itself, Pocket8 is a solo dev project designed to bring the community a beautiful native app for mobile.\n\nAiming to submit to the App Store as soon as possible!\n\n- **iOS:** Our primary focus. Licensed as an official companion for browsing the BBS and playing carts natively.\n- **Android:** Experimental Alpha. While we are supporting current testers, please note that an official Lexaloffle Android build is planned for later this year.\n\n### Build from Source\n\n```bash\nnpm install \u0026\u0026 npx cap sync\nnpx cap open ios      # for Xcode\nnpx cap open android  # for Android Studio\n```\n\n## How to Get Games\n\nPocket8 plays standard `.p8.png` PICO-8 cartridges.\n\n### 1. Find a Game\n\nTap the **Globe Icon** in the app to open the [Lexaloffle BBS](https://www.lexaloffle.com/bbs/) in your browser. You can also visit [itch.io](https://itch.io/games/tag-pico-8).\n\n### 2. Save the Cartridge\n\n**Important:** You need the **cartridge image file**, not a ZIP or EXE.\n\n1.  Find the small square image that looks like a game cartridge (labelled \"Cart\").\n2.  **Desktop:** Right-click the image -\u003e \"Save Image As\".\n3.  **Mobile:** Long-press the cart image -\u003e \"Save to Files\" / \"Download Image\".\n\n### 3. Import\n\nOpen Pocket8, tap the `+` icon, and select the `.p8.png` file you just saved.\n\n\u003e **Coming Soon: Tap to Play**\n\u003e I am currently collaborating with Zep (Lexaloffle) on an official integration! Soon, you will be able to hit \"Play\" directly on the BBS website, and it will automatically launch the game inside Pocket8. This feature is in alpha and may not work for all carts at the moment.\n\n## License \u0026 Attribution\n\n- **Pocket8 Source Code**: Licensed under [GPL] (c) 2026 Jevon Lipsey.\n- **PICO-8 Engine**: (c) Lexaloffle Games. The engine runtime used for the iOS build is proprietary software and will **not** be included in this repository.\n\n## Acknowledgements\n\n- Zep ([Lexaloffle](https://www.lexaloffle.com/)): For creating the fantasy console and being awesome in general. PICO-8 is a masterpiece of design constraints, I'm so excited to bring it to mobile!\n\n- You: For actually reading the documentation. Thanks for the support (:\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjevonlipsey%2Fpico-ios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjevonlipsey%2Fpico-ios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjevonlipsey%2Fpico-ios/lists"}