Press Select for next entrance
This commit is contained in:
@@ -8,6 +8,9 @@ DrawWackyDoorRandoStuff:
|
|||||||
|
|
||||||
STZ.w GFXStripes
|
STZ.w GFXStripes
|
||||||
|
|
||||||
|
LDA.w EntranceIndex
|
||||||
|
STA.l CurrentDoorEntrance
|
||||||
|
|
||||||
JSL DetectLinksSection
|
JSL DetectLinksSection
|
||||||
INC A
|
INC A
|
||||||
XBA
|
XBA
|
||||||
@@ -345,6 +348,7 @@ CheckCanSeeConnector:
|
|||||||
BEQ .plx_nope
|
BEQ .plx_nope
|
||||||
|
|
||||||
LDA.l CurrentDisplayedRoom
|
LDA.l CurrentDisplayedRoom
|
||||||
|
AND.w #$00FF
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
LDA.l SaveDataWRAM, X
|
LDA.l SaveDataWRAM, X
|
||||||
@@ -548,7 +552,12 @@ DrawStairs:
|
|||||||
XBA
|
XBA
|
||||||
ORA.b $CA
|
ORA.b $CA
|
||||||
STA.b $CA
|
STA.b $CA
|
||||||
|
|
||||||
|
JSR GetSpecificRoomVisibility
|
||||||
|
BEQ .ply_skip
|
||||||
|
|
||||||
TYX
|
TYX
|
||||||
|
LDA.b $CA
|
||||||
STA.l DoorSlots, X
|
STA.l DoorSlots, X
|
||||||
|
|
||||||
LDA.w DoorSlotsBG2, Y
|
LDA.w DoorSlotsBG2, Y
|
||||||
@@ -562,6 +571,7 @@ DrawStairs:
|
|||||||
INC A
|
INC A
|
||||||
STA.l $7F0002-$40, X
|
STA.l $7F0002-$40, X
|
||||||
JSL DrawFullRoomTile
|
JSL DrawFullRoomTile
|
||||||
|
.ply_skip
|
||||||
PLY
|
PLY
|
||||||
|
|
||||||
.skip
|
.skip
|
||||||
@@ -1384,6 +1394,96 @@ DoorsMapSelectCursor:
|
|||||||
PLP
|
PLP
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
DoorsMapNextEntrance:
|
||||||
|
PHP
|
||||||
|
REP #$30
|
||||||
|
LDA.l CurrentDoorEntrance
|
||||||
|
TAY
|
||||||
|
|
||||||
|
.check_next
|
||||||
|
INY
|
||||||
|
CPY.w #$0085
|
||||||
|
BCC +
|
||||||
|
LDY.w #$0000
|
||||||
|
+
|
||||||
|
TYA
|
||||||
|
CMP.l CurrentDoorEntrance
|
||||||
|
BEQ .done
|
||||||
|
|
||||||
|
TYX
|
||||||
|
LDA.l $82D1EF, X
|
||||||
|
AND.w #$00FF
|
||||||
|
CMP.w DungeonID
|
||||||
|
|
||||||
|
BNE .check_next
|
||||||
|
|
||||||
|
TYA
|
||||||
|
ASL A
|
||||||
|
TAX
|
||||||
|
LDA.l EntranceData_room_id, X
|
||||||
|
STA.b $CA
|
||||||
|
|
||||||
|
JSR GetSpecificRoomVisibility
|
||||||
|
BNE .acceptable
|
||||||
|
|
||||||
|
LDA.w #$0001
|
||||||
|
STA.b $00
|
||||||
|
|
||||||
|
LDA.l EntranceData_x_coordinate, X
|
||||||
|
LSR A
|
||||||
|
AND.w #$00FF
|
||||||
|
CMP.w #$0080
|
||||||
|
BCS +
|
||||||
|
LDA.b $00
|
||||||
|
ASL A
|
||||||
|
STA.b $00
|
||||||
|
+
|
||||||
|
|
||||||
|
LDA.l EntranceData_y_coordinate, X
|
||||||
|
LSR A
|
||||||
|
AND.w #$00FF
|
||||||
|
CMP.w #$0080
|
||||||
|
BCS +
|
||||||
|
LDA.b $00
|
||||||
|
ASL A
|
||||||
|
ASL A
|
||||||
|
STA.b $00
|
||||||
|
+
|
||||||
|
|
||||||
|
LDA.b $00
|
||||||
|
AND.b $0E
|
||||||
|
BEQ .check_next
|
||||||
|
|
||||||
|
.acceptable
|
||||||
|
PHX
|
||||||
|
JSL DetectEntranceSection
|
||||||
|
PLX
|
||||||
|
INC A
|
||||||
|
ASL A : ASL A : ASL A : ASL A
|
||||||
|
XBA
|
||||||
|
ORA.l EntranceData_room_id, X
|
||||||
|
STA.l CurrentDisplayedRoom
|
||||||
|
|
||||||
|
TYA
|
||||||
|
STA.l CurrentDoorEntrance
|
||||||
|
|
||||||
|
STZ.w GFXStripes
|
||||||
|
JSL ClearDoorsMapBG1
|
||||||
|
JSL ClearDoorsMapBG2
|
||||||
|
JSL DrawCurrentSupertile
|
||||||
|
|
||||||
|
SEP #$30
|
||||||
|
|
||||||
|
LDA.b #$08
|
||||||
|
STA.b $17
|
||||||
|
|
||||||
|
LDA.b #$20
|
||||||
|
STA.w $012F
|
||||||
|
|
||||||
|
.done
|
||||||
|
PLP
|
||||||
|
RTL
|
||||||
|
|
||||||
ClearDoorsMapBG1:
|
ClearDoorsMapBG1:
|
||||||
LDA.w #$000B
|
LDA.w #$000B
|
||||||
STA.b $00
|
STA.b $00
|
||||||
@@ -1480,7 +1580,7 @@ GetRoomEntrance:
|
|||||||
BMI .not_found
|
BMI .not_found
|
||||||
|
|
||||||
TYX
|
TYX
|
||||||
LDA.l $02D1EF, X
|
LDA.l EntranceData_dungeon_id, X
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
CMP.w DungeonID
|
CMP.w DungeonID
|
||||||
BNE -
|
BNE -
|
||||||
@@ -1488,11 +1588,58 @@ GetRoomEntrance:
|
|||||||
TYA
|
TYA
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
LDA.l $02C577, X
|
LDA.l EntranceData_room_id, X
|
||||||
CMP.w $CA
|
CMP.w $CA
|
||||||
BNE -
|
BNE -
|
||||||
|
|
||||||
LDA.l $02CDC7, X
|
LDA.l EntranceData_x_coordinate, X
|
||||||
|
AND.w #$01FF
|
||||||
|
CMP.w #$00B9
|
||||||
|
BCC .left
|
||||||
|
CMP.w #$0149
|
||||||
|
BCC .middle
|
||||||
|
|
||||||
|
.right
|
||||||
|
LDA.w #$0004
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.middle
|
||||||
|
LDA.w #$0002
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.left
|
||||||
|
LDA.w #$0000
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.not_found
|
||||||
|
LDA.w #$FFFF
|
||||||
|
|
||||||
|
.done
|
||||||
|
PLY : PLX
|
||||||
|
RTS
|
||||||
|
|
||||||
|
GetRoomDropdown:
|
||||||
|
PHX : PHY
|
||||||
|
LDY.w #$0083 ; entrance IDs 76 - 82 are dropdowns
|
||||||
|
-
|
||||||
|
DEY
|
||||||
|
CPY.w #$0076
|
||||||
|
BCC .not_found
|
||||||
|
|
||||||
|
TYX
|
||||||
|
LDA.l EntranceData_dungeon_id, X
|
||||||
|
AND.w #$00FF
|
||||||
|
CMP.w DungeonID
|
||||||
|
BNE -
|
||||||
|
|
||||||
|
TYA
|
||||||
|
ASL A
|
||||||
|
TAX
|
||||||
|
LDA.l EntranceData_room_id, X
|
||||||
|
CMP.w $CA
|
||||||
|
BNE -
|
||||||
|
|
||||||
|
LDA.l EntranceData_x_coordinate, X
|
||||||
AND.w #$01FF
|
AND.w #$01FF
|
||||||
CMP.w #$00B9
|
CMP.w #$00B9
|
||||||
BCC .left
|
BCC .left
|
||||||
@@ -1524,7 +1671,9 @@ DrawDoorsEntrances:
|
|||||||
|
|
||||||
.next_room
|
.next_room
|
||||||
DEX : DEX
|
DEX : DEX
|
||||||
BMI .done
|
BPL +
|
||||||
|
JMP .done
|
||||||
|
+
|
||||||
|
|
||||||
LDA.l DoorSlots, X
|
LDA.l DoorSlots, X
|
||||||
BMI .next_room
|
BMI .next_room
|
||||||
@@ -1535,10 +1684,10 @@ DrawDoorsEntrances:
|
|||||||
JSR GetRoomEntrance
|
JSR GetRoomEntrance
|
||||||
STA.b $02
|
STA.b $02
|
||||||
CMP.w #$0000
|
CMP.w #$0000
|
||||||
BMI .next_room
|
BMI .check_dropdown
|
||||||
|
|
||||||
JSR GetSpecificRoomVisibility
|
JSR GetSpecificRoomVisibility
|
||||||
BNE .draw
|
BNE .draw_entrance
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
LDA.b $02
|
LDA.b $02
|
||||||
@@ -1546,9 +1695,9 @@ DrawDoorsEntrances:
|
|||||||
LDA.l EntranceQuadrantMasks, X
|
LDA.l EntranceQuadrantMasks, X
|
||||||
PLX
|
PLX
|
||||||
AND.b $0E
|
AND.b $0E
|
||||||
BEQ .next_room
|
BEQ .check_dropdown
|
||||||
|
|
||||||
.draw
|
.draw_entrance
|
||||||
SEP #$30
|
SEP #$30
|
||||||
LDY.b $00
|
LDY.b $00
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
@@ -1570,7 +1719,45 @@ DrawDoorsEntrances:
|
|||||||
STA.w OAMBuffer+2, Y
|
STA.w OAMBuffer+2, Y
|
||||||
INC.b $00
|
INC.b $00
|
||||||
|
|
||||||
BRA .next_room
|
.check_dropdown
|
||||||
|
JSR GetRoomDropdown
|
||||||
|
STA.b $02
|
||||||
|
CMP.w #$0000
|
||||||
|
BMI .next_room
|
||||||
|
|
||||||
|
JSR GetSpecificRoomVisibility
|
||||||
|
BNE .draw_dropdown
|
||||||
|
|
||||||
|
PHX
|
||||||
|
LDA.b $02
|
||||||
|
TAX
|
||||||
|
LDA.l DropdownQuadrantMasks, X
|
||||||
|
PLX
|
||||||
|
AND.b $0E
|
||||||
|
BEQ .next_room
|
||||||
|
|
||||||
|
.draw_dropdown
|
||||||
|
SEP #$30
|
||||||
|
LDY.b $00
|
||||||
|
LDA.b #$00
|
||||||
|
STA.w OAMBufferAux, Y
|
||||||
|
TYA
|
||||||
|
ASL A : ASL A
|
||||||
|
TAY
|
||||||
|
|
||||||
|
LDA.l DoorSlotsSprites, X
|
||||||
|
CLC : ADC.b $02 : ADC.b $02
|
||||||
|
STA.w OAMBuffer, Y
|
||||||
|
|
||||||
|
LDA.l DoorSlotsSprites+1, X
|
||||||
|
STA.w OAMBuffer+1, Y
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
LDA.w #$A333
|
||||||
|
STA.w OAMBuffer+2, Y
|
||||||
|
INC.b $00
|
||||||
|
|
||||||
|
JMP .next_room
|
||||||
|
|
||||||
.done
|
.done
|
||||||
SEP #$30
|
SEP #$30
|
||||||
@@ -1582,7 +1769,9 @@ DrawDoorsStairs:
|
|||||||
LDA.l SpiralPropsIndex, X
|
LDA.l SpiralPropsIndex, X
|
||||||
TAX
|
TAX
|
||||||
LDA.l SpiralProps, X
|
LDA.l SpiralProps, X
|
||||||
BEQ .done
|
BNE +
|
||||||
|
JMP .done
|
||||||
|
+
|
||||||
|
|
||||||
STA.b $0C
|
STA.b $0C
|
||||||
STZ.b $0D
|
STZ.b $0D
|
||||||
@@ -1595,10 +1784,21 @@ DrawDoorsStairs:
|
|||||||
INX : INX
|
INX : INX
|
||||||
LDA.l SpiralProps, X
|
LDA.l SpiralProps, X
|
||||||
|
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
|
PHX
|
||||||
|
LDA.b $0D
|
||||||
|
CLC : ADC.b #$15
|
||||||
|
ASL A
|
||||||
|
TAX
|
||||||
|
LDA.l DoorSlots, X
|
||||||
|
PLX
|
||||||
|
CMP.b #$0F
|
||||||
|
BEQ .skip
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
LDA.l CurrentDisplayedRoom
|
LDA.l CurrentDisplayedRoom
|
||||||
STA.b $CA
|
STA.b $CA
|
||||||
@@ -1658,7 +1858,9 @@ DetectLinksSection:
|
|||||||
LDA.l SplitRooms, X
|
LDA.l SplitRooms, X
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
STA.b $00
|
STA.b $00
|
||||||
BEQ .done
|
BNE +
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
|
||||||
LDA.b LinkPosX
|
LDA.b LinkPosX
|
||||||
LSR A
|
LSR A
|
||||||
@@ -1677,6 +1879,7 @@ DetectLinksSection:
|
|||||||
INC A
|
INC A
|
||||||
STA.b $06
|
STA.b $06
|
||||||
|
|
||||||
|
DetectSection:
|
||||||
INX
|
INX
|
||||||
.next_section
|
.next_section
|
||||||
PHX
|
PHX
|
||||||
@@ -1732,3 +1935,48 @@ DetectLinksSection:
|
|||||||
.done
|
.done
|
||||||
LDA.b $00
|
LDA.b $00
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
DetectEntranceSection:
|
||||||
|
TYA
|
||||||
|
ASL A
|
||||||
|
TAX
|
||||||
|
LDA.l EntranceData_room_id, X
|
||||||
|
|
||||||
|
ASL A
|
||||||
|
TAX
|
||||||
|
LDA.l SplitRooms, X
|
||||||
|
TAX
|
||||||
|
LDA.l SplitRooms, X
|
||||||
|
AND.w #$00FF
|
||||||
|
STA.b $00
|
||||||
|
BNE +
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
|
||||||
|
PHX
|
||||||
|
TYA
|
||||||
|
ASL A
|
||||||
|
TAX
|
||||||
|
LDA.l EntranceData_x_coordinate, X
|
||||||
|
LSR A
|
||||||
|
AND.w #$00FF
|
||||||
|
INC A
|
||||||
|
STA.b $02
|
||||||
|
|
||||||
|
TYA
|
||||||
|
ASL A
|
||||||
|
TAX
|
||||||
|
LDA.l EntranceData_y_coordinate, X
|
||||||
|
LSR A
|
||||||
|
AND.w #$00FF
|
||||||
|
INC A
|
||||||
|
STA.b $04
|
||||||
|
|
||||||
|
TYX
|
||||||
|
LDA.l EntranceData_layer, X
|
||||||
|
AND.w #$00FF
|
||||||
|
INC A
|
||||||
|
STA.b $06
|
||||||
|
|
||||||
|
PLX
|
||||||
|
JMP DetectSection
|
||||||
|
|||||||
@@ -174,6 +174,11 @@ EntranceQuadrantMasks:
|
|||||||
dw $0003
|
dw $0003
|
||||||
dw $0001
|
dw $0001
|
||||||
|
|
||||||
|
DropdownQuadrantMasks:
|
||||||
|
dw $0008
|
||||||
|
dw $000C
|
||||||
|
dw $0004
|
||||||
|
|
||||||
MultiConnectorMapping:
|
MultiConnectorMapping:
|
||||||
.two
|
.two
|
||||||
db $02, $00
|
db $02, $00
|
||||||
|
|||||||
@@ -463,8 +463,8 @@ db $01
|
|||||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
||||||
..areas
|
..areas
|
||||||
db $01, $00, $20, $28, $60
|
db $01, $00, $20, $28, $60
|
||||||
db $01, $00, $20, $28, $60
|
db $01, $E0, $FF, $28, $60
|
||||||
db $01, $E0, $FF, $58, $60
|
db $01, $00, $FF, $58, $60
|
||||||
db $FF
|
db $FF
|
||||||
..doors
|
..doors
|
||||||
db $03, $09
|
db $03, $09
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ CheckSwitchMap:
|
|||||||
BIT.b #$80
|
BIT.b #$80
|
||||||
BNE .select_new_room
|
BNE .select_new_room
|
||||||
|
|
||||||
|
BIT.b #$20
|
||||||
|
BNE .next_entrance
|
||||||
|
|
||||||
AND.b #$0F
|
AND.b #$0F
|
||||||
BEQ .doors_done
|
BEQ .doors_done
|
||||||
BIT.b #$08 : BEQ + : LDA.b #$00 : BRA .doors_move_cursor : +
|
BIT.b #$08 : BEQ + : LDA.b #$00 : BRA .doors_move_cursor : +
|
||||||
@@ -27,6 +30,10 @@ CheckSwitchMap:
|
|||||||
|
|
||||||
.select_new_room
|
.select_new_room
|
||||||
JSL DoorsMapSelectCursor
|
JSL DoorsMapSelectCursor
|
||||||
|
BRA .doors_done
|
||||||
|
|
||||||
|
.next_entrance
|
||||||
|
JSL DoorsMapNextEntrance
|
||||||
|
|
||||||
.doors_done
|
.doors_done
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|||||||
1
ram.asm
1
ram.asm
@@ -572,6 +572,7 @@ DisplayedRoomDoorIndex = $7EC22E ; 2 bytes, used by dungeon map
|
|||||||
DoorSlots = $7EC230 ; $32 bytes, used by dungeon map
|
DoorSlots = $7EC230 ; $32 bytes, used by dungeon map
|
||||||
DoorSlotScratch = $7EC262 ; 6 bytes, used by dungeon map
|
DoorSlotScratch = $7EC262 ; 6 bytes, used by dungeon map
|
||||||
DoorSlotCursor = $7EC268 ; 2 bytes, used by dungeon map
|
DoorSlotCursor = $7EC268 ; 2 bytes, used by dungeon map
|
||||||
|
CurrentDoorEntrance = $7EC26A ; 2 bytes, used by dungeon map
|
||||||
;
|
;
|
||||||
LastBGSet = $7EC2F8 ; Lists loaded sheets to check for decompression. 4 bytes.
|
LastBGSet = $7EC2F8 ; Lists loaded sheets to check for decompression. 4 bytes.
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -280,6 +280,11 @@ Module1B_SpawnSelect_spawns = $828481
|
|||||||
Overworld_ActualScreenID = $82A4E3
|
Overworld_ActualScreenID = $82A4E3
|
||||||
UnderworldTransitionLandingCoordinate = $82C034
|
UnderworldTransitionLandingCoordinate = $82C034
|
||||||
Overworld_FinalizeEntryOntoScreen_Data = $82C176
|
Overworld_FinalizeEntryOntoScreen_Data = $82C176
|
||||||
|
EntranceData_room_id = $82C577
|
||||||
|
EntranceData_y_coordinate = $82CCBD
|
||||||
|
EntranceData_x_coordinate = $82CDC7
|
||||||
|
EntranceData_dungeon_id = $82D1EF
|
||||||
|
EntranceData_layer = $82D2F9
|
||||||
EntranceData_song = $82D592
|
EntranceData_song = $82D592
|
||||||
SpawnPointData_room_id = $82D8D2
|
SpawnPointData_room_id = $82D8D2
|
||||||
Overworld_CheckForSpecialOverworldTrigger_Direction = $84E879
|
Overworld_CheckForSpecialOverworldTrigger_Direction = $84E879
|
||||||
|
|||||||
Reference in New Issue
Block a user