From be9b3f9373c569cd84b75b537b6a13ed9114a959 Mon Sep 17 00:00:00 2001 From: MattEqualsCoder Date: Mon, 30 Dec 2024 01:01:49 -0500 Subject: [PATCH] Add VARIA soft lock patches and Red Brin to Maridia patch --- .../Options/CasPatches.cs | 6 ++ .../Options/ItemCancelBehavior.cs | 4 +- .../FileData/IpsPatches/IpsPatch.cs | 75 ++++++++++++++++++ .../FileData/IpsPatches/climb_supers.ips | Bin 0 -> 1535 bytes .../FileData/IpsPatches/dachora.ips | Bin 0 -> 2331 bytes .../IpsPatches/early_super_bridge.ips | Bin 0 -> 664 bytes .../FileData/IpsPatches/high_jump.ips | Bin 0 -> 850 bytes .../FileData/IpsPatches/kraid_save.ips | Bin 0 -> 1232 bytes .../FileData/IpsPatches/maridia_entrance.ips | Bin 0 -> 1878 bytes .../IpsPatches/mission_impossible.ips | Bin 0 -> 700 bytes .../FileData/IpsPatches/moat.ips | Bin 0 -> 714 bytes .../IpsPatches/nova_boost_platform.ips | Bin 0 -> 1093 bytes .../FileData/IpsPatches/red_tower.ips | Bin 0 -> 2370 bytes .../FileData/IpsPatches/spazer.ips | Bin 0 -> 660 bytes .../FileData/IpsPatches/spospo_save.ips | Bin 0 -> 3924 bytes .../Generation/RomGenerationService.cs | 42 ++++++++++ .../TrackerCouncil.Smz3.SeedGenerator.csproj | 12 +++ .../TrackerCouncil.Smz3.UI.csproj | 2 +- 18 files changed, 138 insertions(+), 3 deletions(-) create mode 100644 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/climb_supers.ips create mode 100644 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/dachora.ips create mode 100644 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/early_super_bridge.ips create mode 100644 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/high_jump.ips create mode 100644 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/kraid_save.ips create mode 100755 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/maridia_entrance.ips create mode 100644 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/mission_impossible.ips create mode 100644 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/moat.ips create mode 100644 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/nova_boost_platform.ips create mode 100644 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/red_tower.ips create mode 100644 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/spazer.ips create mode 100644 src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/spospo_save.ips diff --git a/src/TrackerCouncil.Smz3.Data/Options/CasPatches.cs b/src/TrackerCouncil.Smz3.Data/Options/CasPatches.cs index 387bf8dde..bcd52ceaf 100644 --- a/src/TrackerCouncil.Smz3.Data/Options/CasPatches.cs +++ b/src/TrackerCouncil.Smz3.Data/Options/CasPatches.cs @@ -66,6 +66,12 @@ public class CasPatches : ViewModelBase [DynamicFormFieldCheckBox(checkBoxText: "Sand Pit Platforms", toolTipText: "Add platforms to make getting out of sand pits in Maridia easier.", groupName: "Middle")] public bool SandPitPlatforms { get; set; } = true; + [DynamicFormFieldCheckBox(checkBoxText: "Maridia Top Entrance", toolTipText: "Adds power bomb blocks around the super missile gate in the hidden room at the top of Red Brinstar to allow you to access the top left of Maridia faster.", groupName: "Middle")] + public bool MaridiaTopEntrance { get; set; } = true; + + [DynamicFormFieldCheckBox(checkBoxText: "Metroid Soft Lock Patches", toolTipText: "Updates multiple rooms in Super Metroid to prevent soft locks.", groupName: "Middle")] + public bool SoftLockPatches { get; set; } = true; + [DynamicFormFieldComboBox(label: "Zelda item drops:", groupName: "Bottom")] public ZeldaDrops ZeldaDrops { get; set; } diff --git a/src/TrackerCouncil.Smz3.Data/Options/ItemCancelBehavior.cs b/src/TrackerCouncil.Smz3.Data/Options/ItemCancelBehavior.cs index d02bdccc0..09f5af692 100644 --- a/src/TrackerCouncil.Smz3.Data/Options/ItemCancelBehavior.cs +++ b/src/TrackerCouncil.Smz3.Data/Options/ItemCancelBehavior.cs @@ -9,9 +9,9 @@ public enum ItemCancelBehavior { [Description("Deselects item (Vanilla)")] Vanilla, - [Description("Hold to keep supers/power bombs selected.")] + [Description("Hold to keep supers/power bombs selected")] HoldSupersOnly, - [Description("Hold to keep missiles/supers/pbs selected. Item select changes weapon.")] + [Description("Hold to keep missiles/supers/pbs selected; item select changes weapon")] Hold, [Description("Press to toggle supers/pbs on or off")] Toggle diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/IpsPatch.cs b/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/IpsPatch.cs index 04ff928b2..b717ae199 100644 --- a/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/IpsPatch.cs +++ b/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/IpsPatch.cs @@ -131,4 +131,79 @@ public static Stream GetStream(string name) /// /// A new stream that contains the IPS patch. public static Stream SandPitPlatforms() => GetStream("SandPitPlatforms.ips"); + + /// + /// Gets a stream for the IPS patch to remove the super missile block from the old Tourian launchpad + /// + /// A new stream that contains the IPS patch. + public static Stream CrateriaLaunchpadExitNoSuperBlock() => GetStream("climb_supers.ips"); + + /// + /// Gets a stream for the IPS patch to change the bomb block in the Crateria moat to shoot blocks + /// + /// A new stream that contains the IPS patch. + public static Stream CrateriaMoatNoBombBlock() => GetStream("moat.ips"); + + /// + /// Gets a stream for the IPS patch to change the bomb block in Green Brin mockball hall to a shoot block + /// + /// A new stream that contains the IPS patch. + public static Stream GreenBrinMockballHallNoBombBlock() => GetStream("early_super_bridge.ips"); + + /// + /// Gets a stream for the IPS patch to make the speed booster blocks in pink brinstar Dachora room not respawn + /// + /// A new stream that contains the IPS patch. + public static Stream PinkBrinDachoraSpeedboosterBlockNoRespawn() => GetStream("dachora.ips"); + + /// + /// Gets a stream for the IPS patch to remove the bomb blocks to the Pink Brin save rooms + /// + /// A new stream that contains the IPS patch. + public static Stream PinkBrinSaveEntranceNoBombBlock() => GetStream("spospo_save.ips"); + + /// + /// Gets a stream for the IPS patch to change the bomb block in the Pink Brinstar room under the Sidehopper room + /// to a shoot block + /// + /// A new stream that contains the IPS patch. + public static Stream PinkBrinSidehopperPitRoomNoBombBlock() => GetStream("mission_impossible.ips"); + + /// + /// Gets a stream for the IPS patch to add platforms to the Red Brinstar Red Tower to allow you to get up easier + /// + /// A new stream that contains the IPS patch. + public static Stream RedBrinRedTowerPlatforms() => GetStream("red_tower.ips"); + + /// + /// Gets a stream for the IPS patch to change the bomb block in front of the Spazer room to a shoot block + /// + /// A new stream that contains the IPS patch. + public static Stream RedBrinSpazerNoBombBlock() => GetStream("spazer.ips"); + + /// + /// Gets a stream for the IPS patch to change the bomb block to the Kraid save room to a shoot block + /// + /// A new stream that contains the IPS patch. + public static Stream KraidSaveNoBombBlock() => GetStream("kraid_save.ips"); + + /// + /// Gets a stream for the IPS patch to change the bomb block in when leaving the Hi Jump item room to a shoot block + /// + /// A new stream that contains the IPS patch. + public static Stream NorfairHiJumpExitNoBombBlock() => GetStream("high_jump.ips"); + + /// + /// Gets a stream for the IPS patch to make it easier to get into Upper Norfair east without the hi jump + /// + /// A new stream that contains the IPS patch. + public static Stream NorfairCathedralEntranceNovaBoostPlatformBlock() => GetStream("nova_boost_platform.ips"); + + /// + /// Gets a stream for the IPS patch to allow you to get to upper Maridia from the top of Red Brin + /// + /// A new stream that contains the IPS patch. + public static Stream MaridiaTopEntrance() => GetStream("maridia_entrance.ips"); + + } diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/climb_supers.ips b/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/climb_supers.ips new file mode 100644 index 0000000000000000000000000000000000000000..2f379982c9701a1b9d85e466b4e8daf410e8f487 GIT binary patch literal 1535 zcmX9;Yiv|S6h1R|_wIICur3CP@zn=ZcMFt6ZSm1AyU+zB!4!iCS|^RE+Ne>CC{>8w z*}L0Eq%E{!E!bEIQR0J#KhPkK_wL=>O3AjhMtoG*vMMpy%ofz~(Osu8nUgu0Igjsr z=gi!<^8WCeqM@VCUz0w_8rR?{?ZPT;Dy13=AZA{7j#wc`Cu$)a_J*)K>>l!oFoA56 z%}HxF3}64y^_y?ljHopR+!%*T1`A)(W_=9?mqaOBod>i_iR8idn9L%MpS9n#U%ph~ ze9{4M@n)K*#qdDALaV`C2frk>GphBSC?YnqjiEth%1GBem>{R~p{T+P*n~yvG_09NpCJ0@s zOklBye8a@sL=Pd_>^x)eNV8Knu+8wFzTaa{In6QpBbEe9PJoLLQPNsg>vB73lM{A{ zTB1y8I~BU!+0~}fdWSR|W%?S#Bh~7+gh!a`G^5QpzR)e!GJ6x>u+7~+fcWZ=+PV(u zZnrg$uifSBh^bNu-{?-U_F5!9Aoz;!kJw{a+{@w^f6V}04AQ*KdJcPJ0zDzowO>^J z$JJNs5;d%Uz$I3a0}i*m?`w36hi7xo?Y*TyMA*Kz0jAC>~l`WzJ zF7p&>o`0_#$L9Iwh()X|gUQ60y-iMOF`)_E)1sQpzP~+*=;J89z`++`|Lblio<Y6!2Hyh@Zw<`r2t93N~P^;o36 z&SN&}O-^2N2UB*H< z5nZOxgMprRJ-noTt`h9_Cc4(6ArDSZ^Jo!RR_!L6$)VBrgVcvxtNrI#=6O)U`P@uq zFCb?=Qv`?^Wq`C-mH`T)%o2dSSXu!&v6R5fSDm0Gzp&kzBLKKm8iX>R0=&{$Q^_BA zv`RYjo|9Ew)s-R~$W#G8d9q3d;+?rl-Y`>%a4@r2TBvsd6B`4W6>vEpxJ%02Qtrtf z4cx`IeQ*Z^_e`v4tErSRA>TW(qPy=N$ccf3|u2{R*|KivdHsXhSD*8J)X Gwf_N#%CEEl literal 0 HcmV?d00001 diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/dachora.ips b/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/dachora.ips new file mode 100644 index 0000000000000000000000000000000000000000..19dce7eed589a9d6050a3d4421e7bea9d1cc46c5 GIT binary patch literal 2331 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 Dik&#- literal 0 HcmV?d00001 diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/kraid_save.ips b/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/kraid_save.ips new file mode 100644 index 0000000000000000000000000000000000000000..f05a6f76c2d227b621f3ac586a06e4d2a1ad369d GIT binary patch literal 1232 zcmXX_Z){Ul6hHUA*Vny;k*({-fU)2phAefqY&0rkl)Y|%if(l?gUD7{B=|v6m@y&2 z<({=~`lPLkF~k@`kPw53U-&2_xZV3+yD}C~{>Y3W1J-q*F^fj?L}-0W{BUp1y}$Fj z_jm5^-0mH{+O7><9r7i6TjRCZ?f{m1QdLI3QDt-+k+4yvMGRVH>@~e=B-L+R(l6@Y z=~}-bR*EL*;r`ru(v!+IN|6~)t}8HkWgz>4>Eq3`C*?6mI_uFLz!>Jq00rTBl~}vi)TX6$RqQ8VqtqTd_97=us^2y6F*D z2`Y`AlsK)eMpqDrjl4@-7dNvk`@wY3O7rvlx12XOD&@&yMV1*+Dh)gG`7hv_X3~m@ z(73~_Ln(-kuDhgAA?9Y-%!ngnddVt^x~a3&r zp_ZQ&_4+P4%d)W(=cwL6ty*)OR>X9NL~_ijH}fs1T7g)XW#66X7Xkj*^btHVRzbz% z6JOAuMz5U}cgq%B3+e#&peHdak@N+9j*4WKSxqFbipzAxosh|_ugOsqC#~BS%ceg) zCy7V#&*=4&lJhi`{5TEZ+A!9WA#9mp*(4ILHKSaydnf1N(-Rrt5v4@|6 zD)S6|1ADvhn5z#X`ol@#*?kP5k3TDXG=hWN5ny!&h+IQnBx`s%B>76Zngn?z4U*W@ zR9Rjvs4=}2)B3D5wd|&*$sGi=#D^5py%->me&`FJltzy(om?Z;6dw^+6rk`BAI3%5XW%q1IhH0LZc zzTGWIH|s;%=Le+mq4CYU7Lt9~0;I16v&}QX+u^INgQYm^-)XeCQ-AA!>0x;@FMp-Q zSX|!Tw-WTbwyAXw`1&$La)9Z57fs+-gTz zCoNpPAqsP}M@p=XN6VE8|B?Tf&2Y0A?qk2QO-(j=L zKi{+YhpXr*=D=-w9Gjsrb|fpgad4&pTjgp%X}m z%x`nTOV literal 0 HcmV?d00001 diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/maridia_entrance.ips b/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/maridia_entrance.ips new file mode 100755 index 0000000000000000000000000000000000000000..3b9d9fbbc9d298338dd759062438573ac5597aec GIT binary patch literal 1878 zcmX|CUrZdw8K0Tmy)&ov-tFEUoQp)@fTV3M#BG`vOR?{6!N46H_)nDDP05%NY7DVj zDUI@!Fxp%19S1Hg*x)2eCC6%2;^x7L^56$F-M!PpcfN0SzW@9C<{L~L)_YnX8}{~=Be(ZejWvwGxcH!oA5`gsXQ_W8_e$<$ZhUe) zdvf}f>4|C9O%a&{Jw$|%=v4qu8Ma)&Ov+S%m*tvpQ%x0FPV6;f3G#sxpC-v$qGAA>(%nygn5pK{Z%Am!jViiol zoIaVCvbk&qPS|U#3j>hdDf6?sahTp|?GBV=1Wmv#8f&sA15__{#aqpAuFktE;}|z6|u8s45@4%hKLv^kcy%D%Ev_N+ELZL1jSX1+%$t(EYf`yiP-bdL1CKtE}^Mzd*kg=YWiFE6cL5Escj zIWtJk!WZb(9q24su)hr#iFIBrT{4%{(n*+-jJ<(RFM|2pACymafVpe+`aBWh^K#Ll zMn;9{I@70FH~m1j@%oapc)Ps{yfTf?;`!Khhh~4K*~^9R2hgxIa_Z>-d)DKPUBk2Z zo!I9NMPob1i_0Z!E(UmJ>y&+`=!t!X7vt~9MQr>dQ2xgHCa|y_Jg0@Oel5tK#TTs$ zijh&QjB3S##?-QaQZa z7b-!(H+uuQq?%2K1l`n$c{pTbLT=xX`pfr2_7zv(@Ee^CbDppxGo2$c^7d$$?W3S; zh0di^=py?1K-{BK_g^%sual&h8)=# zYN$E>?k*lw4r#wGaE6)}6lWwq5r)w05{auf$yT(!kWyib+11AP8#1q4VM%3a%JGo* zX}lIS9%+RWjfEzS2W%xng)5CLjji*c!cqfw15TfMpz&rrC4>u8K?j3rwjUeAVX?0+ z1N*WADo0gK{!y>O5w@Vh#v3v_fE~>JZ2oYTj%z zHXeyeS+5`TPX+xz%C=}V<*u2ZGzz?}x>yDqie}YE44=jZuyr?RT#Gm>+)Dm>gguY* zKiI{N;Jh4W{gf9n|7w^Wpi`X+`eX8dBb&{d+xzcm;gV{;sJa97Z6KZfMI$!|??G!r z*w(H#^Z?(Jqhg*4(^L?uEQ7b%6+}^jM)@IQ9Ky|P_O;{HN@!aneQ+bq1 zwBDM~*dU$Kn@cv!(CPP@9ZqphXc6wfyO7@!?W~XHhg(3;esUc2+Lu``g}r9?apL^2 zjQHkxGWoAn{5XJu@b@a<&*pOgN>b$nXscsS?p_f$p8*giHlGAST!hsct%`8FMz=-y zkW=_j-0BA~?%8|_fGX?Q4YpYa1`k=s?AG@HKyIvckGHa660|_soa!%D2Evoq!J>@V}As8>)YS z>c2#{&{t>^bplC{yq#dv^Ofh8=gUsd7aWN?5D*klRDhyT#&x1s@FFkt0>7~pXP2ps z_~>GPqd?LH5AZrSozHDW_e%DbP(inm^EEfIiaixn;qR92sn|Y25_SlV#(qz))==1r z*_#wpbhL#$6%RW`XQq!j)NOtD=-s;LkIb`2@A&T?WiQct)#%~cn5_Pv<6c3vYheF> E0iFQybpQYW literal 0 HcmV?d00001 diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/mission_impossible.ips b/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/mission_impossible.ips new file mode 100644 index 0000000000000000000000000000000000000000..1483777d4066a1c7f0644f8c67aea94fb3b4d6a9 GIT binary patch literal 700 zcmW;F&r1|x9LMqR^E|UNlOsy8tc!)X+Ww*i2|5I!J}V9fDX-{RtgX>(SYD z7v?a61Rhen6`eeE2xMh=W@cw~(M(qq3WeDA6ydEUa;K%k`|{xhpIm%8ks0~2f!_s% zL{{60DPb+7i<+d%nxwUZ0-n;wc4LE*ChDU4K)rH3rNk8%g2V-n5>Q5ohxeHn5clD< zlHoT1^I;(TCiGhoBq*j2a*2|NwVZ0kAW)^|T^Oy(C!!NU13IUm+O+OJr_MU*HR!U# z>VETmdlZw{!OU` zDIuvvih5FHg!B_cfW-Mn!6T(fhWFqg!Q6*Z#I8ZSD%(s>kz6TS3acSb6S9gWb<7gQ z*5Ys8T9T}5SXQSjA89Q<*)YAf?DUy)i3J9sNi~AQYSt2Y50I+N{fVq9g;l@ybAv$Tq8#8w|=P)cj=` zRR;NnVGkY|+9zZhk6k#Y#SYq`@N9nxDh;OJ!H}9r`7tJG#z z3$_l#`rpq(bp~6LY@vNitQi(--=?r#W6cGC!{$=}IsxEz>vX$pW&o5Q(|{-%@6Kn# c&^e=U$!9=lPC)xUZH~i8BMpGAy2)(nA8j2AYXATM literal 0 HcmV?d00001 diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/moat.ips b/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/moat.ips new file mode 100644 index 0000000000000000000000000000000000000000..2696ba98a0ecb22b1a585cfc8878d7adb8d089c4 GIT binary patch literal 714 zcmXAl-%C?r9LB%zIXiP(n{#tbCnU~9E7n3V=MS(~w?rXK!fuM%>avSK>MAnMIeMnk z6j1{q39${LzrY~n@V+~nb4#al%hI~23E@>2VY^6Ai!L5MJP*&!^YnKPczepEFMw3% z3J+Yi4Ot}T$_x`xe2He-r)U|;A@w%unI==yh9O}ssc=*}Y$4lZtS8zY&A|Z;IZ63gRxRoBm=dC(UFz_E?KNrq*J~s{*t}`-+Yl6dkLA zM^9^_uQ;wzZx5MCn#FU*D1AsDP`9F`E^3Q6_o@*0K?}K7VwCZ8V9vF(S*N(;<6D|| zxWttXOa~TR``P-;z=tZWYd0{D7mPW)XSZBHZqAL2yLi4*G7Dx)>FLZ{bcfH%29sbE z48keFC{=a~7E~r>4#A(pOsT^xwWHB@zz8-eBf?6Kr+?75@g!y~0-4%6fz{8LA>&qQ z5Ml%^1q&B3qf{LzT``_L2rBlp3}d%dKucm$&WJCoS&EZ9ShvZZtdJzH5cHcVG+;&r zLdA6k2qCC~{n@a?7N4jc{?{GpWm9-tPA&pT$&{do=#5xMQ*1^~EHaAqU_+)O6FnNV zD(_(+Q^#z)LmFf08?>6<$In;T$ET32l z^=LMWlP$Kv1i;gzl^FN1bHJ_dz|%I|0qio&z+yovlUNGx@Uso$bJ41Zoi~f|DXn5FEDy z9Fs#-ej|SwLQiys=FWoienGx>9-w^Irw8jL0Hy;LzU$IT+Mf-2VCzciJ(TYSKUU}a O!6|zHkV(CIz56fsq#ktu literal 0 HcmV?d00001 diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/nova_boost_platform.ips b/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/nova_boost_platform.ips new file mode 100644 index 0000000000000000000000000000000000000000..148f7aa16488fc14f6610adacd027da2f5050d73 GIT binary patch literal 1093 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 T96udvK;H{@cftIYpKtv?Nk4a{ literal 0 HcmV?d00001 diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/spazer.ips b/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/spazer.ips new file mode 100644 index 0000000000000000000000000000000000000000..975670e9456a24885664257bf7d6c2a6d925978e GIT binary patch literal 660 zcmW+zO-NKx7(MsiH`7qFsYQsZc{A#!AqWC3DXzYm$tbeIMMU8!(!w^bA}r$GW^OuI z;Xa8W=F1iLR$Nnm`tp`1u?949(t1*LxZ9cAly}gUy=Q?HS0gJDs z$9*}VQc?i9%Rpl46IgsB{nX<~u5p@_bDsqbZ}1JS4v}?^;gq;ThO;@4qEHRQJGvU& zD>+%U)kj?K6(up|pcq0R`vK3gbnHGUcB%JpZ8SeQKucUrQgxodQhityk8F%xAR|4* z{iCO;A3u8&EF?ojpHw%1P=OPox(x~9C$%xKaD2f4aUZ%OmnFnh-Axi^UIY?yK<>;J zrttdR^!gib&&qb||EpOE`TPa@axGI}j8BB~)mD+2BP=};U#qs-nVL^0AJb<3$F~AD}1j{B1((gE#d{;{h2O< z5=F8KYRmAVv|lEiMo)M(wq<@Zwc*vQeo0MbIzgRUj_RvAYeZC3#zqzBcljf4xI^Ay zBo;&}bN**xs>=+2Ar+|7nf?Anlx19dTFtHq}oCP}C!8k$P jhdM#chZ@0dJB(cd?Az>j2Fj623^7_dSZPH)*`4|aEZzh3 literal 0 HcmV?d00001 diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/spospo_save.ips b/src/TrackerCouncil.Smz3.SeedGenerator/FileData/IpsPatches/spospo_save.ips new file mode 100644 index 0000000000000000000000000000000000000000..9a7f1497379da9f86bf3eeea5eeb342a4964a3fa GIT binary patch literal 3924 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 literal 0 HcmV?d00001 diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/Generation/RomGenerationService.cs b/src/TrackerCouncil.Smz3.SeedGenerator/Generation/RomGenerationService.cs index 1da72d7f0..03f833ff1 100644 --- a/src/TrackerCouncil.Smz3.SeedGenerator/Generation/RomGenerationService.cs +++ b/src/TrackerCouncil.Smz3.SeedGenerator/Generation/RomGenerationService.cs @@ -236,6 +236,48 @@ public void ApplyCasPatches(byte[] rom, PatchOptions options) Rom.ApplySuperMetroidIps(rom, patch); } + if (options.CasPatches.MaridiaTopEntrance) + { + using var patch = IpsPatch.MaridiaTopEntrance(); + Rom.ApplySuperMetroidIps(rom, patch); + } + + if (options.CasPatches.SoftLockPatches) + { + using var moatPatch = IpsPatch.CrateriaMoatNoBombBlock(); + Rom.ApplySuperMetroidIps(rom, moatPatch); + + using var launchpadPatch = IpsPatch.CrateriaLaunchpadExitNoSuperBlock(); + Rom.ApplySuperMetroidIps(rom, launchpadPatch); + + using var mockballHallPatch = IpsPatch.GreenBrinMockballHallNoBombBlock(); + Rom.ApplySuperMetroidIps(rom, mockballHallPatch); + + using var dachoraPatch = IpsPatch.PinkBrinDachoraSpeedboosterBlockNoRespawn(); + Rom.ApplySuperMetroidIps(rom, dachoraPatch); + + using var pinkBrinSavePatch = IpsPatch.PinkBrinSaveEntranceNoBombBlock(); + Rom.ApplySuperMetroidIps(rom, pinkBrinSavePatch); + + using var sidehopperPatch = IpsPatch.PinkBrinSidehopperPitRoomNoBombBlock(); + Rom.ApplySuperMetroidIps(rom, sidehopperPatch); + + using var redTowerPatch = IpsPatch.RedBrinRedTowerPlatforms(); + Rom.ApplySuperMetroidIps(rom, redTowerPatch); + + using var spazerPatch = IpsPatch.RedBrinSpazerNoBombBlock(); + Rom.ApplySuperMetroidIps(rom, spazerPatch); + + using var kraidSavePatch = IpsPatch.KraidSaveNoBombBlock(); + Rom.ApplySuperMetroidIps(rom, kraidSavePatch); + + using var norfairPlatformPatch = IpsPatch.NorfairCathedralEntranceNovaBoostPlatformBlock(); + Rom.ApplySuperMetroidIps(rom, norfairPlatformPatch); + + using var hiJumpExitPatch = IpsPatch.NorfairHiJumpExitNoBombBlock(); + Rom.ApplySuperMetroidIps(rom, hiJumpExitPatch); + } + if (options.MetroidControls.RunButtonBehavior == RunButtonBehavior.AutoRun) { using var patch = IpsPatch.AutoRun(); diff --git a/src/TrackerCouncil.Smz3.SeedGenerator/TrackerCouncil.Smz3.SeedGenerator.csproj b/src/TrackerCouncil.Smz3.SeedGenerator/TrackerCouncil.Smz3.SeedGenerator.csproj index 2e95dc45c..40165fa23 100644 --- a/src/TrackerCouncil.Smz3.SeedGenerator/TrackerCouncil.Smz3.SeedGenerator.csproj +++ b/src/TrackerCouncil.Smz3.SeedGenerator/TrackerCouncil.Smz3.SeedGenerator.csproj @@ -34,6 +34,18 @@ + + + + + + + + + + + + diff --git a/src/TrackerCouncil.Smz3.UI/TrackerCouncil.Smz3.UI.csproj b/src/TrackerCouncil.Smz3.UI/TrackerCouncil.Smz3.UI.csproj index fd0a093da..c411272a6 100644 --- a/src/TrackerCouncil.Smz3.UI/TrackerCouncil.Smz3.UI.csproj +++ b/src/TrackerCouncil.Smz3.UI/TrackerCouncil.Smz3.UI.csproj @@ -6,7 +6,7 @@ true app.manifest true - 9.9.0-rc.1 + 9.9.0-rc.2 SMZ3CasRandomizer Assets\smz3.ico $(MSBuildProjectName.Replace(" ", "_"))