WIP
This commit is contained in:
@@ -54,7 +54,7 @@ DrawLoot:
|
||||
|
||||
LDX.w GFXStripes
|
||||
LDA.b #$FF
|
||||
STA.w GFXStripes+2, X
|
||||
STA.w GFXStripes+$02, X
|
||||
|
||||
LDA.b #$01
|
||||
STA.b NMISTRIPES
|
||||
@@ -66,35 +66,68 @@ DrawLoot:
|
||||
DrawSingleFloorLoot:
|
||||
REP #$20
|
||||
AND.w #$00FF
|
||||
INC A
|
||||
ASL A
|
||||
CLC : ADC.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
|
||||
LDA.l DungeonMapFloorToDataOffset, X
|
||||
LDA.l MapDrawingData_floor_data_offset, X
|
||||
DEC A
|
||||
TAY
|
||||
STZ.b $06
|
||||
|
||||
LDA.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
|
||||
SEP #$20
|
||||
LDA.l MapDrawingData_column_count, X
|
||||
DEC A
|
||||
STA.b $06
|
||||
|
||||
LDA.l MapDrawingData_row_count, X
|
||||
DEC A
|
||||
STA.b $07
|
||||
|
||||
.next_row
|
||||
REP #$20
|
||||
LDA.w GFXStripes
|
||||
TAX
|
||||
CLC : ADC.w #$0030
|
||||
CLC : ADC.w #$0034
|
||||
STA.w GFXStripes
|
||||
|
||||
PHX
|
||||
LDA.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
|
||||
SEP #$20
|
||||
LDA.b $07
|
||||
CPX.w #$0002
|
||||
BNE +
|
||||
ASL A
|
||||
+
|
||||
CLC : ADC.b $07
|
||||
REP #$20
|
||||
AND.w #$00FF
|
||||
XBA
|
||||
LSR A : LSR A
|
||||
CLC : ADC.w #$1092
|
||||
ASL #5
|
||||
|
||||
CLC : ADC.l MapDrawingData_bg1_grid_start, X
|
||||
ADC.b $0E
|
||||
XBA
|
||||
STA.w GFXStripes+2, X
|
||||
PLX
|
||||
STA.w GFXStripes+$02, X
|
||||
CLC : ADC.w #$2000
|
||||
STA.w GFXStripes+$1A, X
|
||||
|
||||
LDA.w #$1300
|
||||
STA.w GFXStripes+$04, X
|
||||
STA.w GFXStripes+$1C, X
|
||||
|
||||
LDA.w #$1500
|
||||
STA.w GFXStripes+$04, X
|
||||
STA.w GFXStripes+$1E, X
|
||||
|
||||
TXA
|
||||
CLC : ADC.w #$0018
|
||||
TAX
|
||||
|
||||
.next_room
|
||||
REP #$20
|
||||
LDA.b ($0C), Y ; get room id
|
||||
@@ -115,29 +148,59 @@ DrawSingleFloorLoot:
|
||||
TAX
|
||||
|
||||
LDA.l LootTypeIcons+0, X
|
||||
STA.w GFXStripes+$06, Y
|
||||
STA.w GFXStripes+$00, Y
|
||||
LDA.l LootTypeIcons+2, X
|
||||
STA.w GFXStripes+$08, Y
|
||||
STA.w GFXStripes+$02, Y
|
||||
LDA.l LootTypeIcons+4, X
|
||||
STA.w GFXStripes+$1E, Y
|
||||
STA.w GFXStripes+$1A, Y
|
||||
LDA.l LootTypeIcons+6, X
|
||||
STA.w GFXStripes+$20, Y
|
||||
STA.w GFXStripes+$1C, Y
|
||||
|
||||
TYX
|
||||
PLY
|
||||
INY : INX #4
|
||||
DEY : DEX #4
|
||||
|
||||
LDA.l DungeonMapMode
|
||||
CMP.w #$0001
|
||||
BNE +
|
||||
LDA.b $06
|
||||
AND.w #$00FF
|
||||
BEQ +
|
||||
|
||||
; skip a column if in 4x3 mode and it's not the last column
|
||||
LDA.w #$0300
|
||||
STA.w GFXStripes+$02, X
|
||||
STA.w GFXStripes+$1C, X
|
||||
DEX : DEX
|
||||
+
|
||||
|
||||
SEP #$20
|
||||
INC.b $06
|
||||
LDA.b $06
|
||||
CMP.b #$05
|
||||
BCC .next_room
|
||||
DEC.b $06
|
||||
BPL .next_room
|
||||
|
||||
LDA.l DungeonMapMode
|
||||
CMP.b #$01
|
||||
BEQ +
|
||||
; draw an extra empty tile at the end to make up for width differences between modes
|
||||
LDA.b #$03
|
||||
STZ.w GFXStripes+$02, X
|
||||
STA.w GFXStripes+$03, X
|
||||
STZ.w GFXStripes+$1C, X
|
||||
STA.w GFXStripes+$1D, X
|
||||
+
|
||||
|
||||
DEC.b $07
|
||||
BMI .done
|
||||
|
||||
LDA.b #$00
|
||||
XBA
|
||||
LDA.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
LDA.l MapDrawingData_column_count, X
|
||||
DEC A
|
||||
STA.b $06
|
||||
|
||||
STZ.b $06
|
||||
INC.b $07
|
||||
LDA.b $07
|
||||
CMP.b #$05
|
||||
BCS .done
|
||||
JMP .next_row
|
||||
|
||||
.done
|
||||
|
||||
@@ -1,5 +1,24 @@
|
||||
DrawNonexistentRoom:
|
||||
REP #$20
|
||||
LDA.w #$0F00
|
||||
STA.l $7F0000, X
|
||||
STA.l $7F0002, X
|
||||
STA.l $7F0040, X
|
||||
STA.l $7F0042, X
|
||||
|
||||
FinishRoom:
|
||||
PHX
|
||||
LDA.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
PLA
|
||||
CLC : ADC.l MapDrawingData_column_spacing, X
|
||||
TAX
|
||||
JML $8AE7F6
|
||||
|
||||
; $CA has room_id
|
||||
DrawDungeonMapRoom:
|
||||
REP #$20
|
||||
PHB : PHK : PLB ; need to keep this in same bank as data, or else specify bank
|
||||
LDA.b $0A : PHA
|
||||
|
||||
@@ -111,7 +130,7 @@ DrawDungeonMapRoom:
|
||||
.done
|
||||
PLA : STA.b $0A
|
||||
PLB
|
||||
RTL
|
||||
JMP FinishRoom
|
||||
|
||||
DrawEntrances:
|
||||
REP #$30
|
||||
|
||||
@@ -29,13 +29,8 @@ CheckSwitchMap:
|
||||
RTL
|
||||
|
||||
DungeonMapSwitch_Submodule:
|
||||
; LDA.b $9B
|
||||
; STA.l $7EC229
|
||||
|
||||
JSL $80893D
|
||||
JSL $80833F
|
||||
; LDA.l $7EC229
|
||||
; STA.b $9B
|
||||
|
||||
LDA.b #$09
|
||||
STA.b $14
|
||||
@@ -51,11 +46,20 @@ DungeonMapSwitch_Submodule:
|
||||
STZ.b $07
|
||||
|
||||
LDA.w DungeonID
|
||||
CMP.l CachedDungeonID
|
||||
BEQ .current_dungeon
|
||||
|
||||
ASL A
|
||||
TAX
|
||||
LDA.l DungeonMapData.floor, X
|
||||
STA.b $A4
|
||||
STA.b CurrentFloor
|
||||
BRA .continue
|
||||
|
||||
.current_dungeon
|
||||
LDA.l CachedCurrentFloor
|
||||
STA.b CurrentFloor
|
||||
|
||||
.continue
|
||||
REP #$20
|
||||
STZ.b $E0
|
||||
STZ.b $E2
|
||||
@@ -90,7 +94,7 @@ SkipMapSprites:
|
||||
JML $8AEAEE
|
||||
+
|
||||
|
||||
LDA.l $7EC22A
|
||||
LDA.l CachedDungeonID
|
||||
CMP.w DungeonID
|
||||
BEQ +
|
||||
JML $8AEAF3
|
||||
@@ -100,19 +104,19 @@ CacheCurrentDungeon:
|
||||
STA.l $7EC206
|
||||
SEP #$20
|
||||
LDA.w DungeonID
|
||||
STA.l $7EC22A
|
||||
LDA.b $A4
|
||||
STA.l $7EC22B
|
||||
STA.l CachedDungeonID
|
||||
LDA.b CurrentFloor
|
||||
STA.l CachedCurrentFloor
|
||||
REP #$20
|
||||
RTL
|
||||
|
||||
RestoreCurrentDungeon:
|
||||
LDA.b #$F3
|
||||
STA.w $012C ; what we wrote over
|
||||
LDA.l $7EC22A
|
||||
LDA.l CachedDungeonID
|
||||
STA.w DungeonID
|
||||
LDA.l $7EC22B
|
||||
STA.b $A4
|
||||
LDA.l CachedCurrentFloor
|
||||
STA.b CurrentFloor
|
||||
RTL
|
||||
|
||||
RestoreDungeonMapFloorIndex:
|
||||
@@ -155,19 +159,67 @@ DrawDungeonLabel:
|
||||
INC.w $020D ; what we wrote over
|
||||
RTL
|
||||
|
||||
CountFloors:
|
||||
ADC.w $8AF605, Y
|
||||
STA.b $04
|
||||
LDY.w #$0000
|
||||
StartCurrentRoomSearch:
|
||||
LDA.w $8AF5E9, X ; dungeon map floor count data
|
||||
LSR A : LSR A : LSR A : LSR A
|
||||
STA.b $00
|
||||
LDA.w $8AF5E9, X
|
||||
AND.b #$0F
|
||||
CLC : ADC.b $00
|
||||
ASL A
|
||||
TAY
|
||||
RTL
|
||||
|
||||
CheckIfRoomFound:
|
||||
CPY.w #$0032
|
||||
FindCurrentRoom:
|
||||
PHX
|
||||
TYA
|
||||
CLC : ADC.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
LDA.l MapDrawingData_floor_data_offset, X
|
||||
STA.b $0C
|
||||
LDY.w #$0000
|
||||
|
||||
LDA.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
|
||||
SEP #$20
|
||||
|
||||
.next_room_check
|
||||
CPY.b $0C
|
||||
BCS .not_found
|
||||
|
||||
LDA.b ($04), Y
|
||||
INY
|
||||
CMP.b $0E
|
||||
JML $8AE877
|
||||
BEQ .found
|
||||
|
||||
LDA.b $00
|
||||
CMP.l MapDrawingData_floor_pixel_column_wrap, X
|
||||
BCS .next_row
|
||||
CLC : ADC.l MapDrawingData_supertile_pixel_spacing, X
|
||||
STA.b $00
|
||||
BRA .next_room_check
|
||||
|
||||
.next_row
|
||||
STZ.b $00
|
||||
|
||||
LDA.b $02
|
||||
CMP.l MapDrawingData_floor_pixel_row_wrap, X
|
||||
BCS .next_floor
|
||||
CLC : ADC.l MapDrawingData_supertile_pixel_spacing, X
|
||||
STA.b $02
|
||||
BRA .next_room_check
|
||||
|
||||
.next_floor
|
||||
STZ.b $02
|
||||
BRA .next_room_check
|
||||
|
||||
.found
|
||||
PLX
|
||||
JML $8AE891
|
||||
|
||||
.not_found
|
||||
PLX
|
||||
JML $8AE8CD
|
||||
|
||||
@@ -55,14 +55,21 @@ org $8AEE2B
|
||||
;================================================================================
|
||||
; Overhaul of Dungeon Map Screen
|
||||
;--------------------------------------------------------------------------------
|
||||
org $8AE64F
|
||||
org $8AE64D
|
||||
PLX
|
||||
JSL DrawDungeonMapRoom
|
||||
JMP.w $8AE7F2
|
||||
JML DrawDungeonMapRoom
|
||||
|
||||
org $8AE606
|
||||
PLX
|
||||
JML DrawNonexistentRoom
|
||||
|
||||
org $8AE152
|
||||
JSL LoadLastHUDPalette
|
||||
|
||||
org $808BD3
|
||||
JSL LoadStripes
|
||||
BRA + : NOP #9 : +
|
||||
|
||||
org $8AEAE8 ; vanilla checks number of sprites drawn instead of... counting...
|
||||
LDA.b $0E
|
||||
CMP.b #$02
|
||||
@@ -99,13 +106,27 @@ org $8AE1EC
|
||||
PLB
|
||||
JML DrawDungeonLabel
|
||||
|
||||
org $8AE86A
|
||||
JSL CountFloors
|
||||
NOP #2
|
||||
org $8AE83E
|
||||
JSL StartCurrentRoomSearch
|
||||
BRA + : NOP #6 : +
|
||||
|
||||
org $8AE872
|
||||
JML CheckIfRoomFound
|
||||
NOP
|
||||
org $8AE86C
|
||||
JML FindCurrentRoom
|
||||
padbyte $EA
|
||||
pad $8AE891
|
||||
|
||||
org $8AEBF8
|
||||
LDA.w $0217
|
||||
SEC : SBC.b $0F
|
||||
BMI +
|
||||
CMP.b #$18
|
||||
BCS +
|
||||
skip 7
|
||||
+
|
||||
|
||||
org $8AEB9A
|
||||
db -8, 8, -8, 8
|
||||
db -8, -8, 8, 8
|
||||
|
||||
;================================================================================
|
||||
; Show indicators of what is left in each room
|
||||
@@ -141,3 +162,7 @@ org $8AE2E0
|
||||
org $8AE21C
|
||||
JSL DrawMountain
|
||||
BRA + : NOP #9 : +
|
||||
|
||||
;================================================================================
|
||||
; Custom Door Rando Maps
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -34,3 +34,4 @@ incsrc dungeon_switch.asm
|
||||
incsrc draw_loot.asm
|
||||
incsrc check_loot.asm
|
||||
incsrc blink_loot.asm
|
||||
incsrc mappable_doors.asm
|
||||
|
||||
@@ -1,13 +1,37 @@
|
||||
pushpc
|
||||
org $809383
|
||||
db BG3DungeonMapStripes>>0
|
||||
LoadStripes:
|
||||
CPY.b #$09
|
||||
BEQ .dungeon_map
|
||||
.not_dungeon_map
|
||||
LDA.w $80937A, Y
|
||||
STA.b $00
|
||||
LDA.w $809383,Y
|
||||
STA.b $01
|
||||
LDA.w $80938C,Y
|
||||
STA.b $02
|
||||
RTL
|
||||
|
||||
org $80938C
|
||||
db BG3DungeonMapStripes>>8
|
||||
.dungeon_map
|
||||
LDA.l DungeonMapMode
|
||||
CMP.b #$01
|
||||
BEQ .doors
|
||||
|
||||
org $809395
|
||||
db BG3DungeonMapStripes>>16
|
||||
pullpc
|
||||
.not_doors
|
||||
LDA.b #BG3DungeonMapStripes>>0
|
||||
STA.b $00
|
||||
LDA.b #BG3DungeonMapStripes>>8
|
||||
STA.b $01
|
||||
LDA.b #BG3DungeonMapStripes>>16
|
||||
STA.b $02
|
||||
RTL
|
||||
|
||||
.doors
|
||||
LDA.b #BG3DungeonMapDoorStripes>>0
|
||||
STA.b $00
|
||||
LDA.b #BG3DungeonMapDoorStripes>>8
|
||||
STA.b $01
|
||||
LDA.b #BG3DungeonMapDoorStripes>>16
|
||||
STA.b $02
|
||||
RTL
|
||||
|
||||
LoadLastHUDPalette:
|
||||
; what we wrote over
|
||||
@@ -23,8 +47,7 @@ LoadLastHUDPalette:
|
||||
SEP #$20
|
||||
RTL
|
||||
|
||||
BG3DungeonMapStripes:
|
||||
; boring stuff from vanilla
|
||||
macro VanillaCommonMapStripes()
|
||||
dw $4260, $0100, $2100
|
||||
dw $4360, $0E40, $2101
|
||||
dw $4B60, $0100, $6100
|
||||
@@ -35,13 +58,8 @@ dw $6363, $0E40, $A101
|
||||
dw $6B63, $0100, $E100
|
||||
dw $8460, $0B00, $2102, $2103, $2104, $2105, $2106, $2107
|
||||
dw $A460, $0B00, $2112, $2113, $2114, $2115, $2116, $2117
|
||||
dw $4E60, $0100, $2100
|
||||
dw $4F60, $1A40, $2101
|
||||
dw $5D60, $0100, $6100
|
||||
dw $6E60, $2EC0, $2110
|
||||
dw $7D60, $2EC0, $6110
|
||||
dw $6E63, $0100, $A100
|
||||
dw $6F63, $1A40, $A101
|
||||
dw $7D63, $0100, $E100
|
||||
dw $0060, $7E40, $2111
|
||||
dw $8063, $3E41, $2111
|
||||
@@ -51,17 +69,27 @@ dw $0C60, $3EC0, $2111
|
||||
dw $0D60, $3EC0, $2111
|
||||
dw $1E60, $3EC0, $2111
|
||||
dw $1F60, $3EC0, $2111
|
||||
endmacro
|
||||
|
||||
|
||||
BG3DungeonMapStripes:
|
||||
%VanillaCommonMapStripes()
|
||||
; left edge of map border, from vanilla
|
||||
dw $4E60, $0100, $2100
|
||||
dw $4F60, $1A40, $2101
|
||||
dw $6E60, $2EC0, $2110
|
||||
dw $6E63, $0100, $A100
|
||||
dw $6F63, $1A40, $A101
|
||||
|
||||
; new stuff here:
|
||||
; horizontal borders
|
||||
dw $7260, $1340, $1D11
|
||||
dw $D261, $1340, $1D11
|
||||
dw $F261, $1340, $1D11
|
||||
dw $5263, $1340, $1D11
|
||||
dw $7260, $1240, $1D11
|
||||
dw $D261, $1240, $1D11
|
||||
dw $F261, $1240, $1D11
|
||||
dw $5263, $1240, $1D11
|
||||
|
||||
; vertical borders
|
||||
dw $7160, $2FC0, $1D11
|
||||
dw $7C60, $2FC0, $1D11
|
||||
dw $7160, $2EC0, $1D11
|
||||
dw $7C60, $2EC0, $1D11
|
||||
|
||||
macro TopOfSquares(start)
|
||||
; silly Big Endian
|
||||
@@ -94,3 +122,56 @@ endmacro
|
||||
%FullRow($6312)
|
||||
|
||||
db $FF
|
||||
|
||||
BG3DungeonMapDoorStripes:
|
||||
%VanillaCommonMapStripes()
|
||||
; left edge of map border, adjusted from vanilla
|
||||
dw $4D60, $0100, $2100
|
||||
dw $4E60, $1C40, $2101
|
||||
dw $6D60, $2EC0, $2110
|
||||
dw $6D63, $0100, $A100
|
||||
dw $6E63, $1C40, $A101
|
||||
|
||||
; horizontal borders
|
||||
dw $B160, $1440, $1D11
|
||||
dw $1161, $1440, $1D11
|
||||
dw $7161, $1440, $1D11
|
||||
dw $D161, $1440, $1D11
|
||||
dw $3162, $1440, $1D11
|
||||
dw $9162, $1440, $1D11
|
||||
dw $F162, $1440, $1D11
|
||||
dw $5163, $1440, $1D11
|
||||
|
||||
; vertical borders
|
||||
dw $B060, $12C0, $1D11
|
||||
dw $BC60, $12C0, $1D11
|
||||
dw $3062, $12C0, $1D11
|
||||
dw $3C62, $12C0, $1D11
|
||||
|
||||
macro TopOfDoorSquares(start)
|
||||
; silly Big Endian
|
||||
db <start>>>8, <start>, $00, $15
|
||||
dw $5D4C, $1D4C, $1D11, $5D4C, $1D4C, $1D11, $5D4C, $1D4C, $1D11, $5D4C, $1D4C
|
||||
endmacro
|
||||
|
||||
macro BottomOfDoorSquares(start)
|
||||
; silly Big Endian
|
||||
db <start>>>8, <start>, $00, $15
|
||||
dw $DD4C, $9D4C, $1D11, $DD4C, $9D4C, $1D11, $DD4C, $9D4C, $1D11, $DD4C, $9D4C
|
||||
endmacro
|
||||
|
||||
macro FullDoorRow(start)
|
||||
%TopOfDoorSquares(<start>)
|
||||
%BottomOfDoorSquares(<start>+$20)
|
||||
endmacro
|
||||
|
||||
; top grid
|
||||
%FullDoorRow($60D1)
|
||||
%FullDoorRow($6131)
|
||||
%FullDoorRow($6191)
|
||||
|
||||
%FullDoorRow($6251)
|
||||
%FullDoorRow($62B1)
|
||||
%FullDoorRow($6311)
|
||||
|
||||
db $FF
|
||||
|
||||
226
dungeon_map/mappable_doors.asm
Normal file
226
dungeon_map/mappable_doors.asm
Normal file
@@ -0,0 +1,226 @@
|
||||
MapDrawingData:
|
||||
.floor_data_offset
|
||||
dw $0000, $0000
|
||||
dw $0019, $000C
|
||||
dw $0032, $0018
|
||||
dw $004B, $0024
|
||||
dw $0064, $0030
|
||||
dw $007D, $003C
|
||||
dw $0096, $0048
|
||||
dw $00AF, $0054
|
||||
dw $00C8, $0060
|
||||
|
||||
.row_data_offset
|
||||
dw $0000, $0000
|
||||
dw $0005, $0004
|
||||
dw $000A, $0008
|
||||
dw $000F, $000C
|
||||
dw $0014, $0010
|
||||
|
||||
.corner_tile_address
|
||||
dw $00E2, $0160
|
||||
dw $00F8, $0178
|
||||
dw $03A2, $03A0
|
||||
dw $03B8, $03B8
|
||||
|
||||
.row_tile_address
|
||||
dw $00E4, $0162
|
||||
dw $03A4, $03A2
|
||||
|
||||
.row_tile_length
|
||||
dw $0014, $0016
|
||||
|
||||
.column_tile_address
|
||||
dw $0122, $01A0
|
||||
dw $0138, $01B8
|
||||
|
||||
.column_tile_length
|
||||
dw $0280, $0200
|
||||
|
||||
.floor_label_address
|
||||
dw $035E, $035C
|
||||
|
||||
.row_start_address
|
||||
dw $0124, $01A2
|
||||
dw $01A4, $0262
|
||||
dw $0224, $0322
|
||||
dw $02A4, $03D2
|
||||
dw $0324, $04A2
|
||||
|
||||
.column_count
|
||||
dw $0005, $0004
|
||||
|
||||
.column_spacing
|
||||
dw $0004, $0006
|
||||
|
||||
.row_count
|
||||
dw $0005, $0003
|
||||
|
||||
.bg1_grid_start
|
||||
dw $1091, $10D1
|
||||
|
||||
.sprite_offset_x_base
|
||||
dw $0090, $0088
|
||||
|
||||
.sprite_offset_y_base
|
||||
dw $001F, $002F
|
||||
dw $007F, $008F
|
||||
|
||||
.supertile_pixel_spacing
|
||||
dw $0010, $0018
|
||||
|
||||
.floor_pixel_column_wrap
|
||||
dw $0040, $0048
|
||||
|
||||
.floor_pixel_row_wrap
|
||||
dw $0040, $0030
|
||||
|
||||
macro Map_LDA(addr, label)
|
||||
pushpc
|
||||
org <addr>
|
||||
JSR LDA_<label>
|
||||
pullpc
|
||||
|
||||
LDA_<label>:
|
||||
PHX
|
||||
LDA.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
LDA.l MapDrawingData_<label>, X
|
||||
PLX
|
||||
RTS
|
||||
endmacro
|
||||
|
||||
macro Map_LDAY(addr, label)
|
||||
pushpc
|
||||
org <addr>
|
||||
JSR LDA_Y_<label>
|
||||
pullpc
|
||||
|
||||
if not(defined("LDA_Y_<label>"))
|
||||
!LDA_Y_<label> = 1
|
||||
LDA_Y_<label>:
|
||||
PHX
|
||||
TYA
|
||||
CLC : ADC.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
LDA.l MapDrawingData_<label>, X
|
||||
PLX
|
||||
RTS
|
||||
endif
|
||||
endmacro
|
||||
|
||||
macro Map_LDAX(addr, label)
|
||||
pushpc
|
||||
org <addr>
|
||||
JSR LDA_X_<label>
|
||||
pullpc
|
||||
|
||||
LDA_X_<label>:
|
||||
PHX
|
||||
TXA
|
||||
CLC : ADC.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
LDA.l MapDrawingData_<label>, X
|
||||
PLX
|
||||
RTS
|
||||
endmacro
|
||||
|
||||
macro Map_CMP(addr, label)
|
||||
pushpc
|
||||
org <addr>
|
||||
JSR CMP_<label>
|
||||
pullpc
|
||||
|
||||
CMP_<label>:
|
||||
PHX
|
||||
PHA
|
||||
LDA.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
PLA
|
||||
CMP.l MapDrawingData_<label>, X
|
||||
BEQ .z_flag_set
|
||||
.z_flag_clear
|
||||
PLX
|
||||
REP #$02
|
||||
RTS
|
||||
.z_flag_set
|
||||
PLX
|
||||
SEP #$02
|
||||
RTS
|
||||
endmacro
|
||||
|
||||
macro Map_ADC(addr, label)
|
||||
pushpc
|
||||
org <addr>
|
||||
JSR ADC_<label>
|
||||
pullpc
|
||||
|
||||
ADC_<label>:
|
||||
PHX
|
||||
PHA
|
||||
LDA.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
PLA
|
||||
CLC : ADC.l MapDrawingData_<label>, X
|
||||
PLX
|
||||
RTS
|
||||
endmacro
|
||||
|
||||
macro Map_ADCY(addr, label)
|
||||
pushpc
|
||||
org <addr>
|
||||
JSR ADC_Y_<label>
|
||||
pullpc
|
||||
|
||||
if not(defined("ADC_Y_<label>"))
|
||||
!ADC_Y_<label> = 1
|
||||
ADC_Y_<label>:
|
||||
PHX
|
||||
PHA
|
||||
TYA
|
||||
CLC : ADC.l DungeonMapMode
|
||||
ASL A
|
||||
TAX
|
||||
PLA
|
||||
CLC : ADC.l MapDrawingData_<label>, X
|
||||
PLX
|
||||
RTS
|
||||
endif
|
||||
endmacro
|
||||
|
||||
pushpc
|
||||
|
||||
org $8AE5DA
|
||||
ADC.b $02 ; swap position of load and add for ease
|
||||
|
||||
org $8AEBDB
|
||||
JSR ADC_Y_sprite_offset_y_base
|
||||
|
||||
org $8AE652 ; steal some space from the old map-drawing code we're no longer using
|
||||
|
||||
%Map_LDAY($8AE45F, corner_tile_address)
|
||||
%Map_LDAY($8AE489, row_tile_address)
|
||||
%Map_CMP($8AE4B0, row_tile_length)
|
||||
%Map_LDAY($8AE4C1, column_tile_address)
|
||||
%Map_CMP($8AE4EA, column_tile_length)
|
||||
%Map_LDA($8AE54A, floor_label_address)
|
||||
%Map_LDAX($8AE5D7, row_data_offset)
|
||||
%Map_LDAY($8AE5F7, floor_data_offset)
|
||||
%Map_CMP($8AE5A2, row_count)
|
||||
%Map_CMP($8AE7FA, column_count)
|
||||
%Map_LDAX($8AE591, row_start_address)
|
||||
%Map_ADC($8AE896, sprite_offset_x_base)
|
||||
%Map_ADCY($8AE8B5, sprite_offset_y_base)
|
||||
%Map_ADC($8AE952, sprite_offset_y_base)
|
||||
%Map_ADCY($8AEBDB, sprite_offset_y_base)
|
||||
|
||||
warnpc $8AE7F6
|
||||
padbyte $EA
|
||||
pad $8AE7F6
|
||||
|
||||
pullpc
|
||||
@@ -178,7 +178,7 @@ warnpc $B9FF10
|
||||
org $B9FF10
|
||||
; ---P bepc
|
||||
; P - dungeon prizes
|
||||
; b - bosses (and torches in GT, plus hera basement standing item)
|
||||
; b - bosses (and torches in GT and desert, plus hera basement standing item)
|
||||
; e - enemy drops
|
||||
; p - pots
|
||||
; c - chests
|
||||
@@ -187,3 +187,9 @@ ItemSources:
|
||||
|
||||
AlwaysShowCompass:
|
||||
db $01
|
||||
|
||||
; $00 - vanilla 5x5 maps
|
||||
; $01 - special DR 4x3 maps
|
||||
DungeonMapMode:
|
||||
dw $0000
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
5
ram.asm
5
ram.asm
@@ -114,6 +114,8 @@ RoomIndex = $7E00A0 ; Underworld room index. Word length. High byt
|
||||
; Not zeroed on exit to overworld.
|
||||
PreviousRoom = $7E00A2 ; Stores previous value of RoomIndex
|
||||
;
|
||||
CurrentFloor = $7E00A4 ; Current floor in dungeos
|
||||
;
|
||||
CameraBoundH = $7E00A6 ; Which set of camera boundaries to use.
|
||||
CameraBoundV = $7E00A7 ;
|
||||
;
|
||||
@@ -559,6 +561,9 @@ PegColor = $7EC172 ;
|
||||
;
|
||||
GameOverSongCache = $7EC227 ;
|
||||
;
|
||||
CachedDungeonID = $7EC22A ; Cached while opening dungeon map
|
||||
CachedCurrentFloor = $7EC22B ; to restore when closing
|
||||
;
|
||||
LastBGSet = $7EC2F8 ; Lists loaded sheets to check for decompression. 4 bytes.
|
||||
;
|
||||
PaletteBufferAux = $7EC300 ; Secondary and main palette buffer. See symbols_wram.asm
|
||||
|
||||
Reference in New Issue
Block a user