diff --git a/flipperkill.asm b/flipperkill.asm index 6f8c420..67b84be 100644 --- a/flipperkill.asm +++ b/flipperkill.asm @@ -134,4 +134,21 @@ protectff: .spow db $80, $81, $81, $FF, $FF, $FF, $FF, $FF - db $FF, $81, $81, $FF, $FF, $FF, $FF, $FF \ No newline at end of file + db $FF, $81, $81, $FF, $FF, $FF, $FF, $FF + +FlipperScrollWarp: + STZ $00 : STZ $02 ; what we wrote over + LDA $308358 : BEQ .checkX : RTL + .checkX + LDA $22 : CMP.w $0604 : BCC + + CMP.w $0616 : BCS + + BRA .checkY + + LDA $7EC186 + STA $22 + .checkY + LDA $20 : CMP.w $0600 : BCC + + CMP.w $0612 : BCS + + RTL + + LDA $7EC184 + STA $20 +RTL \ No newline at end of file diff --git a/hooks.asm b/hooks.asm index 1f6ae78..1ea520b 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2322,6 +2322,9 @@ FakeFlipperProtection: JSL protectff RTS ;-------------------------------------------------------------------------------- +org $02B46C ; <- bank_02.asm:9722 (STZ.b $00 : STZ.b $02) +JSL FlipperScrollWarp +;-------------------------------------------------------------------------------- ;org $078F27 ; <- 38F27 ;JSL.l FlipperReset ;-------------------------------------------------------------------------------- @@ -2368,6 +2371,7 @@ JML.l MirrorBonk MirrorBonk_NormalReturn: org $07A9D1 ; <- 3A9D1 - Bank07.asm:6649 (BRANCH_GAMMA:) MirrorBonk_BranchGamma: +JML.l OWMirrorSpriteMove ;================================================================================ ;================================================================================ diff --git a/owrando.asm b/owrando.asm index ada8e1c..c192f76 100644 --- a/owrando.asm +++ b/owrando.asm @@ -146,6 +146,7 @@ OWPreserveMirrorSprite: { lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .vanilla rtl ; if OW Crossed, skip world check and continue + .vanilla lda InvertedMode : beq + lda $7ef3ca : beq .deleteMirror @@ -157,6 +158,12 @@ OWPreserveMirrorSprite: pla : lda #$de : pha ; in vanilla, if in dark world, jump to $05afdf rtl } +OWMirrorSpriteMove: +{ + lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq + + lda $1acf : eor #$80 : sta $1acf + + lda #$2c : jml.l $07A985 ; what we wrote over +} OWFluteCancel: { @@ -402,6 +409,14 @@ OWWorldUpdate: ; x = owid of destination screen { lda.l OWTileWorldAssoc,x : cmp.l $7ef3ca : beq .return sta.l $7ef3ca ; change world + + ; moving mirror portal off screen when in DW + cmp #0 : beq + : lda #1 + + cmp.l InvertedMode : bne + + lda $1acf : and #$0f : sta $1acf : bra .playSfx ; bring portal back into position + + lda $1acf : eor #$80 : sta $1acf ; move portal off screen + + .playSfx lda #$38 : sta $012f ; play sfx - #$3b is an alternative ; toggle bunny mode