Merged in DR v1.4.1.6
This commit is contained in:
@@ -2,12 +2,12 @@
|
||||
; Ram usage
|
||||
|
||||
HorzEdge:
|
||||
cpy #$ff : beq +
|
||||
jsr DetectWestEdge : ldy #$02 : bra ++
|
||||
cpy.b #$ff : beq +
|
||||
jsr DetectWestEdge : ldy.b #$02 : bra ++
|
||||
+ jsr DetectEastEdge
|
||||
++ cmp #$ff : beq +
|
||||
sta $00 : asl : !add $00 : tax
|
||||
cpy #$ff : beq ++
|
||||
sta.b Scrap00 : asl : !add.b Scrap00 : tax
|
||||
cpy.b #$ff : beq ++
|
||||
jsr LoadWestData : bra .main
|
||||
++ jsr LoadEastData
|
||||
.main
|
||||
@@ -16,12 +16,12 @@ HorzEdge:
|
||||
+ clc : rts
|
||||
|
||||
VertEdge:
|
||||
cpy #$ff : beq +
|
||||
cpy.b #$ff : beq +
|
||||
jsr DetectNorthEdge : bra ++
|
||||
+ jsr DetectSouthEdge
|
||||
++ cmp #$ff : beq +
|
||||
sta $00 : asl : !add $00 : tax
|
||||
cpy #$ff : beq ++
|
||||
++ cmp.b #$ff : beq +
|
||||
sta.b Scrap00 : asl : !add.b Scrap00 : tax
|
||||
cpy.b #$ff : beq ++
|
||||
jsr LoadNorthData : bra .main
|
||||
++ jsr LoadSouthData
|
||||
.main
|
||||
@@ -30,20 +30,20 @@ VertEdge:
|
||||
+ clc : rts
|
||||
|
||||
LoadEdgeRoomHorz:
|
||||
lda $03 : sta $a0
|
||||
sty $06
|
||||
and.b #$0f : asl a : !sub $23 : !add $06 : sta $02
|
||||
lda.b Scrap03 : sta.b RoomIndex
|
||||
sty.b Scrap06
|
||||
and.b #$0f : asl a : !sub.b LinkPosX+1 : !add.b Scrap06 : sta.b Scrap02
|
||||
ldy #$00 : jsr ShiftVariablesMainDir
|
||||
|
||||
lda $04 : and #$80 : bne .edge
|
||||
lda $04 : sta $01 ; load up flags in $01
|
||||
lda.b Scrap04 : and.b #$80 : bne .edge
|
||||
lda.b Scrap04 : sta.b Scrap01 ; load up flags in $01
|
||||
jsr PrepScrollToNormal
|
||||
bra .scroll
|
||||
|
||||
.edge
|
||||
lda $04 : and #$10 : beq +
|
||||
lda #$01
|
||||
+ sta $ee ; layer stuff
|
||||
lda.b Scrap04 : and.b #$10 : beq +
|
||||
lda.b #$01
|
||||
+ sta.b LinkLayer ; layer stuff
|
||||
|
||||
jsr MathHorz
|
||||
|
||||
@@ -52,14 +52,14 @@ LoadEdgeRoomHorz:
|
||||
rts
|
||||
|
||||
LoadEdgeRoomVert:
|
||||
lda $03 : sta $a0
|
||||
sty $06
|
||||
and.b #$f0 : lsr #3 : !sub $21 : !add $06 : sta $02
|
||||
lda.b Scrap03 : sta.b RoomIndex
|
||||
sty.b Scrap06
|
||||
and.b #$f0 : lsr #3 : !sub.b LinkPosY+1 : !add.b Scrap06 : sta.b Scrap02
|
||||
|
||||
lda $04 : and #$80 : bne .edge
|
||||
lda $04 : sta $01 ; load up flags in $01
|
||||
and #$03 : cmp #$03 : beq .inroom
|
||||
ldy #$01 : jsr ShiftVariablesMainDir
|
||||
lda.b Scrap04 : and.b #$80 : bne .edge
|
||||
lda.b Scrap04 : sta.b Scrap01 ; load up flags in $01
|
||||
and.b #$03 : cmp.b #$03 : beq .inroom
|
||||
ldy.b #$01 : jsr ShiftVariablesMainDir
|
||||
jsr PrepScrollToNormal
|
||||
bra .scroll
|
||||
|
||||
@@ -68,13 +68,13 @@ LoadEdgeRoomVert:
|
||||
rts
|
||||
|
||||
.edge
|
||||
ldy #$01 : jsr ShiftVariablesMainDir
|
||||
lda $04 : and #$10 : beq +
|
||||
lda #$01
|
||||
+ sta $ee ; layer stuff
|
||||
ldy.b #$01 : jsr ShiftVariablesMainDir
|
||||
lda.b Scrap04 : and.b #$10 : beq +
|
||||
lda.b #$01
|
||||
+ sta.b LinkLayer ; layer stuff
|
||||
|
||||
jsr MathVert
|
||||
lda $03
|
||||
lda.b Scrap03
|
||||
|
||||
.scroll
|
||||
jsr ScrollX
|
||||
@@ -82,220 +82,220 @@ LoadEdgeRoomVert:
|
||||
|
||||
|
||||
MathHorz:
|
||||
jsr MathStart : lda $20
|
||||
jsr MathMid : and #$0040
|
||||
jsr MathStart : lda.b LinkPosY
|
||||
jsr MathMid : and.w #$0040
|
||||
jsr MathEnd
|
||||
rts
|
||||
|
||||
MathVert:
|
||||
jsr MathStart : lda $22
|
||||
jsr MathMid : and #$0020
|
||||
jsr MathStart : lda.b LinkPosX
|
||||
jsr MathMid : and.w #$0020
|
||||
jsr MathEnd
|
||||
rts
|
||||
|
||||
MathStart:
|
||||
rep #$30
|
||||
lda $08 : and #$00ff : sta $00
|
||||
lda.b Scrap08 : and.w #$00ff : sta.b Scrap00
|
||||
rts
|
||||
|
||||
MathMid:
|
||||
and #$01ff : !sub $00 : and #$00ff : sta $00
|
||||
and.w #$01ff : !sub.b Scrap00 : and.w #$00ff : sta.b Scrap00
|
||||
; nothing should be bigger than $a0 at this point
|
||||
|
||||
lda $05 : and #$00f0 : lsr #4 : tax
|
||||
lda MultDivInfo, x : and #$00ff : tay
|
||||
lda $00 : jsr MultiplyByY : sta $02
|
||||
lda.b Scrap05 : and.w #$00f0 : lsr #4 : tax
|
||||
lda.w MultDivInfo, x : and.w #$00ff : tay
|
||||
lda.b Scrap00 : jsr MultiplyByY : sta.b Scrap02
|
||||
|
||||
lda $07 : and #$00ff : jsr MultiplyByY : tax
|
||||
lda.b Scrap07 : and.w #$00ff : jsr MultiplyByY : tax
|
||||
|
||||
lda $05 : and #$000f : tay
|
||||
lda MultDivInfo, y : and #$00ff : tay
|
||||
lda $02 : jsr DivideByY : sta $00
|
||||
lda $0c : and #$00ff : sta $02
|
||||
lda $04
|
||||
lda.b Scrap05 : and.w #$000f : tay
|
||||
lda.w MultDivInfo, y : and.w #$00ff : tay
|
||||
lda.b Scrap02 : jsr DivideByY : sta.b Scrap00
|
||||
lda.b Scrap0C : and.w #$00ff : sta.b Scrap02
|
||||
lda.b Scrap04
|
||||
rts
|
||||
|
||||
MathEnd:
|
||||
beq +
|
||||
lda #$0100
|
||||
+ !add $02 : !add $00
|
||||
sta $04
|
||||
lda.w #$0100
|
||||
+ !add.b Scrap02 : !add.b Scrap00
|
||||
sta.b Scrap04
|
||||
sep #$30
|
||||
rts
|
||||
|
||||
; don't need midpoint of edge Link is leaving (formerly in $06 - used by dir indicator)
|
||||
; don't need width of edge Link is going to (currently in $0b)
|
||||
LoadNorthData:
|
||||
lda NorthOpenEdge, x : sta $03 : inx ; target room
|
||||
lda NorthEdgeInfo, x : sta $07 ; needed for maths - (divide by 2 anyway)
|
||||
lda NorthOpenEdge, x : sta $04 : inx ; bit field
|
||||
lda NorthEdgeInfo, x : sta $08 ; needed for maths
|
||||
lda NorthOpenEdge, x : sta $05 ; ratio
|
||||
lda $04 : jsr LoadSouthMidpoint : inx ; needed now, and for nrml transition
|
||||
lda SouthEdgeInfo, x : sta $0b : inx ; probably not needed todo: remove
|
||||
lda SouthEdgeInfo, x : sta $0c ; needed for maths
|
||||
lda.w NorthOpenEdge, x : sta.b Scrap03 : inx ; target room
|
||||
lda.w NorthEdgeInfo, x : sta.b Scrap07 ; needed for maths - (divide by 2 anyway)
|
||||
lda.w NorthOpenEdge, x : sta.b Scrap04 : inx ; bit field
|
||||
lda.w NorthEdgeInfo, x : sta.b Scrap08 ; needed for maths
|
||||
lda.w NorthOpenEdge, x : sta.b Scrap05 ; ratio
|
||||
lda.b Scrap04 : jsr LoadSouthMidpoint : inx ; needed now, and for nrml transition
|
||||
lda.w SouthEdgeInfo, x : sta.b Scrap0B : inx ; probably not needed todo: remove
|
||||
lda.w SouthEdgeInfo, x : sta.b Scrap0C ; needed for maths
|
||||
rts
|
||||
|
||||
LoadSouthMidpoint:
|
||||
and #$0f : sta $00 : asl : !add $00 : tax
|
||||
lda SouthEdgeInfo, x : sta $0a ; needed now, and for nrml transition
|
||||
and.b #$0f : sta.b Scrap00 : asl : !add.b Scrap00 : tax
|
||||
lda.w SouthEdgeInfo, x : sta.b Scrap0A ; needed now, and for nrml transition
|
||||
rts
|
||||
|
||||
LoadSouthData:
|
||||
lda SouthOpenEdge, x : sta $03 : inx
|
||||
lda SouthEdgeInfo, x : sta $07
|
||||
lda SouthOpenEdge, x : sta $04 : inx
|
||||
lda SouthEdgeInfo, x : sta $08
|
||||
lda SouthOpenEdge, x : sta $05
|
||||
lda $04 : jsr LoadNorthMidpoint : inx
|
||||
lda NorthEdgeInfo, x : sta $0b : inx
|
||||
lda NorthEdgeInfo, x : sta $0c
|
||||
lda.w SouthOpenEdge, x : sta.b Scrap03 : inx
|
||||
lda.w SouthEdgeInfo, x : sta.b Scrap07
|
||||
lda.w SouthOpenEdge, x : sta.b Scrap04 : inx
|
||||
lda.w SouthEdgeInfo, x : sta.b Scrap08
|
||||
lda.w SouthOpenEdge, x : sta.b Scrap05
|
||||
lda.b Scrap04 : jsr LoadNorthMidpoint : inx
|
||||
lda.w NorthEdgeInfo, x : sta.b Scrap0B : inx
|
||||
lda.w NorthEdgeInfo, x : sta.b Scrap0C
|
||||
rts
|
||||
|
||||
LoadNorthMidpoint:
|
||||
and #$0f : sta $00 : asl : !add $00 : tax
|
||||
lda NorthEdgeInfo, x : sta $0a ; needed now, and for nrml transition
|
||||
and.b #$0f : sta.b Scrap00 : asl : !add.b Scrap00 : tax
|
||||
lda.w NorthEdgeInfo, x : sta.b Scrap0A ; needed now, and for nrml transition
|
||||
rts
|
||||
|
||||
LoadWestData:
|
||||
lda WestOpenEdge, x : sta $03 : inx
|
||||
lda WestEdgeInfo, x : sta $07
|
||||
lda WestOpenEdge, x : sta $04 : inx
|
||||
lda WestEdgeInfo, x : sta $08
|
||||
lda WestOpenEdge, x : sta $05
|
||||
lda $04 : jsr LoadEastMidpoint : inx
|
||||
lda EastEdgeInfo, x : sta $0b : inx
|
||||
lda EastEdgeInfo, x : sta $0c
|
||||
lda.w WestOpenEdge, x : sta.b Scrap03 : inx
|
||||
lda.w WestEdgeInfo, x : sta.b Scrap07
|
||||
lda.w WestOpenEdge, x : sta.b Scrap04 : inx
|
||||
lda.w WestEdgeInfo, x : sta.b Scrap08
|
||||
lda.w WestOpenEdge, x : sta.b Scrap05
|
||||
lda.b Scrap04 : jsr LoadEastMidpoint : inx
|
||||
lda.w EastEdgeInfo, x : sta.b Scrap0B : inx
|
||||
lda.w EastEdgeInfo, x : sta.b Scrap0C
|
||||
rts
|
||||
|
||||
LoadEastMidpoint:
|
||||
and #$0f : sta $00 : asl : !add $00 : tax
|
||||
lda EastEdgeInfo, x : sta $0a ; needed now, and for nrml transition
|
||||
and.b #$0f : sta.b Scrap00 : asl : !add.b Scrap00 : tax
|
||||
lda.w EastEdgeInfo, x : sta.b Scrap0A ; needed now, and for nrml transition
|
||||
rts
|
||||
|
||||
LoadEastData:
|
||||
lda EastOpenEdge, x : sta $03 : inx
|
||||
lda EastEdgeInfo, x : sta $07
|
||||
lda EastOpenEdge, x : sta $04 : inx
|
||||
lda EastEdgeInfo, x : sta $08
|
||||
lda EastOpenEdge, x : sta $05
|
||||
lda $04 : jsr LoadWestMidpoint : inx
|
||||
lda WestEdgeInfo, x : sta $0b : inx
|
||||
lda WestEdgeInfo, x : sta $0c
|
||||
lda.w EastOpenEdge, x : sta.b Scrap03 : inx
|
||||
lda.w EastEdgeInfo, x : sta.b Scrap07
|
||||
lda.w EastOpenEdge, x : sta.b Scrap04 : inx
|
||||
lda.w EastEdgeInfo, x : sta.b Scrap08
|
||||
lda.w EastOpenEdge, x : sta.b Scrap05
|
||||
lda.b Scrap04 : jsr LoadWestMidpoint : inx
|
||||
lda.w WestEdgeInfo, x : sta.b Scrap0B : inx
|
||||
lda.w WestEdgeInfo, x : sta.b Scrap0C
|
||||
|
||||
|
||||
LoadWestMidpoint:
|
||||
and #$0f : sta $00 : asl : !add $00 : tax
|
||||
lda WestEdgeInfo, x : sta $0a ; needed now, and for nrml transition
|
||||
and.b #$0f : sta.b Scrap00 : asl : !add.b Scrap00 : tax
|
||||
lda.w WestEdgeInfo, x : sta.b Scrap0A ; needed now, and for nrml transition
|
||||
rts
|
||||
|
||||
|
||||
DetectNorthEdge:
|
||||
ldx #$ff
|
||||
lda $a2
|
||||
cmp #$82 : bne +
|
||||
lda $22 : cmp #$50 : bcs ++
|
||||
ldx #$01 : bra .end
|
||||
++ ldx #$00 : bra .end
|
||||
+ cmp #$83 : bne +
|
||||
ldx #$02 : bra .end
|
||||
+ cmp #$84 : bne +
|
||||
lda $a9 : beq ++
|
||||
lda $22 : cmp #$78 : bcs +++
|
||||
ldx #$04 : bra .end
|
||||
+++ ldx #$05 : bra .end
|
||||
++ lda $22 : cmp #$78 : bcs ++
|
||||
ldx #$03 : bra .end
|
||||
++ ldx #$04 : bra .end
|
||||
+ cmp #$85 : bne +
|
||||
ldx #$06 : bra .end
|
||||
+ cmp #$db : bne +
|
||||
lda $a9 : beq ++
|
||||
lda $22 : beq ++
|
||||
ldx #$08 : bra .end
|
||||
++ ldx #$07 : bra .end
|
||||
+ cmp #$dc : bne .end
|
||||
lda $a9 : bne ++
|
||||
lda $22 : cmp #$b0 : bcs ++
|
||||
ldx #$09 : bra .end
|
||||
++ ldx #$0a
|
||||
ldx.b #$ff
|
||||
lda.b PreviousRoom
|
||||
cmp.b #$82 : bne +
|
||||
lda.b LinkPosX : cmp.b #$50 : bcs ++
|
||||
ldx.b #$01 : bra .end
|
||||
++ ldx.b #$00 : bra .end
|
||||
+ cmp.b #$83 : bne +
|
||||
ldx.b #$02 : bra .end
|
||||
+ cmp.b #$84 : bne +
|
||||
lda.b $a9 : beq ++
|
||||
lda.b LinkPosX : cmp.b #$78 : bcs +++
|
||||
ldx.b #$04 : bra .end
|
||||
+++ ldx.b #$05 : bra .end
|
||||
++ lda.b LinkPosX : cmp.b #$78 : bcs ++
|
||||
ldx.b #$03 : bra .end
|
||||
++ ldx.b #$04 : bra .end
|
||||
+ cmp.b #$85 : bne +
|
||||
ldx.b #$06 : bra .end
|
||||
+ cmp.b #$db : bne +
|
||||
lda.b $a9 : beq ++
|
||||
lda.b LinkPosX : beq ++
|
||||
ldx.b #$08 : bra .end
|
||||
++ ldx.b #$07 : bra .end
|
||||
+ cmp.b #$dc : bne .end
|
||||
lda.b $a9 : bne ++
|
||||
lda.b LinkPosX : cmp.b #$b0 : bcs ++
|
||||
ldx.b #$09 : bra .end
|
||||
++ ldx.b #$0a
|
||||
.end txa : rts
|
||||
|
||||
DetectSouthEdge:
|
||||
ldx #$ff
|
||||
lda $a2
|
||||
cmp #$72 : bne +
|
||||
lda $22 : cmp #$50 : bcs ++
|
||||
ldx #$01 : bra .end
|
||||
++ ldx #$00 : bra .end
|
||||
+ cmp #$73 : bne +
|
||||
ldx #$02 : bra .end
|
||||
+ cmp #$74 : bne +
|
||||
lda $a9 : beq ++
|
||||
lda $22 : cmp #$78 : bcs +++
|
||||
ldx #$04 : bra .end
|
||||
+++ ldx #$05 : bra .end
|
||||
++ lda $22 : cmp #$78 : bcs ++
|
||||
ldx #$03 : bra .end
|
||||
++ ldx #$04 : bra .end
|
||||
+ cmp #$75 : bne +
|
||||
ldx #$06 : bra .end
|
||||
+ cmp #$cb : bne +
|
||||
lda $a9 : beq ++
|
||||
lda $22 : beq ++
|
||||
ldx #$08 : bra .end
|
||||
++ ldx #$07 : bra .end
|
||||
+ cmp #$cc : bne .end
|
||||
lda $a9 : bne ++
|
||||
lda $22 : cmp #$b0 : bcs ++
|
||||
ldx #$09 : bra .end
|
||||
++ ldx #$0a
|
||||
ldx.b #$ff
|
||||
lda.b PreviousRoom
|
||||
cmp.b #$72 : bne +
|
||||
lda.b LinkPosX : cmp.b #$50 : bcs ++
|
||||
ldx.b #$01 : bra .end
|
||||
++ ldx.b #$00 : bra .end
|
||||
+ cmp.b #$73 : bne +
|
||||
ldx.b #$02 : bra .end
|
||||
+ cmp.b #$74 : bne +
|
||||
lda.b $a9 : beq ++
|
||||
lda.b LinkPosX : cmp.b #$78 : bcs +++
|
||||
ldx.b #$04 : bra .end
|
||||
+++ ldx.b #$05 : bra .end
|
||||
++ lda.b LinkPosX : cmp.b #$78 : bcs ++
|
||||
ldx.b #$03 : bra .end
|
||||
++ ldx.b #$04 : bra .end
|
||||
+ cmp.b #$75 : bne +
|
||||
ldx.b #$06 : bra .end
|
||||
+ cmp.b #$cb : bne +
|
||||
lda.b $a9 : beq ++
|
||||
lda.b LinkPosX : beq ++
|
||||
ldx.b #$08 : bra .end
|
||||
++ ldx.b #$07 : bra .end
|
||||
+ cmp.b #$cc : bne .end
|
||||
lda.b $a9 : bne ++
|
||||
lda.b LinkPosX : cmp.b #$b0 : bcs ++
|
||||
ldx.b #$09 : bra .end
|
||||
++ ldx.b #$0a
|
||||
.end txa : rts
|
||||
|
||||
DetectWestEdge:
|
||||
ldx #$ff
|
||||
lda $a2
|
||||
cmp #$65 : bne +
|
||||
ldx #$00 : bra .end
|
||||
+ cmp #$74 : bne +
|
||||
ldx #$01 : bra .end
|
||||
+ cmp #$75 : bne +
|
||||
ldx #$02 : bra .end
|
||||
+ cmp #$82 : bne +
|
||||
lda $aa : beq ++
|
||||
ldx #$03 : bra .end
|
||||
++ ldx #$04 : bra .end
|
||||
+ cmp #$85 : bne +
|
||||
ldx #$05 : bra .end
|
||||
+ cmp #$cc : bne +
|
||||
lda $aa : beq ++
|
||||
ldx #$06 : bra .end
|
||||
++ ldx #$07 : bra .end
|
||||
+ cmp #$dc : bne .end
|
||||
ldx #$08
|
||||
ldx.b #$ff
|
||||
lda.b PreviousRoom
|
||||
cmp.b #$65 : bne +
|
||||
ldx.b #$00 : bra .end
|
||||
+ cmp.b #$74 : bne +
|
||||
ldx.b #$01 : bra .end
|
||||
+ cmp.b #$75 : bne +
|
||||
ldx.b #$02 : bra .end
|
||||
+ cmp.b #$82 : bne +
|
||||
lda.b LinkQuadrantV : beq ++
|
||||
ldx.b #$03 : bra .end
|
||||
++ ldx.b #$04 : bra .end
|
||||
+ cmp.b #$85 : bne +
|
||||
ldx.b #$05 : bra .end
|
||||
+ cmp.b #$cc : bne +
|
||||
lda.b LinkQuadrantV : beq ++
|
||||
ldx.b #$06 : bra .end
|
||||
++ ldx.b #$07 : bra .end
|
||||
+ cmp.b #$dc : bne .end
|
||||
ldx.b #$08
|
||||
.end txa : rts
|
||||
|
||||
DetectEastEdge:
|
||||
ldx #$ff
|
||||
lda $a2
|
||||
cmp #$64 : bne +
|
||||
ldx #$00 : bra .end
|
||||
+ cmp #$73 : bne +
|
||||
ldx #$01 : bra .end
|
||||
+ cmp #$74 : bne +
|
||||
ldx #$02 : bra .end
|
||||
+ cmp #$81 : bne +
|
||||
lda $aa : beq ++
|
||||
ldx #$04 : bra .end
|
||||
++ ldx #$03 : bra .end
|
||||
+ cmp #$84 : bne +
|
||||
ldx.b #$ff
|
||||
lda.b PreviousRoom
|
||||
cmp.b #$64 : bne +
|
||||
ldx.b #$00 : bra .end
|
||||
+ cmp.b #$73 : bne +
|
||||
ldx.b #$01 : bra .end
|
||||
+ cmp.b #$74 : bne +
|
||||
ldx.b #$02 : bra .end
|
||||
+ cmp.b #$81 : bne +
|
||||
lda.b LinkQuadrantV : beq ++
|
||||
ldx.b #$04 : bra .end
|
||||
++ ldx.b #$03 : bra .end
|
||||
+ cmp.b #$84 : bne +
|
||||
ldx #$05 : bra .end
|
||||
+ cmp #$cb : bne +
|
||||
lda $aa : beq ++
|
||||
ldx #$06 : bra .end
|
||||
++ ldx #$07 : bra .end
|
||||
+ cmp #$db : bne .end
|
||||
ldx #$08
|
||||
+ cmp.b #$cb : bne +
|
||||
lda.b LinkQuadrantV : beq ++
|
||||
ldx.b #$06 : bra .end
|
||||
++ ldx.b #$07 : bra .end
|
||||
+ cmp.b #$db : bne .end
|
||||
ldx.b #$08
|
||||
.end txa : rts
|
||||
|
||||
AlwaysPushThroughFDoors:
|
||||
|
||||
Reference in New Issue
Block a user