Clean up macros somewhat

This commit is contained in:
2026-01-07 05:30:49 -06:00
parent d5917afb64
commit bdb1272cb2
6 changed files with 100 additions and 109 deletions

View File

@@ -68,17 +68,13 @@ DrawSingleFloorLoot:
AND.w #$00FF
INC A
ASL A
CLC : ADC.l DungeonMapMode
ASL A
TAX
%ADD_MapMode()
LDA.l MapDrawingData_floor_data_offset, X
DEC A
TAY
LDA.l DungeonMapMode
ASL A
TAX
%LDX_MapMode()
SEP #$20
LDA.l MapDrawingData_column_count, X
@@ -97,9 +93,7 @@ DrawSingleFloorLoot:
STA.w GFXStripes
PHX
LDA.l DungeonMapMode
ASL A
TAX
%LDX_MapMode()
SEP #$20
LDA.b $07
@@ -161,8 +155,7 @@ DrawSingleFloorLoot:
DEY : DEX #4
LDA.l DungeonMapMode
CMP.w #$0001
BNE +
BEQ +
LDA.b $06
AND.w #$00FF
BEQ +
@@ -179,8 +172,7 @@ DrawSingleFloorLoot:
BPL .next_room
LDA.l DungeonMapMode
CMP.b #$01
BEQ +
BNE +
; draw an extra empty tile at the end to make up for width differences between modes
LDA.b #$03
STZ.w GFXStripes+$02, X
@@ -194,9 +186,7 @@ DrawSingleFloorLoot:
LDA.b #$00
XBA
LDA.l DungeonMapMode
ASL A
TAX
%LDX_MapMode()
LDA.l MapDrawingData_column_count, X
DEC A
STA.b $06

View File

@@ -8,9 +8,7 @@ DrawNonexistentRoom:
FinishRoom:
PHX
LDA.l DungeonMapMode
ASL A
TAX
%LDX_MapMode()
PLA
CLC : ADC.l MapDrawingData_column_spacing, X
TAX
@@ -169,16 +167,12 @@ DrawSingleFloorEntrances:
ASL A
TAX
CLC : ADC.l DungeonMapMode
ASL A
TAX
%ADD_MapMode()
LDA.l MapDrawingData_floor_data_offset, X
TAY
STZ.b $06
LDA.l DungeonMapMode
ASL A
TAX
%LDX_MapMode()
.next_room
REP #$20
@@ -240,9 +234,7 @@ macro DrawSingleEntrance(offset)
PHA
LDA.b $02
CLC : ADC.l DungeonMapMode
ASL A
TAX
%ADD_MapMode()
PLA
CLC : ADC.l MapDrawingData_sprite_offset_y_base, X
@@ -265,9 +257,7 @@ DrawSingleRoomEntrances:
STA.b $0E
PHY
LDA.l DungeonMapMode
ASL A
TAY
%LDY_MapMode()
SEP #$10

View File

@@ -173,16 +173,12 @@ StartCurrentRoomSearch:
FindCurrentRoom:
PHX
TYA
CLC : ADC.l DungeonMapMode
ASL A
TAX
%ADD_MapMode()
LDA.l MapDrawingData_floor_data_offset, X
STA.b $0C
LDY.w #$0000
LDA.l DungeonMapMode
ASL A
TAX
%LDX_MapMode()
SEP #$20

View File

@@ -27,10 +27,10 @@ endmacro
pullpc
incsrc mappable_doors.asm
incsrc draw_rooms.asm
incsrc map_bg3.asm
incsrc dungeon_switch.asm
incsrc draw_loot.asm
incsrc check_loot.asm
incsrc blink_loot.asm
incsrc mappable_doors.asm

View File

@@ -12,8 +12,7 @@ LoadStripes:
.dungeon_map
LDA.l DungeonMapMode
CMP.b #$01
BEQ .doors
BNE .doors
.not_doors
LDA.b #BG3DungeonMapStripes>>0

View File

@@ -103,20 +103,42 @@ CustomMapDrawingData:
dw $000E
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)
pushpc
org <addr>
JSR LDA_<label>
pullpc
LDA_<label>:
PHX
LDA.l DungeonMapMode
ASL A
TAX
LDA.l MapDrawingData_<label>, X
PLX
RTS
if not(defined("LDA_<label>"))
!LDA_<label> = 1
LDA_<label>:
PHX
%LDX_MapMode()
LDA.l MapDrawingData_<label>, X
PLX
RTS
endif
endmacro
macro Map_LDAY(addr, label)
@@ -130,9 +152,7 @@ macro Map_LDAY(addr, label)
LDA_Y_<label>:
PHX
TYA
CLC : ADC.l DungeonMapMode
ASL A
TAX
%ADD_MapMode()
LDA.l MapDrawingData_<label>, X
PLX
RTS
@@ -145,15 +165,16 @@ macro Map_LDAX(addr, label)
JSR LDA_X_<label>
pullpc
LDA_X_<label>:
PHX
TXA
CLC : ADC.l DungeonMapMode
ASL A
TAX
LDA.l MapDrawingData_<label>, X
PLX
RTS
if not(defined("LDA_X_<label>"))
!LDA_X_<label> = 1
LDA_X_<label>:
PHX
TXA
%ADD_MapMode()
LDA.l MapDrawingData_<label>, X
PLX
RTS
endif
endmacro
macro Map_CMP(addr, label)
@@ -162,58 +183,58 @@ macro Map_CMP(addr, label)
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
if not(defined("CMP_<label>"))
!CMP_<label> = 1
CMP_<label>:
PHX
PHA
%LDX_MapMode()
PLA
CMP.l MapDrawingData_<label>, X
BEQ .z_flag_set
.z_flag_clear
PLX
REP #$02
RTS
.z_flag_set
PLX
SEP #$02
RTS
endif
endmacro
macro Map_ADC(addr, label)
macro Map_ADD(addr, label)
pushpc
org <addr>
JSR ADC_<label>
JSR ADD_<label>
pullpc
ADC_<label>:
PHX
PHA
LDA.l DungeonMapMode
ASL A
TAX
PLA
CLC : ADC.l MapDrawingData_<label>, X
PLX
RTS
if not(defined("ADD_<label>"))
!ADD_<label> = 1
ADD_<label>:
PHX
PHA
%LDX_MapMode()
PLA
CLC : ADC.l MapDrawingData_<label>, X
PLX
RTS
endif
endmacro
macro Map_ADCY(addr, label)
macro Map_ADDY(addr, label)
pushpc
org <addr>
JSR ADC_Y_<label>
JSR ADD_Y_<label>
pullpc
if not(defined("ADC_Y_<label>"))
!ADC_Y_<label> = 1
ADC_Y_<label>:
if not(defined("ADD_Y_<label>"))
!ADD_Y_<label> = 1
ADD_Y_<label>:
PHX
PHA
TYA
CLC : ADC.l DungeonMapMode
ASL A
TAX
%ADD_MapMode()
PLA
CLC : ADC.l MapDrawingData_<label>, X
PLX
@@ -226,9 +247,6 @@ 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
LoadDungeonMapRoomPointer_0A:
@@ -245,10 +263,10 @@ LoadDungeonMapRoomPointer_0A:
%Map_LDAY($8AE5F7, floor_data_offset)
%Map_CMP($8AE5A2, row_count)
%Map_CMP($8AE7FA, column_count)
%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)
%Map_ADD($8AE896, sprite_offset_x_base)
%Map_ADDY($8AE8B5, sprite_offset_y_base)
%Map_ADD($8AE952, sprite_offset_y_base)
%Map_ADDY($8AEBDB, sprite_offset_y_base)
warnpc $8AE7F6
padbyte $EA
@@ -273,17 +291,14 @@ LoadDungeonMapRoomPointer:
RTL
PrepDrawRow:
CLC : ADC.l DungeonMapMode
ASL A
TAX
%ADD_MapMode()
LDA.l MapDrawingData_row_start_address, X
CLC : ADC.b $06
AND.w #$0FFF
TAX
LDA.l DungeonMapMode
CMP.w #$0001
BNE .done
BEQ .done
JSR DrawRowOfRoomConnections
@@ -301,6 +316,7 @@ DrawRowOfRoomConnections:
LDA.l DungeonMapFloorCountData, X
AND.w #$000F
CLC : ADC.w DungeonMapCurrentFloor
AND.w #$00FF
ASL A
TAX
LDA.l CustomMapDrawingData_floor_connection_data_offset, X