From da80fd45e419da1034e8dba8ea0b5939d21cd84b Mon Sep 17 00:00:00 2001 From: aerinon Date: Mon, 11 Mar 2024 16:49:43 -0600 Subject: [PATCH 1/5] fix(owg+hmg): eg allowed to be armed --- Rom.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Rom.py b/Rom.py index 471ac8f7..97b4e401 100644 --- a/Rom.py +++ b/Rom.py @@ -571,7 +571,7 @@ def patch_rom(world, rom, player, team, is_mystery=False): dr_flags |= DROptions.OriginalPalettes if world.experimental[player]: dr_flags |= DROptions.DarkWorld_Spawns - if world.logic[player] != 'nologic': + if world.logic[player] not in ['owglitches', 'hybridglitches', 'nologic']: dr_flags |= DROptions.Fix_EG if world.door_type_mode[player] in ['big', 'all', 'chaos']: dr_flags |= DROptions.BigKeyDoor_Shuffle @@ -1299,10 +1299,10 @@ def patch_rom(world, rom, player, team, is_mystery=False): digging_game_rng = random.randint(1, 30) # set rng for digging game rom.write_byte(0x180020, digging_game_rng) rom.write_byte(0xEFD95, digging_game_rng) - rom.write_byte(0x1800A3, 0x01) # enable correct world setting behaviour after agahnim kills - rom.write_byte(0x1800A4, 0x01 if world.logic[player] != 'nologic' else 0x00) # enable POD EG fix - rom.write_byte(0x180042, 0x01 if world.save_and_quit_from_boss else 0x00) # Allow Save and Quit after boss kill glitches_enabled = world.logic[player] in ['owglitches', 'hybridglitches', 'nologic'] + rom.write_byte(0x1800A3, 0x01) # enable correct world setting behaviour after agahnim kills + rom.write_byte(0x1800A4, 0x01 if not glitches_enabled else 0x00) # enable POD EG fix + rom.write_byte(0x180042, 0x01 if world.save_and_quit_from_boss else 0x00) # Allow Save and Quit after boss kill rom.write_byte(0x180358, 0x01 if glitches_enabled else 0x00) rom.write_byte(0x18008B, 0x01 if glitches_enabled else 0x00) From e737a138cf676260b7f24d2a66c1b9385607fe0a Mon Sep 17 00:00:00 2001 From: aerinon Date: Mon, 11 Mar 2024 16:58:12 -0600 Subject: [PATCH 2/5] feat: new tiles for dungeon indicators build: test for lynel logic --- Rom.py | 2 +- data/base2current.bps | Bin 117516 -> 117498 bytes test/suite/enemy_logic/lynel_test.yaml | 29 +++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 test/suite/enemy_logic/lynel_test.yaml diff --git a/Rom.py b/Rom.py index 97b4e401..eb05877a 100644 --- a/Rom.py +++ b/Rom.py @@ -42,7 +42,7 @@ from source.enemizer.Enemizer import write_enemy_shuffle_settings JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '03e2ae451d5abadd905b1a4da283ab5a' +RANDOMIZERBASEHASH = '66890fefe34bb5878422322c5f952aa5' class JsonRom(object): diff --git a/data/base2current.bps b/data/base2current.bps index 75dbf238992fb94482f96254c8c44675a82f67c3..62b711089c6e6f47e13d200cc91e8fc53398e650 100644 GIT binary patch delta 1134 zcmWlYYitx%6oBW>&b?Ehkk;}DtQJaYtVlH00BWojMjl3EDY#bR4`_JA7{VXZTFSCJ zvoo{Pscp8~b$eSjWDA?v+7{bV%9>W#rcK)TNW^Hm5v44KpfO~N!N6vn+~e)Pd(ZiD z&UfyktxL{F(_2?(OW5ngTU-#m(pWAbg8VqQ25sTJT+@#IV+-%q3KcG95Zd->` z>;t8HDG{E56j*}-NA91043A+E0O(UHwP_3eNY!Q%f6|?*rbm1#t%{5;uJ+SXi0<;lkW zc)6;jV?H&U=DO*`r4`aNUK4It2bh<*>X28ekiI0-wUVau8lp zz=Po+M|PBhvnabgJjT+1&;#7yTQ}ej;&X*zz^k&pH~xNt(PPzz$Vzh<}7xcAYbW! zVEryej$@8U%2!!D!DgA)Yi6)AkTw6tg^UH*b!Ir){6+rGNs~WA#1n^@%eW78h!sN&XqOJ;UAo)Cdawr3_0DoA?GS@oy}(U zW_pE;xq(R8>;&uF%Lan&L^x+eiE!CCLwFC95ZhTY)GLVfJkbjXzRJF1KA$~B%$s4WbgiRV4EX=GjTFzDgD*T6m#(ql%anvM?X~6Upf1IqGvG9vu58c<5FgajQ04f9I>m3m}kp3uQH2>-YJ_ClKFs`_pt6@ z^N74`L+RR5dfd}@!7S#&mn9y4`^MHLSxxR=Oq0gE0~mBXqW}N^ delta 1201 zcmWkuYitx%6rMXf_byM{f)COH(gIQlXe0znAX*(klz=ISnwVH2VEh3E{ve^t?wy^- z?f~6sS<5V}xFrR)>{37qU0u>HDM=xqkssP(c@2aRW6TzUq02Jf<0a?EJ?FdMIo~-q zH>cR@-Mim=TJ%VpH}BimMLcW&3Ha*Ins*?V4z{ZBjGMipddT+A8fv=uJXkEpT2#ov zrL^>ZtmPv2Lg^9v@}UtJfnfl!pDJoPXdku&YQHjjD6xIkkhO!_i>PuwelO{mImopy zR_tn;oJ6g4)G`x)CcjdYT>6fggs%9rWZ;OcE9&`o6h)2Bp=Jg$?H+m{0~WVTd=<6F z(NmpDy8TOP-!kJ6k6ux_;?tGH;Y6D?SINv%tQb$anr@)h6l&|%x?proLr44ktsRNV zpj}H7yJ*6vC8p@gV0@~Pd>+xr=p&JBO?I7<5P}n}jYdME%1Cs*ZdC@~sG#pQc5Qh$ z&Lh70R@bh_PpoMqo-?%{g&$%)!jj!Bf_wn=s!K_P)4;gJEEfZR^DlAQai+% z10rpa;Z_;+g^w!)Rl%IDtl5H2^rED_5>geCuV@y13w#gMImgA$0Q5A&;#cq6cgXL6S{~Jq;vwPJtqD>^zS!e>`BO}M*WT}@OV`sEySjfxylrhM=sLHFQ z1m&4rT_fbf6-0azVE@YQS>$R}F3xl1ZYGBdLbrAU3(f~lo8Xw`j+mxH8pxI zF}sOb>LmkglP^$H!*)lBKG}=-sB^sHCf@)T57m0T-|VxFh3=#gK?34?Z4^j+i5%{ z`a_~Wz(T(@^)OC7>`5wG}d?hY@_y#A8?$UxO-Tc$jO>P58N z-f1HK7vIiYHPOwn(xPIt(N4Fb!HFenX}sYRY6YWP>Zr+=MQ(xJx*t6rwXK%w&=Xx? kH{0mZ_-PAow*m}86zpXsnMe$6m_O?F=XBm5YZk8mA6hzN3IG5A diff --git a/test/suite/enemy_logic/lynel_test.yaml b/test/suite/enemy_logic/lynel_test.yaml new file mode 100644 index 00000000..9c779af5 --- /dev/null +++ b/test/suite/enemy_logic/lynel_test.yaml @@ -0,0 +1,29 @@ +meta: + players: 1 +settings: + 1: + mode: open + enemy_shuffle: shuffled + dropshuffle: underworld +enemies: + 1: + Underworld: + 0x55: + 1: Lynel +placements: # all the ways to kill a Lynel are Flipper locked + 1: + Waterfall Fairy - Left: Progressive Sword + Waterfall Fairy - Right: Progressive Sword + Hobo: Progressive Sword + Swamp Palace - Map Chest: Progressive Bow + Swamp Palace - Compass Chest: Progressive Bow + Zora's Ledge: Hammer +advanced_placements: + 1: + - type: Verification + item: Flippers + locations: + 'Hyrule Castle Secret Entrance Enemy #2': False # can't kill the lynel + Link's Uncle: True + + From d5d55b80171e63ef06c8317ac79cb4895ced2951 Mon Sep 17 00:00:00 2001 From: aerinon Date: Mon, 11 Mar 2024 17:03:40 -0600 Subject: [PATCH 3/5] fix(enemizer): any trinexx outside of TR should disable ice breath now --- source/enemizer/Bossmizer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/enemizer/Bossmizer.py b/source/enemizer/Bossmizer.py index 398cba89..85b8a3c2 100644 --- a/source/enemizer/Bossmizer.py +++ b/source/enemizer/Bossmizer.py @@ -166,14 +166,14 @@ def boss_writes(world, player, rom): data_tables.room_headers[room_id].byte_0 = 0x60 data_tables.room_headers[room_id].effect = 4 # $2E, $98, $FF (original shell) + # disable trinexx ice breath with No-ops if there's a trinexx anywhere outside TR + rom.write_bytes(snes_to_pc(0x09B37E), [0xEA, 0xEA, 0xEA, 0xEA]) if boss.name == 'Kholdstare' and (dungeon.name != 'Ice Palace' or level is not None): add_shell_to_boss_room(data_tables, dungeon.name, level, 0xF95) data_tables.room_headers[room_id].byte_0 = 0xE0 data_tables.room_headers[room_id].effect = 1 if boss.name != 'Trinexx' and dungeon.name == 'Turtle Rock' and level is None: remove_shell_from_boss_room(data_tables, dungeon.name, level, 0xFF2) - # disable trinexx ice breath with No-ops - rom.write_bytes(snes_to_pc(0x09B37E), [0xEA, 0xEA, 0xEA, 0xEA]) if boss.name != 'Kholdstare' and dungeon.name == 'Ice Palace' and level is None: remove_shell_from_boss_room(data_tables, dungeon.name, level, 0xF95) if boss.name != 'Blind' and dungeon.name == 'Thieves Town' and level is None: From 4629285e7e41773e7bacea7c782eb5f2c43b8e40 Mon Sep 17 00:00:00 2001 From: aerinon Date: Thu, 14 Mar 2024 12:54:19 -0600 Subject: [PATCH 4/5] fix(dropshuffle): minor drops do not increase counter if in the wrong dungeon --- Main.py | 2 +- RELEASENOTES.md | 6 ++++++ Rom.py | 2 +- data/base2current.bps | Bin 117498 -> 117491 bytes 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Main.py b/Main.py index 160ec9c6..4538bab4 100644 --- a/Main.py +++ b/Main.py @@ -38,7 +38,7 @@ from source.enemizer.DamageTables import DamageTable from source.enemizer.Enemizer import randomize_enemies from source.rom.DataTables import init_data_tables -version_number = '1.4.1.7' +version_number = '1.4.1.8' version_branch = '-u' __version__ = f'{version_number}{version_branch}' diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 1be11831..2f7f9103 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -141,6 +141,12 @@ These are now independent of retro mode and have three options: None, Random, an # Patch Notes +* 1.4.1.8u + * HUD: New dungeon indicators based on common abbreviations + * OWG+HMG: EG is allowed to be armed + * Drop Shuffle: Fixed an issue with minor drops counting for the wrong dungeon + * Enemizer: Trinexx ice breath should be properly disabled if Trinexx is located outside of Turtle Rock + * Enemizer: Enemy bans * 1.4.1.7u * Some bugs around Triforce Pieces smoothed out * Enemizer: No exception for mimics/eyegores in vanilla rooms if enemy logic is turned to off diff --git a/Rom.py b/Rom.py index eb05877a..fba37983 100644 --- a/Rom.py +++ b/Rom.py @@ -42,7 +42,7 @@ from source.enemizer.Enemizer import write_enemy_shuffle_settings JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '66890fefe34bb5878422322c5f952aa5' +RANDOMIZERBASEHASH = '67b9ede4928dac94a650e9e9396ef44a' class JsonRom(object): diff --git a/data/base2current.bps b/data/base2current.bps index 62b711089c6e6f47e13d200cc91e8fc53398e650..2c405d81b1fbf77c1277b1196a8966a11e127452 100644 GIT binary patch delta 613 zcmV-r0-F8$l?U^c2e1MI1bc{tcasJKf&pc-i336h0dcd;3ilEZ+qbBz9b}A+ii5W5 zh=~ld(j9vN0VT6e9|Q#paJ8uF>Y6!H;gyz?T_hnHp|_~82kPqT>gs?ABHp&B8X_>5 zr=XQ0%#)WSi2*y4AtmS)PPC|afRQ4`v#9EHfQf>wpj?27x3eB5Q3D7{xTxy5jUrov zcPY1bDFJ~w0Z_O3VgXzM0kfA@WC2wcO@TlMeuWOdUYr-(vpAm|e3WA|%Vt@K10MI1bvqplA1t7DRq-6mn z1wLG#lUJ9|WdVvHE{c@^@DhLtyOSA-r2y~;;xKypsR3(~R*REuRFKC+mw9FZD*-u| zrDg$00YaDVW&te$e3u+&0V5T}w)7N$TsqQ*Ya-FOsL2D+3P`6ZmsDo~HUWp1i)R5f z0eP3fX8|$`a894;@DEC=nB94o{$~Mh9N4$3U?B3hB3<^KFac|&4ao@5E3I+^&>@$5 zAD4(|0f02exTu?}i=4rYCIaFx`fC70AVk1KP)^`Zqfld?vq@-`ffcucnZh8ckGX&o zw}i36AgMo>JZS+s0(?f7cxeG49|=Y6!H;gz0~T_hnHskf-G2kPqT>gs?ABIdTJ8X_>5 zr=XQ0)RUJai2*~CAtmS)Rwpj?27zq1}DQ3D84xTxy5jUr=% zcPY1bDFJ~w0a&;BVgXzM0lSx0WC2wcb$~zzeuWOdU|NT)fMO=kf% z0gso2X8|<;;J2$_Ao{l=UG|+Y0c)iV$q3LZ zt#Sj Date: Thu, 14 Mar 2024 13:02:49 -0600 Subject: [PATCH 5/5] fix(enemizer): enemy ban --- source/enemizer/enemy_deny.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/source/enemizer/enemy_deny.yaml b/source/enemizer/enemy_deny.yaml index b55e90a4..b3d94127 100644 --- a/source/enemizer/enemy_deny.yaml +++ b/source/enemizer/enemy_deny.yaml @@ -160,6 +160,7 @@ UwGeneralDeny: - [ 0x0058, 8, ["Statue"]] - [ 0x0059, 0, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Skull Woods - Bridge Room - Mini Moldorm 1" - [ 0x0059, 1, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Skull Woods - Bridge Room - Mini Moldorm 2" + - [0x0059, 5, ["RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper"]] - [ 0x0059, 9, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Skull Woods - Bridge Room - Gibdo 1" - [ 0x005e, 3, [ "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "SpikeBlock", "Bumper" ] ] #"Ice Palace - Pit Trap - Big Spike Trap" - [ 0x005e, 4, [ "RollerVerticalUp", "RollerVerticalDown" ] ] #"Ice Palace - Pit Trap - Fire Bar (Clockwise)"