# conditions:
# 00 A = B
# 01 A != B
# 02 A > B
# 03 A < B
# 04 A & B   <- at least one common bit
# 05 A &~ B  <- no common bits

# general macros
chosen.status1.animation             66 battler.bs_battlers 00 param::                            # Plays regular status animation for the battler. Seemingly unused.
chosen.status2.animation             66 battler.bs_battlers 01 param::                            # Plays secondary status animation for the battler.
if.status3.goto                      21 battler.bs_battlers status3:: 00 ptr<`bse`>               # If a certain battler has a certain status3, goto another address or section.
if.not.status3.goto                  21 battler.bs_battlers status3:: 01 ptr<`bse`>               # If a certain battler does not have a certain status3, goto another address or section.
[AXPE_AXVE] set.stat.changer         2E 1E 60 01 02 stat.bs_statchanger                           # Sets what stat should be changed and how much it should increase/decrease.
[AXPE_AXVE] set.move.effect          2E 21 4D 02 02 effect.bs_moveeffects                         # Sets a certain effect for a battle script like burn/confusion/stat drop, not to be confused with move effects for moves themselves
[AXPE_AXVE] if.move.goto             2A 00 E6 4B 02 02 move:data.pokemon.moves.names ptr<`bse`>   # Compares gCurrentMove with the move being checked.
                                                                                                  # If the comparison is true, goto another address or section.
[AXPE_AXVE] if.not.move.goto         2A 01 E6 4B 02 02 move:data.pokemon.moves.names ptr<`bse`>   # Compares gCurrentMove with the move being checked.
                                                                                                  # If the comparison is false, goto another address or section.
[AXPE_AXVE] if.move.noeffect.goto    29 04 68 4C 02 02 29 ptr<`bse`>                              # If the move had no effect at all, goto another address or section.
[AXPE_AXVE] if.battletype.goto       2A 04 F8 39 02 02 param: ptr<`bse`>                          # Checks gBattleTypeFlags to see if the battle flag in the param is set, like if it's a wild or trainer battle
[AXPE_AXVE] if.not.battletype.goto   2A 05 F8 39 02 02 param: ptr<`bse`>                          # Checks gBattleTypeFlags to see if the battle flag in the param is set
[BPRE_BPGE] set.stat.changer         2E DE 3F 02 02 stat.bs_statchanger                           # Sets what stat should be changed and how much it should increase/decrease.
[BPRE_BPGE] set.move.effect          2E 85 3E 02 02 effect.bs_moveeffects                         # Sets a certain effect for a battle script like burn/confusion/stat drop, not to be confused with move effects for moves themselves
[BPRE_BPGE] if.move.goto             2A 00 4A 3D 02 02 move:data.pokemon.moves.names ptr<`bse`>   # Compares gCurrentMove with the move being checked.
                                                                                                  # If the comparison is true, goto another address or section.
[BPRE_BPGE] if.not.move.goto         2A 01 4A 3D 02 02 move:data.pokemon.moves.names ptr<`bse`>   # Compares gCurrentMove with the move being checked.
                                                                                                  # If the comparison is false, goto another address or section.
[BPRE_BPGE] if.move.noeffect.goto    29 04 CC 3D 02 02 29 ptr<`bse`>                              # If the move had no effect at all, goto another address or section.
[BPRE_BPGE] if.battletype.goto       2B 04 4C 2B 02 02 param:: ptr<`bse`>                         # checks gBattleTypeFlags to see if the battle flag in the param is set, like if it's a wild or trainer battle
[BPRE_BPGE] if.not.battletype.goto   2B 05 4C 2B 02 02 param:: ptr<`bse`>                         # checks gBattleTypeFlags to see if the battle flag in the param is not set
[BPEE] set.stat.changer              2E 8E 44 02 02 stat.bs_statchanger                           # Sets what stat should be changed and how much it should increase/decrease.
[BPEE] set.move.effect               2E 35 43 02 02 effect.bs_moveeffects                         # Sets a certain effect for a battle script like burn/confusion/stat drop, not to be confused with move effects for moves themselves
[BPEE] if.move.goto                  2A 00 EA 41 02 02 move:data.pokemon.moves.names ptr<`bse`>   # Compares gCurrentMove with the move being checked.
                                                                                                  # If the comparison is true, goto another address or section.
[BPEE] if.not.move.goto              2A 01 EA 41 02 02 move:data.pokemon.moves.names ptr<`bse`>   # Compares gCurrentMove with the move being checked.
                                                                                                  # If the comparison is false, goto another address or section.
[BPEE] if.move.noeffect.goto         29 04 7C 42 02 02 29 ptr<`bse`>                              # If the move had no effect at all, goto another address or section.
[BPEE] if.battle.type.goto           2B 04 EC 2F 02 02 param:: ptr<`bse`>                         # Checks gBattleTypeFlags to see if the battle flag in the param is set, like if it's a wild or trainer battle
[BPEE] if.not.battle.type.goto       2B 05 EC 2F 02 02 param:: ptr<`bse`>                         # Checks gBattleTypeFlags to see if the battle flag in the param is not set

# decomp names of general macros
chosenstatus1animation             66 battler.bs_battlers 00 param::                              # alias for chosen.status1.animation
chosenstatus2animation             66 battler.bs_battlers 01 param::                              # alias for chosen.status2.animation
jumpifstatus3                      21 battler.bs_battlers status3:: 00 ptr<`bse`>                 # alias for if.status3.goto
jumpifnostatus3                    21 battler.bs_battlers status3:: 01 ptr<`bse`>                 # alias for if.not.status3.goto
[AXPE_AXVE] setstatchanger         2E 1E 60 01 02 stat.bs_statchanger                             # alias for set.stat.changer
[AXPE_AXVE] setmoveeffect          2E 21 4D 02 02 effect.bs_moveeffects                           # alias for set.move.effect
[AXPE_AXVE] jumpifmove             2A 00 E6 4B 02 02 move:data.pokemon.moves.names ptr<`bse`>     # alias for if.move.goto
[AXPE_AXVE] jumpifnotmove          2A 01 E6 4B 02 02 move:data.pokemon.moves.names ptr<`bse`>     # alias for if.not.move.goto
[AXPE_AXVE] jumpifmovehadnoeffect  29 04 68 4C 02 02 29 ptr<`bse`>                                # alias for if.move.noeffect.goto
[AXPE_AXVE] jumpifbattletype       2A 04 F8 39 02 02 param: ptr<`bse`>                            # alias for if.battle.type.goto
[AXPE_AXVE] jumpifnotbattletype    2A 05 F8 39 02 02 param: ptr<`bse`>                            # alias for if.not.battle.type.goto
[BPRE_BPGE] setstatchanger         2E DE 3F 02 02 stat.bs_statchanger                             # alias for set.stat.changer
[BPRE_BPGE] setmoveeffect          2E 85 3E 02 02 effect.bs_moveeffects                           # alias for set.move.effect
[BPRE_BPGE] jumpifmove             2A 00 4A 3D 02 02 move:data.pokemon.moves.names ptr<`bse`>     # alias for if.move.goto
[BPRE_BPGE] jumpifnotmove          2A 01 4A 3D 02 02 move:data.pokemon.moves.names ptr<`bse`>     # alias for if.not.move.goto
[BPRE_BPGE] jumpifmovehadnoeffect  29 04 CC 3D 02 02 29 ptr<`bse`>                                # alias for if.move.noeffect.goto
[BPRE_BPGE] jumpifbattletype       2B 04 4C 2B 02 02 param:: ptr<`bse`>                           # alias for if.battle.type.goto
[BPRE_BPGE] jumpifnotbattletype    2B 05 4C 2B 02 02 param:: ptr<`bse`>                           # alias for if.not.battle.type.goto
[BPEE] setstatchanger              2E 8E 44 02 02 stat.bs_statchanger                             # alias for set.stat.changer
[BPEE] setmoveeffect               2E 35 43 02 02 effect.bs_moveeffects                           # alias for set.move.effect
[BPEE] jumpifmove                  2A 00 EA 41 02 02 move:data.pokemon.moves.names ptr<`bse`>     # alias for if.move.goto
[BPEE] jumpifnotmove               2A 01 EA 41 02 02 move:data.pokemon.moves.names ptr<`bse`>     # alias for if.not.move.goto
[BPEE] jumpifmovehadnoeffect       29 04 7C 42 02 02 29 ptr<`bse`>                                # alias for if.move.noeffect.goto
[BPEE] jumpifbattletype            2B 04 EC 2F 02 02 param:: ptr<`bse`>                           # alias for if.battle.type.goto
[BPEE] jumpifnotbattletype         2B 05 EC 2F 02 02 param:: ptr<`bse`>                           # alias for if.not.battle.type.goto

# moveend macros
[AXPE_AXVE] moveend.all       2E 0C 60 01 02 00 49 00 00       # does all cases for moveend
[AXPE_AXVE] moveend.case      2E 0C 60 01 02 case. 49 01 00    # does a specific case for moveend
[AXPE_AXVE] moveend.from      2E 0C 60 01 02 from. 49 00 00    # does all cases from a specific point for moveend
[AXPE_AXVE] moveend.to        2E 0C 60 01 02 00 49 02 to.      # does all cases up to a specific point for moveend
[AXPE_AXVE] moveend.from.to   2E 0C 60 01 02 from. 49 02 to.   # does all cases from and up to specific points for moveend
[BPRE_BPGE] moveend.all       2E D8 3F 02 02 00 49 00 00       # does all cases for moveend
[BPRE_BPGE] moveend.case      2E D8 3F 02 02 case. 49 01 00    # does a specific case for moveend
[BPRE_BPGE] moveend.from      2E D8 3F 02 02 from. 49 00 00    # does all cases from a specific point for moveend
[BPRE_BPGE] moveend.to        2E D8 3F 02 02 00 49 02 to.      # does all cases up to a specific point for moveend
[BPRE_BPGE] moveend.from.to   2E D8 3F 02 02 from. 49 02 to.   # does all cases from and up to specific points for moveend
[BPEE] moveend.all            2E 88 44 02 02 00 49 00 00       # does all cases for moveend
[BPEE] moveend.case           2E 88 44 02 02 case. 49 01 00    # does a specific case for moveend
[BPEE] moveend.from           2E 88 44 02 02 from. 49 00 00    # does all cases from a specific point for moveend
[BPEE] moveend.to             2E 88 44 02 02 00 49 02 to.      # does all cases up to a specific point for moveend
[BPEE] moveend.fromto         2E 88 44 02 02 from. 49 02 to.   # does all cases from and up to specific points for moveend

# decomp names for moveend macros
[AXPE_AXVE] moveendall       2E 0C 60 01 02 00 49 00 00      # alias for moveend.all
[AXPE_AXVE] moveendcase      2E 0C 60 01 02 case. 49 01 00   # alias for moveend.case
[AXPE_AXVE] moveendfrom      2E 0C 60 01 02 from. 49 00 00   # alias for moveend.from
[AXPE_AXVE] moveendto        2E 0C 60 01 02 00 49 02 to.     # alias for moveend.to
[AXPE_AXVE] moveendfromto    2E 0C 60 01 02 from. 49 02 to.  # alias for moveend.fromto
[BPRE_BPGE] moveendall       2E D8 3F 02 02 00 49 00 00      # alias for moveend.all
[BPRE_BPGE] moveendcase      2E D8 3F 02 02 case. 49 01 00   # alias for moveend.case
[BPRE_BPGE] moveendfrom      2E D8 3F 02 02 from. 49 00 00   # alias for moveend.from
[BPRE_BPGE] moveendto        2E D8 3F 02 02 00 49 02 to.     # alias for moveend.to
[BPRE_BPGE] moveendfromto    2E D8 3F 02 02 from. 49 02 to.  # alias for moveend.fromto
[BPEE] moveendall            2E 88 44 02 02 00 49 00 00      # alias for moveend.all
[BPEE] moveendcase           2E 88 44 02 02 case. 49 01 00   # alias for moveend.case
[BPEE] moveendfrom           2E 88 44 02 02 from. 49 00 00   # alias for moveend.from 
[BPEE] moveendto             2E 88 44 02 02 00 49 02 to.     # alias for moveend.to
[BPEE] moveendfromto         2E 88 44 02 02 from. 49 02 to.  # alias for moveend.fromto

# various macros
cancel.multi.turn.moves                 76 battler.bs_battlers 00       # Cancels any multi-turn moves prematurely for the battler
set.magiccoat.target                    76 battler.bs_battlers 01       # Sets the target of a move if bounced back by Magic Bounce based on battler
get.cant.run                            76 01 02                        # Checks if player cannot run and puts result in gBattleCommunication
get.move.target                         76 01 03                        # Sets the target of a move to the normal target(s) of gCurrentMove
get.battler.fainted                     76 battler.bs_battlers 04       # Checks if the battler is fainted and puts result in gBattleCommunication
reset.intimidate.trace.bits             76 battler.bs_battlers 05       # Resets intimidate and trace statuses for the battler
update.choice.move.lvlup                76 battler.bs_battlers 06       # Resets the locked move from choice items if overwritten on level-up
[BPRE_BPGE_BPEE] reset.player.fainted   76 01 07                        # Resets player fainted bit for regular trainer battles
[BPRE_BPGE] get.battlers.recall         76 01 08                        # Checks trainers lost to in the Trainer Tower for FRLG
[BPRE_BPGE] return.foe.mon1.ball        76 01 09                        # Returns foe's first (only in singles) mon to trainer visually
[BPRE_BPGE] return.foe.mon2.ball        76 01 0A                        # Returns foe's second (if any) mon to trainer visually
[BPRE_BPGE] check.pokeflute             76 01 0B                        # Checks any mon affected by the Pokeflute on the field and in both fields' parties?
[BPRE_BPGE] wait.fanfare                76 01 0C                        # Blocks script execution until any playing fanfare finishes
[BPEE] palace.flavor.text               76 battler.bs_battlers 08       # Grabs specific Palace flavor text if possible and puts resulting index in gBattleCommunication[MULTISTRING_CHOOSER]
[BPEE] arena.judgment.window            76 01 09                        # Shows the judgement window for Arena battles
[BPEE] arena.foe.mon.lost               76 01 0A                        # Sets foe mon to lose in an arena battle
[BPEE] arena.player.mon.lost            76 01 0B                        # Sets player mon to lose in an arena battle
[BPEE] arena.both.mon.lost              76 01 0C                        # Sets both foe and player mons to lose in a draw in an arena battle
[BPEE] forfeit.yesno.box                76 battler.bs_battlers 0D       # Pulls up a yes/no box that is only used in forfeiting a match in the Battle Frontier
[BPEE] arena.show.ref.textbox           76 01 0E                        # Shows the arena reference textbox in Arena battles
[BPEE] arena.hide.ref.textbox           76 01 0F                        # Hides the arena reference textbox in Arena battles
[BPEE] arena.judgment.string            76 id. 10                       # Prints specific judgement string for Arena battles
[BPEE] arena.wait.message               76 id. 11                       # Waits until specific judgement string is done printing
[BPEE] wait.cry                         76 01 12                        # Halts script execution until cry is over
[BPEE] return.foe.mon1.ball             76 01 13                        # Returns foe's first (only in singles) mon to trainer visually
[BPEE] return.foe.mon2.ball             76 01 14                        # Returns foe's second (if any) mon to trainer visually
[BPEE] volume.down                      76 01 15                        # Sets music volume to a low amount
[BPEE] volume.up                        76 01 16                        # Sets music volume to the normal amount
[BPEE] set.already.status.attempt       76 battler.bs_battlers 17       # Sets bit for the battler if using a status-inflicting move on a mon who already has the status
[BPEE] palace.try.cure.sleep.freeze     76 battler.bs_battlers 18       # Checks if mon in a Battle Palace battle is unable to attack due to sleep/freeze and try to heal those statuses
[BPEE] set.outcome.teleport             76 battler.bs_battlers 19       # Sets battle outcome to whoever used Teleport for overworld scripting
[BPEE] play.trainer.defeat.bgm          76 battler.bs_battlers 1A       # Plays the trainer defeat bgm for use with Trainer Tower link battles

# decomp names for various macros
cancelmultiturnmoves                  76 battler.bs_battlers 00   # alias for cancel.multi.turn.moves
setmagiccoattarget                    76 battler.bs_battlers 01   # alias for set.magiccoat.target
getifcantrunfrombattle                76 01 02                    # alias for get.cant.run
getmovetarget                         76 01 03                    # alias for get.move.target
getbattlerfainted                     76 battler.bs_battlers 04   # alias for get.battler.fainted
resetintimidatetracebits              76 battler.bs_battlers 05   # alias for reset.intimidate.trace.bits
updatechoicemoveonlvlup               76 battler.bs_battlers 06   # alias for update.choice.move.lvlup
[BPRE_BPGE_BPEE] resetplayerfainted   76 01 07                    # alias for reset.player.fainted
[BPRE_BPGE] getbattlersforrecall      76 01 08                    # alias for get.battlers.recall
[BPRE_BPGE] returnopponentmon1toball  76 01 09                    # alias for return.foe.mon1.ball
[BPRE_BPGE] returnopponentmon2toball  76 01 0A                    # alias for return.foe.mon2.ball
[BPRE_BPGE] checkpokeflute            76 01 0B                    # alias for check.pokeflute
[BPRE_BPGE] waitfanfare               76 01 0C                    # alias for wait.fanfare
[BPEE] palaceflavortext               76 battler.bs_battlers 08   # alias for palace.flavor.text
[BPEE] arenajudgmentwindow            76 01 09                    # alias for arena.judgment.window
[BPEE] arenaopponentmonlost           76 01 0A                    # alias for arena.foe.mon.lost
[BPEE] arenaplayermonlost             76 01 0B                    # alias for arena.player.mon.lost
[BPEE] arenabothmonlost               76 01 0C                    # alias for arena.both.mon.lost
[BPEE] forfeityesnobox                76 battler.bs_battlers 0D   # alias for forfeit.yesno.box
[BPEE] arenadrawreftextbox            76 01 0E                    # alias for arena.show.ref.textbox
[BPEE] arenaerasereftextbox           76 01 0F                    # alias for arena.hide.ref.textbox
[BPEE] arenajudgmentstring            76 id. 10                   # alias for arena.judgment.string
[BPEE] arenawaitmessage               76 id. 11                   # alias for arena.wait.message
[BPEE] waitcry                        76 01 12                    # alias for wait.cry
[BPEE] returnopponentmon1toball       76 01 13                    # alias for return.foe.mon1.ball
[BPEE] returnopponentmon2toball       76 01 14                    # alias for return.foe.mon2.ball
[BPEE] volumedown                     76 01 15                    # alias for volume.down
[BPEE] volumeup                       76 01 16                    # alias for volume.up
[BPEE] setalreadystatusedmoveattempt  76 battler.bs_battlers 17   # alias for set.already.status.attempt
[BPEE] palacetryescapestatus          76 battler.bs_battlers 18   # alias for palace.try.cure.sleep.freeze
[BPEE] setoutcomeonteleport           76 battler.bs_battlers 19   # alias for set.outcome.teleport
[BPEE] playtrainerdefeatbgm           76 battler.bs_battlers 1A   # alias for play.trainer.defeat.bgm

[BPRE_BPGE] set.current.move move:data.pokemon.moves.names -> set.current.move 2E 4A 3D 02 02 move.data.pokemon.moves.names 2E 4B 3D 02 02 move.data.pokemon.moves.names

# deprecated macros
calculatedamage                       04 05 06 07                 # different from 'damagecalc'

00 attackcanceler
01 accuracycheck ptr<`bse`> param1:
02 attackstring
03 ppreduce
04 critcalc
05 damagecalc
06 typecalc
07 adjustnormaldamage
08 adjustnormaldamage2
09 attackanimation
0a waitanimation
0b healthbarupdate battler.bs_battlers
0b graphicalhpupdate battler.bs_battlers                  # Alias (old name)
0c datahpupdate battler.bs_battlers
0d critmessage
0e effectivenesssound
0e missmessage                                            # Alias (this is wrong)
0f resultmessage
10 printstring id:
11 printselectionstring id:
11 printstring2 id:                                       # Alias (old name)
12 waitmessage param0:
13 printfromtable ptr<>
14 printselectionstringfromtable ptr<>
14 printfromtable2 ptr<>                                  # Alias (old name)
15 seteffectwithchance
15 seteffectwithchancetarget                              # Alias (old name)
16 seteffectprimary
16 seteffecttarget                                        # Alias (this is wrong)
17 seteffectsecondary
17 seteffectuser                                          # Alias (this is wrong)
18 clearstatusfromeffect battler.bs_battlers
18 clearstatus battler.bs_battlers                        # Alias (not specific enough)
19 tryfaintmon battler.bs_battlers fromMove. ptr<>
19 faintpokemon battler.bs_battlers fromMove. ptr<>       # Alias (old name)
1a dofaintanimation battler.bs_battlers
1a cmd1a battler.bs_battlers                              # Alias (old name)
1b cleareffectsonfaint battler.bs_battlers
1c jumpifstatus battler.bs_battlers status1:: ptr<`bse`>
1d jumpifstatus2 battler.bs_battlers status2:: ptr<`bse`>
1d jumpifsecondarystatus battler.bs_battlers status2:: ptr<`bse`>            # Alias (old name)
1e jumpifability battler.bs_battlers ability.data.abilities.names ptr<`bse`>
1f jumpifsideaffecting battler.bs_battlers sidestatus: ptr<`bse`>
1f jumpifhalverset battler.bs_battlers sidestatus: ptr<`bse`>                # Alias (old name)
20 jumpifstat battler.bs_battlers ifflag.battle_compare stat.bs_stats value.stat_stages ptr<`bse`>
21 jumpifstatus3condition battler.bs_battlers status3:: param2. ptr<`bse`>
21 jumpifspecialstatusflag battler.bs_battlers status3:: param2. ptr<`bse`>  # Alias (old name)
22 jumpiftype battler.bs_battlers type.data.pokemon.type.names ptr<`bse`>
23 getexp battler.
24 checkteamslost ptr<`bse`>
25 movevaluescleanup
25 cmd25                              # Alias (old name)
26 setmultihit value.
27 decrementmultihit ptr<`bse`>
27 cmd27                              # Alias (old name)
28 goto ptr<`bse`>
29 jumpifbyte ifflag.battle_compare param1:: param2. ptr<`bse`>
2a jumpifhalfword ifflag.battle_compare address:: value: ptr<`bse`>
2b jumpifword ifflag.battle_compare param1:: param2:: ptr<`bse`>
2c jumpifarrayequal param0:: param1:: param2. ptr<`bse`>
2d jumpifarraynotequal param0:: param1:: param2. ptr<`bse`>
2e setbyte ram:: param1.
2f addbyte ram:: param1.
30 subbyte ram:: param1.
30 subtractbyte ram:: param1.         # Alias (lengthened name)
31 copyarray param0:: param1:: param2.
32 copyarraywithindex param0:: param1:: param2:: param3.
33 orbyte ram:: param1.
34 orhalfword ram:: param1:
35 orword ram:: param1::
36 bicbyte ram:: param1.
37 bichalfword ram:: param1:
38 bicword ram:: param1::
39 pause param0:
3a waitstate
3b healthbar_update battler.bs_battlers
3c return
3d end
3e end2
3f end3
40 jumpifaffectedbyprotect ptr<`bse`>
41 call ptr<`bse`>
42 jumpiftype2 battler.bs_battlers type.data.pokemon.type.names ptr<`bse`>
43 jumpifabilitypresent ability.data.abilities.names ptr<`bse`>
44 endselectionscript
45 playanimation battler.bs_battlers animation.effectanimations param2::
46 playanimation_var battler.bs_battlers param1:: param2::
46 cmd46 battler.bs_battlers param1:: param2::                                 # Alias (old name)
47 setgraphicalstatchangevalues
47 cmd47                                                                       # Alias (old name)
48 playstatchangeanimation battler.bs_battlers param1.statanimation param2.
49 moveend param0. param1.
49 cmd49 param0. param1.                                                       # Alias (old name)
4a typecalc2
4a damagecalc2                                                                 # Alias (this is wrong)
4b returnatktoball
4b cmd4b                                                                       # Alias (old name)
4c getswitchedmondata battler.bs_battlers
4c switch1 battler.bs_battlers                                                 # Alias (old name)
4d switchindataupdate battler.bs_battlers
4d switch2 battler.bs_battlers                                                 # Alias (old name)
4e switchinanim battler.bs_battlers dontclearsubstitutebit.
4e switch3 battler.bs_battlers dontclearsubstitutebit.                         # Alias (old name)
4f jumpifcantswitch battler.bs_battlers ptr<`bse`>
4f jumpifcannotswitch battler.bs_battlers ptr<`bse`>                           # Alias (lengthened name)
50 openpartyscreen param0. ptr<`bse`>
51 switchhandleorder battler.bs_battlers param1.
51 cmd51 battler.bs_battlers param1.                                           # Alias (old name)
52 switchineffects battler.bs_battlers
52 cmd52 battler.bs_battlers                                                   # Alias (old name)
53 trainerslidein battler.bs_battlers
53 cmd53 battler.bs_battlers                                                   # Alias (old name)
54 playse song:songnames
55 fanfare song:songnames
56 playfaintcry battler.bs_battlers
57 endlinkbattle
58 returntoball battler.bs_battlers
58 cmd58 battler.bs_battlers                                                   # Alias (old name)
59 handlelearnnewmove param0<`bse`> param1<`bse`> param2.
5a yesnoboxlearnmove ptr<`bse`>
5b yesnoboxstoplearningmove ptr<`bse`>
5c hitanimation battler.bs_battlers
5c cmd5c battler.bs_battlers                                                   # Alias (old name)
[BPRE_BPGE] 5d getmoneyreward ptr<`bse`>
[BPRE_BPGE] 5d cmd5d ptr<`bse`>                                                # Alias (old name)
[BPEE_AXPE_AXVE] 5d getmoneyreward
5e updatebattlermoves battler.bs_battlers
5f swapattackerwithtarget
60 incrementgamestat param0.
60 cmd60 param0.                                                               # Alias (old name)
61 drawpartystatussummary battler.bs_battlers
62 hidepartystatussummary battler.bs_battlers
63 jumptocalledmove param0.
63 jumptoattack param0.                                                        # Alias (old name)
64 statusanimation battler.bs_battlers
65 status2animation battler.bs_battlers status2::
66 chosenstatusanimation battler.bs_battlers param1. param2::
67 yesnobox
68 cancelallactions
69 adjustsetdamage
6a removeitem battler.bs_battlers
6b atknameinbuff1
6c drawlvlupbox
6d resetsentmonsvalue
6e setatktoplayer0
6f makevisible battler.bs_battlers
70 recordlastability battler.bs_battlers
71 buffermovetolearn
72 jumpifplayerran ptr<`bse`>
73 hpthresholds battler.bs_battlers
73 cmd73 battler.bs_battlers                          # Alias (old name)
74 hpthresholds2 battler.bs_battlers
75 useitemonopponent
76 various battler.bs_battlers param1.
76 cmd76  battler.bs_battlers param1.                 # Alias (old name)
77 setprotectlike
77 setprotect                                         # Alias (shortened name)
78 tryexplosion
78 faintifabilitynotdamp                              # Alias (old name)
79 setatkhptozero
79 setuserhptozero                                    # Alias (not specific enough)
7a jumpifnexttargetvalid ptr<`bse`>
7a jumpwhiletargetvalid ptr<`bse`>                    # Alias (this is wrong)
7b tryhealhalfhealth ptr<`bse`> battler.bs_battlers
7b setdamageasrestorehalfmaxhp ptr<`bse`> battler.bs_battlers       # Alias (old name)
7c trymirrormove
7c jumptolastusedattack                               # Alias (old name)
7d setrain
7e setreflect
7f setseeded
7f setleechseed                                       # Alias (lengthened name)
80 manipulatedamage param0.
81 trysetrest ptr<`bse`>
81 setrest ptr<`bse`>                                 # Alias (shortened name)
82 jumpifnotfirstturn ptr<`bse`>
83 nop
84 jumpifcantmakeasleep ptr<`bse`>
84 jumpifcannotsleep ptr<`bse`>                       # Alias (not specific enough)
85 stockpile
86 stockpiletobasedamage ptr<`bse`>
87 stockpiletohpheal ptr<`bse`>
87 stockpiletohprecovery ptr<`bse`>                   # Alias (old name)
88 negativedamage
89 statbuffchange stat. ptr<`bse`>
8a normalisebuffs
8b setbide
8c confuseifrepeatingattackends
8d setmultihitcounter param0.
8d setloopcounter param0.                             # Alias (not specific enough)
8e initmultihitstring
8e cmd8e                                              # Alias (old name)
8f forcerandomswitch ptr<`bse`>
90 tryconversiontypechange ptr<`bse`>
90 changetypestoenemyattacktype ptr<`bse`>            # Alias (not specific enough)
91 givepaydaymoney
91 givemoney                                          # Alias (not specific enough)
92 setlightscreen
93 tryKO ptr<`bse`>
94 damagetohalftargethp
94 gethalfcurrentenemyhp                              # Alias (old name)
95 setsandstorm
96 weatherdamage
97 tryinfatuating ptr<`bse`>
97 tryinfatuatetarget ptr<`bse`>                      # Alias (old name)
98 updatestatusicon battler.bs_battlers
99 setmist
99 setmisteffect                                      # Alias (lengthened name)
9a setfocusenergy
9a setincreasedcriticalchance                         # Alias (lengthened name)
9b transformdataexecution
9c setsubstitute
9c setsubstituteeffect                                # Alias (lengthened name)
9d mimicattackcopy ptr<`bse`>
9d copyattack ptr<`bse`>                              # Alias (shortened name)
9e metronome
9e metronomeeffect                                    # Alias (lengthened name)
9f dmgtolevel
9f nightshadedamageeffect                             # Alias (too specific)
a0 psywavedamageeffect
a1 counterdamagecalculator ptr<`bse`>
a2 mirrorcoatdamagecalculator ptr<`bse`>
a3 disablelastusedattack ptr<`bse`>
a4 trysetencore ptr<`bse`>
a4 setencore ptr<`bse`>                               # Alias (shortened name)
a5 painsplitdmgcalc ptr<`bse`>
a5 painsplitdamagecalculator ptr<`bse`>               # Alias (lengthened name)
a6 settypetorandomresistance ptr<`bse`>
a7 setalwayshitflag
a8 copymovepermanently ptr<`bse`>
a9 trychoosesleeptalkmove ptr<`bse`>
a9 selectrandommovefromusermoves ptr<`bse`>           # Alias (not specific enough)
aa setdestinybond
aa destinybondeffect                                  # Alias (old name)
ab trysetdestinybondtohappen
ac remaininghptopower
ad tryspiteppreduce ptr<`bse`>
ad reducepprandom ptr<`bse`>                          # Alias (not specific enough)
ae healpartystatus
ae clearstatusifnotsoundproofed                       # Alias (too specific)
af cursetarget ptr<`bse`>
b0 trysetspikes ptr<`bse`>
b0 setspikes ptr<`bse`>                               # Alias (shortened name)
b1 setforesight
b2 trysetperishsong ptr<`bse`>
b2 setperishsong ptr<`bse`>                           # Alias (shortened name)
b3 rolloutdamagecalculation
b4 jumpifconfusedandstatmaxed stat.bs_stats ptr<`bse`>
b5 furycuttercalc
b5 furycutterdamagecalculation                        # Alias (lengthened name)
b6 happinesstodamagecalculation
b7 presentdamagecalculation
b8 setsafeguard
b9 magnitudedamagecalculation
ba jumpifnopursuitswitchdmg ptr<`bse`>
bb setsunny
bc maxattackhalvehp ptr<`bse`>
bd copyfoestats ptr<`bse`>
be rapidspinfree
be breakfree                                          # Alias (not specific enough)
bf setdefensecurlbit
bf setcurled                                          # Alias (not specific enough)
c0 recoverbasedonsunlight ptr<`bse`>
c1 hiddenpowercalc
c1 hiddenpowerdamagecalculation                       # Alias (not specific enough)
c2 selectfirstvalidtarget
c2 selectnexttarget                                   # Alias (this is wrong)
c3 trysetfutureattack ptr<`bse`>
c3 setfutureattack ptr<`bse`>                         # Alias (shortened name)
c4 trydobeatup ptr0<`bse`> ptr1<`bse`>
c5 setsemiinvulnerablebit
c5 hidepreattack                                      # Alias (not specific enough)
c6 clearsemiinvulnerablebit
c6 unhidepostattack                                   # Alias (not specific enough)
c7 setminimize
c8 sethail
c9 trymemento ptr<`bse`>
c9 jumpifattackandspecialattackcannotfall ptr<`bse`>
ca setforcedtarget
cb setcharge
cc callterrainattack
cd cureifburnedparalysedorpoisoned ptr<`bse`>
ce settorment ptr<`bse`>
cf jumpifnodamage ptr<`bse`>
d0 settaunt ptr<`bse`>
d1 trysethelpinghand ptr<`bse`>
d1 sethelpinghand ptr<`bse`>                          # Alias (shortened name)
d2 tryswapitems ptr<`bse`>
d2 itemswap ptr<`bse`>                                # Alias (shortened name)
d3 trycopyability ptr<`bse`>
d3 copyability ptr<`bse`>                             # Alias (shortened name)
d4 trywish param0. param1<`bse`>
d5 trysetroots ptr<`bse`>
d5 setroots ptr<`bse`>                                # Alias (shortened name)
d6 doubledamagedealtifdamaged
d7 setyawn ptr<`bse`>
d8 setdamagetohealthdifference ptr<`bse`>
d9 scaledamagebyhealthratio
da tryswapabilities ptr<`bse`>
da abilityswap ptr<`bse`>                             # Alias (shortened name)
db tryimprison ptr<`bse`>
db imprisoneffect ptr<`bse`>                          # Alias (lengthened name)
dc trysetgrudge ptr<`bse`>
dc setgrudge ptr<`bse`>                               # Alias (shortened name)
dd weightdamagecalculation
de assistattackselect ptr<`bse`>
df trysetmagiccoat ptr<`bse`>
df setmagiccoat ptr<`bse`>                            # Alias (shortened name)
e0 trysetsnatch ptr<`bse`>
e0 setstealstatchange ptr<`bse`>                      # Alias (too specific)
e1 trygetintimidatetarget ptr<`bse`>
e2 switchoutabilities battler.bs_battlers
e2 cmde2 battler.bs_battlers                          # Alias (old name)
e3 jumpifhasnohp battler.bs_battlers ptr<`bse`>
e3 jumpiffainted battler.bs_battlers ptr<`bse`>       # Alias (old name)
e4 getsecretpowereffect
e5 pickup
e5 pickupitemcalculation                              # Alias (lengthened name)
e6 docastformchangeanimation
e7 trycastformdatachange
e8 settypebasedhalvers ptr<`bse`>
e9 setweatherballtype
e9 seteffectbyweather                                 # Alias (old name)
ea tryrecycleitem ptr<`bse`>
ea recycleitem ptr<`bse`>                             # Alias (shortened name)
eb settypetoterrain ptr<`bse`>
ec pursuitdoubles ptr<`bse`>
ed snatchsetbattlers
ee removelightscreenreflect
ee removereflectlightscreen                           # Alias (move names switched)
ef handleballthrow
ef pokemoncatchfunction                               # Alias (not specific enough)
f0 givecaughtmon
f1 trysetcaughtmondexflags ptr<`bse`>
f2 displaydexinfo
f3 trygivecaughtmonnick ptr<`bse`>
f4 subattackerhpbydmg
f5 removeattackerstatus1
f6 finishaction
f7 finishturn
[BPEE] f8 trainerslideout battler.bs_battlers

# helpful macros
#XX sethword {dst} {value}
#	setbyte {dst} {value} & 0xFF
#	setbyte {dst} + 1 ({value} >> 8) & 0xFF
#XX setword {dst} {value}
#	setbyte {dst}, {value} & 0xFF
#	setbyte {dst} + 1 ({value} >> 8) & 0xFF
#	setbyte {dst} + 2 ({value} >> 16) & 0xFF
#	setbyte {dst} + 3 ({value} >> 24) & 0xFF
#XX copybyte {dst} {src}
#	copyarray {dst} {src} 0x1
#XX copyhword {dst} {src}
#	copyarray {dst} {src} 0x2
#XX copyword {dst} {src}
#	copyarray {dst} {src} 0x4
#XX jumpifbytenotequal {byte1} {byte2} {jumpptr}
#	jumpifarraynotequal {byte1} {byte2} 1 {jumpptr}
#XX jumpifbyteequal {byte1} {byte2} {jumpptr}
#	jumpifarrayequal {byte1} {byte2} 1 {jumpptr}
