From GameBrew

Last Updated2021/05/12
TypeOther Apps

VNDS-LOVE is a cross platform program that plays Visual Novel Dual Screen formatted novels. Many famous visual novels have been ported to this format, which was designed for the Nintendo DS.

What is VNDS?

VNDS is a specification designed for visual novels in order to run them on the Nintendo DS. Many of the original sources for the project no longer exist, but you can find further information on it at this wiki page.

VNDS novels only have a few commands. As such, they don’t have any support for animations, videos, or other fancier graphical capabilites of newer visual novels. They support basic audio and image based storytelling.

Project Status

Mostly functional. There are no known VNDS related bugs. Note that some features from other visual novel engines might be missing. If they are, file an issue along with a general description of the feature.

Supported Platforms

Windows, Mac, Linux, and the Nintendo Switch are all fully supported. Note that you need to have a Switch capable of running homebrew. For more information, see the guide below.

Nintendo 3DS

This is only partially supported and a work in progress. I do provide builds (3dsx files) for the Nintendo 3DS, however the image format that the 3DS needs is custom (.t3x) so PNG/JPG files do not work on it without being converted. At some point I do intend on writing a cross platform conversion tool, however that won’t be for a while most likely. Text and audio still work fine without any conversion.

Performance on the 3DS is also lacking at this moment. You can see this being tracked in this issue. ### Android Android is also only partially supported. There aren’t any touchscreen controls at this moment. You can still play through novels by hooking up an external gamepad, such as a Switch Joycon over bluetooth or a Wii Remote. Audio, images, and text all work fine.

Installation Instructions

If you are a user who wants to install this, go to the guide here. If you encounter any issues, feel free to pop in our Discord here.

If you don’t want to use Discord for some reason, feel free to open a Github issue.

Having an Issue?

Go to the issues and search for an issue similar to yours. If there are no similar issues, go ahead and make a new one! Fill out as much information as you can.

Development Instructions


Note: Right now, building an NRO file is only supported on systems that you can install devKitPro on. You can still easily test, but you won’t be able to generate a final package.

You should be able to develop on Windows, Mac, and Linux. If you encounter any errors when trying to do that, create an issue.


If you are an experienced developer, try reading through the Dockerfile and the main.yml workflow in the repository to get an idea of how the entire thing is built. If you want step by step instructions, follow along below.


  1. Install LuaRocks
  2. After making sure that LuaRocks is on your path (luarocks --help has output), run the following:
luarocks install moonscript
luarocks install busted
luarocks install alfons
  1. Clone the repository (git clone
  2. cd to the cloned directory (cd VNDS-LOVE)
  3. Install Love2D and make sure it is also on your path.

Run alfons compile to compile the moonscript source to lua.

Run alfons run to run VNDS-LOVE using the installed copy of love.

Run alfons test to run the busted unit tests, which are located in spec


Building binaries requires additional steps. If you are able to run VNDS-LOVE with changes using Love2D, you do not need to build the program. You can submit a Pull Request without building the program. Building is just for distribution.

With that out of the way:

Building for Windows, Mac, and Linux

  1. Try running luarocks install --server= love-release
  2. Install libzip-dev on your OS if the above command fails.
  3. Run alfons build, and the build files should appear in a build folder, including a .love file.

Building for Switch and 3DS

Github Actions is set up to do these builds. If you want to do this locally as well, follow the “Dependencies” instructions on the LovePotion wiki here.

  1. Install lovebrew and make sure you can run lovebrew -h
  2. Create a directory called bin in the root of the project
  3. Download the latest LovePotion release, and save LovePotion.elf in bin/switch.elf.
  4. Run lovebrew in the project directory.

This should output a VNDS-LOVE.nro file in the project root directory to test with.