Android VNDS Interpreter v1.6.0

A pretty large update this time. Probably most notable are some interface changes. The novel selection screen has the buttons at the bottom moved to the action bar on devices that have it. The text log is now also full-screen instead of filling only the same 4:3 rectangle as the VN. I’ve also made a proper startup splash screen instead of just using a progress dialog.

I’ve also integrated some user suggestions: The search hardware button can now be used to advance text, the soft menu button becomes completely invisible in landscape mode or on devices with a physical menu key and the time spent reading a VN is now visible on its preferences screen.

Additionally, I’ve tweaked some things for today’s higher-performance devices. On high-res displays, coordinate rounding to integers has been disabled and texture downscaling uses bilinear instead of nearest-neighbor.


– Changed how SD card detection works, now browses /mnt
– Text log now fills the whole screen
– Soft menu button is now invisible (but functional) in landscape by default
– Added playtime counter to prefs screen
– Added preference for min. number of lines to show in the textbox
– Hardware search button will now advance text
– Use higher quality texture filtering (bilinear) on high-res displays
– Better init screen
– Improved performance when 2+ sprites visible

Android VNDS Interpreter v1.5.9

Just a small bugfix release. I changed the novel selection screen to show larger icons when holding the device in landscape orientation, primarily for the benefits of tablets and other large screen devices.


– Added /mnt/extsd to the default novel search path
– Novel selection screen now uses larger icons in landscape mode.
– Higher resolution “New Slot” image for the save screen.
– Tried to reduce unnecessary progress popups.
– Last word jittering between lines should be fixed.
– Fixed NPE when save folder exists but unreadable.
– Disabling auto mode removes “auto” text properly now when text speed=instant.

Android VNDS Interpreter v1.5.8

I’ve added pages to the save/load screen, you now get 10 pages with 10 save slots each. This should fix the crashes some people were having when using 20+ save slots. It also provides a little bit of structure to the saves (for example, you could use a different page for each route).


– Added pages to the save/load screen. 100 save slots should be enough, right?
– Improved look of textlog

Android VNDS Interpreter v1.5.7

Auto read should be working properly now, even in edge cases. I didn’t write a post for v1.5.6, but I decided to finally request the permission required to keep the screen on even when there’s no user input. When you add auto read, it suddenly becomes extremely important.

I’m working on a better save/load screen that scales better to 20+ saves without having to scroll through a giant list. Probably something paginated with a fixed number of save slots per page, though I haven’t picked a final design yet.


– Fixed auto read blocking forever on lines that don’t fit entirely on the screen


– Added a wake lock to keep the screen from turning off when idling.

– Bug in internal function could cause sprites to not show up.

Android VNDS Interpreter v1.5.5

– Added an auto read function.
– Added an optional list view for the save screen.
– Target SDK increased to 16 (Android 4.1)

– Return to title causes the textSpeed preference to be ignored until reopening
  the preferences screen.
– ANSI color escape codes were being parsed, but not stripped from the string.

Android VNDS Interpreter v1.5

I haven’t really posted about this since the first release. It’s interesting to see how much has changed in just over a year (several new Android OS releases, for one). Very little code is Android-specific, so dealing with new OS releases is usally not a problem. That is, until suddenly the pysical menu button disappears and is replaced by an icon in the (hidden) title bar and there’s no way to access the menu…

Anyway, about the 1.5 update. The most noticeable change is the new text fade-in. Enabling it required a bit of optimization in the text rendering, and a whole bunch of rewriting of the text display code (probably the most complex part of the app). The tricky bit is doing the text layout only once (for the full text), then rendering only the first N characters (or making all characters after N invisible, ha).

I you encounter a bug, the fastest way to get it fixed is by contacting me via email.

– Implemented text fade-in, see “Text Speed” preference.
– Added an on-screen indication of when superskip is on.
– Sped up font rendering by using the built-in shadow style instead of rendering
the shadow manually (by drawing the same layout twice with a different
– Decreased memory allocations for smoother animations
– Action Bar on Android 3.0+ devices can take up too much vertical space. On
small-screen devices it now auto hides (see “On-Screen Menu” preference).
– Decreased save file size (ImageTexture accidentally serialized its pixels)
– If a VNDS format global.sav exists, its contents are used as defaults. Some
VNs use gloval.sav to pre-unlock routes.

– Skipmode didn’t skip animations fully when effect speed < 1
– Wait for any animations to finish before showing a choice popup.
– When in a VN, volume keys change music volume even when no music is playing
– Music unpaused on the lock screen, not only after dismissing it.
– Clock didn’t try to move out of the way of the textbox.

To download, scan the above QR code with a barcode scanner or search for “VNDS Interpreter” in the Android market.

Android VNDS Interpreter v1.0

My phone was dying of old age, so I got myself a shiny new Android phone to replace it. After playing around with the API’s for a few days I couldn’t resist making a simplistic visual novel engine. But what use is an engine without games? Well, bolting a VNDS compatibility layer on top was pretty easy.

The only major bug that I’m aware of is that some sound effects don’t work due to unsupported codecs. For ADPCM compressed sounds the codec is simple to implement in software, just a lot of work. Aside from ADPCM, a few AAC files simply refuse to play and at this time I don’t know why.

I you encounter a bug, the fastest way to get it fixed is by contacting me via email.

To download, scan the above QR code with a barcode scanner or search for “VNDS Interpreter” in the Android market.