{"id":31068458,"url":"https://github.com/richstokes/megablaster","last_synced_at":"2025-09-15T21:36:42.005Z","repository":{"id":313569535,"uuid":"1051451287","full_name":"richstokes/Megablaster","owner":"richstokes","description":"Virtually Circuit Bending a Sega Megadrive","archived":false,"fork":false,"pushed_at":"2025-09-06T23:09:44.000Z","size":4584,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-07T01:09:40.706Z","etag":null,"topics":["circuit-bending","emulation","emulator","genesis","glitch-art","glitching","megadrive","romhacking","sega"],"latest_commit_sha":null,"homepage":"","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/richstokes.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-06T02:59:19.000Z","updated_at":"2025-09-06T23:09:47.000Z","dependencies_parsed_at":"2025-09-07T01:19:57.685Z","dependency_job_id":null,"html_url":"https://github.com/richstokes/Megablaster","commit_stats":null,"previous_names":["richstokes/megablaster"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/richstokes/Megablaster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FMegablaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FMegablaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FMegablaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FMegablaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richstokes","download_url":"https://codeload.github.com/richstokes/Megablaster/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richstokes%2FMegablaster/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275326605,"owners_count":25445042,"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","status":"online","status_checked_at":"2025-09-15T02:00:09.272Z","response_time":75,"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":["circuit-bending","emulation","emulator","genesis","glitch-art","glitching","megadrive","romhacking","sega"],"created_at":"2025-09-15T21:36:38.314Z","updated_at":"2025-09-15T21:36:41.989Z","avatar_url":"https://github.com/richstokes.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Megablaster\n\nVirtually circuit-bend a Sega Megadrive/Genesis. Take a perfectly good emulator (DGen), and add a number of \"creative\" features designed to glitch the video and audio drivers.  \n\nResults in a number of weird, wonderful, interesting, insane effects. The software equivalent of jamming a screwdriver into a working system while it's running to \"see what happens\".\n\n## Examples\n\n### Sonic 1\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/s1.png\" alt=\"Sonic screenshot\" width=\"400\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/s2.png\" alt=\"Sonic screenshot\" width=\"400\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/s3.png\" alt=\"Sonic screenshot\" width=\"400\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/s4.png\" alt=\"Sonic screenshot\" width=\"400\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/s5.png\" alt=\"Sonic screenshot\" width=\"400\"\u003e\n\u003c/p\u003e\n\n### Ecco\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/e1.jpg\" alt=\"Cursed af Ecco screenshot\" width=\"400\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/e2.jpg\" alt=\"Ecco screenshot\" width=\"400\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"screenshots/e3.jpg\" alt=\"Ecco screenshot\" width=\"400\"\u003e\n\u003c/p\u003e\n\n## Build\n\n### Building - Mac\n\n`./buildandrun.sh` - A vibe-coded build script that \"works on my machine\".  \nInstalls dependencies via homebrew and then builds the app. More info [here](BUILDING_ON_MACOS.md).\n\n### Building - Windows\n\nWIP, but you can try the `./build-windows.ps1` file. More info [here](BUILDING_ON_WINDOWS.md).  \nWill also periodically drop pre-built Windows binaries in the [releases](https://github.com/richstokes/Megablaster/releases).  \n\n\n### Building - Linux\n\nTBD - probably pretty similar to the MacOS build script\n\n## Run\n\n### Mac / Linux\n\n`./dgen \u003cROM\u003e`, e.g. `./dgen sonic1.md`\n\n## Windows\n\nDrag a ROM file onto the dgen.exe\n\n## Keys\n\n### Emulator\n\n- Keys A,S,D: ABC on the controller\n- Arrow keys: D-Pad on the controller\n- Enter: Start button on the controller\n- Tab: Reset the console\n\n### Video Controls\n\n- Key 9: Shift VRAM contents up one byte\n- Key 0: Shift VRAM contents down one byte\n- Key R: Randomly corrupt a chunk of VRAM\n- Key P: Randomize CRAM contents (once, hold to repeat)\n- Key L: Corrupt a single byte of VRAM with random contents (hold to repeat)\n- Key K: Fuzz scroll registers (once, press again to repeat)\n- Key I: Toggle persistent CRAM corruption on - causes random color glitches\n- Key O: Toggle persistent CRAM corruption off\n- Key U: Scramble sprite attributes (X, Y, tile index, etc) - causes sprites to jump around, flicker, disappear, etc.\n- Key ; (semi colon): Bitwise inversion of all VRAM contents\n\n### Audio Memory Controls\n\n- Key 7: Shift Z80 audio memory up*\n- Key 8: Shift Z80 audio memory down*\n- Key C: Corrupt audio (YM2612) registers\n- Key V: Corrupt audio (SN76496) PSG registers\n- Key Q: Detune FM channels/registers (music etc will go out of tune while held)\n- Key W: Disable FM corruption (single press)\n- Key E: Enable FM corruption (single press) - result in extremely cursed background music\n- Key T: Corrupt DAC/PCM data - effects drums, generally\n\n\\* Shifting Z80 memory can actually result in corrupting the audio processor's program counter, stack, and critical variables, which causes it to execute invalid instructions or jump to wrong addresses, freezing the system. Sometimes if you step backward it will recover. Room for improvement here.\n\n### General Mayhem\n\n\u003e Will likely result in crashes!\n\n- Key J: Randomly corrupt a byte of main (68K) memory\n- Key H: Scramble critical RAM areas\n- Key N: Force-Increment the program counter a random small amount\n- Key M: Corrupt a random register\n\n## Contributing\n\nPRs welcome.\n\n## Credits/License\n\nForked from [dgen](https://sourceforge.net/p/dgen/dgen/ci/master/tree/). See the [original Readme](README.original.md) and [Copyright info](COPYING) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichstokes%2Fmegablaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichstokes%2Fmegablaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichstokes%2Fmegablaster/lists"}