{"id":15012010,"url":"https://github.com/anthonydotmoe/vgmplayer","last_synced_at":"2025-04-12T04:12:13.834Z","repository":{"id":155616153,"uuid":"541239500","full_name":"anthonydotmoe/vgmplayer","owner":"anthonydotmoe","description":"(Unfinished) Hardware YM2151 VGM Player using RP2040","archived":false,"fork":false,"pushed_at":"2023-08-05T18:23:11.000Z","size":5867,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T04:12:08.072Z","etag":null,"topics":["embedded-c","music","music-player","pio","retrogaming","rp2040","vgm","ym2151"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anthonydotmoe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2022-09-25T16:41:09.000Z","updated_at":"2024-09-09T14:58:08.000Z","dependencies_parsed_at":"2024-09-15T22:03:56.006Z","dependency_job_id":"a9912169-d077-4d67-bb4a-770b537d5084","html_url":"https://github.com/anthonydotmoe/vgmplayer","commit_stats":{"total_commits":49,"total_committers":1,"mean_commits":49.0,"dds":0.0,"last_synced_commit":"336e21313fdb1a366eafd796b61fc9e0f10087b8"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonydotmoe%2Fvgmplayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonydotmoe%2Fvgmplayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonydotmoe%2Fvgmplayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonydotmoe%2Fvgmplayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anthonydotmoe","download_url":"https://codeload.github.com/anthonydotmoe/vgmplayer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248514205,"owners_count":21116903,"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":["embedded-c","music","music-player","pio","retrogaming","rp2040","vgm","ym2151"],"created_at":"2024-09-24T19:42:00.402Z","updated_at":"2025-04-12T04:12:13.811Z","avatar_url":"https://github.com/anthonydotmoe.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RP2040 → YM2151 VGM Player\n\n\"It's a work in progress\"\n\n### Backstory\n\n**2018**\nThis project started out using an ATMEGA328P and Arduino, but I found that it\nwas hard to write fast enough code to play songs at full speed. I then found\nthe STM32 series of microcontrollers; It was promising, but I really didn't like\nthe SDK or the HAL that was provided for these parts. After a few years, the\nRaspberry Pi Foundation released the Raspberry Pi Pico. I bought the board\nduring its pre-order stage simply because it's a $5 microcontroller. This new\nboard, with their own RP2040 chip, has one key feature that I didn't know at the\ntime will make this project viable for me. The Programmable I/O (PIO).\n\n**2022**\nI finally got to looking at the datasheet for this board during DEFCON 2022,\nwhere they used the RP2040 for their interactive badge. The PIO section caught\nmy eye, but I didn't look into it until a month later.\n\nWhen I read the examples they had for driving WS2812 LED strips, I realized\nwhat I could do with this extra power. I could easily get data to the chip on\ntime, every time; and have plenty of time for drawing a UI to a screen,\nfetching data from an SD card over SPI, and in the future, emulating other\nsound chips for game systems with AD/PCM and other chips.\n\n### Hardware\n\n![YM2151 Pico Dev Board](/img/devboard.jpg)\n\nI made this development board for the project.\n\nGPIO 0-7 are connected to D0-D7 on the YM2151. GPIO 8-10 are connected to the\n`A0`, `WR`, and `CS` pins. I'm using SPI to connect to the SD card, and an\nLTC6903 programmable clock generator making the main clock for the YM2151.\n\nThe supporting circuitry for the YM2151 was ripped from the same place I got\nthe chip from, a Yamaha CX5 Music Computer.\n\n### Software\n\n\n*To be documented... and written*\n\n### Thank You\n\nSpecial thanks to:\n\n- [ReimuNotMoe](https://github.com/ReimuNotMoe) for their work on\n  [TinyVGM](https://github.com/SudoMaker/TinyVGM). This framework for digesting\n  the `.vgm` files is really helpful for me.\n- [Aidan Lawrence](https://github.com/AidanHockey5) for open-sourcing his\n  [YM2151 music player](https://github.com/AidanHockey5/YM2151_VGM_STM32) which\n  got me started in the ATMEGA328P days.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanthonydotmoe%2Fvgmplayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanthonydotmoe%2Fvgmplayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanthonydotmoe%2Fvgmplayer/lists"}