From b0e78d5a6c4c4602ae958c109b98cf091ce58111 Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Thu, 26 Oct 2023 17:44:30 +0200 Subject: [PATCH] Fix infinite rotation exploit. --- bin/DMGTRIS.GBC | Bin 65536 -> 65536 bytes bin/DMGTRIS.pocket | Bin 65536 -> 65536 bytes src/field.asm | 14 +++++++++----- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/bin/DMGTRIS.GBC b/bin/DMGTRIS.GBC index c0719c42b5870c1dd68fa725d21d59f74e9d2baf..6018a58539be710dae1cb35ff924bee076cd446a 100644 GIT binary patch delta 2709 zcmZ`*e{dAl9lv+Cd*OcPB*|UO340ur1rw8y%TJOe5$(aCCOWiMNQg7g!8%&%v~_~0 zm!dchgBVzUl&RVn^DM2@~d_R+J=F*<=C<~MiYAs(ORwd|P1 zP0z;Yff2EY{!_CEUfQoAVG%3h#v%D}S7%X45=JuCW0nruz25;N5cok?XK0ZO(Lgp!dJ-=!D;8P8GLwQkjITO^08V=bh}o! zKk{9v*sySrGhcD_!k`N(CiN<5-A>J`^~KnN)%o(Z&MyoWLao+9wz@9eK2UgNT}KzD z7v*ccurOE*wI=i`Gt3UT{Ac<2L=|>dO6N(8Y>@iMMjVLZy$u-E;SQ7}=OhcsNF8Jn zKk_}vMrI|Mv_ePO`{)fL!Z&t{{z!$d3($<+((ag2ZVD*(2b4nr<&}W4G^n%&mAygb zlVwUGsPGXwsdWfW){%Z_b~@Q2*rj3{Odyg;|Duj?c?vl#_!kx>A>S9cx;PP$93+G9 zMbMbW;X|Z9P>Lqx6M=h0i2F!}o`a)y&_9E&!$3o7v>7hZ8hRs z(`tbp=Ty_xtPt-s;+^rdx=2s3s-1=lYY5GC83|o!)nODcUAP36&23|GPm8)OtvdU$ zqk^r0pN}*is&pGwy3?x5Sf=R)ZA^Y5zKag-L| z&gQ(jWZnavWlSf>!lt-n-UFFsOs18EO=-!z2O`Uu$hbb-l$KOY4@8EUNM7_b&zF^) z4?trX)2Oe|6qZy?&yc7q^jH=s+?K|hDr8s1J?ldiH1W1jLW@+A=~RqP@1mdY92WT={I}{A>;+;giBC(nnhXM_1ya_V#IJy;2BO_0Y(PYS_`XRz0>mXCZZioEh!5vyJPO1* zAU2yBJPzr^1`X?yW(u*U6I0X8h)Pz-;)adfAD2vjPM(9g3suw0>-iyU5fhT zCAA?~-`d)qWp6|^%h;PyxVAouYSyv2DEt$ej^a;iFRardRsTtWq;s{8qdoGry6yHo z^->|+#b@fuQAnPxi+bTJGaREwM?_xoL7=W)LVJdOS$_jsooPV9%NXo)S+L%(z-)kD z@M}a_Bhf6(`vE7yJw!hBE|7iFzl-t<243*3GG~NvMMB@&0N?zKuZZUk5ms)Up zBR*-t0~S17kB`dtH7%~bxC(k5pQ*=ZEaB&y=xpwr`@w2udBC{$@n5px-{&Lm3=KEM J_<`2b{{;-h3CsWh delta 2670 zcmZuz4Qv$06~4K<-NW~1pNY98He`=;%VF%=m^*A--#Erc9T?TkWizx zijCCTPFiRbCB$^qC@6o96G5x|T%uEmogWKz+vd)`Nx=qFs#0wwLhP*}(-vszCVTyM z@79>QI_=DR-+S+y_h#PCUSFTHuh03moe;b1AY1J*kK9Hcb!)2v>2!!ZN0!KkonnfS z9S(9ZmEb<&d^rz&Z>{8`LcNmn$N|sB=y-F2ouWP5_T4na(G#4W8~wt=#uMzRp@_gf z)oo%adr3XO26Q4WGJ?HSko!ID!p+G78n7q@m*M#f?{>0RzS~<*Jn|FX7t5x6x^tBC zD?vXy@_VOxg!U7LNC91`6;p)vWezkM`=$Z{VGP=NK!o`+0;p?O+8C{zb-k{E0U~kKsWIH?A9UiKfKMHGNGy< zo8)b+MbpZrpz?#D@^nynC8(4OO0%H!2+HXd%AlZ-FgvTaiEg8t0%%ZnHZJm#+!?%S z%OFf~k&}3JGO3;ol(vPcGsJD9Ke8!mR$wuskEo;Pv1BK-8qj#_q_`szY;>A>+EeYGysmJYmb3g1fyl7>Lvh$t`1 zC&MdwZ03`AbG{0Htt2nj3+5Hz23TMD0PclnD|d2u>)5K-aMmas2aRKvD{-_}lG@&^ zbl5yo=`uFye-4)Jh%ha|rdrwb+wWkXcsjDg$o&H3C9`|8NZu6(1u%)v&$v;DSZ3Jx zh^sk|8LJp!H5YX<8egrKG0k3$~QTQzJEZ5cH>~_H%o$P@kc{U8Cp3mHA1` zPfN`yjn2#@*v$9YrH9^)aNYFWnoPHTS@f%yrA6wDv_ZW@&#wh!6TLSAeE@plvDNah z184$pn*}@$V3*oEBW<$~0wfNXjTZ12fHeSGEx-XF4B&PP_$h#^0PeB?CxB1pd;APQ z3xMsG2M6GX01_t9i{uXgk%8Q8x$ppv1K4B%2Lb#Nz&&|DcSE0szPX@334K5Godw+k z{UG#R1>FnX552vh`=Bp1^>3RSsQUptGtZ$I`f}*I3jrn2jTAcydfZS=N7bkPZUXLOlx-GY| z)A0Tj&tLJJr%y#g+p^K{ydOJhxNplAbz!xZSoexwM|IoiTTxs_V^Q5cdM%2-HB(V~ zK6bH157+%GgA&iho*-TF{p%j!yBeet+^}Qos)-z+;`Lo9Fg6_`sEAW5s zk@a_C99jP$8J5FME%)F%eT$85T~9x-(Lo!1r-A-z&1`2@4@6vrTbmxW;TwWCfhrC3 mV_WD*6T6cCDxauQ#GvK%r(7sCXBkQjHzl~k%sIH>#D4+MLF0G; diff --git a/bin/DMGTRIS.pocket b/bin/DMGTRIS.pocket index 1f2d670d348d759084c77cb3428a739fb65a2336..73f021229539566bedf5c5d0be56668807708d5d 100644 GIT binary patch delta 2721 zcmZ`*eQ+Da71v64vh{5d+mf+JPEpcaK8zh(mOo-&;)bGR!eGOsr6hLDOz4C%r71(p zI0TRz2tzX=I5`T<6sQQP+|n>g>M=Eh(3EQ%%hr}U)5x^bc9v-0u7R-rKkP+kJO?{ry~jKX=lKkX^Q+E!O(uau<5gIkVC~IvPelL6!1hP8g!- z8#Z)cD9)eZJvKK!-5_~zs9v$TWxs1<+rcXpThVvr+uZfYCqM3f zAu;XIxG{%UsrJ&Nf8@wfJb>`6Uix&L4s_DPchDormyT(9(I;8e>2dlqatK%Ym3urA z$KdnikmB%4h}p7c5%;9YFQ^=+M{`bI_>>%_axcC+Mt`}RzOrk)ZTtrIMCh}f={S8( z%L|<3l#`xy%a1j)LC^H}=d9!zdZ?Wo(ky53UjH>oE*v`I6Vy=q|on??~Lm69LkKR61c5PiJ z7KWD>bG^9GSpm5w^ei*19dh~4^NEQ%?5>qAk~rBU4Uo+^5XJkNF^b_XlqMG>3&}}c zWD-C270E_sr3|?hD#|`UZyFIkwOjNq6TUG(b9PIoV@kOtpgb5*4hNK<2b3j2WkXQe z7gXL|s-%JnAEA?4m*8X->4##clkI|Cs<6QXBAN7;c7@kukkf*{Z&6b6{ekN%QW42P za`-+3g=rinUB~Fi7lcM|z(b(~AqJ*aQbR8VTb;|lcuQD@DGj}yir~vDm6wl1$~o4{ z!N^l9cGl9rV1He>Zq)x;9uL-qyGH%L(v5pY{b^?4lOn`sBP;B%9S7jG{UoxytYFp$ zU2Kn>K;F1)CwwK2EW49Ocgxc&kHcw!CO9fMsOOf!;moGhd$ZDy^iz>$K>z2C25%Fo z8mI4f(y5cDU}x<3?Mmh4R(cWa%DH>9@aC4ZLki#|d!dJK3KA-q&n}j<6*x8v8k|l}xovD7XS=#BtJ;%nDpWLKuF%|e z!@oVNmgs&?HBHS5{%*tHoye-CdVp2!HcVJUXs*Wy=*g-MBY|ncM_}pP4(9i?t2?r) zGl?BFYz_Q;r16lY*T~YFRb9q1O*3d?@>7Z3bZ{5?DDQZLq*QnEVKS(ClFCCh1)q0pl91(oLJpvm+QV+vM zkU{@Pd0?t&>WmPegKrAg;ZV(8->#Y;0{e(NhTf>T1wmz()c)6+2-Ros=vufGRunp+ z&{gT(DAaT&PN#R%4|WZUd>{VD+DxA|BY4S-R7$3$4des-UIS1T!TnjHABY4*Y%wFO zK(qq!HIvu}#CDRHmTof{1WY@GY&3}<0D?r?C5*!eJnji5v z5bJ^1YDVxtJOD&oClavu{lLh;eBBJO1MwOVn@r*fAbt$Q9R)&j0-gfA*}w+??*V+L zfn9)~0KDD6Zopo^-3ImmuF~;W^$pa#Ks-G!zz29S;2vW@8DO@=UIY8jN;3fOVo)A# z*oW0tVNfg z0eNv_2-df*v2W?CQOz>;>nMD--id0~vAHPx2~9`wdySXYYmvJDWkAw}#wXEUc}Hxg zeQ%Rg2H)ayu{9_p&&Hx&xMhap^u&nBOFnSKnk2M$=m$+Vp;ftN6ugR|eLfGZ_hV=_ z!4te*%C|Y1um0gmUu}F(ZKv(;GxEQhzXjdil34 zz37a*q;>rwxSy9;aAylXZNbMZc(@6lkne9@wD$5!sC#^_37@lsUudPXh5PsStCVE{ X;|{=o%ZGnc^t?GV+#2VPZ8-aX(g+Vm delta 2682 zcmZuz4Nz276yCeL?=9>vi^4tw^{q>}A_T%NAh8e2a{Z~m#{5YT`kTrbr>2^~nF9LJ z%qhd()Z}PNg;Gx$vC}!c42QJC}fk(YsMdVq1{T&$li9|+kJ@9?7Vx=`OZ1t zJ?Gx@?%S3YV@r$ipdKMTZ$L}*B@VtCJ!h6?IU^A_dKYE#Ta9d(pydX%F&w0hQnt7S ze^SiZFjFMNExgk*-`7_WB*$?RwX7D0DSV8QoT;Kzu#JfEc_tG} z=F4qU)6$*7BR0+`jr5Qm;ueA8AG1wI_57>0m1rj~+AoZ?|&B&WQU+4{gbX?7c?W$X*F`ux1)zKfl$Ujr{xpb?i~cA$#_1TF_Gy zgJ`T7ADU=10b`{@VXRTd^^WUYxf9(jV_ex2jaK05Raq{mqdDz5*O~4K#iWgK4NNpT zf$PCEC9fuR+^&ut;}}~f24#*hzBJM3!v3(s*+(_wLYz{-oe_iLLatR@geUoMQyKop zkE>BgJjvac}G{@JwCNFLWQ-Gy7S{w+8gU;MBs~z5=r$k#=Iqhc%Btpov^pl4 z6cFwgO_cRuuSwc#Vp57~*GrlR3ucejChfH`DK#0diEy#Z7+s^-Z2@UbOft8XVJcr) zgG#6gO{RdRE=f}tlPoF?k~EPqK=SrHrun&ib&uGr(FbBO@|r8gDhZ8AP*avtlTk5i zg@nc=C@D)RNw1i-IznR-RFtJuq(*CHgrtPD7zI|$fbxQ+&u9DK3xouj^dN!wqPKflGtTKoOXPaIV@)tdp{pZc<& z==Zy$@hLvl}O1b~^~nJDdpuSRD0BD`Qomp!?QXYLgl@4Bltq`5B(m z_;sIqY0T#t_anWE`_foy1FTl*Z=CUwPu6uG@WEx&SA6idX2^$6`_EO%p29z) zP~s{7Ce*+`RPr$0P|Bsj4ck+ahZz29iO&unn8QJ`uft1m4ltCLa;PD^zVuF%+gFB| zYZ%5IaTx7aU|0wba}yV@NG-ee)#b*5;QE3p!;cbwzU)z;yJzl<6vUQ{Qf+cE-!OLp zjU;0mSIi4@>rf}}DX&}s-|Xo+yksu^Oo!Wb_)sbSaL#CbOm=!r$r~K+(ZTlw-U=*~ n;%{{BZRO-r;tPE&S72S5*AH=bc+Aof?ko>dTZyrK-m!lH&iCl{ diff --git a/src/field.asm b/src/field.asm index e8bae00..70f2684 100644 --- a/src/field.asm +++ b/src/field.asm @@ -1316,6 +1316,14 @@ FieldProcess:: ; Are we grounded? .postgrav .nograv + ldh a, [hYPosAtStartOfFrame] + ld b, a + ldh a, [hCurrentPieceY] + cp a, b + jr z, .noreset + ldh a, [hCurrentLockDelay] + ldh [hCurrentLockDelayRemaining], a +.noreset ldh a, [hCurrentPieceY] inc a ld b, a @@ -1341,8 +1349,6 @@ FieldProcess:: ; Play the firm drop sound, and also reset the lock delay since the piece stepped down. .playfirmdropsound - ldh a, [hCurrentLockDelay] - ldh [hCurrentLockDelayRemaining], a ldh a, [hCurrentIntegerGravity] cp a, 1 jr nz, .postcheckforfirmdropsound @@ -1437,10 +1443,8 @@ FieldProcess:: call SFXEnqueue jr .draw - ; If we weren't grounded, reset the lock delay. + ; If we weren't grounded, reset the lock force. .notgrounded - ldh a, [hCurrentLockDelay] - ldh [hCurrentLockDelayRemaining], a xor a, a ldh [hShouldLockIfGrounded], a