From e1f85efbef1eed79a60782cee10a4b30faa89f40 Mon Sep 17 00:00:00 2001 From: aerinon Date: Wed, 13 Apr 2022 13:31:47 -0600 Subject: [PATCH 1/6] Fixes for overworld_map map mode --- Main.py | 2 +- RELEASENOTES.md | 3 +++ Rom.py | 11 ++++++++--- data/base2current.bps | Bin 82182 -> 86427 bytes 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Main.py b/Main.py index 22c73a50..913f79a8 100644 --- a/Main.py +++ b/Main.py @@ -31,7 +31,7 @@ from Utils import output_path, parse_player_names from source.item.FillUtil import create_item_pool_config, massage_item_pool, district_item_pool_config -__version__ = '1.0.0.2-u' +__version__ = '1.0.0.3-u' from source.classes.BabelFish import BabelFish diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 67394d00..9a86fec7 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -114,6 +114,9 @@ Same as above but both small keys and bigs keys of the dungeon are not allowed o ## Notes and Bug Fixes +* 1.0.0.3 + * overworld_map=map mode fixed. Location of dungeons with maps are not shown until map is retrieved. (Dungeon that do not have map like Castle Tower are simply never shown) + * Aga2 completion on overworld_map now tied to boss defeat flag instead of pyramid hole being opened (fast ganon fix) * 1.0.0.2 * Include 1.0.1 fixes * District hint rework diff --git a/Rom.py b/Rom.py index ed4c208a..4f219949 100644 --- a/Rom.py +++ b/Rom.py @@ -32,7 +32,7 @@ from source.classes.SFX import randomize_sfx JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '4e4d7c1352c6b85dfe0d3f19aa2afae2' +RANDOMIZERBASEHASH = '7f28f440ac83d3ddca458dfc64e87978' class JsonRom(object): @@ -1412,8 +1412,13 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False): for idx, x_map in enumerate(x_map_position_generic): rom.write_bytes(0x53df6+idx*2, int16_as_bytes(x_map)) rom.write_bytes(0x53e16+idx*2, int16_as_bytes(0xFC0)) - if world.compassshuffle[player] and world.overworld_map[player] == 'compass': - compass_mode |= 0x40 # compasses are wild + if world.overworld_map[player] == 'compass': + compass_mode |= 0x20 # check for compass + if world.compassshuffle[player]: + compass_mode |= 0x40 # compasses are wild + elif world.overworld_map[player] == 'map': + if world.mapshuffle[player]: + compass_mode |= 0x40 # maps are wild for dungeon, portal_list in dungeon_portals.items(): ow_map_index = dungeon_table[dungeon].map_index if len(portal_list) == 1: diff --git a/data/base2current.bps b/data/base2current.bps index bb57b114eaec0c3e0c86bda2e555fbd90e5c7614..57aa7d1d9fd0839bb5c7e696ba8c3e41a007119f 100644 GIT binary patch delta 18500 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 Tf!>#QKmmsc&{Hc#^oN|&=w!C2 delta 14098 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%0DW<6>=JPuUm#o?Jjzjkt9 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 YUbbcPkBog1USQvqqV4GS`0Td-18E*c-~a#s From c7de8dad79d3897ceb969cfe53bee86ef1c1c427 Mon Sep 17 00:00:00 2001 From: aerinon Date: Wed, 13 Apr 2022 14:27:45 -0600 Subject: [PATCH 2/6] Minor bug in dungeon_only algoithm (also affected fallback grouping in major_only and vanilla) --- RELEASENOTES.md | 1 + source/item/FillUtil.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 9a86fec7..4a9de8b2 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -117,6 +117,7 @@ Same as above but both small keys and bigs keys of the dungeon are not allowed o * 1.0.0.3 * overworld_map=map mode fixed. Location of dungeons with maps are not shown until map is retrieved. (Dungeon that do not have map like Castle Tower are simply never shown) * Aga2 completion on overworld_map now tied to boss defeat flag instead of pyramid hole being opened (fast ganon fix) + * Minor issue in dungeon_only algorithm fixed (minorly affected major_only keyshuffle and vanilla fallbacks) * 1.0.0.2 * Include 1.0.1 fixes * District hint rework diff --git a/source/item/FillUtil.py b/source/item/FillUtil.py index 170d3a13..a716fbd8 100644 --- a/source/item/FillUtil.py +++ b/source/item/FillUtil.py @@ -699,7 +699,7 @@ mode_grouping = { 'Sewers - Dark Cross', 'Desert Palace - Torch', 'Tower of Hera - Basement Cage', 'Castle Tower - Room 03', 'Castle Tower - Dark Maze', 'Palace of Darkness - Stalfos Basement', 'Palace of Darkness - Dark Basement - Right', - 'Palace of Darkness - Dark Maze - Bottom', 'Palace of Darkness - Shooter Room', + 'Palace of Darkness - Harmless Hellway', 'Palace of Darkness - Shooter Room', 'Palace of Darkness - The Arena - Bridge', 'Palace of Darkness - The Arena - Ledge', "Thieves' Town - Blind's Cell", 'Skull Woods - Bridge Room', 'Ice Palace - Spike Room', 'Skull Woods - Pot Prison', 'Skull Woods - Pinball Room', 'Misery Mire - Spike Chest', From 606148bdbebf1a1067f59d456ee38611bec0cf87 Mon Sep 17 00:00:00 2001 From: aerinon Date: Tue, 19 Apr 2022 14:34:44 -0600 Subject: [PATCH 3/6] Minor map feature --- data/base2current.bps | Bin 86427 -> 86436 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/base2current.bps b/data/base2current.bps index 57aa7d1d9fd0839bb5c7e696ba8c3e41a007119f..139e9b03e655c8aaa67576c99f3084222e06094b 100644 GIT binary patch delta 282 zcmV+#0pot>;*;MDG=HIXz6#0z@K(QfvVws| zngoHBKKj~<3aXO=fPol~FMy570q_uy9Ds^tfQy&zhJpH$MV^`946p-CEx^(ws;%0o z0FNM4e;~ubkR*>CfRzaWk04ZkmU(=h;m`@croIaB3{1emzoxzl&;v}s!5{&`kP4F; zf`I~)f{RUnm6M4L8v#O-r44K>0m6_SfE~Y%CmaDXsyEP;VYOr3>*2A5Z}kPfmq7A$y!y-2T0fH2Sn gXh}eT0cdNb8Bjr2eP{lJ>HD?*IS* delta 242 zcmVot>+LPZ5G(drOvVws|ngoHBKKj~< z3aXRxff$b;fQ`uk@DPs-fQn^+fp+$Sf%=j~o|)hbumemjz|thDt=g#ok04ZkAiI-X z4I2`;!M~=y3eW>gxWOR#!H^1*3X_QqBmp{;t_^G~`N5DKfE~Y*2A4;(nGUiz s794nky-2T0fH2SnXh}eT0cdNb8 Date: Tue, 19 Apr 2022 14:40:27 -0600 Subject: [PATCH 4/6] Documentation update --- RELEASENOTES.md | 2 +- Rom.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 4a9de8b2..d6e8ebaf 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -57,7 +57,7 @@ These districts are chosen at random and then filled with major items. If a loca In entrance shuffle, what is shuffled to the entrances is considered instead of where the interior was originally. For example, if Blind's Hut is shuffled to the Dam, then the 5 chests in Blind's Hut are part of Central Hyrule instead of Kakariko. -Bombos Table, Lake Hylia Island, Bumper Cave Ledge, the Floating Island, Cave 45, the Graveyard Cave, Checkerboard Cave and Mimic Cave are considered part of the dark world region that you mirror from to get there (except in inverted where these are only accessible in the Light World). Note that Spectacle Rock is always part of light Death Mountain. +Note: Bombos Tablet, Lake Hylia Island, Bumper Cave Ledge, the Floating Island, Cave 45, the Graveyard Cave, Checkerboard Cave and Mimic Cave are considered part of the light world region rather than the dark world region you mirror from. In multiworld, the districts chosen apply to all players. diff --git a/Rom.py b/Rom.py index 4f219949..46231dd8 100644 --- a/Rom.py +++ b/Rom.py @@ -32,7 +32,7 @@ from source.classes.SFX import randomize_sfx JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '7f28f440ac83d3ddca458dfc64e87978' +RANDOMIZERBASEHASH = '02967596217f7cae048e4fbf727762d8' class JsonRom(object): From abf57e02557cb68399d3e774be326c6bc5dcbea2 Mon Sep 17 00:00:00 2001 From: aerinon Date: Wed, 20 Apr 2022 09:08:55 -0600 Subject: [PATCH 5/6] Fix for a map bug (link not shown when eastern prize is) --- Rom.py | 2 +- data/base2current.bps | Bin 86436 -> 86438 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Rom.py b/Rom.py index 46231dd8..ca416cbb 100644 --- a/Rom.py +++ b/Rom.py @@ -32,7 +32,7 @@ from source.classes.SFX import randomize_sfx JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '02967596217f7cae048e4fbf727762d8' +RANDOMIZERBASEHASH = 'a2dddb51072556881537dadd7e461c3d' class JsonRom(object): diff --git a/data/base2current.bps b/data/base2current.bps index 139e9b03e655c8aaa67576c99f3084222e06094b..d8e7300e8b0b6587aa5a356b81554e9f96296217 100644 GIT binary patch delta 277 zcmV+w0qXvwqXnj;1+X~*1X_Kig0npVoC^j3!H@$?Xj~sxCWq^y9?uNDc+UOuI#roh3umemjz|v}pt=g#ok04Zk zAjFeg4I4MX!M~=y3eW>g!NDK`!jKA+9D;!YlY)y+fR*rk$pX+8n?`^sfCk_Luxx+` z;0my2-~*6izeAI*4Qwm|!jK(+9lw^o3h)=&zfi&os=s9OejgO{e)>OM!U~raJBpRB zJAg3oIhzubMh-y|P?d>qfG}_@fq_U&orQn~mszu!4zf5FE_j2zNUutOFwg~PNkD)B bXltb#mmz~;N4H@|0Xqr^CwJ#kp%H2x{Xutp delta 275 zcmV+u0qp*!qXnd+1+X~*1dM!hgR?yWoC^m3z>ot>;*;MDJ3>~!cd~+kMw$eHl|K5~ ziVCWe0)T-Sk1v3Y$pP>Xj~sxCWq^y9?uLQ-l0}}G;0&+>OfA6DB&x02sQ`~4RDU4D zlU@xQH^9NaroIZ$15CidAOXUV3X>XwfdZ3)i%o!)@O;Sv&=#9SfGL0m-~+I1fC%6U zux8)`kYc|=lduhJECIrh9e^Fbmc9z`7uvs1!V0RtWb=L>6!d=jKU~5JmlHdRm9IO1 zFz`8>5R*s_K@wDziEw~0a4dm=NKBoDfCiUWvzrdGI2J5;gS|+vN`NrX1!ze?fB|T0 Zr5l$YgJVaxV@Cly3J6zpuB85`1(FJXcbfnJ From 86128c76ff72f996aaea085666dc3080b77b256c Mon Sep 17 00:00:00 2001 From: aerinon Date: Tue, 8 Mar 2022 08:47:25 -0700 Subject: [PATCH 6/6] Add major_only algorithm to code --- BaseClasses.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index b79af29d..8df66c3f 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -2727,8 +2727,12 @@ e_dmg = {"default": 0, "shuffled": 1, "random": 2} # byte 8: RRAA A??? (restrict boss mode, algorithm, ? = unused) rb_mode = {"none": 0, "mapcompass": 1, "dungeon": 2} -# algorithm: todo with "biased shuffles" -algo_mode = {"balanced": 0, "equitable": 1, "vanilla_fill": 2, "dungeon_only": 3, "district": 4} +# algorithm: +algo_mode = {"balanced": 0, "equitable": 1, "vanilla_fill": 2, "dungeon_only": 3, "district": 4, 'major_only': 5} +boss_mode = {"none": 0, "simple": 1, "full": 2, "chaos": 3, 'random': 3, 'unique': 4} + + +# byte 10: settings_version # additions # psuedoboots does not effect code