summaryrefslogtreecommitdiff
path: root/macros/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'macros/scripts')
-rw-r--r--macros/scripts/audio.asm265
-rw-r--r--macros/scripts/effect_commands.asm187
-rw-r--r--macros/scripts/event.asm1069
-rw-r--r--macros/scripts/gfx_anim.asm44
-rw-r--r--macros/scripts/maps.asm108
-rw-r--r--macros/scripts/move_anim.asm294
-rw-r--r--macros/scripts/movement.asm246
-rw-r--r--macros/scripts/text.asm133
-rw-r--r--macros/scripts/trade_anim.asm255
9 files changed, 2601 insertions, 0 deletions
diff --git a/macros/scripts/audio.asm b/macros/scripts/audio.asm
new file mode 100644
index 000000000..3766785ba
--- /dev/null
+++ b/macros/scripts/audio.asm
@@ -0,0 +1,265 @@
+note: MACRO
+ dn (\1), (\2) - 1
+ ENDM
+
+sound: macro
+ note \1, \2
+ db \3 ; intensity
+ dw \4 ; frequency
+ endm
+
+noise: macro
+ note \1, \2 ; duration
+ db \3 ; intensity
+ db \4 ; frequency
+ endm
+
+musicheader: macro
+ ; number of tracks, track idx, address
+ dbw ((\1 - 1) << 6) + (\2 - 1), \3
+ endm
+
+cry_header: macro
+ dw \1, \2, \3
+ endm
+
+; MusicCommands indexes (see audio/engine.asm)
+ enum_start $d8
+
+ enum notetype_cmd ; $d8
+octave: macro
+ db notetype_cmd - (\1)
+ endm
+
+notetype: macro
+ db notetype_cmd
+ db \1 ; note_length
+ if _NARG >= 2
+ db \2 ; intensity
+ endc
+ endm
+
+ enum pitchoffset_cmd ; $d9
+pitchoffset: macro
+ db pitchoffset_cmd
+ dn \1, \2 - 1 ; octave, key
+ endm
+
+ enum tempo_cmd ; $da
+tempo: macro
+ db tempo_cmd
+ bigdw \1 ; tempo
+ endm
+
+ enum dutycycle_cmd ; $db
+dutycycle: macro
+ db dutycycle_cmd
+ db \1 ; duty_cycle
+ endm
+
+ enum intensity_cmd ; $dc
+intensity: macro
+ db intensity_cmd
+ db \1 ; intensity
+ endm
+
+ enum soundinput_cmd ; $dd
+soundinput: macro
+ db soundinput_cmd
+ db \1 ; input
+ endm
+
+ enum sound_duty_cmd ; $de
+sound_duty: macro
+ db sound_duty_cmd
+ db \1 | (\2 << 2) | (\3 << 4) | (\4 << 6) ; duty sequence
+ endm
+
+ enum togglesfx_cmd ; $df
+togglesfx: macro
+ db togglesfx_cmd
+ endm
+
+ enum slidepitchto_cmd ; $e0
+slidepitchto: macro
+ db slidepitchto_cmd
+ db \1 - 1 ; duration
+ dn \2, \3 ; octave, pitch
+ endm
+
+ enum vibrato_cmd ; $e1
+vibrato: macro
+ db vibrato_cmd
+ db \1 ; delay
+ db \2 ; extent
+ endm
+
+ enum unknownmusic0xe2_cmd ; $e2
+unknownmusic0xe2: macro
+ db unknownmusic0xe2_cmd
+ db \1 ; unknown
+ endm
+
+ enum togglenoise_cmd ; $e3
+togglenoise: macro
+ db togglenoise_cmd
+ db \1 ; id
+ endm
+
+ enum panning_cmd ; $e4
+panning: macro
+ db panning_cmd
+ db \1 ; tracks
+ endm
+
+ enum volume_cmd ; $e5
+volume: macro
+ db volume_cmd
+ db \1 ; volume
+ endm
+
+ enum tone_cmd ; $e6
+tone: macro
+ db tone_cmd
+ bigdw \1 ; tone
+ endm
+
+ enum unknownmusic0xe7_cmd ; $e7
+unknownmusic0xe7: macro
+ db unknownmusic0xe7_cmd
+ db \1 ; unknown
+ endm
+
+ enum unknownmusic0xe8_cmd ; $e8
+unknownmusic0xe8: macro
+ db unknownmusic0xe8_cmd
+ db \1 ; unknown
+ endm
+
+ enum tempo_relative_cmd ; $e9
+tempo_relative: macro
+ db tempo_relative_cmd
+ bigdw \1 ; value
+ endm
+
+ enum restartchannel_cmd ; $ea
+restartchannel: macro
+ db restartchannel_cmd
+ dw \1 ; address
+ endm
+
+ enum newsong_cmd ; $eb
+newsong: macro
+ db newsong_cmd
+ bigdw \1 ; id
+ endm
+
+ enum sfxpriorityon_cmd ; $ec
+sfxpriorityon: macro
+ db sfxpriorityon_cmd
+ endm
+
+ enum sfxpriorityoff_cmd ; $ed
+sfxpriorityoff: macro
+ db sfxpriorityoff_cmd
+ endm
+
+ enum unknownmusic0xee_cmd ; $ee
+unknownmusic0xee: macro
+ db unknownmusic0xee_cmd
+ dw \1 ; address
+ endm
+
+ enum stereopanning_cmd ; $ef
+stereopanning: macro
+ db stereopanning_cmd
+ db \1 ; tracks
+ endm
+
+ enum sfxtogglenoise_cmd ; $f0
+sfxtogglenoise: macro
+ db sfxtogglenoise_cmd
+ db \1 ; id
+ endm
+
+ enum music0xf1_cmd ; $f1
+music0xf1: macro
+ db music0xf1_cmd
+ endm
+
+ enum music0xf2_cmd ; $f2
+music0xf2: macro
+ db music0xf2_cmd
+ endm
+
+ enum music0xf3_cmd ; $f3
+music0xf3: macro
+ db music0xf3_cmd
+ endm
+
+ enum music0xf4_cmd ; $f4
+music0xf4: macro
+ db music0xf4_cmd
+ endm
+
+ enum music0xf5_cmd ; $f5
+music0xf5: macro
+ db music0xf5_cmd
+ endm
+
+ enum music0xf6_cmd ; $f6
+music0xf6: macro
+ db music0xf6_cmd
+ endm
+
+ enum music0xf7_cmd ; $f7
+music0xf7: macro
+ db music0xf7_cmd
+ endm
+
+ enum music0xf8_cmd ; $f8
+music0xf8: macro
+ db music0xf8_cmd
+ endm
+
+ enum unknownmusic0xf9_cmd ; $f9
+unknownmusic0xf9: macro
+ db unknownmusic0xf9_cmd
+ endm
+
+ enum setcondition_cmd ; $fa
+setcondition: macro
+ db setcondition_cmd
+ db \1 ; condition
+ endm
+
+ enum jumpif_cmd ; $fb
+jumpif: macro
+ db jumpif_cmd
+ db \1 ; condition
+ dw \2 ; address
+ endm
+
+ enum jumpchannel_cmd ; $fc
+jumpchannel: macro
+ db jumpchannel_cmd
+ dw \1 ; address
+ endm
+
+ enum loopchannel_cmd ; $fd
+loopchannel: macro
+ db loopchannel_cmd
+ db \1 ; count
+ dw \2 ; address
+ endm
+
+ enum callchannel_cmd ; $fe
+callchannel: macro
+ db callchannel_cmd
+ dw \1 ; address
+ endm
+
+ enum endchannel_cmd ; $ff
+endchannel: macro
+ db endchannel_cmd
+ endm
diff --git a/macros/scripts/effect_commands.asm b/macros/scripts/effect_commands.asm
new file mode 100644
index 000000000..4fd2475b7
--- /dev/null
+++ b/macros/scripts/effect_commands.asm
@@ -0,0 +1,187 @@
+command: macro
+ enum \1_command
+\1 equs "db \1_command"
+endm
+
+; BattleCommandPointers indexes (see battle/effect_commands.asm)
+ enum_start 1
+ command checkturn ; 01
+ command checkobedience ; 02
+ command usedmovetext ; 03
+ command doturn ; 04
+ command critical ; 05
+ command damagestats ; 06
+ command stab ; 07
+ command damagevariation ; 08
+ command checkhit ; 09
+ command lowersub ; 0a
+ command hittargetnosub ; 0b
+ command raisesub ; 0c
+ command failuretext ; 0d
+ command checkfaint ; 0e
+ command criticaltext ; 0f
+ command supereffectivetext ; 10
+ command checkdestinybond ; 11
+ command buildopponentrage ; 12
+ command poisontarget ; 13
+ command sleeptarget ; 14
+ command draintarget ; 15
+ command eatdream ; 16
+ command burntarget ; 17
+ command freezetarget ; 18
+ command paralyzetarget ; 19
+ command selfdestruct ; 1a
+ command mirrormove ; 1b
+ command statup ; 1c
+ command statdown ; 1d
+ command payday ; 1e
+ command conversion ; 1f
+ command resetstats ; 20
+ command storeenergy ; 21
+ command unleashenergy ; 22
+ command forceswitch ; 23
+ command endloop ; 24
+ command flinchtarget ; 25
+ command ohko ; 26
+ command recoil ; 27
+ command mist ; 28
+ command focusenergy ; 29
+ command confuse ; 2a
+ command confusetarget ; 2b
+ command heal ; 2c
+ command transform ; 2d
+ command screen ; 2e
+ command poison ; 2f
+ command paralyze ; 30
+ command substitute ; 31
+ command rechargenextturn ; 32
+ command mimic ; 33
+ command metronome ; 34
+ command leechseed ; 35
+ command splash ; 36
+ command disable ; 37
+ command cleartext ; 38
+ command charge ; 39
+ command checkcharge ; 3a
+ command traptarget ; 3b
+ command effect0x3c ; 3c
+ command rampage ; 3d
+ command checkrampage ; 3e
+ command constantdamage ; 3f
+ command counter ; 40
+ command encore ; 41
+ command painsplit ; 42
+ command snore ; 43
+ command conversion2 ; 44
+ command lockon ; 45
+ command sketch ; 46
+ command defrostopponent ; 47
+ command sleeptalk ; 48
+ command destinybond ; 49
+ command spite ; 4a
+ command falseswipe ; 4b
+ command healbell ; 4c
+ command kingsrock ; 4d
+ command triplekick ; 4e
+ command kickcounter ; 4f
+ command thief ; 50
+ command arenatrap ; 51
+ command nightmare ; 52
+ command defrost ; 53
+ command curse ; 54
+ command protect ; 55
+ command spikes ; 56
+ command foresight ; 57
+ command perishsong ; 58
+ command startsandstorm ; 59
+ command endure ; 5a
+ command checkcurl ; 5b
+ command rolloutpower ; 5c
+ command effect0x5d ; 5d
+ command furycutter ; 5e
+ command attract ; 5f
+ command happinesspower ; 60
+ command present ; 61
+ command damagecalc ; 62
+ command frustrationpower ; 63
+ command safeguard ; 64
+ command checksafeguard ; 65
+ command getmagnitude ; 66
+ command batonpass ; 67
+ command pursuit ; 68
+ command clearhazards ; 69
+ command healmorn ; 6a
+ command healday ; 6b
+ command healnite ; 6c
+ command hiddenpower ; 6d
+ command startrain ; 6e
+ command startsun ; 6f
+ command attackup ; 70
+ command defenseup ; 71
+ command speedup ; 72
+ command specialattackup ; 73
+ command specialdefenseup ; 74
+ command accuracyup ; 75
+ command evasionup ; 76
+ command attackup2 ; 77
+ command defenseup2 ; 78
+ command speedup2 ; 79
+ command specialattackup2 ; 7a
+ command specialdefenseup2 ; 7b
+ command accuracyup2 ; 7c
+ command evasionup2 ; 7d
+ command attackdown ; 7e
+ command defensedown ; 7f
+ command speeddown ; 80
+ command specialattackdown ; 81
+ command specialdefensedown ; 82
+ command accuracydown ; 83
+ command evasiondown ; 84
+ command attackdown2 ; 85
+ command defensedown2 ; 86
+ command speeddown2 ; 87
+ command specialattackdown2 ; 88
+ command specialdefensedown2 ; 89
+ command accuracydown2 ; 8a
+ command evasiondown2 ; 8b
+ command statupmessage ; 8c
+ command statdownmessage ; 8d
+ command statupfailtext ; 8e
+ command statdownfailtext ; 8f
+ command effectchance ; 90
+ command statdownanim ; 91
+ command statupanim ; 92
+ command switchturn ; 93
+ command fakeout ; 94
+ command bellydrum ; 95
+ command psychup ; 96
+ command rage ; 97
+ command doubleflyingdamage ; 98
+ command doubleundergrounddamage ; 99
+ command mirrorcoat ; 9a
+ command checkfuturesight ; 9b
+ command futuresight ; 9c
+ command doubleminimizedamage ; 9d
+ command skipsuncharge ; 9e
+ command thunderaccuracy ; 9f
+ command teleport ; a0
+ command beatup ; a1
+ command ragedamage ; a2
+ command resettypematchup ; a3
+ command allstatsup ; a4
+ command effect0xa5 ; a5
+ command raisesubnoanim ; a6
+ command lowersubnoanim ; a7
+ command effect0xa8 ; a8
+ command clearmissdamage ; a9
+ command movedelay ; aa
+ command hittarget ; ab
+ command tristatuschance ; ac
+ command supereffectivelooptext ; ad
+ command startloop ; ae
+ command curl ; af
+
+__enum__ set $fe
+
+ command endturn ; fe
+ command endmove ; ff
diff --git a/macros/scripts/event.asm b/macros/scripts/event.asm
new file mode 100644
index 000000000..c40d6f8fd
--- /dev/null
+++ b/macros/scripts/event.asm
@@ -0,0 +1,1069 @@
+; ScriptCommandTable indexes (see engine/scripting.asm)
+ enum_start
+
+ enum scall_command ; $00
+scall: macro
+ db scall_command
+ dw \1 ; pointer
+ endm
+
+ enum farscall_command ; $01
+farscall: macro
+ db farscall_command
+ dba \1
+ endm
+
+ enum ptcall_command ; $02
+ptcall: macro
+ db ptcall_command
+ dw \1 ; pointer
+ endm
+
+ enum jump_command ; $03
+jump: macro
+ db jump_command
+ dw \1 ; pointer
+ endm
+
+ enum farjump_command ; $04
+farjump: macro
+ db farjump_command
+ dba \1
+ endm
+
+ enum ptjump_command ; $05
+ptjump: macro
+ db ptjump_command
+ dw \1 ; pointer
+ endm
+
+ enum if_equal_command ; $06
+if_equal: macro
+ db if_equal_command
+ db \1 ; byte
+ dw \2 ; pointer
+ endm
+
+ enum if_not_equal_command ; $07
+if_not_equal: macro
+ db if_not_equal_command
+ db \1 ; byte
+ dw \2 ; pointer
+ endm
+
+ enum iffalse_command ; $08
+iffalse: macro
+ db iffalse_command
+ dw \1 ; pointer
+ endm
+
+ enum iftrue_command ; $09
+iftrue: macro
+ db iftrue_command
+ dw \1 ; pointer
+ endm
+
+ enum if_greater_than_command ; $0a
+if_greater_than: macro
+ db if_greater_than_command
+ db \1 ; byte
+ dw \2 ; pointer
+ endm
+
+ enum if_less_than_command ; $0b
+if_less_than: macro
+ db if_less_than_command
+ db \1 ; byte
+ dw \2 ; pointer
+ endm
+
+ enum jumpstd_command ; $0c
+jumpstd: macro
+ db jumpstd_command
+ dw \1 ; predefined_script
+ endm
+
+ enum callstd_command ; $0d
+callstd: macro
+ db callstd_command
+ dw \1 ; predefined_script
+ endm
+
+ enum callasm_command ; $0e
+callasm: macro
+ db callasm_command
+ dba \1
+ endm
+
+ enum special_command ; $0f
+special: macro
+ db special_command
+ dw (\1Special - SpecialsPointers) / 3
+ endm
+
+add_special: MACRO
+\1Special::
+ dba \1
+ENDM
+
+ enum ptcallasm_command ; $10
+ptcallasm: macro
+ db ptcallasm_command
+ dw \1 ; asm
+ endm
+
+ enum checkmaptriggers_command ; $11
+checkmaptriggers: macro
+ db checkmaptriggers_command
+ map \1 ; map
+ endm
+
+ enum domaptrigger_command ; $12
+domaptrigger: macro
+ db domaptrigger_command
+ map \1 ; map
+ db \2 ; trigger_id
+ endm
+
+ enum checktriggers_command ; $13
+checktriggers: macro
+ db checktriggers_command
+ endm
+
+ enum dotrigger_command ; $14
+dotrigger: macro
+ db dotrigger_command
+ db \1 ; trigger_id
+ endm
+
+ enum writebyte_command ; $15
+writebyte: macro
+ db writebyte_command
+ db \1 ; value
+ endm
+
+ enum addvar_command ; $16
+addvar: macro
+ db addvar_command
+ db \1 ; value
+ endm
+
+ enum random_command ; $17
+random: macro
+ db random_command
+ db \1 ; input
+ endm
+
+ enum checkver_command ; $18
+checkver: macro
+ db checkver_command
+ endm
+
+ enum copybytetovar_command ; $19
+copybytetovar: macro
+ db copybytetovar_command
+ dw \1 ; address
+ endm
+
+ enum copyvartobyte_command ; $1a
+copyvartobyte: macro
+ db copyvartobyte_command
+ dw \1 ; address
+ endm
+
+ enum loadvar_command ; $1b
+loadvar: macro
+ db loadvar_command
+ dw \1 ; address
+ db \2 ; value
+ endm
+
+ enum checkcode_command ; $1c
+checkcode: macro
+ db checkcode_command
+ db \1 ; variable_id
+ endm
+
+ enum writevarcode_command ; $1d
+writevarcode: macro
+ db writevarcode_command
+ db \1 ; variable_id
+ endm
+
+ enum writecode_command ; $1e
+writecode: macro
+ db writecode_command
+ db \1 ; variable_id
+ db \2 ; value
+ endm
+
+ enum giveitem_command ; $1f
+giveitem: macro
+ db giveitem_command
+ db \1 ; item
+if _NARG == 2
+ db \2 ; quantity
+else
+ db 1
+endc
+ endm
+
+ enum takeitem_command ; $20
+takeitem: macro
+ db takeitem_command
+ db \1 ; item
+if _NARG == 2
+ db \2 ; quantity
+else
+ db 1
+endc
+ endm
+
+ enum checkitem_command ; $21
+checkitem: macro
+ db checkitem_command
+ db \1 ; item
+ endm
+
+ enum givemoney_command ; $22
+givemoney: macro
+ db givemoney_command
+ db \1 ; account
+ dt \2 ; money
+ endm
+
+ enum takemoney_command ; $23
+takemoney: macro
+ db takemoney_command
+ db \1 ; account
+ dt \2 ; money
+ endm
+
+ enum checkmoney_command ; $24
+checkmoney: macro
+ db checkmoney_command
+ db \1 ; account
+ dt \2 ; money
+ endm
+
+ enum givecoins_command ; $25
+givecoins: macro
+ db givecoins_command
+ dw \1 ; coins
+ endm
+
+ enum takecoins_command ; $26
+takecoins: macro
+ db takecoins_command
+ dw \1 ; coins
+ endm
+
+ enum checkcoins_command ; $27
+checkcoins: macro
+ db checkcoins_command
+ dw \1 ; coins
+ endm
+
+ enum addcellnum_command ; $28
+addcellnum: macro
+ db addcellnum_command
+ db \1 ; person
+ endm
+
+ enum delcellnum_command ; $29
+delcellnum: macro
+ db delcellnum_command
+ db \1 ; person
+ endm
+
+ enum checkcellnum_command ; $2a
+checkcellnum: macro
+ db checkcellnum_command
+ db \1 ; person
+ endm
+
+ enum checktime_command ; $2b
+checktime: macro
+ db checktime_command
+ db \1 ; time
+ endm
+
+checkmorn EQUS "checktime MORN"
+checkday EQUS "checktime DAY"
+checknite EQUS "checktime NITE"
+
+ enum checkpoke_command ; $2c
+checkpoke: macro
+ db checkpoke_command
+ db \1 ; pkmn
+ endm
+
+ enum givepoke_command ; $2d
+givepoke: macro
+ db givepoke_command
+ db \1 ; pokemon
+ db \2 ; level
+ if _NARG >= 3
+ db \3 ; item
+ if _NARG >= 4
+ db \4 ; trainer
+ if \4
+ dw \5 ; trainer_name_pointer
+ dw \6 ; pkmn_nickname
+ endc
+ else
+ db 0
+ endc
+ else
+ db 0, 0
+ endc
+ endm
+
+ enum giveegg_command ; $2e
+giveegg: macro
+ db giveegg_command
+ db \1 ; pkmn
+ db \2 ; level
+ endm
+
+ enum givepokeitem_command ; $2f
+givepokeitem: macro
+ db givepokeitem_command
+ dw \1 ; pointer
+ endm
+
+ enum checkpokeitem_command ; $30
+checkpokeitem: macro
+ db checkpokeitem_command
+ dw \1 ; pointer
+ endm
+
+ enum checkevent_command ; $31
+checkevent: macro
+ db checkevent_command
+ dw \1 ; event_flag
+ endm
+
+ enum clearevent_command ; $32
+clearevent: macro
+ db clearevent_command
+ dw \1 ; event_flag
+ endm
+
+ enum setevent_command ; $33
+setevent: macro
+ db setevent_command
+ dw \1 ; event_flag
+ endm
+
+ enum checkflag_command ; $34
+checkflag: macro
+ db checkflag_command
+ dw \1 ; engine_flag
+ endm
+
+ enum clearflag_command ; $35
+clearflag: macro
+ db clearflag_command
+ dw \1 ; engine_flag
+ endm
+
+ enum setflag_command ; $36
+setflag: macro
+ db setflag_command
+ dw \1 ; engine_flag
+ endm
+
+ enum wildon_command ; $37
+wildon: macro
+ db wildon_command
+ endm
+
+ enum wildoff_command ; $38
+wildoff: macro
+ db wildoff_command
+ endm
+
+ enum xycompare_command ; $39
+xycompare: macro
+ db xycompare_command
+ dw \1 ; pointer
+ endm
+
+ enum warpmod_command ; $3a
+warpmod: macro
+ db warpmod_command
+ db \1 ; warp_id
+ map \2 ; map
+ endm
+
+ enum blackoutmod_command ; $3b
+blackoutmod: macro
+ db blackoutmod_command
+ map \1 ; map
+ endm
+
+ enum warp_command ; $3c
+warp: macro
+ db warp_command
+ map \1 ; map
+ db \2 ; x
+ db \3 ; y
+ endm
+
+ enum readmoney_command ; $3d
+readmoney: macro
+ db readmoney_command
+ db \1 ; account
+ db \2 ; memory
+ endm
+
+ enum readcoins_command ; $3e
+readcoins: macro
+ db readcoins_command
+ db \1 ; memory
+ endm
+
+ enum RAM2MEM_command ; $3f
+RAM2MEM: macro
+ db RAM2MEM_command
+ db \1 ; memory
+ endm
+
+ enum pokenamemem_command ; $40
+pokenamemem: macro
+ db pokenamemem_command
+ db \1 ; pokemon
+ db \2 ; memory
+ endm
+
+ enum itemtotext_command ; $41
+itemtotext: macro
+ db itemtotext_command
+ db \1 ; item
+ db \2 ; memory
+ endm
+
+ enum mapnametotext_command ; $42
+mapnametotext: macro
+ db mapnametotext_command
+ db \1 ; memory
+ endm
+
+ enum trainertotext_command ; $43
+trainertotext: macro
+ db trainertotext_command
+ db \1 ; trainer_id
+ db \2 ; trainer_group
+ db \3 ; memory
+ endm
+
+ enum stringtotext_command ; $44
+stringtotext: macro
+ db stringtotext_command
+ dw \1 ; text_pointer
+ db \2 ; memory
+ endm
+
+ enum itemnotify_command ; $45
+itemnotify: macro
+ db itemnotify_command
+ endm
+
+ enum pocketisfull_command ; $46
+pocketisfull: macro
+ db pocketisfull_command
+ endm
+
+ enum opentext_command ; $47
+opentext: macro
+ db opentext_command
+ endm
+
+ enum refreshscreen_command ; $48
+refreshscreen: macro
+ db refreshscreen_command
+ db \1 ; dummy
+ endm
+
+ enum closetext_command ; $49
+closetext: macro
+ db closetext_command
+ endm
+
+ enum loadbytec2cf_command ; $4a
+loadbytec2cf: macro
+ db loadbytec2cf_command
+ db \1 ; byte
+ endm
+
+ enum farwritetext_command ; $4b
+farwritetext: macro
+ db farwritetext_command
+ dba \1
+ endm
+
+ enum writetext_command ; $4c
+writetext: macro
+ db writetext_command
+ dw \1 ; text_pointer
+ endm
+
+ enum repeattext_command ; $4d
+repeattext: macro
+ db repeattext_command
+ db \1 ; byte
+ db \2 ; byte
+ endm
+
+ enum yesorno_command ; $4e
+yesorno: macro
+ db yesorno_command
+ endm
+
+ enum loadmenudata_command ; $4f
+loadmenudata: macro
+ db loadmenudata_command
+ dw \1 ; data
+ endm
+
+ enum closewindow_command ; $50
+closewindow: macro
+ db closewindow_command
+ endm
+
+ enum jumptextfaceplayer_command ; $51
+jumptextfaceplayer: macro
+ db jumptextfaceplayer_command
+ dw \1 ; text_pointer
+ endm
+
+; IF _CRYSTAL
+ enum farjumptext_command ; $52
+farjumptext: macro
+ db farjumptext_command
+ dba \1
+ endm
+; ENDC
+
+ enum jumptext_command ; $53
+jumptext: macro
+ db jumptext_command
+ dw \1 ; text_pointer
+ endm
+
+ enum waitbutton_command ; $54
+waitbutton: macro
+ db waitbutton_command
+ endm
+
+ enum buttonsound_command ; $55
+buttonsound: macro
+ db buttonsound_command
+ endm
+
+ enum pokepic_command ; $56
+pokepic: macro
+ db pokepic_command
+ db \1 ; pokemon
+ endm
+
+ enum closepokepic_command ; $57
+closepokepic: macro
+ db closepokepic_command
+ endm
+
+ enum _2dmenu_command ; $58
+_2dmenu: macro
+ db _2dmenu_command
+ endm
+
+ enum verticalmenu_command ; $59
+verticalmenu: macro
+ db verticalmenu_command
+ endm
+
+ enum loadpikachudata_command ; $5a
+loadpikachudata: macro
+ db loadpikachudata_command
+ endm
+
+ enum randomwildmon_command ; $5b
+randomwildmon: macro
+ db randomwildmon_command
+ endm
+
+ enum loadmemtrainer_command ; $5c
+loadmemtrainer: macro
+ db loadmemtrainer_command
+ endm
+
+ enum loadwildmon_command ; $5d
+loadwildmon: macro
+ db loadwildmon_command
+ db \1 ; pokemon
+ db \2 ; level
+ endm
+
+ enum loadtrainer_command ; $5e
+loadtrainer: macro
+ db loadtrainer_command
+ db \1 ; trainer_group
+ db \2 ; trainer_id
+ endm
+
+ enum startbattle_command ; $5f
+startbattle: macro
+ db startbattle_command
+ endm
+
+ enum reloadmapafterbattle_command ; $60
+reloadmapafterbattle: macro
+ db reloadmapafterbattle_command
+ endm
+
+ enum catchtutorial_command ; $61
+catchtutorial: macro
+ db catchtutorial_command
+ db \1 ; byte
+ endm
+
+ enum trainertext_command ; $62
+trainertext: macro
+ db trainertext_command
+ db \1 ; which_text
+ endm
+
+ enum trainerflagaction_command ; $63
+trainerflagaction: macro
+ db trainerflagaction_command
+ db \1 ; action
+ endm
+
+ enum winlosstext_command ; $64
+winlosstext: macro
+ db winlosstext_command
+ dw \1 ; win_text_pointer
+ dw \2 ; loss_text_pointer
+ endm
+
+ enum scripttalkafter_command ; $65
+scripttalkafter: macro
+ db scripttalkafter_command
+ endm
+
+ enum end_if_just_battled_command ; $66
+end_if_just_battled: macro
+ db end_if_just_battled_command
+ endm
+
+ enum check_just_battled_command ; $67
+check_just_battled: macro
+ db check_just_battled_command
+ endm
+
+ enum setlasttalked_command ; $68
+setlasttalked: macro
+ db setlasttalked_command
+ db \1 ; person
+ endm
+
+ enum applymovement_command ; $69
+applymovement: macro
+ db applymovement_command
+ db \1 ; person
+ dw \2 ; data
+ endm
+
+ enum applymovement2_command ; $6a
+applymovement2: macro
+ db applymovement2_command
+ dw \1 ; data
+ endm
+
+ enum faceplayer_command ; $6b
+faceplayer: macro
+ db faceplayer_command
+ endm
+
+ enum faceperson_command ; $6c
+faceperson: macro
+ db faceperson_command
+ db \1 ; person1
+ db \2 ; person2
+ endm
+
+ enum variablesprite_command ; $6d
+variablesprite: macro
+ db variablesprite_command
+ db \1 - SPRITE_VARS ; byte
+ db \2 ; sprite
+ endm
+
+ enum disappear_command ; $6e
+disappear: macro
+ db disappear_command
+ db \1 ; person
+ endm
+
+ enum appear_command ; $6f
+appear: macro
+ db appear_command
+ db \1 ; person
+ endm
+
+ enum follow_command ; $70
+follow: macro
+ db follow_command
+ db \1 ; person2
+ db \2 ; person1
+ endm
+
+ enum stopfollow_command ; $71
+stopfollow: macro
+ db stopfollow_command
+ endm
+
+ enum moveperson_command ; $72
+moveperson: macro
+ db moveperson_command
+ db \1 ; person
+ db \2 ; x
+ db \3 ; y
+ endm
+
+ enum writepersonxy_command ; $73
+writepersonxy: macro
+ db writepersonxy_command
+ db \1 ; person
+ endm
+
+ enum loademote_command ; $74
+loademote: macro
+ db loademote_command
+ db \1 ; bubble
+ endm
+
+ enum showemote_command ; $75
+showemote: macro
+ db showemote_command
+ db \1 ; bubble
+ db \2 ; person
+ db \3 ; time
+ endm
+
+ enum spriteface_command ; $76
+spriteface: macro
+ db spriteface_command
+ db \1 ; person
+ db \2 ; facing
+ endm
+
+ enum follownotexact_command ; $77
+follownotexact: macro
+ db follownotexact_command
+ db \1 ; person2
+ db \2 ; person1
+ endm
+
+ enum earthquake_command ; $78
+earthquake: macro
+ db earthquake_command
+ db \1 ; param
+ endm
+
+ enum changemap_command ; $79
+changemap: macro
+ db changemap_command
+ db \1 ; map_bank
+ dw \2 ; map_data_pointer
+ endm
+
+ enum changeblock_command ; $7a
+changeblock: macro
+ db changeblock_command
+ db \1 ; x
+ db \2 ; y
+ db \3 ; block
+ endm
+
+ enum reloadmap_command ; $7b
+reloadmap: macro
+ db reloadmap_command
+ endm
+
+ enum reloadmappart_command ; $7c
+reloadmappart: macro
+ db reloadmappart_command
+ endm
+
+ enum writecmdqueue_command ; $7d
+writecmdqueue: macro
+ db writecmdqueue_command
+ dw \1 ; queue_pointer
+ endm
+
+ enum delcmdqueue_command ; $7e
+delcmdqueue: macro
+ db delcmdqueue_command
+ db \1 ; byte
+ endm
+
+ enum playmusic_command ; $7f
+playmusic: macro
+ db playmusic_command
+ dw \1 ; music_pointer
+ endm
+
+ enum encountermusic_command ; $80
+encountermusic: macro
+ db encountermusic_command
+ endm
+
+ enum musicfadeout_command ; $81
+musicfadeout: macro
+ db musicfadeout_command
+ dw \1 ; music
+ db \2 ; fadetime
+ endm
+
+ enum playmapmusic_command ; $82
+playmapmusic: macro
+ db playmapmusic_command
+ endm
+
+ enum dontrestartmapmusic_command ; $83
+dontrestartmapmusic: macro
+ db dontrestartmapmusic_command
+ endm
+
+ enum cry_command ; $84
+cry: macro
+ db cry_command
+ dw \1 ; cry_id
+ endm
+
+ enum playsound_command ; $85
+playsound: macro
+ db playsound_command
+ dw \1 ; sound_pointer
+ endm
+
+ enum waitsfx_command ; $86
+waitsfx: macro
+ db waitsfx_command
+ endm
+
+ enum warpsound_command ; $87
+warpsound: macro
+ db warpsound_command
+ endm
+
+ enum specialsound_command ; $88
+specialsound: macro
+ db specialsound_command
+ endm
+
+ enum passtoengine_command ; $89
+passtoengine: macro
+ db passtoengine_command
+ db \1 ; data_pointer
+ endm
+
+ enum newloadmap_command ; $8a
+newloadmap: macro
+ db newloadmap_command
+ db \1 ; which_method
+ endm
+
+ enum pause_command ; $8b
+pause: macro
+ db pause_command
+ db \1 ; length
+ endm
+
+ enum deactivatefacing_command ; $8c
+deactivatefacing: macro
+ db deactivatefacing_command
+ db \1 ; time
+ endm
+
+ enum priorityjump_command ; $8d
+priorityjump: macro
+ db priorityjump_command
+ dw \1 ; pointer
+ endm
+
+ enum warpcheck_command ; $8e
+warpcheck: macro
+ db warpcheck_command
+ endm
+
+ enum ptpriorityjump_command ; $8f
+ptpriorityjump: macro
+ db ptpriorityjump_command
+ dw \1 ; pointer
+ endm
+
+ enum return_command ; $90
+return: macro
+ db return_command
+ endm
+
+ enum end_command ; $91
+end: macro
+ db end_command
+ endm
+
+ enum reloadandreturn_command ; $92
+reloadandreturn: macro
+ db reloadandreturn_command
+ db \1 ; which_method
+ endm
+
+ enum end_all_command ; $93
+end_all: macro
+ db end_all_command
+ endm
+
+ enum pokemart_command ; $94
+pokemart: macro
+ db pokemart_command
+ db \1 ; dialog_id
+ dw \2 ; mart_id
+ endm
+
+ enum elevator_command ; $95
+elevator: macro
+ db elevator_command
+ dw \1 ; floor_list_pointer
+ endm
+
+ enum trade_command ; $96
+trade: macro
+ db trade_command
+ db \1 ; trade_id
+ endm
+
+ enum askforphonenumber_command ; $97
+askforphonenumber: macro
+ db askforphonenumber_command
+ db \1 ; number
+ endm
+
+ enum phonecall_command ; $98
+phonecall: macro
+ db phonecall_command
+ dw \1 ; caller_name
+ endm
+
+ enum hangup_command ; $99
+hangup: macro
+ db hangup_command
+ endm
+
+ enum describedecoration_command ; $9a
+describedecoration: macro
+ db describedecoration_command
+ db \1 ; byte
+ endm
+
+ enum fruittree_command ; $9b
+fruittree: macro
+ db fruittree_command
+ db \1 ; tree_id
+ endm
+
+ enum specialphonecall_command ; $9c
+specialphonecall: macro
+ db specialphonecall_command
+ dw \1 ; call_id
+ endm
+
+ enum checkphonecall_command ; $9d
+checkphonecall: macro
+ db checkphonecall_command
+ endm
+
+ enum verbosegiveitem_command ; $9e
+verbosegiveitem: macro
+ db verbosegiveitem_command
+ db \1 ; item
+if _NARG == 2
+ db \2 ; quantity
+else
+ db 1
+endc
+ endm
+
+ enum verbosegiveitem2_command ; $9f
+verbosegiveitem2: macro
+ db verbosegiveitem2_command
+ db \1 ; item
+ db \2 ; var
+ endm
+
+ enum swarm_command ; $a0
+swarm: macro
+ db swarm_command
+ db \1 ; flag
+ map \2 ; map
+ endm
+
+ enum halloffame_command ; $a1
+halloffame: macro
+ db halloffame_command
+ endm
+
+ enum credits_command ; $a2
+credits: macro
+ db credits_command
+ endm
+
+ enum warpfacing_command ; $a3
+warpfacing: macro
+ db warpfacing_command
+ db \1 ; facing
+ map \2 ; map
+ db \3 ; x
+ db \4 ; y
+ endm
+
+ enum battletowertext_command ; $a4
+battletowertext: macro
+ db battletowertext_command
+ db \1 ; memory
+ endm
+
+ enum landmarktotext_command ; $a5
+landmarktotext: macro
+ db landmarktotext_command
+ db \1 ; id
+ db \2 ; memory
+ endm
+
+ enum trainerclassname_command ; $a6
+trainerclassname: macro
+ db trainerclassname_command
+ db \1 ; id
+ db \2 ; memory
+ endm
+
+ enum name_command ; $a7
+name: macro
+ db name_command
+ db \1 ; type
+ db \2 ; id
+ db \3 ; memory
+ endm
+
+ enum wait_command ; $a8
+wait: macro
+ db wait_command
+ db \1 ; duration
+ endm
+
+ enum check_save_command ; $a9
+check_save: macro
+ db check_save_command
+ endm
diff --git a/macros/scripts/gfx_anim.asm b/macros/scripts/gfx_anim.asm
new file mode 100644
index 000000000..a3fa710a0
--- /dev/null
+++ b/macros/scripts/gfx_anim.asm
@@ -0,0 +1,44 @@
+; pic + oam animations
+
+frame: macro
+ db \1
+x = \2
+if _NARG > 2
+rept _NARG +- 2
+x = x | (1 << (\3 + 1))
+ shift
+endr
+endc
+ db x
+ endm
+
+ enum_start $fc
+
+ enum delanim_command ; $fc
+delanim: macro ; used for oam
+ db delanim_command
+ endm
+
+ enum dorepeat_command ; $fd
+dorepeat: macro
+ db dorepeat_command
+ db \1 ; #
+ endm
+
+ enum setrepeat_command ; $fe
+setrepeat: macro
+ db setrepeat_command
+ db \1 ; #
+ endm
+
+ enum endanim_command ; $ff
+endanim: macro
+ db endanim_command
+ endm
+
+__enum__ = $fe
+
+ enum dorestart_command ; $fe
+dorestart: macro ; used for oam
+ db dorestart_command
+ endm
diff --git a/macros/scripts/maps.asm b/macros/scripts/maps.asm
new file mode 100644
index 000000000..6c1e0b6b6
--- /dev/null
+++ b/macros/scripts/maps.asm
@@ -0,0 +1,108 @@
+map: macro
+;\1: map id
+ db GROUP_\1, MAP_\1
+endm
+
+
+maptrigger: macro
+;\1: script pointer
+ dw \1, 0
+endm
+
+warp_def: macro
+;\1: y: top to bottom, starts at 0
+;\2: x: left to right, starts at 0
+;\3: warp destination: starts at 1
+;\4: map id: from constants/map_constants.asm
+ db \1, \2, \3
+ map \4
+endm
+
+xy_trigger: macro
+;\1: number: controlled by dotrigger/domaptrigger
+;\2: y: top to bottom, starts at 0
+;\3: x: left to right, starts at 0
+;\4: script pointer
+ db \1, \2, \3, $0
+ dw \4
+ db $0, $0
+endm
+
+signpost: macro
+;\1: y: top to bottom, starts at 0
+;\2: x: left to right, starts at 0
+;\3: function: a SIGNPOST_* constant
+;\4: script pointer
+ db \1, \2, \3
+ dw \4
+endm
+
+person_event: macro
+;\1: sprite: a SPRITE_* constant
+;\2: y: top to bottom, starts at 0
+;\3: x: left to right, starts at 0
+;\4: movement function: a SPRITEMOVEDATA_* constant
+;\5, \6: movement radius: y, x
+;\7, \8: hour1 and hour2: control the hours a person_event is visible (0-23)
+; * if hour1 < hour2, the person_event will only appear from hour1 to hour2
+; * if hour1 > hour2, the person_event will not appear from hour2 to hour1
+; * if hour1 == hour2, the person_event will always appear
+; * if hour1 == -1, hour2 is treated as a time-of-day value:
+; a combo of MORN, DAY, and/or NITE, or -1 to always appear
+;\9: color: a PAL_NPC_* constant, or 0 for sprite default
+;\10: function: a PERSONTYPE_* constant
+;\11: sight range: applies to PERSONTYPE_TRAINER
+;\12: script pointer
+;\13: event flag: an EVENT_* constant, or 0 for always
+ db \1, \2 + 4, \3 + 4, \4
+ dn \5, \6
+ db \7, \8
+ shift
+ dn \8, \9
+ shift
+ db \9
+ shift
+ dw \9
+ shift
+ dw \9
+endm
+
+
+trainer: macro
+;\1: flag: an EVENT_BEAT_* constant
+;\2: trainer group
+;\3: trainer id
+;\4: seen text
+;\5: win text
+;\6: loss text
+;\7: after-battle text
+ dw \1
+ db \2, \3
+ dw \4, \5, \6, \7
+endm
+
+itemball: macro
+;\1: item: from constants/item_constants.asm
+;\2: quantity: default 1
+if _NARG == 2
+ db \1, \2
+else
+ db \1, 1
+endc
+endm
+
+elevfloor: macro
+;\1: floor: a FLOOR_* constant
+;\2: warp destination: starts at 1
+;\3: map id
+ db \1, \2
+ map \3
+ENDM
+
+stonetable: macro
+;\1: warp id
+;\2: person_event id
+;\3: script pointer
+ db \1, \2
+ dw \3
+endm
diff --git a/macros/scripts/move_anim.asm b/macros/scripts/move_anim.asm
new file mode 100644
index 000000000..7714bb09a
--- /dev/null
+++ b/macros/scripts/move_anim.asm
@@ -0,0 +1,294 @@
+anim_wait: macro
+if \1 >= $d0
+ flip out
+endc
+ db \1
+ endm
+
+; BattleAnimCommands indexes (see battle/anim_commands.asm)
+ enum_start $d0
+
+ enum anim_obj_command ; $d0
+anim_obj: macro
+ db anim_obj_command
+ db \1 ; obj
+ db (\2 << 3) + \3 ; x
+ db (\4 << 3) + \5 ; y
+ db \6 ; param
+ endm
+
+ enum anim_1gfx_command ; $d1
+anim_1gfx: macro
+ db anim_1gfx_command
+ db \1 ; gfx1
+ endm
+
+ enum anim_2gfx_command ; $d2
+anim_2gfx: macro
+ db anim_2gfx_command
+ db \1 ; gfx1
+ db \2 ; gfx2
+ endm
+
+ enum anim_3gfx_command ; $d3
+anim_3gfx: macro
+ db anim_3gfx_command
+ db \1 ; gfx1
+ db \2 ; gfx2
+ db \3 ; gfx3
+ endm
+
+ enum anim_4gfx_command ; $d4
+anim_4gfx: macro
+ db anim_4gfx_command
+ db \1 ; gfx1
+ db \2 ; gfx2
+ db \3 ; gfx3
+ db \4 ; gfx4
+ endm
+
+ enum anim_5gfx_command ; $d5
+anim_5gfx: macro
+ db anim_5gfx_command
+ db \1 ; gfx1
+ db \2 ; gfx2
+ db \3 ; gfx3
+ db \4 ; gfx4
+ db \5 ; gfx5
+ endm
+
+ enum anim_incobj_command ; $d6
+anim_incobj: macro
+ db anim_incobj_command
+ db \1 ; id
+ endm
+
+ enum anim_setobj_command ; $d7
+anim_setobj: macro
+ db anim_setobj_command
+ db \1 ; id
+ db \2 ; obj
+ endm
+
+ enum anim_incbgeffect_command ; $d8
+anim_incbgeffect: macro
+ db anim_incbgeffect_command
+ db \1 ; effect
+ endm
+
+ enum anim_enemyfeetobj_command ; $d9
+anim_enemyfeetobj: macro
+ db anim_enemyfeetobj_command
+ endm
+
+ enum anim_playerheadobj_command ; $da
+anim_playerheadobj: macro
+ db anim_playerheadobj_command
+ endm
+
+ enum anim_checkpokeball_command ; $db
+anim_checkpokeball: macro
+ db anim_checkpokeball_command
+ endm
+
+ enum anim_transform_command ; $dc
+anim_transform: macro
+ db anim_transform_command
+ endm
+
+ enum anim_raisesub_command ; $dd
+anim_raisesub: macro
+ db anim_raisesub_command
+ endm
+
+ enum anim_dropsub_command ; $de
+anim_dropsub: macro
+ db anim_dropsub_command
+ endm
+
+ enum anim_resetobp0_command ; $df
+anim_resetobp0: macro
+ db anim_resetobp0_command
+ endm
+
+ enum anim_sound_command ; $e0
+anim_sound: macro
+ db anim_sound_command
+ db (\1 << 2) | \2 ; duration, tracks
+ db \3 ; id
+ endm
+
+ enum anim_cry_command ; $e1
+anim_cry: macro
+ db anim_cry_command
+ db \1 ; pitch
+ endm
+
+ enum anim_minimizeopp_command ; $e2
+anim_minimizeopp: macro
+ db anim_minimizeopp_command
+ endm
+
+ enum anim_oamon_command ; $e3
+anim_oamon: macro
+ db anim_oamon_command
+ endm
+
+ enum anim_oamoff_command ; $e4
+anim_oamoff: macro
+ db anim_oamoff_command
+ endm
+
+ enum anim_clearobjs_command ; $e5
+anim_clearobjs: macro
+ db anim_clearobjs_command
+ endm
+
+ enum anim_beatup_command ; $e6
+anim_beatup: macro
+ db anim_beatup_command
+ endm
+
+ enum anim_0xe7_command ; $e7
+anim_0xe7: macro
+ db anim_0xe7_command
+ endm
+
+ enum anim_updateactorpic_command ; $e8
+anim_updateactorpic: macro
+ db anim_updateactorpic_command
+ endm
+
+ enum anim_minimize_command ; $e9
+anim_minimize: macro
+ db anim_minimize_command
+ endm
+
+ enum anim_0xea_command ; $ea
+anim_0xea: macro
+ db anim_0xea_command
+ endm
+
+ enum anim_0xeb_command ; $eb
+anim_0xeb: macro
+ db anim_0xeb_command
+ endm
+
+ enum anim_0xec_command ; $ec
+anim_0xec: macro
+ db anim_0xec_command
+ endm
+
+ enum anim_0xed_command ; $ed
+anim_0xed: macro
+ db anim_0xed_command
+ endm
+
+ enum anim_if_param_and_command ; $ee
+anim_if_param_and: macro
+ db anim_if_param_and_command
+ db \1 ; value
+ dw \2 ; address
+ endm
+
+ enum anim_jumpuntil_command ; $ef
+anim_jumpuntil: macro
+ db anim_jumpuntil_command
+ dw \1 ; address
+ endm
+
+ enum anim_bgeffect_command ; $f0
+anim_bgeffect: macro
+ db anim_bgeffect_command
+ db \1 ; effect
+ db \2 ; unknown
+ db \3 ; unknown
+ db \4 ; unknown
+ endm
+
+ enum anim_bgp_command ; $f1
+anim_bgp: macro
+ db anim_bgp_command
+ db \1 ; colors
+ endm
+
+ enum anim_obp0_command ; $f2
+anim_obp0: macro
+ db anim_obp0_command
+ db \1 ; colors
+ endm
+
+ enum anim_obp1_command ; $f3
+anim_obp1: macro
+ db anim_obp1_command
+ db \1 ; colors
+ endm
+
+ enum anim_clearsprites_command ; $f4
+anim_clearsprites: macro
+ db anim_clearsprites_command
+ endm
+
+ enum anim_0xf5_command ; $f5
+anim_0xf5: macro
+ db anim_0xf5_command
+ endm
+
+ enum anim_0xf6_command ; $f6
+anim_0xf6: macro
+ db anim_0xf6_command
+ endm
+
+ enum anim_0xf7_command ; $f7
+anim_0xf7: macro
+ db anim_0xf7_command
+ endm
+
+ enum anim_if_param_equal_command ; $f8
+anim_if_param_equal: macro
+ db anim_if_param_equal_command
+ db \1 ; value
+ dw \2 ; address
+ endm
+
+ enum anim_setvar_command ; $f9
+anim_setvar: macro
+ db anim_setvar_command
+ db \1 ; value
+ endm
+
+ enum anim_incvar_command ; $fa
+anim_incvar: macro
+ db anim_incvar_command
+ endm
+
+ enum anim_if_var_equal_command ; $fb
+anim_if_var_equal: macro
+ db anim_if_var_equal_command
+ db \1 ; value
+ dw \2 ; address
+ endm
+
+ enum anim_jump_command ; $fc
+anim_jump: macro
+ db anim_jump_command
+ dw \1 ; address
+ endm
+
+ enum anim_loop_command ; $fd
+anim_loop: macro
+ db anim_loop_command
+ db \1 ; count
+ dw \2 ; address
+ endm
+
+ enum anim_call_command ; $fe
+anim_call: macro
+ db anim_call_command
+ dw \1 ; address
+ endm
+
+ enum anim_ret_command ; $ff
+anim_ret: macro
+ db anim_ret_command
+ endm
diff --git a/macros/scripts/movement.asm b/macros/scripts/movement.asm
new file mode 100644
index 000000000..28be559a3
--- /dev/null
+++ b/macros/scripts/movement.asm
@@ -0,0 +1,246 @@
+; MovementPointers indexes (see engine/movement.asm)
+ enum_start
+
+; Directional movements
+
+ enum movement_turn_head ; $00
+turn_head: macro
+ db movement_turn_head | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_turn_step ; $04
+turn_step: macro
+ db movement_turn_step | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_slow_step ; $08
+slow_step: macro
+ db movement_slow_step | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_step ; $0c
+step: macro
+ db movement_step | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_big_step ; $10
+big_step: macro
+ db movement_big_step | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_slow_slide_step ; $14
+slow_slide_step: macro
+ db movement_slow_slide_step | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_slide_step ; $18
+slide_step: macro
+ db movement_slide_step | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_fast_slide_step ; $1c
+fast_slide_step: macro
+ db movement_fast_slide_step | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_turn_away ; $20
+turn_away: macro
+ db movement_turn_away | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_turn_in ; $24
+turn_in: macro
+ db movement_turn_in | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_turn_waterfall ; $28
+turn_waterfall: macro
+ db movement_turn_waterfall | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_slow_jump_step ; $2c
+slow_jump_step: macro
+ db movement_slow_jump_step | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_jump_step ; $30
+jump_step: macro
+ db movement_jump_step | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+ enum movement_fast_jump_step ; $34
+fast_jump_step: macro
+ db movement_fast_jump_step | \1
+ endm
+
+__enum__ = __enum__ + 3
+
+; Control
+ enum movement_remove_sliding ; $38
+remove_sliding: macro
+ db movement_remove_sliding
+ endm
+
+ enum movement_set_sliding ; $39
+set_sliding: macro
+ db movement_set_sliding
+ endm
+
+ enum movement_remove_fixed_facing ; $3a
+remove_fixed_facing: macro
+ db movement_remove_fixed_facing
+ endm
+
+ enum movement_fix_facing ; $3b
+fix_facing: macro
+ db movement_fix_facing
+ endm
+
+ enum movement_show_person ; $3c
+show_person: macro
+ db movement_show_person
+ endm
+
+ enum movement_hide_person ; $3d
+hide_person: macro
+ db movement_hide_person
+ endm
+
+; Sleep
+
+ enum movement_step_sleep ; $3e
+step_sleep: macro
+if \1 <= 8
+ db movement_step_sleep + \1 - 1
+else
+ db movement_step_sleep + 8, \1
+endc
+endm
+
+__enum__ = __enum__ + 8
+
+ enum movement_step_end ; $47
+step_end: macro
+ db movement_step_end
+ endm
+
+ enum movement_step_48 ; $48
+step_48: macro
+ db movement_step_48
+ db \1 ; ???
+ endm
+
+ enum movement_remove_person ; $49
+remove_person: macro
+ db movement_remove_person
+ endm
+
+ enum movement_step_loop ; $4a
+step_loop: macro
+ db movement_step_loop
+ endm
+
+ enum movement_step_4b ; $4b
+step_4b: macro
+ db movement_step_4b
+ endm
+
+ enum movement_teleport_from ; $4c
+teleport_from: macro
+ db movement_teleport_from
+ endm
+
+ enum movement_teleport_to ; $4d
+teleport_to: macro
+ db movement_teleport_to
+ endm
+
+ enum movement_skyfall ; $4e
+skyfall: macro
+ db movement_skyfall
+ endm
+
+ enum movement_step_dig ; $4f
+step_dig: macro
+ db movement_step_dig
+ db \1 ; length
+ endm
+
+ enum movement_step_bump ; $50
+step_bump: macro
+ db movement_step_bump
+ endm
+
+ enum movement_fish_got_bite ; $51
+fish_got_bite: macro
+ db movement_fish_got_bite
+ endm
+
+ enum movement_fish_cast_rod ; $52
+fish_cast_rod: macro
+ db movement_fish_cast_rod
+ endm
+
+ enum movement_hide_emote ; $53
+hide_emote: macro
+ db movement_hide_emote
+ endm
+
+ enum movement_show_emote ; $54
+show_emote: macro
+ db movement_show_emote
+ endm
+
+ enum movement_step_shake ; $55
+step_shake: macro
+ db movement_step_shake
+ db \1 ; displacement
+ endm
+
+ enum movement_tree_shake ; $56
+tree_shake: macro
+ db movement_tree_shake
+ endm
+
+ enum movement_rock_smash ; $57
+rock_smash: macro
+ db movement_rock_smash
+ db \1 ; length
+ endm
+
+ enum movement_return_dig ; $58
+return_dig: macro
+ db movement_return_dig
+ db \1 ; length
+ endm
+
+ enum movement_skyfall_top ; $59
+skyfall_top: macro
+ db movement_skyfall_top
+ endm
diff --git a/macros/scripts/text.asm b/macros/scripts/text.asm
new file mode 100644
index 000000000..839f78eb7
--- /dev/null
+++ b/macros/scripts/text.asm
@@ -0,0 +1,133 @@
+text EQUS "db \"<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).
+
+; TextCommands indexes (see home/text.asm)
+ enum_start $01
+
+ enum TX_RAM ; $01
+text_from_ram: MACRO
+ db TX_RAM
+ dw \1
+ ENDM
+
+ enum TX_BCD ; $02
+text_bcd: macro
+ db TX_BCD
+ dw \1
+ db \2
+ ENDM
+
+ enum TX_MOVE ; $03
+text_move: macro
+ db TX_MOVE
+ dw \1
+ ENDM
+
+ enum TX_BOX ; $04
+text_box: macro
+ db TX_BOX
+ dw \1
+ db \2, \3
+ ENDM
+
+ enum TX_LOW ; $05
+text_low: macro
+ db TX_LOW
+ endm
+
+ enum WAIT_BUTTON ; $06
+text_waitbutton: macro
+ db WAIT_BUTTON
+ endm
+
+ enum TX_SCROLL ; $07
+text_scroll: macro
+ db TX_SCROLL
+ endm
+
+ enum START_ASM ; $08
+start_asm: macro
+ db START_ASM
+ endm
+
+ enum TX_NUM ; $09
+deciram: macro
+ db TX_NUM
+ dw \1 ; address
+ dn \2, \3 ; bytes, digits
+ endm
+
+ enum TX_EXIT ; $0a
+interpret_data: macro
+ db TX_EXIT
+ endm
+
+ enum TX_SOUND_0B ; $0b
+sound_dex_fanfare_50_79: macro
+ db TX_SOUND_0B
+ endm
+
+ enum TX_DOTS ; $0c
+limited_interpret_data: macro
+ db TX_DOTS
+ db \1
+ endm
+
+ enum TX_LINK_WAIT_BUTTON ; $0d
+link_wait_button: macro
+ db TX_LINK_WAIT_BUTTON
+ endm
+
+ enum TX_SOUND_0E ; $0e
+sound_dex_fanfare_20_49: macro
+ db TX_SOUND_0E
+ endm
+
+ enum TX_SOUND_0F ; $0f
+sound_item: macro
+ db TX_SOUND_0F
+ endm
+
+ enum TX_SOUND_10 ; $10
+sound_caught_mon: macro
+ db TX_SOUND_10
+ endm
+
+ enum TX_SOUND_11 ; $11
+sound_dex_fanfare_80_109: macro
+ db TX_SOUND_11
+ endm
+
+ enum TX_SOUND_12 ; $12
+sound_fanfare: macro
+ db TX_SOUND_12
+ endm
+
+ enum TX_SOUND_13 ; $13
+sound_slot_machine_start: macro
+ db TX_SOUND_13
+ endm
+
+ enum TX_STRINGBUFFER ; $14
+text_buffer: macro
+ db TX_STRINGBUFFER
+ db \1
+ endm
+
+ enum TX_DAY ; $15
+current_day: macro
+ db TX_DAY
+ endm
+
+ enum TX_FAR ; $16
+text_jump: MACRO
+ db TX_FAR
+ dw \1
+ db BANK(\1)
+ ENDM
diff --git a/macros/scripts/trade_anim.asm b/macros/scripts/trade_anim.asm
new file mode 100644
index 000000000..4b0291eea
--- /dev/null
+++ b/macros/scripts/trade_anim.asm
@@ -0,0 +1,255 @@
+; DoTradeAnimation.JumpTable indexes (see engine/trade/animation.asm)
+ enum_start
+
+ enum tradeanim_next_command ; $00
+tradeanim_next: macro
+ db tradeanim_next_command
+endm
+
+ enum tradeanim_show_givemon_data_command ; $01
+tradeanim_show_givemon_data: macro
+ db tradeanim_show_givemon_data_command
+endm
+
+ enum tradeanim_show_getmon_data_command ; $02
+tradeanim_show_getmon_data: macro
+ db tradeanim_show_getmon_data_command
+endm
+
+ enum tradeanim_enter_link_tube_command ; $03
+tradeanim_enter_link_tube: macro
+ db tradeanim_enter_link_tube_command
+endm
+
+__enum__ set $5
+
+ enum tradeanim_exit_link_tube_command ; $05
+tradeanim_exit_link_tube: macro
+ db tradeanim_exit_link_tube_command
+endm
+
+ enum tradeanim_tube_to_ot_command ; $06
+tradeanim_tube_to_ot: macro
+ db tradeanim_tube_to_ot_command
+endm
+
+__enum__ set $0e
+
+ enum tradeanim_tube_to_player_command ; $0e
+tradeanim_tube_to_player: macro
+ db tradeanim_tube_to_player_command
+endm
+
+__enum__ set $16
+
+ enum tradeanim_sent_to_ot_text_command ; $16
+tradeanim_sent_to_ot_text: macro
+ db tradeanim_sent_to_ot_text_command
+endm
+
+ enum tradeanim_ot_bids_farewell_command ; $17
+tradeanim_ot_bids_farewell: macro
+ db tradeanim_ot_bids_farewell_command
+endm
+
+ enum tradeanim_take_care_of_text_command ; $18
+tradeanim_take_care_of_text: macro
+ db tradeanim_take_care_of_text_command
+endm
+
+ enum tradeanim_ot_sends_text_1_command ; $19
+tradeanim_ot_sends_text_1: macro
+ db tradeanim_ot_sends_text_1_command
+endm
+
+ enum tradeanim_ot_sends_text_2_command ; $1a
+tradeanim_ot_sends_text_2: macro
+ db tradeanim_ot_sends_text_2_command
+endm
+
+ enum tradeanim_setup_givemon_scroll_command ; $1b
+tradeanim_setup_givemon_scroll: macro
+ db tradeanim_setup_givemon_scroll_command
+endm
+
+ enum tradeanim_do_givemon_scroll_command ; $1c
+tradeanim_do_givemon_scroll: macro
+ db tradeanim_do_givemon_scroll_command
+endm
+
+ enum tradeanim_frontpic_scroll_command ; $1d
+tradeanim_frontpic_scroll: macro
+ db tradeanim_frontpic_scroll_command
+endm
+
+ enum tradeanim_textbox_scroll_command ; $1e
+tradeanim_textbox_scroll: macro
+ db tradeanim_textbox_scroll_command
+endm
+
+ enum tradeanim_scroll_out_right_command ; $1f
+tradeanim_scroll_out_right: macro
+ db tradeanim_scroll_out_right_command
+endm
+
+__enum__ set $21
+
+ enum tradeanim_wait_80_command ; $21
+tradeanim_wait_80: macro
+ db tradeanim_wait_80_command
+endm
+
+ enum tradeanim_wait_40_command ; $22
+tradeanim_wait_40: macro
+ db tradeanim_wait_40_command
+endm
+
+ enum tradeanim_rocking_ball_command ; $23
+tradeanim_rocking_ball: macro
+ db tradeanim_rocking_ball_command
+endm
+
+ enum tradeanim_drop_ball_command ; $24
+tradeanim_drop_ball: macro
+ db tradeanim_drop_ball_command
+endm
+
+ enum tradeanim_wait_anim_command ; $25
+tradeanim_wait_anim: macro
+ db tradeanim_wait_anim_command
+endm
+
+__enum__ set $27
+
+ enum tradeanim_poof_command ; $27
+tradeanim_poof: macro
+ db tradeanim_poof_command
+endm
+
+ enum tradeanim_bulge_through_tube_command ; $28
+tradeanim_bulge_through_tube: macro
+ db tradeanim_bulge_through_tube_command
+endm
+
+ enum tradeanim_give_trademon_sfx_command ; $29
+tradeanim_give_trademon_sfx: macro
+ db tradeanim_give_trademon_sfx_command
+endm
+
+ enum tradeanim_get_trademon_sfx_command ; $2a
+tradeanim_get_trademon_sfx: macro
+ db tradeanim_get_trademon_sfx_command
+endm
+
+ enum tradeanim_end_command ; $2b
+tradeanim_end: macro
+ db tradeanim_end_command
+endm
+
+ enum tradeanim_animate_frontpic_command ; $2c
+tradeanim_animate_frontpic: macro
+ db tradeanim_animate_frontpic_command
+endm
+
+ enum tradeanim_wait_96_command ; $2d
+tradeanim_wait_96: macro
+ db tradeanim_wait_96_command
+endm
+
+ enum tradeanim_wait_80_if_ot_egg_command ; $2e
+tradeanim_wait_80_if_ot_egg: macro
+ db tradeanim_wait_80_if_ot_egg_command
+endm
+
+ enum tradeanim_wait_180_if_ot_egg_command ; $2f
+tradeanim_wait_180_if_ot_egg: macro
+ db tradeanim_wait_180_if_ot_egg_command
+endm
+
+
+; Mobile
+ enum_start $01
+
+ enum mobiletradeanim_showgivemon_command ; $01
+mobiletradeanim_showgivemon: macro
+ db mobiletradeanim_showgivemon_command
+endm
+
+ enum mobiletradeanim_02_command ; $02
+mobiletradeanim_02: macro
+ db mobiletradeanim_02_command
+endm
+
+ enum mobiletradeanim_sendmon_command ; $03
+mobiletradeanim_sendmon: macro
+ db mobiletradeanim_sendmon_command
+endm
+
+__enum__ set $05
+
+ enum mobiletradeanim_05_command ; $05
+mobiletradeanim_05: macro
+ db mobiletradeanim_05_command
+endm
+
+ enum mobiletradeanim_06_command ; $06
+mobiletradeanim_06: macro
+ db mobiletradeanim_06_command
+endm
+
+ enum mobiletradeanim_07_command ; $07
+mobiletradeanim_07: macro
+ db mobiletradeanim_07_command
+endm
+
+ enum mobiletradeanim_receivemon_command ; $08
+mobiletradeanim_receivemon: macro
+ db mobiletradeanim_receivemon_command
+endm
+
+__enum__ set $0b
+
+ enum mobiletradeanim_showgetmon_command ; $0b
+mobiletradeanim_showgetmon: macro
+ db mobiletradeanim_showgetmon_command
+endm
+
+ enum mobiletradeanim_end_command ; $0c
+mobiletradeanim_end: macro
+ db mobiletradeanim_end_command
+endm
+
+ enum mobiletradeanim_showgtsgivemon_command ; $0d
+mobiletradeanim_showgtsgivemon: macro
+ db mobiletradeanim_showgtsgivemon_command
+endm
+
+ enum mobiletradeanim_showgtsgetmon_command ; $0e
+mobiletradeanim_showgtsgetmon: macro
+ db mobiletradeanim_showgtsgetmon_command
+endm
+
+ enum mobiletradeanim_0f_command ; $0f
+mobiletradeanim_0f: macro
+ db mobiletradeanim_0f_command
+endm
+
+ enum mobiletradeanim_10_command ; $10
+mobiletradeanim_10: macro
+ db mobiletradeanim_10_command
+endm
+
+ enum mobiletradeanim_11_command ; $11
+mobiletradeanim_11: macro
+ db mobiletradeanim_11_command
+endm
+
+ enum mobiletradeanim_12_command ; $12
+mobiletradeanim_12: macro
+ db mobiletradeanim_12_command
+endm
+
+ enum mobiletradeanim_showoddegg_command ; $13
+mobiletradeanim_showoddegg: macro
+ db mobiletradeanim_showoddegg_command
+endm