diff options
| -rw-r--r-- | constants.asm | 1 | ||||
| -rwxr-xr-x | constants/event_macros.asm | 425 | ||||
| -rw-r--r-- | macros.asm | 426 | 
3 files changed, 426 insertions, 426 deletions
| diff --git a/constants.asm b/constants.asm index e121b6b3..3b2d8437 100644 --- a/constants.asm +++ b/constants.asm @@ -31,3 +31,4 @@ INCLUDE "constants/music_constants.asm"  INCLUDE "constants/tilesets.asm"  INCLUDE "constants/starter_mons.asm"  INCLUDE "constants/event_constants.asm" +INCLUDE "constants/event_macros.asm" diff --git a/constants/event_macros.asm b/constants/event_macros.asm new file mode 100755 index 00000000..8daaea28 --- /dev/null +++ b/constants/event_macros.asm @@ -0,0 +1,425 @@ +;\1 = event index
 +;\2 = return result in carry instead of zero flag
 +CheckEvent: MACRO
 +event_byte = ((\1) / 8)
 +	ld a, [wEventFlags + event_byte]
 +
 +	IF _NARG > 1
 +		IF ((\1) % 8) == 7
 +			add a
 +		ELSE
 +			REPT ((\1) % 8) + 1
 +				rrca
 +			ENDR
 +		ENDC
 +	ELSE
 +		bit (\1) % 8, a
 +	ENDC
 +	ENDM
 +
 +;\1 = event index
 +CheckEventReuseA: MACRO
 +IF event_byte != ((\1) / 8)
 +event_byte = ((\1) / 8)
 +		ld a, [wEventFlags + event_byte]
 +	ENDC
 +
 +	bit (\1) % 8, a
 +	ENDM
 +
 +;\1 = reg
 +;\2 = event index
 +;\3 = event index this event is relative to (optional, this is needed when there is a fixed flag address)
 +EventFlagBit: MACRO
 +	IF _NARG > 2
 +		ld \1, ((\3) % 8) + ((\2) - (\3))
 +	ELSE
 +		ld \1, (\2) % 8
 +	ENDC
 +	ENDM
 +
 +;\1 = reg
 +;\2 = event index
 +EventFlagAddress: MACRO
 +event_byte = ((\2) / 8)
 +	ld \1, wEventFlags + event_byte
 +	ENDM
 +
 +;\1 = event index
 +CheckEventHL: MACRO
 +event_byte = ((\1) / 8)
 +	ld hl, wEventFlags + event_byte
 +	bit (\1) % 8, [hl]
 +	ENDM
 +
 +;\1 = event index
 +CheckEventReuseHL: MACRO
 +IF event_byte != ((\1) / 8)
 +event_byte = ((\1) / 8)
 +		ld hl, wEventFlags + event_byte
 +	ENDC
 +
 +	bit (\1) % 8, [hl]
 +	ENDM
 +
 +; dangerous, only use when HL is guaranteed to be the desired value
 +;\1 = event index
 +CheckEventForceReuseHL: MACRO
 +event_byte = ((\1) / 8)
 +	bit (\1) % 8, [hl]
 +	ENDM
 +
 +;\1 = event index
 +;\2 = event index of the last event used before the branch
 +CheckEventAfterBranchReuseHL: MACRO
 +event_byte = ((\2) / 8)
 +IF event_byte != ((\1) / 8)
 +event_byte = ((\1) / 8)
 +		ld hl, wEventFlags + event_byte
 +	ENDC
 +
 +	bit (\1) % 8, [hl]
 +	ENDM
 +
 +;\1 = event index
 +CheckAndSetEvent: MACRO
 +event_byte = ((\1) / 8)
 +	ld hl, wEventFlags + event_byte
 +	bit (\1) % 8, [hl]
 +	set (\1) % 8, [hl]
 +	ENDM
 +
 +;\1 = event index
 +CheckAndResetEvent: MACRO
 +event_byte = ((\1) / 8)
 +	ld hl, wEventFlags + event_byte
 +	bit (\1) % 8, [hl]
 +	res (\1) % 8, [hl]
 +	ENDM
 +
 +;\1 = event index
 +CheckAndSetEventA: MACRO
 +	ld a, [wEventFlags + ((\1) / 8)]
 +	bit (\1) % 8, a
 +	set (\1) % 8, a
 +	ld [wEventFlags + ((\1) / 8)], a
 +	ENDM
 +
 +;\1 = event index
 +CheckAndResetEventA: MACRO
 +	ld a, [wEventFlags + ((\1) / 8)]
 +	bit (\1) % 8, a
 +	res (\1) % 8, a
 +	ld [wEventFlags + ((\1) / 8)], a
 +	ENDM
 +
 +;\1 = event index
 +SetEvent: MACRO
 +event_byte = ((\1) / 8)
 +	ld hl, wEventFlags + event_byte
 +	set (\1) % 8, [hl]
 +	ENDM
 +
 +;\1 = event index
 +SetEventReuseHL: MACRO
 +	IF event_byte != ((\1) / 8)
 +event_byte = ((\1) / 8)
 +		ld hl, wEventFlags + event_byte
 +	ENDC
 +
 +	set (\1) % 8, [hl]
 +	ENDM
 +
 +;\1 = event index
 +;\2 = event index of the last event used before the branch
 +SetEventAfterBranchReuseHL: MACRO
 +event_byte = ((\2) / 8)
 +IF event_byte != ((\1) / 8)
 +event_byte = ((\1) / 8)
 +		ld hl, wEventFlags + event_byte
 +	ENDC
 +
 +	set (\1) % 8, [hl]
 +	ENDM
 +
 +; dangerous, only use when HL is guaranteed to be the desired value
 +;\1 = event index
 +SetEventForceReuseHL: MACRO
 +event_byte = ((\1) / 8)
 +	set (\1) % 8, [hl]
 +	ENDM
 +
 +;\1 = event index
 +;\2 = event index
 +;\3 = event index (optional)
 +SetEvents: MACRO
 +	SetEvent \1
 +	SetEventReuseHL \2
 +
 +	IF _NARG > 2
 +		SetEventReuseHL \3
 +	ENDC
 +	ENDM
 +
 +;\1 = event index
 +ResetEvent: MACRO
 +event_byte = ((\1) / 8)
 +	ld hl, wEventFlags + event_byte
 +	res (\1) % 8, [hl]
 +	ENDM
 +
 +;\1 = event index
 +ResetEventReuseHL: MACRO
 +	IF event_byte != ((\1) / 8)
 +event_byte = ((\1) / 8)
 +		ld hl, wEventFlags + event_byte
 +	ENDC
 +
 +	res (\1) % 8, [hl]
 +	ENDM
 +
 +;\1 = event index
 +;\2 = event index of the last event used before the branch
 +ResetEventAfterBranchReuseHL: MACRO
 +event_byte = ((\2) / 8)
 +IF event_byte != ((\1) / 8)
 +event_byte = ((\1) / 8)
 +		ld hl, wEventFlags + event_byte
 +	ENDC
 +
 +	res (\1) % 8, [hl]
 +	ENDM
 +
 +; dangerous, only use when HL is guaranteed to be the desired value
 +;\1 = event index
 +ResetEventForceReuseHL: MACRO
 +event_byte = ((\1) / 8)
 +	res (\1) % 8, [hl]
 +	ENDM
 +
 +;\1 = event index
 +;\2 = event index
 +;\3 = event index (optional)
 +ResetEvents: MACRO
 +	ResetEvent \1
 +	ResetEventReuseHL \2
 +
 +	IF _NARG > 2
 +		ResetEventReuseHL \3
 +	ENDC
 +	ENDM
 +
 +;\1 = event index
 +;\2 = number of bytes away from the base address (optional, for matching the ROM)
 +dbEventFlagBit: MACRO
 +	IF _NARG > 1
 +		db ((\1) % 8) + ((\2) * 8)
 +	ELSE
 +		db ((\1) % 8)
 +	ENDC
 +	ENDM
 +
 +;\1 = event index
 +;\2 = number of bytes away from the base address (optional, for matching the ROM)
 +dwEventFlagAddress: MACRO
 +	IF _NARG > 1
 +		dw wEventFlags + ((\1) / 8) - (\2)
 +	ELSE
 +		dw wEventFlags + ((\1) / 8)
 +	ENDC
 +	ENDM
 +
 +;\1 = start
 +;\2 = end
 +SetEventRange: MACRO
 +event_start_byte = ((\1) / 8)
 +event_end_byte = ((\2) / 8)
 +
 +	IF event_end_byte < event_start_byte
 +		FAIL "Incorrect argument order in SetEventRange."
 +	ENDC
 +
 +	IF event_start_byte == event_end_byte
 +		ld a, [wEventFlags + event_start_byte]
 +		or (1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8))
 +		ld [wEventFlags + event_start_byte], a
 +	ELSE
 +event_fill_start = event_start_byte + 1
 +event_fill_count = event_end_byte - event_start_byte - 1
 +
 +		IF ((\1) % 8) == 0
 +event_fill_start = event_fill_start + -1
 +event_fill_count = event_fill_count + 1
 +		ELSE
 +			ld a, [wEventFlags + event_start_byte]
 +			or $ff - ((1 << ((\1) % 8)) - 1)
 +			ld [wEventFlags + event_start_byte], a
 +		ENDC
 +
 +		IF ((\2) % 8) == 7
 +event_fill_count = event_fill_count + 1
 +		ENDC
 +
 +		IF event_fill_count == 1
 +			ld hl, wEventFlags + event_fill_start
 +			ld [hl], $ff
 +		ENDC
 +
 +		IF event_fill_count > 1
 +			ld a, $ff
 +			ld hl, wEventFlags + event_fill_start
 +
 +			REPT event_fill_count + -1
 +				ld [hli], a
 +			ENDR
 +
 +			ld [hl], a
 +		ENDC
 +
 +		IF ((\2) % 8) == 0
 +			ld hl, wEventFlags + event_end_byte
 +			set 0, [hl]
 +		ELSE
 +			IF ((\2) % 8) != 7
 +				ld a, [wEventFlags + event_end_byte]
 +				or (1 << (((\2) % 8) + 1)) - 1
 +				ld [wEventFlags + event_end_byte], a
 +			ENDC
 +		ENDC
 +	ENDC
 +	ENDM
 +
 +;\1 = start
 +;\2 = end
 +;\3 = assume a is 0 if present
 +ResetEventRange: MACRO
 +event_start_byte = ((\1) / 8)
 +event_end_byte = ((\2) / 8)
 +
 +	IF event_end_byte < event_start_byte
 +		FAIL "Incorrect argument order in ResetEventRange."
 +	ENDC
 +
 +	IF event_start_byte == event_end_byte
 +		ld a, [wEventFlags + event_start_byte]
 +		and ~((1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8))) & $ff
 +		ld [wEventFlags + event_start_byte], a
 +	ELSE
 +event_fill_start = event_start_byte + 1
 +event_fill_count = event_end_byte - event_start_byte - 1
 +
 +		IF ((\1) % 8) == 0
 +event_fill_start = event_fill_start + -1
 +event_fill_count = event_fill_count + 1
 +		ELSE
 +			ld a, [wEventFlags + event_start_byte]
 +			and ~($ff - ((1 << ((\1) % 8)) - 1)) & $ff
 +			ld [wEventFlags + event_start_byte], a
 +		ENDC
 +
 +		IF ((\2) % 8) == 7
 +event_fill_count = event_fill_count + 1
 +		ENDC
 +
 +		IF event_fill_count == 1
 +			ld hl, wEventFlags + event_fill_start
 +			ld [hl], 0
 +		ENDC
 +
 +		IF event_fill_count > 1
 +			ld hl, wEventFlags + event_fill_start
 +
 +			; force xor a if we just to wrote to it above
 +			IF (_NARG < 3) || (((\1) % 8) != 0)
 +				xor a
 +			ENDC
 +
 +			REPT event_fill_count + -1
 +				ld [hli], a
 +			ENDR
 +
 +			ld [hl], a
 +		ENDC
 +
 +		IF ((\2) % 8) == 0
 +			ld hl, wEventFlags + event_end_byte
 +			res 0, [hl]
 +		ELSE
 +			IF ((\2) % 8) != 7
 +				ld a, [wEventFlags + event_end_byte]
 +				and ~((1 << (((\2) % 8) + 1)) - 1) & $ff
 +				ld [wEventFlags + event_end_byte], a
 +			ENDC
 +		ENDC
 +	ENDC
 +	ENDM
 +
 +; returns whether both events are set in Z flag
 +;\1 = event index 1
 +;\2 = event index 2
 +CheckBothEventsSet: MACRO
 +	IF ((\1) / 8) == ((\2) / 8)
 +		ld a, [wEventFlags + ((\1) / 8)]
 +		and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
 +		cp (1 << ((\1) % 8)) | (1 << ((\2) % 8))
 +	ELSE
 +		; This case doesn't happen in the original ROM.
 +		IF ((\1) % 8) == ((\2) % 8)
 +			push hl
 +			ld a, [wEventFlags + ((\1) / 8)]
 +			ld hl, wEventFlags + ((\2) / 8)
 +			and [hl]
 +			cpl
 +			bit ((\1) % 8), a
 +			pop hl
 +		ELSE
 +			push bc
 +			ld a, [wEventFlags + ((\1) / 8)]
 +			and (1 << ((\1) % 8))
 +			ld b, a
 +			ld a, [wEventFlags + ((\2) / 8)]
 +			and (1 << ((\2) % 8))
 +			or b
 +			cp (1 << ((\1) % 8)) | (1 << ((\2) % 8))
 +			pop bc
 +		ENDC
 +	ENDC
 +	ENDM
 +
 +; returns the complement of whether either event is set in Z flag
 +;\1 = event index 1
 +;\2 = event index 2
 +CheckEitherEventSet: MACRO
 +	IF ((\1) / 8) == ((\2) / 8)
 +		ld a, [wEventFlags + ((\1) / 8)]
 +		and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
 +	ELSE
 +		; This case doesn't happen in the original ROM.
 +		IF ((\1) % 8) == ((\2) % 8)
 +			push hl
 +			ld a, [wEventFlags + ((\1) / 8)]
 +			ld hl, wEventFlags + ((\2) / 8)
 +			or [hl]
 +			bit ((\1) % 8), a
 +			pop hl
 +		ELSE
 +			push bc
 +			ld a, [wEventFlags + ((\1) / 8)]
 +			and (1 << ((\1) % 8))
 +			ld b, a
 +			ld a, [wEventFlags + ((\2) / 8)]
 +			and (1 << ((\2) % 8))
 +			or b
 +			pop bc
 +		ENDC
 +	ENDC
 +	ENDM
 +
 +; for handling fixed event bits when events are inserted/removed
 +;\1 = event index
 +;\2 = fixed flag bit
 +AdjustEventBit: MACRO
 +	IF ((\1) % 8) != (\2)
 +		add ((\1) % 8) - (\2)
 +	ENDC
 +	ENDM
\ No newline at end of file @@ -79,432 +79,6 @@ bcd3: MACRO  coins equs "bcd2"  money equs "bcd3" -;\1 = event index -;\2 = return result in carry instead of zero flag -CheckEvent: MACRO -event_byte = ((\1) / 8) -	ld a, [wEventFlags + event_byte] - -	IF _NARG > 1 -		IF ((\1) % 8) == 7 -			add a -		ELSE -			REPT ((\1) % 8) + 1 -				rrca -			ENDR -		ENDC -	ELSE -		bit (\1) % 8, a -	ENDC -	ENDM - -;\1 = event index -CheckEventReuseA: MACRO -IF event_byte != ((\1) / 8) -event_byte = ((\1) / 8) -		ld a, [wEventFlags + event_byte] -	ENDC - -	bit (\1) % 8, a -	ENDM - -;\1 = reg -;\2 = event index -;\3 = event index this event is relative to (optional, this is needed when there is a fixed flag address) -EventFlagBit: MACRO -	IF _NARG > 2 -		ld \1, ((\3) % 8) + ((\2) - (\3)) -	ELSE -		ld \1, (\2) % 8 -	ENDC -	ENDM - -;\1 = reg -;\2 = event index -EventFlagAddress: MACRO -event_byte = ((\2) / 8) -	ld \1, wEventFlags + event_byte -	ENDM - -;\1 = event index -CheckEventHL: MACRO -event_byte = ((\1) / 8) -	ld hl, wEventFlags + event_byte -	bit (\1) % 8, [hl] -	ENDM - -;\1 = event index -CheckEventReuseHL: MACRO -IF event_byte != ((\1) / 8) -event_byte = ((\1) / 8) -		ld hl, wEventFlags + event_byte -	ENDC - -	bit (\1) % 8, [hl] -	ENDM - -; dangerous, only use when HL is guaranteed to be the desired value -;\1 = event index -CheckEventForceReuseHL: MACRO -event_byte = ((\1) / 8) -	bit (\1) % 8, [hl] -	ENDM - -;\1 = event index -;\2 = event index of the last event used before the branch -CheckEventAfterBranchReuseHL: MACRO -event_byte = ((\2) / 8) -IF event_byte != ((\1) / 8) -event_byte = ((\1) / 8) -		ld hl, wEventFlags + event_byte -	ENDC - -	bit (\1) % 8, [hl] -	ENDM - -;\1 = event index -CheckAndSetEvent: MACRO -event_byte = ((\1) / 8) -	ld hl, wEventFlags + event_byte -	bit (\1) % 8, [hl] -	set (\1) % 8, [hl] -	ENDM - -;\1 = event index -CheckAndResetEvent: MACRO -event_byte = ((\1) / 8) -	ld hl, wEventFlags + event_byte -	bit (\1) % 8, [hl] -	res (\1) % 8, [hl] -	ENDM - -;\1 = event index -CheckAndSetEventA: MACRO -	ld a, [wEventFlags + ((\1) / 8)] -	bit (\1) % 8, a -	set (\1) % 8, a -	ld [wEventFlags + ((\1) / 8)], a -	ENDM - -;\1 = event index -CheckAndResetEventA: MACRO -	ld a, [wEventFlags + ((\1) / 8)] -	bit (\1) % 8, a -	res (\1) % 8, a -	ld [wEventFlags + ((\1) / 8)], a -	ENDM - -;\1 = event index -SetEvent: MACRO -event_byte = ((\1) / 8) -	ld hl, wEventFlags + event_byte -	set (\1) % 8, [hl] -	ENDM - -;\1 = event index -SetEventReuseHL: MACRO -	IF event_byte != ((\1) / 8) -event_byte = ((\1) / 8) -		ld hl, wEventFlags + event_byte -	ENDC - -	set (\1) % 8, [hl] -	ENDM - -;\1 = event index -;\2 = event index of the last event used before the branch -SetEventAfterBranchReuseHL: MACRO -event_byte = ((\2) / 8) -IF event_byte != ((\1) / 8) -event_byte = ((\1) / 8) -		ld hl, wEventFlags + event_byte -	ENDC - -	set (\1) % 8, [hl] -	ENDM - -; dangerous, only use when HL is guaranteed to be the desired value -;\1 = event index -SetEventForceReuseHL: MACRO -event_byte = ((\1) / 8) -	set (\1) % 8, [hl] -	ENDM - -;\1 = event index -;\2 = event index -;\3 = event index (optional) -SetEvents: MACRO -	SetEvent \1 -	SetEventReuseHL \2 - -	IF _NARG > 2 -		SetEventReuseHL \3 -	ENDC -	ENDM - -;\1 = event index -ResetEvent: MACRO -event_byte = ((\1) / 8) -	ld hl, wEventFlags + event_byte -	res (\1) % 8, [hl] -	ENDM - -;\1 = event index -ResetEventReuseHL: MACRO -	IF event_byte != ((\1) / 8) -event_byte = ((\1) / 8) -		ld hl, wEventFlags + event_byte -	ENDC - -	res (\1) % 8, [hl] -	ENDM - -;\1 = event index -;\2 = event index of the last event used before the branch -ResetEventAfterBranchReuseHL: MACRO -event_byte = ((\2) / 8) -IF event_byte != ((\1) / 8) -event_byte = ((\1) / 8) -		ld hl, wEventFlags + event_byte -	ENDC - -	res (\1) % 8, [hl] -	ENDM - -; dangerous, only use when HL is guaranteed to be the desired value -;\1 = event index -ResetEventForceReuseHL: MACRO -event_byte = ((\1) / 8) -	res (\1) % 8, [hl] -	ENDM - -;\1 = event index -;\2 = event index -;\3 = event index (optional) -ResetEvents: MACRO -	ResetEvent \1 -	ResetEventReuseHL \2 - -	IF _NARG > 2 -		ResetEventReuseHL \3 -	ENDC -	ENDM - -;\1 = event index -;\2 = number of bytes away from the base address (optional, for matching the ROM) -dbEventFlagBit: MACRO -	IF _NARG > 1 -		db ((\1) % 8) + ((\2) * 8) -	ELSE -		db ((\1) % 8) -	ENDC -	ENDM - -;\1 = event index -;\2 = number of bytes away from the base address (optional, for matching the ROM) -dwEventFlagAddress: MACRO -	IF _NARG > 1 -		dw wEventFlags + ((\1) / 8) - (\2) -	ELSE -		dw wEventFlags + ((\1) / 8) -	ENDC -	ENDM - -;\1 = start -;\2 = end -SetEventRange: MACRO -event_start_byte = ((\1) / 8) -event_end_byte = ((\2) / 8) - -	IF event_end_byte < event_start_byte -		FAIL "Incorrect argument order in SetEventRange." -	ENDC - -	IF event_start_byte == event_end_byte -		ld a, [wEventFlags + event_start_byte] -		or (1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8)) -		ld [wEventFlags + event_start_byte], a -	ELSE -event_fill_start = event_start_byte + 1 -event_fill_count = event_end_byte - event_start_byte - 1 - -		IF ((\1) % 8) == 0 -event_fill_start = -1 + event_fill_start -event_fill_count = 1 + event_fill_count -		ELSE -			ld a, [wEventFlags + event_start_byte] -			or $ff - ((1 << ((\1) % 8)) - 1) -			ld [wEventFlags + event_start_byte], a -		ENDC - -		IF ((\2) % 8) == 7 -event_fill_count = 1 + event_fill_count -		ENDC - -		IF event_fill_count == 1 -			ld hl, wEventFlags + event_fill_start -			ld [hl], $ff -		ENDC - -		IF event_fill_count > 1 -			ld a, $ff -			ld hl, wEventFlags + event_fill_start - -			REPT -1 + event_fill_count -				ld [hli], a -			ENDR - -			ld [hl], a -		ENDC - -		IF ((\2) % 8) == 0 -			ld hl, wEventFlags + event_end_byte -			set 0, [hl] -		ELSE -			IF ((\2) % 8) != 7 -				ld a, [wEventFlags + event_end_byte] -				or (1 << (((\2) % 8) + 1)) - 1 -				ld [wEventFlags + event_end_byte], a -			ENDC -		ENDC -	ENDC -	ENDM - -;\1 = start -;\2 = end -;\3 = assume a is 0 if present -ResetEventRange: MACRO -event_start_byte = ((\1) / 8) -event_end_byte = ((\2) / 8) - -	IF event_end_byte < event_start_byte -		FAIL "Incorrect argument order in ResetEventRange." -	ENDC - -	IF event_start_byte == event_end_byte -		ld a, [wEventFlags + event_start_byte] -		and ~((1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8))) & $ff -		ld [wEventFlags + event_start_byte], a -	ELSE -event_fill_start = event_start_byte + 1 -event_fill_count = event_end_byte - event_start_byte - 1 - -		IF ((\1) % 8) == 0 -event_fill_start = -1 + event_fill_start -event_fill_count = 1 + event_fill_count -		ELSE -			ld a, [wEventFlags + event_start_byte] -			and ~($ff - ((1 << ((\1) % 8)) - 1)) & $ff -			ld [wEventFlags + event_start_byte], a -		ENDC - -		IF ((\2) % 8) == 7 -event_fill_count = 1 + event_fill_count -		ENDC - -		IF event_fill_count == 1 -			ld hl, wEventFlags + event_fill_start -			ld [hl], 0 -		ENDC - -		IF event_fill_count > 1 -			ld hl, wEventFlags + event_fill_start - -			; force xor a if we just to wrote to it above -			IF (_NARG < 3) || (((\1) % 8) != 0) -				xor a -			ENDC - -			REPT -1 + event_fill_count -				ld [hli], a -			ENDR - -			ld [hl], a -		ENDC - -		IF ((\2) % 8) == 0 -			ld hl, wEventFlags + event_end_byte -			res 0, [hl] -		ELSE -			IF ((\2) % 8) != 7 -				ld a, [wEventFlags + event_end_byte] -				and ~((1 << (((\2) % 8) + 1)) - 1) & $ff -				ld [wEventFlags + event_end_byte], a -			ENDC -		ENDC -	ENDC -	ENDM - -; returns whether both events are set in Z flag -;\1 = event index 1 -;\2 = event index 2 -CheckBothEventsSet: MACRO -	IF ((\1) / 8) == ((\2) / 8) -		ld a, [wEventFlags + ((\1) / 8)] -		and (1 << ((\1) % 8)) | (1 << ((\2) % 8)) -		cp (1 << ((\1) % 8)) | (1 << ((\2) % 8)) -	ELSE -		; This case doesn't happen in the original ROM. -		IF ((\1) % 8) == ((\2) % 8) -			push hl -			ld a, [wEventFlags + ((\1) / 8)] -			ld hl, wEventFlags + ((\2) / 8) -			and [hl] -			cpl -			bit ((\1) % 8), a -			pop hl -		ELSE -			push bc -			ld a, [wEventFlags + ((\1) / 8)] -			and (1 << ((\1) % 8)) -			ld b, a -			ld a, [wEventFlags + ((\2) / 8)] -			and (1 << ((\2) % 8)) -			or b -			cp (1 << ((\1) % 8)) | (1 << ((\2) % 8)) -			pop bc -		ENDC -	ENDC -	ENDM - -; returns the complement of whether either event is set in Z flag -;\1 = event index 1 -;\2 = event index 2 -CheckEitherEventSet: MACRO -	IF ((\1) / 8) == ((\2) / 8) -		ld a, [wEventFlags + ((\1) / 8)] -		and (1 << ((\1) % 8)) | (1 << ((\2) % 8)) -	ELSE -		; This case doesn't happen in the original ROM. -		IF ((\1) % 8) == ((\2) % 8) -			push hl -			ld a, [wEventFlags + ((\1) / 8)] -			ld hl, wEventFlags + ((\2) / 8) -			or [hl] -			bit ((\1) % 8), a -			pop hl -		ELSE -			push bc -			ld a, [wEventFlags + ((\1) / 8)] -			and (1 << ((\1) % 8)) -			ld b, a -			ld a, [wEventFlags + ((\2) / 8)] -			and (1 << ((\2) % 8)) -			or b -			pop bc -		ENDC -	ENDC -	ENDM - -; for handling fixed event bits when events are inserted/removed -;\1 = event index -;\2 = fixed flag bit -AdjustEventBit: MACRO -	IF ((\1) % 8) != (\2) -		add ((\1) % 8) - (\2) -	ENDC -	ENDM -  ;\1 = r  ;\2 = X  ;\3 = Y | 
