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 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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