From 36a8eaee8923e568bdd80e06bda6af710837159f Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sun, 11 Jan 2026 04:03:52 -0600 Subject: [PATCH] Handle In-Room staircases --- dungeon_map/current_room_map.asm | 89 +++++++++++++++++++++++------ dungeon_map/data/doors_display.asm | 11 ++++ menu/door_connectors.3bpp | Bin 1536 -> 1536 bytes menu/map_sheet_d4.3bppc | Bin 593 -> 639 bytes 4 files changed, 84 insertions(+), 16 deletions(-) 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 5183b3d186aad0502304a2b646b89ebe5f133e28..10af1a0f4913938dfdca693a7974acd1a1a2434e 100644 GIT binary patch delta 15 WcmZqRY2exLhIR4-R-VZTj2r+i#05G4 delta 28 acmZqRY2exLhE+s@!G@uZK>`dJpa1|?ssrc% diff --git a/menu/map_sheet_d4.3bppc b/menu/map_sheet_d4.3bppc index 2b74b234c155fba2c043908d49239292a501daa8..573ab91e16d57e21ca0dd00c3ba78d46c19fa8d0 100644 GIT binary patch delta 59 zcmcb}@}Fgc50kML1Cs!QfeV8GgM}Ugn*{?0g9U@av}D%iGFDv%XAOqt5>^I|38}2j PRjj>}SU>2mVE7LJbU_YG delta 13 Vcmey*a*<_&4-@N$bqg8(0{|&m1{weW