Dark rooms don't show up on map with only visitation
This commit is contained in:
@@ -541,7 +541,9 @@ DrawStairs:
|
|||||||
LDA.w SpiralProps, Y
|
LDA.w SpiralProps, Y
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
STA.b $06
|
STA.b $06
|
||||||
BEQ .done
|
BNE +
|
||||||
|
JMP .done
|
||||||
|
+
|
||||||
|
|
||||||
STZ.b $02
|
STZ.b $02
|
||||||
INY
|
INY
|
||||||
@@ -578,11 +580,14 @@ DrawStairs:
|
|||||||
STA.b $CA
|
STA.b $CA
|
||||||
|
|
||||||
JSR GetSpecificRoomVisibility
|
JSR GetSpecificRoomVisibility
|
||||||
|
AND.w #$00FF
|
||||||
BNE +
|
BNE +
|
||||||
LDA.b $0E
|
LDA.b $0E
|
||||||
AND.w #$000F
|
AND.w #$000F
|
||||||
BNE +
|
BEQ .ply_skip
|
||||||
BRA .ply_skip
|
LDA.b $0B
|
||||||
|
AND.w #$00FF
|
||||||
|
BEQ .ply_skip
|
||||||
+
|
+
|
||||||
|
|
||||||
TYX
|
TYX
|
||||||
@@ -619,32 +624,70 @@ GetCurrentRoomVisibility:
|
|||||||
|
|
||||||
GetSpecificRoomVisibility:
|
GetSpecificRoomVisibility:
|
||||||
PHX
|
PHX
|
||||||
LDA.l ShowRooms_default
|
|
||||||
|
; figure out if room is dark without lamp
|
||||||
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
|
ASL A
|
||||||
|
TAX
|
||||||
|
LDA.l RoomHeaderPointers, X
|
||||||
|
TAX
|
||||||
|
LDA.l bank(RoomHeaders)<<16, X
|
||||||
|
AND.w #$0001
|
||||||
|
BEQ .not_dark
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
JSL LampCheck
|
||||||
|
REP #$20
|
||||||
|
BNE .not_dark
|
||||||
|
|
||||||
|
LDA.l LampCone
|
||||||
|
BIT.w #$0020 ; all rooms are lit
|
||||||
|
BNE .not_dark
|
||||||
|
|
||||||
|
LDA.l ShowRooms_dark_room_cap
|
||||||
|
AND.w #$00FF
|
||||||
|
CMP.w #$0006
|
||||||
|
BCS .not_dark
|
||||||
|
|
||||||
|
XBA
|
||||||
|
STA.b $0A
|
||||||
|
BRA .check_visibility
|
||||||
|
|
||||||
|
.not_dark
|
||||||
|
LDA.w #$0600
|
||||||
STA.b $0A
|
STA.b $0A
|
||||||
|
|
||||||
|
.check_visibility
|
||||||
|
SEP #$20
|
||||||
|
LDA.l ShowRooms_default
|
||||||
|
STA.b $0A
|
||||||
|
|
||||||
|
REP #$20
|
||||||
LDX.w DungeonID
|
LDX.w DungeonID
|
||||||
LDA.l MapField
|
LDA.l MapField
|
||||||
AND.l DungeonMask, X
|
AND.l DungeonMask, X
|
||||||
BEQ +
|
BEQ +
|
||||||
|
SEP #$20
|
||||||
LDA.l ShowRooms_have_map
|
LDA.l ShowRooms_have_map
|
||||||
AND.w #$00FF
|
|
||||||
CMP.b $0A
|
CMP.b $0A
|
||||||
BCC +
|
BCC +
|
||||||
STA.b $0A
|
STA.b $0A
|
||||||
+
|
+
|
||||||
|
|
||||||
|
REP #$20
|
||||||
LDX.w DungeonID
|
LDX.w DungeonID
|
||||||
LDA.l CompassField
|
LDA.l CompassField
|
||||||
AND.l DungeonMask, X
|
AND.l DungeonMask, X
|
||||||
BEQ +
|
BEQ +
|
||||||
|
SEP #$20
|
||||||
LDA.l ShowRooms_have_compass
|
LDA.l ShowRooms_have_compass
|
||||||
AND.w #$00FF
|
|
||||||
CMP.b $0A
|
CMP.b $0A
|
||||||
BCC +
|
BCC +
|
||||||
STA.b $0A
|
STA.b $0A
|
||||||
+
|
+
|
||||||
|
|
||||||
|
REP #$20
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
ASL A
|
ASL A
|
||||||
@@ -653,13 +696,20 @@ GetSpecificRoomVisibility:
|
|||||||
AND.w #$000F
|
AND.w #$000F
|
||||||
STA.b $0E
|
STA.b $0E
|
||||||
BEQ +
|
BEQ +
|
||||||
|
SEP #$20
|
||||||
LDA.l ShowRooms_visited_tile
|
LDA.l ShowRooms_visited_tile
|
||||||
AND.w #$00FF
|
|
||||||
CMP.b $0A
|
CMP.b $0A
|
||||||
BCC +
|
BCC +
|
||||||
|
CMP.b $0B
|
||||||
|
BCS .too_dark
|
||||||
|
STA.b $0A
|
||||||
|
BRA +
|
||||||
|
.too_dark
|
||||||
|
LDA.b $0B
|
||||||
STA.b $0A
|
STA.b $0A
|
||||||
+
|
+
|
||||||
|
|
||||||
|
REP #$20
|
||||||
PLX
|
PLX
|
||||||
LDA.b $0A
|
LDA.b $0A
|
||||||
RTS
|
RTS
|
||||||
@@ -705,6 +755,7 @@ DrawDropOrWarp:
|
|||||||
STA.b $CA
|
STA.b $CA
|
||||||
|
|
||||||
JSR GetSpecificRoomVisibility
|
JSR GetSpecificRoomVisibility
|
||||||
|
AND.w #$00FF
|
||||||
BNE +
|
BNE +
|
||||||
LDA.b $0E
|
LDA.b $0E
|
||||||
AND.w #$000F
|
AND.w #$000F
|
||||||
@@ -1491,8 +1542,9 @@ DoorsMapNextEntrance:
|
|||||||
STA.b $CA
|
STA.b $CA
|
||||||
|
|
||||||
JSR GetSpecificRoomVisibility
|
JSR GetSpecificRoomVisibility
|
||||||
|
AND.w #$00FF
|
||||||
BNE .acceptable
|
BNE .acceptable
|
||||||
BEQ .done
|
JMP .done
|
||||||
|
|
||||||
+
|
+
|
||||||
TYX
|
TYX
|
||||||
@@ -1509,6 +1561,7 @@ DoorsMapNextEntrance:
|
|||||||
STA.b $CA
|
STA.b $CA
|
||||||
|
|
||||||
JSR GetSpecificRoomVisibility
|
JSR GetSpecificRoomVisibility
|
||||||
|
AND.w #$00FF
|
||||||
BNE .acceptable
|
BNE .acceptable
|
||||||
|
|
||||||
LDA.w #$0001
|
LDA.w #$0001
|
||||||
@@ -1538,6 +1591,9 @@ DoorsMapNextEntrance:
|
|||||||
LDA.b $00
|
LDA.b $00
|
||||||
AND.b $0E
|
AND.b $0E
|
||||||
BEQ .check_next
|
BEQ .check_next
|
||||||
|
LDA.b $0B
|
||||||
|
AND.w #$00FF
|
||||||
|
BEQ .check_next
|
||||||
|
|
||||||
.acceptable
|
.acceptable
|
||||||
PHX
|
PHX
|
||||||
@@ -1597,6 +1653,7 @@ FindFirstEntrance:
|
|||||||
STA.b $CA
|
STA.b $CA
|
||||||
|
|
||||||
JSR GetSpecificRoomVisibility
|
JSR GetSpecificRoomVisibility
|
||||||
|
AND.w #$00FF
|
||||||
BNE .acceptable
|
BNE .acceptable
|
||||||
|
|
||||||
LDA.w #$0001
|
LDA.w #$0001
|
||||||
@@ -1626,6 +1683,9 @@ FindFirstEntrance:
|
|||||||
LDA.b $00
|
LDA.b $00
|
||||||
AND.b $0E
|
AND.b $0E
|
||||||
BEQ .check_next
|
BEQ .check_next
|
||||||
|
LDA.b $0B
|
||||||
|
AND.w #$00FF
|
||||||
|
BEQ .check_next
|
||||||
|
|
||||||
.acceptable
|
.acceptable
|
||||||
PLP
|
PLP
|
||||||
@@ -1867,6 +1927,7 @@ DrawDoorsEntrances:
|
|||||||
BMI .check_dropdown
|
BMI .check_dropdown
|
||||||
|
|
||||||
JSR GetSpecificRoomVisibility
|
JSR GetSpecificRoomVisibility
|
||||||
|
AND.w #$00FF
|
||||||
BNE .draw_entrance
|
BNE .draw_entrance
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
@@ -1876,6 +1937,9 @@ DrawDoorsEntrances:
|
|||||||
PLX
|
PLX
|
||||||
AND.b $0E
|
AND.b $0E
|
||||||
BEQ .check_dropdown
|
BEQ .check_dropdown
|
||||||
|
LDA.b $0B
|
||||||
|
AND.w #$00FF
|
||||||
|
BEQ .check_dropdown
|
||||||
|
|
||||||
.draw_entrance
|
.draw_entrance
|
||||||
SEP #$30
|
SEP #$30
|
||||||
@@ -1906,6 +1970,7 @@ DrawDoorsEntrances:
|
|||||||
BMI .next_room
|
BMI .next_room
|
||||||
|
|
||||||
JSR GetSpecificRoomVisibility
|
JSR GetSpecificRoomVisibility
|
||||||
|
AND.w #$00FF
|
||||||
BNE .draw_dropdown
|
BNE .draw_dropdown
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
@@ -1914,7 +1979,13 @@ DrawDoorsEntrances:
|
|||||||
LDA.l DropdownQuadrantMasks, X
|
LDA.l DropdownQuadrantMasks, X
|
||||||
PLX
|
PLX
|
||||||
AND.b $0E
|
AND.b $0E
|
||||||
BEQ .next_room
|
BEQ .goto_next_room
|
||||||
|
LDA.b $0B
|
||||||
|
AND.w #$00FF
|
||||||
|
BNE .draw_dropdown
|
||||||
|
|
||||||
|
.goto_next_room
|
||||||
|
JMP .next_room
|
||||||
|
|
||||||
.draw_dropdown
|
.draw_dropdown
|
||||||
SEP #$30
|
SEP #$30
|
||||||
@@ -1964,7 +2035,6 @@ DrawDoorsStairs:
|
|||||||
INX : INX
|
INX : INX
|
||||||
LDA.l SpiralProps, X
|
LDA.l SpiralProps, X
|
||||||
|
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
@@ -1996,6 +2066,10 @@ DrawDoorsStairs:
|
|||||||
AND.b $0E
|
AND.b $0E
|
||||||
BEQ .skip
|
BEQ .skip
|
||||||
|
|
||||||
|
LDA.b $0B
|
||||||
|
CMP.b #$04
|
||||||
|
BCC .skip
|
||||||
|
|
||||||
.draw
|
.draw
|
||||||
LDY.b $00
|
LDY.b $00
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
|
|||||||
@@ -7,6 +7,44 @@ DrawNonexistentRoom:
|
|||||||
STA.l $7F0042, X
|
STA.l $7F0042, X
|
||||||
JML $8AE7F2
|
JML $8AE7F2
|
||||||
|
|
||||||
|
GetVisibilityProps:
|
||||||
|
PHX
|
||||||
|
ASL A : ASL A
|
||||||
|
TAX
|
||||||
|
LDA.b $0C
|
||||||
|
AND.l .visibility_props, X
|
||||||
|
ORA.l .visibility_props+2, X
|
||||||
|
STA.b $0C
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.visibility_props:
|
||||||
|
dw $0000, $0F00
|
||||||
|
dw $C000, $174F
|
||||||
|
dw $C000, $174F
|
||||||
|
dw $0000, $1400
|
||||||
|
dw $0000, $1000
|
||||||
|
dw $0000, $0C00
|
||||||
|
dw $0000, $0800
|
||||||
|
|
||||||
|
; A = room shape
|
||||||
|
; $0C = visibility props
|
||||||
|
GetQuadrantTile:
|
||||||
|
PHA
|
||||||
|
|
||||||
|
LDA.b $0C
|
||||||
|
AND.w #$03FF
|
||||||
|
BNE .square
|
||||||
|
|
||||||
|
PLA
|
||||||
|
ORA.b $0C
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.square
|
||||||
|
PLA
|
||||||
|
LDA.b $0C
|
||||||
|
RTS
|
||||||
|
|
||||||
NormalDrawDungeonMapRoom:
|
NormalDrawDungeonMapRoom:
|
||||||
JSL DrawDungeonMapRoom
|
JSL DrawDungeonMapRoom
|
||||||
JML $8AE7F2
|
JML $8AE7F2
|
||||||
@@ -19,54 +57,7 @@ DrawDungeonMapRoom:
|
|||||||
PHB : PHK : PLB ; need to keep this in same bank as data, or else specify bank
|
PHB : PHK : PLB ; need to keep this in same bank as data, or else specify bank
|
||||||
LDA.b $0A : PHA
|
LDA.b $0A : PHA
|
||||||
|
|
||||||
LDA.l ShowRooms_default
|
JSR GetSpecificRoomVisibility
|
||||||
AND.w #$00FF
|
|
||||||
STA.b $0A
|
|
||||||
|
|
||||||
PHX
|
|
||||||
|
|
||||||
LDX.w DungeonID
|
|
||||||
LDA.l MapField
|
|
||||||
AND.l DungeonMask, X
|
|
||||||
BEQ +
|
|
||||||
LDA.l ShowRooms_have_map
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.b $0A
|
|
||||||
BCC +
|
|
||||||
STA.b $0A
|
|
||||||
+
|
|
||||||
|
|
||||||
LDX.w DungeonID
|
|
||||||
LDA.l CompassField
|
|
||||||
AND.l DungeonMask, X
|
|
||||||
BEQ +
|
|
||||||
LDA.l ShowRooms_have_compass
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.b $0A
|
|
||||||
BCC +
|
|
||||||
STA.b $0A
|
|
||||||
+
|
|
||||||
|
|
||||||
LDA.b $0E
|
|
||||||
AND.w #$000F
|
|
||||||
BEQ +
|
|
||||||
LDA.l ShowRooms_visited_tile
|
|
||||||
AND.w #$00FF
|
|
||||||
CMP.b $0A
|
|
||||||
BCC +
|
|
||||||
STA.b $0A
|
|
||||||
+
|
|
||||||
|
|
||||||
PLX
|
|
||||||
|
|
||||||
LDA.b $0A : BNE + : LDA.w #$0F00 : BRA ++
|
|
||||||
+ DEC A : BNE + : LDA.w #$174F : BRA ++
|
|
||||||
+ DEC A : BNE + : LDA.w #$174F : BRA ++
|
|
||||||
+ DEC A : BNE + : LDA.w #$1400 : BRA ++
|
|
||||||
+ DEC A : BNE + : LDA.w #$1000 : BRA ++
|
|
||||||
+ DEC A : BNE + : LDA.w #$0C00 : BRA ++
|
|
||||||
+ LDA.w #$0800
|
|
||||||
++ STA.b $0C
|
|
||||||
|
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
@@ -74,49 +65,44 @@ DrawDungeonMapRoom:
|
|||||||
TAY
|
TAY
|
||||||
|
|
||||||
macro DrawQuadrant(quadrant, writeOffset)
|
macro DrawQuadrant(quadrant, writeOffset)
|
||||||
?DrawQuadrant:
|
.draw_quadrant_<quadrant>:
|
||||||
LDA.w SupertileRoomShapes+(2*<quadrant>), Y
|
LDA.w #(3-<quadrant>)<<14
|
||||||
CMP.w #$FFFF : BEQ ?.empty
|
STA.b $0C
|
||||||
PHA
|
|
||||||
LDA.b $0E
|
LDA.b $0E
|
||||||
AND.w #1<<(3-<quadrant>)
|
BIT.w #1<<(3-<quadrant>)
|
||||||
BNE ?.visited
|
BNE ..visited
|
||||||
|
|
||||||
?.unvisited
|
|
||||||
LDA.b $0A
|
LDA.b $0A
|
||||||
CMP.w #$0003
|
BRA ..continue
|
||||||
BCS ?.shape
|
|
||||||
|
|
||||||
?.square
|
..visited
|
||||||
PLA
|
LDA.b $0B
|
||||||
LDA.b $0C
|
|
||||||
EOR.w #(3-<quadrant>)<<14
|
|
||||||
BRA ?.write
|
|
||||||
|
|
||||||
?.shape
|
..continue
|
||||||
PLA
|
AND.w #$00FF
|
||||||
ORA.b $0C
|
JSR GetVisibilityProps
|
||||||
BRA ?.write
|
|
||||||
|
|
||||||
?.visited
|
LDA.w SupertileRoomShapes+(2*<quadrant>), Y
|
||||||
PLA
|
CMP.w #$FFFF : BNE ..get_quadrant
|
||||||
ORA.w #$0800
|
|
||||||
BRA ?.write
|
|
||||||
|
|
||||||
?.empty
|
|
||||||
LDA.b $0A
|
LDA.b $0A
|
||||||
|
AND.w #$00FF
|
||||||
CMP.w #$0001
|
CMP.w #$0001
|
||||||
BEQ ?.full_square
|
BNE ..empty
|
||||||
|
|
||||||
|
..full_square
|
||||||
|
LDA.b $0C
|
||||||
|
BRA ..write
|
||||||
|
|
||||||
|
..get_quadrant
|
||||||
|
JSR GetQuadrantTile
|
||||||
|
BRA ..write
|
||||||
|
|
||||||
|
..empty
|
||||||
LDA.w #$0F00
|
LDA.w #$0F00
|
||||||
BRA ?.write
|
|
||||||
|
|
||||||
?.full_square
|
..write
|
||||||
LDA.w #$174F
|
|
||||||
EOR.w #(3-<quadrant>)<<14
|
|
||||||
|
|
||||||
?.write
|
|
||||||
STA.l $7F0000+<writeOffset>, X
|
STA.l $7F0000+<writeOffset>, X
|
||||||
?.done
|
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
%DrawQuadrant(0, $00)
|
%DrawQuadrant(0, $00)
|
||||||
|
|||||||
@@ -171,7 +171,9 @@ ShowRooms:
|
|||||||
.visited_tile
|
.visited_tile
|
||||||
db $04
|
db $04
|
||||||
.reserved
|
.reserved
|
||||||
skip 4
|
skip 3
|
||||||
|
.dark_room_cap
|
||||||
|
db $01
|
||||||
warnpc $B9FF08
|
warnpc $B9FF08
|
||||||
|
|
||||||
org $B9FF08
|
org $B9FF08
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ GKMajorVersion:
|
|||||||
db $01
|
db $01
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GKMinorVersion:
|
GKMinorVersion:
|
||||||
db $00
|
; $01 = Dark rooms don't show on map from visition
|
||||||
|
db $01
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GKBuild:
|
GKBuild:
|
||||||
db $00
|
db $00
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ RTL
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
SetOverlayIfLamp:
|
SetOverlayIfLamp:
|
||||||
JSL LampCheck
|
JSL LampCheck
|
||||||
CMP.b #$00
|
|
||||||
BEQ +
|
BEQ +
|
||||||
LDA.b #$01
|
LDA.b #$01
|
||||||
+
|
+
|
||||||
|
|||||||
@@ -1584,6 +1584,7 @@ dw $0000
|
|||||||
; STAIRS3
|
; STAIRS3
|
||||||
; STAIRS4
|
; STAIRS4
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
org $B0DA00
|
||||||
RoomHeaders:
|
RoomHeaders:
|
||||||
org $B0DA00 : RoomHeader_0000: ; pc 0x185A00
|
org $B0DA00 : RoomHeader_0000: ; pc 0x185A00
|
||||||
db $41, $21, $13, $22, $07, $3D, $00, $00, $00, $10, $C0, $00, $00, $04
|
db $41, $21, $13, $22, $07, $3D, $00, $00, $00, $10, $C0, $00, $00, $04
|
||||||
|
|||||||
@@ -288,6 +288,7 @@ 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
|
||||||
|
RoomHeaderPointers = $84F1E2
|
||||||
Sprite_ShowSolicitedMessage_Direction = $85E1A3
|
Sprite_ShowSolicitedMessage_Direction = $85E1A3
|
||||||
FluteMenuNumbers_bits = $8AB7A3
|
FluteMenuNumbers_bits = $8AB7A3
|
||||||
WorldMap_RedXChars = $8ABF70
|
WorldMap_RedXChars = $8ABF70
|
||||||
|
|||||||
Reference in New Issue
Block a user