Merge in dungeon map changes #1
@@ -68,17 +68,13 @@ DrawSingleFloorLoot:
|
|||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
INC A
|
INC A
|
||||||
ASL A
|
ASL A
|
||||||
CLC : ADC.l DungeonMapMode
|
%ADD_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
LDA.l MapDrawingData_floor_data_offset, X
|
LDA.l MapDrawingData_floor_data_offset, X
|
||||||
DEC A
|
DEC A
|
||||||
TAY
|
TAY
|
||||||
|
|
||||||
LDA.l DungeonMapMode
|
%LDX_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.l MapDrawingData_column_count, X
|
LDA.l MapDrawingData_column_count, X
|
||||||
@@ -97,9 +93,7 @@ DrawSingleFloorLoot:
|
|||||||
STA.w GFXStripes
|
STA.w GFXStripes
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
LDA.l DungeonMapMode
|
%LDX_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.b $07
|
LDA.b $07
|
||||||
@@ -161,8 +155,7 @@ DrawSingleFloorLoot:
|
|||||||
DEY : DEX #4
|
DEY : DEX #4
|
||||||
|
|
||||||
LDA.l DungeonMapMode
|
LDA.l DungeonMapMode
|
||||||
CMP.w #$0001
|
BEQ +
|
||||||
BNE +
|
|
||||||
LDA.b $06
|
LDA.b $06
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
BEQ +
|
BEQ +
|
||||||
@@ -179,8 +172,7 @@ DrawSingleFloorLoot:
|
|||||||
BPL .next_room
|
BPL .next_room
|
||||||
|
|
||||||
LDA.l DungeonMapMode
|
LDA.l DungeonMapMode
|
||||||
CMP.b #$01
|
BNE +
|
||||||
BEQ +
|
|
||||||
; draw an extra empty tile at the end to make up for width differences between modes
|
; draw an extra empty tile at the end to make up for width differences between modes
|
||||||
LDA.b #$03
|
LDA.b #$03
|
||||||
STZ.w GFXStripes+$02, X
|
STZ.w GFXStripes+$02, X
|
||||||
@@ -194,9 +186,7 @@ DrawSingleFloorLoot:
|
|||||||
|
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
XBA
|
XBA
|
||||||
LDA.l DungeonMapMode
|
%LDX_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l MapDrawingData_column_count, X
|
LDA.l MapDrawingData_column_count, X
|
||||||
DEC A
|
DEC A
|
||||||
STA.b $06
|
STA.b $06
|
||||||
|
|||||||
@@ -8,9 +8,7 @@ DrawNonexistentRoom:
|
|||||||
|
|
||||||
FinishRoom:
|
FinishRoom:
|
||||||
PHX
|
PHX
|
||||||
LDA.l DungeonMapMode
|
%LDX_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
PLA
|
PLA
|
||||||
CLC : ADC.l MapDrawingData_column_spacing, X
|
CLC : ADC.l MapDrawingData_column_spacing, X
|
||||||
TAX
|
TAX
|
||||||
@@ -169,16 +167,12 @@ DrawSingleFloorEntrances:
|
|||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
CLC : ADC.l DungeonMapMode
|
%ADD_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l MapDrawingData_floor_data_offset, X
|
LDA.l MapDrawingData_floor_data_offset, X
|
||||||
TAY
|
TAY
|
||||||
STZ.b $06
|
STZ.b $06
|
||||||
|
|
||||||
LDA.l DungeonMapMode
|
%LDX_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
.next_room
|
.next_room
|
||||||
REP #$20
|
REP #$20
|
||||||
@@ -240,9 +234,7 @@ macro DrawSingleEntrance(offset)
|
|||||||
PHA
|
PHA
|
||||||
|
|
||||||
LDA.b $02
|
LDA.b $02
|
||||||
CLC : ADC.l DungeonMapMode
|
%ADD_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
PLA
|
PLA
|
||||||
CLC : ADC.l MapDrawingData_sprite_offset_y_base, X
|
CLC : ADC.l MapDrawingData_sprite_offset_y_base, X
|
||||||
@@ -265,9 +257,7 @@ DrawSingleRoomEntrances:
|
|||||||
STA.b $0E
|
STA.b $0E
|
||||||
PHY
|
PHY
|
||||||
|
|
||||||
LDA.l DungeonMapMode
|
%LDY_MapMode()
|
||||||
ASL A
|
|
||||||
TAY
|
|
||||||
|
|
||||||
SEP #$10
|
SEP #$10
|
||||||
|
|
||||||
|
|||||||
@@ -173,16 +173,12 @@ StartCurrentRoomSearch:
|
|||||||
FindCurrentRoom:
|
FindCurrentRoom:
|
||||||
PHX
|
PHX
|
||||||
TYA
|
TYA
|
||||||
CLC : ADC.l DungeonMapMode
|
%ADD_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l MapDrawingData_floor_data_offset, X
|
LDA.l MapDrawingData_floor_data_offset, X
|
||||||
STA.b $0C
|
STA.b $0C
|
||||||
LDY.w #$0000
|
LDY.w #$0000
|
||||||
|
|
||||||
LDA.l DungeonMapMode
|
%LDX_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
|
|
||||||
|
|||||||
@@ -27,10 +27,10 @@ endmacro
|
|||||||
|
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
|
incsrc mappable_doors.asm
|
||||||
incsrc draw_rooms.asm
|
incsrc draw_rooms.asm
|
||||||
incsrc map_bg3.asm
|
incsrc map_bg3.asm
|
||||||
incsrc dungeon_switch.asm
|
incsrc dungeon_switch.asm
|
||||||
incsrc draw_loot.asm
|
incsrc draw_loot.asm
|
||||||
incsrc check_loot.asm
|
incsrc check_loot.asm
|
||||||
incsrc blink_loot.asm
|
incsrc blink_loot.asm
|
||||||
incsrc mappable_doors.asm
|
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ LoadStripes:
|
|||||||
|
|
||||||
.dungeon_map
|
.dungeon_map
|
||||||
LDA.l DungeonMapMode
|
LDA.l DungeonMapMode
|
||||||
CMP.b #$01
|
BNE .doors
|
||||||
BEQ .doors
|
|
||||||
|
|
||||||
.not_doors
|
.not_doors
|
||||||
LDA.b #BG3DungeonMapStripes>>0
|
LDA.b #BG3DungeonMapStripes>>0
|
||||||
|
|||||||
@@ -103,20 +103,42 @@ CustomMapDrawingData:
|
|||||||
dw $000E
|
dw $000E
|
||||||
dw $0015
|
dw $0015
|
||||||
|
|
||||||
|
macro LDA_MapMode()
|
||||||
|
LDA.l DungeonMapMode
|
||||||
|
ASL A
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
macro LDX_MapMode()
|
||||||
|
%LDA_MapMode()
|
||||||
|
TAX
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
macro LDY_MapMode()
|
||||||
|
%LDA_MapMode()
|
||||||
|
TAY
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
macro ADD_MapMode()
|
||||||
|
CLC : ADC.l DungeonMapMode
|
||||||
|
ASL A
|
||||||
|
TAX
|
||||||
|
endmacro
|
||||||
|
|
||||||
macro Map_LDA(addr, label)
|
macro Map_LDA(addr, label)
|
||||||
pushpc
|
pushpc
|
||||||
org <addr>
|
org <addr>
|
||||||
JSR LDA_<label>
|
JSR LDA_<label>
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
LDA_<label>:
|
if not(defined("LDA_<label>"))
|
||||||
PHX
|
!LDA_<label> = 1
|
||||||
LDA.l DungeonMapMode
|
LDA_<label>:
|
||||||
ASL A
|
PHX
|
||||||
TAX
|
%LDX_MapMode()
|
||||||
LDA.l MapDrawingData_<label>, X
|
LDA.l MapDrawingData_<label>, X
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
endif
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
macro Map_LDAY(addr, label)
|
macro Map_LDAY(addr, label)
|
||||||
@@ -130,9 +152,7 @@ macro Map_LDAY(addr, label)
|
|||||||
LDA_Y_<label>:
|
LDA_Y_<label>:
|
||||||
PHX
|
PHX
|
||||||
TYA
|
TYA
|
||||||
CLC : ADC.l DungeonMapMode
|
%ADD_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l MapDrawingData_<label>, X
|
LDA.l MapDrawingData_<label>, X
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
@@ -145,15 +165,16 @@ macro Map_LDAX(addr, label)
|
|||||||
JSR LDA_X_<label>
|
JSR LDA_X_<label>
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
LDA_X_<label>:
|
if not(defined("LDA_X_<label>"))
|
||||||
PHX
|
!LDA_X_<label> = 1
|
||||||
TXA
|
LDA_X_<label>:
|
||||||
CLC : ADC.l DungeonMapMode
|
PHX
|
||||||
ASL A
|
TXA
|
||||||
TAX
|
%ADD_MapMode()
|
||||||
LDA.l MapDrawingData_<label>, X
|
LDA.l MapDrawingData_<label>, X
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
endif
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
macro Map_CMP(addr, label)
|
macro Map_CMP(addr, label)
|
||||||
@@ -162,58 +183,58 @@ macro Map_CMP(addr, label)
|
|||||||
JSR CMP_<label>
|
JSR CMP_<label>
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
CMP_<label>:
|
if not(defined("CMP_<label>"))
|
||||||
PHX
|
!CMP_<label> = 1
|
||||||
PHA
|
CMP_<label>:
|
||||||
LDA.l DungeonMapMode
|
PHX
|
||||||
ASL A
|
PHA
|
||||||
TAX
|
%LDX_MapMode()
|
||||||
PLA
|
PLA
|
||||||
CMP.l MapDrawingData_<label>, X
|
CMP.l MapDrawingData_<label>, X
|
||||||
BEQ .z_flag_set
|
BEQ .z_flag_set
|
||||||
.z_flag_clear
|
.z_flag_clear
|
||||||
PLX
|
PLX
|
||||||
REP #$02
|
REP #$02
|
||||||
RTS
|
RTS
|
||||||
.z_flag_set
|
.z_flag_set
|
||||||
PLX
|
PLX
|
||||||
SEP #$02
|
SEP #$02
|
||||||
RTS
|
RTS
|
||||||
|
endif
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
macro Map_ADC(addr, label)
|
macro Map_ADD(addr, label)
|
||||||
pushpc
|
pushpc
|
||||||
org <addr>
|
org <addr>
|
||||||
JSR ADC_<label>
|
JSR ADD_<label>
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
ADC_<label>:
|
if not(defined("ADD_<label>"))
|
||||||
PHX
|
!ADD_<label> = 1
|
||||||
PHA
|
ADD_<label>:
|
||||||
LDA.l DungeonMapMode
|
PHX
|
||||||
ASL A
|
PHA
|
||||||
TAX
|
%LDX_MapMode()
|
||||||
PLA
|
PLA
|
||||||
CLC : ADC.l MapDrawingData_<label>, X
|
CLC : ADC.l MapDrawingData_<label>, X
|
||||||
PLX
|
PLX
|
||||||
RTS
|
RTS
|
||||||
|
endif
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
macro Map_ADCY(addr, label)
|
macro Map_ADDY(addr, label)
|
||||||
pushpc
|
pushpc
|
||||||
org <addr>
|
org <addr>
|
||||||
JSR ADC_Y_<label>
|
JSR ADD_Y_<label>
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
if not(defined("ADC_Y_<label>"))
|
if not(defined("ADD_Y_<label>"))
|
||||||
!ADC_Y_<label> = 1
|
!ADD_Y_<label> = 1
|
||||||
ADC_Y_<label>:
|
ADD_Y_<label>:
|
||||||
PHX
|
PHX
|
||||||
PHA
|
PHA
|
||||||
TYA
|
TYA
|
||||||
CLC : ADC.l DungeonMapMode
|
%ADD_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
PLA
|
PLA
|
||||||
CLC : ADC.l MapDrawingData_<label>, X
|
CLC : ADC.l MapDrawingData_<label>, X
|
||||||
PLX
|
PLX
|
||||||
@@ -226,9 +247,6 @@ pushpc
|
|||||||
org $8AE5DA
|
org $8AE5DA
|
||||||
ADC.b $02 ; swap position of load and add for ease
|
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
|
org $8AE652 ; steal some space from the old map-drawing code we're no longer using
|
||||||
|
|
||||||
LoadDungeonMapRoomPointer_0A:
|
LoadDungeonMapRoomPointer_0A:
|
||||||
@@ -245,10 +263,10 @@ LoadDungeonMapRoomPointer_0A:
|
|||||||
%Map_LDAY($8AE5F7, floor_data_offset)
|
%Map_LDAY($8AE5F7, floor_data_offset)
|
||||||
%Map_CMP($8AE5A2, row_count)
|
%Map_CMP($8AE5A2, row_count)
|
||||||
%Map_CMP($8AE7FA, column_count)
|
%Map_CMP($8AE7FA, column_count)
|
||||||
%Map_ADC($8AE896, sprite_offset_x_base)
|
%Map_ADD($8AE896, sprite_offset_x_base)
|
||||||
%Map_ADCY($8AE8B5, sprite_offset_y_base)
|
%Map_ADDY($8AE8B5, sprite_offset_y_base)
|
||||||
%Map_ADC($8AE952, sprite_offset_y_base)
|
%Map_ADD($8AE952, sprite_offset_y_base)
|
||||||
%Map_ADCY($8AEBDB, sprite_offset_y_base)
|
%Map_ADDY($8AEBDB, sprite_offset_y_base)
|
||||||
|
|
||||||
warnpc $8AE7F6
|
warnpc $8AE7F6
|
||||||
padbyte $EA
|
padbyte $EA
|
||||||
@@ -273,17 +291,14 @@ LoadDungeonMapRoomPointer:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
PrepDrawRow:
|
PrepDrawRow:
|
||||||
CLC : ADC.l DungeonMapMode
|
%ADD_MapMode()
|
||||||
ASL A
|
|
||||||
TAX
|
|
||||||
LDA.l MapDrawingData_row_start_address, X
|
LDA.l MapDrawingData_row_start_address, X
|
||||||
CLC : ADC.b $06
|
CLC : ADC.b $06
|
||||||
AND.w #$0FFF
|
AND.w #$0FFF
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
LDA.l DungeonMapMode
|
LDA.l DungeonMapMode
|
||||||
CMP.w #$0001
|
BEQ .done
|
||||||
BNE .done
|
|
||||||
|
|
||||||
JSR DrawRowOfRoomConnections
|
JSR DrawRowOfRoomConnections
|
||||||
|
|
||||||
@@ -301,6 +316,7 @@ DrawRowOfRoomConnections:
|
|||||||
LDA.l DungeonMapFloorCountData, X
|
LDA.l DungeonMapFloorCountData, X
|
||||||
AND.w #$000F
|
AND.w #$000F
|
||||||
CLC : ADC.w DungeonMapCurrentFloor
|
CLC : ADC.w DungeonMapCurrentFloor
|
||||||
|
AND.w #$00FF
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
LDA.l CustomMapDrawingData_floor_connection_data_offset, X
|
LDA.l CustomMapDrawingData_floor_connection_data_offset, X
|
||||||
|
|||||||
Reference in New Issue
Block a user