diff --git a/dungeon_map/current_room_map.asm b/dungeon_map/current_room_map.asm index fb771ea..8a7d232 100644 --- a/dungeon_map/current_room_map.asm +++ b/dungeon_map/current_room_map.asm @@ -78,6 +78,28 @@ DrawFullRoomTile: JSL DrawDungeonMapRoom 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 $02 : PHA LDA.b $06 : PHA @@ -176,6 +198,35 @@ CheckEdgesTable: PLX 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: LDA.l DoorTable, X .found @@ -193,8 +244,11 @@ GetConnection: .not_found JSR CheckEdgesTable - CMP.w #$0000 - BPL .found + CMP.w #$FFFF + BNE .found + JSR CheckInRoomTable + CMP.w #$FFFF + BNE .found LDA.w #$FF0F RTS @@ -301,26 +355,33 @@ DrawSingleConnectedRoom: JSL DrawFullRoomTile PHY - LDA.b $06 - BEQ ++ - CMP.w #$0001 - BEQ .single TYX LDA.l DoorSlots+1, X 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 - BRA .draw + + LDA.b $06 + BEQ ++ + CMP.w #$0001 + BNE .draw .single LDA.b $02 ASL A CLC : ADC.b $02 - STA.b $04 - - TYX - LDA.l DoorSlots+1, X - AND.w #$00FF CLC : ADC.b $04 STA.b $04 ASL A @@ -344,10 +405,6 @@ GetWhichDoorPosition: BMI .edge AND.w #$0300 XBA - CMP.w #$0003 - BNE + - LDA.w #$0002 -+ RTS .edge diff --git a/dungeon_map/data/doors_display.asm b/dungeon_map/data/doors_display.asm index 56c6e9c..4587c57 100644 --- a/dungeon_map/data/doors_display.asm +++ b/dungeon_map/data/doors_display.asm @@ -242,3 +242,14 @@ EdgeConnectionIndices: dw $0BDB, $0075 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 diff --git a/menu/door_connectors.3bpp b/menu/door_connectors.3bpp index 5183b3d..10af1a0 100644 Binary files a/menu/door_connectors.3bpp and b/menu/door_connectors.3bpp differ diff --git a/menu/map_sheet_d4.3bppc b/menu/map_sheet_d4.3bppc index 2b74b23..573ab91 100644 Binary files a/menu/map_sheet_d4.3bppc and b/menu/map_sheet_d4.3bppc differ