This patch lets you use VWF text boxes like in some old SNES RPGs. So far, it's rather complicated to use because there is no GUI application to set up text, but the readme is pretty detailed, so you should be alright if you read it carefully.
Most of the changes in version 1.2 were contributed by ExE-Boss via my GitHub.
Version 1.2 changes:
This is now an SA-1 hybrid patch
Completely overhauled the Readme - it now looks nicer and some of the outdated information in it was updated
The patch now uses a coding style that's more in-line with my other patches - most configurable settings are now in vwf_dialogues.cfg
Requires Asar v1.50 or newer.
Requires 33,038 bytes of free RAM. By default, they're mapped to SRAM (a SRAM expansion is applied to the ROM automatically). Requires a variable amount of free space, depending on the amount of text and graphics you insert into your ROM with it. Expect around a full bank of free space to be taken at minimum by average use of this patch.
While mostly everything works well, some issues that warrant removal were found (some even left over from the previous version currently hosted in the site). All issues happen in both normal and SA-1 ROMs, in all major emulators.
> Main removal reason: option cursor doesn't disappear when changing options. Weirdly enough this issue doesn't happen in version 1.01, the one currently hosted.
> Special character function ($F4) doesn't work properly when trying to display character $FF (or $FFFF in 16-bit mode, but that's a silly value as no one would have 256 fonts anyways) - $FF always causes the dialogue to end. Either fix this or state in the Readme that $FF won't work despite using the command. Currently it says it does, and that's not true. This is left over from the older version.
> Instance of wrong pointer in 'vwfmessagepointers.txt':
This causes message $00CF to never be prompted, instead reading $00DF's table when calling $00CF. This is left over from the older version. (I noticed this one year ago by chance while developing MKUCS lol).
> Lastly, there's this which happens only in translucent level modes or levels that manually use similar setups through ASM. After the dialogue closes, the screen gets filled with zeros. That is because of this table:
Setting the $00 to $FC (blank tile) partially solves the problem. However, when the dialogue window closes (assuming a window is drawn) and graphics are reverted, it doesn't get properly erased. But given how the screen can be filled with blank tiles, I'm sure there is a way to work around this issue. I just didn't manage to find the best spot for that. This is also left over from the older version.
Now let's move to other stuff unrelated to removal reasons but worth revising.
> Regarding !bitmode, clarify that instead of 0 or 1, the user can type !8 or !16, as these defines are present in the main ASM file. If the user goes there expecting to see a 0 or an 1, it'll lead to confusion. Same applies to !hijackbox - the user can type !true or !false.
> Warn the user that when using 16-bit mode, commands also need to be 2 bytes long (e.g. db $FA,$FF becomes dw $FFFA,$FFFF), and that plain writing text in quotations as regularly done in 8-bit mode will not work, as they always have to specify the font for each character. This, or maybe provide a 16-bit compatible table for characters and incsrc it depending on !bitmode using an 'if' conditional, also telling the user to use 'dw "text here"' instead of 'db "text here"'.
> Setup Teleport: you can change the 'w' in db %----w-s- to 'm', as it can send the player to the midway entrance when the level is configured to use separate settings for midway entrance, also explaining this behavior. It triggers water level if that's not configured or if warping to a secondary entrance, however.
> Still regarding Setup Teleport: if there are no plans on implementing support for the #$0200+ secondary entrances, please state so as well.
> State that when a text box is cleared, and the text palette (not the color itself) was modified, the default palette is restored. So if the user wants the text to keep using the current palette, the palette command has to be reused. Alternatively, if the user wants the palette to be restored, there's no need to do it manually.
> Warn about compatibility issues with SMB3 Status Bar (gives garbage) and Minimalist Status Bars (flashes the whole screen during dialogue transitions). The patch is, however, compatible with Kaijyuu's Super Status Bar.
> Correct several typos.
> Personally, I'd prefer to keep all configurable defines from 'vwf_dialogues.cfg' inside the main ASM file. This way, the user doesn't have to open a different file (extension) in a text editor just to look and edit defines.
> Add defines for what button to press to advance dialogues, and what controller data address to use. I always wondered why this never was a thing when I used it in some projects, and that's relatively easy and simple to do (for us ASMers).
> Add an option for a RAM flag check that, if set, instantly terminates a dialogue if one is active. One can then have a simple uberASM code that determines a button to set this flag, for example. *Maybe* this could also help fix issues related to dying or teleporting while a dialogue is active to some extent. It'd be nicer if a skip dialogue feature was built-in, in fact (e.g. player presses Start and dialogue is terminated if a certain bitflag in the header is set).