{"id":28757298,"url":"https://github.com/libretro/vbam-libretro","last_synced_at":"2025-06-17T03:10:30.985Z","repository":{"id":10741002,"uuid":"12997773","full_name":"libretro/vbam-libretro","owner":"libretro","description":"A fork of VBA-M with libretro integration","archived":false,"fork":false,"pushed_at":"2024-10-21T17:00:29.000Z","size":33898,"stargazers_count":28,"open_issues_count":10,"forks_count":31,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-06-08T10:51:31.500Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/libretro.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2013-09-21T15:54:20.000Z","updated_at":"2025-03-20T06:44:48.000Z","dependencies_parsed_at":"2024-06-28T23:46:12.382Z","dependency_job_id":"1d617a42-b1db-4b3a-861f-b3842ae9145f","html_url":"https://github.com/libretro/vbam-libretro","commit_stats":{"total_commits":2164,"total_committers":68,"mean_commits":"31.823529411764707","dds":0.8262476894639557,"last_synced_commit":"640ce45325694d1dc574e90c95c55bc464368d7e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/libretro/vbam-libretro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libretro%2Fvbam-libretro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libretro%2Fvbam-libretro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libretro%2Fvbam-libretro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libretro%2Fvbam-libretro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libretro","download_url":"https://codeload.github.com/libretro/vbam-libretro/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libretro%2Fvbam-libretro/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260281515,"owners_count":22985633,"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":[],"created_at":"2025-06-17T03:10:30.482Z","updated_at":"2025-06-17T03:10:30.958Z","avatar_url":"https://github.com/libretro.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n\n- [Visual Boy Advance - M](#visual-boy-advance---m)\n  - [Building](#building)\n  - [Cross compiling for 32 bit on a 64 bit host](#cross-compiling-for-32-bit-on-a-64-bit-host)\n  - [Cross Compiling for Win32](#cross-compiling-for-win32)\n  - [CMake Options](#cmake-options)\n  - [MSys2 Notes](#msys2-notes)\n  - [Debug Messages](#debug-messages)\n  - [Reporting Crash Bugs](#reporting-crash-bugs)\n  - [Contributing](#contributing)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n[![Join the chat at https://gitter.im/visualboyadvance-m/Lobby](https://badges.gitter.im/visualboyadvance-m/Lobby.svg)](https://gitter.im/visualboyadvance-m/Lobby)\n[![Build Status](https://travis-ci.org/visualboyadvance-m/visualboyadvance-m.svg?branch=master)](https://travis-ci.org/visualboyadvance-m/visualboyadvance-m)\n[![Coverity Scan Build Status](https://scan.coverity.com/projects/16096/badge.svg)](https://scan.coverity.com/projects/visualboyadvance-m-visualboyadvance-m)\n\n# Visual Boy Advance - M\n\nGame Boy Advance Emulator\n\nHomepage and Forum: http://vba-m.com\n\nWindows and Mac builds are in the [releases tab](https://github.com/visualboyadvance-m/visualboyadvance-m/releases).\n\nDaily Ubuntu packages here: https://code.launchpad.net/~sergio-br2/+archive/ubuntu/vbam-trunk\n\nYour distribution may have packages available as well, search for \"vbam\" or \"visualboyadvance-m\".\n\nIt is also generally very easy to build from source, see below.\n\nIf you are using the windows binary release and you need localization, unzip\nthe `translations.zip` to the same directory as the executable.\n\n## Note for Windows Users\n\nIf you are having issues, try resetting your config file first.\n\n- open file explorer\n- in the location bar, type `%USERPROFILE%\\AppData\\Local` and press enter\n- delete the directory called `visualboyadvance-m`\n\n## Building\n\nThe basic formula to build vba-m is:\n\n```shell\ncd ~ \u0026\u0026 mkdir src \u0026\u0026 cd src\ngit clone https://github.com/visualboyadvance-m/visualboyadvance-m.git\ncd visualboyadvance-m\n./installdeps\n\n# ./installdeps will give you build instructions, which will be similar to:\n\nmkdir build \u0026\u0026 cd build\ncmake ..\nmake -j`nproc`\n```\n\n`./installdeps` is supported on MSys2, Linux (Debian/Ubuntu, Fedora, Arch,\nSolus and RHEL/CentOS) and Mac OS X (homebrew, macports or fink.)\n\nThe Ninja cmake generator is also now supported, including on msys2 and Visual Studio.\n\n## Building a Libretro core\n\n```\nClone this repo and then,\n$ cd src\n$ cd libretro\n$ make\n\nCopy vbam_libretro.so to your RetroArch cores directory.\n```\n\n### Visual Studio Support\n\nFor visual studio, dependency management is handled automatically with vcpkg,\njust clone the repository with git and build with cmake. You can do this from\nthe developer command line as well. 2019 will not work yet for building\ndependencies, but you can build the dependencies in 2017 and then use the\nproject from 2019.\n\nUsing your own user-wide installation of vcpkg is supported, just make sure the\nenvironment variable `VCPKG_ROOT` is set.\n\nTo build in the visual studio command prompt, use something like this:\n\n```\nmkdir vsbuild\ncd vsbuild\ncmake .. -DVCPKG_TARGET_TRIPLET=x64-windows\nmsbuild /m .\\ALL_BUILD.vcxproj\n```\n\n### Dependencies\n\nIf your OS is not supported, you will need the following:\n\n- C++ compiler and binutils\n- [make](https://en.wikipedia.org/wiki/Make_(software))\n- [CMake](https://cmake.org/)\n- [git](https://git-scm.com/)\n- nasm (optional, for 32 bit builds)\n\nAnd the following development libraries:\n\n- [zlib](https://zlib.net/) (required)\n- [mesa](https://mesa3d.org/) (if using X11 or any OpenGL otherwise)\n- ffmpeg (optional, for game recording)\n- gettext and gettext tools (optional, with ENABLE_NLS)\n- png (required)\n- [SDL](https://www.libsdl.org/)2 (required)\n- [SFML](https://www.sfml-dev.org/) (optional, for link)\n- OpenAL (optional, a sound interface)\n- [wxWidgets](https://wxwidgets.org/) (required, 2.8 is still supported, --enable-stl is supported)\n\nOn Linux and similar, you also need the version of GTK your wxWidgets is linked\nto (usually 2 or 3).\n\nSupport for more OSes/distributions for `./installdeps` is planned.\n\n## Cross compiling for 32 bit on a 64 bit host\n\n`./installdeps m32` will set things up to build a 32 bit binary.\n\nThis is supported on Fedora, Arch, Solus and MSYS2.\n\n## Cross Compiling for Win32\n\n`./installdeps` takes one optional parameter for cross-compiling target, which\nmay be `win32` which is an alias for `mingw-w64-i686` to target 32 bit Windows,\nor `mingw-gw64-x86_64` for 64 bit Windows targets.\n\nThe target is implicit on MSys2 depending on which MINGW shell you started (the\nvalue of `$MSYSTEM`.) It will not run in the MSys shell.\n\nOn Debian/Ubuntu this uses the MXE apt repository and works really well.\n\nOn Fedora it can build using the Fedora MinGW packages, albeit with wx 2.8, no\nOpenGL support, and no Link support for lack of SFML.\n\nOn Arch it currently doesn't work at all because the AUR stuff is completely\nbroken, I will at some point redo the arch stuff to use MXE as well.\n\n## CMake Options\n\nThe CMake code tries to guess reasonable defaults for options, but you can\noverride them on the cmake command with e.g.:\n\n```shell\ncmake .. -DENABLE_LINK=NO\n```\n\nOf particular interest is making **RELEASE** or **DEBUG** builds, the default\nmode is **RELEASE**, to make a **DEBUG** build use something like:\n\n```shell\ncmake .. -DCMAKE_BUILD_TYPE=Debug\n```\n\nHere is the complete list:\n\n| **CMake Option**      | **What it Does**                                                     | **Defaults**          |\n|-----------------------|----------------------------------------------------------------------|-----------------------|\n| ENABLE_SDL            | Build the SDL port                                                   | OFF                   |\n| ENABLE_WX             | Build the wxWidgets port                                             | ON                    |\n| ENABLE_DEBUGGER       | Enable the debugger                                                  | ON                    |\n| ENABLE_NLS            | Enable translations                                                  | ON                    |\n| ENABLE_ASM_CORE       | Enable x86 ASM CPU cores (**BUGGY AND DANGEROUS**)                   | OFF                   |\n| ENABLE_ASM            | Enable the following two ASM options                                 | ON for 32 bit builds  |\n| ENABLE_ASM_SCALERS    | Enable x86 ASM graphic filters                                       | ON for 32 bit builds  |\n| ENABLE_MMX            | Enable MMX                                                           | ON for 32 bit builds  |\n| ENABLE_LINK           | Enable GBA linking functionality (requires SFML)                     | ON                    |\n| ENABLE_LIRC           | Enable LIRC support                                                  | OFF                   |\n| ENABLE_FFMPEG         | Enable ffmpeg A/V recording                                          | OFF                   |\n| ENABLE_ONLINEUPDATES  | Enable online update checks                                          | ON                    |\n| ENABLE_LTO            | Compile with Link Time Optimization (gcc and clang only)             | ON for release build  |\n| ENABLE_GBA_LOGGING    | Enable extended GBA logging                                          | ON                    |\n| ENABLE_DIRECT3D       | Direct3D rendering for wxWidgets (Windows, **NOT IMPLEMENTED!!!**)   | ON                    |\n| ENABLE_XAUDIO2        | Enable xaudio2 sound output for wxWidgets (Windows only)             | ON                    |\n| ENABLE_OPENAL         | Enable OpenAL for the wxWidgets port                                 | OFF                   |\n| ENABLE_SSP            | Enable gcc stack protector support (gcc only)                        | OFF                   |\n| ENABLE_ASAN           | Enable libasan sanitizers (by default address, only in debug mode)   | OFF                   |\n| VBAM_STATIC           | Try link all libs statically (the following are set to ON if ON)     | OFF                   |\n| SDL2_STATIC           | Try to link static SDL2 libraries                                    | OFF                   |\n| SFML_STATIC_LIBRARIES | Try to link static SFML libraries                                    | OFF                   |\n| FFMPEG_STATIC         | Try to link static ffmpeg libraries                                  | OFF                   |\n| SSP_STATIC            | Try to link static gcc stack protector library (gcc only)            | OFF except Win32      |\n| OPENAL_STATIC         | Try to link static OpenAL libraries                                  | OFF                   |\n| SSP_STATIC            | Link gcc stack protecter libssp statically (gcc, with ENABLE_SSP)    | OFF                   |\n\nNote for distro packagers, we use the CMake module\n[GNUInstallDirs](https://cmake.org/cmake/help/v2.8.12/cmake.html#module:GNUInstallDirs)\nto configure installation directories.\n\n## MSys2 Notes\n\nTo run the resulting binary, you can simply type:\n\n```shell\n./visualboyadvance-m\n```\n\nin the shell where you built it.\n\nIf you built with `-DCMAKE_BUILD_TYPE=Debug`, you will get a console app and\nwill see debug messages, even in mintty.\n\nIf you want to start the binary from e.g. a shortcut or Explorer, you will need\nto put `c:\\msys64\\mingw32\\bin` for 32 bit builds and `c:\\msys64\\mingw64\\bin`\nfor 64 bit builds in your PATH (to edit system PATH, go to Control Panel -\u003e\nSystem -\u003e Advanced system settings -\u003e Environment Variables.)\n\nIf you want to package the binary, you will need to include the MinGW DLLs it\ndepends on, they can install to the same directory as the binary.\n\nFor our own builds, we use MXE to make static builds.\n\n## Debug Messages\n\nWe have an override for `wxLogDebug()` to make it work even in non-debug builds\nof wx and on windows, even in mintty. Using this function for console debug\nmessages is recommended.\n\nIt works like `printf()`, e.g.:\n\n```cpp\nint foo = 42;\nwxLogDebug(wxT(\"the value of foo = %d\"), foo);\n```\n\n## Reporting Crash Bugs\n\nIf the emulator crashes and you wish to report the bug, a backtrace made with\ndebug symbols would be immensely helpful.\n\nTo generate one (on Linux and MSYS2) first build in debug mode by invoking\n`cmake` as:\n\n```shell\ncmake .. -DCMAKE_BUILD_TYPE=Debug\n```\n\nAfter you've reproduced the crash, you need the core dump file, you may need to\ndo something such as:\n\n```shell\nulimit -c unlimited\n```\n\nin your shell to enable coredump files.\n\n[This\npost](https://ask.fedoraproject.org/en/question/98776/where-is-core-dump-located/?answer=98779#post-id-98779)\nexplains how to retrieve core dump on Fedora Linux (and possibly other\ndistributions.)\n\nOnce you have the core dump file, open it with `gdb`, for example:\n\n```shell\ngdb -c core ./visualboyadvance-m\n```\n\nIn the `gdb` shell, to print the backtrace, type:\n\n```\nbt\n```\n\nThis may be a bit of a hassle, but it helps us out immensely.\n\n## Contributing\n\nPlease keep in mind that this app needs to run on Windows, Linux and macOS at\nthe very least, so code should be portable and/or use the appropriate `#ifdef`s\nand the like when needed.\n\nPlease try to craft a good commit message, this post by the great tpope explains\nhow to do so:\nhttp://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html\n\nIf you have multiple small commits for a change, please try to use `git rebase\n-i` (interactive rebase) to squash them into one or a few logical commits (with\ngood commit messages!) See:\nhttps://git-scm.com/book/en/v2/Git-Tools-Rewriting-History if you are new to\nthis.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibretro%2Fvbam-libretro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibretro%2Fvbam-libretro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibretro%2Fvbam-libretro/lists"}