summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Remove-Warp-Fadescreen.md37
1 files changed, 37 insertions, 0 deletions
diff --git a/Remove-Warp-Fadescreen.md b/Remove-Warp-Fadescreen.md
new file mode 100644
index 0000000..dc26d4b
--- /dev/null
+++ b/Remove-Warp-Fadescreen.md
@@ -0,0 +1,37 @@
+## Remove Warp Fadescreen
+
+credits to ghoulslash
+
+There might come a day where you want to fade the screen to black in a script and play a fanfare, print a message, or do something else, and immediately warp. If you try this in vanilla emerald, the screen will fade FROM black, and then back TO black. Instead, let's create a flag that removes the fadescreen part of the warp script commands and we can do something like this:
+
+
+### 1. Define a flag
+
+Add or replace a flag with `FLAG_REMOVE_WARP_FADE` in `include/constants/flags.h`
+
+### 2. Give the flag a purpose
+
+1) Find `WarpFadeOutScreen` in [field_screen_effect.c](../blob/master/src/field_screen_effect.c#L102) and replace the entire function with:
+
+
+```c
+void WarpFadeOutScreen(void)
+{
+ u8 currentMapType = GetCurrentMapType();
+ if (!FlagGet(FLAG_REMOVE_WARP_FADE)) // fadescreen if flag not set
+ {
+ switch (GetMapPairFadeToType(currentMapType, GetDestinationWarpMapHeader()->mapType))
+ {
+ case 0:
+ FadeScreen(FADE_TO_BLACK, 0);
+ break;
+ case 1:
+ FadeScreen(FADE_TO_WHITE, 0);
+ }
+ }
+ else
+ {
+ FlagClear(FLAG_REMOVE_WARP_FADE); // reset flag internally
+ }
+}
+``` \ No newline at end of file