RGBDS syntax updates (#358)

New MACRO and DEF syntax
This commit is contained in:
vulcandth 2022-06-06 16:25:31 -05:00 committed by GitHub
parent d7808d110f
commit 6b5be9129c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
101 changed files with 958 additions and 958 deletions

View file

@ -1,7 +1,7 @@
;\1 = event index
;\2 = return result in carry instead of zero flag
CheckEvent: MACRO
event_byte = ((\1) / 8)
MACRO CheckEvent
DEF event_byte = ((\1) / 8)
ld a, [wEventFlags + event_byte]
IF _NARG > 1
@ -19,9 +19,9 @@ ENDM
;\1 = event index
CheckEventReuseA: MACRO
MACRO CheckEventReuseA
IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8)
DEF event_byte = ((\1) / 8)
ld a, [wEventFlags + event_byte]
ENDC
@ -31,10 +31,10 @@ ENDM
;\1 = event index
;\2 = event index of the last event used before the branch
CheckEventAfterBranchReuseA: MACRO
event_byte = ((\2) / 8)
MACRO CheckEventAfterBranchReuseA
DEF event_byte = ((\2) / 8)
IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8)
DEF event_byte = ((\1) / 8)
ld a, [wEventFlags + event_byte]
ENDC
@ -45,7 +45,7 @@ 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
MACRO EventFlagBit
IF _NARG > 2
ld \1, ((\3) % 8) + ((\2) - (\3))
ELSE
@ -56,24 +56,24 @@ ENDM
;\1 = reg
;\2 = event index
EventFlagAddress: MACRO
event_byte = ((\2) / 8)
MACRO EventFlagAddress
DEF event_byte = ((\2) / 8)
ld \1, wEventFlags + event_byte
ENDM
;\1 = event index
CheckEventHL: MACRO
event_byte = ((\1) / 8)
MACRO CheckEventHL
DEF 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)
MACRO CheckEventReuseHL
IF event_byte != ((\1) / 8)
DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte
ENDC
@ -83,18 +83,18 @@ ENDM
; dangerous, only use when HL is guaranteed to be the desired value
;\1 = event index
CheckEventForceReuseHL: MACRO
event_byte = ((\1) / 8)
MACRO CheckEventForceReuseHL
DEF 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)
MACRO CheckEventAfterBranchReuseHL
DEF event_byte = ((\2) / 8)
IF event_byte != ((\1) / 8)
DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte
ENDC
@ -103,8 +103,8 @@ ENDM
;\1 = event index
CheckAndSetEvent: MACRO
event_byte = ((\1) / 8)
MACRO CheckAndSetEvent
DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte
bit (\1) % 8, [hl]
set (\1) % 8, [hl]
@ -112,8 +112,8 @@ ENDM
;\1 = event index
CheckAndResetEvent: MACRO
event_byte = ((\1) / 8)
MACRO CheckAndResetEvent
DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte
bit (\1) % 8, [hl]
res (\1) % 8, [hl]
@ -121,7 +121,7 @@ ENDM
;\1 = event index
CheckAndSetEventA: MACRO
MACRO CheckAndSetEventA
ld a, [wEventFlags + ((\1) / 8)]
bit (\1) % 8, a
set (\1) % 8, a
@ -130,7 +130,7 @@ ENDM
;\1 = event index
CheckAndResetEventA: MACRO
MACRO CheckAndResetEventA
ld a, [wEventFlags + ((\1) / 8)]
bit (\1) % 8, a
res (\1) % 8, a
@ -139,17 +139,17 @@ ENDM
;\1 = event index
SetEvent: MACRO
event_byte = ((\1) / 8)
MACRO SetEvent
DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte
set (\1) % 8, [hl]
ENDM
;\1 = event index
SetEventReuseHL: MACRO
MACRO SetEventReuseHL
IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8)
DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte
ENDC
@ -159,10 +159,10 @@ 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)
MACRO SetEventAfterBranchReuseHL
DEF event_byte = ((\2) / 8)
IF event_byte != ((\1) / 8)
DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte
ENDC
@ -172,8 +172,8 @@ ENDM
; dangerous, only use when HL is guaranteed to be the desired value
;\1 = event index
SetEventForceReuseHL: MACRO
event_byte = ((\1) / 8)
MACRO SetEventForceReuseHL
DEF event_byte = ((\1) / 8)
set (\1) % 8, [hl]
ENDM
@ -181,7 +181,7 @@ ENDM
;\1 = event index
;\2 = event index
;\3, \4, ... = additional (optional) event indices
SetEvents: MACRO
MACRO SetEvents
SetEvent \1
REPT _NARG - 1
SetEventReuseHL \2
@ -191,17 +191,17 @@ ENDM
;\1 = event index
ResetEvent: MACRO
event_byte = ((\1) / 8)
MACRO ResetEvent
DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte
res (\1) % 8, [hl]
ENDM
;\1 = event index
ResetEventReuseHL: MACRO
MACRO ResetEventReuseHL
IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8)
DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte
ENDC
@ -211,10 +211,10 @@ 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)
MACRO ResetEventAfterBranchReuseHL
DEF event_byte = ((\2) / 8)
IF event_byte != ((\1) / 8)
DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte
ENDC
@ -224,8 +224,8 @@ ENDM
; dangerous, only use when HL is guaranteed to be the desired value
;\1 = event index
ResetEventForceReuseHL: MACRO
event_byte = ((\1) / 8)
MACRO ResetEventForceReuseHL
DEF event_byte = ((\1) / 8)
res (\1) % 8, [hl]
ENDM
@ -233,7 +233,7 @@ ENDM
;\1 = event index
;\2 = event index
;\3 = event index (optional)
ResetEvents: MACRO
MACRO ResetEvents
ResetEvent \1
REPT _NARG - 1
ResetEventReuseHL \2
@ -244,9 +244,9 @@ ENDM
;\1 = start
;\2 = end
SetEventRange: MACRO
event_start_byte = ((\1) / 8)
event_end_byte = ((\2) / 8)
MACRO SetEventRange
DEF event_start_byte = ((\1) / 8)
DEF event_end_byte = ((\2) / 8)
IF event_end_byte < event_start_byte
FAIL "Incorrect argument order in SetEventRange."
@ -257,12 +257,12 @@ event_end_byte = ((\2) / 8)
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
DEF event_fill_start = event_start_byte + 1
DEF event_fill_count = event_end_byte - event_start_byte - 1
IF ((\1) % 8) == 0
event_fill_start -= 1
event_fill_count += 1
DEF event_fill_start -= 1
DEF event_fill_count += 1
ELSE
ld a, [wEventFlags + event_start_byte]
or $ff - ((1 << ((\1) % 8)) - 1)
@ -270,7 +270,7 @@ event_fill_count += 1
ENDC
IF ((\2) % 8) == 7
event_fill_count += 1
DEF event_fill_count += 1
ENDC
IF event_fill_count == 1
@ -306,9 +306,9 @@ ENDM
;\1 = start
;\2 = end
;\3 = assume a is 0 if present
ResetEventRange: MACRO
event_start_byte = ((\1) / 8)
event_end_byte = ((\2) / 8)
MACRO ResetEventRange
DEF event_start_byte = ((\1) / 8)
DEF event_end_byte = ((\2) / 8)
IF event_end_byte < event_start_byte
FAIL "Incorrect argument order in ResetEventRange."
@ -319,12 +319,12 @@ event_end_byte = ((\2) / 8)
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
DEF event_fill_start = event_start_byte + 1
DEF event_fill_count = event_end_byte - event_start_byte - 1
IF ((\1) % 8) == 0
event_fill_start -= 1
event_fill_count += 1
DEF event_fill_start -= 1
DEF event_fill_count += 1
ELSE
ld a, [wEventFlags + event_start_byte]
and ~($ff - ((1 << ((\1) % 8)) - 1)) & $ff
@ -332,7 +332,7 @@ event_fill_count += 1
ENDC
IF ((\2) % 8) == 7
event_fill_count += 1
DEF event_fill_count += 1
ENDC
IF event_fill_count == 1
@ -375,10 +375,10 @@ ENDM
;\1 = event index 1
;\2 = event index 2
;\3 = try to reuse a (optional)
CheckBothEventsSet: MACRO
MACRO CheckBothEventsSet
IF ((\1) / 8) == ((\2) / 8)
IF (_NARG < 3) || (((\1) / 8) != event_byte)
event_byte = ((\1) / 8)
DEF event_byte = ((\1) / 8)
ld a, [wEventFlags + ((\1) / 8)]
ENDC
and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
@ -411,7 +411,7 @@ ENDM
; returns the complement of whether either event is set in Z flag
;\1 = event index 1
;\2 = event index 2
CheckEitherEventSet: MACRO
MACRO CheckEitherEventSet
IF ((\1) / 8) == ((\2) / 8)
ld a, [wEventFlags + ((\1) / 8)]
and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
@ -441,7 +441,7 @@ ENDM
; for handling fixed event bits when events are inserted/removed
;\1 = event index
;\2 = fixed flag bit
AdjustEventBit: MACRO
MACRO AdjustEventBit
IF ((\1) % 8) != (\2)
add ((\1) % 8) - (\2)
ENDC