New solution for mirror portal disabling in Crossed OWR
This commit is contained in:
37
owrando.asm
37
owrando.asm
@@ -56,9 +56,13 @@ Link_ResetSwimmingState:
|
|||||||
|
|
||||||
|
|
||||||
; mirror hooks
|
; mirror hooks
|
||||||
|
org $0283DC ; override world check when spawning mirror portal sprite in Crossed OWR
|
||||||
|
jsl.l OWLightWorldOrCrossed
|
||||||
org $05AF75
|
org $05AF75
|
||||||
Sprite_6C_MirrorPortal:
|
Sprite_6C_MirrorPortal:
|
||||||
jsl OWMirrorSpriteDisable ; LDA $7EF3CA
|
jsl OWMirrorSpriteDisable ; LDA $7EF3CA
|
||||||
|
org $05AF88
|
||||||
|
jsl OWMirrorSpriteSkipDraw : NOP ; LDA.w $0FC6 : CMP.b #$03
|
||||||
org $05AFDF
|
org $05AFDF
|
||||||
Sprite_6C_MirrorPortal_missing_mirror:
|
Sprite_6C_MirrorPortal_missing_mirror:
|
||||||
org $0ABFB6
|
org $0ABFB6
|
||||||
@@ -97,10 +101,6 @@ jsl OWOldManSpeed
|
|||||||
;org $09c957 ; <- 4c957
|
;org $09c957 ; <- 4c957
|
||||||
;dw #$cb5f ; matches value on Central Bonk Rocks screen
|
;dw #$cb5f ; matches value on Central Bonk Rocks screen
|
||||||
|
|
||||||
; override world check when spawning mirror portal sprite in Crossed OWR
|
|
||||||
org $0283dc
|
|
||||||
jsl.l OWLightWorldOrCrossed
|
|
||||||
|
|
||||||
; override world check when viewing overworld (incl. title screen portion)
|
; override world check when viewing overworld (incl. title screen portion)
|
||||||
org $0aba6c ; < ? - Bank0a.asm:474 ()
|
org $0aba6c ; < ? - Bank0a.asm:474 ()
|
||||||
jsl.l OWMapWorldCheck16 : nop
|
jsl.l OWMapWorldCheck16 : nop
|
||||||
@@ -263,20 +263,11 @@ OWMirrorSpriteOnMap:
|
|||||||
}
|
}
|
||||||
OWMirrorSpriteDisable:
|
OWMirrorSpriteDisable:
|
||||||
{
|
{
|
||||||
LDA.b $10 : CMP.b #$0F : BEQ + ; avoid rare freeze during mirror superbunny
|
LDA.b $10 : CMP.b #$0F : BNE + ; avoid rare freeze during mirror superbunny
|
||||||
RTL
|
PLA : PLA : PLA : JML Sprite_6C_MirrorPortal_missing_mirror
|
||||||
+ PLA : PLA : PLA : JML Sprite_6C_MirrorPortal_missing_mirror
|
+
|
||||||
|
|
||||||
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .vanilla
|
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .vanilla
|
||||||
stz.w $0FC6 ; enable drawing portal
|
|
||||||
lda.l InvertedMode : beq +
|
|
||||||
lda.l CurrentWorld : eor.b #$40
|
|
||||||
bra ++
|
|
||||||
+ lda.l CurrentWorld : ++ beq .return
|
|
||||||
lda.b #$03 : sta.w $0FC6 ; skips drawing portal
|
|
||||||
stz.w $0DD0,x ; disables collision
|
|
||||||
|
|
||||||
.return
|
|
||||||
lda.l InvertedMode : beq +
|
lda.l InvertedMode : beq +
|
||||||
lda.b #$40
|
lda.b #$40
|
||||||
+ rtl
|
+ rtl
|
||||||
@@ -285,6 +276,20 @@ OWMirrorSpriteDisable:
|
|||||||
lda.l CurrentWorld ; what we wrote over
|
lda.l CurrentWorld ; what we wrote over
|
||||||
rtl
|
rtl
|
||||||
}
|
}
|
||||||
|
OWMirrorSpriteSkipDraw:
|
||||||
|
{
|
||||||
|
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .vanilla
|
||||||
|
lda.l InvertedMode : beq +
|
||||||
|
lda.l CurrentWorld : eor.b #$40
|
||||||
|
bra ++
|
||||||
|
+ lda.l CurrentWorld : ++ beq .vanilla
|
||||||
|
stz.w $0D90,x ; disables collision
|
||||||
|
sec : rtl
|
||||||
|
|
||||||
|
.vanilla
|
||||||
|
LDA.w $0FC6 : CMP.b #$03 ; what we wrote over
|
||||||
|
RTL
|
||||||
|
}
|
||||||
OWLightWorldOrCrossed:
|
OWLightWorldOrCrossed:
|
||||||
{
|
{
|
||||||
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq ++
|
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq ++
|
||||||
|
|||||||
Reference in New Issue
Block a user