diff --git a/docs/vwf/manual/index.xhtml b/docs/vwf/manual/index.xhtml
index 187dc35..cb20458 100644
--- a/docs/vwf/manual/index.xhtml
+++ b/docs/vwf/manual/index.xhtml
@@ -2606,6 +2606,12 @@ endif
This happens because the SMB3 Status Bar patch uses an HDMA effect to modify the layer 3 scroll offsets on certain scanlines, which stays active even while a dialogue is open. To eliminate this issue, change the !vwf_enable_smb3_status_bar_layer_3_hdma_fix_hack
setting in vwfconfig.cfg
to true
. Alternatively, changing the !vwf_main_dma_channel_sa1
setting to 0
will also eliminate the issue, since VWF Dialogues now use the same channel for their DMA transfers as the SMB3 Status Bar patch uses for its HDMA effect. However, this might cause some (currently unknown) side effects, so it's recommended to use the !vwf_enable_smb3_status_bar_layer_3_hdma_fix_hack
solution instead.
+
Remove Status Bar
+
+ VWF Dialogues and Remove Status Bar share a hijack at location $008275
. If you patch VWF Dialogues before Remove Status Bar, text boxes will glitch up the screen as demonstrated here:
+
+ In order to make VWF Dialogues work, the patch needs to be applied after Remove Status Bar. This alone seems to already produce the intended behavior, however, certain code in the Remove Status Bar patch will never be called in this case. To work around this issue, you can change the !vwf_enable_remove_status_bar_compatibility_fix_hack
setting in vwfconfig.cfg
to true
, which will make the VWF Dialogues patch execute Remove Status Bar's missing code.
+
The following patches have a few compatibility quirks which can be easily worked around:
@@ -2701,7 +2707,7 @@ endif
- Added the
rgb_15_from_24()
and rgb_15_from_f()
helper functions.
- Implemented shared headers, which provide a means of reusing message headers, reducing the size of a message in the process.
- Added a version of
vwfsharedroutines.asm
that's compatible with Asar 1.81 and can be used with NPCs v4.3.
- - Improved compatibility with several status bar replacement patches. Super Status Bar and Sprite Status Bar are confirmed to work out of the box. DKCR Styled Sprite Status Bar also works out of the box and no longer requires its VWF Dialogues compatibility mode to be enabled. SMB3 Status Bar and Minimalist Status Bars both work out of the box, but produce some graphical glitches that can be eliminated by tweaking certain settings in
vwfconfig.cfg
. See section Compatibility With Other Patches for further information.
+ - Improved compatibility with several status bar replacement patches. Super Status Bar and Sprite Status Bar are confirmed to work out of the box. DKCR Styled Sprite Status Bar also works out of the box and no longer requires its VWF Dialogues compatibility mode to be enabled. SMB3 Status Bar and Minimalist Status Bars both work out of the box, but produce some graphical glitches that can be eliminated by tweaking certain settings in
vwfconfig.cfg
. Remove Status Bar requires a compatibility setting and needs to be patched before VWF Dialogues. See section Compatibility With Other Patches for further information.
diff --git a/docs/vwf/manual/screenshots/status-bar-compat-4.png b/docs/vwf/manual/screenshots/status-bar-compat-4.png
new file mode 100644
index 0000000..9639c1d
Binary files /dev/null and b/docs/vwf/manual/screenshots/status-bar-compat-4.png differ
diff --git a/patches/vwf_dialogues/data/smw/data/vwfconfig.cfg b/patches/vwf_dialogues/data/smw/data/vwfconfig.cfg
index bdb902a..ad2652f 100644
--- a/patches/vwf_dialogues/data/smw/data/vwfconfig.cfg
+++ b/patches/vwf_dialogues/data/smw/data/vwfconfig.cfg
@@ -101,6 +101,11 @@
; is open.
!vwf_enable_smb3_status_bar_layer_3_hdma_fix_hack ?= false
+; Change this setting to true when using the Remove Status Bar patch. Make sure to patch VWF Dialogues
+; AFTER Remove Status Bar. Never change this setting to true when not using the Remove Status Bar patch,
+; as it will almost certainly crash your ROM.
+!vwf_enable_remove_status_bar_compatibility_fix_hack ?= false
+
; DMA channel to use for DMA transfers in the patch (0 to 7).
; You only really need need to change these if you're getting conflicts with HDMA effects
; in other patches.
diff --git a/patches/vwf_dialogues/patch_config.py b/patches/vwf_dialogues/patch_config.py
index 840e449..9ae4f15 100644
--- a/patches/vwf_dialogues/patch_config.py
+++ b/patches/vwf_dialogues/patch_config.py
@@ -89,7 +89,7 @@ def main() -> None:
patch_config.actions.append(patching_utility.InsertCustomPalette(os.path.join(os.path.dirname(__file__), 'testing/compatibility/dkcr_sprite_status_bar/paletteF.pal'), 105))
patch_config.actions.append(patching_utility.InsertCustomPalette(os.path.join(os.path.dirname(__file__), 'testing/compatibility/dkcr_sprite_status_bar/paletteF.pal'), 106))
elif compatibility_test == 'nuke':
- patch_config.actions.append(patching_utility.Patch(os.path.join(os.path.dirname(__file__), 'testing/compatibility/nuke_statusbar/nuke_statusbar.asm')))
+ patch_config.actions.insert(0, patching_utility.Patch(os.path.join(os.path.dirname(__file__), 'testing/compatibility/nuke_statusbar/nuke_statusbar.asm')))
patcher.create_rom(patch_config, options)
diff --git a/patches/vwf_dialogues/vwf_dialogues.asm b/patches/vwf_dialogues/vwf_dialogues.asm
index 9ff8989..5c5ef36 100644
--- a/patches/vwf_dialogues/vwf_dialogues.asm
+++ b/patches/vwf_dialogues/vwf_dialogues.asm
@@ -797,7 +797,11 @@ NMIHijack:
tax
lda.l .NMITable,x
bne .SpecialNMI ; If NMITable = $00 load regular NMI
+if !vwf_enable_remove_status_bar_compatibility_fix_hack != false
+ jml remap_rom($008C81)
+else
jml remap_rom($008292)
+endif
.SpecialNMI
cmp.b #$02