Handle In-Room staircases

This commit is contained in:
2026-01-11 04:03:52 -06:00
parent 527041b81b
commit 36a8eaee89
4 changed files with 84 additions and 16 deletions

View File

@@ -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

View File

@@ -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.