{"id":13830049,"url":"https://github.com/visrealm/pico9918","last_synced_at":"2026-02-15T08:22:05.157Z","repository":{"id":243338119,"uuid":"791112163","full_name":"visrealm/pico9918","owner":"visrealm","description":"A replacement for the classic TMS9918A/TMS9929A VDP, powered by a Raspberry Pi Pico","archived":false,"fork":false,"pushed_at":"2025-03-11T00:55:49.000Z","size":12241,"stargazers_count":173,"open_issues_count":3,"forks_count":14,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-03-28T18:17:38.799Z","etag":null,"topics":["colecovision","electronics","nabu","pcb","pico","pipico","ti99","ti994a","tms9918","tms9918-emulation","tms9918a"],"latest_commit_sha":null,"homepage":"https://hackaday.io/project/196478-pico9918","language":"C","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/visrealm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE_FIRMWARE.md","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},"funding":{"ko_fi":"visrealm"}},"created_at":"2024-04-24T05:49:28.000Z","updated_at":"2025-03-11T00:55:52.000Z","dependencies_parsed_at":"2024-06-13T11:11:35.440Z","dependency_job_id":"901c628c-7e76-4ddc-9db4-fe0fdc92a247","html_url":"https://github.com/visrealm/pico9918","commit_stats":{"total_commits":107,"total_committers":3,"mean_commits":"35.666666666666664","dds":"0.26168224299065423","last_synced_commit":"6cbdabe163827c6f20c3ca57148d0cf1d33a78be"},"previous_names":["visrealm/pico9918"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visrealm%2Fpico9918","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visrealm%2Fpico9918/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visrealm%2Fpico9918/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visrealm%2Fpico9918/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/visrealm","download_url":"https://codeload.github.com/visrealm/pico9918/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247234923,"owners_count":20905854,"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","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":["colecovision","electronics","nabu","pcb","pico","pipico","ti99","ti994a","tms9918","tms9918-emulation","tms9918a"],"created_at":"2024-08-04T10:00:54.364Z","updated_at":"2026-02-15T08:22:05.152Z","avatar_url":"https://github.com/visrealm.png","language":"C","funding_links":["https://ko-fi.com/visrealm"],"categories":["Assembly"],"sub_categories":[],"readme":"# PICO9918\r\n\r\nA drop-in replacement for a classic TMS9918A VDP powered by the Raspberry Pi Pico RP2040 microcontroller.\r\n\r\n\u003cp align=\"left\"\u003e\u003ca href=\"img/pico9918_v1_2_top_sm.jpg\"\u003e\u003cimg src=\"img/pico9918_v1_2_top_sm.jpg\" alt=\"PICO9918 v1.2 Top\" width=\"400px\"\u003e\u003c/a\u003e \u003ca href=\"img/pico9918_v1_2_bottom_sm.jpg\"\u003e\u003cimg src=\"img/pico9918_v1_2_bottom_sm.jpg\" alt=\"PICO9918 v1.2 Top\" width=\"406px\"\u003e\u003c/a\u003e\u003c/p\u003e\r\n\r\nThe TMS9918A emulation is handled by my [vrEmuTms9918 library](https://github.com/visrealm/vrEmuTms9918) which is included as a submodule here\r\n\r\n## Build status\r\n\r\n### Main Branch\r\n\r\n| Build | Windows | Linux | macOS |\r\n|-------|---------|-------|-------|\r\n| Firmware | [![](https://github.com/visrealm/pico9918/actions/workflows/firmware-windows.yml/badge.svg?branch=main)](https://github.com/visrealm/pico9918/actions/workflows/firmware-windows.yml) | [![](https://github.com/visrealm/pico9918/actions/workflows/firmware-linux.yml/badge.svg?branch=main)](https://github.com/visrealm/pico9918/actions/workflows/firmware-linux.yml) | [![](https://github.com/visrealm/pico9918/actions/workflows/firmware-macos.yml/badge.svg?branch=main)](https://github.com/visrealm/pico9918/actions/workflows/firmware-macos.yml) |\r\n| Configurator | [![](https://github.com/visrealm/pico9918/actions/workflows/configurator-windows.yml/badge.svg?branch=main)](https://github.com/visrealm/pico9918/actions/workflows/configurator-windows.yml) | [![](https://github.com/visrealm/pico9918/actions/workflows/configurator-linux.yml/badge.svg?branch=main)](https://github.com/visrealm/pico9918/actions/workflows/configurator-linux.yml) | [![](https://github.com/visrealm/pico9918/actions/workflows/configurator-macos.yml/badge.svg?branch=main)](https://github.com/visrealm/pico9918/actions/workflows/configurator-macos.yml) |\r\n\r\n### Dev Branch\r\n\r\n| Build | Windows | Linux | macOS |\r\n|-------|---------|-------|-------|\r\n| Firmware | [![](https://github.com/visrealm/pico9918/actions/workflows/firmware-windows.yml/badge.svg?branch=dev)](https://github.com/visrealm/pico9918/actions/workflows/firmware-windows.yml) | [![](https://github.com/visrealm/pico9918/actions/workflows/firmware-linux.yml/badge.svg?branch=dev)](https://github.com/visrealm/pico9918/actions/workflows/firmware-linux.yml) | [![](https://github.com/visrealm/pico9918/actions/workflows/firmware-macos.yml/badge.svg?branch=dev)](https://github.com/visrealm/pico9918/actions/workflows/firmware-macos.yml) |\r\n| Configurator | [![](https://github.com/visrealm/pico9918/actions/workflows/configurator-windows.yml/badge.svg?branch=dev)](https://github.com/visrealm/pico9918/actions/workflows/configurator-windows.yml) | [![](https://github.com/visrealm/pico9918/actions/workflows/configurator-linux.yml/badge.svg?branch=dev)](https://github.com/visrealm/pico9918/actions/workflows/configurator-linux.yml) | [![](https://github.com/visrealm/pico9918/actions/workflows/configurator-macos.yml/badge.svg?branch=dev)](https://github.com/visrealm/pico9918/actions/workflows/configurator-macos.yml) |\r\n\r\n## Supported devices\r\n\r\nThis is a list of devices the PICO9918 has been tested and confirmed to work on. \r\n\r\n* [ColecoVision](https://en.wikipedia.org/wiki/ColecoVision)\r\n  * [Coleco ADAM](https://en.wikipedia.org/wiki/Coleco_Adam)\r\n  * [AtariBits CV-NUC+](https://ataribits.weebly.com/cv-nuc.html)\r\n  * [Bit Dina 2 in one](https://segaretro.org/Dina_2_in_one)\r\n* [Memotech MTX500](https://en.wikipedia.org/wiki/Memotech_MTX)\r\n* [MSX](https://en.wikipedia.org/wiki/MSX)\r\n  * [Casio MX-10](https://www.msx.org/wiki/Casio_MX-10)\r\n  * [Casio PV-7](https://www.msx.org/wiki/Casio_PV-7)\r\n  * [Casio PV-16](https://www.msx.org/wiki/Casio_PV-16)\r\n  * [Gradiente Expert XP-800](https://www.msx.org/wiki/Gradiente_Expert_XP-800)\r\n  * [National CF-2700](https://www.msx.org/wiki/National_CF-2700)\r\n  * [Sharp HB-8000](https://www.msx.org/wiki/Sharp_HB-8000)\r\n  * [Sony HB-75](https://www.msx.org/wiki/Sony_HB-75)\r\n  * [Spectravideo SVI-728](https://www.msx.org/wiki/Spectravideo_SVI-728)\r\n  * [Toshiba HX-10](https://www.msx.org/wiki/Toshiba_HX-10)\r\n  * [Toshiba HX-21](https://www.msx.org/wiki/Toshiba_HX-21)\r\n  * [Yamaha YIS-503](https://www.msx.org/wiki/Yamaha_YIS-503)\r\n* [NABU Personal Computer](https://en.wikipedia.org/wiki/NABU_Network)\r\n* [Powertran Cortex](http://powertrancortex.com/)\r\n* [Sega SG-1000 / SC-3000](https://en.wikipedia.org/wiki/SG-1000#SC-3000)\r\n* [Sega SG-1000 II](https://segaretro.org/SG-1000_II)\r\n* [Sord M5](https://en.wikipedia.org/wiki/Sord_M5)\r\n* [Texas Instruments TI-99](https://en.wikipedia.org/wiki/TI-99/4A)\r\n  * [Texas Instruments TI-99/4](https://en.wikipedia.org/wiki/TI-99/4)\r\n  * [Texas Instruments TI-99/4A](https://en.wikipedia.org/wiki/TI-99/4A)\r\n  * [Texas Instruments TI-99/4QI](http://www.mainbyte.com/ti99/computers/ti99qi.html)\r\n  * [Dan Werner TI-99/22](https://github.com/danwerner21/TI99_22)\r\n* [Tomy Pyūta / Tomy Tutor](https://en.wikipedia.org/wiki/Tomy_Tutor)\r\n* [Tomy Pyūta Jr](http://videogamekraken.com/pyuta-jr-by-tomy)\r\n* [VTech CreatiVision / Dick Smith Wizzard](https://en.wikipedia.org/wiki/VTech_CreatiVision)\r\n\r\nHomebrews:\r\n\r\n* Troy Schrapel's [HBC-56](https://github.com/visrealm/hbc-56)\r\n* Stuart Connor's [TM990](http://www.stuartconner.me.uk/tm990/tm990.htm)\r\n* John Winans' [Z80-Retro](https://github.com/Z80-Retro)\r\n* Martin's [Z80Ardu](https://www.dev-tronic.de/?p=74)\r\n\r\nIf you have tested the PICO9918 on any other device, please let me know and I'll happily update this list. :)\r\n\r\n### Unsupported devices\r\n\r\nSo far, there aren't any. \r\n\r\n# F18A compatibility\r\n\r\nThe PICO9918 also includes F18A compatibility in firmware v1.0.0+. The video below was captured directly from the PICO9918 VGA output running various F18A demos on a TI-99/4A.\r\n\r\n[![PICO9918 F18A mode preview 1 demo](https://img.visualrealmsoftware.com/youtube/thumb/TabTIPL1xQY)](https://youtu.be/TabTIPL1xQY)\r\n\r\nPre-release firmware for F18A compatibility mode is available in [Releases](https://github.com/visrealm/pico9918/releases/tag/v1.0.1a).\r\n\r\n## Purchasing options\r\n\r\nFully assembled and tested PICO9918 v1.2s are available on my Tindie store:\r\n\r\n\u003ca href=\"https://www.tindie.com/search/?q=PICO9918\"\u003e\u003cimg src=\"https://d2ss6ovg47m0r5.cloudfront.net/badges/tindie-larges.png\" alt=\"I sell on Tindie\" width=\"200\" height=\"104\"\u003e\u003c/a\u003e\r\n\r\nAlso (more convenient for North America)\r\n\r\n\u003ca href=\"https://www.arcadeshopper.com/wp/store/#!/~/search/keyword=*PICO9918*\"\u003e\u003cimg width=\"640\" src=\"https://www.arcadeshopper.com/wp/wp-content/uploads/2016/01/Arcadeshopper-horizontal-Web-logo-1024x147.jpg\"\u003e\u003c/img\u003e\u003c/a\u003e\r\n\r\n\r\n## Hardware\r\n\r\nThere are two main variants of the hardware. \r\n\r\n### v1.x (v1.3, v1.2, v1.1, v1.0 and v0.4)\r\n\r\nPICO9918 v1.3 is the single board version which doesn't require a piggy-backed Pi Pico. This is the version you can currently buy pre-assembled from Tindie and ArcadeShopper.\r\n\r\n\u003cp align=\"left\"\u003e\u003ca href=\"img/pico9918_v1_2_sm.jpg\"\u003e\u003cimg src=\"img/pico9918_v1_2_sm.jpg\" alt=\"PICO9918 v1.2\" width=\"720px\"\u003e\u003c/a\u003e\u003c/p\u003e\r\n\r\n### v0.3\r\n\r\nv0.3 is relatively cheap and easy to build, schematic and gerbers are available. This version makes use of an external Pi Pico module piggy-backed onto the PICO9918 PCB.\r\n\r\n\u003cp align=\"left\"\u003e\u003ca href=\"img/pico9918_v0_3_sm.jpg\"\u003e\u003cimg src=\"img/pico9918_v0_3_sm.jpg\" alt=\"PICO9918 v0.3\" width=\"720px\"\u003e\u003c/a\u003e\u003c/p\u003e\r\n\r\nI also have the [v0.3 board as a PCBWay Project](https://www.pcbway.com/project/shareproject/PICO9918_Drop_in_replacement_for_the_classic_TMS9918A_family_of_VDPs_fc11359a.html) you can order there.\r\n\r\n### Schematics\r\n\r\nSchematics and Gerbers are available in [/pcb](pcb)\r\n\r\n## Firmware\r\n\r\nIf you're not interested in building the firmware yourself, you'll find the latest firmware in the [Releases](https://github.com/visrealm/pico9918/releases).\r\n\r\nTo install, just hold the 'BOOTSEL' (or 'BOOT') button while plugging the Pico into a PC, then drag the pico9918.uf2 file on to the new USB drive which should have the volume label RPI-RP2. The Pico will restart (and disconnect) automatically.\r\n\r\n## Configurator\r\n\r\nThe configurator is a software tool used to modify PICO9918 configuration options, including:\r\n\r\n* Clock rate\r\n* Scanline CRT effect\r\n* Scanline sprite limit\r\n* Default palette\r\n* Diagnostics overlays\r\n\r\nAdditionally, firmware updates can be provided via the Configurator. The full configurator is available for the **TI-99/4A**, **ColecoVision** and **MSX**. With cut-down builds (without firmware updates) available for several other machines.\r\n\r\nSee the configurator in action:\r\n\r\n[![PICO9918 Configurator - ColecoVision](https://img.visualrealmsoftware.com/youtube/thumb/PBArYupT9qM)](https://youtu.be/PBArYupT9qM?t=9)\r\n\r\nThe configurator was written in a [custom fork of CVBasic](https://github.com/visrealm/CVBasic) with the full source available in [/configtool](configtool).\r\n\r\n## Building\r\n\r\nQuick start - build both firmware and configurator ROMs:\r\n\r\n```bash\r\n# Automatic SDK download (recommended)\r\nmkdir build \u0026\u0026 cd build\r\ncmake .. -DPICO_SDK_FETCH_FROM_GIT=ON -DPICO_SDK_FETCH_FROM_GIT_TAG=2.1.1\r\ncmake --build .\r\n```\r\n\r\nOutput in `build/dist/`: firmware `.uf2` file and configurator ROMs for all retro platforms.\r\n\r\n### Platform-Specific Setup Required\r\n\r\nEach platform requires specific toolchain installation:\r\n- **Windows**: ARM GNU Toolchain 13.2.1-1.1, Python with pillow\r\n- **Linux**: `build-essential cmake python3 python3-pip git gcc-arm-none-eabi`  \r\n- **macOS**: Homebrew + ARM GNU Toolchain 13.2.1-1.1, may need `--break-system-packages`\r\n\r\nAll platforms use **Raspberry Pi Pico SDK 2.1.1** specifically (newer versions may cause issues).\r\n\r\n📖 **[Complete Build Instructions](BUILDING.md)** - includes detailed platform setup, development environment configuration, build options, individual platform builds, VSCode integration, and troubleshooting.\r\n\r\n## Thanks\r\n\r\nSpecial thanks to [JasonACT (AtariAge)](https://forums.atariage.com/profile/82586-jasonact/) for hand-crafting the F18A mode's on-board TMS9900 \"GPU\" in ARM assembly and providing other valuable input to the project.\r\n\r\n## Discussion\r\n\r\nFor all the latest news and discussion on the PICO9918, you can follow [this AtariAge thread](https://forums.atariage.com/topic/367656-introducing-the-pico9918-a-tms9918a-drop-in-replacement-powered-by-a-pi-pico/)\r\n\r\n## Videos\r\n\r\nInitial \"raw\" videos recorded in the moments following the first boot on my TI-99/4A.\r\n\r\nThese videos are showing the v0.2 hardware with an external Pi Pico providing the required GROMCLK signal to the TI-99. This signal has been added to v0.3. I'm still waiting on v0.3 boards to arrive.\r\n\r\n### It freaking works!\r\n[![PICO9918 Prototype - It freaking works](https://img.visualrealmsoftware.com/youtube/thumb/Ri09dCjWxGE)](https://youtu.be/Ri09dCjWxGE)\r\n\r\n### Don't mess with Texas!\r\n[![PICO9918 Prototype - Don't mess with Texas](https://img.visualrealmsoftware.com/youtube/thumb/ljNRFKbOGJs)](https://youtu.be/ljNRFKbOGJs)\r\n\r\n### 80 column mode\r\n[![PICO9918 Prototype - 80 column mode test](https://img.visualrealmsoftware.com/youtube/thumb/qdCapu0CVJ8)](https://youtu.be/qdCapu0CVJ8)\r\n\r\nAnd now v0.4 - the single board version:\r\n\r\n### v0.4 prototype working!\r\n[![PICO9918 v0.4 PCB. Integrated RP2040 all-in-one build.](https://img.visualrealmsoftware.com/youtube/thumb/KSbJnAwclQw)](https://youtu.be/KSbJnAwclQw)\r\n\r\n### F18A mode development preview\r\n[![PICO9918 F18A mode preview 1 demo](https://img.visualrealmsoftware.com/youtube/thumb/TabTIPL1xQY)](https://youtu.be/TabTIPL1xQY)\r\n\r\n## Licensing\r\n\r\n### Hardware\r\nThe hardware design files in this repository are licensed under the CERN-OHL-S. See [LICENSE_HARDWARE.md](LICENSE_HARDWARE.md) for details.\r\n\r\n### Firmware\r\nThe firmware code in this repository is licensed under the MIT License. See [LICENSE_FIRMWARE.md](LICENSE_FIRMWARE.md) for details.\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisrealm%2Fpico9918","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvisrealm%2Fpico9918","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisrealm%2Fpico9918/lists"}