Merge pull request #5 from Catobat/MixedMap

Implement new overworld map draw routine for Mixed
This commit is contained in:
codemann8
2022-04-20 16:51:23 -05:00
committed by GitHub

View File

@@ -54,6 +54,20 @@ jsl.l OWLightWorldOrCrossed
org $0aba6c ; < ? - Bank0a.asm:474 ()
jsl.l OWMapWorldCheck16 : nop
; Mixed Overworld Map
org $0ABA99
WorldMap_LoadDarkWorldMap:
LDA.b $10 : CMP.b #$14 ; attract module
BEQ .vanilla_light
LDA.l OWMode+1 : AND.b #$04 : BNE .mixed
LDA.b $8A : AND.b #$40
BEQ .vanilla_light
.mixed
PHB : PHK : PLB
JSL LoadMapDarkOrMixed
PLB
.vanilla_light ; $0ABAB5
;(replacing -> LDA $8A : AND.b #$40)
org $00d8c4 ; < ? - Bank00.asm:4068 ()
jsl.l OWWorldCheck
@@ -79,8 +93,6 @@ org $07aa34 ; < ? - Bank07.asm:6718 ()
jsl.l OWWorldCheck
org $08d408 ; < ? - ancilla_morph_poof.asm:48 ()
jsl.l OWWorldCheck
org $0aba99 ; < ? - Bank0a.asm:515 ()
jsl.l OWWorldCheck
org $0bfeab ; < ? - Bank0b.asm:36 ()
jsl.l OWWorldCheck16 : nop
org $0cffb6 ; < ? - ?.asm ? ()
@@ -239,6 +251,60 @@ OWOldManSpeed:
rtl
}
LoadMapDarkOrMixed:
{
CMP.b #$04 : REP #$30 : BEQ .mixed
LDX.w #$03FE ; draw vanilla Dark World (what we wrote over)
.copy_next
LDA.w $D739,X : STA.w $1000,X ; DB is $0A
DEX : DEX : BPL .copy_next
BRL .end
.mixed
LDX.b $8A
LDA.l OWTileWorldAssoc,X
STA.b $00
LDY.w #$139C
LDX.w #$003F
.next_screen
PHX
LDA.l OWTileWorldAssoc,X
EOR.b $00
AND.w #$0040
BEQ .light
TYX : BRA .copy_screen
.light
TXA : AND.w #$0024 : LSR : TAX
TYA : SEC : SBC.l LWQuadrantOffsets,X
TYX : TAY
.copy_screen ; more efficient to have X on the right side
LDA.w $C739+$00,Y : STA.b $00,X
LDA.w $C739+$02,Y : STA.b $02,X
LDA.w $C739+$20,Y : STA.b $20,X
LDA.w $C739+$22,Y : STA.b $22,X
LDA.w $C739+$40,Y : STA.b $40,X
LDA.w $C739+$42,Y : STA.b $42,X
LDA.w $C739+$60,Y : STA.b $60,X
LDA.w $C739+$62,Y : STA.b $62,X
TXY : PLX
DEY : DEY : DEY : DEY ; move one screen left
TXA : AND.w #$0007 : BNE .same_row
TYA : SEC : SBC.w #$0060 : TAY ; move one screen row up
.same_row
DEX
BPL .next_screen
.end
SEP #$30
LDA.b #$15 : STA.b $17 ; what we wrote over
RTL
LWQuadrantOffsets:
dw $1000-$0210 ; top left
dw $0C00-$01F0 ; top right
dw 0,0,0,0,0,0
dw $0800+$01F0 ; bottom left
dw $0400+$0210 ; bottom
}
org $aa9000
OWEdgeTransition:
{