From 74a8ec6486b96203b292501044d4350152b0d1ec Mon Sep 17 00:00:00 2001 From: Catobat <69204835+Catobat@users.noreply.github.com> Date: Fri, 12 Feb 2021 23:01:50 +0100 Subject: [PATCH] Minor fixes for in-room stairs --- DoorShuffle.py | 2 +- Rom.py | 2 +- asm/asm_investigations.txt | 11 +++++++++++ asm/spiral.asm | 37 +++++++++++++++++++++++++------------ data/base2current.bps | Bin 131841 -> 131877 bytes 5 files changed, 38 insertions(+), 14 deletions(-) diff --git a/DoorShuffle.py b/DoorShuffle.py index 97e7d234..58d84688 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -89,7 +89,7 @@ def link_doors_main(world, player): world.get_portal('Desert East', player).destination = True if world.mode[player] == 'inverted': world.get_portal('Desert West', player).destination = True - if world.mode[player] == 'open': + else: world.get_portal('Skull 2 West', player).destination = True world.get_portal('Turtle Rock Lazy Eyes', player).destination = True world.get_portal('Turtle Rock Eye Bridge', player).destination = True diff --git a/Rom.py b/Rom.py index 4b97fc4e..4b9680da 100644 --- a/Rom.py +++ b/Rom.py @@ -27,7 +27,7 @@ from EntranceShuffle import door_addresses, exit_ids JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = 'bffd4e834049ca5f5295601436fc6009' +RANDOMIZERBASEHASH = '3a77558175cf8b2233f87c60329baa5d' class JsonRom(object): diff --git a/asm/asm_investigations.txt b/asm/asm_investigations.txt index feb5e09b..9d0cce24 100644 --- a/asm/asm_investigations.txt +++ b/asm/asm_investigations.txt @@ -200,3 +200,14 @@ $bc - TT 188 idx 1 ; called by 10CE2, (Dungeon_SpiralStaircase_3) ;122f0 + +Link's position after screen transition and auto-walk (from $02C034): + +0C 20 30 38 48 ; down +D4 D8 C0 C0 A8 ; up +0C 18 28 30 40 ; right +E4 D8 C8 C0 B0 ; left + +Effectively indexed by $0418*#$05+$4E. +Row ($0418) is the direction and column ($4E) determines how far to auto-walk (depends on tile attribute at edge of screen). +From left to right: edge, inside high door, outside high door, inside low door and outside low door. diff --git a/asm/spiral.asm b/asm/spiral.asm index 0d13c4e7..2dd2ab8b 100644 --- a/asm/spiral.asm +++ b/asm/spiral.asm @@ -170,10 +170,10 @@ InroomStairsWarp: { ; should be the same as lda $0462 : and #$04 : lsr #2 : eor #$01 : sta $07 lda $01 : and #$80 : beq .notEdge lda $07 : sta $03 : beq + - lda $01 : jsr LoadSouthMidpoint : sta $22 : lda #$e0 + lda $01 : jsr LoadSouthMidpoint : sta $22 : lda #$f4 bra ++ + - lda $01 : jsr LoadNorthMidpoint : sta $22 : lda #$1b + lda $01 : jsr LoadNorthMidpoint : sta $22 : dec $21 : lda #$f7 ++ sta $20 lda $01 : and #$20 : beq + @@ -185,26 +185,36 @@ InroomStairsWarp: { brl .layer .notEdge lda $01 : and #$03 : cmp #$03 : bne .normal + txa : and #$06 : sta $07 lda $01 : and #$30 : lsr #3 : tay - lda.w InroomStairsX,y : sta $22 lda.w InroomStairsX+1,y : sta $02 lda.w InroomStairsY+1,y : sta $03 - lda.w InroomStairsY,y - ldy $07 : beq + - !add #$07 - + - sta $20 + cpy $07 : beq .vanillaTransition + lda.w InroomStairsX,y : sta $22 + lda.w InroomStairsY,y + ldy $07 : beq + + !add #$07 + + + sta $20 + inc $07 + bra ++ + .vanillaTransition + lda #$c0 : sta $07 ; leave camera + ++ %StonewallCheck($1b) - inc $07 lda $01 : and #$04 : lsr #2 bra .layer .normal lda $01 : sta $fe ; trap door lda $07 : sta $03 : beq + + ldy $a0 : cpy #$51 : beq .specialFix ; throne room + cpy #$02 : beq .specialFix ; sewers pull switch + cpy #$71 : beq .specialFix ; castle armory lda #$e0 - ldy $a0 : cpy #$51 : bne ++ ; special fix for throne room - !sub #$18 - bra ++ + bra ++ + .specialFix + lda #$c8 + bra ++ + %StonewallCheck($43) lda #$1b @@ -235,12 +245,15 @@ InroomStairsWarp: { ldy #$01 : jsr ShiftQuadSimple .skipYQuad + lda $07 : bmi .skipCamera ldy #$00 : jsr SetCamera ; horizontal camera ldy #$01 : sty $07 : jsr SetCamera ; vertical camera lda $20 : cmp #$e0 : bcc + lda $e8 : bne + lda #$10 : sta $e8 ; adjust vertical camera at bottom + + .skipCamera + jsr StairCleanup ply : plx : plb ; pull the stuff we pushed rts diff --git a/data/base2current.bps b/data/base2current.bps index 71800df832f4178ed90683aa6572c4bcb9765874..970df14e576c2923e6564beaed7c30e523d35e04 100644 GIT binary patch delta 1418 zcmW-fdrVVz6vyxH_Q^xQf~E4}Y7oB?EN)#)%A9aCY5P^PF=VVkc^;#iz<_-o}N z1xg>saxIDXfxaz%#ik2p`ID{OK-X*NPxq)KOv`Kh`TdcschzvhGJwKqLj_l^~PN< zeX!90^X?4nDa1q{L)^(_xF!uMM2sx5iG>-wj1dVjk^4PXhW0+iuW>wrKV^8w7^)0jo6Y~axrryw=Jhe6UYRh-0ypThxqY27L8RIw zW2hk+7JGw?tUCoyWuq~J%PsvNb^f93*V>!5TsA{R=C-{aDdm+wsbq%23dL zH+}M_jZU7_-uDWzE-Coz2GNy9lPos{R>IZ0C6iWoo+MrR(yG*s>}13TqE(y3UDUTQ z{T?kV@fbudssmQv%R{ALzNgJ2_9*Z-MLe_W7Ua7hZ?Lz=uqP7J71(mfL77{IPHk~z zcG{{=4V~QLeoL&t>^%7UUY1mzHW5Q9(D%QOixnS%loqBy@J%(t3>doKhN|JKp{}J{ z?Hq|k)EWDwu%K#R6K8)B3=0x!f-NEoZPb2?RHNngW7itdNEcw8dzkz}Ol)5!-i8!%n>>jI{R&R&%B`|1rC*eEf-U zQ4=PP@&qLYhU8_DAwpfeM3WRx96jq=l@LBiQrW-|d@P%q1}Vdt>H4zS0bFMXsPBHuBtHPMz&{JKYD zsZpNj;*$#--plc`x+pYNv?FF9z(k>cvt+Z^1PqJ%RDs4^)H(?*WRn-8bTVdnVCG^} zj^gZd#7*|79YMpSj{MYMpnVBiP$6}dE_pDofxYcUZiy&Ngb9}6&~nlI{Gq@v9Lh(c zgpKC{(H^9t^L@pN5mQ(Ayf1FSH7`Mg!{--;BcXF`D0A|-D;!QLlgr6h?rn@s^&si) YKc2O}2g-U;=Y094DOLN>ox`I40G6d!sQ>@~ delta 1366 zcmW-fYfMvT7{~jb(;L@fg|-Tq*8`)V+XOM%vB^-Gr~|xUD0477hcoKXu?jF{CGFJEL`8~h<^W^#P=k#K& zUfi<@#d8%$=x;`?)Q|N_uU8X8Td70!N*aOly&bgKOZ`-*%+uSb={iuO@-0^k%BU(U zbkQNhP!sFr8|syXm9^CJqcGYk@s*G9y?mXS>IWmSfJnGRW}|xd zeXx>XxR&FVVc=vTP<#|bn8lE-UgFO7)q#f->-@XO2iVNKbq zE;vm?>fvqb1oA@bxhI$ew=)bkqmB2J7Ciiu+;*)juUjP&cbWv zWfHV@dw0H8OBr={h`yu|hU`lmafy7S;-rYd17S2XD`Ep_hR!mMg3#6*(lP0B3?3Yl ztL7E7bfBcoSl0G*R#ZrIlrj_yPDMmSHrY5rHPhh>ZWcn9MN5vbudEad>(%H zf=Q;DFJ<`O2P#hTJFy84Pg9}@rakMERjfYRb{GZX=iahnn z&)A~ef1msAB&_h-IUb(1Fa#&^FMjIe1PKyedtdXqu$3zW4g`kB1+zyZVf$QcbZnni zY}DNlaD0CY=K5`Sm>_T(f;9<}=8G80=P2PJET@@CxH=buqTt?~5~ z0%IKg%li=GT^o`Q^cuFtRt&TRXTTQkhY9t-zHyZ874v-Y-7$;hufN&GzDV0wXUx}Y zHO)Fm{i0So247c0yZ4xMvC-&cFBR9_c8!$xC;ISWBSbwpNbHlq*(a$5AEz`iOFYP} zwTgISq;4KQWxDp{HT89b#Tx=;hH#l-oy;&TGuj1otlUZPI(R%qMQMXlQPI$#Y#-40 zl(ux)=xE1MtbaO#O|4@5u+finSX=RW2waF>eJUoLZqBN#l?+^Jl$O^RgjfhE3mGD{ zx=B00VyIczjJ|?f3q>dr5}xiAZ))9Ks%Hf`?y{#ZA_LmaCywsY$MG82vH-M^RKMHe zX%9gE#ED7@Jlgb;!=A20R3CvV*p%HUn%JM|`Di!FMWL|gjN9@-QLi?lO%Sx?>CZqr z@`O!N`S^uOmhV7z0qni{mX>XIpe$nV6VFQrN=D?W