RGBDS syntax updates (#905)

New MACRO and DEF syntax
This commit is contained in:
vulcandth
2022-06-06 16:25:42 -05:00
committed by GitHub
parent a4d346cc8c
commit 3648afda16
179 changed files with 2546 additions and 2545 deletions

View File

@@ -1,65 +1,65 @@
; Macros to verify assumptions about the data or code
table_width: MACRO
CURRENT_TABLE_WIDTH = \1
if _NARG == 2
REDEF CURRENT_TABLE_START EQUS "\2"
else
REDEF CURRENT_TABLE_START EQUS "._table_width\@"
{CURRENT_TABLE_START}:
endc
MACRO table_width
DEF CURRENT_TABLE_WIDTH = \1
if _NARG == 2
REDEF CURRENT_TABLE_START EQUS "\2"
else
REDEF CURRENT_TABLE_START EQUS "._table_width\@"
{CURRENT_TABLE_START}:
endc
ENDM
assert_table_length: MACRO
x = \1
MACRO assert_table_length
DEF x = \1
assert x * CURRENT_TABLE_WIDTH == @ - {CURRENT_TABLE_START}, \
"{CURRENT_TABLE_START}: expected {d:x} entries, each {d:CURRENT_TABLE_WIDTH} bytes"
ENDM
list_start: MACRO
list_index = 0
if _NARG == 1
REDEF CURRENT_LIST_START EQUS "\1"
else
REDEF CURRENT_LIST_START EQUS "._list_start\@"
{CURRENT_LIST_START}:
endc
MACRO list_start
DEF list_index = 0
if _NARG == 1
REDEF CURRENT_LIST_START EQUS "\1"
else
REDEF CURRENT_LIST_START EQUS "._list_start\@"
{CURRENT_LIST_START}:
endc
ENDM
li: MACRO
MACRO li
assert !STRIN(\1, "@"), STRCAT("String terminator \"@\" in list entry: ", \1)
db \1, "@"
list_index += 1
DEF list_index += 1
ENDM
assert_list_length: MACRO
x = \1
MACRO assert_list_length
DEF x = \1
assert x == list_index, \
"{CURRENT_LIST_START}: expected {d:x} entries, got {d:list_index}"
ENDM
def_grass_wildmons: MACRO
MACRO def_grass_wildmons
;\1: map id
REDEF CURRENT_GRASS_WILDMONS_MAP EQUS "\1"
REDEF CURRENT_GRASS_WILDMONS_LABEL EQUS "._def_grass_wildmons_\1"
REDEF CURRENT_GRASS_WILDMONS_MAP EQUS "\1"
REDEF CURRENT_GRASS_WILDMONS_LABEL EQUS "._def_grass_wildmons_\1"
{CURRENT_GRASS_WILDMONS_LABEL}:
map_id \1
ENDM
end_grass_wildmons: MACRO
MACRO end_grass_wildmons
assert GRASS_WILDDATA_LENGTH == @ - {CURRENT_GRASS_WILDMONS_LABEL}, \
"def_grass_wildmons {CURRENT_GRASS_WILDMONS_MAP}: expected {d:GRASS_WILDDATA_LENGTH} bytes"
ENDM
def_water_wildmons: MACRO
MACRO def_water_wildmons
;\1: map id
REDEF CURRENT_WATER_WILDMONS_MAP EQUS "\1"
REDEF CURRENT_WATER_WILDMONS_LABEL EQUS "._def_water_wildmons_\1"
REDEF CURRENT_WATER_WILDMONS_MAP EQUS "\1"
REDEF CURRENT_WATER_WILDMONS_LABEL EQUS "._def_water_wildmons_\1"
{CURRENT_WATER_WILDMONS_LABEL}:
map_id \1
ENDM
end_water_wildmons: MACRO
MACRO end_water_wildmons
assert WATER_WILDDATA_LENGTH == @ - {CURRENT_WATER_WILDMONS_LABEL}, \
"def_water_wildmons {CURRENT_WATER_WILDMONS_MAP}: expected {d:WATER_WILDDATA_LENGTH} bytes"
ENDM

View File

@@ -1,16 +1,16 @@
; Syntactic sugar macros
lb: MACRO ; r, hi, lo
MACRO lb ; r, hi, lo
ld \1, ((\2) & $ff) << 8 | ((\3) & $ff)
ENDM
ln: MACRO ; r, hi, lo
MACRO ln ; r, hi, lo
ld \1, ((\2) & $f) << 4 | ((\3) & $f)
ENDM
; Design patterns
jumptable: MACRO
MACRO jumptable
ld a, [\2]
ld e, a
ld d, 0
@@ -23,7 +23,7 @@ jumptable: MACRO
jp hl
ENDM
maskbits: MACRO
MACRO maskbits
; masks just enough bits to cover values 0 to \1 - 1
; \2 is an optional shift amount
; e.g. "maskbits 26" becomes "and %00011111" (since 26 - 1 = %00011001)
@@ -35,20 +35,20 @@ maskbits: MACRO
; cp 26
; jr nc, .loop
assert 0 < (\1) && (\1) <= $100, "bitmask must be 8-bit"
x = 1
rept 8
if x + 1 < (\1)
x = (x << 1) | 1
endc
endr
if _NARG == 2
and x << (\2)
else
and x
endc
DEF x = 1
rept 8
if x + 1 < (\1)
DEF x = (x << 1) | 1
endc
endr
if _NARG == 2
and x << (\2)
else
and x
endc
ENDM
calc_sine_wave: MACRO
MACRO calc_sine_wave
; input: a = a signed 6-bit value
; output: a = d * sin(a * pi/32)
and %111111

View File

@@ -1,48 +1,48 @@
; 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
MACRO const_def
if _NARG >= 1
DEF const_value = \1
else
DEF const_value = 0
endc
if _NARG >= 2
DEF const_inc = \2
else
DEF const_inc = 1
endc
ENDM
const: MACRO
\1 EQU const_value
const_value += const_inc
MACRO const
DEF \1 EQU const_value
DEF const_value += const_inc
ENDM
shift_const: MACRO
\1 EQU 1 << const_value
const_value += const_inc
MACRO shift_const
DEF \1 EQU 1 << const_value
DEF const_value += const_inc
ENDM
const_skip: MACRO
if _NARG >= 1
const_value += const_inc * (\1)
else
const_value += const_inc
endc
MACRO const_skip
if _NARG >= 1
DEF const_value += const_inc * (\1)
else
DEF const_value += const_inc
endc
ENDM
const_next: MACRO
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
const_value = \1
endc
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
DEF const_value = \1
endc
ENDM
rb_skip: MACRO
if _NARG == 1
rsset _RS + \1
else
rsset _RS + 1
endc
MACRO rb_skip
if _NARG == 1
rsset _RS + \1
else
rsset _RS + 1
endc
ENDM

View File

@@ -1,56 +1,56 @@
hlcoord EQUS "coord hl,"
bccoord EQUS "coord bc,"
decoord EQUS "coord de,"
DEF hlcoord EQUS "coord hl,"
DEF bccoord EQUS "coord bc,"
DEF decoord EQUS "coord de,"
coord: MACRO
MACRO coord
; register, x, y[, origin]
if _NARG < 4
ld \1, (\3) * SCREEN_WIDTH + (\2) + wTilemap
ld \1, (\3) * SCREEN_WIDTH + (\2) + wTilemap
else
ld \1, (\3) * SCREEN_WIDTH + (\2) + \4
ld \1, (\3) * SCREEN_WIDTH + (\2) + \4
endc
ENDM
hlbgcoord EQUS "bgcoord hl,"
bcbgcoord EQUS "bgcoord bc,"
debgcoord EQUS "bgcoord de,"
DEF hlbgcoord EQUS "bgcoord hl,"
DEF bcbgcoord EQUS "bgcoord bc,"
DEF debgcoord EQUS "bgcoord de,"
bgcoord: MACRO
MACRO bgcoord
; register, x, y[, origin]
if _NARG < 4
ld \1, (\3) * BG_MAP_WIDTH + (\2) + vBGMap0
ld \1, (\3) * BG_MAP_WIDTH + (\2) + vBGMap0
else
ld \1, (\3) * BG_MAP_WIDTH + (\2) + \4
ld \1, (\3) * BG_MAP_WIDTH + (\2) + \4
endc
ENDM
dwcoord: MACRO
MACRO dwcoord
; x, y
rept _NARG / 2
dw (\2) * SCREEN_WIDTH + (\1) + wTilemap
shift 2
endr
rept _NARG / 2
dw (\2) * SCREEN_WIDTH + (\1) + wTilemap
shift 2
endr
ENDM
ldcoord_a: MACRO
MACRO ldcoord_a
; x, y[, origin]
if _NARG < 3
ld [(\2) * SCREEN_WIDTH + (\1) + wTilemap], a
ld [(\2) * SCREEN_WIDTH + (\1) + wTilemap], a
else
ld [(\2) * SCREEN_WIDTH + (\1) + \3], a
ld [(\2) * SCREEN_WIDTH + (\1) + \3], a
endc
ENDM
lda_coord: MACRO
MACRO lda_coord
; x, y[, origin]
if _NARG < 3
ld a, [(\2) * SCREEN_WIDTH + (\1) + wTilemap]
ld a, [(\2) * SCREEN_WIDTH + (\1) + wTilemap]
else
ld a, [(\2) * SCREEN_WIDTH + (\1) + \3]
ld a, [(\2) * SCREEN_WIDTH + (\1) + \3]
endc
ENDM
menu_coords: MACRO
MACRO menu_coords
; x1, y1, x2, y2
db \2, \1 ; start coords
db \4, \3 ; end coords

View File

@@ -20,84 +20,84 @@
; - 180 = 71 percent - 1 = 70 percent + 2
; - 200 = 79 percent - 1
; - 230 = 90 percent + 1
percent EQUS "* $ff / 100"
DEF percent EQUS "* $ff / 100"
; e.g. 1 out_of 2 == 50 percent + 1 == $80
out_of EQUS "* $100 /"
DEF out_of EQUS "* $100 /"
assert_power_of_2: MACRO
MACRO assert_power_of_2
assert (\1) & ((\1) - 1) == 0, "\1 must be a power of 2"
ENDM
; Constant data (db, dw, dl) macros
dwb: MACRO
MACRO dwb
dw \1
db \2
ENDM
dbw: MACRO
MACRO dbw
db \1
dw \2
ENDM
dn: MACRO ; nybbles
rept _NARG / 2
db ((\1) << 4) | (\2)
shift 2
endr
MACRO dn ; nybbles
rept _NARG / 2
db ((\1) << 4) | (\2)
shift 2
endr
ENDM
dc: MACRO ; "crumbs"
rept _NARG / 4
db ((\1) << 6) | ((\2) << 4) | ((\3) << 2) | (\4)
shift 4
endr
MACRO dc ; "crumbs"
rept _NARG / 4
db ((\1) << 6) | ((\2) << 4) | ((\3) << 2) | (\4)
shift 4
endr
ENDM
dt: MACRO ; three-byte (big-endian)
MACRO dt ; three-byte (big-endian)
db LOW((\1) >> 16), HIGH(\1), LOW(\1)
ENDM
dd: MACRO ; four-byte (big-endian)
MACRO dd ; four-byte (big-endian)
db HIGH((\1) >> 16), LOW((\1) >> 16), HIGH(\1), LOW(\1)
ENDM
bigdw: MACRO ; big-endian word
MACRO bigdw ; big-endian word
db HIGH(\1), LOW(\1)
ENDM
dba: MACRO ; dbw bank, address
rept _NARG
dbw BANK(\1), \1
shift
endr
MACRO dba ; dbw bank, address
rept _NARG
dbw BANK(\1), \1
shift
endr
ENDM
dab: MACRO ; dwb address, bank
rept _NARG
dwb \1, BANK(\1)
shift
endr
MACRO dab ; dwb address, bank
rept _NARG
dwb \1, BANK(\1)
shift
endr
ENDM
dba_pic: MACRO ; dbw bank, address
MACRO dba_pic ; dbw bank, address
db BANK(\1) - PICS_FIX
dw \1
ENDM
bcd: MACRO
rept _NARG
dn ((\1) % 100) / 10, (\1) % 10
shift
endr
MACRO bcd
rept _NARG
dn ((\1) % 100) / 10, (\1) % 10
shift
endr
ENDM
sine_table: MACRO
MACRO sine_table
; \1 samples of sin(x) from x=0 to x<32768 (pi radians)
x = 0
rept \1
dw (sin(x) + (sin(x) & $ff)) >> 8 ; round up
x += DIV(32768, \1) ; a circle has 65536 "degrees"
endr
DEF x = 0
rept \1
dw (sin(x) + (sin(x) & $ff)) >> 8 ; round up
DEF x += DIV(32768, \1) ; a circle has 65536 "degrees"
endr
ENDM

View File

@@ -1,58 +1,58 @@
assert_valid_rgb: MACRO
rept _NARG
assert 0 <= (\1) && (\1) <= 31, "RGB channel must be 0-31"
shift
endr
MACRO assert_valid_rgb
rept _NARG
assert 0 <= (\1) && (\1) <= 31, "RGB channel must be 0-31"
shift
endr
ENDM
RGB: MACRO
rept _NARG / 3
assert_valid_rgb \1, \2, \3
dw palred (\1) + palgreen (\2) + palblue (\3)
shift 3
endr
MACRO RGB
rept _NARG / 3
assert_valid_rgb \1, \2, \3
dw palred (\1) + palgreen (\2) + palblue (\3)
shift 3
endr
ENDM
palred EQUS "(1 << 0) *"
palgreen EQUS "(1 << 5) *"
palblue EQUS "(1 << 10) *"
DEF palred EQUS "(1 << 0) *"
DEF palgreen EQUS "(1 << 5) *"
DEF palblue EQUS "(1 << 10) *"
palettes EQUS "* PALETTE_SIZE"
palette EQUS "+ PALETTE_SIZE *"
color EQUS "+ PAL_COLOR_SIZE *"
DEF palettes EQUS "* PALETTE_SIZE"
DEF palette EQUS "+ PALETTE_SIZE *"
DEF color EQUS "+ PAL_COLOR_SIZE *"
tiles EQUS "* LEN_2BPP_TILE"
tile EQUS "+ LEN_2BPP_TILE *"
DEF tiles EQUS "* LEN_2BPP_TILE"
DEF tile EQUS "+ LEN_2BPP_TILE *"
; extracts the middle two colors from a 2bpp binary palette
; example usage:
; INCBIN "foo.gbcpal", middle_colors
middle_colors EQUS "PAL_COLOR_SIZE, PAL_COLOR_SIZE * 2"
DEF middle_colors EQUS "PAL_COLOR_SIZE, PAL_COLOR_SIZE * 2"
dbpixel: MACRO
if _NARG >= 4
; x tile, y tile, x pixel, y pixel
db \1 * TILE_WIDTH + \3, \2 * TILE_WIDTH + \4
else
; x tile, y tile
db \1 * TILE_WIDTH, \2 * TILE_WIDTH
endc
MACRO dbpixel
if _NARG >= 4
; x tile, y tile, x pixel, y pixel
db \1 * TILE_WIDTH + \3, \2 * TILE_WIDTH + \4
else
; x tile, y tile
db \1 * TILE_WIDTH, \2 * TILE_WIDTH
endc
ENDM
ldpixel: MACRO
if _NARG >= 5
; register, x tile, y tile, x pixel, y pixel
lb \1, \2 * TILE_WIDTH + \4, \3 * TILE_WIDTH + \5
else
; register, x tile, y tile
lb \1, \2 * TILE_WIDTH, \3 * TILE_WIDTH
endc
MACRO ldpixel
if _NARG >= 5
; register, x tile, y tile, x pixel, y pixel
lb \1, \2 * TILE_WIDTH + \4, \3 * TILE_WIDTH + \5
else
; register, x tile, y tile
lb \1, \2 * TILE_WIDTH, \3 * TILE_WIDTH
endc
ENDM
depixel EQUS "ldpixel de,"
bcpixel EQUS "ldpixel bc,"
DEF depixel EQUS "ldpixel de,"
DEF bcpixel EQUS "ldpixel bc,"
dbsprite: MACRO
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

View File

@@ -3,394 +3,394 @@
; Legacy support not in this file can be found by looking for the keyword: "LEGACY"
; macros/rst.asm
callba EQUS "farcall"
callab EQUS "callfar"
DEF callba EQUS "farcall"
DEF callab EQUS "callfar"
; macros/gfx.asm
dsprite: MACRO
MACRO dsprite
dbsprite \2, \4, \1, \3, \5, \6
ENDM
; macros/data.asm
dbbw: MACRO
MACRO dbbw
db \1, \2
dw \3
ENDM
dbww: MACRO
MACRO dbww
db \1
dw \2, \3
ENDM
dbwww: MACRO
MACRO dbwww
db \1
dw \2, \3, \4
ENDM
; macros/scripts/audio.asm
__ EQU 0
CC EQU 13
DEF __ EQU 0
DEF CC EQU 13
musicheader: MACRO
MACRO musicheader
channel_count \1
channel \2, \3
ENDM
sound: MACRO
MACRO sound
note \1, \2
db \3
dw \4
ENDM
noise: MACRO
MACRO noise
note \1, \2
db \3
db \4
ENDM
notetype: MACRO
if _NARG >= 2
note_type \1, \2 >> 4, \2 & $0f
else
note_type \1
endc
MACRO notetype
if _NARG >= 2
note_type \1, \2 >> 4, \2 & $0f
else
note_type \1
endc
ENDM
pitchoffset: MACRO
MACRO pitchoffset
transpose \1, \2 - 1
ENDM
dutycycle EQUS "duty_cycle"
DEF dutycycle EQUS "duty_cycle"
intensity: MACRO
MACRO intensity
volume_envelope \1 >> 4, \1 & $0f
ENDM
soundinput: MACRO
MACRO soundinput
pitch_sweep \1 >> 4, \1 & $0f
ENDM
unknownmusic0xde EQUS "sound_duty"
sound_duty: MACRO
DEF unknownmusic0xde EQUS "sound_duty"
MACRO sound_duty
db duty_cycle_pattern_cmd
if _NARG == 4
db \1 | (\2 << 2) | (\3 << 4) | (\4 << 6)
else
db \1
endc
if _NARG == 4
db \1 | (\2 << 2) | (\3 << 4) | (\4 << 6)
else
db \1
endc
ENDM
togglesfx EQUS "toggle_sfx"
DEF togglesfx EQUS "toggle_sfx"
slidepitchto: MACRO
MACRO slidepitchto
pitch_slide \1, (8 - \2), \3
ENDM
togglenoise EQUS "toggle_noise"
DEF togglenoise EQUS "toggle_noise"
panning: MACRO
MACRO panning
force_stereo_panning ((\1 >> 4) & 1), (\1 & 1)
ENDM
tone EQUS "pitch_offset"
restartchannel EQUS "restart_channel"
newsong EQUS "new_song"
sfxpriorityon EQUS "sfx_priority_on"
sfxpriorityoff EQUS "sfx_priority_off"
DEF tone EQUS "pitch_offset"
DEF restartchannel EQUS "restart_channel"
DEF newsong EQUS "new_song"
DEF sfxpriorityon EQUS "sfx_priority_on"
DEF sfxpriorityoff EQUS "sfx_priority_off"
stereopanning: MACRO
MACRO stereopanning
stereo_panning ((\1 >> 4) & 1), (\1 & 1)
ENDM
sfxtogglenoise EQUS "sfx_toggle_noise"
setcondition EQUS "set_condition"
jumpif EQUS "sound_jump_if"
jumpchannel EQUS "sound_jump"
loopchannel EQUS "sound_loop"
callchannel EQUS "sound_call"
endchannel EQUS "sound_ret"
DEF sfxtogglenoise EQUS "sfx_toggle_noise"
DEF setcondition EQUS "set_condition"
DEF jumpif EQUS "sound_jump_if"
DEF jumpchannel EQUS "sound_jump"
DEF loopchannel EQUS "sound_loop"
DEF callchannel EQUS "sound_call"
DEF endchannel EQUS "sound_ret"
; macros/scripts/events.asm
checkmorn EQUS "checktime MORN"
checkday EQUS "checktime DAY"
checknite EQUS "checktime NITE"
DEF checkmorn EQUS "checktime MORN"
DEF checkday EQUS "checktime DAY"
DEF checknite EQUS "checktime NITE"
jump EQUS "sjump"
farjump EQUS "farsjump"
priorityjump EQUS "sdefer"
prioritysjump EQUS "sdefer"
ptcall EQUS "memcall"
ptjump EQUS "memjump"
ptpriorityjump EQUS "stopandsjump"
ptcallasm EQUS "memcallasm"
DEF jump EQUS "sjump"
DEF farjump EQUS "farsjump"
DEF priorityjump EQUS "sdefer"
DEF prioritysjump EQUS "sdefer"
DEF ptcall EQUS "memcall"
DEF ptjump EQUS "memjump"
DEF ptpriorityjump EQUS "stopandsjump"
DEF ptcallasm EQUS "memcallasm"
if_equal EQUS "ifequal"
if_not_equal EQUS "ifnotequal"
if_greater_than EQUS "ifgreater"
if_less_than EQUS "ifless"
end_all EQUS "endall"
return EQUS "endcallback"
reloadandreturn EQUS "reloadend"
DEF if_equal EQUS "ifequal"
DEF if_not_equal EQUS "ifnotequal"
DEF if_greater_than EQUS "ifgreater"
DEF if_less_than EQUS "ifless"
DEF end_all EQUS "endall"
DEF return EQUS "endcallback"
DEF reloadandreturn EQUS "reloadend"
checkmaptriggers EQUS "checkmapscene"
domaptrigger EQUS "setmapscene"
checktriggers EQUS "checkscene"
dotrigger EQUS "setscene"
DEF checkmaptriggers EQUS "checkmapscene"
DEF domaptrigger EQUS "setmapscene"
DEF checktriggers EQUS "checkscene"
DEF dotrigger EQUS "setscene"
faceperson EQUS "faceobject"
moveperson EQUS "moveobject"
writepersonxy EQUS "writeobjectxy"
spriteface EQUS "turnobject"
objectface EQUS "turnobject"
applymovement2 EQUS "applymovementlasttalked"
DEF faceperson EQUS "faceobject"
DEF moveperson EQUS "moveobject"
DEF writepersonxy EQUS "writeobjectxy"
DEF spriteface EQUS "turnobject"
DEF objectface EQUS "turnobject"
DEF applymovement2 EQUS "applymovementlasttalked"
writebyte EQUS "setval"
addvar EQUS "addval"
copybytetovar EQUS "readmem"
copyvartobyte EQUS "writemem"
checkcode EQUS "readvar"
writevarcode EQUS "writevar"
writecode EQUS "loadvar"
DEF writebyte EQUS "setval"
DEF addvar EQUS "addval"
DEF copybytetovar EQUS "readmem"
DEF copyvartobyte EQUS "writemem"
DEF checkcode EQUS "readvar"
DEF writevarcode EQUS "writevar"
DEF writecode EQUS "loadvar"
MEM_BUFFER_0 EQUS "STRING_BUFFER_3"
MEM_BUFFER_1 EQUS "STRING_BUFFER_4"
MEM_BUFFER_2 EQUS "STRING_BUFFER_5"
DEF MEM_BUFFER_0 EQUS "STRING_BUFFER_3"
DEF MEM_BUFFER_1 EQUS "STRING_BUFFER_4"
DEF MEM_BUFFER_2 EQUS "STRING_BUFFER_5"
vartomem EQUS "getnum"
mapnametotext EQUS "getcurlandmarkname"
readcoins EQUS "getcoins"
DEF vartomem EQUS "getnum"
DEF mapnametotext EQUS "getcurlandmarkname"
DEF readcoins EQUS "getcoins"
pokenamemem: MACRO
MACRO pokenamemem
getmonname \2, \1
ENDM
itemtotext: MACRO
MACRO itemtotext
getitemname \2, \1
ENDM
landmarktotext: MACRO
MACRO landmarktotext
getlandmarkname \2, \1
ENDM
trainertotext: MACRO
MACRO trainertotext
gettrainername \3, \1, \2
ENDM
trainerclassname: MACRO
MACRO trainerclassname
gettrainerclassname \2, \1
ENDM
name: MACRO
MACRO name
getname \3, \1, \2
ENDM
stringtotext: MACRO
MACRO stringtotext
getstring \2, \1
ENDM
readmoney: MACRO
MACRO readmoney
getmoney \2, \1
ENDM
RAM2MEM EQUS "getnum"
loadfont EQUS "opentext"
loadmenudata EQUS "loadmenu"
loadmenuheader EQUS "loadmenu"
writebackup EQUS "closewindow"
interpretmenu EQUS "_2dmenu"
interpretmenu2 EQUS "verticalmenu"
buttonsound EQUS "promptbutton"
battlecheck EQUS "randomwildmon"
loadtrainerdata EQUS "loadtemptrainer"
loadpokedata EQUS "loadwildmon"
returnafterbattle EQUS "reloadmapafterbattle"
trainerstatus EQUS "trainerflagaction"
talkaftercancel EQUS "endifjustbattled"
talkaftercheck EQUS "checkjustbattled"
playrammusic EQUS "encountermusic"
reloadmapmusic EQUS "dontrestartmapmusic"
resetfuncs EQUS "endall"
storetext EQUS "battletowertext"
displaylocation EQUS "landmarktotext"
givepokeitem EQUS "givepokemail"
checkpokeitem EQUS "checkpokemail"
passtoengine EQUS "autoinput"
verbosegiveitem2 EQUS "verbosegiveitemvar"
loadbytec2cf EQUS "writeunusedbyte"
writeunusedbytebuffer EQUS "writeunusedbyte"
DEF RAM2MEM EQUS "getnum"
DEF loadfont EQUS "opentext"
DEF loadmenudata EQUS "loadmenu"
DEF loadmenuheader EQUS "loadmenu"
DEF writebackup EQUS "closewindow"
DEF interpretmenu EQUS "_2dmenu"
DEF interpretmenu2 EQUS "verticalmenu"
DEF buttonsound EQUS "promptbutton"
DEF battlecheck EQUS "randomwildmon"
DEF loadtrainerdata EQUS "loadtemptrainer"
DEF loadpokedata EQUS "loadwildmon"
DEF returnafterbattle EQUS "reloadmapafterbattle"
DEF trainerstatus EQUS "trainerflagaction"
DEF talkaftercancel EQUS "endifjustbattled"
DEF talkaftercheck EQUS "checkjustbattled"
DEF playrammusic EQUS "encountermusic"
DEF reloadmapmusic EQUS "dontrestartmapmusic"
DEF resetfuncs EQUS "endall"
DEF storetext EQUS "battletowertext"
DEF displaylocation EQUS "landmarktotext"
DEF givepokeitem EQUS "givepokemail"
DEF checkpokeitem EQUS "checkpokemail"
DEF passtoengine EQUS "autoinput"
DEF verbosegiveitem2 EQUS "verbosegiveitemvar"
DEF loadbytec2cf EQUS "writeunusedbyte"
DEF writeunusedbytebuffer EQUS "writeunusedbyte"
; macros/scripts/maps.asm
mapconst: MACRO
MACRO mapconst
map_const \1, \3, \2
ENDM
maptrigger EQUS "scene_script"
DEF maptrigger EQUS "scene_script"
warp_def: MACRO
MACRO warp_def
warp_event \2, \1, \4, \3
ENDM
xy_trigger: MACRO
MACRO xy_trigger
coord_event \3, \2, \1, \5
ENDM
signpost: MACRO
MACRO signpost
bg_event \2, \1, \3, \4
ENDM
person_event: MACRO
MACRO person_event
object_event \3, \2, \1, \4, \5, \6, \7, \8, \9, \<10>, \<11>, \<12>, \<13>
ENDM
PERSONTYPE_SCRIPT EQUS "OBJECTTYPE_SCRIPT"
PERSONTYPE_ITEMBALL EQUS "OBJECTTYPE_ITEMBALL"
PERSONTYPE_TRAINER EQUS "OBJECTTYPE_TRAINER"
DEF PERSONTYPE_SCRIPT EQUS "OBJECTTYPE_SCRIPT"
DEF PERSONTYPE_ITEMBALL EQUS "OBJECTTYPE_ITEMBALL"
DEF PERSONTYPE_TRAINER EQUS "OBJECTTYPE_TRAINER"
; macros/scripts/movement.asm
show_person EQUS "show_object"
hide_person EQUS "hide_object"
remove_person EQUS "remove_object"
DEF show_person EQUS "show_object"
DEF hide_person EQUS "hide_object"
DEF remove_person EQUS "remove_object"
turn_head_down EQUS "turn_head DOWN"
turn_head_up EQUS "turn_head UP"
turn_head_left EQUS "turn_head LEFT"
turn_head_right EQUS "turn_head RIGHT"
turn_step_down EQUS "turn_step DOWN"
turn_step_up EQUS "turn_step UP"
turn_step_left EQUS "turn_step LEFT"
turn_step_right EQUS "turn_step RIGHT"
slow_step_down EQUS "slow_step DOWN"
slow_step_up EQUS "slow_step UP"
slow_step_left EQUS "slow_step LEFT"
slow_step_right EQUS "slow_step RIGHT"
step_down EQUS "step DOWN"
step_up EQUS "step UP"
step_left EQUS "step LEFT"
step_right EQUS "step RIGHT"
big_step_down EQUS "big_step DOWN"
big_step_up EQUS "big_step UP"
big_step_left EQUS "big_step LEFT"
big_step_right EQUS "big_step RIGHT"
slow_slide_step_down EQUS "slow_slide_step DOWN"
slow_slide_step_up EQUS "slow_slide_step UP"
slow_slide_step_left EQUS "slow_slide_step LEFT"
slow_slide_step_right EQUS "slow_slide_step RIGHT"
slide_step_down EQUS "slide_step DOWN"
slide_step_up EQUS "slide_step UP"
slide_step_left EQUS "slide_step LEFT"
slide_step_right EQUS "slide_step RIGHT"
fast_slide_step_down EQUS "fast_slide_step DOWN"
fast_slide_step_up EQUS "fast_slide_step UP"
fast_slide_step_left EQUS "fast_slide_step LEFT"
fast_slide_step_right EQUS "fast_slide_step RIGHT"
turn_away_down EQUS "turn_away DOWN"
turn_away_up EQUS "turn_away UP"
turn_away_left EQUS "turn_away LEFT"
turn_away_right EQUS "turn_away RIGHT"
turn_in_down EQUS "turn_in DOWN"
turn_in_up EQUS "turn_in UP"
turn_in_left EQUS "turn_in LEFT"
turn_in_right EQUS "turn_in RIGHT"
turn_waterfall_down EQUS "turn_waterfall DOWN"
turn_waterfall_up EQUS "turn_waterfall UP"
turn_waterfall_left EQUS "turn_waterfall LEFT"
turn_waterfall_right EQUS "turn_waterfall RIGHT"
slow_jump_step_down EQUS "slow_jump_step DOWN"
slow_jump_step_up EQUS "slow_jump_step UP"
slow_jump_step_left EQUS "slow_jump_step LEFT"
slow_jump_step_right EQUS "slow_jump_step RIGHT"
jump_step_down EQUS "jump_step DOWN"
jump_step_up EQUS "jump_step UP"
jump_step_left EQUS "jump_step LEFT"
jump_step_right EQUS "jump_step RIGHT"
fast_jump_step_down EQUS "fast_jump_step DOWN"
fast_jump_step_up EQUS "fast_jump_step UP"
fast_jump_step_left EQUS "fast_jump_step LEFT"
fast_jump_step_right EQUS "fast_jump_step RIGHT"
DEF turn_head_down EQUS "turn_head DOWN"
DEF turn_head_up EQUS "turn_head UP"
DEF turn_head_left EQUS "turn_head LEFT"
DEF turn_head_right EQUS "turn_head RIGHT"
DEF turn_step_down EQUS "turn_step DOWN"
DEF turn_step_up EQUS "turn_step UP"
DEF turn_step_left EQUS "turn_step LEFT"
DEF turn_step_right EQUS "turn_step RIGHT"
DEF slow_step_down EQUS "slow_step DOWN"
DEF slow_step_up EQUS "slow_step UP"
DEF slow_step_left EQUS "slow_step LEFT"
DEF slow_step_right EQUS "slow_step RIGHT"
DEF step_down EQUS "step DOWN"
DEF step_up EQUS "step UP"
DEF step_left EQUS "step LEFT"
DEF step_right EQUS "step RIGHT"
DEF big_step_down EQUS "big_step DOWN"
DEF big_step_up EQUS "big_step UP"
DEF big_step_left EQUS "big_step LEFT"
DEF big_step_right EQUS "big_step RIGHT"
DEF slow_slide_step_down EQUS "slow_slide_step DOWN"
DEF slow_slide_step_up EQUS "slow_slide_step UP"
DEF slow_slide_step_left EQUS "slow_slide_step LEFT"
DEF slow_slide_step_right EQUS "slow_slide_step RIGHT"
DEF slide_step_down EQUS "slide_step DOWN"
DEF slide_step_up EQUS "slide_step UP"
DEF slide_step_left EQUS "slide_step LEFT"
DEF slide_step_right EQUS "slide_step RIGHT"
DEF fast_slide_step_down EQUS "fast_slide_step DOWN"
DEF fast_slide_step_up EQUS "fast_slide_step UP"
DEF fast_slide_step_left EQUS "fast_slide_step LEFT"
DEF fast_slide_step_right EQUS "fast_slide_step RIGHT"
DEF turn_away_down EQUS "turn_away DOWN"
DEF turn_away_up EQUS "turn_away UP"
DEF turn_away_left EQUS "turn_away LEFT"
DEF turn_away_right EQUS "turn_away RIGHT"
DEF turn_in_down EQUS "turn_in DOWN"
DEF turn_in_up EQUS "turn_in UP"
DEF turn_in_left EQUS "turn_in LEFT"
DEF turn_in_right EQUS "turn_in RIGHT"
DEF turn_waterfall_down EQUS "turn_waterfall DOWN"
DEF turn_waterfall_up EQUS "turn_waterfall UP"
DEF turn_waterfall_left EQUS "turn_waterfall LEFT"
DEF turn_waterfall_right EQUS "turn_waterfall RIGHT"
DEF slow_jump_step_down EQUS "slow_jump_step DOWN"
DEF slow_jump_step_up EQUS "slow_jump_step UP"
DEF slow_jump_step_left EQUS "slow_jump_step LEFT"
DEF slow_jump_step_right EQUS "slow_jump_step RIGHT"
DEF jump_step_down EQUS "jump_step DOWN"
DEF jump_step_up EQUS "jump_step UP"
DEF jump_step_left EQUS "jump_step LEFT"
DEF jump_step_right EQUS "jump_step RIGHT"
DEF fast_jump_step_down EQUS "fast_jump_step DOWN"
DEF fast_jump_step_up EQUS "fast_jump_step UP"
DEF fast_jump_step_left EQUS "fast_jump_step LEFT"
DEF fast_jump_step_right EQUS "fast_jump_step RIGHT"
step_sleep_1 EQUS "step_sleep 1"
step_sleep_2 EQUS "step_sleep 2"
step_sleep_3 EQUS "step_sleep 3"
step_sleep_4 EQUS "step_sleep 4"
step_sleep_5 EQUS "step_sleep 5"
step_sleep_6 EQUS "step_sleep 6"
step_sleep_7 EQUS "step_sleep 7"
step_sleep_8 EQUS "step_sleep 8"
DEF step_sleep_1 EQUS "step_sleep 1"
DEF step_sleep_2 EQUS "step_sleep 2"
DEF step_sleep_3 EQUS "step_sleep 3"
DEF step_sleep_4 EQUS "step_sleep 4"
DEF step_sleep_5 EQUS "step_sleep 5"
DEF step_sleep_6 EQUS "step_sleep 6"
DEF step_sleep_7 EQUS "step_sleep 7"
DEF step_sleep_8 EQUS "step_sleep 8"
; macros/scripts/text.asm
text_from_ram EQUS "text_ram"
start_asm EQUS "text_asm"
deciram EQUS "text_decimal"
interpret_data EQUS "text_pause"
limited_interpret_data EQUS "text_dots"
link_wait_button EQUS "text_waitbutton"
text_linkwaitbutton EQUS "text_waitbutton"
text_linkpromptbutton EQUS "text_waitbutton"
current_day EQUS "text_today"
text_jump EQUS "text_far"
DEF text_from_ram EQUS "text_ram"
DEF start_asm EQUS "text_asm"
DEF deciram EQUS "text_decimal"
DEF interpret_data EQUS "text_pause"
DEF limited_interpret_data EQUS "text_dots"
DEF link_wait_button EQUS "text_waitbutton"
DEF text_linkwaitbutton EQUS "text_waitbutton"
DEF text_linkpromptbutton EQUS "text_waitbutton"
DEF current_day EQUS "text_today"
DEF text_jump EQUS "text_far"
; macros/scripts/battle_anims.asm
anim_enemyfeetobj EQUS "anim_battlergfx_2row"
anim_playerheadobj EQUS "anim_battlergfx_1row"
anim_clearsprites EQUS "anim_keepsprites"
DEF anim_enemyfeetobj EQUS "anim_battlergfx_2row"
DEF anim_playerheadobj EQUS "anim_battlergfx_1row"
DEF anim_clearsprites EQUS "anim_keepsprites"
; engine/events/std_scripts.asm
pokecenternurse EQUS "PokecenterNurseScript"
difficultbookshelf EQUS "DifficultBookshelfScript"
picturebookshelf EQUS "PictureBookshelfScript"
magazinebookshelf EQUS "MagazineBookshelfScript"
teamrocketoath EQUS "TeamRocketOathScript"
incenseburner EQUS "IncenseBurnerScript"
merchandiseshelf EQUS "MerchandiseShelfScript"
townmap EQUS "TownMapScript"
window EQUS "WindowScript"
tv EQUS "TVScript"
homepage EQUS "HomepageScript"
radio1 EQUS "Radio1Script"
radio2 EQUS "Radio2Script"
trashcan EQUS "TrashCanScript"
strengthboulder EQUS "StrengthBoulderScript"
smashrock EQUS "SmashRockScript"
pokecentersign EQUS "PokecenterSignScript"
martsign EQUS "MartSignScript"
goldenrodrockets EQUS "GoldenrodRocketsScript"
radiotowerrockets EQUS "RadioTowerRocketsScript"
elevatorbutton EQUS "ElevatorButtonScript"
daytotext EQUS "DayToTextScript"
bugcontestresultswarp EQUS "BugContestResultsWarpScript"
bugcontestresults EQUS "BugContestResultsScript"
initializeevents EQUS "InitializeEventsScript"
asknumber1m EQUS "AskNumber1MScript"
asknumber2m EQUS "AskNumber2MScript"
registerednumberm EQUS "RegisteredNumberMScript"
numberacceptedm EQUS "NumberAcceptedMScript"
numberdeclinedm EQUS "NumberDeclinedMScript"
phonefullm EQUS "PhoneFullMScript"
rematchm EQUS "RematchMScript"
giftm EQUS "GiftMScript"
packfullm EQUS "PackFullMScript"
rematchgiftm EQUS "RematchGiftMScript"
asknumber1f EQUS "AskNumber1FScript"
asknumber2f EQUS "AskNumber2FScript"
registerednumberf EQUS "RegisteredNumberFScript"
numberacceptedf EQUS "NumberAcceptedFScript"
numberdeclinedf EQUS "NumberDeclinedFScript"
phonefullf EQUS "PhoneFullFScript"
rematchf EQUS "RematchFScript"
giftf EQUS "GiftFScript"
packfullf EQUS "PackFullFScript"
rematchgiftf EQUS "RematchGiftFScript"
gymstatue1 EQUS "GymStatue1Script"
gymstatue2 EQUS "GymStatue2Script"
receiveitem EQUS "ReceiveItemScript"
receivetogepiegg EQUS "ReceiveTogepiEggScript"
pcscript EQUS "PCScript"
gamecornercoinvendor EQUS "GameCornerCoinVendorScript"
happinesschecknpc EQUS "HappinessCheckScript"
DEF pokecenternurse EQUS "PokecenterNurseScript"
DEF difficultbookshelf EQUS "DifficultBookshelfScript"
DEF picturebookshelf EQUS "PictureBookshelfScript"
DEF magazinebookshelf EQUS "MagazineBookshelfScript"
DEF teamrocketoath EQUS "TeamRocketOathScript"
DEF incenseburner EQUS "IncenseBurnerScript"
DEF merchandiseshelf EQUS "MerchandiseShelfScript"
DEF townmap EQUS "TownMapScript"
DEF window EQUS "WindowScript"
DEF tv EQUS "TVScript"
DEF homepage EQUS "HomepageScript"
DEF radio1 EQUS "Radio1Script"
DEF radio2 EQUS "Radio2Script"
DEF trashcan EQUS "TrashCanScript"
DEF strengthboulder EQUS "StrengthBoulderScript"
DEF smashrock EQUS "SmashRockScript"
DEF pokecentersign EQUS "PokecenterSignScript"
DEF martsign EQUS "MartSignScript"
DEF goldenrodrockets EQUS "GoldenrodRocketsScript"
DEF radiotowerrockets EQUS "RadioTowerRocketsScript"
DEF elevatorbutton EQUS "ElevatorButtonScript"
DEF daytotext EQUS "DayToTextScript"
DEF bugcontestresultswarp EQUS "BugContestResultsWarpScript"
DEF bugcontestresults EQUS "BugContestResultsScript"
DEF initializeevents EQUS "InitializeEventsScript"
DEF asknumber1m EQUS "AskNumber1MScript"
DEF asknumber2m EQUS "AskNumber2MScript"
DEF registerednumberm EQUS "RegisteredNumberMScript"
DEF numberacceptedm EQUS "NumberAcceptedMScript"
DEF numberdeclinedm EQUS "NumberDeclinedMScript"
DEF phonefullm EQUS "PhoneFullMScript"
DEF rematchm EQUS "RematchMScript"
DEF giftm EQUS "GiftMScript"
DEF packfullm EQUS "PackFullMScript"
DEF rematchgiftm EQUS "RematchGiftMScript"
DEF asknumber1f EQUS "AskNumber1FScript"
DEF asknumber2f EQUS "AskNumber2FScript"
DEF registerednumberf EQUS "RegisteredNumberFScript"
DEF numberacceptedf EQUS "NumberAcceptedFScript"
DEF numberdeclinedf EQUS "NumberDeclinedFScript"
DEF phonefullf EQUS "PhoneFullFScript"
DEF rematchf EQUS "RematchFScript"
DEF giftf EQUS "GiftFScript"
DEF packfullf EQUS "PackFullFScript"
DEF rematchgiftf EQUS "RematchGiftFScript"
DEF gymstatue1 EQUS "GymStatue1Script"
DEF gymstatue2 EQUS "GymStatue2Script"
DEF receiveitem EQUS "ReceiveItemScript"
DEF receivetogepiegg EQUS "ReceiveTogepiEggScript"
DEF pcscript EQUS "PCScript"
DEF gamecornercoinvendor EQUS "GameCornerCoinVendorScript"
DEF happinesschecknpc EQUS "HappinessCheckScript"
; constants/sprite_constants.asm
SPRITE_BUENA EQUS "SPRITE_BEAUTY"
DEF SPRITE_BUENA EQUS "SPRITE_BEAUTY"

View File

@@ -1,15 +1,15 @@
lda_predef: MACRO
MACRO lda_predef
; Some functions load the predef id
; without immediately calling Predef.
ld a, (\1Predef - PredefPointers) / 3
ENDM
predef: MACRO
MACRO predef
lda_predef \1
call Predef
ENDM
predef_jump: MACRO
MACRO predef_jump
lda_predef \1
jp Predef
ENDM

View File

@@ -1,16 +1,16 @@
farcall: MACRO ; bank, address
MACRO farcall ; bank, address
ld a, BANK(\1)
ld hl, \1
rst FarCall
ENDM
callfar: MACRO ; address, bank
MACRO callfar ; address, bank
ld hl, \1
ld a, BANK(\1)
rst FarCall
ENDM
homecall: MACRO
MACRO homecall
ldh a, [hROMBank]
push af
ld a, BANK(\1)

View File

@@ -1,30 +1,30 @@
channel_count: MACRO
MACRO channel_count
assert 0 < (\1) && (\1) <= NUM_MUSIC_CHANS, \
"channel_count must be 1-{d:NUM_MUSIC_CHANS}"
_num_channels = \1 - 1
DEF _num_channels = \1 - 1
ENDM
channel: MACRO
MACRO channel
assert 0 < (\1) && (\1) <= NUM_CHANNELS, \
"channel id must be 1-{d:NUM_CHANNELS}"
dn (_num_channels << 2), \1 - 1 ; channel id
dw \2 ; address
_num_channels = 0
DEF _num_channels = 0
ENDM
note: MACRO
MACRO note
dn (\1), (\2) - 1 ; pitch, length
ENDM
drum_note: MACRO
MACRO drum_note
note \1, \2 ; drum instrument, length
ENDM
rest: MACRO
MACRO rest
note 0, \1 ; length
ENDM
square_note: MACRO
MACRO square_note
db \1 ; length
if \3 < 0
dn \2, %1000 | (\3 * -1) ; volume envelope
@@ -34,7 +34,7 @@ square_note: MACRO
dw \4 ; frequency
ENDM
noise_note: MACRO
MACRO noise_note
db \1 ; length
if \3 < 0
dn \2, %1000 | (\3 * -1) ; volume envelope
@@ -46,10 +46,10 @@ ENDM
; MusicCommands indexes (see audio/engine.asm)
const_def $d0
FIRST_MUSIC_CMD EQU const_value
DEF FIRST_MUSIC_CMD EQU const_value
const octave_cmd ; $d0
octave: MACRO
MACRO octave
assert 1 <= (\1) && (\1) <= 8, "octave must be 1-8"
db octave_cmd + 8 - (\1) ; octave
ENDM
@@ -57,7 +57,7 @@ ENDM
const_skip 7 ; all octave values
const note_type_cmd ; $d8
note_type: MACRO
MACRO note_type
db note_type_cmd
db \1 ; note length
if _NARG >= 2
@@ -70,30 +70,30 @@ note_type: MACRO
ENDM
; only valid on the noise channel
drum_speed: MACRO
MACRO drum_speed
note_type \1 ; note length
ENDM
const transpose_cmd ; $d9
transpose: MACRO
MACRO transpose
db transpose_cmd
dn \1, \2 ; num octaves, num pitches
ENDM
const tempo_cmd ; $da
tempo: MACRO
MACRO tempo
db tempo_cmd
bigdw \1 ; tempo
ENDM
const duty_cycle_cmd ; $db
duty_cycle: MACRO
MACRO duty_cycle
db duty_cycle_cmd
db \1 ; duty cycle
ENDM
const volume_envelope_cmd ; $dc
volume_envelope: MACRO
MACRO volume_envelope
db volume_envelope_cmd
if \2 < 0
dn \1, %1000 | (\2 * -1) ; volume envelope
@@ -103,7 +103,7 @@ volume_envelope: MACRO
ENDM
const pitch_sweep_cmd ; $dd
pitch_sweep: MACRO
MACRO pitch_sweep
db pitch_sweep_cmd
if \2 < 0
dn \1, %1000 | (\2 * -1) ; pitch sweep
@@ -113,25 +113,25 @@ pitch_sweep: MACRO
ENDM
const duty_cycle_pattern_cmd ; $de
duty_cycle_pattern: MACRO
MACRO duty_cycle_pattern
db duty_cycle_pattern_cmd
db (\1 << 6) | (\2 << 4) | (\3 << 2) | (\4 << 0) ; duty cycle pattern
ENDM
const toggle_sfx_cmd ; $df
toggle_sfx: MACRO
MACRO toggle_sfx
db toggle_sfx_cmd
ENDM
const pitch_slide_cmd ; $e0
pitch_slide: MACRO
MACRO pitch_slide
db pitch_slide_cmd
db \1 - 1 ; duration
dn 8 - \2, \3 % 12 ; octave, pitch
ENDM
const vibrato_cmd ; $e1
vibrato: MACRO
MACRO vibrato
db vibrato_cmd
db \1 ; delay
if _NARG > 2
@@ -142,13 +142,13 @@ vibrato: MACRO
ENDM
const unknownmusic0xe2_cmd ; $e2
unknownmusic0xe2: MACRO
MACRO unknownmusic0xe2
db unknownmusic0xe2_cmd
db \1 ; unknown
ENDM
const toggle_noise_cmd ; $e3
toggle_noise: MACRO
MACRO toggle_noise
db toggle_noise_cmd
if _NARG > 0
db \1 ; drum kit
@@ -156,13 +156,13 @@ toggle_noise: MACRO
ENDM
const force_stereo_panning_cmd ; $e4
force_stereo_panning: MACRO
MACRO force_stereo_panning
db force_stereo_panning_cmd
dn %1111 * (1 && \1), %1111 * (1 && \2) ; left enable, right enable
ENDM
const volume_cmd ; $e5
volume: MACRO
MACRO volume
db volume_cmd
if _NARG > 1
dn \1, \2 ; left volume, right volume
@@ -172,65 +172,65 @@ volume: MACRO
ENDM
const pitch_offset_cmd ; $e6
pitch_offset: MACRO
MACRO pitch_offset
db pitch_offset_cmd
bigdw \1 ; pitch offset
ENDM
const unknownmusic0xe7_cmd ; $e7
unknownmusic0xe7: MACRO
MACRO unknownmusic0xe7
db unknownmusic0xe7_cmd
db \1 ; unknown
ENDM
const unknownmusic0xe8_cmd ; $e8
unknownmusic0xe8: MACRO
MACRO unknownmusic0xe8
db unknownmusic0xe8_cmd
db \1 ; unknown
ENDM
const tempo_relative_cmd ; $e9
tempo_relative: MACRO
MACRO tempo_relative
db tempo_relative_cmd
bigdw \1 ; tempo adjustment
ENDM
const restart_channel_cmd ; $ea
restart_channel: MACRO
MACRO restart_channel
db restart_channel_cmd
dw \1 ; address
ENDM
const new_song_cmd ; $eb
new_song: MACRO
MACRO new_song
db new_song_cmd
bigdw \1 ; id
ENDM
const sfx_priority_on_cmd ; $ec
sfx_priority_on: MACRO
MACRO sfx_priority_on
db sfx_priority_on_cmd
ENDM
const sfx_priority_off_cmd ; $ed
sfx_priority_off: MACRO
MACRO sfx_priority_off
db sfx_priority_off_cmd
ENDM
const unknownmusic0xee_cmd ; $ee
unknownmusic0xee: MACRO
MACRO unknownmusic0xee
db unknownmusic0xee_cmd
dw \1 ; address
ENDM
const stereo_panning_cmd ; $ef
stereo_panning: MACRO
MACRO stereo_panning
db stereo_panning_cmd
dn %1111 * (1 && \1), %1111 * (1 && \2) ; left enable, right enable
ENDM
const sfx_toggle_noise_cmd ; $f0
sfx_toggle_noise: MACRO
MACRO sfx_toggle_noise
db sfx_toggle_noise_cmd
if _NARG > 0
db \1 ; drum kit
@@ -238,83 +238,83 @@ sfx_toggle_noise: MACRO
ENDM
const music0xf1_cmd ; $f1
music0xf1: MACRO
MACRO music0xf1
db music0xf1_cmd
ENDM
const music0xf2_cmd ; $f2
music0xf2: MACRO
MACRO music0xf2
db music0xf2_cmd
ENDM
const music0xf3_cmd ; $f3
music0xf3: MACRO
MACRO music0xf3
db music0xf3_cmd
ENDM
const music0xf4_cmd ; $f4
music0xf4: MACRO
MACRO music0xf4
db music0xf4_cmd
ENDM
const music0xf5_cmd ; $f5
music0xf5: MACRO
MACRO music0xf5
db music0xf5_cmd
ENDM
const music0xf6_cmd ; $f6
music0xf6: MACRO
MACRO music0xf6
db music0xf6_cmd
ENDM
const music0xf7_cmd ; $f7
music0xf7: MACRO
MACRO music0xf7
db music0xf7_cmd
ENDM
const music0xf8_cmd ; $f8
music0xf8: MACRO
MACRO music0xf8
db music0xf8_cmd
ENDM
const unknownmusic0xf9_cmd ; $f9
unknownmusic0xf9: MACRO
MACRO unknownmusic0xf9
db unknownmusic0xf9_cmd
ENDM
const set_condition_cmd ; $fa
set_condition: MACRO
MACRO set_condition
db set_condition_cmd
db \1 ; condition
ENDM
const sound_jump_if_cmd ; $fb
sound_jump_if: MACRO
MACRO sound_jump_if
db sound_jump_if_cmd
db \1 ; condition
dw \2 ; address
ENDM
const sound_jump_cmd ; $fc
sound_jump: MACRO
MACRO sound_jump
db sound_jump_cmd
dw \1 ; address
ENDM
const sound_loop_cmd ; $fd
sound_loop: MACRO
MACRO sound_loop
db sound_loop_cmd
db \1 ; count
dw \2 ; address
ENDM
const sound_call_cmd ; $fe
sound_call: MACRO
MACRO sound_call
db sound_call_cmd
dw \1 ; address
ENDM
const sound_ret_cmd ; $ff
sound_ret: MACRO
MACRO sound_ret
db sound_ret_cmd
ENDM

View File

@@ -1,44 +1,44 @@
; BattleAnimCommands indexes (see engine/battle_anims/anim_commands.asm)
const_def $d0
FIRST_BATTLE_ANIM_CMD EQU const_value
DEF FIRST_BATTLE_ANIM_CMD EQU const_value
anim_wait: MACRO
MACRO anim_wait
assert (\1) < FIRST_BATTLE_ANIM_CMD, "anim_wait argument must be less than {FIRST_BATTLE_ANIM_CMD}"
db \1
ENDM
const anim_obj_command ; $d0
anim_obj: MACRO
MACRO anim_obj
db anim_obj_command
if _NARG <= 4
db \1 ; object
db \2 ; x
db \3 ; y
db \4 ; param
else
; LEGACY: Support the tile+offset format
db \1 ; object
db (\2) * 8 + (\3) ; x_tile, x
db (\4) * 8 + (\5) ; y_tile, y
db \6 ; param
endc
if _NARG <= 4
db \1 ; object
db \2 ; x
db \3 ; y
db \4 ; param
else
; LEGACY: Support the tile+offset format
db \1 ; object
db (\2) * 8 + (\3) ; x_tile, x
db (\4) * 8 + (\5) ; y_tile, y
db \6 ; param
endc
ENDM
const anim_1gfx_command ; $d1
anim_1gfx: MACRO
MACRO anim_1gfx
db anim_1gfx_command
db \1 ; gfx1
ENDM
const anim_2gfx_command ; $d2
anim_2gfx: MACRO
MACRO anim_2gfx
db anim_2gfx_command
db \1 ; gfx1
db \2 ; gfx2
ENDM
const anim_3gfx_command ; $d3
anim_3gfx: MACRO
MACRO anim_3gfx
db anim_3gfx_command
db \1 ; gfx1
db \2 ; gfx2
@@ -46,7 +46,7 @@ anim_3gfx: MACRO
ENDM
const anim_4gfx_command ; $d4
anim_4gfx: MACRO
MACRO anim_4gfx
db anim_4gfx_command
db \1 ; gfx1
db \2 ; gfx2
@@ -55,7 +55,7 @@ anim_4gfx: MACRO
ENDM
const anim_5gfx_command ; $d5
anim_5gfx: MACRO
MACRO anim_5gfx
db anim_5gfx_command
db \1 ; gfx1
db \2 ; gfx2
@@ -65,147 +65,147 @@ anim_5gfx: MACRO
ENDM
const anim_incobj_command ; $d6
anim_incobj: MACRO
MACRO anim_incobj
db anim_incobj_command
db \1 ; object_id
ENDM
const anim_setobj_command ; $d7
anim_setobj: MACRO
MACRO anim_setobj
db anim_setobj_command
db \1 ; object_id
db \2 ; value
ENDM
const anim_incbgeffect_command ; $d8
anim_incbgeffect: MACRO
MACRO anim_incbgeffect
db anim_incbgeffect_command
db \1 ; effect
ENDM
const anim_battlergfx_2row_command ; $d9
anim_battlergfx_2row: MACRO
MACRO anim_battlergfx_2row
db anim_battlergfx_2row_command
ENDM
const anim_battlergfx_1row_command ; $da
anim_battlergfx_1row: MACRO
MACRO anim_battlergfx_1row
db anim_battlergfx_1row_command
ENDM
const anim_checkpokeball_command ; $db
anim_checkpokeball: MACRO
MACRO anim_checkpokeball
db anim_checkpokeball_command
ENDM
const anim_transform_command ; $dc
anim_transform: MACRO
MACRO anim_transform
db anim_transform_command
ENDM
const anim_raisesub_command ; $dd
anim_raisesub: MACRO
MACRO anim_raisesub
db anim_raisesub_command
ENDM
const anim_dropsub_command ; $de
anim_dropsub: MACRO
MACRO anim_dropsub
db anim_dropsub_command
ENDM
const anim_resetobp0_command ; $df
anim_resetobp0: MACRO
MACRO anim_resetobp0
db anim_resetobp0_command
ENDM
const anim_sound_command ; $e0
anim_sound: MACRO
MACRO anim_sound
db anim_sound_command
db (\1 << 2) | \2 ; duration, tracks
db \3 ; sound_id
ENDM
const anim_cry_command ; $e1
anim_cry: MACRO
MACRO anim_cry
db anim_cry_command
db \1 ; pitch
ENDM
const anim_minimizeopp_command ; $e2
anim_minimizeopp: MACRO
MACRO anim_minimizeopp
db anim_minimizeopp_command
ENDM
const anim_oamon_command ; $e3
anim_oamon: MACRO
MACRO anim_oamon
db anim_oamon_command
ENDM
const anim_oamoff_command ; $e4
anim_oamoff: MACRO
MACRO anim_oamoff
db anim_oamoff_command
ENDM
const anim_clearobjs_command ; $e5
anim_clearobjs: MACRO
MACRO anim_clearobjs
db anim_clearobjs_command
ENDM
const anim_beatup_command ; $e6
anim_beatup: MACRO
MACRO anim_beatup
db anim_beatup_command
ENDM
const anim_0xe7_command ; $e7
anim_0xe7: MACRO
MACRO anim_0xe7
db anim_0xe7_command
ENDM
const anim_updateactorpic_command ; $e8
anim_updateactorpic: MACRO
MACRO anim_updateactorpic
db anim_updateactorpic_command
ENDM
const anim_minimize_command ; $e9
anim_minimize: MACRO
MACRO anim_minimize
db anim_minimize_command
ENDM
const anim_0xea_command ; $ea
anim_0xea: MACRO
MACRO anim_0xea
db anim_0xea_command
ENDM
const anim_0xeb_command ; $eb
anim_0xeb: MACRO
MACRO anim_0xeb
db anim_0xeb_command
ENDM
const anim_0xec_command ; $ec
anim_0xec: MACRO
MACRO anim_0xec
db anim_0xec_command
ENDM
const anim_0xed_command ; $ed
anim_0xed: MACRO
MACRO anim_0xed
db anim_0xed_command
ENDM
const anim_if_param_and_command ; $ee
anim_if_param_and: MACRO
MACRO anim_if_param_and
db anim_if_param_and_command
db \1 ; value
dw \2 ; address
ENDM
const anim_jumpuntil_command ; $ef
anim_jumpuntil: MACRO
MACRO anim_jumpuntil
db anim_jumpuntil_command
dw \1 ; address
ENDM
const anim_bgeffect_command ; $f0
anim_bgeffect: MACRO
MACRO anim_bgeffect
db anim_bgeffect_command
db \1 ; effect
db \2 ; jumptable index
@@ -214,88 +214,88 @@ anim_bgeffect: MACRO
ENDM
const anim_bgp_command ; $f1
anim_bgp: MACRO
MACRO anim_bgp
db anim_bgp_command
db \1 ; colors
ENDM
const anim_obp0_command ; $f2
anim_obp0: MACRO
MACRO anim_obp0
db anim_obp0_command
db \1 ; colors
ENDM
const anim_obp1_command ; $f3
anim_obp1: MACRO
MACRO anim_obp1
db anim_obp1_command
db \1 ; colors
ENDM
const anim_keepsprites_command ; $f4
anim_keepsprites: MACRO
MACRO anim_keepsprites
db anim_keepsprites_command
ENDM
const anim_0xf5_command ; $f5
anim_0xf5: MACRO
MACRO anim_0xf5
db anim_0xf5_command
ENDM
const anim_0xf6_command ; $f6
anim_0xf6: MACRO
MACRO anim_0xf6
db anim_0xf6_command
ENDM
const anim_0xf7_command ; $f7
anim_0xf7: MACRO
MACRO anim_0xf7
db anim_0xf7_command
ENDM
const anim_if_param_equal_command ; $f8
anim_if_param_equal: MACRO
MACRO anim_if_param_equal
db anim_if_param_equal_command
db \1 ; value
dw \2 ; address
ENDM
const anim_setvar_command ; $f9
anim_setvar: MACRO
MACRO anim_setvar
db anim_setvar_command
db \1 ; value
ENDM
const anim_incvar_command ; $fa
anim_incvar: MACRO
MACRO anim_incvar
db anim_incvar_command
ENDM
const anim_if_var_equal_command ; $fb
anim_if_var_equal: MACRO
MACRO anim_if_var_equal
db anim_if_var_equal_command
db \1 ; value
dw \2 ; address
ENDM
const anim_jump_command ; $fc
anim_jump: MACRO
MACRO anim_jump
db anim_jump_command
dw \1 ; address
ENDM
const anim_loop_command ; $fd
anim_loop: MACRO
MACRO anim_loop
db anim_loop_command
db \1 ; count
dw \2 ; address
ENDM
const anim_call_command ; $fe
anim_call: MACRO
MACRO anim_call
db anim_call_command
dw \1 ; address
ENDM
const anim_ret_command ; $ff
anim_ret: MACRO
MACRO anim_ret
db anim_ret_command
ENDM

View File

@@ -1,6 +1,6 @@
command: MACRO
MACRO command
const \1_command
\1 EQUS "db \1_command"
DEF \1 EQUS "db \1_command"
ENDM
; BattleCommandPointers indexes (see data/battle/effect_command_pointers.asm)
@@ -180,7 +180,7 @@ ENDM
command supereffectivelooptext ; ad
command startloop ; ae
command curl ; af
NUM_EFFECT_COMMANDS EQU const_value - 1
DEF NUM_EFFECT_COMMANDS EQU const_value - 1
const_def -1, -1
command endmove ; ff

File diff suppressed because it is too large Load Diff

View File

@@ -1,37 +1,37 @@
; pic + oam animations
frame: MACRO
MACRO frame
db \1
x = \2
if _NARG > 2
rept _NARG - 2
x |= 1 << (\3 + 1)
shift
endr
endc
DEF x = \2
if _NARG > 2
rept _NARG - 2
DEF x |= 1 << (\3 + 1)
shift
endr
endc
db x
ENDM
const_def -1, -1
const endanim_command ; $ff
endanim: MACRO
MACRO endanim
db endanim_command
ENDM
const dorestart_command ; $fe
dorestart: MACRO
MACRO dorestart
db dorestart_command
ENDM
const dowait_command ; $fd
dowait: MACRO
MACRO dowait
db dowait_command
db \1 ; frames
ENDM
const delanim_command ; $fc
delanim: MACRO
MACRO delanim
; Removes the object from the screen, as opposed to `endanim` which just stops all motion
db delanim_command
ENDM
@@ -41,13 +41,13 @@ ENDM
const_def -2, -1
const setrepeat_command ; $fe
setrepeat: MACRO
MACRO setrepeat
db setrepeat_command
db \1 ; amount of times to repeat
ENDM
const dorepeat_command ; $fd
dorepeat: MACRO
MACRO dorepeat
db dorepeat_command
db \1 ; command offset to jump to
ENDM

View File

@@ -1,61 +1,61 @@
map_id: MACRO
MACRO map_id
;\1: map id
assert DEF(GROUP_\1) && DEF(MAP_\1), \
"Missing 'map_const \1' in constants/map_constants.asm"
db GROUP_\1, MAP_\1
ENDM
object_const_def EQUS "const_def 2"
DEF object_const_def EQUS "const_def 2"
def_scene_scripts: MACRO
REDEF _NUM_SCENE_SCRIPTS EQUS "_NUM_SCENE_SCRIPTS_\@"
MACRO def_scene_scripts
REDEF _NUM_SCENE_SCRIPTS EQUS "_NUM_SCENE_SCRIPTS_\@"
db {_NUM_SCENE_SCRIPTS}
{_NUM_SCENE_SCRIPTS} = 0
DEF {_NUM_SCENE_SCRIPTS} = 0
ENDM
scene_script: MACRO
MACRO scene_script
;\1: script pointer
dw \1
dw 0 ; filler
{_NUM_SCENE_SCRIPTS} += 1
DEF {_NUM_SCENE_SCRIPTS} += 1
ENDM
def_callbacks: MACRO
REDEF _NUM_CALLBACKS EQUS "_NUM_CALLBACKS_\@"
MACRO def_callbacks
REDEF _NUM_CALLBACKS EQUS "_NUM_CALLBACKS_\@"
db {_NUM_CALLBACKS}
{_NUM_CALLBACKS} = 0
DEF {_NUM_CALLBACKS} = 0
ENDM
callback: MACRO
MACRO callback
;\1: type: a MAPCALLBACK_* constant
;\2: script pointer
dbw \1, \2
{_NUM_CALLBACKS} += 1
DEF {_NUM_CALLBACKS} += 1
ENDM
def_warp_events: MACRO
REDEF _NUM_WARP_EVENTS EQUS "_NUM_WARP_EVENTS_\@"
MACRO def_warp_events
REDEF _NUM_WARP_EVENTS EQUS "_NUM_WARP_EVENTS_\@"
db {_NUM_WARP_EVENTS}
{_NUM_WARP_EVENTS} = 0
DEF {_NUM_WARP_EVENTS} = 0
ENDM
warp_event: MACRO
MACRO warp_event
;\1: x: left to right, starts at 0
;\2: y: top to bottom, starts at 0
;\3: map id: from constants/map_constants.asm
;\4: warp destination: starts at 1
db \2, \1, \4
map_id \3
{_NUM_WARP_EVENTS} += 1
DEF {_NUM_WARP_EVENTS} += 1
ENDM
def_coord_events: MACRO
REDEF _NUM_COORD_EVENTS EQUS "_NUM_COORD_EVENTS_\@"
MACRO def_coord_events
REDEF _NUM_COORD_EVENTS EQUS "_NUM_COORD_EVENTS_\@"
db {_NUM_COORD_EVENTS}
{_NUM_COORD_EVENTS} = 0
DEF {_NUM_COORD_EVENTS} = 0
ENDM
coord_event: MACRO
MACRO coord_event
;\1: x: left to right, starts at 0
;\2: y: top to bottom, starts at 0
;\3: scene id: a SCENE_* constant; controlled by setscene/setmapscene
@@ -64,32 +64,32 @@ coord_event: MACRO
db 0 ; filler
dw \4
dw 0 ; filler
{_NUM_COORD_EVENTS} += 1
DEF {_NUM_COORD_EVENTS} += 1
ENDM
def_bg_events: MACRO
REDEF _NUM_BG_EVENTS EQUS "_NUM_BG_EVENTS_\@"
MACRO def_bg_events
REDEF _NUM_BG_EVENTS EQUS "_NUM_BG_EVENTS_\@"
db {_NUM_BG_EVENTS}
{_NUM_BG_EVENTS} = 0
DEF {_NUM_BG_EVENTS} = 0
ENDM
bg_event: MACRO
MACRO bg_event
;\1: x: left to right, starts at 0
;\2: y: top to bottom, starts at 0
;\3: function: a BGEVENT_* constant
;\4: script pointer
db \2, \1, \3
dw \4
{_NUM_BG_EVENTS} += 1
DEF {_NUM_BG_EVENTS} += 1
ENDM
def_object_events: MACRO
REDEF _NUM_OBJECT_EVENTS EQUS "_NUM_OBJECT_EVENTS_\@"
MACRO def_object_events
REDEF _NUM_OBJECT_EVENTS EQUS "_NUM_OBJECT_EVENTS_\@"
db {_NUM_OBJECT_EVENTS}
{_NUM_OBJECT_EVENTS} = 0
DEF {_NUM_OBJECT_EVENTS} = 0
ENDM
object_event: MACRO
MACRO object_event
;\1: x: left to right, starts at 0
;\2: y: top to bottom, starts at 0
;\3: sprite: a SPRITE_* constant
@@ -112,13 +112,13 @@ object_event: MACRO
dn \9, \<10>
db \<11>
dw \<12>, \<13>
; the dummy PlayerObjectTemplate object_event has no def_object_events
if DEF(_NUM_OBJECT_EVENTS)
{_NUM_OBJECT_EVENTS} += 1
endc
; the dummy PlayerObjectTemplate object_event has no def_object_events
if DEF(_NUM_OBJECT_EVENTS)
DEF {_NUM_OBJECT_EVENTS} += 1
endc
ENDM
trainer: MACRO
MACRO trainer
;\1: trainer group
;\2: trainer id
;\3: flag: an EVENT_BEAT_* constant
@@ -131,23 +131,23 @@ trainer: MACRO
dw \4, \5, \6, \7
ENDM
itemball: MACRO
MACRO itemball
;\1: item: from constants/item_constants.asm
;\2: quantity: default 1
if _NARG == 1
itemball \1, 1
else
db \1, \2
endc
if _NARG == 1
itemball \1, 1
else
db \1, \2
endc
ENDM
hiddenitem: MACRO
MACRO hiddenitem
;\1: item: from constants/item_constants.asm
;\2: flag: an EVENT_* constant
dwb \2, \1
ENDM
elevfloor: MACRO
MACRO elevfloor
;\1: floor: a FLOOR_* constant
;\2: warp destination: starts at 1
;\3: map id
@@ -155,20 +155,20 @@ elevfloor: MACRO
map_id \3
ENDM
conditional_event: MACRO
MACRO conditional_event
;\1: flag: an EVENT_* constant
;\2: script pointer
dw \1, \2
ENDM
cmdqueue: MACRO
MACRO cmdqueue
;\1: type: a CMDQUEUE_* constant
;\2: data pointer
dbw \1, \2
dw 0 ; filler
ENDM
stonetable: MACRO
MACRO stonetable
;\1: warp id
;\2: object_event id
;\3: script pointer

View File

@@ -4,219 +4,219 @@
; Directional movements
const movement_turn_head ; $00
turn_head: MACRO
MACRO turn_head
db movement_turn_head | \1
ENDM
const movement_turn_step ; $04
turn_step: MACRO
MACRO turn_step
db movement_turn_step | \1
ENDM
const movement_slow_step ; $08
slow_step: MACRO
MACRO slow_step
db movement_slow_step | \1
ENDM
const movement_step ; $0c
step: MACRO
MACRO step
db movement_step | \1
ENDM
const movement_big_step ; $10
big_step: MACRO
MACRO big_step
db movement_big_step | \1
ENDM
const movement_slow_slide_step ; $14
slow_slide_step: MACRO
MACRO slow_slide_step
db movement_slow_slide_step | \1
ENDM
const movement_slide_step ; $18
slide_step: MACRO
MACRO slide_step
db movement_slide_step | \1
ENDM
const movement_fast_slide_step ; $1c
fast_slide_step: MACRO
MACRO fast_slide_step
db movement_fast_slide_step | \1
ENDM
const movement_turn_away ; $20
turn_away: MACRO
MACRO turn_away
db movement_turn_away | \1
ENDM
const movement_turn_in ; $24
turn_in: MACRO
MACRO turn_in
db movement_turn_in | \1
ENDM
const movement_turn_waterfall ; $28
turn_waterfall: MACRO
MACRO turn_waterfall
db movement_turn_waterfall | \1
ENDM
const movement_slow_jump_step ; $2c
slow_jump_step: MACRO
MACRO slow_jump_step
db movement_slow_jump_step | \1
ENDM
const movement_jump_step ; $30
jump_step: MACRO
MACRO jump_step
db movement_jump_step | \1
ENDM
const movement_fast_jump_step ; $34
fast_jump_step: MACRO
MACRO fast_jump_step
db movement_fast_jump_step | \1
ENDM
const_inc = 1
DEF const_inc = 1
; Control
const movement_remove_sliding ; $38
remove_sliding: MACRO
MACRO remove_sliding
db movement_remove_sliding
ENDM
const movement_set_sliding ; $39
set_sliding: MACRO
MACRO set_sliding
db movement_set_sliding
ENDM
const movement_remove_fixed_facing ; $3a
remove_fixed_facing: MACRO
MACRO remove_fixed_facing
db movement_remove_fixed_facing
ENDM
const movement_fix_facing ; $3b
fix_facing: MACRO
MACRO fix_facing
db movement_fix_facing
ENDM
const movement_show_object ; $3c
show_object: MACRO
MACRO show_object
db movement_show_object
ENDM
const movement_hide_object ; $3d
hide_object: MACRO
MACRO hide_object
db movement_hide_object
ENDM
; Sleep
const movement_step_sleep ; $3e
step_sleep: MACRO
if \1 <= 8
db movement_step_sleep + \1 - 1
else
db movement_step_sleep + 8, \1
endc
MACRO step_sleep
if \1 <= 8
db movement_step_sleep + \1 - 1
else
db movement_step_sleep + 8, \1
endc
ENDM
const_skip 8 ; all step_sleep values
const movement_step_end ; $47
step_end: MACRO
MACRO step_end
db movement_step_end
ENDM
const movement_step_48 ; $48
step_48: MACRO
MACRO step_48
db movement_step_48
db \1 ; ???
ENDM
const movement_remove_object ; $49
remove_object: MACRO
MACRO remove_object
db movement_remove_object
ENDM
const movement_step_loop ; $4a
step_loop: MACRO
MACRO step_loop
db movement_step_loop
ENDM
const movement_step_4b ; $4b
step_4b: MACRO
MACRO step_4b
db movement_step_4b
ENDM
const movement_teleport_from ; $4c
teleport_from: MACRO
MACRO teleport_from
db movement_teleport_from
ENDM
const movement_teleport_to ; $4d
teleport_to: MACRO
MACRO teleport_to
db movement_teleport_to
ENDM
const movement_skyfall ; $4e
skyfall: MACRO
MACRO skyfall
db movement_skyfall
ENDM
const movement_step_dig ; $4f
step_dig: MACRO
MACRO step_dig
db movement_step_dig
db \1 ; length
ENDM
const movement_step_bump ; $50
step_bump: MACRO
MACRO step_bump
db movement_step_bump
ENDM
const movement_fish_got_bite ; $51
fish_got_bite: MACRO
MACRO fish_got_bite
db movement_fish_got_bite
ENDM
const movement_fish_cast_rod ; $52
fish_cast_rod: MACRO
MACRO fish_cast_rod
db movement_fish_cast_rod
ENDM
const movement_hide_emote ; $53
hide_emote: MACRO
MACRO hide_emote
db movement_hide_emote
ENDM
const movement_show_emote ; $54
show_emote: MACRO
MACRO show_emote
db movement_show_emote
ENDM
const movement_step_shake ; $55
step_shake: MACRO
MACRO step_shake
db movement_step_shake
db \1 ; displacement
ENDM
const movement_tree_shake ; $56
tree_shake: MACRO
MACRO tree_shake
db movement_tree_shake
ENDM
const movement_rock_smash ; $57
rock_smash: MACRO
MACRO rock_smash
db movement_rock_smash
db \1 ; length
ENDM
const movement_return_dig ; $58
return_dig: MACRO
MACRO return_dig
db movement_return_dig
db \1 ; length
ENDM
const movement_skyfall_top ; $59
skyfall_top: MACRO
MACRO skyfall_top
db movement_skyfall_top
ENDM
NUM_MOVEMENT_CMDS EQU const_value
DEF NUM_MOVEMENT_CMDS EQU const_value

View File

@@ -1,147 +1,147 @@
text EQUS "db TX_START," ; Start writing text.
next EQUS "db \"<NEXT>\"," ; Move a line down.
line EQUS "db \"<LINE>\"," ; Start writing at the bottom line.
page EQUS "db \"@\"," ; Start a new Pokédex page.
para EQUS "db \"<PARA>\"," ; Start a new paragraph.
cont EQUS "db \"<CONT>\"," ; Scroll to the next line.
done EQUS "db \"<DONE>\"" ; End a text box.
prompt EQUS "db \"<PROMPT>\"" ; Prompt the player to end a text box (initiating some other event).
DEF text EQUS "db TX_START," ; Start writing text.
DEF next EQUS "db \"<NEXT>\"," ; Move a line down.
DEF line EQUS "db \"<LINE>\"," ; Start writing at the bottom line.
DEF page EQUS "db \"@\"," ; Start a new Pokédex page.
DEF para EQUS "db \"<PARA>\"," ; Start a new paragraph.
DEF cont EQUS "db \"<CONT>\"," ; Scroll to the next line.
DEF done EQUS "db \"<DONE>\"" ; End a text box.
DEF prompt EQUS "db \"<PROMPT>\"" ; Prompt the player to end a text box (initiating some other event).
; TextCommands indexes (see home/text.asm)
const_def
const TX_START ; $00
text_start: MACRO
MACRO text_start
db TX_START
ENDM
const TX_RAM ; $01
text_ram: MACRO
MACRO text_ram
db TX_RAM
dw \1
ENDM
const TX_BCD ; $02
text_bcd: MACRO
MACRO text_bcd
db TX_BCD
dw \1
db \2
ENDM
const TX_MOVE ; $03
text_move: MACRO
MACRO text_move
db TX_MOVE
dw \1
ENDM
const TX_BOX ; $04
text_box: MACRO
MACRO text_box
db TX_BOX
dw \1
db \2, \3
ENDM
const TX_LOW ; $05
text_low: MACRO
MACRO text_low
db TX_LOW
ENDM
const TX_PROMPT_BUTTON ; $06
text_promptbutton: MACRO
MACRO text_promptbutton
db TX_PROMPT_BUTTON
ENDM
const TX_SCROLL ; $07
text_scroll: MACRO
MACRO text_scroll
db TX_SCROLL
ENDM
const TX_START_ASM ; $08
text_asm: MACRO
MACRO text_asm
db TX_START_ASM
ENDM
const TX_DECIMAL ; $09
text_decimal: MACRO
MACRO text_decimal
db TX_DECIMAL
dw \1 ; address
dn \2, \3 ; bytes, digits
ENDM
const TX_PAUSE ; $0a
text_pause: MACRO
MACRO text_pause
db TX_PAUSE
ENDM
const TX_SOUND_DEX_FANFARE_50_79 ; $0b
sound_dex_fanfare_50_79: MACRO
MACRO sound_dex_fanfare_50_79
db TX_SOUND_DEX_FANFARE_50_79
ENDM
const TX_DOTS ; $0c
text_dots: MACRO
MACRO text_dots
db TX_DOTS
db \1
ENDM
const TX_WAIT_BUTTON ; $0d
text_waitbutton: MACRO
MACRO text_waitbutton
db TX_WAIT_BUTTON
ENDM
const TX_SOUND_DEX_FANFARE_20_49 ; $0e
sound_dex_fanfare_20_49: MACRO
MACRO sound_dex_fanfare_20_49
db TX_SOUND_DEX_FANFARE_20_49
ENDM
const TX_SOUND_ITEM ; $0f
sound_item: MACRO
MACRO sound_item
db TX_SOUND_ITEM
ENDM
const TX_SOUND_CAUGHT_MON ; $10
sound_caught_mon: MACRO
MACRO sound_caught_mon
db TX_SOUND_CAUGHT_MON
ENDM
const TX_SOUND_DEX_FANFARE_80_109 ; $11
sound_dex_fanfare_80_109: MACRO
MACRO sound_dex_fanfare_80_109
db TX_SOUND_DEX_FANFARE_80_109
ENDM
const TX_SOUND_FANFARE ; $12
sound_fanfare: MACRO
MACRO sound_fanfare
db TX_SOUND_FANFARE
ENDM
const TX_SOUND_SLOT_MACHINE_START ; $13
sound_slot_machine_start: MACRO
MACRO sound_slot_machine_start
db TX_SOUND_SLOT_MACHINE_START
ENDM
const TX_STRINGBUFFER ; $14
text_buffer: MACRO
MACRO text_buffer
db TX_STRINGBUFFER
db \1
ENDM
const TX_DAY ; $15
text_today: MACRO
MACRO text_today
db TX_DAY
ENDM
const TX_FAR ; $16
text_far: MACRO
MACRO text_far
db TX_FAR
dw \1
db BANK(\1)
ENDM
NUM_TEXT_CMDS EQU const_value
DEF NUM_TEXT_CMDS EQU const_value
const_next $50
const TX_END ; $50
text_end: MACRO
MACRO text_end
db TX_END
ENDM

View File

@@ -1,27 +1,27 @@
vc_hook: MACRO
if DEF(_CRYSTAL11_VC)
.VC_\1::
endc
MACRO vc_hook
if DEF(_CRYSTAL11_VC)
.VC_\1::
endc
ENDM
vc_patch: MACRO
if DEF(_CRYSTAL11_VC)
assert !DEF(CURRENT_VC_PATCH), "Already started a vc_patch"
CURRENT_VC_PATCH EQUS "\1"
.VC_{CURRENT_VC_PATCH}::
endc
MACRO vc_patch
if DEF(_CRYSTAL11_VC)
assert !DEF(CURRENT_VC_PATCH), "Already started a vc_patch"
DEF CURRENT_VC_PATCH EQUS "\1"
.VC_{CURRENT_VC_PATCH}::
endc
ENDM
vc_patch_end: MACRO
if DEF(_CRYSTAL11_VC)
assert DEF(CURRENT_VC_PATCH), "No vc_patch started"
.VC_{CURRENT_VC_PATCH}_End::
PURGE CURRENT_VC_PATCH
endc
MACRO vc_patch_end
if DEF(_CRYSTAL11_VC)
assert DEF(CURRENT_VC_PATCH), "No vc_patch started"
.VC_{CURRENT_VC_PATCH}_End::
PURGE CURRENT_VC_PATCH
endc
ENDM
vc_assert: MACRO
if DEF(_CRYSTAL11_VC)
assert \#
endc
MACRO vc_assert
if DEF(_CRYSTAL11_VC)
assert \#
endc
ENDM

View File

@@ -1,10 +1,10 @@
; Used in wram.asm
flag_array: MACRO
MACRO flag_array
ds ((\1) + 7) / 8
ENDM
box_struct: MACRO
MACRO box_struct
\1Species:: db
\1Item:: db
\1Moves:: ds NUM_MOVES
@@ -29,7 +29,7 @@ box_struct: MACRO
\1BoxEnd::
ENDM
party_struct: MACRO
MACRO party_struct
box_struct \1
\1Status:: db
\1Unused:: db
@@ -44,7 +44,7 @@ party_struct: MACRO
\1StructEnd::
ENDM
red_box_struct: MACRO
MACRO red_box_struct
\1Species:: db
\1HP:: dw
\1BoxLevel:: db
@@ -65,7 +65,7 @@ red_box_struct: MACRO
\1PP:: ds NUM_MOVES
ENDM
red_party_struct: MACRO
MACRO red_party_struct
red_box_struct \1
\1Level:: db
\1Stats::
@@ -76,7 +76,7 @@ red_party_struct: MACRO
\1Special:: dw
ENDM
battle_struct: MACRO
MACRO battle_struct
\1Species:: db
\1Item:: db
\1Moves:: ds NUM_MOVES
@@ -99,30 +99,30 @@ battle_struct: MACRO
\1StructEnd::
ENDM
box: MACRO
MACRO box
\1Count:: db
\1Species:: ds MONS_PER_BOX + 1
\1Mons::
; \1Mon1 - \1Mon20
for n, 1, MONS_PER_BOX + 1
\1Mon{d:n}:: box_struct \1Mon{d:n}
endr
; \1Mon1 - \1Mon20
for n, 1, MONS_PER_BOX + 1
\1Mon{d:n}:: box_struct \1Mon{d:n}
endr
\1MonOTs::
; \1Mon1OT - \1Mon20OT
for n, 1, MONS_PER_BOX + 1
\1Mon{d:n}OT:: ds NAME_LENGTH
endr
; \1Mon1OT - \1Mon20OT
for n, 1, MONS_PER_BOX + 1
\1Mon{d:n}OT:: ds NAME_LENGTH
endr
\1MonNicknames::
; \1Mon1Nickname - \1Mon20Nickname
for n, 1, MONS_PER_BOX + 1
\1Mon{d:n}Nickname:: ds MON_NAME_LENGTH
endr
; \1Mon1Nickname - \1Mon20Nickname
for n, 1, MONS_PER_BOX + 1
\1Mon{d:n}Nickname:: ds MON_NAME_LENGTH
endr
\1MonNicknamesEnd::
\1End::
ds 2 ; padding
ENDM
map_connection_struct: MACRO
MACRO map_connection_struct
\1ConnectedMapGroup:: db
\1ConnectedMapNumber:: db
\1ConnectionStripPointer:: dw
@@ -134,7 +134,7 @@ map_connection_struct: MACRO
\1ConnectionWindow:: dw
ENDM
channel_struct: MACRO
MACRO channel_struct
\1MusicID:: dw
\1MusicBank:: db
\1Flags1:: db ; 0:on/off 1:subroutine 2:looping 3:sfx 4:noise 5:rest
@@ -178,19 +178,19 @@ channel_struct: MACRO
ds 1
ENDM
battle_tower_struct: MACRO
MACRO battle_tower_struct
\1Name:: ds NAME_LENGTH - 1
\1TrainerClass:: db
; \1Mon1 - \1Mon3 and \1Mon1Name - \1Mon3Name
for n, 1, BATTLETOWER_PARTY_LENGTH + 1
\1Mon{d:n}:: party_struct \1Mon{d:n}
\1Mon{d:n}Name:: ds MON_NAME_LENGTH
endr
; \1Mon1 - \1Mon3 and \1Mon1Name - \1Mon3Name
for n, 1, BATTLETOWER_PARTY_LENGTH + 1
\1Mon{d:n}:: party_struct \1Mon{d:n}
\1Mon{d:n}Name:: ds MON_NAME_LENGTH
endr
\1TrainerData:: ds BATTLETOWER_TRAINERDATALENGTH
\1TrainerEnd::
ENDM
mailmsg: MACRO
MACRO mailmsg
\1Message:: ds MAIL_MSG_LENGTH
\1MessageEnd:: db
\1Author:: ds PLAYER_NAME_LENGTH
@@ -201,7 +201,7 @@ mailmsg: MACRO
\1End::
ENDM
roam_struct: MACRO
MACRO roam_struct
\1Species:: db
\1Level:: db
\1MapGroup:: db
@@ -210,13 +210,13 @@ roam_struct: MACRO
\1DVs:: dw
ENDM
bugcontestwinner: MACRO
MACRO bugcontestwinner
\1WinnerID:: db
\1Mon:: db
\1Score:: dw
ENDM
hof_mon: MACRO
MACRO hof_mon
\1Species:: db
\1ID:: dw
\1DVs:: dw
@@ -225,16 +225,16 @@ hof_mon: MACRO
\1End::
ENDM
hall_of_fame: MACRO
MACRO hall_of_fame
\1WinCount:: db
; \1Mon1 - \1Mon6
for n, 1, PARTY_LENGTH + 1
\1Mon{d:n}:: hof_mon \1Mon{d:n}
endr
; \1Mon1 - \1Mon6
for n, 1, PARTY_LENGTH + 1
\1Mon{d:n}:: hof_mon \1Mon{d:n}
endr
\1End:: db
ENDM
link_battle_record: MACRO
MACRO link_battle_record
\1ID:: dw
\1Name:: ds NAME_LENGTH - 1
\1Wins:: dw
@@ -243,7 +243,7 @@ link_battle_record: MACRO
\1End::
ENDM
trademon: MACRO
MACRO trademon
\1Species:: db
\1SpeciesName:: ds MON_NAME_LENGTH
\1Nickname:: ds MON_NAME_LENGTH
@@ -255,7 +255,7 @@ trademon: MACRO
\1End::
ENDM
move_struct: MACRO
MACRO move_struct
\1Animation:: db
\1Effect:: db
\1Power:: db
@@ -265,7 +265,7 @@ move_struct: MACRO
\1EffectChance:: db
ENDM
slot_reel: MACRO
MACRO slot_reel
\1ReelAction:: db
\1TilemapAddr:: dw
\1Position:: db
@@ -282,7 +282,7 @@ slot_reel: MACRO
\1StopDelay:: db
ENDM
object_struct: MACRO
MACRO object_struct
\1Sprite:: db
\1MapObjectIndex:: db
\1SpriteTile:: db
@@ -319,7 +319,7 @@ object_struct: MACRO
\1StructEnd::
ENDM
map_object: MACRO
MACRO map_object
\1ObjectStructID:: db
\1ObjectSprite:: db
\1ObjectYCoord:: db
@@ -335,7 +335,7 @@ map_object: MACRO
ds 2
ENDM
sprite_oam_struct: MACRO
MACRO sprite_oam_struct
\1YCoord:: db
\1XCoord:: db
\1TileID:: db
@@ -348,7 +348,7 @@ sprite_oam_struct: MACRO
; bit 2-0: pal # (cgb only)
ENDM
sprite_anim_struct: MACRO
MACRO sprite_anim_struct
\1Index:: db
\1FramesetID:: db
\1AnimSeqID:: db
@@ -367,7 +367,7 @@ sprite_anim_struct: MACRO
\1Var4:: ds 1
ENDM
battle_anim_struct: MACRO
MACRO battle_anim_struct
\1Index:: db
\1OAMFlags:: db
\1FixY:: db
@@ -388,7 +388,7 @@ battle_anim_struct: MACRO
ds 7
ENDM
battle_bg_effect: MACRO
MACRO battle_bg_effect
\1Function:: db
\1JumptableIndex:: db
\1BattleTurn:: db