Glitch de fuite du combat contre Ganon

Revision as of 09:04, 25 June 2022 by Echocolat (talk | contribs) (Created page with "==== Le patch cassé de Nintendo ====")
Other languages:

L'Escape Ganon glitch est un glitch qui permet à Link de garder l'Arc de lumière, mais qui laisse le jeu dans un état étrange avec de nombreux effets secondaires bizarres. Pour rendre les choses encore plus déroutantes, les effets exacts diffèrent suivant la version du jeu.

Cet article documente les effets du glitch et essaie d'expliquer quelques uns des effets secondaires.

Effets

Restrictions sur la sauvegarde, la téléportation, passer le temps et l'entrée des sanctuaires

C'est bien connu qu'il est impossible de sauvegarde ou se téléporter lorsque l'on combat Ganon le Fléau ou Ganon, Créature Maléfique. Cependant, cet état ne persiste pas à travers les chargements de sauvegarde normalement. Alors pourquoi sauvegarder ou se téléporter est impossible même après avoir chargé une autre sauvegarde ?

C'est parce que le flag LastBossGanonBeastGenerateFlag, qui est initialisé juste avant que Link soit téléporté dans la Plaine d'Hyrule pour affronter Ganon, Créature Maléfique. Il est utilisé pour faire apparaître Ganon, Créature Maléfique, comme le nom l'indique; cependant un effet secondaire est qu'à chaque fois qu'une sauvegarde avec ce flag d'activé est chargé, le jeu initialise automatiquement les flags SaveProhibition, WarpProhibition, KillTimeProhibition et EnterDungeonProhibition. Ces flags font exactement ce que dit leur nom: bloquer la sauvegarde, la téléportation, empêcher de passer le temps et d'entrer dans les sanctuaires.

Il est possible de se débarrasser de ces restrictions en commençant n'importe quel évènement qui finit par appeler l'évènement Common<EnableSaveAndWarp> (ou active ces flags manuellement). C'est parce que ces flags sont utilisés durant tout le jeu pour empêcher de se téléporter, sauvegarder, etc. Généralement, les joueurs utilisent le mini-jeu de pari dans le village d'Écaraille pour réactiver les sauvegardes, auto-sauvegardes, téléportations, feux de camp, terminaux de sanctuaire.

Animations étranges juste après un temps de chargement

Demo025_0 (qui est jouée chaque fois que Link est spawné dans Hyrule) vérifie le flag IsPlayed_Demo146_0. Si il est actif, l'action du joueur Demo_AccelerateHorse est appelée. Ce qui explique pourquoi Link fait une drôle d'animation au moment où le joueur charge une sauvegarde qui a été faite après avoir fui le combat contre Ganon.

Lunes de sang

Comme c'est expliqué dans les articles sur le système de Temps et WorldMgr, LastBossGanonBeastGenerateFlag empêche la cinématique de la Lune de sang d'être déclenchée à minuit. Cependant, le timer de la Lune de sang avance toujours et les Lunes de sang sont prévues comme d'habitude, ce qui explique pourquoi des particules de rancoeur apparaissent toujours avant de disparaître d'un seul coup.

Malheureusement, rien ne désactive le flag LastBossGanonBeastGenerateFlag donc il n'est pas possible d'obtenir des Lunes de sang de façon naturelle. La seule façon d'obtenir une Lune de sang est d'avancer le temps manuellement en dormant ou attendant auprès d'un feu de camp, comme aucun des flags empêchant la Lune de sang sont vérifiés quand le joueur exécute ces actions. Sûrement un oubli.

Ennemis, sanctuaires, PNJ, etc. manquants

C'est l'effet le plus flagrant. Après avoir fait le glitch, les sanctuaires, la plupart des PNJ et ennemis, et les tours, ne spawnent plus qu'en partie voire pas du tout.

Ceci est expliqué par une faille dans le code de Placement. La logique de spawn exacte est telle qu'elle suit:

Si:

  • [1.0.0-1.2.0] FirstInHyruleCastleBossRoom est activé
  • [1.3.0+] FirstInHyruleCastleBossRoom ou IsPlayed_Demo145_0 est activé.

et si un objet de la carte:

  • n'est pas Enemy_GanonBeast et son nom de profil[1] est Enemy, GelEnemy, SandWorm (sic), Prey, Dragon ou Guardian, ou contient NPC (NPC, DemoNPC...)
  • ou est exactement appelé Enemy_Guardian_A
  • ou a Entrance ou WarpPoint ou Terminal dans son nom de configuration d'unité

alors il n'apparaît pas.

De plus, si cet objet apparaît à un groupe de placement (autrement dit, si il est lié à d'autres objets de la carte dans la map unit), ce groupe entier n'apparaît pas.

Explication

Ceci explique pourquoi les PNJ, la plupart des ennemis et des sanctuaires n'apparaissent pas après s'être échappé du combat -- ils sont spécifiquement exclus.

C'est aussi pour ça que les tours ont l'air bizarres -- elles sont toujours liées à FldObj_DownloadTerminal_A_01 (Terminal de téléchargement de la carte Sheikah) et DgnObj_WarpPoint_A_01 (le cercle sur lequel Link apparaît quand il se téléporte), donc la majorité des objets de carte qui constituent une Tour Sheikah n'apparaissent donc pas non plus. C'est un effet secondaire de la supression des sanctuaires.

De façon similaire, l'intérieur des sanctuaires est invisible parce que le modèle du sanctuaire entier est un unique objet lié au moine Sheikah du sanctuaire, qui est un PNJ.

De plus, ceci évèle pourquoi le Pont Suspendu de Digdo est invisible après avoir déclenché la cinématique du boss final: les objets de carte sont appelés FldObj_RockBridgeGerudoEntrance_A_01, et à cause l'énorme liste noire de Nintendo concernant les noms d'objets, les ponts sont finissent pas ne pas pouvoir apparaître.

D'ailleurs, la seule et unique raison pour laquelle les Moldarquors apparaissent est parce qu'un développeur a fait une faute de frappe. Le profil des Moldarquors est censé être Sandworm, pas SandWorm!

Le patch cassé de Nintendo

FirstInHyruleCastleBossRoom is set when the player triggers the final boss sequence in the castle sanctum. On the other hand, IsPlayed_Demo145_0 is set after Calamity Ganon ("incomplete Ganon") dies.

So why does 1.3.0 check IsPlayed_Demo145_0 in addition to FirstInHyruleCastleBossRoom?

This is because Nintendo changed some save data in 1.2.0 in an attempt to patch a closely related glitch: since 1.2.0, the FirstInHyruleCastleBossRoom flag is not loaded from or written to save files anymore. Therefore, to ensure that FirstInHyruleCastleBossRoom always has the correct value, they must now rely on a different endgame flag, and they chose IsPlayed_Demo145_0 for this purpose.

Astute readers will notice that 1.2.0 is the version on which reloading a save causes NPCs, shrines and other excluded actors to reappear. This is simply because a save reload on 1.2.0 and any newer version causes FirstInHyruleCastleBossRoom to be reset to its default value (false), so on 1.2.0 none of that special spawning logic is used.

1.3.0 is the first version on which this trick doesn't work anymore because IsPlayed_Demo145_0 is always saved and loaded properly. Master Mode, Trial of the Sword, dying, killing Ganon, dying, etc. all have no effects. The only way to get out of this state is to reset the flag, and unfortunately, there is nothing the player can do to reset IsPlayed flags.

Runes (amiibo, Master Cycle Zero)

Just like other parts of the game, the amiibo and Master Cycle Zero runes use IsPlayed_Demo flags to decide whether rune usage should be restricted. So let's start with a list of relevant Demo cutscenes and their descriptions (translated + Nintendo's internal official description in Japanese):

  • Demo141_0: Hyrule Castle Citadel - Windblight Ganon Appears ハイラル城本丸・カースガノン(風)登場
  • Demo141_1: Hyrule Castle Citadel - Fireblight Ganon Appears ハイラル城本丸・カースガノン(火)登場
  • Demo141_2: Hyrule Castle Citadel - Thunderblight Ganon Appears ハイラル城本丸・カースガノン(雷)登場
  • Demo141_3: Hyrule Castle Citadel - Waterblight Ganon Appears ハイラル城本丸・カースガノン(水)登場
  • Demo142_0: Hyrule Castle Citadel - Ganon's Incomplete Form Appears ハイラル城本丸・不完全体ガノン登場
  • Demo143_4: Hyrule Castle Citadel · Divine Beast Beam Bullet ハイラル城本丸・神獣ビーム着弾
  • Demo145_0: Hyrule Castle Citadel · Ganon's Incomplete Form Dies ハイラル城本丸・不完全体ガノン死亡
  • Demo146_0: Hyrule Field - Beast Ganon Appears ハイラル平原・魔獣ガノン登場

For the amiibo rune, if Demo146_0, Demo141_{0,1,2,3} or Demo142_0 have been played, the player cannot use amiibo.

The Master Cycle Zero checks are slightly different (and it's very obvious they copy-pasted the amiibo code…):

  • If Demo146_0 has been played, the player is explicitly allowed to use the motorcycle.
  • If Demo141_{0,1,2,3} or Demo142_0 have been played, they cannot use the motorcycle.
  • Otherwise, Link can use the motorcycle if he is not on the main map. So he can spawn it in the Trial of the Sword after escaping the Ganon fight.

EX Quests

If Demo146_0 has been played, the EX Trial of the Sword and Champion's Ballad quests will not start. Nintendo explicitly checks the flag in both cases.

Bow of Light and Master Sword

LastBossGanonBeastGenerateFlag also controls the Bow of Light static spawn. Additionally, the Master Sword will always be in its powered up form ("true form") as long as this flag is set.

Divine Beast lasers and ancient pillars

IsPlayed_Demo145_0 being set enables "final boss mode" in effect code. The only significant effect is that the divine beast lasers are disabled.

IsPlayed_Demo147_0 (sealing Ganon cutscene) makes malice disappear and the ancient pillars around Hyrule Castle glow blue.

Instant teleport back to Calamity

Similarly to LastBossGanonBeastGenerateFlag, LastBossIncompleteGanonGenerateFlag is set right before entering the Calamity Ganon fight to make him spawn and unset as soon as he's defeated.

This flag results in a strange side effect. Every frame, if this flag is set, and if Link's Y coordinate is lower than 170.0, Link is warped back to (-254.0, 191.0, -1026.0).

The Bird-Man minigame escape exploit

The Bird-Man minigame can also be used to escape Ganon. That exploit is the reason why keeping the Bow of Light and still being able to play the game normally was possible on 1.2.0.

The way it works is that you start the minigame and then trigger the Calamity Ganon cutscene by landing in the castle sanctum. As soon as the cutscene finishes, the minigame ends and Link has now successfully escaped Ganon, with all of the aforementioned endgame flags still set.

In versions up to 1.1.2, this causes serious breakage as most of those end-game flags are written to save files (including FirstInHyruleCastleBossRoom).

Someone made a video about it and Nintendo apparently thought the glitch was serious enough to warrant a special patch.

Nintendo's fix

The simple and easy fix would have been to just not spawn the Calamity trigger while the minigame is active, but that's not how they decided to patch it.

Because they knew about the effects of the FirstInHyruleCastleBossRoom flag, they changed GameData configuration to not save that flag, so NPCs, shrines, enemies and towers wouldn't disappear even after doing the glitch.

They also edited the birdman minigame event (MiniGame_HillTower_BirdMan) to always manually reset some effects of landing in the castle sanctum:

  • An event was added to the landing event to warp the player back to the tower (-1746.71, 329.065, -772.847)… except the player is already being warped to the same exact coordinates in the original code. They might have wanted to be _extra sure_ the warp would work.
  • When landing, the IsPlayed_Demo141_{0,1,2,3} and LastBossIncompleteGanonGenerateFlag flags are manually cleared. Yes, they forgot to clear any other flag such as IsPlayed_Demo145_0 that may have been set.
  • While the minigame is active, the FirstInHyruleCastleBossRoom flag is cleared every frame.

It's as hacky as it sounds, and unsurprisingly it led to the 1.2.0 spawn glitch and required them to make yet another patch in 1.3.0.

References

  1. Il y a différents types d'acteurs (entités) dans BotW. Les profils sont des sortes de catégories qui permettent à Nintendo de réutiliser le même code en interne, pour des acteurs différents mais très similaires.