{"id":41180850,"url":"https://github.com/retroenv/retrogolib","last_synced_at":"2026-01-22T20:05:37.368Z","repository":{"id":59046571,"uuid":"533035543","full_name":"retroenv/retrogolib","owner":"retroenv","description":"A standard library for Golang based retro console development.","archived":false,"fork":false,"pushed_at":"2026-01-12T05:34:43.000Z","size":354,"stargazers_count":5,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-12T15:40:17.526Z","etag":null,"topics":["go","golang","golang-library","retro"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/retroenv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/funding.yml","license":"LICENSE","code_of_conduct":null,"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":{"patreon":"cornel"}},"created_at":"2022-09-05T19:34:34.000Z","updated_at":"2026-01-12T05:34:46.000Z","dependencies_parsed_at":"2024-03-04T18:38:26.854Z","dependency_job_id":"813d5f4a-2936-4227-9c50-64ed25391ad6","html_url":"https://github.com/retroenv/retrogolib","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/retroenv/retrogolib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/retroenv%2Fretrogolib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/retroenv%2Fretrogolib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/retroenv%2Fretrogolib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/retroenv%2Fretrogolib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/retroenv","download_url":"https://codeload.github.com/retroenv/retrogolib/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/retroenv%2Fretrogolib/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28670366,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T19:36:09.361Z","status":"ssl_error","status_checked_at":"2026-01-22T19:36:05.567Z","response_time":144,"last_error":"SSL_read: 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":["go","golang","golang-library","retro"],"created_at":"2026-01-22T20:05:37.315Z","updated_at":"2026-01-22T20:05:37.361Z","avatar_url":"https://github.com/retroenv.png","language":"Go","funding_links":["https://patreon.com/cornel"],"categories":[],"sub_categories":[],"readme":"## RetroGoLib - a Golang library for retro console tooling development\n\n[![Build status](https://github.com/retroenv/retrogolib/actions/workflows/go.yaml/badge.svg?branch=main)](https://github.com/retroenv/retrogolib/actions)\n[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go\u0026logoColor=white\u0026style=flat-square)](https://pkg.go.dev/github.com/retroenv/retrogolib)\n[![Go Report Card](https://goreportcard.com/badge/github.com/retroenv/retrogolib)](https://goreportcard.com/report/github.com/retroenv/retrogolib)\n[![codecov](https://codecov.io/gh/retroenv/retrogolib/branch/main/graph/badge.svg?token=jiBBxNmmVB)](https://app.codecov.io/gh/retroenv/retrogolib)\n\n## Installation\n\n```bash\ngo get github.com/retroenv/retrogolib\n```\n\n**Requirements:**\n- Go 1.22 or later\n- No CGO dependencies\n\n## Overview\n\nRetroGoLib is a Golang library designed to simplify the development of tools for retro consoles.\nIt provides a comprehensive set of functionalities for creating emulators, debugging tools, and other\nretro console utilities, all while maintaining minimal dependencies and focusing on clean, maintainable code.\n\n### Key Design Principles\n- **Minimal Dependencies**: Only one external dependency (ebitengine/purego)\n- **CGO-Free**: SDL support without CGO for easier cross-compilation\n- **Type Safety**: Extensive use of Go generics for type-safe APIs\n- **Thread Safety**: CPU implementations with proper synchronization patterns\n- **Testing**: Comprehensive test coverage with consistent assertion patterns\n\n## Supported Systems\n\n### CPUs\n- **6502**: Full instruction set with accurate timing\n- **Chip-8**: Complete virtual machine implementation\n- **Z80**: Complete Z80 CPU emulation with array-based opcode tables\n- **x86**: Real mode instruction set (8086 through 80486)\n\n### Consoles\n- **NES (Nintendo Entertainment System)**: Cartridge formats, memory mapping\n\n## Features\n\n### CPU Emulation\n- **6502 CPU**: Full instruction set with memory management, stack operations, and interrupt support\n- **Chip-8 Virtual CPU**: Complete virtual machine with display, timers, and input handling\n- **Z80 CPU**: Complete Z80 instruction set with 16-bit registers, prefix instructions (ED/DD/FD), and interrupts\n- **x86 CPU**: Real mode instruction set for static analysis (8086, 80186, 80286, 80386, 80486)\n\n### System Support\n- **NES (Nintendo Entertainment System)**: Cartridge handling, memory mapping, and parameter conversion\n\n## Package Overview\n\n    ├─ app              common application/service helpers\n    ├─ arch/cpu/chip8   Chip-8 virtual CPU support\n    ├─ arch/cpu/m6502   6502 CPU support\n    ├─ arch/cpu/x86     x86 real mode CPU support (8086-486)\n    ├─ arch/cpu/z80     Z80 CPU support\n    ├─ arch/system/nes  NES common types and helpers\n    ├─ assert           test assertion helpers\n    ├─ buildinfo        show version info that is embedded in the binary\n    ├─ cli              command-line interface utilities with section-based flag parsing\n    ├─ config           configuration management\n    ├─ gui              GUI support - SDL without need for CGO\n    ├─ input            hardware controller/keyboard helpers\n    ├─ log              fast and structured logging based on slog\n    ├─ set              generic set data structure with comprehensive operations\n\n## API Documentation\n\nFor detailed API documentation, visit [pkg.go.dev](https://pkg.go.dev/github.com/retroenv/retrogolib).\n\n## License\n\nThis project is licensed under the Apache License Version 2.0 - see the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fretroenv%2Fretrogolib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fretroenv%2Fretrogolib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fretroenv%2Fretrogolib/lists"}