shithub: pokered

Download patch

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