From 5b39494edf30b9715c81f2852d3555d8655a5004 Mon Sep 17 00:00:00 2001 From: aerinon Date: Fri, 23 Jul 2021 09:45:12 -0700 Subject: [PATCH] Credit collection rate refactor Music fixes and moving hooks --- RELEASENOTES.md | 3 ++- Rom.py | 14 +++++++------- asm/drhooks.asm | 11 +++++++++++ asm/normal.asm | 2 +- data/base2current.bps | Bin 136225 -> 136267 bytes 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index cc592f7b..923ae974 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -24,7 +24,8 @@ For accessibility, you now get a C or P indicator to the left of the magic bar o * 0.4.0.12 * ER Inverted fix for HC Ledge - * Credits again + * Credits again - hopefully for good + * Incorporated music fixes for now (may revisit later) * 0.4.0.11 * Some minor base rom fixes * Improved distribution of bombable/dashable doors diff --git a/Rom.py b/Rom.py index 57df5c7a..6d1b2455 100644 --- a/Rom.py +++ b/Rom.py @@ -30,7 +30,7 @@ from EntranceShuffle import door_addresses, exit_ids JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '25dd18672e1234c85900f5b2155e7e4f' +RANDOMIZERBASEHASH = '9c2878d1035bb3889784906a55a92a26' class JsonRom(object): @@ -807,17 +807,17 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False): write_int16(rom, 0x187010, credits_total) # dynamic credits if credits_total != 216: - # collection rate address: - cr_address = 0x2391F0 + # collection rate address (hi): + cr_address = 0x238057 cr_pc = cr_address - 0x120000 # convert to pc mid_top, mid_bot = credits_digit((credits_total // 10) % 10) last_top, last_bot = credits_digit(credits_total % 10) # top half - rom.write_byte(cr_pc+0x1c, mid_top) - rom.write_byte(cr_pc+0x1d, last_top) + rom.write_byte(cr_pc+0x1, mid_top) + rom.write_byte(cr_pc+0x2, last_top) # bottom half - rom.write_byte(cr_pc+0x3a, mid_bot) - rom.write_byte(cr_pc+0x3b, last_bot) + rom.write_byte(cr_pc+0x1f, mid_bot) + rom.write_byte(cr_pc+0x20, last_bot) # patch medallion requirements if world.required_medallions[player][0] == 'Bombos': diff --git a/asm/drhooks.asm b/asm/drhooks.asm index 2824771e..86ae1ff1 100644 --- a/asm/drhooks.asm +++ b/asm/drhooks.asm @@ -179,6 +179,17 @@ JSL BlindsAtticHint : NOP #2 org $1cfd69 Main_ShowTextMessage: +; Conditionally disable UW music changes in Door Rando +org $028ADB ; <- Bank02.asm:2088-2095 (LDX.b #$14 : LDA $A0 ...) +JSL.l Underworld_DoorDown_Entry : CPX #$10 +db $B0, $21 ; BCS $028B04 +BRA + : NOP #6 : + + +org $02C3F2 ; <- Bank02.asm:10521 Unused call +Underworld_DoorDown_Call: +org $02C3F3 +dw $8AD9 ; address of Bank02.asm:2085 + ; These two, if enabled together, have implications for vanilla BK doors in IP/Hera/Mire ; IPBJ is common enough to consider not doing this. Mire is not a concern for vanilla - maybe glitched modes ; Hera BK door back can be seen with Pot clipping - likely useful for no logic seeds diff --git a/asm/normal.asm b/asm/normal.asm index a8ab9597..aabb24de 100644 --- a/asm/normal.asm +++ b/asm/normal.asm @@ -398,7 +398,7 @@ StraightStairsTrapDoor: .animateTraps lda #$05 : sta $11 inc $0468 : stz $068e : stz $0690 - ++ rtl + ++ JSL Underworld_DoorDown_Call : rtl + JML Dungeon_ApproachFixedColor ; what we wrote over } diff --git a/data/base2current.bps b/data/base2current.bps index 53bd7d8680aa4516815cb90e352fe3ea90cbc137..a904b07d50f9fadac099414d033b0c27b309563b 100644 GIT binary patch delta 8235 zcmW+*30xD$_s=d#2!fCRA_(fT9sxxKywNIN6%ns`R$~Q^7L6iWtrsP`2}?-G=3oeG z2$%&nU_iRiQ~@s#s}id<_FwO|T8~!IYP4Fb{k8rF$!EXwo$JlaoA=(%4pj#w-yM{g z@#Os$POy38L$duL$xS9`MLJQn-=^5|1J~U+Ttbk;Gqo0lgQ)7x)=~tLp`jHgEK5d4 ze|?gZswwAjp^?UQS71jAzTd=kOOBGcmdZuJrFyQrd&O5ImRM+2$SwbiTe{#J7fH~# zism>PulR~BOG|j1*z8I~14RNv@NY2sd`FiR|IR4y?#>)USn&-;Ie~!c$tXH9?6|Wz%;kGLLqhdG;{QH*1Q;b{?Tv1&qJGj7#U-H0;NR91rvE140 z6PJzNs$N3qKG({HY8o#z$WtjN{u#yHkv7E=;xbk0xxs4Pjsm$b35q!8<-WCs`0~Bt z?wO>HqPQKE#admOQNCV7<9#o~VcypYyM<~C{uB5H9XDAn*Q3M}iJNEEP_4 zb0Kv@pB6#rph_^<>r)NW=j%8NDLhW&V;-^{7F@bt-W_wwivQcQJ&BjB_@sJBGD#i& z8bk{dkbWRdI29QMiiGq1<$(Lig5Lx`3uhsJfkC20NV$8b2uCEPXE^~>MLBSYmmxob zzr<@o0&a3MwPcKaAxdHMn@U^JIdKq})Z zt@xoUP*}n_3;sL~+I$m}BeWQ3Twl!P#X=Fknz#xYe{15Fa29+4$#!>H6w^URuSJLn zga#(`UP!;!uz5#;RdEN*4IGJl2=)e!SeJI0%hS>Lg+?|5s(3|LPZW_z?6ZaDT#_8# zWW%49aCmB$J%5{a2^Fc)``cc^J<;K}Dr;oRbz=y=_k43WQHkePyoP34 z(6dv(h~CShub<$E&~pnu(sndn5TqmLkzs-oBot}2;OXE%?|wr)Ng(tku!ER|P@)>B8j!F1|5pUA?QR(UB^xeejcS}ZVZ20|) zT*kT67@YCM?>Uyn6TjyaP?udGN|q{FeT9=i+nWxuWbzQy#4&UCv@y9sM_Va81TZoN zc?3pX>(1)AJcI7PG8WTY z@j*TD@`CQdZ)^q(qKU;^5JkF~0g=DVB&^UmW)yRSp)yuOYbm1K9wsp2c4Q@-qkG1r z0e)d4E^sEVCCBTJZ)WtCtuSqH@0fxh$Sn64Q`ZV(e(`WFgnoqbfK2p>@W5yckH0S(cY(?ceG!-Y@P@!ZWRUw*ZmkG0xU;|5jvx!& zw|3nUAx6;hZMCQM#obYqftwh6sw&g#1W0D7sR5% za)^ftTOf88{vX8qg)borwNYBTW~4S%Yx>#t5u|IiIRGb{_o^T-(w0JGwLCEXdlE9Q z_BO<)+W$f9RTNVMI~GlWIKOC35tv6t5s+(&N+4DheFO1a(G`gIie5tu)J5y;n&G-B z5KXnFCF*!$5u|p_CW!lVHi#{{D-i$G$@H*Xr5Od2nfkR53H8)BJx^*1p2!R&(=Y)P>6h)xG*Clbpn>tSZQB_E>RVu85dau8yx zr2}G@f>d_;d6UC>QKF zt}|+_by*B7Y2KTMj$gZB-TK_DoLyU)nB$flV6A~Kp$>w3m6BEy)|-~z-`rt@_>r@J-!s!(LNdq`zH zirr_qPAM*MaM+F`3cn|UPAMdvSaq-x|Ci}TfZhD?c zboAuRM>DEvpAi4}l7#<+Nc0H2LdEItnLO~*!D+}+Fu-*_sNU#&p~JkriDc|5cI4_JJyr0+UX zr}~1lM~yK}B;G3dav0xZ`Rxl;@qYE~B_QO`8Z>zv$UQU~nE|*%OHlC~@b=KaSsiCN z#_jS+_@#g5d(muV_JNG?cAyd(?KvW2ThRMraok&%K%k6!%Pjh&n^fAjLks|FFlV*F z*zW_vp#YyW#*1c!|LOPy7#aumUsl5@GN832t2z7(kmHZrI9x!q<1r=B)L?qbsH~3;ZtwVicX6!5zNSS5QAwD@13wf^&GP*8*Gf}=h%t&q3 zID!J{lAz4eEu>;JnEzD@JQwJ`iW%~d=9ry>Ow5!>0z|4wi6bM1a7ecstau~C@>;w9 zK>Ea1aQ>?aXv7R4|=W^aNEBI?e>$!-vR#_*F71H){L{(_;&)Yxcb)$NK;any)&*;jaE}3`N*LrpTp;k zqlQ8%?Itq7)Jj#$O!|@!|4kyi!B`HkH5IF(DtV({ZhWf1H;_+-4?6*mw z>A2-rJF5s~^bA+Lg|Jn@jEsjKQd#Y?vzapfLuNN&YqqoNW&CW$Xlt{x*)l#2vQu_; zvy7hunFlUF#-~Ge8O~6~&xP!UoqZ_d=Rx+|&OVXx^C5c!1%|5lh0F}XhE%ZYL-|Dv zZ40PivqSlhAd^+Fn?w1<@bj#VeIex)aQ0{!yIsbwX0FpOWc(*~S{KT%0fiI~w~;FD zptn`9f194_h-oP`$pti2;b>FQdo>I(sYw#5qc2Q#J!+|WMDZ&fRThh?g53@G1++3( z9oI;kt`S(WhV+u&n@y3rLS+Bmu6Gm*020 zVQ+NtX~Ldu#E%|g9Wz4I){W8u^xvV5q=Lge>}_auYz6y2DZiA73sRFy96<#tdQkFufd%IYZCO2#i^25N2busW1q&V-QU4o4zknOMQbgfRhXGRdA;44hSH zkIhW0V6nOqz`;Dylb=(;4(`cQ{9fkP36YBlCj4C5P&zxTAH69I+y{O8(2j^cv}ITj zEJ+OhWE}nJvGeQL{lp>n!9x*xouESpp8UegK{6r`7?% z@pDX-0;)^t?D9sOP6v{<&m-qnKWOtSx4iLNkD&ez=}znBhr)K_5tVU2a~CsV+Bm6agLRq{JqRPyu{gc zC(7)(i(yAyK?nmDYA9R;LONB!B#%>bTIA5{w_}jOK%9m~_>XMW=0+lOmT{=qP0dt*Fvv z%&$FbughFsRdWb9$>Z+({=_U0a6D`Bm_3F{5wCrbuXJI|sy&8g->jRG;<*h@eSE5K zJQMwDW1+^yoxz*>w^Kc-xlg+mrdU(&b{(ia?nBlC=0u8$uW#r~EZa8`oKo@)J-;US z+=9=QL(CV2brsa$MusMb+Y6a0GTmL)vY)!o^KTjjO?*SAd)5)YA>)YSiB$v13OC>E zd;>{t3*RumrTs9u%N|US`ECCyZ<`4rET6aW4J1H`_U1iW_rjAH(mR-_ zO#dL$6^+sd98=w2wttHt3itF=!6Nv{Ce5$+6lZhfRpx*_#^yu+g zp}xFCS1Zz&>+KQS!J-ReBq7K6$d~!pD?neEFVC7ySK{MNaCb3&D;PqNxFcddP2Dl` z!(~Q0CNq+sI>aPc0MLtLM%A6*d=YwP%Ye6SFo1eRuFdg8FV~uQLd2xc??sT)J7>Z7 z%6VqQaKh@BVFMd3Vu%eCUi=T44XE!`pR6Y`J_$rz8oC^tYO*zC zR|^DsB{M4Km$n)0+^TkNZ#%cIgR^vSE&jDScsycuQ-_sU`Kk3?>peL118*SMLh9AJ z^U^op_APPvkS@^b&srJY>l#)8bpCR8SHdKkKK zCn&#cMZ;r2(hq|&vOa%aGD%Uqi14cww2$VvTE9xM6w@Msft>7hrbIc$x1F;77d7Pho}y zn15{_cp4#Q;~(e*yqZjmM}1ghFyh(gjk1UJ0aaHf1@}rapPBnIzn=*Lz5sMzNr)T1 z-uSCl;0=#k$qvRlF0j0Si1Yekx6kb*khr=8c*CR?5lZYfm~wSw=-f=>X}8le*ehOn zu&0TA2gtt~BVIh+$c&s0*sF{yR^nN$c5J=TGBE8XFSjefqpQ)X!Sju$ zLOWym`j`0|B?7ab>)kt3J+mg+3`R~cH->k{It4J^ZH3i!Pl5kt6J^S&nXWX|w33G$ z>f)o0Nrj$}PK-YUm*5kcU;-^U=TFBZ@?r>o{?B}00H4ycItbYr3(heg6_VjhQpTgo z-u$GVa^WOKFdJyE#rKAly~mo%M$K)!k+A@rxHc|yWst==^kshJ*75K(7Xk`F77$(6 z!k9{5PeLfre!X-{)Mx(06~#rL2!<7xf91juOmY$b{pA2G?V@Ay=sz6O=G`Xa+H=JR zN_J!$4y+G2P!?WD{#~QUyXiciDnR+q;O#;%7?n@xMDPTbHOf>nC(2$`#v*tgQEd)( zEE{36nuYjFz`6%2LC1}Ck?$@ZEJ(zjLrhZM)JJZ_1of-{L%s)-ZjR~o{9@#WyVPAJ z_73d1nT9L}oi|lO&R*sk6A+KYC*%966TK3?VWGK)JXFqR26kzo)U!uYvz)!y{fp5U1+x>eo3vbWtJ1IVZa0v)RZxSp~83Pd}B_@CX zyFkP3STuPD`2Kbzyc_xb_VM@uS2>^fy!5r6=yDNsY;0#DvwFTi@ut34uZ@B-I&{WL z78BgX+J}J)cWRP?hh1oS^{hkJj_>>K;~;;cWk8@m!R!pFX%R&oJmp&N+U@<)89r4t zd1cPp@4k5ZcqL$e9SMW%rC%>2qa`Yn^%)x@;QtTwIciPuyc0A{W#$aJd81>pph?#L zzuU<-k2zL!nONc6Eh!-xSto2HRXR~_O9K9{Z>9-K3w+^XuW?ESp&cWxqOv{5IGU7 z%z{N|2tO=Y<3!?9(=e3E_K8?Amac8M6--nWgI^!SV)x9TfE)}%LT|-piFHWQ2 z%ZJlKuNUkkqMQx!0`zfxyFVevt^@DGtzwR%1Ta9(dXxe$42efcvp)^I--qygiI_z$ zDMAP*JlZVC#6BqW2z-N~am08KU!+Ia6zM^|Vz5)M3-Kd)0TJxk-6KZ@a!As@X2A#<;YbIy-FZlFFz9h& zP_YgqR)T;in+|&o);vy;?-oQ8ub_K9*E{ReDKS(vnm*xy*w>p9_ln$5Pt~)C=^N8L z(D8Wo=m`}gi15e_IE8!B-v;S>*kag0O8G+peTyN*AVna>yhVH8Hh^^`nD`_H*$I|C z`M+`Z%oOf=Nd&^J9cZEOv$3w%6jmb?+ej2lC;_uJpoA{Nrnd_+P=e0T$BRLbgBc6f z{E-|ZvE7K^*p5ZMpbpe0>DcBIy6zAWt}Y_9eHUo_VW z#~d-?(QZn(zgOf&VLir!1y6DD;%d^*j)PrKli}xa{nJ6JN$Ewp5S+As78XF13}G!w zXR~)v4XO$y4$OB_D{q6bj%Vvj$^#j`PybNDRAt4ChToc%_Q9NGee-WkN=Je)lwhWY zgb|eNW?dW_Mw}7WXA{WV_K^gt?7c!*5JUB6R6|1uIXU(-!qF>6Mu3p8;(sx(^iC%N zGM=TuAYpyBDyaoUif9VIwWD zY?B2$Y?_c6nfboR*;5pCI;H>qsv~AdUzoASpv3C*qu2uR>CanF2;&KFfKx~z&=HB= zPN4(UTCp)^=#CC)vpcZ0vZp~LYyeiUl&_b=pS2Q^1F`YyOmMFuvh~Ugv(pb-RhWr= zWOibh!VJ$y#F|5D=8{pIiu!H{R!V0_y#=a6ktODg*yFV2C{mmC_Y4Ru+2WX ztrErN07~EtVpfBXUJQxBkHUkFx>4j5!U*v2gzXF!2&(Cz%=i%d9sphp5-*JHOHc#B z@fU;OUGkk5a-_^H`BRD{?E*x2hsZRP(B%W7MDlB6IvkbwIkQ6`@Wq)JauB1Y?SP14 zifm1Q2*C=$oR_ml!fOWXB4AdJD0WE%J|#a09xmIM*OTWE@C!aXU1t*@UO7MI&xRGu zZPi+E^5tUq&xFud3H`rdOx4Vk&xupqx%?A}J`Cn-&*e8{{`ZcNC4*J3l46<%2=E`9 zSbi3f82`@8gzgX#v}{z$QWas9 zA8gO`$!#+uy1HDi2E(*w>R4Zu1X~0W{~8jOGbEg_&(r8a+VjemO*PYEtO#WPH9f4u zYF{NSw?L8e7%-h6gP3LD#9s->OVIt-0OTYHcs*yN;~aOB>3_00FulIL37#Vy5Z-Pj z<_y#6R=Y#vWF3Jl37k8`((6-x&C-hbVTTP!S+Hn$SpBo$7I_F_ z>nlnYK4Y+!GeeOzNXUTXdI}SiEn7uVv9gx5meFyDC=waPOiV@O$nut~R3riM-?plS zoOy0xOX)Pk)Mwzn?I(>p`V*H0_2R@l&3}Sxf_H*lYum3N$dWECv$$pYawPhjpzQ2h qB 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