+++ /dev/null
-======================================================
-======================================================
-
-Script format documentation (VNDC and VNDS)
-
-======================================================
-======================================================
-
-Contents.
- 1a. bgload
- 2b. choice
- 3c. cleartext
- 4d. delay
- 5e. if and fi
- 6f. goto and label
- 7g. jump
- 8h. music
- 9i. random
- 10j. setimg
- 11k. setvar and gsetvar
- 12l. sound
- 13m. text
- 14n. debug commands
- 14n1. help
- 14n2. resume
- 14n3. quit
- 14n4. save
- 15o. Save format
-
-= 1a. ================================================
-
-bgload sets a background image.
-
-bgload takes two arguments, one of which is optional.
-
- bgload bg [fadeout]
-
-The parameter 'bg' should be a file in backgrounds.
-
-The second parameter, 'fadeout', should be a length
-in frames to fade into the new background.
-
-NOTE: fadeout is currently ignored in the current
-version.
-
-The game always operates at 60fps.
-
-= 2b. ================================================
-
-choice presents choices to the user on screen.
-
- choice ch1|ch2|ch3...
-
-Each choice is separated by a '|' (pipe) character.
-The result of the choice is stored into a variable
-named 'selected', which can be queried with if.
-
-Optionally, I implement an extension of this form:
-
- choice ch1|ch2|... >var
-
-Instead of storing to selected, 'var' will be used
-instead.
-
-= 3c. ================================================
-
-cleartext clears all of the text on-screen.
-
- cleartext [mod]
-
-A modifier can be specified with mod. This is supposed to
-be fadeout or something. It isn't documented for vnds.
-
-Strangely, this command does not actually appear in the
-conversion of fate-stay night or any other weaboo.nl
-onverters. It's likely unused.
-
-NOTE: mod is ignored, due to lack of docs on what is
-actually supposed to do.
-
-= 4d. ================================================
-
-delay will sit around and wait a certain number of
-frames.
-
- delay frames
-
-'frames' is the number of frames to delay. Again, we
-operate at 60fps.
-
-= 5e. ================================================
-
-Technically, two commands. if and fi are used for
-execution control. if the result of if is true,
-all statements are executed until a matching fi.
-
- if var op val
-
-'var' is a variable name. This can be a setvar, choice
-etc.
-
-op should be one of the following:
-
- < - less than
- <= - less than or equal
- == - equal
- != - not equal
- >= - more than or equal
- > - more than
-
-I have no clue how many of these VNDS implements, but
-vndc implements them all.
-
- - - -
-
-fi simply ends an if statement.
-
- fi
-
-Note that vndc is a bit smarter than vnds here. if and fi
-CAN be embedded. So this is valid:
-
- if selected == 2
- if previous >= 5
- text 'You win!'
- fi
- if previous <= 5
- text 'You lose!'
- fi
- fi
-
-The behavior of VNDS would be to 'if previous <= 5' on
-failure of selected == 2 This is really not proper:
-vnds just jumps. I keep an if-count instead of
-an in-if bool value, so the result is as expected.
-
-= 6f. ================================================
-
-goto finds a label and continues execution from
-there.
-
- goto label
-
-In vndc, label is actually non-existent as a script
-command. Instead, goto triggers a rewind and seek for
-the label within the current file.
-
-= 7g. ================================================
-
-jump transfers control to another script file:
-
- jump script
-
-My implementation provides an extra form of jump:
-
- jump script [line]
-
-Which goes directly to line in the file. This
-is utilized mainly for saving. As such, this extension
-cannot be disabled. Unfortunately, this allows a vnds
-game to detect the use of vndc as the interpreter.
-
-= 8h. ================================================
-
-music loads a audio file from sound, and plays it in
-a loop as music.
-
- music file
-
-You can pass '~' as file to stop playing music
-like so:
-
- music ~
-
-= 9i. ================================================
-
-random saves a random number to a variable.
-
- random var low high
-
-low and high are the range the random number is in,
-inclusive.
-
-= 10j. ===============================================
-
-setimg displays an image from foreground at a
-position specified.
-
- setimage file x y
-
-Note that coordinates are based on the Nintendo DS;
-if you have a 640x480 display, you do not use 320 0
-to display at the middle for example.
-
-= 11k. ===============================================
-
-setvar and gsetvar are used to set variables. gsetvar
-specifically sets the 'global' state, that is, common
-to all saves.
-
-In the current state of the code, there's no difference
-between the two due to lack of multiple save support.
-
-Thus, gsetvar just calls setvar.
-
- [g]setvar var mod value
-
-'mod' can be one of the following:
-
- = Set var to value
- + Add value to var
- - Subtract value from var
-
-Also, if value is not specified, you can also do this
-as the mod:
-
- ~ Reset to 0.
-
-One more thing that was not all over the place in
-vnds, but typically at the beginning.
-
- setvar ~ ~
-
-Which means reset all vars. This ignores globals -
-e.g. prefixed with a lowercase 'g'.
-
-As well, my extension provides the ability to set
-a variable to another variable.
-
- [g]setvar var op var2
-
-Again, this only works in extensions mode.
-
-= 12l. ===============================================
-
-sound plays a sound, and optionally a number of times.
-
- sound file [times]
-
-times is implicitly 1 if not specified. Pass -1 for
-infinity.
-
-You can do
-
- sound ~
-
-To stop all playing sounds.
-
-Zero results in no sound being played.
-
-= 13m. ===============================================
-
-text is the meaty huge function. It outputs text,
-as you probably expect.
-
- text This is text dee doo...
-
-There are a bunch of variants with special meaning.
-I don't know why, but there are:
-
- text - (no params) Clear screen
- text ! - Wait for input and clear all.
- text ~ - Clears all text (like cleartext)
- text @... - Don't wait for click after text
- is spit.
-
-I've implemented a few extensions that help generally
-with NVL games.
-
- --- - At the beginning of a line,
- clears before text output.
-
- " - In the sound function -
- if lookahead finds a text
- with quotes, it's assumed
- that sound is a voice and
- linked to the text. AKA
- smart voice stopping.
-
- This is heuristic and can
- get it wrong.
-
-= 14n. ===============================================
-
-I've implemented a few debug commands to help out
-and just generally be useful (cheats? :P)
-
-Make sure you start up with the -b parameter, and
-start it from a console. Send vndc a SIGINT (^C).
-
-The console should now prompt you with this;
- [scr command] $
-
-You can enter any command above; Some won't work
-right. choice, if, and jump probably won't work
-properly for their own reasons.
-
-No commands run in this state will advance the
-program, but flags set will affect it.
-
-= 14n1. ==============================================
-
-help will print everything available.
-
-= 14n2. ==============================================
-
-resume (renamed from stop) will disable debugging
-and kill the console. You can SIGINT again at any
-point to come back to the debug state.
-
-= 14n3. ==============================================
-
-quit sets the quit state - it's equivalent to ESC in
-the form of a console command.
-
-= 14n4. ==============================================
-
-save will save to a mandatory file specified;
-
- save file
-
-See section 15 for info on what the a save
-actually is.
-
-= 15o. ===============================================
-
-Saves are actually a script generated by the save
-function. So, for example, this is a save:
-
- setvar selected = 2
- music bgm03.ogg
- bgload qmrtb.jpg
- jump fate01-00.scr 261
-
-It restores any variables needed, loads the current
-music and bg, and jumps to the location we were
-previously at in the script.
-
-Saves should be loaded with the -s parameter until
-I get better gui stuff in place.