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