diff --git a/RandomizerCore/Resources/Patches/extDefinitions.event b/RandomizerCore/Resources/Patches/extDefinitions.event index 2ee195c..2dce87d 100644 --- a/RandomizerCore/Resources/Patches/extDefinitions.event +++ b/RandomizerCore/Resources/Patches/extDefinitions.event @@ -1,3 +1,5 @@ +#define requirementPrizeItem 0x52 +#define requirementPrizeSub 0x1D #define fusionScrap00 0xF3 #define fusionScrap01 0xF3 #define fusionScrap02 0xF3 @@ -16,164 +18,210 @@ #define fusionScrap0F 0xF3 #define fusionScrap10 0xF3 #define fusionScrap11 0xF3 -#define walletShopItem 0x6F +#define walletShopItem 0x6D #define walletShopSub 0x00 -#define boomerangShopItem 0x63 +#define boomerangShopItem 0x55 #define boomerangShopSub 0x00 #define quiverShopItem 0x63 #define quiverShopSub 0x00 -#define dogShopItem 0x05 +#define bombBagShopItem 0x54 +#define bombBagShopSub 0x00 +#define dogShopItem 0x5D #define dogShopSub 0x00 -#define goron1LeftItem 0x56 +#define goron1LeftItem 0x57 #define goron1LeftSub 0x00 -#define goron1MiddleItem 0x58 +#define goron1MiddleItem 0x6E #define goron1MiddleSub 0x00 -#define goron1RightItem 0x6D +#define goron1RightItem 0x58 #define goron1RightSub 0x00 -#define goron2LeftItem 0x6E +#define goron2LeftItem 0x6F #define goron2LeftSub 0x00 -#define goron2MiddleItem 0x54 +#define goron2MiddleItem 0x57 #define goron2MiddleSub 0x00 -#define goron2RightItem 0x5E +#define goron2RightItem 0x6D #define goron2RightSub 0x00 -#define goron3LeftItem 0x6C +#define goron3LeftItem 0x57 #define goron3LeftSub 0x00 -#define goron3MiddleItem 0x58 +#define goron3MiddleItem 0x55 #define goron3MiddleSub 0x00 -#define goron3RightItem 0x5F +#define goron3RightItem 0x54 #define goron3RightSub 0x00 -#define goron4LeftItem 0x57 +#define goron4LeftItem 0x5F #define goron4LeftSub 0x00 -#define goron4MiddleItem 0x56 +#define goron4MiddleItem 0x59 #define goron4MiddleSub 0x00 -#define goron4RightItem 0x59 +#define goron4RightItem 0x6E #define goron4RightSub 0x00 -#define goron5LeftItem 0x6E +#define goron5LeftItem 0x6F #define goron5LeftSub 0x00 -#define goron5MiddleItem 0x57 +#define goron5MiddleItem 0x55 #define goron5MiddleSub 0x00 -#define goron5RightItem 0x6C +#define goron5RightItem 0x5D #define goron5RightSub 0x00 -#define swiftblade1DojoItem 0x05 +#define swiftblade1DojoItem 0x46 #define swiftblade1DojoSub 0x00 -#define swiftblade2DojoItem 0x15 +#define swiftblade2DojoItem 0x63 #define swiftblade2DojoSub 0x00 -#define swiftblade3DojoItem 0x59 +#define swiftblade3DojoItem 0x55 #define swiftblade3DojoSub 0x00 -#define swiftblade4DojoItem 0x6E +#define swiftblade4DojoItem 0x5E #define swiftblade4DojoSub 0x00 -#define carlovSpotItem 0x4E +#define carlovSpotItem 0x66 #define carlovSpotSub 0x00 -#define redBookItem 0x6C +#define redBookItem 0x37 #define redBookSub 0x00 -#define greenBookItem 0x6F +#define greenBookItem 0x63 #define greenBookSub 0x00 -#define greatbladeDojoItem 0x6D +#define greatbladeDojoItem 0x5E #define greatbladeDojoSub 0x00 -#define golden5Item 0x56 +#define golden5Item 0x6D #define golden5Sub 0x00 -#define grimbladeDojoItem 0x57 +#define grimbladeDojoItem 0x56 #define grimbladeDojoSub 0x00 +#define DumDHCENT11 0xF0 +#define DumDHCENT12 0x07 +#define DumDHCENT21 0xF0 +#define DumDHCENT22 0x08 #define golden4Item 0x55 #define golden4Sub 0x00 -#define splitbladeDojoItem 0x56 +#define splitbladeDojoItem 0x5F #define splitbladeDojoSub 0x00 #define DumToDENT 0xF0 #define DumToDENT2 0x04 -#define wavebladeDojoItem 0x55 +#define wavebladeDojoItem 0x5E #define wavebladeDojoSub 0x00 -#define blueBookItem 0x05 -#define blueBookSub 0x04 -#define golden8Item 0x6F +#define blueBookItem 0x63 +#define blueBookSub 0x00 +#define golden8Item 0x57 #define golden8Sub 0x00 #define DumDWSENT 0xF0 #define DumDWSENT2 0x01 -#define bottleScrubItem 0x58 +#define bottleScrubItem 0x5D #define bottleScrubSub 0x00 -#define golden9Item 0x58 +#define golden9Item 0x54 #define golden9Sub 0x00 -#define golden2Item 0x58 +#define golden2Item 0x6F #define golden2Sub 0x00 -#define golden7Item 0x55 +#define golden7Item 0x59 #define golden7Sub 0x00 -#define gripScrubItem 0x56 +#define gripScrubItem 0x65 #define gripScrubSub 0x00 -#define graybladeDojoItem 0x6E +#define graybladeDojoItem 0x64 #define graybladeDojoSub 0x00 #define DumCoFENT 0xF0 #define DumCoFENT2 0x02 -#define golden3Item 0x58 +#define golden3Item 0x59 #define golden3Sub 0x00 -#define scarbladeDojoItem 0x58 +#define scarbladeDojoItem 0x56 #define scarbladeDojoSub 0x00 -#define swiftbladeIDojoItem 0x57 +#define swiftbladeIDojoItem 0x55 #define swiftbladeIDojoSub 0x00 -#define golden1Item 0x58 +#define golden1Item 0x5D #define golden1Sub 0x00 #define DumFoWENT 0xF0 #define DumFoWENT2 0x03 #define DumRCENT 0xF0 #define DumRCENT2 0x05 -#define golden6Item 0x58 +#define golden6Item 0x6F #define golden6Sub 0x00 +#define biggoronItem 0x56 +#define biggoronSub 0x00 #define DumPoWENT 0xF0 #define DumPoWENT2 0x06 -#define chuContainerItem 0x6D +#define chuContainerItem 0x3D #define chuContainerSub 0x00 -#define gleerokContainerItem 0x5F -#define gleerokContainerSub 0x00 -#define fowLeftItem 0x58 +#define gleerokContainerItem 0x50 +#define gleerokContainerSub 0x19 +#define fowLeftItem 0x57 #define fowLeftSub 0x00 -#define fowRightItem 0x63 +#define fowRightItem 0x13 #define fowRightSub 0x00 -#define mazaalContainerItem 0x53 -#define mazaalContainerSub 0x1A +#define mazaalContainerItem 0x5D +#define mazaalContainerSub 0x00 #define DumToD1 0xF2 -#define DumToD12 0x0A +#define DumToD12 0x0B #define DumToD2 0xF2 -#define DumToD22 0x0B -#define octoContainerItem 0x6C -#define octoContainerSub 0x00 -#define gyorgContainerItem 0x59 +#define DumToD22 0x0A +#define octoContainerItem 0x53 +#define octoContainerSub 0x1B +#define gyorgContainerItem 0x5B #define gyorgContainerSub 0x00 -#define pedestalSpot1Item 0x55 -#define pedestalSpot1Sub 0x00 +#define pedestalSpot1Item 0x05 +#define pedestalSpot1Sub 0x04 #define pedestalSpot2Item 0x59 #define pedestalSpot2Sub 0x00 -#define pedestalSpot3Item 0x6F +#define pedestalSpot3Item 0x62 #define pedestalSpot3Sub 0x00 -#define customRNG 0x712F50F5 -#define versionNumber 0x00070017 -#define versionNumbers 0x00070017 +#define customRNG 0x3E4AF96D +#define versionNumber 0x010000FF +#define versionNumbers 0x010000FF #define TUNIC_COLORED #define TUNIC_COLOR_DARKEST 0x15E2 #define TUNIC_COLOR_DARK 0x1688 #define TUNIC_COLOR_MAIN 0x07E2 #define TUNIC_COLOR_LIGHT 0x53F7 #define heartscolor -#define heartFillR (0x095F & 0x1F) -#define heartFillG (0x095F >> 5) & 0x1F -#define heartFillB (0x095F >> 10) & 0x1F +#define heartFillR (0x195F & 0x1F) +#define heartFillG ((0x195F >> 5) & 0x1F) +#define heartFillB ((0x195F >> 10) & 0x1F) +#define heartEdgeR (0x7FFF & 0x1F) +#define heartEdgeG ((0x7FFF >> 5) & 0x1F) +#define heartEdgeB ((0x7FFF >> 10) & 0x1F) #define lowHealthBeep 90 #define barcolor #define splitFirst 0x0FE9 #define splitThird 0x0E66 #define splitFourth 0x0D46 +#define guaranteedBarlov #define instantText #define historyOption 0x180 #define allowHomewarp #define itemsCanCollectItems -#define windCrestLake -#define mCA0 0x00 -#define mCA7 0xD0 +#define crenelCrest 0x00 +#define fallsCrest 0x00 +#define cloudCrest 0x00 +#define townCrest 0x08 +#define lakeCrest 0x10 +#define swampCrest 0x00 +#define southCrest 0x00 +#define minishCrest 0x00 +#define dwsBluePortal 0x00 +#define dwsRedPortal 0x00 +#define cofBluePortal 0x00 +#define cofRedPortal 0x00 +#define fowBluePortal 0x00 +#define fowRedPortal 0x00 +#define todBluePortal 0x00 +#define todRedPortal 0x00 +#define powBluePortal 0x00 +#define powRedPortal 0x00 +#define dhcBluePortal 0x00 +#define dhcRedPortal 0x00 +#define specialPots +#define kinstonePots +#define kinstoneDig +#define kinstoneWater +#define lakeHPWater +#define todKeyWater #define mC81 0x00 +#define kinstoneMultiplierGoldCloud 1 +#define kinstoneMultiplierGoldSwamp 1 +#define kinstoneMultiplierGoldFalls 1 +#define mCBF 0x00 #define noRedFusions +#define kinstoneMultiplierRedW 0 +#define kinstoneMultiplierRedV 0 +#define kinstoneMultiplierRedE 0 #define mC83 0x00 #define mC84 0x00 #define noBlueFusions +#define kinstoneMultiplierBlueL 0 +#define kinstoneMultiplierBlueS 0 #define mC86 0x00 -#define mCD2 0x00 #define noGreenFusions +#define kinstoneMultiplierGreenC 0 +#define kinstoneMultiplierGreenG 0 +#define kinstoneMultiplierGreenP 0 #define mC88 0x00 #define mC89 0x00 #define mC8A 0x00 @@ -182,24 +230,31 @@ #define mC8D 0x00 #define mC82 0x00 #define mC85 0x00 -#define mCD1 0x00 #define mC87 0x00 -#define nokeasy #define bootsOnL +#define goalHintNutOrElement #define ocarinaOnSelect #define removeFickleness #define alwaysSkipFusionCutscene 0 #define skipFusionCutsceneShowMap 0 #define disableKinstoneDrops #define disableShellDrops -#define enable_firerod 1 -#define enable_firerod_start 1 +#define bookTraps #define heartTraps -#define requirementSwordTier 0 -#define requirementElementsAmmount 0 -#define noDHC +#define requirementSwordTier 5 +#define requirementSwordName5 +#define requirementElementsAmount 4 +#define requirementPrize +#define openDHC +#define pedestalItems #define seededSharedFusions -#define cuccoSkippedLevels 9 +#define keyMultiplierDWS 1 +#define keyMultiplierCOF 1 +#define keyMultiplierFOW 1 +#define keyMultiplierTOD 1 +#define keyMultiplierRC 1 +#define keyMultiplierPOW 1 +#define keyMultiplierDHC 1 #define goronMerchantCustomSets 0 -#define seedHashed 0x6BEA61A9 -#define settingHash 0xA6A9BB69 +#define seedHashed 0x6F346F64 +#define settingHash 0x03D6784A diff --git a/RandomizerCore/Resources/Patches/goalHint.event b/RandomizerCore/Resources/Patches/goalHint.event index 2075371..0d84fcf 100644 --- a/RandomizerCore/Resources/Patches/goalHint.event +++ b/RandomizerCore/Resources/Patches/goalHint.event @@ -84,13 +84,21 @@ String("You need to"); BYTE 0x0A #ifdef requirementFigurinesAmount String("collect enough figurines and"); BYTE 0x0A #endif -#ifdef noDHC - String("pull the pedestal.") +#ifdef vaatiWarp + String("pull the pedestal and"); BYTE 0x0A; String("defeat Vaati in sanctuary."); BYTE 0x0A; #else - #ifdef openDHC - String("defeat Vaati.") + #ifdef openPed + String("pull the pedestal in DHC.") #else - String("pull the pedestal and defeat Vaati.") + #ifdef noDHC + String("pull the pedestal in sanctuary.") + #else + #ifdef openDHC + String("defeat Vaati in DHC.") + #else + String("pull the pedestal and"); BYTE 0x0A; String("defeat Vaati in DHC."); BYTE 0x0A; + #endif + #endif #endif #endif #ifdef requirementPrize diff --git a/RandomizerCore/Resources/Patches/newGame.event b/RandomizerCore/Resources/Patches/newGame.event index 4e1e28e..08208a9 100644 --- a/RandomizerCore/Resources/Patches/newGame.event +++ b/RandomizerCore/Resources/Patches/newGame.event @@ -24,6 +24,7 @@ POIN fastBombArrow; WORD 0x2002B4D 1 POIN kinstoneBag; WORD 0x2002B4B 1 POIN fusionFlags; WORD 0x2002C81 13 POIN startingFlags; WORD 0x2002C9C 116 +POIN dhcGuards; WORD 0x2002DB4 1 POIN dungeonPortal; WORD 0x2002EBD 6 #ifndef requirementFigurinesAmount POIN figurines; WORD 0x2002B0E 18 @@ -570,6 +571,9 @@ BYTE 0x40 //remove the messages when picking shells for the first time fusionFlags: BYTE mC81 mC82 mC83 mC84 mC85 mC86 mC87 mC88 mC89 mC8A mC8B mC8C mC8D +dhcGuards: +BYTE 0x02 // move the dhc guards out of the way of the south entrance + kinstoneBag: BYTE 0x40 @@ -1191,6 +1195,7 @@ BYTE 0x10 cuccoGame: BYTE ( (cuccoSkippedLevels << 3) | (cuccoHeartPieceFlag << 7) ) + startingFlags: // 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F /*0x2002C9C*/ BYTE 0x00 0x00 0x38 0xC0 diff --git a/RandomizerCore/Resources/Patches/pedestal.event b/RandomizerCore/Resources/Patches/pedestal.event index d66a28c..8bc8c65 100644 --- a/RandomizerCore/Resources/Patches/pedestal.event +++ b/RandomizerCore/Resources/Patches/pedestal.event @@ -4,10 +4,19 @@ #endif #endif +#ifdef openPed + #ifndef openDHC + #define openDHC + #endif +#endif + #ifdef openDHC #ifdef noDHC #undef noDHC #endif + + // Remove the check for already watched the stained glass cutscene so that it's repeatable + PUSH; ORG $4EB12; BYTE 0 0 0 0 0 0 0 0 0 0; POP #endif #ifdef noDHC @@ -58,7 +67,7 @@ PUSH; ORG $F4A9C; BYTE 0xFF; ORG $F4C18; POIN $F4AAC; POP//sanctuary switches do //remove wind element from pedestal animation PUSH; ORG $13EDC; POIN $670402; POP -#ifndef noDHC +#ifndef pedGoal //remove the stained glass scene PUSH; ORG $532F6; SHORT 0x2310; POP #else diff --git a/RandomizerCore/Resources/default.logic b/RandomizerCore/Resources/default.logic index bf4e42e..b7f2961 100644 --- a/RandomizerCore/Resources/default.logic +++ b/RandomizerCore/Resources/default.logic @@ -106,7 +106,7 @@ !dropdown - Main Settings - Setting - Dungeon Settings - DUNGEON - NonElement Dungeons - NonElement Dungeons, This setting is disabled when 'Shuffle Elements' is set to 'Any Dungeon', 'Any Region' or 'Anywhere' or when 'Dungeons Required' is higher than the number of Elements placed. - NONE - Standard - NONE - 'Standard': NonElement Dungeons have no special rules. - Unrequired - UNREQ - 'Unrequired': NonElement Dungeons do not have items required to beat the game. - Barren - BARREN - 'Barren': NonElement Dungeons only contain junk items. - Regions Unrequired - UNREQSUR - 'Regions Unrequired': NonElement Dungeons and their Regions do not contain items needed to beat the game. - Regions Barren - BARRENSUR - 'Regions Barren': NonElement Dungeons and their Regions only contain junk items. \n\nDWS Region: 'Minish Village', 'Belari's House', 'Chest near Belari', 'Minish Cave near Belari'.\nCoF Region: 'Melari's Mines', 'Melari's Mines Outside Path', 'Pre Melari Block Puzzle Chest'.\nFOW Region: 'Wind Ruins'.\nTOD Region: 'Nothing'.\nRC Region: 'Graveyard (Not Dampe)'.\nPOW Region: If Red Fusions are Removed: 'Wind Tribe', Otherwise: 'Upper Wind Tribe'. !flag - Main Settings - Setting - Dungeon Settings - DHC_BARREN - DHC is Barren - If enabled will completely fill the interior of Dark Hyrule Castle with junk aside from dungeon items that have to be placed in there because of the dungeon item settings.\n\nFor technical reasons, dungeon items that are allowed to be placed outside of DHC (and its region) will always be placed outside DHC. Also, setting dungeon items to 'Own Region' will make the corresponding DHC items behave like in 'Own Dungeon'. -!dropdown - Main Settings - Setting - Requirements - DHC_SETTING - Dark Hyrule Castle Opens - Dark Hyrule Castle is the last dungeon in the game, it has the final boss Vaati. - OPENDHC - Never Open - NODHC - 'Never Open': A barrier is placed at the front of the dungeon, The game ends when you visit the sanctuary after completing all the requirements. - Never, Vaati Warp - FASTVAATI - 'Never, Vaati Warp': A barrier is placed in front of the dungeon, The transition from pedestal to the stained glass room instead takes you straight to Vaati. The game ends when you defeat Vaati. - After Requirements - NORMALDHC - 'After Requirements': A barrier is placed at the front of the dungeon, This barrier is removed when you visit the sanctuary after completing ALL the requirements. The game ends when you defeat Vaati. - Always Open - OPENDHC - 'Always Open': There is no barrier at the front of the dungeon, the game ends when you defeat Vaati. +!dropdown - Main Settings - Setting - Requirements - DHC_SETTING - Dark Hyrule Castle Opens - Dark Hyrule Castle is the last dungeon in the game, it has the final boss Vaati. - OPENDHC - Never Open - NODHC - 'Never Open': A barrier is placed at the front of the dungeon, The game ends when you visit the sanctuary after completing all the requirements. - Never, Vaati Warp - FASTVAATI - 'Never, Vaati Warp': A barrier is placed in front of the dungeon, The transition from pedestal to the stained glass room instead takes you straight to Vaati. The game ends when you defeat Vaati. - After Requirements - NORMALDHC - 'After Requirements': A barrier is placed at the front of the dungeon, This barrier is removed when you visit the sanctuary after completing ALL the requirements. The game ends when you defeat Vaati. - Always Open - OPENDHC - 'Always Open': There is no barrier at the front of the dungeon, the game ends when you defeat Vaati. - Open + Ped - OPENPED - 'Open + Ped': There is no barrier at the front of the dungeon, The game ends when you visit the sanctuary after completing all the requirements. !dropdown - Main Settings - Setting - Requirements - REQUIREMENT_ITEM - Requirement Reward - An item that the player receives once they meet the selected requirements. - REQUIREMENT_ITEM_DHC_BK - Disabled - REQUIREMENT_ITEM_NONE - 'Disabled': No extra item is awarded for requirement completion. - DHC Big Key - REQUIREMENT_ITEM_DHC_BK - 'DHC Big Key': The DHC Big Key is instantly awarded to the player once they meet the selected requirements. Overrides whatever the general Big Key setting is. - Random Item - REQUIREMENT_ITEM_RANDOM - 'Random Item': An item from the random item pool is instantly awarded to the player once they meet the selected requirements. !dropdown - Main Settings - Setting - Requirements - AD_PED - Dungeons Required - The number of dungeons that have to be beaten to activate the Sanctuary. \nIf you select a number of dungeons higher that what are available given the other settings chosen, then this will be lowered to the total number of accessible dungeons. \nThere are 6 dungeons in the game that count:\nDeepwood Shrine\nCave of Flames\nFortress of Winds\nTemple of Droplets\nRoyal Crypt\nPalace of Winds - AD_PED_0 - 0 - AD_PED_0 - - 1 - AD_PED_1 - - 2 - AD_PED_2 - - 3 - AD_PED_3 - - 4 - AD_PED_4 - - 5 - AD_PED_5 - - 6 - AD_PED_6 - !dropdown - Main Settings - Setting - Requirements - SWORD_SETTING - Sword Requirement - The level of sword that needs to be collected to activate the Sanctuary - 5SWORD - No Sword - 0SWORD - - Smith Sword - 1SWORD - - Green Sword - 2SWORD - - Red Sword - 3SWORD - - Blue Sword - 4SWORD - - Four Sword - 5SWORD - @@ -3760,6 +3760,15 @@ GotSwords; Helper; ; `GOTSWORDS` All_Requirements_Met; `ALLREQUIREMENTS`; requirementPrizeItem:Define:FirstByte, requirementPrizeSub:Define:SecondByte; Helpers.GotSwords `GOTELEMENTS` `DHC_FIG` `DHC_AD`; `REQREWARD` +!ifdef - OPENPED + AccessDHC; Helper;; + !define - DHCBK - Items.Rupee5 + !define - OPENDHC + !undefine - PED_ITEMS + !eventdefine - openPed + !eventdefine - pedGoal +!endif + !ifdef - OPENDHC AccessDHC; Helper;; !eventdefine - openDHC @@ -3768,6 +3777,7 @@ All_Requirements_Met; `ALLREQUIREMENTS`; requirementPrizeItem:Define:FirstByte, !undefine - PED_ITEMS !ifdef - NODHC !eventdefine - noDHC + !eventdefine - pedGoal !endif !endif !ifdef - PED_ITEMS