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: + Screenshot + 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:

    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