{"id":13568546,"url":"https://github.com/gyrovorbis/libevmu","last_synced_at":"2026-04-05T00:33:49.690Z","repository":{"id":179957543,"uuid":"664362917","full_name":"gyrovorbis/libevmu","owner":"gyrovorbis","description":"Accurate, full-featured, cross-platform library aiming to emulate every aspect of the Sega Dreamcast's Visual Memory Unit (VMU).","archived":false,"fork":false,"pushed_at":"2026-03-25T17:33:05.000Z","size":4919,"stargazers_count":66,"open_issues_count":12,"forks_count":8,"subscribers_count":5,"default_branch":"libgimbal-refactor","last_synced_at":"2026-03-26T18:45:11.072Z","etag":null,"topics":["8-bit","cpu-emulator","dreamcast","dreamcast-emulator","dreamcast-vmu","emulation","emulator","retrogaming","sega-dreamcast","visual-memory-unit","vms","vmu"],"latest_commit_sha":null,"homepage":"http://vmu.falcogirgis.net","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/gyrovorbis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2023-07-09T18:41:08.000Z","updated_at":"2026-03-25T17:33:10.000Z","dependencies_parsed_at":"2023-10-12T05:40:34.325Z","dependency_job_id":"b92fa837-dfbf-49bc-9703-e42663526a3e","html_url":"https://github.com/gyrovorbis/libevmu","commit_stats":null,"previous_names":["gyrovorbis/libevmu"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/gyrovorbis/libevmu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyrovorbis%2Flibevmu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyrovorbis%2Flibevmu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyrovorbis%2Flibevmu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyrovorbis%2Flibevmu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gyrovorbis","download_url":"https://codeload.github.com/gyrovorbis/libevmu/tar.gz/refs/heads/libgimbal-refactor","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyrovorbis%2Flibevmu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31420192,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T00:25:07.052Z","status":"ssl_error","status_checked_at":"2026-04-05T00:25:05.923Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["8-bit","cpu-emulator","dreamcast","dreamcast-emulator","dreamcast-vmu","emulation","emulator","retrogaming","sega-dreamcast","visual-memory-unit","vms","vmu"],"created_at":"2024-08-01T14:00:27.990Z","updated_at":"2026-04-05T00:33:49.676Z","avatar_url":"https://github.com/gyrovorbis.png","language":"C","funding_links":[],"categories":["VMU"],"sub_categories":[],"readme":"\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/gyrovorbis/libevmu\"\u003e\n    \u003cimg src=\"https://vmu.falcogirgis.net/libevmu_icon.gif\" width=\"200\" height=\"200\" alt=\"libEVMU\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003elibElysianVMU\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    C17-Based library for emulating the Sega Dreamcast's Visual Memory Unit\n    \u003cbr /\u003e\n    \u003ca href=\"http://vmu.falcogirgis.net\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    Accurate\n    ·\n    Full-Featured\n    ·\n    Cross-Platform\n  \u003c/p\u003e\n\u003c/div\u003e\n\n# Overview #\nlibElysianVMU (libEVMU) is a standalone emulator core of the Sega Dreamcast's 8-bit Visual Memory Unit (VMU), written in C17. It is the core powering the ElysianVMU emulator for Windows, macOS, and Linux, which has been separated from any platform-specific back-end or UI front-end. Several years of meticulous research and reverse engineering have gone into the creation of this core, which has now been open-sourced in hopes of benefiting the Dreamcast community at-large. \n\n# Goals # \nThe primary goal of libEVMU is to provide a one-stop, all-encompassing framework exposing everything the VMU has to offer in a standard C codebase that can be ported to any platform or wrapped to any language, allowing for everyone to use it in their projects and to benefit from a common codebase. At a high-level, this goal encompasses:\n- Fully and accurately emulating the VMU as a standalone gaming device\n- Providing tooling and APIs around its filesystem and all relevant file formats\n- Meticulously documenting every aspect of the codebase to expose everything that was previously undiscovered\n- Being performant enough to be ported to a Sega Saturn, N64, or toaster oven\n- Offering a high-level entity/component-based API that is intuitive and easy to work with\n- Allowing for modeling exotic, customized, nonstandard VMUs with extended volumes or capabilities\n- Providing low-level hooks for supporting debuggers and high-level tooling\n- Rigorously unit testing all aspects of the codebase to ensure correctness\n\n# Features #\n- Battery\n    - Emulated low-voltage signal\n- BIOS Support\n    - Official (US and Japanese)\n        - Skip directly to GAME\n        - Modify date/time\n    - Emulated Software back-end\n- Buzzer\n    - Creates and manages PCM buffers for audio back-end\n- File System \n    - Import + export files\n    - Formatting\n    - Defragmentation\n    - Unlock/lock extra flash blocks\n    - Diagnostics and validation\n    - Changing volume icons or color\n    - Loading custom ICONDATA \n    - Modifying copy protection bits\n    - Loading a GAME file from only a VMS and no VMI\n    - Recalculating checksums\n    - Extracting and texturing icons\n    - Extracting and texturing eyecatches\n    - Supported File Formats\n        - .VMI\n        - .VMS\n        - .DCI\n        - .DCM\n        - .flash\n        - .bin\n- Gamepad\n    - Polling or event-driven input back-ends\n    - Supports turbo buttons, slow motion, and fast-forward\n- LCD Screen\n    - Emulated pixel ghosting and grayscale effects\n    - Extra options for bilinear filtering, color inversion, etc\n    - Provides a simple virtual framebuffer abstraction for renderer back-end\n    - Provides asynchronous screen refresh callbacks, only when contents change\n\n# Platforms #\nlibEVMU is being actively tested in CI on the following targets:\n- Windows \n- macOS \n- Linux \n- Sega Dreamcast\n- Sony PSVita\n- WebAssembly\n- iOS\n- Android\n\n# Compilers #\nlibEVMU is being built in CI with the following compilers:\n- GCC\n- Clang\n- MinGW-w64\n- Emscripten\n\nNOTE: Microsoft Visual Studio support is currently a work in progress!\n\n# Building #\nBuilding is done with standard CMake. You should be able to open CMakeLists.txt directly as a project file in most IDEs such as Xcode, Qt Creator, CLion, etc if you wish to build from a UI.\n\nFirst, ensure submodules are installed with:\n```\ngit submodule update --init --recursive\n```\n\nTo build the project and its unit tests from the command-line, you can do the following:\n```\nmkdir build\ncd build\ncmake -DEVMU_ENABLE_TESTS=ON ..\ncmake --build . \n```\n\n# Credits #\nAuthor\n- Falco Girgis\n\nContributors\n- Colton Pawielski\n- jvsTSX\n- Rikki Gibson\n\nCollaborators \n- Andrew Apperley\n- Patrick Kowalik\n- Walter Tetzner\n- Tulio Goncalves\n- Kresna Susila \n- Sam Hellawell\n\nSpecial Thanks\n- Marcus Comstedt\n- Ruslan Rostovtsev\n- Rikki Gibson\n- Shirobon\n- Deunan Knute\n- Dmitry Grinberg\n- RinMaru\n- UltimaNumber\n- Joseph-Eugene Winzer\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgyrovorbis%2Flibevmu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgyrovorbis%2Flibevmu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgyrovorbis%2Flibevmu/lists"}