pokeemerald/asm/macros/battle_anim_script.inc

331 lines
5.5 KiB
PHP
Raw Normal View History

2017-12-31 16:28:57 +01:00
@ commands
2018-12-02 19:24:06 +01:00
.macro loadspritegfx tag:req
2017-12-31 16:28:57 +01:00
.byte 0x0
2018-12-02 19:24:06 +01:00
.2byte \tag
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro unloadspritegfx tag:req
2017-12-31 16:28:57 +01:00
.byte 0x1
2018-12-02 19:24:06 +01:00
.2byte \tag
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro createsprite template:req, anim_battler:req, subpriority_offset:req, argv:vararg
2017-12-31 16:28:57 +01:00
.byte 0x02
.4byte \template
2018-11-13 22:19:52 +01:00
.if \anim_battler == ANIM_TARGET
.byte 0x80 | (\subpriority_offset & 0x7F)
.else
.byte (\subpriority_offset & 0x7F)
.endif
.byte (.Lsprite_\@_2 - .Lsprite_\@_1) / 2
.Lsprite_\@_1:
.2byte \argv
.Lsprite_\@_2:
.endm
2018-12-02 19:24:06 +01:00
.macro createvisualtask addr:req, priority:req, argv:vararg
2017-12-31 16:28:57 +01:00
.byte 0x03
.4byte \addr
.byte \priority
.byte (.Lcreatetask_\@_2 - .Lcreatetask_\@_1) / 2
.Lcreatetask_\@_1:
.2byte \argv
.Lcreatetask_\@_2:
.endm
2018-12-02 19:24:06 +01:00
.macro delay param0:req
2017-12-31 16:28:57 +01:00
.byte 0x4
.byte \param0
.endm
.macro waitforvisualfinish
.byte 0x5
.endm
.macro hang1
.byte 0x6
.endm
.macro hang2
.byte 0x7
.endm
.macro end
.byte 0x8
.endm
2018-12-02 19:24:06 +01:00
.macro playse se:req
2017-12-31 16:28:57 +01:00
.byte 0x9
2018-12-02 19:24:06 +01:00
.2byte \se
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro monbg battler:req
2017-12-31 16:28:57 +01:00
.byte 0xa
2018-09-01 18:36:08 +02:00
.byte \battler
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro clearmonbg battler:req
2017-12-31 16:28:57 +01:00
.byte 0xb
2018-09-01 18:36:08 +02:00
.byte \battler
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro setalpha eva:req, evb:req
2018-09-12 22:58:03 +02:00
.byte 0x0C
.2byte ((\evb) << 8) | (\eva)
2017-12-31 16:28:57 +01:00
.endm
.macro blendoff
.byte 0xd
.endm
2018-12-02 19:24:06 +01:00
.macro call param0:req
2017-12-31 16:28:57 +01:00
.byte 0xe
.4byte \param0
.endm
.macro return
.byte 0xf
.endm
2018-12-02 19:24:06 +01:00
.macro setarg param0:req, param1:req
2017-12-31 16:28:57 +01:00
.byte 0x10
.byte \param0
.2byte \param1
.endm
2018-12-02 19:24:06 +01:00
.macro choosetwoturnanim param0:req, param1:req
2017-12-31 16:28:57 +01:00
.byte 0x11
.4byte \param0
.4byte \param1
.endm
2018-12-02 19:24:06 +01:00
.macro jumpifmoveturn param0:req, ptr:req
2017-12-31 16:28:57 +01:00
.byte 0x12
.byte \param0
2018-12-02 19:24:06 +01:00
.4byte \ptr
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro goto ptr:req
2017-12-31 16:28:57 +01:00
.byte 0x13
2018-12-02 19:24:06 +01:00
.4byte \ptr
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro fadetobg bg:req
2017-12-31 16:28:57 +01:00
.byte 0x14
2018-12-02 19:24:06 +01:00
.byte \bg
2017-12-31 16:28:57 +01:00
.endm
.macro restorebg
.byte 0x15
.endm
.macro waitbgfadeout
.byte 0x16
.endm
.macro waitbgfadein
.byte 0x17
.endm
2018-12-02 19:24:06 +01:00
.macro changebg bg:req
2017-12-31 16:28:57 +01:00
.byte 0x18
2018-12-02 19:24:06 +01:00
.byte \bg
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro playsewithpan se:req, pan:req
2017-12-31 16:28:57 +01:00
.byte 0x19
2018-12-02 19:24:06 +01:00
.2byte \se
.byte \pan
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro setpan pan:req
2017-12-31 16:28:57 +01:00
.byte 0x1a
2018-12-02 19:24:06 +01:00
.byte \pan
2017-12-31 16:28:57 +01:00
.endm
.macro panse_1B se:req, param1:req, param2:req, param3:req, param4:req
2017-12-31 16:28:57 +01:00
.byte 0x1b
2018-12-02 19:24:06 +01:00
.2byte \se
2017-12-31 16:28:57 +01:00
.byte \param1
.byte \param2
.byte \param3
.byte \param4
.endm
2019-04-02 08:36:22 +02:00
.macro loopsewithpan se:req, pan:req, wait:req, times:req
2017-12-31 16:28:57 +01:00
.byte 0x1c
2018-12-02 19:24:06 +01:00
.2byte \se
2019-04-02 08:36:22 +02:00
.byte \pan
.byte \wait
.byte \times
2017-12-31 16:28:57 +01:00
.endm
2019-04-02 08:36:22 +02:00
.macro waitplaysewithpan se:req, pan:req, wait:req
2017-12-31 16:28:57 +01:00
.byte 0x1d
2018-12-02 19:24:06 +01:00
.2byte \se
2019-04-02 08:36:22 +02:00
.byte \pan
.byte \wait
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro setbldcnt param0:req
2017-12-31 16:28:57 +01:00
.byte 0x1e
.2byte \param0
.endm
2018-12-02 19:24:06 +01:00
.macro createsoundtask addr:req, argv:vararg
2017-12-31 16:28:57 +01:00
.byte 0x1F
.4byte \addr
.byte (.Lcreatetask_1F_\@_2 - .Lcreatetask_1F_\@_1) / 2
.Lcreatetask_1F_\@_1:
.2byte \argv
.Lcreatetask_1F_\@_2:
.endm
.macro waitsound
.byte 0x20
.endm
2018-12-02 19:24:06 +01:00
.macro jumpargeq param0:req, param1:req, ptr:req
2017-12-31 16:28:57 +01:00
.byte 0x21
.byte \param0
.2byte \param1
2018-12-02 19:24:06 +01:00
.4byte \ptr
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro monbg_22 battler:req
2017-12-31 16:28:57 +01:00
.byte 0x22
2018-09-01 18:36:08 +02:00
.byte \battler
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro clearmonbg_23 battler:req
2017-12-31 16:28:57 +01:00
.byte 0x23
2018-09-01 18:36:08 +02:00
.byte \battler
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro jumpifcontest ptr:req
2017-12-31 16:28:57 +01:00
.byte 0x24
2018-12-02 19:24:06 +01:00
.4byte \ptr
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro fadetobgfromset param0:req, param1:req, param2:req
2017-12-31 16:28:57 +01:00
.byte 0x25
.byte \param0
.byte \param1
.byte \param2
.endm
.macro panse_26 se:req, param1:req, param2:req, param3:req, param4:req
2017-12-31 16:28:57 +01:00
.byte 0x26
2018-12-02 19:24:06 +01:00
.2byte \se
2017-12-31 16:28:57 +01:00
.byte \param1
.byte \param2
.byte \param3
.byte \param4
.endm
.macro panse_27 se:req, param1:req, param2:req, param3:req, param4:req
2017-12-31 16:28:57 +01:00
.byte 0x27
2018-12-02 19:24:06 +01:00
.2byte \se
2017-12-31 16:28:57 +01:00
.byte \param1
.byte \param2
.byte \param3
.byte \param4
.endm
2018-12-02 19:24:06 +01:00
.macro monbgprio_28 battler:req
2017-12-31 16:28:57 +01:00
.byte 0x28
2018-09-01 18:36:08 +02:00
.byte \battler
2017-12-31 16:28:57 +01:00
.endm
.macro monbgprio_29
.byte 0x29
.endm
2018-12-02 19:24:06 +01:00
.macro monbgprio_2A battler:req
2017-12-31 16:28:57 +01:00
.byte 0x2a
2018-09-01 18:36:08 +02:00
.byte \battler
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro invisible battler:req
2017-12-31 16:28:57 +01:00
.byte 0x2b
2018-09-01 18:36:08 +02:00
.byte \battler
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro visible battler:req
2017-12-31 16:28:57 +01:00
.byte 0x2c
2018-09-01 18:36:08 +02:00
.byte \battler
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro doublebattle_2D battler:req
2017-12-31 16:28:57 +01:00
.byte 0x2d
2018-09-01 18:36:08 +02:00
.byte \battler
2017-12-31 16:28:57 +01:00
.endm
2018-12-02 19:24:06 +01:00
.macro doublebattle_2E battler:req
2017-12-31 16:28:57 +01:00
.byte 0x2e
2018-09-01 18:36:08 +02:00
.byte \battler
2017-12-31 16:28:57 +01:00
.endm
.macro stopsound
.byte 0x2f
.endm
2018-09-10 21:19:19 +02:00
@ useful macros
2018-12-02 19:24:06 +01:00
.macro jumpreteq value:req, ptr:req
2018-09-10 21:19:19 +02:00
jumpargeq ARG_RET_ID, \value, \ptr
.endm
2018-12-02 19:24:06 +01:00
.macro jumprettrue ptr:req
2018-09-10 21:19:19 +02:00
jumpreteq TRUE, \ptr
.endm
2018-12-02 19:24:06 +01:00
.macro jumpretfalse ptr:req
2018-09-10 21:19:19 +02:00
jumpreteq FALSE, \ptr
.endm
2019-04-01 14:43:18 +02:00
.macro jumpifdoublebattle ptr:req
createvisualtask AnimTask_IsDoubleBattle, 0
jumprettrue \ptr
.endm
2020-05-25 08:37:32 +02:00
@ keep CFRU macros cause I'm lazy. todo: update to createsprite and createvisualtask, respectively
.macro launchtemplate launchtemplatePtr launchtemplatePriority launchtemplateArgsNo launchtemplatearg0 launchtemplatearg1 launchtemplatearg2 launchtemplatearg3 launchtemplatearg4 launchtemplatearg5 launchtemplatearg6 launchtemplatearg7 launchtemplatearg8
.byte 0x2
.word \launchtemplatePtr
.byte \launchtemplatePriority
.byte \launchtemplateArgsNo
.hword \launchtemplatearg0
.hword \launchtemplatearg1
.hword \launchtemplatearg2
.hword \launchtemplatearg3
.hword \launchtemplatearg4
.hword \launchtemplatearg5
.hword \launchtemplatearg6
.hword \launchtemplatearg7
.hword \launchtemplatearg8
.endm
.macro launchtask launchtaskPtr launchtaskPriority launchtaskArgsNo launchtaskarg0 launchtaskarg1 launchtaskarg2 launchtaskarg3 launchtaskarg4 launchtaskarg5 launchtaskarg6 launchtaskarg7 launchtaskarg8
.byte 0x3
.word \launchtaskPtr
.byte \launchtaskPriority
.byte \launchtaskArgsNo
.hword \launchtaskarg0
.hword \launchtaskarg1
.hword \launchtaskarg2
.hword \launchtaskarg3
.hword \launchtaskarg4
.hword \launchtaskarg5
.hword \launchtaskarg6
.hword \launchtaskarg7
.hword \launchtaskarg8
.endm
.macro setblends setblends_value
.byte 0xC
.hword \setblends_value
.endm