ThomasSpeedrunner icon

Act 3 Errors Macro References

ThomasSpeedrunner | PRO | 04/27/13 12:56:33 AM UTC | 0 ⭐ | 373 👁️ | Never ⏰ | []
text |

1.48 KB

|

None

|

0 👍

/

0 👎

; macro to declare a zone-ordered table
; entryLen is the length of each table entry, and zoneEntries is the number of entries per zone
zoneOrderedTable macro entryLen,zoneEntries,{INTLABEL}
__LABEL__ label *
; set some global variables
zone_table_name := "__LABEL__"
zone_table_addr := *
zone_entry_len := entryLen
zone_entries := zoneEntries
zone_entries_left := 0
cur_zone_id := 0
cur_zone_str := "0"
    endm
 zoneOrderedOffsetTable macro entryLen,zoneEntries,{INTLABEL}
current_offset_table := __LABEL__
__LABEL__ zoneOrderedTable entryLen,zoneEntries
    endm
 ; macro to declare one or more entries in a zone-ordered table
zoneTableEntry macro value
	if "value"<>""
	    if zone_entries_left
		dc.ATTRIBUTE value
zone_entries_left := zone_entries_left-1
	    else
		!org zone_table_addr+zone_id_{cur_zone_str}*zone_entry_len*zone_entries
		dc.ATTRIBUTE value
zone_entries_left := zone_entries-1
cur_zone_id := cur_zone_id+1
cur_zone_str := "\{cur_zone_id}"
	    endif
	    shift
	    zoneTableEntry.ATTRIBUTE ALLARGS
	endif
    endm
 ; macro to declare one or more BINCLUDE entries in a zone-ordered table
zoneTableBinEntry macro numEntries,path
	if zone_entries_left
	    BINCLUDE path
zone_entries_left := zone_entries_left-numEntries
	else
	    !org zone_table_addr+zone_id_{cur_zone_str}*zone_entry_len*zone_entries
	    BINCLUDE path
zone_entries_left := zone_entries-numEntries
cur_zone_id := cur_zone_id+1
cur_zone_str := "\{cur_zone_id}"
	endif
    endm

Comments