VWF Cutscene Tool

From SMWiki
Jump to: navigation, search
Variable Width Font Cutscene Tool (cutscene maker)

Use(s): makes cutscenes
Developer(s): Romi
Platform(s): unknown
Latest Version: unknown
License: unknown
Home Page: unknown
Download(s): [1]

The Variable Width Font Cutscene Tool, created by Romi, is a device that allows you to have custom cutscenes in your hack. It's the easiest way to do so; however, actually getting the thing set up and ready for use can be complicated for a beginner.


What it Does

Its namesake comes from the fact that it uses a variable width font (like Arial, the font that this wiki is encoded in) to render text. Specifically, this tool uses the font from Chrono Trigger. Prior to this tool's invention, you had to do a LOT of ExGFX work and work in Lunar Magic to make cutscenes, and this was often more trouble than it was worth. (This tutorial from Jimmy52905 shows the old method of making cutscenes.) But with VWF, all you have to do is make a .TXT file, type text, and know a thing or two about some of the special codes, which are all listed below. There are also a few things you can do with VWF that you can't with other methods.

Setting the Program Up

You need ActivePerl, available here. You also need Romi's version of SpriteTool and a special build of XKAS.

Overwrite the version of XKAS already in the SpriteTool folder with the new version.

Download the VWF tool from SMW Central here. Like with all other files on the Central, it's in .ZIP format, so you'll have to extract the files. Take the "sprites" folder and put its contents into SpriteTool's Sprites folder. Take the files "vwf.bin" and "width.bin" and put those in the main SpriteTool folder. This is what the file tree should look like:

  • SpriteTool:
    • vwf.bin
    • width.bin
    • sprites:
      • vwf.asm
      • vwf.cfg
      • vwf_data1.asm
      • vwf_data1.cfg

It also comes with a file called "ExGFX83.bin", but you don't need to use it. By default, the utility uses tiles 3C and 3D of GFX00 (SP1) for a cursor, which are the tiles that correspond to the "pea springboard" that's stuck on walls (sprites 6B and 6C). The cursor uses Palette 8, and all the ExGFX file does is change those tiles into right and down arrows.


Insert the sprites as you normally would with SpriteTool. You need to dedicate two sprites to this tool: one for vwf.cfg and one for vwf_data1.cfg.

Inside the folder marked "bin", there's a file called "list.txt". This is where you actually insert the cutscenes into your ROM. Type a hexadecimal number from 00-FF, a space, and then the file name of the cutscene you want to insert. Then open the file named "perl.bat". This will create a new "vwf_data1.asm" file that you need to overwrite the previous one with in SpriteTool.

The folder marked "msg" inside the "bin" folder is where the actual messages are. There are several messages already pre-made for you. You should probably look at the one marked "hello_world.txt" just to get a feel of what VWF can do.

To actually activate a cutscene in your hack, you must, in Lunar Magic, dedicate an entire level to it. Hit Ctrl+Delete to clear everything out of the level. In the Palette Editor, use Back Area Color 3 (or if you have a custom palette, set the back area color to pure black (0 red, 0 green, 0 blue)); any other color will cause palette ugliness. Insert both sprites as you normally would, making sure that "Extra Info" = 2 in the Insert Manual dialog (this sprite doesn't use the extra bit). When inserting the sprite you set for vwf_data1.cfg, make sure that the value in the "XY Position" text field is exactly the same as the number you gave to your cutscene in the list.txt file; otherwise, the game could crash!

Now test your hack in your emulator. That should do it! ^^

Markup Codes

If your cutscene just consists of raw text, the game will scroll through the text and then pop you back out to the overworld as if you went offscreen on a "Side Exit Enabled" sprite. So, the following markup codes aren't necessary; however, they can enhance things and help make your cutscene better.

  • [end]: Ends the cutscene. Default value is [end=exit], which acts just like the Side Exit Enabled sprite. [end=goal] activates the normal exit, [end=sgoal] activates the secret exit, and [end=x] will act like an exit-enabled object where X is a level screen number from 0-1F. The cutscene will go to that screen and teleport you to the level or secondary exit you set. Of course, if you didn't set an exit there, you'll go to Level 0 or 100, and that will piss off the SMW Central hack moderators!
  • [wait]: Pauses the cutscene until the player presses B. If you say [wait=x], then instead of waiting for player input, the cutscene will wait X seconds, where X is a decimal number between 0 and 255.
  • [font color=x]: Or "[font colour=x]", if you're of that particular mindset. This command changes the color of the font, which typically is color 1 of Palette 0. X can be 1, 2, or 3; this will change the font color to colors 2, 3, or 4 of Palette 0, respectively. If you nest this inside a [topic] element, then it instead uses colors 5, 6, or 7 of Palette 0, respectively. You must close this command with a [/font colo(u)r] element.
  • [topic]: In the picture at the top of this article, that's the "Lady Gaga", "Katy Perry", "Rihanna", and "Madonna" text. Whatever's inside this element will be rendered in a separate text box that won't scroll with the normal one and appears just above it. Use this to show someone speaking. Like [font color], you need to close it. If you put too much text inside this element, the game crashes. Uses color 5 of Palette 0 by default.
  • [erase]: Erases all text currently on the screen.
  • [music=X]: Changes the music. X is a hexadecimal number. You can only generate a limited amount of your custom music, and you have to add 1 to your custom song's number in order for it to show up properly.
  • [label=X]: Makes a label that other commands can reference.
  • [skip=label]: Goes to the label you defined if the player presses Start. Typically used right before the end to skip an entire cutscene.
  • [sprite]: Puts a sprite in the cutscene.
  • [sprite=erase]: Erases sprites.
  • [branch=label1,label2,label3...labelX]: Lets the player select options from a group. Each option is tied to a label. Every option except for the last one requires a [jump=labelX+1] command at the end.
Personal tools