diff --git a/bugfixes.asm b/bugfixes.asm index 4a2dcba..f3ba207 100644 --- a/bugfixes.asm +++ b/bugfixes.asm @@ -49,7 +49,7 @@ DecideIfBunnyByScreenIndex: ; superbunny work LDA $1B : BNE .done LDA $7EF357 : BNE .done - LDA $8A : AND.b #$40 : PHA + PHX : LDX $8A : LDA.l OWTileWorldAssoc, X : PLX : PHA LDA.l InvertedMode : BNE .inverted .normal PLA : EOR #$40 diff --git a/darkworldspawn.asm b/darkworldspawn.asm index 693bab6..fb6355a 100644 --- a/darkworldspawn.asm +++ b/darkworldspawn.asm @@ -74,7 +74,7 @@ JMP DoWorldFix JMP DoWorldFix_Inverted_skip_mirror_check .castle - LDA #$00 : STA $7EF3CA ; set flag to dark world + LDA #$00 : STA $7EF3CA ; set flag to light world LDA $7EF3CC : CMP #$07 : BNE + : LDA.b #$08 : STA $7EF3CC : + ; convert frog to dwarf .done RTL @@ -84,7 +84,9 @@ RTL ;-------------------------------------------------------------------------------- FakeWorldFix: LDA FixFakeWorld : BEQ + - LDA $8A : AND.b #$40 : STA $7EF3CA + PHX + LDX $8A : LDA.l OWTileWorldAssoc, X : STA $7EF3CA + PLX + RTL ;-------------------------------------------------------------------------------- diff --git a/entrances.asm b/entrances.asm index 2b2f171..f0f94cf 100644 --- a/entrances.asm +++ b/entrances.asm @@ -184,7 +184,7 @@ PreventEnterOnBonk: STA $00 ; part of what we wrote over LDA.l InvertedMode : AND.w #$00FF : BEQ .done LDA.l $5D : AND.w #$00FF : CMP.w #$0014 : BNE .done ;in mirror mode? - LDA.b $8A : AND.w #$0040 : CMP $7B : BEQ .done ; Are we bonking, or doing the superbunny glitch? + LDA.b $8A : TAX : LDA.l OWTileWorldAssoc, X : AND.w #$00FF : CMP $7B : BEQ .done ; Are we bonking, or doing the superbunny glitch? ; If in inverted, are in mirror mode, and are bonking then do not enter JML.l PreventEnterOnBonk_BRANCH_IX @@ -202,15 +202,15 @@ TurtleRockEntranceFix: RTL ;-------------------------------------------------------------------------------- AnimatedEntranceFix: ;when an entrance animation tries to start - PHA + PHA : PHX LDA.l InvertedMode : BEQ + ;If we are in inverted mode - LDA $8A : AND.b #$40 : BNE + ;and in the light world - PLA + LDX $8A : LDA.l OWTileWorldAssoc, X : BNE + ;and in the light world + PLX : PLA STZ $04C6 ; skip it. LDA #$00 RTL + - PLA + PLX : PLA STA $02E4 ;what we wrote over STA $0FC1 ;what we wrote over STA $0710 ;what we wrote over diff --git a/inverted.asm b/inverted.asm index b60085d..75d1aaa 100644 --- a/inverted.asm +++ b/inverted.asm @@ -202,7 +202,7 @@ MirrorBonk: ; otherwise fall through to .normal PHX : PHP PHB : PHK : PLB - LDA $8A : AND.b #$40 : BEQ .endLoop ;World we're in? branch if we are in LW we don't want bonks + LDX $8A : LDA.l OWTileWorldAssoc, X : BEQ .endLoop ;World we're in? branch if we are in LW we don't want bonks REP #$30 LDX #$0000 .loop diff --git a/invertedmaps.asm b/invertedmaps.asm index 9098183..49d1229 100644 --- a/invertedmaps.asm +++ b/invertedmaps.asm @@ -19,7 +19,7 @@ Overworld_LoadNewTiles: + SEP #$30 - LDA InvertedMode : BEQ .notInverted + LDX $8A : LDA.l OWTileMapAlt, X : BEQ .notInverted PHB ; Set the data bank to $7E. diff --git a/multiworld.asm b/multiworld.asm index f1f6990..6a4abf9 100644 --- a/multiworld.asm +++ b/multiworld.asm @@ -270,7 +270,8 @@ Multiworld_Ancilla_ReceiveItem_stillInMotion: Multiworld_ConsumingFire_TransmuteToSkullWoodsFire: { - LDA $8A : AND.b #$40 : BEQ .failed ; things we wrote over + ;LDA $8A : AND.b #$40 : BEQ .failed ; things we wrote over + PHX : LDX $8A : LDA.l OWTileWorldAssoc, X : PLX : AND.b #$FF : BEQ .failed LDA $0C4A : CMP #$22 : BEQ .failed LDA $0C4B : CMP #$22 : BEQ .failed LDA $0C4C : CMP #$22 : BEQ .failed diff --git a/overrides.asm b/overrides.asm index 8f78bb5..cb14548 100644 --- a/overrides.asm +++ b/overrides.asm @@ -47,7 +47,8 @@ OnFileLoadOverride: MirrorCheckOverride: lda.l DRFlags : and #$02 : beq ++ lda $7ef353 : cmp #$01 : beq + - ++ lda $8A : and #$40 ; what I wrote over + ;++ lda $8A : and #$40 ; what I wrote over + ++ phx : ldx $8A : lda.l OWTileWorldAssoc,x : plx : and.b #$ff rtl + lda.l DRScroll : rtl diff --git a/owrando.asm b/owrando.asm index 161006d..962ed00 100644 --- a/owrando.asm +++ b/owrando.asm @@ -12,6 +12,48 @@ dw 0 org $02a999 jsl OWEdgeTransition : nop #4 ;LDA $02A4E3,X : ORA $7EF3CA +;(replacing -> LDA $8A : AND.b #$40) +org $00d8c4 ; < ? - Bank00.asm 4068 () +jsl.l OWWorldCheck +org $0283dc ; < ? - Bank02.asm 816 () +jsl.l OWWorldCheck +org $02aa36 ; < ? - Bank02.asm 6559 () +jsl.l OWWorldCheck +org $02aeca ; < ? - Bank02.asm 7257 () +jsl.l OWWorldCheck16 : nop +org $02b349 ; < ? - Bank02.asm 7902 () +jsl.l OWWorldCheck +org $02c40a ; < ? - Bank02.asm 10547 () +jsl.l OWWorldCheck +org $05afd9 ; < ? - sprite_warp_vortex.asm 60 () +jsl.l OWWorldCheck +org $07a3f0 ; < ? - Bank07.asm 5772 () +jsl.l OWWorldCheck +org $07a967 ; < ? - Bank07.asm 6578 () +jsl.l OWWorldCheck +org $07a9a1 ; < ? - Bank07.asm 6622 () +jsl.l OWWorldCheck +org $07a9ed ; < ? - Bank07.asm 6677 () +jsl.l OWWorldCheck +org $07aa34 ; < ? - Bank07.asm 6718 () +jsl.l OWWorldCheck +org $08d408 ; < ? - ancilla_morph_poof.asm 48 () +jsl.l OWWorldCheck +org $0aba6c ; < ? - Bank0a.asm 474 () +jsl.l OWWorldCheck16 : nop +org $0aba99 ; < ? - Bank0a.asm 515 () +jsl.l OWWorldCheck +org $0bfeab ; < ? - Bank0b.asm 36 () +jsl.l OWWorldCheck16 : nop +org $0cffb6 ; < ? - ?.asm ? () +jsl.l OWWorldCheck16 : nop +org $0cffe8 ; < ? - ?.asm ? () +jsl.l OWWorldCheck16 : nop +org $1beca2 ; < ? - palettes.asm 556 () +jsl.l OWWorldCheck16 : nop +org $1bed95 ; < ? - palettes.asm 748 () +jsl.l OWWorldCheck16 : nop + ;Code org $aa8800 OWCoordIndex: ; Horizontal 1st @@ -35,6 +77,19 @@ db 2, 2, 0, 0 ; For OWCameraRange OWCameraRange: dw $011E, $0100 ; Length of the range the camera can move on small screens +OWWorldCheck: +{ + phx + ldx $8a : lda.l OWTileWorldAssoc,x + plx : and.b #$ff : rtl +} +OWWorldCheck16: +{ + phx + ldx $8a : lda.l OWTileWorldAssoc,x + plx : and.w #$00ff : rtl +} + org $aa9000 OWEdgeTransition: { @@ -660,3 +715,42 @@ dw $0f78, $0fb8, $0040, $0f98, $7c7c, $0000, $0000, $0048 dw $0f20, $0f40, $0020, $0f30, $757e, $0000, $0000, $0049 dw $0f70, $0fb8, $0048, $0f94, $757e, $0000, $0000, $004a dw $0058, $00c0, $0068, $008c, $8080, $0000, $0000, $0017 ;Hobo + +org $aaba00 ;PC 153a00 +OWTileWorldAssoc: +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db $40, $40, $40, $40, $40, $40, $40, $40 +db $40, $40, $40, $40, $40, $40, $40, $40 +db $40, $40, $40, $40, $40, $40, $40, $40 +db $40, $40, $40, $40, $40, $40, $40, $40 +db $40, $40, $40, $40, $40, $40, $40, $40 +db $40, $40, $40, $40, $40, $40, $40, $40 +db $40, $40, $40, $40, $40, $40, $40, $40 +db $40, $40, $40, $40, $40, $40, $40, $40 + +org $aabb00 ;PC 153b00 +OWTileMapAlt: +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 + +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0