Fix pot shuffle, implement map settings
This commit is contained in:
@@ -225,7 +225,7 @@ CheckPots:
|
|||||||
LDA.b [$04], Y
|
LDA.b [$04], Y
|
||||||
CMP.w #$FFFF : BEQ .done
|
CMP.w #$FFFF : BEQ .done
|
||||||
INX : INY : INY
|
INX : INY : INY
|
||||||
BIT.w #$8000 : BNE .we_care ; marked as major item
|
BIT.w #$8000 : BNE .major_item ; marked as major item
|
||||||
LDA.b [$04], Y
|
LDA.b [$04], Y
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
CMP.w #$0008 : BEQ .small_key
|
CMP.w #$0008 : BEQ .small_key
|
||||||
@@ -234,10 +234,13 @@ CheckPots:
|
|||||||
|
|
||||||
.small_key
|
.small_key
|
||||||
LDA.w #$0024
|
LDA.w #$0024
|
||||||
.we_care
|
BRA .continue
|
||||||
INY
|
.major_item
|
||||||
|
LDA.b [$04], Y
|
||||||
|
.continue
|
||||||
PHA
|
PHA
|
||||||
PHX
|
PHX
|
||||||
|
INY
|
||||||
TXA : ASL A
|
TXA : ASL A
|
||||||
EOR.w #$FFFF
|
EOR.w #$FFFF
|
||||||
CLC : ADC.w #$001F ; bit mask table is in opposite order of what we want
|
CLC : ADC.w #$001F ; bit mask table is in opposite order of what we want
|
||||||
|
|||||||
@@ -1,51 +1,54 @@
|
|||||||
; $CA has room_id
|
; $CA has room_id
|
||||||
DrawDungeonMapRoom:
|
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
|
||||||
|
|
||||||
; base no-info palette
|
LDA.l ShowRooms_default
|
||||||
LDA.w #$0C00
|
AND.w #$00FF
|
||||||
STA.b $0C
|
STA.b $0A
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
|
|
||||||
LDX.w DungeonID
|
LDX.w DungeonID
|
||||||
LDA.l MapField
|
LDA.l MapField
|
||||||
AND.l DungeonMask, X
|
AND.l DungeonMask, X
|
||||||
BEQ +
|
LDA.l ShowRooms_have_map
|
||||||
LDA.w #$1400
|
AND.w #$00FF
|
||||||
STA.b $0C
|
CMP.b $0A
|
||||||
LDA.b $0E
|
BCC +
|
||||||
ORA.w #$8000
|
STA.b $0A
|
||||||
STA.b $0E
|
+
|
||||||
+
|
|
||||||
|
|
||||||
|
LDX.w DungeonID
|
||||||
LDA.l CompassField
|
LDA.l CompassField
|
||||||
AND.l DungeonMask, X
|
AND.l DungeonMask, X
|
||||||
BEQ +
|
LDA.l ShowRooms_have_compass
|
||||||
LDA.b $0E
|
AND.w #$00FF
|
||||||
ORA.w #$4000
|
CMP.b $0A
|
||||||
STA.b $0E
|
BCC +
|
||||||
+
|
STA.b $0A
|
||||||
PLX
|
+
|
||||||
|
|
||||||
LDA.b $0E
|
LDA.b $0E
|
||||||
BNE +
|
|
||||||
; we haven't seen the supertile at all and don't have map or compass
|
|
||||||
LDA.w #$0F7B
|
|
||||||
STA.l $7F0042, X
|
|
||||||
ORA.w #$4000
|
|
||||||
STA.l $7F0040, X
|
|
||||||
ORA.w #$8000
|
|
||||||
STA.l $7F0000, X
|
|
||||||
AND.w #$BFFF
|
|
||||||
STA.l $7F0002, X
|
|
||||||
JMP .done
|
|
||||||
+
|
|
||||||
|
|
||||||
AND.w #$000F
|
AND.w #$000F
|
||||||
BEQ +
|
BEQ +
|
||||||
LDA.w #$1400
|
LDA.l ShowRooms_visited_tile
|
||||||
STA.b $0C
|
AND.w #$00FF
|
||||||
+
|
CMP.b $0A
|
||||||
|
BCC +
|
||||||
|
STA.b $0A
|
||||||
|
+
|
||||||
|
|
||||||
|
LDA.b $0A : BNE + : LDA.w #$0F00 : BRA ++
|
||||||
|
+ DEC A : BNE + : LDA.w #$0F7B : BRA ++
|
||||||
|
+ DEC A : BNE + : LDA.w #$0F7B : BRA ++
|
||||||
|
+ DEC A : BNE + : LDA.w #$0C00 : BRA ++
|
||||||
|
+ DEC A : BNE + : LDA.w #$1000 : BRA ++
|
||||||
|
+ DEC A : BNE + : LDA.w #$1400 : BRA ++
|
||||||
|
+ LDA.w #$0800
|
||||||
|
++ STA.b $0C
|
||||||
|
|
||||||
|
PLX
|
||||||
|
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
@@ -58,20 +61,45 @@ DrawDungeonMapRoom:
|
|||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
CMP.w #$00FF : BEQ ?.empty
|
CMP.w #$00FF : BEQ ?.empty
|
||||||
CLC : ADC.w #$0340
|
CLC : ADC.w #$0340
|
||||||
ORA.w #(3-<quadrant>)<<14
|
|
||||||
PHA
|
PHA
|
||||||
LDA.b $0E
|
LDA.b $0E
|
||||||
AND.w #1<<(3-<quadrant>)
|
AND.w #1<<(3-<quadrant>)
|
||||||
BNE ?.visited
|
BNE ?.visited
|
||||||
PLA
|
|
||||||
ORA.b $0C
|
?.unvisited
|
||||||
BRA ?.write
|
LDA.b $0A
|
||||||
|
CMP.w #$0003
|
||||||
|
BCS ?.shape
|
||||||
|
|
||||||
|
?.square
|
||||||
|
PLA
|
||||||
|
LDA.b $0C
|
||||||
|
BRA ?.write
|
||||||
|
|
||||||
|
?.shape
|
||||||
|
PLA
|
||||||
|
ORA.b $0C
|
||||||
|
BRA ?.write
|
||||||
|
|
||||||
?.visited
|
?.visited
|
||||||
PLA
|
PLA
|
||||||
ORA.w #$0800
|
ORA.w #$0800
|
||||||
?.write
|
BRA ?.write
|
||||||
STA.l $7F0000+<writeOffset>, X
|
|
||||||
?.empty
|
?.empty
|
||||||
|
LDA.b $0A
|
||||||
|
CMP.w #$0001
|
||||||
|
BEQ ?.full_square
|
||||||
|
LDA.w #$0F00
|
||||||
|
BRA ?.write
|
||||||
|
|
||||||
|
?.full_square
|
||||||
|
LDA.w #$0F7B
|
||||||
|
|
||||||
|
?.write
|
||||||
|
ORA.w #(3-<quadrant>)<<14
|
||||||
|
STA.l $7F0000+<writeOffset>, X
|
||||||
|
?.done
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
%DrawQuadrant(0, $00)
|
%DrawQuadrant(0, $00)
|
||||||
@@ -80,5 +108,6 @@ DrawDungeonMapRoom:
|
|||||||
%DrawQuadrant(3, $42)
|
%DrawQuadrant(3, $42)
|
||||||
|
|
||||||
.done
|
.done
|
||||||
|
PLA : STA.b $0A
|
||||||
PLB
|
PLB
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ org $9BE564
|
|||||||
dw $0000, $34E0, $7FFF, $34E0, $34E0, $0000, $7EB5, $1CE7
|
dw $0000, $34E0, $7FFF, $34E0, $34E0, $0000, $7EB5, $1CE7
|
||||||
|
|
||||||
org $9BE584
|
org $9BE584
|
||||||
dw $0000, $71E7, $7FFF, $3B5F, $71E7, $0000, $7EB5, $1CE7
|
dw $0000, $4100, $7FFF, $2656, $4100, $0000, $7EB5, $1CE7
|
||||||
|
|
||||||
org $9BE5A4
|
org $9BE5A4
|
||||||
dw $0000, $34E0, $7FFF, $2656, $34E0, $0000, $7EB5, $1CE7
|
dw $0000, $5565, $7FFF, $2BE9, $0000, $0000, $7EB5, $1CE7
|
||||||
|
|
||||||
; move BG1 to main screen in dungeon map screen
|
; move BG1 to main screen in dungeon map screen
|
||||||
org $8AE130
|
org $8AE130
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ dw $2B07, $6B07, $2B17, $2B18 ; 03 - small key
|
|||||||
dw $2B0B, $6B0B, $2B3B, $6B3B ; 04 - triforce piece
|
dw $2B0B, $6B0B, $2B3B, $6B3B ; 04 - triforce piece
|
||||||
dw $6B08, $2B08, $EB08, $AB08 ; 05 - safety - plus
|
dw $6B08, $2B08, $EB08, $AB08 ; 05 - safety - plus
|
||||||
dw $AB3A, $EB3A, $2B3A, $6B3A ; 06 - compass
|
dw $AB3A, $EB3A, $2B3A, $6B3A ; 06 - compass
|
||||||
dw $2B07, $2B08, $2B17, $2B18 ; 07 - small key
|
dw $2B07, $6B07, $2B17, $2B18 ; 07 - small key
|
||||||
dw $2B05, $6B05, $2B15, $2B16 ; 08 - big key
|
dw $2B05, $6B05, $2B15, $2B16 ; 08 - big key
|
||||||
dw $2B09, $2B0A, $2B39, $6B39 ; 09 - pendant
|
dw $2B09, $2B0A, $2B39, $6B39 ; 09 - pendant
|
||||||
dw $2B0F, $6B0F, $2B3F, $6B3F ; 0A - inventory item - big chest
|
dw $2B0F, $6B0F, $2B3F, $6B3F ; 0A - inventory item - big chest
|
||||||
@@ -105,23 +105,22 @@ warnpc $B9FF00
|
|||||||
org $B9FF00
|
org $B9FF00
|
||||||
; $00 - do not show anything
|
; $00 - do not show anything
|
||||||
; $01 - show presence of supertile as dark square
|
; $01 - show presence of supertile as dark square
|
||||||
; $02 - show shape of quadrants
|
; $02 - show presence of quadrants as dark squares
|
||||||
; $03 - show outline of shape but no details
|
; $03 - show outline of shape with walls but no interior details (palette 3)
|
||||||
; $04 - show dark but detailed
|
; $04 - show dark with stairs but no hole/internal walls (palette 4)
|
||||||
; $05 - show lit with detail
|
; $05 - show mostly lit with stairs and holes/internal walls (palette 5)
|
||||||
ShowRooms: ; NYI
|
; $06 - show fully lit with stairs and holes/internal walls (palette 2)
|
||||||
|
ShowRooms:
|
||||||
.default
|
.default
|
||||||
db $02
|
db $01
|
||||||
.have_map
|
.have_map
|
||||||
db $04
|
db $04
|
||||||
.have_compass
|
.have_compass
|
||||||
db $03
|
db $03
|
||||||
.visited_tile
|
.visited_tile
|
||||||
db $04
|
|
||||||
.visited_quadrant
|
|
||||||
db $05
|
db $05
|
||||||
.reserved
|
.reserved
|
||||||
skip 3
|
skip 4
|
||||||
|
|
||||||
org $B9FF08
|
org $B9FF08
|
||||||
; $00 - do not show anything
|
; $00 - do not show anything
|
||||||
|
|||||||
Reference in New Issue
Block a user