{"id":49038821,"url":"https://github.com/JohnEarnest/Octo","last_synced_at":"2026-05-05T18:01:42.510Z","repository":{"id":17004201,"uuid":"19767439","full_name":"JohnEarnest/Octo","owner":"JohnEarnest","description":"A Chip8 IDE","archived":false,"fork":false,"pushed_at":"2025-08-27T03:19:54.000Z","size":2155,"stargazers_count":852,"open_issues_count":5,"forks_count":58,"subscribers_count":19,"default_branch":"gh-pages","last_synced_at":"2026-04-03T14:58:29.855Z","etag":null,"topics":["assembler","chip-8","chip8","chip8-emulator","emulator","emulator-programming","fantasy-console","game-development","homebrew","octoide","octojam","retrogaming","superchip","toolchain"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JohnEarnest.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2014-05-14T05:22:54.000Z","updated_at":"2026-03-27T10:17:31.000Z","dependencies_parsed_at":"2023-01-11T19:29:39.567Z","dependency_job_id":"e170d5ab-6a23-4ce9-82a7-68b692e61dd3","html_url":"https://github.com/JohnEarnest/Octo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JohnEarnest/Octo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnEarnest%2FOcto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnEarnest%2FOcto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnEarnest%2FOcto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnEarnest%2FOcto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JohnEarnest","download_url":"https://codeload.github.com/JohnEarnest/Octo/tar.gz/refs/heads/gh-pages","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnEarnest%2FOcto/sbom","scorecard":{"id":73673,"data":{"date":"2025-08-11","repo":{"name":"github.com/JohnEarnest/Octo","commit":"1d283518abbf369965282ce34cedca8121a732dc"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Code-Review","score":3,"reason":"Found 7/18 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'gh-pages'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T04:22:37.065Z","repository_id":17004201,"created_at":"2025-08-15T04:22:37.065Z","updated_at":"2025-08-15T04:22:37.065Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32661193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["assembler","chip-8","chip8","chip8-emulator","emulator","emulator-programming","fantasy-console","game-development","homebrew","octoide","octojam","retrogaming","superchip","toolchain"],"created_at":"2026-04-19T14:00:38.531Z","updated_at":"2026-05-05T18:01:42.498Z","avatar_url":"https://github.com/JohnEarnest.png","language":"JavaScript","funding_links":[],"categories":["Emulators \u0026 Virtual Machines"],"sub_categories":[],"readme":"Octo\n====\n\n![Title Image](https://raw.githubusercontent.com/JohnEarnest/Octo/gh-pages/images/f8z.gif)\n\n[Octo](http://johnearnest.github.io/Octo/) is a high-level assembler for the [Chip8](https://en.wikipedia.org/wiki/CHIP-8) virtual machine, complete with an environment for testing programs, and tools for sharing your creations. Read about the project on [Itch.io](https://internet-janitor.itch.io/octo)!\n\n![IDE Screenshot](https://raw.githubusercontent.com/JohnEarnest/Octo/gh-pages/images/octo-screenshot.png)\n\nLinks\n-----\nGeneral information:\n\n- [Language Manual](https://github.com/JohnEarnest/Octo/tree/gh-pages/docs/Manual.md)\n- [Frequently Asked Questions](https://github.com/JohnEarnest/Octo/tree/gh-pages/docs/FAQ.md)\n- [Beginner's Guide](https://github.com/JohnEarnest/Octo/blob/gh-pages/docs/BeginnersGuide.md)\n- [Intermediate Guide](https://github.com/JohnEarnest/Octo/blob/gh-pages/docs/IntermediateGuide.md)\n- [Programming Techniques Guide](https://github.com/JohnEarnest/Octo/blob/gh-pages/docs/Chip8%20Programming.md)\n- [Metaprogramming Cookbook](https://github.com/JohnEarnest/Octo/blob/gh-pages/docs/MetaProgramming.md)\n- [SuperChip Extensions](https://github.com/JohnEarnest/Octo/blob/gh-pages/docs/SuperChip.md)\n- [XO-Chip Extensions](https://github.com/JohnEarnest/Octo/tree/gh-pages/docs/XO-ChipSpecification.md)\n- [OctoJam](http://octojam.com) an Octo-centric game jam held every October.\n- [Chip-8 Archive](https://github.com/JohnEarnest/chip8Archive) A curated gallery of Chip-8 Programs.\n\nThird-party tools and references:\n\n- [Mastering Chip-8](https://github.com/mattmikolay/chip-8/wiki/Mastering-CHIP%E2%80%908) the most accurate Chip-8 reference online.\n- [HP48 SuperChip](https://github.com/Chromatophore/HP48-Superchip) research into the quirks and behavior of SuperChip.\n- [Sublime Text syntax definitions](https://github.com/mattmikolay/octo-sublime)\n- [Atom syntax definitions](https://github.com/james0x0A/language-octo)\n- [Emacs syntax definitions](https://github.com/cryon/octo-mode)\n- [Vim syntax definitions](https://github.com/jackiekircher/vim-chip8) (Octo also has Vim keybindings; see _Options_ → _Keyboard Configuration_)\n- [VSCode syntax definitions/integration](https://github.com/hoovercj/vscode-octo)\n- [OctoFont](https://github.com/jdeeny/octofont) .TTF font converter.\n- [wernsey chip8](https://github.com/wernsey/chip8) an alternative assembler/disassembler.\n- [EZ-Bake Animator](http://beyondloom.com/tools/ezbake.html) a graphics preparation tool.\n- [EZ-Writer](http://beyondloom.com/tools/ezwriter.html) a text preparation tool.\n- [EZ-Pack](http://beyondloom.com/tools/ezpack.html) an image slicing/repaletting tool.\n\nThird-party games, programs and libraries:\n\n- [KNIGHT](https://github.com/simonklitjohnson/Knight) by Simon Klit-Johnson. (Game)\n- [OCTOPEG](https://github.com/Chromatophore/Octopeg) by Chromatophore. (Game)\n- [Masquer8](https://github.com/Chromatophore/Masquer8) by Chromatophore. (Game)\n- [Glitch Ghost](https://github.com/jackiekircher/glitch-ghost) by Jackie Kircher. (Game)\n- [CosmacCalc](https://abitoutofplace.wordpress.com/2015/05/02/cosmaccalc-the-cosmac-vip-s-place-in-spreadsheet-history/) a COSMAC VIP spreadsheet built with Octo.\n- [Misc Samples](https://github.com/buffis/misc-samples/tree/master/Octo) small programs by Björn Kempen.\n- [Stack](https://github.com/jackiekircher/stack.8o) reusable stack data structure.\n- [Chip8-multiply](https://github.com/jdeeny/chip8-multiply) reusable multiplication routines.\n- [Octo-Lfsr64](https://github.com/jdeeny/octo-lfsr64) reusable PRNG implementation.\n\nIf you've built a project on, with, or for Octo and you'd like to have a link added to this list, submit a pull request!\n\nCommand Line Mode\n-----------------\nThe Octo assembler can also be used as a command-line tool via a [Node.js](http://nodejs.org) frontend:\n\n```\n$ ./octo\nusage: octo [--decompile] [--options \u003cfile.json\u003e] \u003csource\u003e [\u003cdestination\u003e]\n       if \u003csource\u003e has a .gif extension, unpack an existing octo cartridge.\n       if \u003cdestination\u003e has a .gif extension, create an octo cartridge file.\n       if \u003cdestination\u003e has an .html extension, create a standalone HTML5 build.\n       if the specified options file does not exist, a new template will be created.\n\n$ cat simple.8o\n\t: main\n\t\tva := 1\n\t\tvb := 2\n\n$ ./octo simple.8o simple.ch8\n\n$ hexdump simple.ch8\n\t0000000 6a 01 6b 02\n\t0000004\n```\n\nThe `--decompile` option can be used to send an existing Chip8 binary through Octo's general-purpose decompiler.\n\nThe `--options` option allows you to specify a JSON file with settings for all of Octo's feature flags and palette configuration, which will be used for exports and as hints during decompilation. If the specified file does not exist, a template will be created with default settings.\n\nIf you're interested in using Octo from the command line, you might like [c-octo](https://github.com/JohnEarnest/c-octo).\n\nSharing Your Programs\n---------------------\nOcto has a `share` feature which stores source code and configuration metadata and produces a URL you can share with others. By default, Octo stores programs in its own backend, indexed based on a `key`.\n\nUsing the \"Save HTML\" button in the \"Binary Tools\" panel of the toolbox, you can generate a single HTML file containing the Octo emulator and your program, allowing you to easily host a game yourself or on sites like [Itch.io](https://internet-janitor.itch.io/an-evening-to-die-for). Octo can be configured to offer adaptive multitouch controls, making your games playable on mobile devices and tablets!\n\n![Screenshot of HTML export dialog](https://raw.githubusercontent.com/JohnEarnest/Octo/gh-pages/images/html-export-screenshot.png)\n\nOcto can also save \"Cartridges\" which embed programs and their metadata in an animated GIF. Cartridges are easy to share via email or image hosting sites, and include the source code of your programs, so others can riff on your creations:\n\n![Cartridge Example](https://raw.githubusercontent.com/JohnEarnest/Octo/gh-pages/images/murdercart.gif)\n\nFinally, [Doct](https://github.com/JohnEarnest/Octo/tree/gh-pages/tools/Doct) is an experimental tool for building standalone binaries which run Octo programs. Give it a whirl!\n\nLicensing\n---------\nOcto, along with all its associated documentation, examples and tooling, are made available under the MIT license. See LICENSE.txt for additional details. If for any reason this is insufficiently flexible or permissive for some application, please contact John Earnest with your request. Contributions to this repository are welcome, with the understanding that they will fall under the same licensing conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJohnEarnest%2FOcto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJohnEarnest%2FOcto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJohnEarnest%2FOcto/lists"}