summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2015-04-13 21:30:51 -0700
committeryenatch <yenatch@gmail.com>2015-04-13 21:41:32 -0700
commite7a3ba05929c27b3cc5b1f5c2725ab8dba9efb43 (patch)
tree678a49cd546a3e24fb63e8547b5b0ce2ef63948d
parent50734c961c436c4e4a996f120befcab5ee74d15e (diff)
Add a macro for enumeration.
"enum" is like "const" but uses variables instead. This might not be desired. It has been moved to the top of macros.asm so that included macros can be enumerated.
-rw-r--r--macros.asm13
-rw-r--r--macros/enum.asm31
2 files changed, 33 insertions, 11 deletions
diff --git a/macros.asm b/macros.asm
index 79f6df03f..739df1bd4 100644
--- a/macros.asm
+++ b/macros.asm
@@ -1,3 +1,5 @@
+INCLUDE "macros/enum.asm"
+
INCLUDE "macros/event.asm"
INCLUDE "macros/sound.asm"
INCLUDE "macros/text.asm"
@@ -113,17 +115,6 @@ endanim: MACRO
ENDM
-; Constant enumeration
-
-const_def: MACRO
-const_value SET 0
-ENDM
-
-const: MACRO
-\1 EQU const_value
-const_value SET const_value + 1
-ENDM
-
sine_wave: MACRO
; \1: amplitude
diff --git a/macros/enum.asm b/macros/enum.asm
new file mode 100644
index 000000000..0a72d49d8
--- /dev/null
+++ b/macros/enum.asm
@@ -0,0 +1,31 @@
+; Enumerate variables
+
+enum_start: macro
+if _NARG >= 1
+__enum__ = \1
+else
+__enum__ = 0
+endc
+if _NARG >= 2
+__enumdir__ = \2
+else
+__enumdir__ = +1
+endc
+endm
+
+enum: macro
+\1 = __enum__
+__enum__ = __enum__ + __enumdir__
+endm
+
+
+; Enumerate constants
+
+const_def: MACRO
+const_value = 0
+ENDM
+
+const: MACRO
+\1 EQU const_value
+const_value = const_value + 1
+ENDM