Specialized macros go with their data/code

This commit is contained in:
Remy Oukaour 2018-01-10 00:08:05 -05:00
parent 9af6d8d0f1
commit 8aa58dca9e
5 changed files with 316 additions and 323 deletions

View File

@ -5,262 +5,285 @@
; - ItemAttributes (see data/items/attributes.asm) ; - ItemAttributes (see data/items/attributes.asm)
; - ItemEffects (see engine/item_effects.asm) ; - ItemEffects (see engine/item_effects.asm)
const_def const_def
const NO_ITEM ; $00 const NO_ITEM ; 00
const MASTER_BALL ; $01 const MASTER_BALL ; 01
const ULTRA_BALL ; $02 const ULTRA_BALL ; 02
const BRIGHTPOWDER ; $03 const BRIGHTPOWDER ; 03
const GREAT_BALL ; $04 const GREAT_BALL ; 04
const POKE_BALL ; $05 const POKE_BALL ; 05
const TOWN_MAP ; $06 const TOWN_MAP ; 06
const BICYCLE ; $07 const BICYCLE ; 07
const MOON_STONE ; $08 const MOON_STONE ; 08
const ANTIDOTE ; $09 const ANTIDOTE ; 09
const BURN_HEAL ; $0A const BURN_HEAL ; 0a
const ICE_HEAL ; $0B const ICE_HEAL ; 0b
const AWAKENING ; $0C const AWAKENING ; 0c
const PARLYZ_HEAL ; $0D const PARLYZ_HEAL ; 0d
const FULL_RESTORE ; $0E const FULL_RESTORE ; 0e
const MAX_POTION ; $0F const MAX_POTION ; 0f
const HYPER_POTION ; $10 const HYPER_POTION ; 10
const SUPER_POTION ; $11 const SUPER_POTION ; 11
const POTION ; $12 const POTION ; 12
const ESCAPE_ROPE ; $13 const ESCAPE_ROPE ; 13
const REPEL ; $14 const REPEL ; 14
const MAX_ELIXER ; $15 const MAX_ELIXER ; 15
const FIRE_STONE ; $16 const FIRE_STONE ; 16
const THUNDERSTONE ; $17 const THUNDERSTONE ; 17
const WATER_STONE ; $18 const WATER_STONE ; 18
const ITEM_19 ; $19 const ITEM_19 ; 19
const HP_UP ; $1A const HP_UP ; 1a
const PROTEIN ; $1B const PROTEIN ; 1b
const IRON ; $1C const IRON ; 1c
const CARBOS ; $1D const CARBOS ; 1d
const LUCKY_PUNCH ; $1E const LUCKY_PUNCH ; 1e
const CALCIUM ; $1F const CALCIUM ; 1f
const RARE_CANDY ; $20 const RARE_CANDY ; 20
const X_ACCURACY ; $21 const X_ACCURACY ; 21
const LEAF_STONE ; $22 const LEAF_STONE ; 22
const METAL_POWDER ; $23 const METAL_POWDER ; 23
const NUGGET ; $24 const NUGGET ; 24
const POKE_DOLL ; $25 const POKE_DOLL ; 25
const FULL_HEAL ; $26 const FULL_HEAL ; 26
const REVIVE ; $27 const REVIVE ; 27
const MAX_REVIVE ; $28 const MAX_REVIVE ; 28
const GUARD_SPEC ; $29 const GUARD_SPEC ; 29
const SUPER_REPEL ; $2A const SUPER_REPEL ; 2a
const MAX_REPEL ; $2B const MAX_REPEL ; 2b
const DIRE_HIT ; $2C const DIRE_HIT ; 2c
const ITEM_2D ; $2D const ITEM_2D ; 2d
const FRESH_WATER ; $2E const FRESH_WATER ; 2e
const SODA_POP ; $2F const SODA_POP ; 2f
const LEMONADE ; $30 const LEMONADE ; 30
const X_ATTACK ; $31 const X_ATTACK ; 31
const ITEM_32 ; $32 const ITEM_32 ; 32
const X_DEFEND ; $33 const X_DEFEND ; 33
const X_SPEED ; $34 const X_SPEED ; 34
const X_SPECIAL ; $35 const X_SPECIAL ; 35
const COIN_CASE ; $36 const COIN_CASE ; 36
const ITEMFINDER ; $37 const ITEMFINDER ; 37
const POKE_FLUTE ; $38 const POKE_FLUTE ; 38
const EXP_SHARE ; $39 const EXP_SHARE ; 39
const OLD_ROD ; $3A const OLD_ROD ; 3a
const GOOD_ROD ; $3B const GOOD_ROD ; 3b
const SILVER_LEAF ; $3C const SILVER_LEAF ; 3c
const SUPER_ROD ; $3D const SUPER_ROD ; 3d
const PP_UP ; $3E const PP_UP ; 3e
const ETHER ; $3F const ETHER ; 3f
const MAX_ETHER ; $40 const MAX_ETHER ; 40
const ELIXER ; $41 const ELIXER ; 41
const RED_SCALE ; $42 const RED_SCALE ; 42
const SECRETPOTION ; $43 const SECRETPOTION ; 43
const S_S_TICKET ; $44 const S_S_TICKET ; 44
const MYSTERY_EGG ; $45 const MYSTERY_EGG ; 45
const CLEAR_BELL ; $46 const CLEAR_BELL ; 46
const SILVER_WING ; $47 const SILVER_WING ; 47
const MOOMOO_MILK ; $48 const MOOMOO_MILK ; 48
const QUICK_CLAW ; $49 const QUICK_CLAW ; 49
const PSNCUREBERRY ; $4A const PSNCUREBERRY ; 4a
const GOLD_LEAF ; $4B const GOLD_LEAF ; 4b
const SOFT_SAND ; $4C const SOFT_SAND ; 4c
const SHARP_BEAK ; $4D const SHARP_BEAK ; 4d
const PRZCUREBERRY ; $4E const PRZCUREBERRY ; 4e
const BURNT_BERRY ; $4F const BURNT_BERRY ; 4f
const ICE_BERRY ; $50 const ICE_BERRY ; 50
const POISON_BARB ; $51 const POISON_BARB ; 51
const KINGS_ROCK ; $52 const KINGS_ROCK ; 52
const BITTER_BERRY ; $53 const BITTER_BERRY ; 53
const MINT_BERRY ; $54 const MINT_BERRY ; 54
const RED_APRICORN ; $55 const RED_APRICORN ; 55
const TINYMUSHROOM ; $56 const TINYMUSHROOM ; 56
const BIG_MUSHROOM ; $57 const BIG_MUSHROOM ; 57
const SILVERPOWDER ; $58 const SILVERPOWDER ; 58
const BLU_APRICORN ; $59 const BLU_APRICORN ; 59
const ITEM_5A ; $5A const ITEM_5A ; 5a
const AMULET_COIN ; $5B const AMULET_COIN ; 5b
const YLW_APRICORN ; $5C const YLW_APRICORN ; 5c
const GRN_APRICORN ; $5D const GRN_APRICORN ; 5d
const CLEANSE_TAG ; $5E const CLEANSE_TAG ; 5e
const MYSTIC_WATER ; $5F const MYSTIC_WATER ; 5f
const TWISTEDSPOON ; $60 const TWISTEDSPOON ; 60
const WHT_APRICORN ; $61 const WHT_APRICORN ; 61
const BLACKBELT ; $62 const BLACKBELT ; 62
const BLK_APRICORN ; $63 const BLK_APRICORN ; 63
const ITEM_64 ; $64 const ITEM_64 ; 64
const PNK_APRICORN ; $65 const PNK_APRICORN ; 65
const BLACKGLASSES ; $66 const BLACKGLASSES ; 66
const SLOWPOKETAIL ; $67 const SLOWPOKETAIL ; 67
const PINK_BOW ; $68 const PINK_BOW ; 68
const STICK ; $69 const STICK ; 69
const SMOKE_BALL ; $6A const SMOKE_BALL ; 6a
const NEVERMELTICE ; $6B const NEVERMELTICE ; 6b
const MAGNET ; $6C const MAGNET ; 6c
const MIRACLEBERRY ; $6D const MIRACLEBERRY ; 6d
const PEARL ; $6E const PEARL ; 6e
const BIG_PEARL ; $6F const BIG_PEARL ; 6f
const EVERSTONE ; $70 const EVERSTONE ; 70
const SPELL_TAG ; $71 const SPELL_TAG ; 71
const RAGECANDYBAR ; $72 const RAGECANDYBAR ; 72
const GS_BALL ; $73 const GS_BALL ; 73
const BLUE_CARD ; $74 const BLUE_CARD ; 74
const MIRACLE_SEED ; $75 const MIRACLE_SEED ; 75
const THICK_CLUB ; $76 const THICK_CLUB ; 76
const FOCUS_BAND ; $77 const FOCUS_BAND ; 77
const ITEM_78 ; $78 const ITEM_78 ; 78
const ENERGYPOWDER ; $79 const ENERGYPOWDER ; 79
const ENERGY_ROOT ; $7A const ENERGY_ROOT ; 7a
const HEAL_POWDER ; $7B const HEAL_POWDER ; 7b
const REVIVAL_HERB ; $7C const REVIVAL_HERB ; 7c
const HARD_STONE ; $7D const HARD_STONE ; 7d
const LUCKY_EGG ; $7E const LUCKY_EGG ; 7e
const CARD_KEY ; $7F const CARD_KEY ; 7f
const MACHINE_PART ; $80 const MACHINE_PART ; 80
const EGG_TICKET ; $81 const EGG_TICKET ; 81
const LOST_ITEM ; $82 const LOST_ITEM ; 82
const STARDUST ; $83 const STARDUST ; 83
const STAR_PIECE ; $84 const STAR_PIECE ; 84
const BASEMENT_KEY ; $85 const BASEMENT_KEY ; 85
const PASS ; $86 const PASS ; 86
const ITEM_87 ; $87 const ITEM_87 ; 87
const ITEM_88 ; $88 const ITEM_88 ; 88
const ITEM_89 ; $89 const ITEM_89 ; 89
const CHARCOAL ; $8A const CHARCOAL ; 8a
const BERRY_JUICE ; $8B const BERRY_JUICE ; 8b
const SCOPE_LENS ; $8C const SCOPE_LENS ; 8c
const ITEM_8D ; $8D const ITEM_8D ; 8d
const ITEM_8E ; $8E const ITEM_8E ; 8e
const METAL_COAT ; $8F const METAL_COAT ; 8f
const DRAGON_FANG ; $90 const DRAGON_FANG ; 90
const ITEM_91 ; $91 const ITEM_91 ; 91
const LEFTOVERS ; $92 const LEFTOVERS ; 92
const ITEM_93 ; $93 const ITEM_93 ; 93
const ITEM_94 ; $94 const ITEM_94 ; 94
const ITEM_95 ; $95 const ITEM_95 ; 95
const MYSTERYBERRY ; $96 const MYSTERYBERRY ; 96
const DRAGON_SCALE ; $97 const DRAGON_SCALE ; 97
const BERSERK_GENE ; $98 const BERSERK_GENE ; 98
const ITEM_99 ; $99 const ITEM_99 ; 99
const ITEM_9A ; $9A const ITEM_9A ; 9a
const ITEM_9B ; $9B const ITEM_9B ; 9b
const SACRED_ASH ; $9C const SACRED_ASH ; 9c
const HEAVY_BALL ; $9D const HEAVY_BALL ; 9d
const FLOWER_MAIL ; $9E const FLOWER_MAIL ; 9e
const LEVEL_BALL ; $9F const LEVEL_BALL ; 9f
const LURE_BALL ; $A0 const LURE_BALL ; a0
const FAST_BALL ; $A1 const FAST_BALL ; a1
const ITEM_A2 ; $A2 const ITEM_A2 ; a2
const LIGHT_BALL ; $A3 const LIGHT_BALL ; a3
const FRIEND_BALL ; $A4 const FRIEND_BALL ; a4
const MOON_BALL ; $A5 const MOON_BALL ; a5
const LOVE_BALL ; $A6 const LOVE_BALL ; a6
const NORMAL_BOX ; $A7 const NORMAL_BOX ; a7
const GORGEOUS_BOX ; $A8 const GORGEOUS_BOX ; a8
const SUN_STONE ; $A9 const SUN_STONE ; a9
const POLKADOT_BOW ; $AA const POLKADOT_BOW ; aa
const ITEM_AB ; $AB const ITEM_AB ; ab
const UP_GRADE ; $AC const UP_GRADE ; ac
const BERRY ; $AD const BERRY ; ad
const GOLD_BERRY ; $AE const GOLD_BERRY ; ae
const SQUIRTBOTTLE ; $AF const SQUIRTBOTTLE ; af
const ITEM_B0 ; $B0 const ITEM_B0 ; b0
const PARK_BALL ; $B1 const PARK_BALL ; b1
const RAINBOW_WING ; $B2 const RAINBOW_WING ; b2
const ITEM_B3 ; $B3 const ITEM_B3 ; b3
const BRICK_PIECE ; $B4 const BRICK_PIECE ; b4
const SURF_MAIL ; $B5 const SURF_MAIL ; b5
const LITEBLUEMAIL ; $B6 const LITEBLUEMAIL ; b6
const PORTRAITMAIL ; $B7 const PORTRAITMAIL ; b7
const LOVELY_MAIL ; $B8 const LOVELY_MAIL ; b8
const EON_MAIL ; $B9 const EON_MAIL ; b9
const MORPH_MAIL ; $BA const MORPH_MAIL ; ba
const BLUESKY_MAIL ; $BB const BLUESKY_MAIL ; bb
const MUSIC_MAIL ; $BC const MUSIC_MAIL ; bc
const MIRAGE_MAIL ; $BD const MIRAGE_MAIL ; bd
const ITEM_BE ; $BE const ITEM_BE ; be
add_tm: MACRO
if !DEF(TM01)
TM01 = const_value
enum_start 1
endc
define _\@_1, "TM_\1"
const _\@_1
enum \1_TMNUM
ENDM
add_hm: MACRO
if !DEF(HM01)
HM01 = const_value
endc
define _\@_1, "HM_\1"
const _\@_1
enum \1_TMNUM
ENDM
add_mt: MACRO
enum \1_TMNUM
ENDM
; see data/moves/tmhm_moves.asm for moves ; see data/moves/tmhm_moves.asm for moves
add_tm DYNAMICPUNCH ; $BF add_tm DYNAMICPUNCH ; bf
add_tm HEADBUTT ; $C0 add_tm HEADBUTT ; c0
add_tm CURSE ; $C1 add_tm CURSE ; c1
add_tm ROLLOUT ; $C2 add_tm ROLLOUT ; c2
const ITEM_C3 ; $C3 const ITEM_C3 ; c3
add_tm ROAR ; $C4 add_tm ROAR ; c4
add_tm TOXIC ; $C5 add_tm TOXIC ; c5
add_tm ZAP_CANNON ; $C6 add_tm ZAP_CANNON ; c6
add_tm ROCK_SMASH ; $C7 add_tm ROCK_SMASH ; c7
add_tm PSYCH_UP ; $C8 add_tm PSYCH_UP ; c8
add_tm HIDDEN_POWER ; $C9 add_tm HIDDEN_POWER ; c9
add_tm SUNNY_DAY ; $CA add_tm SUNNY_DAY ; ca
add_tm SWEET_SCENT ; $CB add_tm SWEET_SCENT ; cb
add_tm SNORE ; $CC add_tm SNORE ; cc
add_tm BLIZZARD ; $CD add_tm BLIZZARD ; cd
add_tm HYPER_BEAM ; $CE add_tm HYPER_BEAM ; ce
add_tm ICY_WIND ; $CF add_tm ICY_WIND ; cf
add_tm PROTECT ; $D0 add_tm PROTECT ; d0
add_tm RAIN_DANCE ; $D1 add_tm RAIN_DANCE ; d1
add_tm GIGA_DRAIN ; $D2 add_tm GIGA_DRAIN ; d2
add_tm ENDURE ; $D3 add_tm ENDURE ; d3
add_tm FRUSTRATION ; $D4 add_tm FRUSTRATION ; d4
add_tm SOLARBEAM ; $D5 add_tm SOLARBEAM ; d5
add_tm IRON_TAIL ; $D6 add_tm IRON_TAIL ; d6
add_tm DRAGONBREATH ; $D7 add_tm DRAGONBREATH ; d7
add_tm THUNDER ; $D8 add_tm THUNDER ; d8
add_tm EARTHQUAKE ; $D9 add_tm EARTHQUAKE ; d9
add_tm RETURN ; $DA add_tm RETURN ; da
add_tm DIG ; $DB add_tm DIG ; db
const ITEM_DC ; $DC const ITEM_DC ; dc
add_tm PSYCHIC_M ; $DD add_tm PSYCHIC_M ; dd
add_tm SHADOW_BALL ; $DE add_tm SHADOW_BALL ; de
add_tm MUD_SLAP ; $DF add_tm MUD_SLAP ; df
add_tm DOUBLE_TEAM ; $E0 add_tm DOUBLE_TEAM ; e0
add_tm ICE_PUNCH ; $E1 add_tm ICE_PUNCH ; e1
add_tm SWAGGER ; $E2 add_tm SWAGGER ; e2
add_tm SLEEP_TALK ; $E3 add_tm SLEEP_TALK ; e3
add_tm SLUDGE_BOMB ; $E4 add_tm SLUDGE_BOMB ; e4
add_tm SANDSTORM ; $E5 add_tm SANDSTORM ; e5
add_tm FIRE_BLAST ; $E6 add_tm FIRE_BLAST ; e6
add_tm SWIFT ; $E7 add_tm SWIFT ; e7
add_tm DEFENSE_CURL ; $E8 add_tm DEFENSE_CURL ; e8
add_tm THUNDERPUNCH ; $E9 add_tm THUNDERPUNCH ; e9
add_tm DREAM_EATER ; $EA add_tm DREAM_EATER ; ea
add_tm DETECT ; $EB add_tm DETECT ; eb
add_tm REST ; $EC add_tm REST ; ec
add_tm ATTRACT ; $ED add_tm ATTRACT ; ed
add_tm THIEF ; $EE add_tm THIEF ; ee
add_tm STEEL_WING ; $EF add_tm STEEL_WING ; ef
add_tm FIRE_PUNCH ; $F0 add_tm FIRE_PUNCH ; f0
add_tm FURY_CUTTER ; $F1 add_tm FURY_CUTTER ; f1
add_tm NIGHTMARE ; $F2 add_tm NIGHTMARE ; f2
NUM_TMS = const_value - TM01 - 2 ; discount ITEM_C3 and ITEM_DC NUM_TMS = const_value - TM01 - 2 ; discount ITEM_C3 and ITEM_DC
add_hm CUT ; $F3 add_hm CUT ; f3
add_hm FLY ; $F4 add_hm FLY ; f4
add_hm SURF ; $F5 add_hm SURF ; f5
add_hm STRENGTH ; $F6 add_hm STRENGTH ; f6
add_hm FLASH ; $F7 add_hm FLASH ; f7
add_hm WHIRLPOOL ; $F8 add_hm WHIRLPOOL ; f8
add_hm WATERFALL ; $F9 add_hm WATERFALL ; f9
NUM_HMS = const_value - HM01 NUM_HMS = const_value - HM01
const ITEM_FA ; $FA const ITEM_FA ; fa
add_mt FLAMETHROWER add_mt FLAMETHROWER
add_mt THUNDERBOLT add_mt THUNDERBOLT

View File

@ -1,3 +1,36 @@
tmhm: MACRO
; used in data/pokemon/base_stats/*.asm
tms1 = 0 ; TM01-TM24 (24)
tms2 = 0 ; TM25-TM48 (24)
tms3 = 0 ; TM49-TM50 + HM01-HM07 + MT01-MT03 (12/24)
rept _NARG
if DEF(\1_TMNUM)
if \1_TMNUM < 24 + 1
tms1 = tms1 | (1 << ((\1_TMNUM) - 1))
elif \1_TMNUM < 48 + 1
tms2 = tms2 | (1 << ((\1_TMNUM) - 1 - 24))
else
tms3 = tms3 | (1 << ((\1_TMNUM) - 1 - 48))
endc
else
fail "\1 is not a TM, HM, or move tutor move"
endc
shift
endr
rept 3 ; TM01-TM24 (24/24)
db tms1 & $ff
tms1 = tms1 >> 8
endr
rept 3 ; TM25-TM48 (24/24)
db tms2 & $ff
tms2 = tms2 >> 8
endr
rept 2 ; TM49-TM50 + HM01-HM07 + MT01-MT03 (12/16)
db tms3 & $ff
tms3 = tms3 >> 8
endr
ENDM
BaseData:: BaseData::
INCLUDE "data/pokemon/base_stats/bulbasaur.asm" INCLUDE "data/pokemon/base_stats/bulbasaur.asm"
INCLUDE "data/pokemon/base_stats/ivysaur.asm" INCLUDE "data/pokemon/base_stats/ivysaur.asm"

View File

@ -5,7 +5,6 @@ INCLUDE "macros/data.asm"
INCLUDE "macros/code.asm" INCLUDE "macros/code.asm"
INCLUDE "macros/coords.asm" INCLUDE "macros/coords.asm"
INCLUDE "macros/color.asm" INCLUDE "macros/color.asm"
INCLUDE "macros/tmhm.asm"
INCLUDE "macros/scripts/audio.asm" INCLUDE "macros/scripts/audio.asm"
INCLUDE "macros/scripts/maps.asm" INCLUDE "macros/scripts/maps.asm"

View File

@ -38,3 +38,12 @@ shift_const: MACRO
\1 EQU (1 << const_value) \1 EQU (1 << const_value)
const_value = const_value + 1 const_value = const_value + 1
ENDM ENDM
; Enumerate strings
define: MACRO
if !DEF(\1)
\1 EQUS \2
endc
ENDM

View File

@ -1,71 +0,0 @@
define: MACRO
if !DEF(\1)
\1 EQUS \2
endc
ENDM
; Used in constants/item_constants.asm
const_value = 0
add_tm: MACRO
if !DEF(TM01)
TM01 = const_value
enum_start 1
endc
define _\@_1, "TM_\1"
const _\@_1
enum \1_TMNUM
ENDM
add_hm: MACRO
if !DEF(HM01)
HM01 = const_value
endc
define _\@_1, "HM_\1"
const _\@_1
enum \1_TMNUM
ENDM
add_mt: MACRO
enum \1_TMNUM
ENDM
; Used in data/pokemon/base_stats/*.asm
; N TMs/HMs need (N+7)/8 bytes for their bit flags.
; The rgbasm integers tms1, tms2, tms3 each hold 3 bytes, or 24 bits.
tmhm: MACRO
tms1 = 0
tms2 = 0
tms3 = 0
rept _NARG
if DEF(\1_TMNUM)
if \1_TMNUM < 24 + 1
tms1 = tms1 | (1 << ((\1_TMNUM) - 1))
elif \1_TMNUM < 48 + 1
tms2 = tms2 | (1 << ((\1_TMNUM) - 1 - 24))
else
tms3 = tms3 | (1 << ((\1_TMNUM) - 1 - 48))
endc
else
fail "\1 is not a TM, HM, or move tutor move"
endc
shift
endr
rept 3
db tms1 & $ff
tms1 = tms1 >> 8
endr
rept 3
db tms2 & $ff
tms2 = tms2 >> 8
endr
rept 2
db tms3 & $ff
tms3 = tms3 >> 8
endr
ENDM