Handle In-Room staircases
This commit is contained in:
@@ -78,6 +78,28 @@ DrawFullRoomTile:
|
|||||||
JSL DrawDungeonMapRoom
|
JSL DrawDungeonMapRoom
|
||||||
PLY
|
PLY
|
||||||
|
|
||||||
|
LDA.b $CA
|
||||||
|
CMP.w #$003F : BEQ .top_right
|
||||||
|
CMP.w #$0096 : BEQ .top_right
|
||||||
|
CMP.w #$007E : BEQ .top_left
|
||||||
|
CMP.w #$001B : BEQ .bottom_right
|
||||||
|
BRA +
|
||||||
|
|
||||||
|
.top_right
|
||||||
|
LDA.w #$01C0|!ConnectorPalette
|
||||||
|
STA.l $7F0002, X
|
||||||
|
BRA +
|
||||||
|
|
||||||
|
.top_left
|
||||||
|
LDA.w #$01C0|!ConnectorPalette
|
||||||
|
STA.l $7F0000, X
|
||||||
|
BRA +
|
||||||
|
|
||||||
|
.bottom_right
|
||||||
|
LDA.w #$01C0|!ConnectorPalette
|
||||||
|
STA.l $7F0042, X
|
||||||
|
|
||||||
|
+
|
||||||
LDA.b $00 : PHA
|
LDA.b $00 : PHA
|
||||||
LDA.b $02 : PHA
|
LDA.b $02 : PHA
|
||||||
LDA.b $06 : PHA
|
LDA.b $06 : PHA
|
||||||
@@ -176,6 +198,35 @@ CheckEdgesTable:
|
|||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
CheckInRoomTable:
|
||||||
|
LDA.b $00
|
||||||
|
ASL A
|
||||||
|
CLC : ADC.b $00
|
||||||
|
ADC.b $02
|
||||||
|
XBA
|
||||||
|
ORA.l CurrentDisplayedRoom
|
||||||
|
STA.b $0C
|
||||||
|
|
||||||
|
PHX
|
||||||
|
LDX.w #$0000
|
||||||
|
-
|
||||||
|
LDA.w InRoomConnectionIndices, X
|
||||||
|
BMI .done
|
||||||
|
CMP.b $0C
|
||||||
|
BEQ .match
|
||||||
|
INX #4
|
||||||
|
BRA -
|
||||||
|
|
||||||
|
.match
|
||||||
|
INX #2
|
||||||
|
LDA.w InRoomConnectionIndices, X
|
||||||
|
TAX
|
||||||
|
LDA.l InroomStairsTable, X
|
||||||
|
|
||||||
|
.done
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
|
||||||
GetConnection:
|
GetConnection:
|
||||||
LDA.l DoorTable, X
|
LDA.l DoorTable, X
|
||||||
.found
|
.found
|
||||||
@@ -193,8 +244,11 @@ GetConnection:
|
|||||||
|
|
||||||
.not_found
|
.not_found
|
||||||
JSR CheckEdgesTable
|
JSR CheckEdgesTable
|
||||||
CMP.w #$0000
|
CMP.w #$FFFF
|
||||||
BPL .found
|
BNE .found
|
||||||
|
JSR CheckInRoomTable
|
||||||
|
CMP.w #$FFFF
|
||||||
|
BNE .found
|
||||||
LDA.w #$FF0F
|
LDA.w #$FF0F
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
@@ -301,26 +355,33 @@ DrawSingleConnectedRoom:
|
|||||||
JSL DrawFullRoomTile
|
JSL DrawFullRoomTile
|
||||||
|
|
||||||
PHY
|
PHY
|
||||||
LDA.b $06
|
|
||||||
BEQ ++
|
|
||||||
CMP.w #$0001
|
|
||||||
BEQ .single
|
|
||||||
|
|
||||||
TYX
|
TYX
|
||||||
LDA.l DoorSlots+1, X
|
LDA.l DoorSlots+1, X
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
|
CMP.w #$0003
|
||||||
|
BNE +
|
||||||
|
LDA.l DoorSlots, X
|
||||||
|
AND.w #$00FF
|
||||||
|
CMP.w #$005E : BEQ .left
|
||||||
|
CMP.w #$007E : BEQ .left
|
||||||
|
.right
|
||||||
|
LDA.w #$0002
|
||||||
|
BRA +
|
||||||
|
.left
|
||||||
|
LDA.w #$0000
|
||||||
|
+
|
||||||
STA.b $04
|
STA.b $04
|
||||||
BRA .draw
|
|
||||||
|
LDA.b $06
|
||||||
|
BEQ ++
|
||||||
|
CMP.w #$0001
|
||||||
|
BNE .draw
|
||||||
|
|
||||||
.single
|
.single
|
||||||
LDA.b $02
|
LDA.b $02
|
||||||
ASL A
|
ASL A
|
||||||
CLC : ADC.b $02
|
CLC : ADC.b $02
|
||||||
STA.b $04
|
|
||||||
|
|
||||||
TYX
|
|
||||||
LDA.l DoorSlots+1, X
|
|
||||||
AND.w #$00FF
|
|
||||||
CLC : ADC.b $04
|
CLC : ADC.b $04
|
||||||
STA.b $04
|
STA.b $04
|
||||||
ASL A
|
ASL A
|
||||||
@@ -344,10 +405,6 @@ GetWhichDoorPosition:
|
|||||||
BMI .edge
|
BMI .edge
|
||||||
AND.w #$0300
|
AND.w #$0300
|
||||||
XBA
|
XBA
|
||||||
CMP.w #$0003
|
|
||||||
BNE +
|
|
||||||
LDA.w #$0002
|
|
||||||
+
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.edge
|
.edge
|
||||||
|
|||||||
@@ -242,3 +242,14 @@ EdgeConnectionIndices:
|
|||||||
dw $0BDB, $0075
|
dw $0BDB, $0075
|
||||||
|
|
||||||
dw $FFFF
|
dw $FFFF
|
||||||
|
|
||||||
|
InRoomConnectionIndices:
|
||||||
|
dw $020B, $0000
|
||||||
|
dw $081B, $0002
|
||||||
|
dw $023F, $0004
|
||||||
|
dw $081F, $0006
|
||||||
|
dw $007E, $0008
|
||||||
|
dw $065E, $000A
|
||||||
|
dw $0296, $000C
|
||||||
|
dw $083D, $000E
|
||||||
|
dw $FFFF
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user