diff options
| author | dannye <33dannye@gmail.com> | 2025-11-12 17:56:10 -0600 |
|---|---|---|
| committer | dannye <33dannye@gmail.com> | 2025-11-12 17:56:10 -0600 |
| commit | 324ae167d15ae4eef3cda411e10201661e57d88d (patch) | |
| tree | 86c2b73ce1262f12c1b3eb82874e8572e80e583f /macros | |
| parent | Separate surfing Pikachu graphics from audio engine code (diff) | |
| parent | Use features of RGBDS 1.0.0 (#537) (diff) | |
| download | pokeyellow-324ae167d15ae4eef3cda411e10201661e57d88d.tar.gz pokeyellow-324ae167d15ae4eef3cda411e10201661e57d88d.tar.xz pokeyellow-324ae167d15ae4eef3cda411e10201661e57d88d.zip | |
Merge branch 'master' of https://github.com/pret/pokered
Diffstat (limited to 'macros')
| -rw-r--r-- | macros/asserts.asm | 44 | ||||
| -rw-r--r-- | macros/code.asm | 4 | ||||
| -rw-r--r-- | macros/const.asm | 16 | ||||
| -rw-r--r-- | macros/coords.asm | 36 | ||||
| -rw-r--r-- | macros/data.asm | 24 | ||||
| -rw-r--r-- | macros/gfx.asm | 4 | ||||
| -rw-r--r-- | macros/predef.asm | 14 | ||||
| -rw-r--r-- | macros/ram.asm | 2 | ||||
| -rw-r--r-- | macros/scripts/maps.asm | 8 | ||||
| -rw-r--r-- | macros/vc.asm | 8 |
10 files changed, 78 insertions, 82 deletions
diff --git a/macros/asserts.asm b/macros/asserts.asm index 7b41a654..e2de1505 100644 --- a/macros/asserts.asm +++ b/macros/asserts.asm @@ -1,18 +1,14 @@ ; Macros to verify assumptions about the data or code -MACRO _redef_current_label +MACRO? _redef_current_label IF DEF(\1) PURGE \1 ENDC IF _NARG == 3 + (\3) DEF \1 EQUS "\<_NARG>" - ELIF DEF(..) - IF .. - @ == 0 - DEF \1 EQUS "{..}" - ENDC - ELIF DEF(.) - if . - @ == 0 - DEF \1 EQUS "{.}" + ELIF STRLEN(#__SCOPE__) + IF {{__SCOPE__}} - @ == 0 + DEF \1 EQUS #{__SCOPE__} ENDC ENDC if !DEF(\1) @@ -21,12 +17,12 @@ MACRO _redef_current_label ENDC ENDM -MACRO table_width +MACRO? table_width DEF CURRENT_TABLE_WIDTH = \1 _redef_current_label CURRENT_TABLE_START, "._table_width\@", 2, \# ENDM -MACRO assert_table_length +MACRO? assert_table_length DEF w = \1 DEF x = w * CURRENT_TABLE_WIDTH DEF y = @ - {CURRENT_TABLE_START} @@ -34,7 +30,7 @@ MACRO assert_table_length "bytes, for {d:x} total; but got {d:y} bytes" ENDM -MACRO assert_max_table_length +MACRO? assert_max_table_length DEF w = \1 DEF x = w * CURRENT_TABLE_WIDTH DEF y = @ - {CURRENT_TABLE_START} @@ -42,24 +38,24 @@ MACRO assert_max_table_length "{d:CURRENT_TABLE_WIDTH} bytes, for maximum {d:x} total; but got {d:y} bytes" ENDM -MACRO list_start +MACRO? list_start DEF list_index = 0 _redef_current_label CURRENT_LIST_START, "._list_start\@", 1, \# ENDM -MACRO li +MACRO? li ASSERT STRFIND(\1, "@") == -1, "String terminator \"@\" in list entry: \1" db \1, "@" DEF list_index += 1 ENDM -MACRO assert_list_length +MACRO? assert_list_length DEF x = \1 ASSERT x == list_index, \ "{CURRENT_LIST_START}: expected {d:x} entries, got {d:list_index}" ENDM -MACRO nybble_array +MACRO? nybble_array DEF CURRENT_NYBBLE_ARRAY_VALUE = 0 DEF CURRENT_NYBBLE_ARRAY_LENGTH = 0 IF _NARG == 1 @@ -70,7 +66,7 @@ MACRO nybble_array ENDC ENDM -MACRO nybble +MACRO? nybble ASSERT 0 <= (\1) && (\1) < $10, "nybbles must be 0-15" DEF CURRENT_NYBBLE_ARRAY_VALUE = (\1) | (CURRENT_NYBBLE_ARRAY_VALUE << 4) DEF CURRENT_NYBBLE_ARRAY_LENGTH += 1 @@ -80,7 +76,7 @@ MACRO nybble ENDC ENDM -MACRO end_nybble_array +MACRO? end_nybble_array IF CURRENT_NYBBLE_ARRAY_LENGTH % 2 db CURRENT_NYBBLE_ARRAY_VALUE << 4 ENDC @@ -94,7 +90,7 @@ MACRO end_nybble_array ENDC ENDM -MACRO bit_array +MACRO? bit_array DEF CURRENT_BIT_ARRAY_VALUE = 0 DEF CURRENT_BIT_ARRAY_LENGTH = 0 IF _NARG == 1 @@ -105,7 +101,7 @@ MACRO bit_array ENDC ENDM -MACRO dbit +MACRO? dbit ASSERT (\1) == 0 || (\1) == 1, "bits must be 0 or 1" DEF CURRENT_BIT_ARRAY_VALUE |= (\1) << (CURRENT_BIT_ARRAY_LENGTH % 8) DEF CURRENT_BIT_ARRAY_LENGTH += 1 @@ -115,7 +111,7 @@ MACRO dbit ENDC ENDM -MACRO end_bit_array +MACRO? end_bit_array IF CURRENT_BIT_ARRAY_LENGTH % 8 db CURRENT_BIT_ARRAY_VALUE ENDC @@ -129,7 +125,7 @@ MACRO end_bit_array ENDC ENDM -MACRO def_grass_wildmons +MACRO? def_grass_wildmons ;\1: encounter rate DEF CURRENT_GRASS_WILDMONS_RATE = \1 REDEF CURRENT_GRASS_WILDMONS_LABEL EQUS "._def_grass_wildmons_\1" @@ -137,7 +133,7 @@ MACRO def_grass_wildmons db \1 ENDM -MACRO end_grass_wildmons +MACRO? end_grass_wildmons DEF x = @ - {CURRENT_GRASS_WILDMONS_LABEL} IF CURRENT_GRASS_WILDMONS_RATE == 0 ASSERT 1 == x, \ @@ -148,7 +144,7 @@ MACRO end_grass_wildmons ENDC ENDM -MACRO def_water_wildmons +MACRO? def_water_wildmons ;\1: encounter rate DEF CURRENT_WATER_WILDMONS_RATE = \1 REDEF CURRENT_WATER_WILDMONS_LABEL EQUS "._def_water_wildmons_\1" @@ -156,7 +152,7 @@ MACRO def_water_wildmons db \1 ENDM -MACRO end_water_wildmons +MACRO? end_water_wildmons DEF x = @ - {CURRENT_WATER_WILDMONS_LABEL} IF CURRENT_WATER_WILDMONS_RATE == 0 ASSERT 1 == x, \ diff --git a/macros/code.asm b/macros/code.asm index 3c65e100..c972f97e 100644 --- a/macros/code.asm +++ b/macros/code.asm @@ -1,10 +1,10 @@ ; Syntactic sugar macros -MACRO lb ; r, hi, lo +MACRO? lb ; r, hi, lo ld \1, ((\2) & $ff) << 8 + ((\3) & $ff) ENDM -MACRO ldpal +MACRO? ldpal ld \1, \2 << 6 | \3 << 4 | \4 << 2 | \5 ENDM diff --git a/macros/const.asm b/macros/const.asm index fa2f0753..d6a34672 100644 --- a/macros/const.asm +++ b/macros/const.asm @@ -1,6 +1,6 @@ ; Enumerate constants -MACRO const_def +MACRO? const_def IF _NARG >= 1 DEF const_value = \1 ELSE @@ -13,22 +13,22 @@ MACRO const_def ENDC ENDM -MACRO const +MACRO? const DEF \1 EQU const_value DEF const_value += const_inc ENDM -MACRO const_export +MACRO? const_export const \1 EXPORT \1 ENDM -MACRO shift_const +MACRO? shift_const DEF \1 EQU 1 << const_value DEF const_value += const_inc ENDM -MACRO const_skip +MACRO? const_skip if _NARG >= 1 DEF const_value += const_inc * (\1) else @@ -36,7 +36,7 @@ MACRO const_skip endc ENDM -MACRO const_next +MACRO? const_next if (const_value > 0 && \1 < const_value) || (const_value < 0 && \1 > const_value) fail "const_next cannot go backwards from {const_value} to \1" else @@ -44,12 +44,12 @@ MACRO const_next endc ENDM -MACRO dw_const +MACRO? dw_const dw \1 const \2 ENDM -MACRO rb_skip +MACRO? rb_skip IF _NARG == 1 rsset _RS + \1 ELSE diff --git a/macros/coords.asm b/macros/coords.asm index 6eccdec4..4f801d01 100644 --- a/macros/coords.asm +++ b/macros/coords.asm @@ -1,4 +1,4 @@ -MACRO validate_coords +MACRO? validate_coords IF _NARG >= 4 IF \1 >= \3 fail "x coord out of range" @@ -11,19 +11,19 @@ MACRO validate_coords ENDC ENDM -MACRO hlcoord +MACRO? hlcoord coord hl, \# ENDM -MACRO bccoord +MACRO? bccoord coord bc, \# ENDM -MACRO decoord +MACRO? decoord coord de, \# ENDM -MACRO coord +MACRO? coord ; register, x, y[, origin] validate_coords \2, \3 IF _NARG >= 4 @@ -33,19 +33,19 @@ MACRO coord ENDC ENDM -MACRO hlbgcoord +MACRO? hlbgcoord bgcoord hl, \# ENDM -MACRO bcbgcoord +MACRO? bcbgcoord bgcoord bc, \# ENDM -MACRO debgcoord +MACRO? debgcoord bgcoord de, \# ENDM -MACRO bgcoord +MACRO? bgcoord ; register, x, y[, origin] validate_coords \2, \3, TILEMAP_WIDTH, TILEMAP_HEIGHT IF _NARG >= 4 @@ -55,30 +55,30 @@ MACRO bgcoord ENDC ENDM -MACRO hlowcoord +MACRO? hlowcoord owcoord hl, \# ENDM -MACRO bcowcoord +MACRO? bcowcoord owcoord bc, \# ENDM -MACRO deowcoord +MACRO? deowcoord owcoord de, \# ENDM -MACRO owcoord +MACRO? owcoord ; register, x, y, map width ld \1, wOverworldMap + ((\2) + 3) + (((\3) + 3) * ((\4) + (3 * 2))) ENDM -MACRO event_displacement +MACRO? event_displacement ; map width, x blocks, y blocks dw (wOverworldMap + 7 + (\1) + ((\1) + 6) * ((\3) >> 1) + ((\2) >> 1)) db \3, \2 ENDM -MACRO dwcoord +MACRO? dwcoord ; x, y validate_coords \1, \2 IF _NARG >= 3 @@ -88,7 +88,7 @@ MACRO dwcoord ENDC ENDM -MACRO ldcoord_a +MACRO? ldcoord_a ; x, y[, origin] validate_coords \1, \2 IF _NARG >= 3 @@ -98,7 +98,7 @@ MACRO ldcoord_a ENDC ENDM -MACRO lda_coord +MACRO? lda_coord ; x, y[, origin] validate_coords \1, \2 IF _NARG >= 3 @@ -108,7 +108,7 @@ MACRO lda_coord ENDC ENDM -MACRO dbmapcoord +MACRO? dbmapcoord ; x, y db \2, \1 ENDM diff --git a/macros/data.asm b/macros/data.asm index 8033f306..86181f8c 100644 --- a/macros/data.asm +++ b/macros/data.asm @@ -2,19 +2,19 @@ DEF percent EQUS "* $ff / 100" -MACRO bcd2 +MACRO? bcd2 dn ((\1) / 1000) % 10, ((\1) / 100) % 10 dn ((\1) / 10) % 10, (\1) % 10 ENDM -MACRO bcd3 +MACRO? bcd3 dn ((\1) / 100000) % 10, ((\1) / 10000) % 10 dn ((\1) / 1000) % 10, ((\1) / 100) % 10 dn ((\1) / 10) % 10, (\1) % 10 ENDM ; used in data/pokemon/base_stats/*.asm -MACRO tmhm +MACRO? tmhm ; initialize bytes to 0 FOR n, (NUM_TM_HM + 7) / 8 DEF _tm{d:n} = 0 @@ -40,49 +40,49 @@ ENDM ; Constant data (db, dw, dl) macros -MACRO dbw +MACRO? dbw db \1 dw \2 ENDM -MACRO dwb +MACRO? dwb dw \1 db \2 ENDM -MACRO dn ; nybbles +MACRO? dn ; nybbles REPT _NARG / 2 db ((\1) << 4) | (\2) SHIFT 2 ENDR ENDM -MACRO dc ; "crumbs" +MACRO? dc ; "crumbs" REPT _NARG / 4 db ((\1) << 6) | ((\2) << 4) | ((\3) << 2) | (\4) SHIFT 4 ENDR ENDM -MACRO bigdw ; big-endian word +MACRO? bigdw ; big-endian word db HIGH(\1), LOW(\1) ENDM -MACRO dba ; dbw bank, address +MACRO? dba ; dbw bank, address REPT _NARG dbw BANK(\1), \1 SHIFT ENDR ENDM -MACRO dab ; dwb address, bank +MACRO? dab ; dwb address, bank REPT _NARG dwb \1, BANK(\1) SHIFT ENDR ENDM -MACRO dname +MACRO? dname IF _NARG == 2 DEF n = \2 ELSE @@ -91,7 +91,7 @@ MACRO dname ASSERT STRFIND(\1, "@") == -1, "String terminator \"@\" in name: \1" ASSERT CHARLEN(\1) <= n, "Name longer than {d:n} characters: \1" db \1 - ds n - CHARLEN(\1), "@" + ds n - CHARLEN(\1), '@' ENDM MACRO sine_table diff --git a/macros/gfx.asm b/macros/gfx.asm index d50d64cf..2ecca399 100644 --- a/macros/gfx.asm +++ b/macros/gfx.asm @@ -1,4 +1,4 @@ -MACRO RGB +MACRO? RGB REPT _NARG / 3 dw palred (\1) + palgreen (\2) + palblue (\3) SHIFT 3 @@ -16,7 +16,7 @@ DEF color EQUS "+ COLOR_SIZE *" DEF tiles EQUS "* TILE_SIZE" DEF tile EQUS "+ TILE_SIZE *" -MACRO dbsprite +MACRO? dbsprite ; x tile, y tile, x pixel, y pixel, vtile offset, attributes db (\2 * TILE_WIDTH) % $100 + \4, (\1 * TILE_WIDTH) % $100 + \3, \5, \6 ENDM diff --git a/macros/predef.asm b/macros/predef.asm index 45b0197b..efd692f1 100644 --- a/macros/predef.asm +++ b/macros/predef.asm @@ -1,32 +1,32 @@ -MACRO predef_id +MACRO? predef_id ld a, (\1Predef - PredefPointers) / 3 ENDM -MACRO predef +MACRO? predef predef_id \1 call Predef ENDM -MACRO predef_jump +MACRO? predef_jump predef_id \1 jp Predef ENDM -MACRO tx_pre_id +MACRO? tx_pre_id ld a, (\1_id - TextPredefs) / 2 + 1 ENDM -MACRO tx_pre +MACRO? tx_pre tx_pre_id \1 call PrintPredefTextID ENDM -MACRO tx_pre_jump +MACRO? tx_pre_jump tx_pre_id \1 jp PrintPredefTextID ENDM -MACRO db_tx_pre +MACRO? db_tx_pre db (\1_id - TextPredefs) / 2 + 1 ENDM diff --git a/macros/ram.asm b/macros/ram.asm index 58704807..a8deac76 100644 --- a/macros/ram.asm +++ b/macros/ram.asm @@ -1,6 +1,6 @@ ; Used in wram.asm -MACRO flag_array +MACRO? flag_array ds ((\1) + 7) / 8 ENDM diff --git a/macros/scripts/maps.asm b/macros/scripts/maps.asm index 49150c6e..127a13ad 100644 --- a/macros/scripts/maps.asm +++ b/macros/scripts/maps.asm @@ -174,7 +174,7 @@ MACRO connection DEF _tgt = 0 ENDC - IF !STRCMP("\1", "north") + IF "\1" === "north" DEF _blk = \3_WIDTH * (\3_HEIGHT - 3) + _src DEF _map = _tgt DEF _win = (\3_WIDTH + 6) * \3_HEIGHT + 1 @@ -185,7 +185,7 @@ MACRO connection DEF _len = \3_WIDTH ENDC - ELIF !STRCMP("\1", "south") + ELIF "\1" === "south" DEF _blk = _src DEF _map = (CURRENT_MAP_WIDTH + 6) * (CURRENT_MAP_HEIGHT + 3) + _tgt DEF _win = \3_WIDTH + 7 @@ -196,7 +196,7 @@ MACRO connection DEF _len = \3_WIDTH ENDC - ELIF !STRCMP("\1", "west") + ELIF "\1" === "west" DEF _blk = (\3_WIDTH * _src) + \3_WIDTH - 3 DEF _map = (CURRENT_MAP_WIDTH + 6) * _tgt DEF _win = (\3_WIDTH + 6) * 2 - 6 @@ -207,7 +207,7 @@ MACRO connection DEF _len = \3_HEIGHT ENDC - ELIF !STRCMP("\1", "east") + ELIF "\1" === "east" DEF _blk = (\3_WIDTH * _src) DEF _map = (CURRENT_MAP_WIDTH + 6) * _tgt + CURRENT_MAP_WIDTH + 3 DEF _win = \3_WIDTH + 7 diff --git a/macros/vc.asm b/macros/vc.asm index 3b33e844..8711acaa 100644 --- a/macros/vc.asm +++ b/macros/vc.asm @@ -1,10 +1,10 @@ -MACRO vc_hook +MACRO? vc_hook IF DEF(_YELLOW_VC) .VC_\1:: ENDC ENDM -MACRO vc_patch +MACRO? vc_patch IF DEF(_YELLOW_VC) ASSERT !DEF(CURRENT_VC_PATCH), "Already started a vc_patch" DEF CURRENT_VC_PATCH EQUS "\1" @@ -12,7 +12,7 @@ MACRO vc_patch ENDC ENDM -MACRO vc_patch_end +MACRO? vc_patch_end IF DEF(_YELLOW_VC) ASSERT DEF(CURRENT_VC_PATCH), "No vc_patch started" .VC_{CURRENT_VC_PATCH}_End:: @@ -20,7 +20,7 @@ MACRO vc_patch_end ENDC ENDM -MACRO vc_assert +MACRO? vc_assert IF DEF(_YELLOW_VC) ASSERT \# ENDC |
