Updated ROM build

This commit is contained in:
codemann8
2022-05-21 21:03:21 -05:00
parent e3b9348977
commit 592d24cbf8

View File

@@ -39,8 +39,17 @@ org $04E8B4
Overworld_LoadSpecialOverworld: Overworld_LoadSpecialOverworld:
org $05af75 ; mirror hooks
org $02FBAB
JSL OWMirrorSpriteRestore : NOP
org $05AF75
Sprite_6C_MirrorPortal:
jsl OWPreserveMirrorSprite : nop #2 ; LDA $7EF3CA : BNE $05AFDF jsl OWPreserveMirrorSprite : nop #2 ; LDA $7EF3CA : BNE $05AFDF
org $05AFDF
Sprite_6C_MirrorPortal_missing_mirror:
JML OWMirrorSpriteDelete : NOP ; STZ $0DD0,X : BRA $05AFF1
org $0ABFBF
JSL OWMirrorSpriteOnMap : BRA + : NOP #6 : +
; whirlpool shuffle cross world change ; whirlpool shuffle cross world change
org $02b3bd org $02b3bd
@@ -196,38 +205,61 @@ OWWhirlpoolUpdate:
rtl rtl
} }
OWMirrorSpriteOnMap:
{
lda.w $1ac0,x : bit.b #$f0 : beq .continue
lda.b #$00 : rtl
.continue
ora.w $1ab0,x
ora.w $1ad0,x
ora.w $1ae0,x
rtl
}
OWPreserveMirrorSprite: OWPreserveMirrorSprite:
{ {
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .vanilla lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .vanilla ; if OW Crossed, skip world check and continue
rtl ; if OW Crossed, skip world check and continue lda $10 : cmp.b #$0f : beq .vanilla
rtl
.vanilla .vanilla
lda InvertedMode : beq + lda.l InvertedMode : beq +
lda $7ef3ca : beq .deleteMirror lda.l $7ef3ca : beq .deleteMirror
rtl rtl
+ lda $7ef3ca : bne .deleteMirror + lda.l $7ef3ca : bne .deleteMirror
rtl rtl
.deleteMirror .deleteMirror
pla : lda #$de : pha ; in vanilla, if in dark world, jump to $05afdf lda.b $10 : cmp.b #$0f : bne +
rtl jsr.w OWMirrorSpriteMove ; if performing mirror superbunny
+ pla : pla : pla : jml Sprite_6C_MirrorPortal_missing_mirror
} }
OWMirrorSpriteMove: OWMirrorSpriteMove:
{ {
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq + lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq +
lda $1acf : eor #$80 : sta $1acf lda.w $1acf : ora.b #$40 : sta.w $1acf
+ lda #$2c : jml.l $07A985 ; what we wrote over + rts
}
OWMirrorSpriteBonk:
{
jsr.w OWMirrorSpriteMove
lda.b #$2c : jml.l SetGameModeLikeMirror ; what we wrote over
}
OWMirrorSpriteDelete:
{
stz.w $0dd0,x ; what we wrote over
jsr.w OWMirrorSpriteMove
jml Sprite_6C_MirrorPortal_dont_do_warp
} }
OWMirrorSpriteRestore: OWMirrorSpriteRestore:
{ {
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .return lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .return
lda InvertedMode : beq + lda.l InvertedMode : beq +
lda $7ef3ca : beq .return lda.l $7ef3ca : beq .return
bra .restorePortal bra .restorePortal
+ lda $7ef3ca : bne .return + lda.l $7ef3ca : bne .return
.restorePortal .restorePortal
lda $1acf : and #$0f : sta $1acf lda.w $1acf : and.b #$0f : sta.w $1acf
.return .return
rep #$30 : lda.w $04AC ; what we wrote over rep #$30 : lda.w $04AC ; what we wrote over
@@ -603,7 +635,7 @@ OWWorldUpdate: ; x = owid of destination screen
cmp #0 : beq + : lda #1 cmp #0 : beq + : lda #1
+ cmp.l InvertedMode : bne + + cmp.l InvertedMode : bne +
lda $1acf : and #$0f : sta $1acf : bra .playSfx ; bring portal back into position lda $1acf : and #$0f : sta $1acf : bra .playSfx ; bring portal back into position
+ lda $1acf : eor #$80 : sta $1acf ; move portal off screen + lda $1acf : ora #$40 : sta $1acf ; move portal off screen
.playSfx .playSfx
lda #$38 : sta $012f ; play sfx - #$3b is an alternative lda #$38 : sta $012f ; play sfx - #$3b is an alternative