shithub: zelda3

Download patch

ref: 203a433a66633b726f92393efa42f168c0319755
parent: 29789bd2b1096d5c363c41d0f6eaa0266bffe9a6
author: Snesrev <snesrev@protonmail.com>
date: Thu Sep 29 22:14:22 EDT 2022

Allow bird travel to be cancelled

--- a/config.c
+++ b/config.c
@@ -320,6 +320,8 @@
       return ParseBoolBit(value, &g_config.features0, kFeatures0_CarryMoreRupees);
     } else if (StringEqualsNoCase(key, "MiscBugFixes")) {
       return ParseBoolBit(value, &g_config.features0, kFeatures0_MiscBugFixes);
+    } else if (StringEqualsNoCase(key, "CancelBirdTravel")) {
+      return ParseBoolBit(value, &g_config.features0, kFeatures0_CancelBirdTravel);
     }
   }
   return false;
--- a/features.h
+++ b/features.h
@@ -38,6 +38,8 @@
   kFeatures0_CarryMoreRupees = 2048,
 
   kFeatures0_MiscBugFixes = 4096,
+
+  kFeatures0_CancelBirdTravel = 8192,
 };
 
 #define enhanced_features0 (*(uint32*)(g_ram+0x64c))
--- a/messaging.c
+++ b/messaging.c
@@ -1080,6 +1080,10 @@
 
   if (some_menu_ctr == 0) {
     if ((joypad1L_last | joypad1H_last) & 0xc0) {
+
+      if (enhanced_features0 & kFeatures0_CancelBirdTravel)
+        some_menu_ctr = joypad1L_last;
+
       overworld_map_state++;
       return;
     }
@@ -1121,7 +1125,11 @@
   save_ow_event_info[0x7b] &= ~0x20;
   save_dung_info[267] &= ~0x80;
   save_dung_info[40] &= ~0x100;
-  FluteMenu_LoadTransport();
+
+  // This is kFeatures0_CancelBirdTravel
+  if (!(some_menu_ctr & 0x40))
+    FluteMenu_LoadTransport();
+
   FluteMenu_LoadSelectedScreenPalettes();
   uint8 t = overworld_screen_index & 0xbf;
   DecompressAnimatedOverworldTiles((t == 3 || t == 5 || t == 7) ? 0x58 : 0x5a);
--- a/zelda3.ini
+++ b/zelda3.ini
@@ -76,6 +76,9 @@
 # Enable various zelda bug fixes
 MiscBugFixes = 1
 
+# Allow bird travel to be cancelled
+CancelBirdTravel = 1
+
 [KeyMap]
 # Change what keyboard keys map to the joypad
 # Order: Up, Down, Left, Right, Select, Start, A, B, X, Y, L, R