ref: 676a35f76f93dfe18678a832fa63d8b684c34c45
parent: 54d76dec388a70260aad6ef6acb94a5b9f95fd6d
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Thu Jul 9 08:43:26 EDT 2020
Eliminate enum: use const instead, with case-by-case parallel const implementations
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -115,9 +115,9 @@
; The first usage also defines HM01 as the first HM item id.
IF !DEF(HM01)
HM01 EQU const_value
- enum_start NUM_TMS + 1
+__tmhm_value__ = NUM_TMS + 1
ENDC
-HM_VALUE EQU __enum__ - NUM_TMS
+HM_VALUE EQU __tmhm_value__ - NUM_TMS
IF HM_VALUE < 10
MOVE_FOR_HM EQUS "HM0{d:HM_VALUE}_MOVE"
ELSE
@@ -127,7 +127,8 @@
PURGE MOVE_FOR_HM
PURGE HM_VALUE
const HM_\1
- enum \1_TMNUM
+\1_TMNUM EQU __tmhm_value__
+__tmhm_value__ = __tmhm_value__ + 1
ENDM
add_hm CUT ; $C4
@@ -145,17 +146,18 @@
; The first usage also defines TM01 as the first TM item id.
IF !DEF(TM01)
TM01 EQU const_value
- enum_start 1
+__tmhm_value__ = 1
ENDC
-IF __enum__ < 10
-MOVE_FOR_TM EQUS "TM0{d:__enum__}_MOVE"
+IF __tmhm_value__ < 10
+MOVE_FOR_TM EQUS "TM0{d:__tmhm_value__}_MOVE"
ELSE
-MOVE_FOR_TM EQUS "TM{d:__enum__}_MOVE"
+MOVE_FOR_TM EQUS "TM{d:__tmhm_value__}_MOVE"
ENDC
MOVE_FOR_TM = \1
PURGE MOVE_FOR_TM
const TM_\1
- enum \1_TMNUM
+\1_TMNUM EQU __tmhm_value__
+__tmhm_value__ = __tmhm_value__ + 1
ENDM
add_tm MEGA_PUNCH ; $C9
@@ -212,5 +214,5 @@
; 50 TMs + 5 HMs = 55 learnable TM/HM flags per Pokémon.
; These fit in 7 bytes, with one unused bit left over.
- enum_start NUM_TMS + NUM_HMS + 1
- enum UNUSED_TMNUM
+__tmhm_value__ = NUM_TMS + NUM_HMS + 1
+UNUSED_TMNUM EQU __tmhm_value__
--- a/macros.asm
+++ b/macros.asm
@@ -1,4 +1,4 @@
-INCLUDE "macros/enum.asm"
+INCLUDE "macros/const.asm"
INCLUDE "macros/predef.asm"
INCLUDE "macros/farcall.asm"
INCLUDE "macros/data.asm"
--- /dev/null
+++ b/macros/const.asm
@@ -1,0 +1,24 @@
+; Enumerate constants
+
+const_def: MACRO
+IF _NARG >= 1
+const_value = \1
+ELSE
+const_value = 0
+ENDC
+IF _NARG >= 2
+const_inc = \2
+ELSE
+const_inc = 1
+ENDC
+ENDM
+
+const: MACRO
+\1 EQU const_value
+const_value = const_value + const_inc
+ENDM
+
+shift_const: MACRO
+\1 EQU (1 << const_value)
+const_value = const_value + const_inc
+ENDM
--- a/macros/enum.asm
+++ /dev/null
@@ -1,43 +1,0 @@
-; 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 EQU __enum__
-__enum__ = __enum__ + __enumdir__
-ENDM
-
-enum_set: MACRO
-__enum__ = \1
-ENDM
-
-; Enumerate constants
-
-const_def: MACRO
-IF _NARG >= 1
-const_value = \1
-ELSE
-const_value = 0
-ENDC
-ENDM
-
-const: MACRO
-\1 EQU const_value
-const_value = const_value + 1
-ENDM
-
-shift_const: MACRO
-\1 EQU (1 << const_value)
-const_value = const_value + 1
-ENDM
--- a/macros/scripts/text.asm
+++ b/macros/scripts/text.asm
@@ -11,20 +11,20 @@
; TextCommandJumpTable indexes (see home/text.asm)
- enum_start
+ const_def
- enum TX_START ; $00
+ const TX_START ; $00
text_start: MACRO
db TX_START
ENDM
- enum TX_RAM ; $01
+ const TX_RAM ; $01
text_ram: MACRO
db TX_RAM
dw \1 ; address to read from
ENDM
- enum TX_BCD ; $02
+ const TX_BCD ; $02
text_bcd: MACRO
db TX_BCD
dw \1 ; address to read from
@@ -31,13 +31,13 @@
db \2 ; number of bytes + print flags
ENDM
- enum TX_MOVE ; $03
+ const TX_MOVE ; $03
text_move: MACRO
db TX_MOVE
dw \1 ; address of the new location
ENDM
- enum TX_BOX ; $04
+ const TX_BOX ; $04
text_box: MACRO
; draw box
db TX_BOX
@@ -45,27 +45,27 @@
db \2, \3 ; height, width
ENDM
- enum TX_LOW ; $05
+ const TX_LOW ; $05
text_low: MACRO
db TX_LOW
ENDM
- enum TX_PROMPT_BUTTON ; $06
+ const TX_PROMPT_BUTTON ; $06
text_promptbutton: MACRO
db TX_PROMPT_BUTTON
ENDM
- enum TX_SCROLL ; $07
+ const TX_SCROLL ; $07
text_scroll: MACRO
db TX_SCROLL
ENDM
- enum TX_START_ASM ; $08
+ const TX_START_ASM ; $08
text_asm: MACRO
db TX_START_ASM
ENDM
- enum TX_NUM ; $09
+ const TX_NUM ; $09
text_decimal: MACRO
; print a big-endian decimal number.
db TX_NUM
@@ -73,12 +73,12 @@
dn \2, \3 ; number of bytes to read, number of digits to display
ENDM
- enum TX_PAUSE ; $0a
+ const TX_PAUSE ; $0a
text_pause: MACRO
db TX_PAUSE
ENDM
- enum TX_SOUND_GET_ITEM_1 ; $0b
+ const TX_SOUND_GET_ITEM_1 ; $0b
sound_get_item_1: MACRO
db TX_SOUND_GET_ITEM_1
ENDM
@@ -86,63 +86,63 @@
TX_SOUND_LEVEL_UP EQU TX_SOUND_GET_ITEM_1
sound_level_up EQUS "sound_get_item_1"
- enum TX_DOTS ; $0c
+ const TX_DOTS ; $0c
text_dots: MACRO
db TX_DOTS
db \1 ; number of ellipses to draw
ENDM
- enum TX_WAIT_BUTTON ; $0d
+ const TX_WAIT_BUTTON ; $0d
text_waitbutton: MACRO
db TX_WAIT_BUTTON
ENDM
- enum TX_SOUND_POKEDEX_RATING ; $0e
+ const TX_SOUND_POKEDEX_RATING ; $0e
sound_pokedex_rating: MACRO
db TX_SOUND_POKEDEX_RATING
ENDM
- enum TX_SOUND_GET_ITEM_1_DUPLICATE ; $0f
+ const TX_SOUND_GET_ITEM_1_DUPLICATE ; $0f
sound_get_item_1_duplicate: MACRO
db TX_SOUND_GET_ITEM_1_DUPLICATE
ENDM
- enum TX_SOUND_GET_ITEM_2 ; $10
+ const TX_SOUND_GET_ITEM_2 ; $10
sound_get_item_2: MACRO
db TX_SOUND_GET_ITEM_2
ENDM
- enum TX_SOUND_GET_KEY_ITEM ; $11
+ const TX_SOUND_GET_KEY_ITEM ; $11
sound_get_key_item: MACRO
db TX_SOUND_GET_KEY_ITEM
ENDM
- enum TX_SOUND_CAUGHT_MON ; $12
+ const TX_SOUND_CAUGHT_MON ; $12
sound_caught_mon: MACRO
db TX_SOUND_CAUGHT_MON
ENDM
- enum TX_SOUND_DEX_PAGE_ADDED ; $13
+ const TX_SOUND_DEX_PAGE_ADDED ; $13
sound_dex_page_added: MACRO
db TX_SOUND_DEX_PAGE_ADDED
ENDM
- enum TX_SOUND_CRY_NIDORINA ; $14
+ const TX_SOUND_CRY_NIDORINA ; $14
sound_cry_nidorina: MACRO
db TX_SOUND_CRY_NIDORINA
ENDM
- enum TX_SOUND_CRY_PIDGEOT ; $15
+ const TX_SOUND_CRY_PIDGEOT ; $15
sound_cry_pidgeot: MACRO
db TX_SOUND_CRY_PIDGEOT
ENDM
- enum TX_SOUND_CRY_DEWGONG ; $16
+ const TX_SOUND_CRY_DEWGONG ; $16
sound_cry_dewgong: MACRO
db TX_SOUND_CRY_DEWGONG
ENDM
- enum TX_FAR ; $17
+ const TX_FAR ; $17
text_far: MACRO
db TX_FAR
dab \1 ; address of text commands
@@ -149,9 +149,9 @@
ENDM
- enum_set $50
+ const_def $50
- enum TX_END ; $50
+ const TX_END ; $50
text_end: MACRO
db TX_END
ENDM
@@ -158,43 +158,43 @@
; Text script IDs (see home/text_script.asm)
- enum_set $f5
+ const_def $f5
- enum TX_SCRIPT_VENDING_MACHINE ; $f5
+ const TX_SCRIPT_VENDING_MACHINE ; $f5
script_vending_machine: MACRO
db TX_SCRIPT_VENDING_MACHINE
ENDM
- enum TX_SCRIPT_CABLE_CLUB_RECEPTIONIST ; $f6
+ const TX_SCRIPT_CABLE_CLUB_RECEPTIONIST ; $f6
script_cable_club_receptionist: MACRO
db TX_SCRIPT_CABLE_CLUB_RECEPTIONIST
ENDM
- enum TX_SCRIPT_PRIZE_VENDOR ; $f7
+ const TX_SCRIPT_PRIZE_VENDOR ; $f7
script_prize_vendor: MACRO
db TX_SCRIPT_PRIZE_VENDOR
ENDM
- enum_set $f9
+ const_def $f9
- enum TX_SCRIPT_POKECENTER_PC ; $f9
+ const TX_SCRIPT_POKECENTER_PC ; $f9
script_pokecenter_pc: MACRO
db TX_SCRIPT_POKECENTER_PC
ENDM
- enum_set $fc
+ const_def $fc
- enum TX_SCRIPT_PLAYERS_PC ; $fc
+ const TX_SCRIPT_PLAYERS_PC ; $fc
script_players_pc: MACRO
db TX_SCRIPT_PLAYERS_PC
ENDM
- enum TX_SCRIPT_BILLS_PC ; $fd
+ const TX_SCRIPT_BILLS_PC ; $fd
script_bills_pc: MACRO
db TX_SCRIPT_BILLS_PC
ENDM
- enum TX_SCRIPT_MART ; $fe
+ const TX_SCRIPT_MART ; $fe
script_mart: MACRO
db TX_SCRIPT_MART
db _NARG ; number of items
@@ -205,7 +205,7 @@
db -1 ; end
ENDM
- enum TX_SCRIPT_POKECENTER_NURSE ; $ff
+ const TX_SCRIPT_POKECENTER_NURSE ; $ff
script_pokecenter_nurse: MACRO
db TX_SCRIPT_POKECENTER_NURSE
ENDM