Fix pot shuffle, implement map settings

This commit is contained in:
2026-01-02 03:36:12 -06:00
parent 58db28f8bf
commit 1b43799e6e
4 changed files with 86 additions and 55 deletions

View File

@@ -225,7 +225,7 @@ CheckPots:
LDA.b [$04], Y
CMP.w #$FFFF : BEQ .done
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
AND.w #$00FF
CMP.w #$0008 : BEQ .small_key
@@ -234,10 +234,13 @@ CheckPots:
.small_key
LDA.w #$0024
.we_care
INY
BRA .continue
.major_item
LDA.b [$04], Y
.continue
PHA
PHX
INY
TXA : ASL A
EOR.w #$FFFF
CLC : ADC.w #$001F ; bit mask table is in opposite order of what we want

View File

@@ -1,51 +1,54 @@
; $CA has room_id
DrawDungeonMapRoom:
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.w #$0C00
STA.b $0C
LDA.l ShowRooms_default
AND.w #$00FF
STA.b $0A
PHX
LDX.w DungeonID
LDA.l MapField
AND.l DungeonMask, X
BEQ +
LDA.w #$1400
STA.b $0C
LDA.b $0E
ORA.w #$8000
STA.b $0E
+
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.b $0E
ORA.w #$4000
STA.b $0E
+
PLX
LDA.l ShowRooms_have_compass
AND.w #$00FF
CMP.b $0A
BCC +
STA.b $0A
+
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
BEQ +
LDA.w #$1400
STA.b $0C
+
LDA.l ShowRooms_visited_tile
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
AND.w #$00FF
@@ -58,20 +61,45 @@ DrawDungeonMapRoom:
AND.w #$00FF
CMP.w #$00FF : BEQ ?.empty
CLC : ADC.w #$0340
ORA.w #(3-<quadrant>)<<14
PHA
LDA.b $0E
AND.w #1<<(3-<quadrant>)
BNE ?.visited
PLA
ORA.b $0C
BRA ?.write
?.unvisited
LDA.b $0A
CMP.w #$0003
BCS ?.shape
?.square
PLA
LDA.b $0C
BRA ?.write
?.shape
PLA
ORA.b $0C
BRA ?.write
?.visited
PLA
ORA.w #$0800
?.write
STA.l $7F0000+<writeOffset>, X
PLA
ORA.w #$0800
BRA ?.write
?.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
%DrawQuadrant(0, $00)
@@ -80,5 +108,6 @@ DrawDungeonMapRoom:
%DrawQuadrant(3, $42)
.done
PLA : STA.b $0A
PLB
RTL

View File

@@ -14,10 +14,10 @@ org $9BE564
dw $0000, $34E0, $7FFF, $34E0, $34E0, $0000, $7EB5, $1CE7
org $9BE584
dw $0000, $71E7, $7FFF, $3B5F, $71E7, $0000, $7EB5, $1CE7
dw $0000, $4100, $7FFF, $2656, $4100, $0000, $7EB5, $1CE7
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
org $8AE130

View File

@@ -38,7 +38,7 @@ dw $2B07, $6B07, $2B17, $2B18 ; 03 - small key
dw $2B0B, $6B0B, $2B3B, $6B3B ; 04 - triforce piece
dw $6B08, $2B08, $EB08, $AB08 ; 05 - safety - plus
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 $2B09, $2B0A, $2B39, $6B39 ; 09 - pendant
dw $2B0F, $6B0F, $2B3F, $6B3F ; 0A - inventory item - big chest
@@ -105,23 +105,22 @@ warnpc $B9FF00
org $B9FF00
; $00 - do not show anything
; $01 - show presence of supertile as dark square
; $02 - show shape of quadrants
; $03 - show outline of shape but no details
; $04 - show dark but detailed
; $05 - show lit with detail
ShowRooms: ; NYI
; $02 - show presence of quadrants as dark squares
; $03 - show outline of shape with walls but no interior details (palette 3)
; $04 - show dark with stairs but no hole/internal walls (palette 4)
; $05 - show mostly lit with stairs and holes/internal walls (palette 5)
; $06 - show fully lit with stairs and holes/internal walls (palette 2)
ShowRooms:
.default
db $02
db $01
.have_map
db $04
.have_compass
db $03
.visited_tile
db $04
.visited_quadrant
db $05
.reserved
skip 3
skip 4
org $B9FF08
; $00 - do not show anything