Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

VN3DS

From GameBrew
Revision as of 13:37, 6 September 2021 by HydeWing (talk | contribs) (Text replacement - "Infobox 3DS homebrew" to "Infobox-3DS-Homebrews")

Template:Infobox-3DS-Homebrews

VN3DS

VNDS is a syntax created for the purpose of playing visual novel games on multiple devices. Dozens of popular visual novels such as Fate Stay Night, Ever 17, Saya no Uta have been converted to be VNDS compatible and thus, when this is completed, will be 3DS compatible.

What's done:

Text, cleartext, label/goto, delay, jump, setvar, gsetvar, save/load, "CPU bgload" "CPU setimg", choice selection, IF/FI, random

what's not done
Music/sound (ogg loading in LPP is a W.I.P. Crashes quite often right now and been disabled)
Fadetime
Start/End colored text

This is what if/fi conditionals look like in a very conditional heavy scene of Ever 17. Can't even imagine how someone managed to do this in VNDS. Looks like nonsense.

Quoted from IF/FI:

text I was trying to decide which area of the park to visit first.

setvar v_d0 = 1
setvar v_d1 = 1
setvar v_d2 = 1
label L00000221
if v_d0 != 0
goto L00000260
fi
if v_d1 != 0
goto L00000260
fi
if v_d2 == 0
goto L000006a3
fi
label L00000260
if v_d0 != 0
if v_d1 != 0
if v_d2 != 0
choice The Dolphin Merry-go-round|The so++uvenir shop|The Security Office
if selected == 1
setvar selected2 = 0
fi
if selected == 2
setvar selected2 = 1
fi
if selected == 3
setvar selected2 = 2
fi
goto CL1
fi
fi
fi
if v_d0 == 0
if v_d1 != 0
if v_d2 != 0
choice The souvenir shop|The Security Office
if selected == 1
setvar selected2 = 1
fi
if selected == 2
setvar selected2 = 2
fi
goto CL1
fi
fi
fi
if v_d0 != 0
if v_d1 == 0
if v_d2 != 0
choice The Dolphin Merry-go-round|The Security Office
if selected == 1
setvar selected2 = 0
fi
if selected == 2
setvar selected2 = 2
fi
goto CL1
fi
fi
fi
if v_d0 == 0
if v_d1 == 0
if v_d2 != 0
choice The Security Office
if selected == 1
setvar selected2 = 2
fi
goto CL1
fi
fi
fi
if v_d0 != 0
if v_d1 != 0
if v_d2 == 0
choice The Dolphin Merry-go-round|The souvenir shop
if selected == 1
setvar selected2 = 0
fi
if selected == 2
setvar selected2 = 1
fi
goto CL1
fi
fi
fi
if v_d0 == 0
if v_d1 != 0
if v_d2 == 0
choice The souvenir shop
if selected == 1
setvar selected2 = 1
fi
goto CL1
fi
fi
fi
if v_d0 != 0
if v_d1 == 0
if v_d2 == 0
choice The Dolphin Merry-go-round
if selected == 1
setvar selected2 = 0
fi
goto CL1
fi
fi
fi
if v_d0 == 0
if v_d1 == 0
if v_d2 == 0
text ERROR: All choice options are deactivated

setvar selected = 0
goto CL1
fi
fi
fi
label CL1
setvar v_b3 = selected2
if v_b3 == 0
goto L0000028a
fi
if v_b3 == 1
goto L00000508
fi
if v_b3 == 2
goto L0000062a
fi
label L0000028a
setvar v_d0 = 0
bgload bg02a2.jpg
text I headed to the room with the attractions.

Click to expand...

Future plans.

Automatic unzipping of .novel and .zip assets.

Clean up all the awful programming.

GPU rendering to allow imagescaling. VNDS has been widely adopted on Android and other devices with higher res screens than the DS's 256x192. What this means is that newer VNDS ports in some cases aren't actually compatible with DS. This would fix that.

This is actually a feature of later LPP commites, only problem is that LPP has problems with GPU rendering JPGs currently. Thinking of on the fly converting the JPGs via CPU into BMP and then GPU rendering and storing the newly converted BMP version. Wonder if that would work... Or just wait for LPP to support GPU JPGS.
Attached ZIP of latest build of LPP 3ds/3dsx/elf, and the index.lua script which goes on the root of the SD. Obviously I can't distribute the VNs with it so you'd need one of those and it's hardcoded to open /vnds/Saya/script.s02.txt so you'd need to change that. Because there's no GPU scaling you'd need to batch resize all the assets down to 3DS size (mine are at 320x24)
IDK. Maybe someone smart could help me with the IF/FI thing. This really isn't meant to be playable. Without if/fi support it actually can't get past the main menu. It can display pretty much the whole game, just not make it through the main menu and conditionally move through the script.

Advertising: