0% found this document useful (0 votes)
279 views15 pages

Script Reference

Uploaded by

youngrndom
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
279 views15 pages

Script Reference

Uploaded by

youngrndom
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

# compare with event.

inc in the decomp

# conditions:
# 00 A < B
# 01 A = B
# 02 A > B
# 03 A <= B
# 04 A >= B
# 05 A != B

# memory banks:
# There are only 4 banks. Each can store a byte (see setbyte2) or a pointer (see
loadpointer).

# buffers:
# The only buffers are 0, 1, and 2. They can hold strings and numbers.

# variables:
# Range from 4000 to 40FF, as well as from 8000 to 8015. They can hold two-byte
numbers.
# Variable references:
[Link]
include/constants/vars.h
#
[Link]
#
[Link]

# RAM:
# You can write individual bytes into set locations in the RAM. Examples?

# macros:
[Link] 0F 00 ptr<""> 09 02 # Equivalent to
# lock
# faceplayer
# [Link]
# release
[Link] 0F 00 ptr<""> 09 03 # loadpointer, callstd 3
[Link] 0F 00 ptr<""> 09 04 # loadpointer, callstd 4
[Link] 0F 00 ptr<""> 09 05 # loadpointer, callstd 5
[Link] 0F 00 ptr<""> 09 06 # loadpointer, callstd 6
[Link] B6 species:[Link] level. item:[Link] B7 #
setwildbattle, dowildbattle
[Link] 1A 00 80 item:[Link] 1A 01 80 count: 09 01 #
copyvarifnotzero (item and count), callstd 1
[Link] 1A 00 80 item:[Link] 1A 01 80 count: 09 00 #
copyvarifnotzero (item and count), callstd 0
[BPRE_BPGE] [Link] msg<""> item:[Link] count: song:songnames ->
[Link] 44 item:[Link] count: 0F 00 msg<""> 1A 00 80
item:[Link] 1A 01 80 count: 1A 02 80 song:songnames 09 09 # shows a
message about a received item,

# followed by a standard 'put away' message.

# loadpointer, copyvarifnotzero (item, count, song), callstd 9


[BPEE] [Link] 6A DB ptr<""> 66 6D 68 6C #Skips the
typewriter effect
[BPEE] [Link] 6A 5A DB ptr<""> 66 6D 68 6C #Skips the
typewriter effect
[BPEE] [Link] 6A DB ptr<""> 66 6D 6C #Skips the
typewriter effect
[Link] 31 song:songnames 67 ptr<""> 66 32
# fanfare, preparemsg, waitmsg
[Link] trainer:[Link] -> [Link] 16 04 80
trainer:[Link] 25 EA 01 1A 00 80 trainer:[Link] 09 08 #
setvar, special 0xEA, copyvarifnotzero, callstd 8
[Link] 21 0D 80 01 00 06 01 ptr<`xse`>
[Link] 21 0D 80 01 00 07 01 ptr<`xse`>
[Link] 21 0D 80 00 00 06 01 ptr<`xse`>
[Link] 21 0D 80 00 00 07 01 ptr<`xse`>
[Link] A0 21 0D 80 00 00 06 01 male<`xse`> 21 0D 80 01 00 06 01
female<`xse`>
[Link] A0 21 0D 80 00 00 07 01 male<`xse`> 21 0D 80 01 00 07 01
female<`xse`>
[Link] A0 21 0D 80 00 00 06 01 ptr<`xse`>
[Link] A0 21 0D 80 01 00 06 01 ptr<`xse`>
[Link] A0 21 0D 80 00 00 07 01 ptr<`xse`>
[Link] A0 21 0D 80 01 00 07 01 ptr<`xse`>
[Link] variable:scriptvariablealiases condition.script_compare value:
pointer<`xse`> -> [Link] 21 variable:scriptvariablealiases value: 06
condition.script_compare pointer<`xse`> # Compare a variable with a value.

# If the comparison is true, goto another address or section.


[Link] variable:scriptvariablealiases condition.script_compare value:
pointer<`xse`> -> [Link] 21 variable:scriptvariablealiases value: 07
condition.script_compare pointer<`xse`> # Compare a variable with a value.

# If the comparison is true, call another address or section.


[Link] 2B flag:|h 06 01 pointer<`xse`>
# If the flag is set, goto another address or section.

# (Flags begin as clear.)


[Link] 2B flag:|h 07 01 pointer<`xse`>
# If the flag is set, call another address or section

# (Flags begin as clear.)


[Link] 2B flag:|h 06 00 pointer<`xse`>
# If the flag is clear, goto another address or section

# (Flags begin as clear.)


[Link] 2B flag:|h 07 00 pointer<`xse`>
# If the flag is clear, call another address or section

# (Flags begin as clear.)


[Link] 60 trainer:[Link] 06 01 pointer<`xse`>
# If the trainer is defeated, goto another address or section
[Link] 60 trainer:[Link] 07 01 pointer<`xse`>
# If the trainer is defeated, call another address or section
[Link] 60 trainer:[Link] 06 00 pointer<`xse`>
# If the trainer is not defeated, goto another address or section
[Link] 60 trainer:[Link] 07 00 pointer<`xse`>
# If the trainer is not defeated, call another address or section

[Link] 4F FF 00 data<`move`> 51 00 00 # Moves the player (NPC object


#255) around the map.
# This macro assumes using
"waitmovement 0" instead of "waitmovement 255".
[Link] 4F 7F 00 data<`move`> 51 00 00 # Moves the camera (NPC object
#127) around the map.
# Requires "special
SpawnCameraObject" and "special RemoveCameraObject".
[Link] 4F npc: data<`move`> 51 00 00 # Moves an overworld NPC with ID
'npc' according to the specified movement commands in the 'data' pointer.
# This macro assumes using
"waitmovement 0" instead of "waitmovement npc".

[Link] 39 mapbank. map. FF FF FF FF FF # Sends player to the middle of


another map.
[Link] 39 mapbank. map. FF x: y: # Sends player to an x/y position
on another map.
[Link] 39 mapbank. map. warp.-1 00 00 00 00 # Sends player to warp on another
map.

# Trainer battle macros (assume a localID (arg) parameter of 0)


[Link] 5C 00 trainer:[Link] 00 00
start<""> playerwin<""> # trainerbattle 00: Default trainer
battle command.
[Link] 5C 01 trainer:[Link] 00 00
start<""> playerwin<""> winscript<`xse`> # trainerbattle 01: No intro music.
Continues the script after winning.
[Link] 5C 02 trainer:[Link] 00 00
start<""> playerwin<""> winscript<`xse`> # trainerbattle 02: Plays the trainer's
intro music. Continues the script after winning.
[Link] 5C 03 trainer:[Link] 00 00
playerwin<""> # trainerbattle 03: No intro music nor
intro text.
[Link] 5C 04 trainer:[Link] 00 00
start<""> playerwin<""> needmorepokemonText<""> #
trainerbattle 04: Refuses a battle if the player only has 1 Pokémon alive.
[Link] 5C 05 trainer:[Link] 00 00
start<""> playerwin<""> # trainerbattle 05: Starts a trainer
battle rematch.
[Link] 5C 06 trainer:[Link] 00 00
start<""> playerwin<""> needmorepokemonText<""> continuescript<`xse`> #
trainerbattle 06: Plays the trainer's intro music. Continues the script after
winning. The battle can be refused.
[Link] 5C 07 trainer:[Link] 00 00
start<""> playerwin<""> needmorepokemonText<""> #
trainerbattle 07: Starts a trainer battle rematch. The battle can be refused.
[Link] 5C 08 trainer:[Link] 00 00
start<""> playerwin<""> needmorepokemonText<""> continuescript<`xse`> #
trainerbattle 08: No intro music. Continues the script after winning. The battle
can be refused.
[BPRE_BPGE] [Link] 5C 09 trainer:[Link] 01 00
playerlose<""> playerwin<""> # trainerbattle 09: Starts a battle where
the player can lose.
[BPRE_BPGE] [Link] 5C 09 trainer:[Link] 02 00
playerlose<""> playerwin<""> # trainerbattle 09: Starts a tutorial battle
with Prof. Oak interjecting. The player must win.
[BPRE_BPGE] [Link] 5C 09 trainer:[Link] 03 00
playerlose<""> playerwin<""> # trainerbattle 09: Starts a tutorial battle
with Prof. Oak interjecting. The player can lose.
[BPEE] [Link] 5C 09 trainer:[Link] 00 00
start<""> playerwin<""> # trainerbattle 09: Only works when called by Battle
Pyramid ASM.
[BPEE] [Link].A 5C 0A trainer:[Link] 00 00
start<""> playerwin<""> # trainerbattle 0A: Sets up the 1st trainer for a multi
battle.
[BPEE] [Link].B 5C 0B trainer:[Link] 00 00
start<""> playerwin<""> # trainerbattle 0B: Sets up the 2nd trainer for a multi
battle.
[BPEE] [Link] 5C 0C trainer:[Link] 00 00
start<""> playerwin<""> # trainerbattle 0C: Only works when called by Trainer
Hill ASM.

# CFRU specific macros


[BPRE] [Link] 16 00 80 species:[Link] 16 01 80
level: 16 02 80 onland:onland 16 03 80 onwater:onwater 25 29 01 # Creates a custom
roaming pokemon if CFRU is enabled.

# result is 0 if that species is already roaming, or

# if you already have 10 roaming pokemon.


[BPRE] [Link] 29 0B 09 16 00 80
move0:[Link] 16 01 80 move1:[Link] 16 02 80
move2:[Link] 16 30 80 move3:[Link]

00 nop # does nothing


01 nop1 # does nothing
02 end # ends the script
03 return # pops back to the last calling
command used.
04 call pointer<`xse`> # Continues script execution from
another point. Can be returned to.
05 goto pointer<`xse`> # Continues script execution from
another point. Cannot return.
06 if1 condition.script_compare pointer<`xse`> # if the condition variable fits
with 'condition', then "goto" another script
07 if2 condition.script_compare pointer<`xse`> # if the condition variable fits
with 'condition', then "call" another script
08 gotostd function. # goto a built-in function
09 callstd function. # call a built-in function
0A gotostdif condition.script_compare function. # goto a built in function if the
condition is met
0B callstdif condition.script_compare function. # call a built in function if the
condition is met
0C returnram # return from a Wonder Card script
back to the original script
0C jumpram # alternate, old name for returnram
0D endram # end the current script and delete
the Wonder Card script
0D killscript # alternate, old name for endram
0E setmysteryeventstatus value. # sets a state variable used for
Mystery Event scripts
0E setbyte byte. # alternate, old name for
setmysteryeventstatus
0F loadpointer bank.4 pointer<""> # loads a pointer into the
specified memory bank, for other commands to use
10 setbyte2 bank.4 value. # loads a byte into the specified
memory bank, for other commands to use
11 writebytetooffset value. offset::|h # store the byte 'value' at the RAM
address 'offset'
12 loadbytefrompointer bank.4 pointer::|h # load a byte value from a RAM
address into the specified memory bank, for other commands to use
13 setfarbyte bank.4 pointer::|h # stores the byte in the specified
memory bank to a RAM address
14 copyscriptbanks destination.4 source.4 # copies the value in the source
memory bank to destination memory bank
15 copybyte destination::|h source::|h # copies the value from the source
RAM address to the destination RAM address
16 setvar variable:scriptvariablealiases value: # sets the given variable to the
given value
17 addvar variable:scriptvariablealiases value: # variable += value
18 subvar variable:scriptvariablealiases source: # variable -= source (or) variable
-= *source
# (if 'source' isn't a valid
variable, it's read as a value)
19 copyvar variable:scriptvariablealiases source:scriptvariablealiases # variable =
source
1A setorcopyvar variable:scriptvariablealiases source: # Works like
the copyvar command if the source field is a variable number;
# works like the setvar command if
the source field is not a variable number.
# In other words:
# destination = source (or)
destination = *source
# (if source isn't a valid
variable, it's read as a value)
1A copyvarifnotzero variable:scriptvariablealiases source:scriptvariablealiases #
Alternate, old name for 'setorcopyvar'.
1B comparebanks bankA.4 bankB.4 # sets the condition variable based
on the value in memory bank A as compared to the value in memory bank B
1C comparebanktobyte bank.4 value. # sets the condition variable based
on the value in the specified memory bank as compared to the given value
1D compareBankTofarbyte bank.4 pointer::|h # sets the condition variable based
on the memory bank value as compared to the value stored in the RAM address
1E compareFarByteToBank pointer::|h bank.4 # sets the condition variable based
on the value stored in the RAM address as compared to the memory bank value
1F compareFarByteToByte pointer::|h value. # sets the condition variable based
on the value at the RAM address as compared to the given value
20 compareFarBytes a::|h b::|h # sets the condition variable based
on the value at the RAM address A as compared to the value at RAM address B
21 compare variable:scriptvariablealiases value: # sets the condition variable
based on the value in the given variable, as compared to the given value
22 comparevars var1: var2: # sets the condition variable based
on the value in var1 as compared to the value in var2
23 callasm code<> # run the given ASM code,
then continue the script
24 setcode pointer<> # block script execution
and instead run the given ASM code every frame until it returns 1

25 special function:specials # Calls a piece of ASM code


from a table.
# Check your TOML for a
list of specials available in your game.
# In FRLG, an invalid
special number will print an error message to the debugger log output and freeze
the game.
26 special2 variable:scriptvariablealiases function:specials # Calls a special and
puts the ASM's return value in the variable you listed.
# Check your TOML for a
list of specials available in your game.
# In FRLG, an invalid
special number will print an error message to the debugger log output and freeze
the game.
26 specialvar variable:scriptvariablealiases function:specials # Calls a special
and puts the ASM's return value in the variable you listed.
# Check your TOML for a
list of specials available in your game.
# In FRLG, an invalid
special number will print an error message to the debugger log output and freeze
the game.
27 waitstate # blocks script execution and disables
the script running code until it gets reenabled by some ASM code.
28 pause time: # blocks script execution for 'time'
frames
29 setflag flag:|h # flag = 1
2A clearflag flag:|h # flag = 0
2B checkflag flag:|h # sets the condition variable based on
the value of the flag. Used with < (when the flag is 0) or = (when the flag is 1)
compare values
[BPRE_BPGE] 2C nop2C # does nothing
[AXPE_AXVE_BPEE] 2C initclock hour: minute: # Changes how many hours/minutes
forward to adjust the real-time clock, without additional player input. 'hour' and
'minute' can be variables.
2D checkdailyflags # nop in FRLG. Updates flags,
variables, and other data in RSE based on real-time-clock
2E gettime # sets variables var0, var1, and var2
to the current time in hours, minutes, and seconds (or all zeroes in FRLG)
2E resetvars # Alternate, old name for gettime
2F sound number:songnames # play a song as a sound effect.
# In FRLG, does nothing during certain
parts of the credits where scripts run, or in the Quest Log.
30 waitsound # blocks script execution until any
playing sound effects finish (excluding special looping ones used in battle)
31 fanfare song:songnames # plays a song in the fanfare song
list as a fanfare, defaulting to the level-up jingle.
# In FRLG, this command does nothing
when the Quest Log is active, except change the number of frames to wait to 255 (it
doesn't actually wait that many frames).
32 waitfanfare # blocks script execution until any
playing fanfare should have finished, according to its length in the fanfare table
33 playsong song:songnames [Link] # plays a song as background
music, optionally marking it to become the "saved" background music.
# Does nothing in FRLG if the
Quest Log is active.
34 savesong song:songnames # sets the saved background
music to 'song', without actually playing it.
# It can then be played via
special Overworld_PlaySpecialMapMusic.
# Saved background music will
be remembered if you save the game and then load it again.
35 fadedefault # fades the current music out and
fades the default map music in, if they are different songs.
# Does nothing in FRLG if the Quest
Log is active.
36 fadesong song:songnames # fades the current music out and
fades the given song in, if they are different songs.
# Does nothing in FRLG if the Quest
Log is active.
37 fadeout speed. # blocks script execution until the
current song fades out to silence.
# The fadeout will complete after
max(16*speed, 16) frames.
# Does nothing in FRLG if the Quest
Log is active.
38 fadein speed. # blocks script execution until the
current song fades back in from silence.
# The fade in will complete after
max(16*speed, 16) frames.
# Does nothing in FRLG if the Quest
Log is active.
39 warp mapbank. map. warp.-1 x: y: # sends player to mapbank/map at
tile 'warp'. If warp is negative or out of range, uses x/y instead, or the middle
of the map if those are negative as well
# x and y can be variables
# blocks script execution and,
after a few frames, resets the script runner state, ending the current script
3A warpmuted mapbank. map. warp.-1 x: y: # same as warp, but doesn't play
sappy song 0009 (the same as when warping via Dive)
3B warpwalk mapbank. map. warp.-1 x: y: # same as warp, but with a walking
and door-opening effect
3C warphole mapbank. map. # similar to warp, but with a
falling-down-a-hole effect. Sends the player to same X/Y as on the map they started
on.
# If 'mapbank' and 'map' are 127
127, goes to the map selected by warp5, or to the warp used to enter the current
room if warp5 was not used.
3D warpteleport mapbank. map. warp.-1 x: y: # same as warp, but with an effect
of stepping onto a warp pad. Warping to a door/cave opening causes the player to
land on the exact same block as it.
3E warp3 mapbank. map. warp.-1 x: y: # Sets the map & coordinates for
the player to go to in conjunction with specific "special" commands.
# x and y can be variables, as
with other warp commands.
3F setwarpplace mapbank. map. warp.-1 x: y: # sets a variable position
(dynamic warp). Go to it with warp 7F 7F 7F 0000 0000
40 warp4 mapbank. map. warp.-1 x: y: # Sets the map & coordinates that
the player would go to after using Dive.
41 warp5 mapbank. map. warp.-1 x: y: # Sets the map & coordinates that
the player would go to if they fell in a hole.
42 getplayerpos varX: varY: # stores the current player
position into varX and varY
43 countPokemon # stores number of pokemon in your
party, including non-usable eggs and bad eggs, into varResult
44 additem item:[Link] quantity: # Tries to put 'quantity' more of
'item' in the player's inventory.
# 'item' and 'quantity' can be
variables.
# if the operation was
succcessful, varResult is set to 1. If the operation fails, it is set to 0.
# In FRLG only, the TM case or
berry pouch is also given to the player if they would need them to view the item,
including setting the flag that enables the berry pouch.
# In FRLG only, receiving certain
key items, or receiving the town map in the rival's house, will attempt to add an
event to the Quest Log.
# In RSE only, this may result in
having multiple stacks of the same item.
# In Emerald only, if the
appropriate flag is set or the map uses the appropriate layout, the item will be
added to the Battle Pyramid inventory instead.
# In Emerald only, this command
may rarely result in the player losing all of their items or other bugs due to
memory allocation failure.
45 removeitem item:[Link] quantity: # Tries to remove 'quantity' of
'item' from the player's inventory.
# 'item' and 'quantity' can be
variables.
# if the operation was successful,
varResult is set to 1. If the operation fails, it is set to 0.
# In Emerald only, if the
appropriate flag is set or the map uses the appropriate layout, the item will be
removed from the Battle Pyramid inventory instead.
# In Emerald only, this command
may rarely result in the player losing all of their items or other bugs due to
memory allocation failure.
46 checkitemroom item:[Link] quantity: # varResult is set to 1 if additem
would succeed, otherwise 0.
# 'item' and 'quantity' can be
variables.
47 checkitem item:[Link] quantity: # varResult is set to 1 if
removeitem would succeed, otherwise 0.
# 'item' and 'quantity' can be
variables.
48 checkitemtype item:[Link] # varResult is set to the bag
pocket number of the item.
# 'item' can be a variable.
49 addpcitem item:[Link] quantity: # same as additem, except the item
is put into the player's PC
4A checkpcitem item:[Link] quantity: # same as checkitem, except it
looks for the item in the player's PC
4B adddecoration decoration:[Link] # In RSE only,
this command tries to add a decoration to the player's PC. If the operation
succeeds, varResult is set to 1, otherwise 0.
# In FRLG, this
command does nothing and does not affect varResult.
# 'decoration'
can be a variable.
4C removedecoration decoration:[Link] # In RSE only,
this command tries to remove a decoration from the player's PC. If the operation
succeeds, varResult is set to 1, otherwise 0.
# In FRLG, this
command does nothing and does not affect varResult.
# 'decoration'
can be a variable.
4D checkdecoration decoration:[Link] # In RSE only,
this command sets varResult to 1 if the PC has at least one of that decoration,
otherwise 0.
# In FRLG, this
command does nothing and does not affect varResult.
4E testdecoration decoration:[Link] # In RSE only,
this command sets varResult to 1 if the PC could store at least one more of that
decoration, otherwise 0.
# In FRLG, this
command does nothing and does not affect varResult.
4F applymovement npc: data<`move`> # has character 'npc' in the current
map move according to movement data 'data'
# npc can be a character number or a
variable.
# FF is the player, 7F is the camera.
# Does nothing if the NPC doesn't
exist or is disabled (from a flag/hidesprite) or is too far off-screen.
50 applymovement2 npc: data<`move`> bank. map. # like
applymovement, but does not assume the map that the NPC is from is the current map.
# probably
useful for using FRLG clone NPCs in cutscenes?
51 waitmovement npc: # block further script execution until
the npc movement is completed.
# 'npc' can be a variable, or 0 to
signify the last NPC with a movement applied.
52 waitmovement2 npc: bank. map. # like waitmovement, but does not
assume the map that the NPC is from is the current map.
# probably useful for using FRLG clone
NPCs in cutscenes?
53 hidesprite npc: # hides an NPC, but only if they have
an associated flag. Doesn't work on the player.
54 hidesprite2 npc: mapbank. map. # like hidesprite, but has extra
parameters for a specifiable map.
55 showsprite npc: # opposite of hidesprite
56 showsprite2 npc: bank. map. # shows a previously hidden sprite; it
also has extra parameters for a specifiable map.
57 movesprite npc: x: y:
58 spritevisible npc: bank. map. # shows the sprite on the given map by
setting its invisibility to false.
59 spriteinvisible npc: bank. map. # hides the sprite on the given map by
setting its invisibility to true.
5A faceplayer # if the script was called by a person
event, make that person face the player
5B spriteface npc: [Link]

5C trainerbattle 00 trainer:[Link] arg: start<""> playerwin<"">


5C trainerbattle 01 trainer:[Link] arg: start<""> playerwin<"">
winscript<`xse`> # doesn't play encounter music, continues with winscript
5C trainerbattle 02 trainer:[Link] arg: start<""> playerwin<"">
winscript<`xse`> # does play encounter music, continues with winscript
5C trainerbattle 03 trainer:[Link] arg: playerwin<"">
# no intro text
5C trainerbattle 04 trainer:[Link] arg: start<""> playerwin<"">
needmorepokemonText<""> # double battles
5C trainerbattle 05 trainer:[Link] arg: start<""> playerwin<"">
# clone of 0, but with rematch potential
5C trainerbattle 06 trainer:[Link] arg: start<""> playerwin<"">
needmorepokemonText<""> continuescript<`xse`> # double battles, continues the
script
5C trainerbattle 07 trainer:[Link] arg: start<""> playerwin<"">
needmorepokemonText<""> # clone of 4, but with rematch
potential
5C trainerbattle 08 trainer:[Link] arg: start<""> playerwin<"">
needmorepokemonText<""> continuescript<`xse`> # clone of 6, does not play encounter
music
5C trainerbattle 09 trainer:[Link] arg: playerwin<""> playerlose<""> #
tutorial battle (can't lose) (set arg=3 for oak's naration) (Pyramid type for
Emerald)
5C trainerbattle other. trainer:[Link] arg: start<""> playerwin<""> #
same as 0
# trainer battle takes different
parameters depending on the
# 'type', or the first parameter.
# 'trainer' is the ID of the trainer
battle
# start is the text that the character
says at the start of the battle
# playerwin is the text that the
character says when the player wins
# rematches are weird. Look into them
later.

5D repeattrainerbattle # starts a trainer battle with


information stored in the RAM.
# in most cases, it does the last
trainer battle again.
5E endtrainerbattle # returns from the trainerbattle
screen without starting message (go to after battle script)
5F endtrainerbattle2 # same as 5E? (go to beaten battle
script)
60 checktrainerflag trainer:[Link] # if flag 0x500+trainer is 1,
then the trainer has been defeated. Similar to checkflag
61 defeatedtrainer trainer:[Link] # set flag 0x500+trainer to 1.
That trainer now counts as defeated.
62 readytrainer trainer:[Link] # set flag 0x500+trainer to 0.
That trainer now counts as active.
63 movesprite2 npc: x: y: # permanently move the npc to the x/y
location
64 moveoffscreen npc: # moves the npc to just above the
left-top corner of the screen
65 spritebehave npc: [Link] # temporarily changes the movement
type of a selected NPC.
66 waitmsg # block script execution until
box/text is fully drawn
67 preparemsg text<""> # text can be a pointer to a text
pointer, or just a pointer to text
# starts displaying text in a textbox.
Does not block. Call waitmsg to block.
68 closeonkeypress # keeps the current textbox open until
the player presses a button.
69 lockall # don't let characters move
6A lock # stop the movement of the person that
called the script
6B releaseall # closes open textboxes and lets
characters move freely
6C release # allow the movement of the person
that called the script
6D waitkeypress # blocks script execution until the
player pushes the A or B button
6E yesnobox x. y. # shows a yes/no dialog, varResult
stores 1 if YES was selected.
6F multichoice x. y. list. [Link] # player
selection stored in varResult. If they backed out, varVesult=0x7F
70 multichoice2 x. y. list. default. [Link] # like
multichoice, but you can choose which option is selected at the start
71 multichoicegrid x. y. list. per_row. [Link] # like
multichoice, but shows multiple columns.
71 multichoice3 x. y. list. per_row. [Link] # like
multichoice, but shows multiple columns.
72 showbox x. y. width. height. # nop in Emerald
73 hidebox x. y. width. height. # ruby/sapphire only
74 clearbox x. y. width. height. # clear only a part of a custom box
(nop in Emerald)
75 showpokepic species:[Link] x.|z y.|z # show the pokemon in a box.
Can be a literal or a variable.
76 hidepokepic # hides all shown pokepics
77 showcontestwinner contest. # nop in FireRed. Shows the
painting of a winner of the given contest.
78 braille text<> # displays a message in braille.
The text must be formatted to use braille.
79 givePokemon species:[Link] level. item:[Link] filler.
filler:: filler::
# gives the player one of that
pokemon. the last 9 bytes are all 00.
# varResult=0 if it was added to the
party
# varResult=1 if it was put in the PC
# varResult=2 if there was no room
# 4037=? number of the PC box the
pokemon was sent to, if it was boxed?
7A giveEgg species:[Link] # species can be a pokemon or a
variable
7B setmonmove pokemonSlot. attackSlot. newMove:[Link] # set a
given pokemon in your party to have a specific move.
# Slots range 0-4 and 0-3.
7C checkattack move:[Link] # varResult=n, where n is the index of
the pokemon that knows the move.
# varResult=6, if no pokemon in your
party knows the move
# if successful, var4 is set to the
pokemon species
7D bufferPokemon [Link] species:[Link] # Species can
be a literal or variable. Store the name in the given buffer
7E bufferfirstPokemon [Link] # Species of
your first pokemon gets stored in the given buffer
7F bufferpartyPokemon [Link] party: # Nickname of
pokemon 'party' from your party gets stored in the buffer
80 bufferitem [Link] item:[Link] # stores an
item name in a buffer
81 bufferdecoration [Link] decoration:
82 bufferattack [Link] move:[Link] # Species,
party, item, decoration, and move can all be literals or variables
83 buffernumber [Link] number: # literal or variable gets
converted to a string and put in the buffer.
84 bufferstd [Link] index: # gets one of the standard
strings and pushes it into a buffer
85 bufferstring [Link] pointer<""> # copies the string into the
buffer.
86 pokemart products<`mart`> # products is a list of 2-byte items,
terminated with 0000
87 decorationmart products<`decor`> # same as pokemart, but with
decorations instead of items
88 decorationmart2 products<`decor`> # near-clone of decorationmart, but
with slightly changed dialogue
89 pokecasino index:
[BPRE_BPGE] 8A nop8A
[AXPE_AXVE_BPEE] 8A setberrytree plantID. [Link]+1 growth.
# sets a specific berry-growing spot on the map with the specific berry and growth
level.
8B choosecontextpkmn # in FireRed, 03000EA8 = '1'. In
R/S/E, prompt for a pokemon to enter contest
8C startcontest # nop in FireRed. Starts a contest.
8D showcontestresults # nop in FireRed. Shows contest
results.
8E contestlinktransfer # nop in FireRed. In Emerald, starts a
wireless connection contest
8F random high: # returns 0 <= number < high, stored
in varResult
90 givemoney money:: check. # if check is 0, gives the player
money
91 paymoney money:: check. # if check is 0, takes money from the
player
92 checkmoney money:: check. # if check is 0, checks if the player
has at least that much money. if so, varResult=1
[AXPE_AXVE] 93 showmoney x. y. # shows how much money the player has
in a separate box
[BPRE_BPGE_BPEE] 93 showmoney x. y. check. # shows how much money the player has
in a separate box (only works if check is 0)
94 hidemoney x. y.
[AXPE_AXVE] 95 updatemoney x. y. # updates the amount of money shown
after a money change
[BPRE_BPGE_BPEE] 95 updatemoney x. y. check. # updates the amount of money shown
after a money change (only works if check is 0)
[AXPE_AXVE] 96 getpricereduction index:[Link]
[BPRE_BPGE] 96 nop96
[BPEE] 96 getpokenewsactive newsKind:
97 fadescreen [Link]
98 fadescreendelay [Link] delay.
99 darken flashSize: # makes the screen go dark. Related to
flash? Call from a level script.
9A lighten flashSize. # lightens an area around the player?
9B preparemsg2 pointer<""> # prepares a message that
automatically scrolls at a fixed speed
9C doanimation animation: # executes field move animation
9D setanimation animation. slot: # which party pokemon to use for the
next field animation?
9E checkanimation animation: # if the given animation is playing,
pause the script until the animation completes
9F sethealingplace flightspot: # sets where the player warps when
they white out
A0 checkgender # if male, varResult=0. If female,
varResult=1
A1 cry species:[Link] effect: # plays that pokemon's cry. Can use a
variable or a literal. effect uses a cry mode constant.
A2 setmaptile x: y: tile: isWall: # sets the tile at x/y to be the given
tile: with the attribute.
# 0 = passable (false), 1 = impassable
(true)
A3 resetweather # queues a weather change to the map's
default weather
A4 setweather type:weathertypes #
A5 doweather # actually does the weather change
from resetweather or setweather
A6 changewalktile method. # used with ash-grass(1), breaking
ice(4), and crumbling floor (7). Complicated.
A7 setmapfooter footer: # updates the current map's footer.
typically used on transition level scripts.
A8 spritelevelup npc: bank. map. subpriority. # the chosen npc goes 'up one
level'
A9 restorespritelevel npc: bank. map. # the chosen npc is restored to its
original level
AA createsprite sprite. virtualNPC. x: y: behavior. facing. # creates a virtual
sprite that can be used to bypass the 16 NPCs limit.
AB spriteface2 virtualNPC. facing.
AC setdooropened x: y: # queues the animation, but doesn't do
it
AD setdoorclosed x: y: # queues the animation, but doesn't do
it
AE doorchange # runs the animation from the queue
AF setdooropened2 x: y: # sets the specified door tile to be
open without an animation
B0 setdoorclosed2 x: y: # sets the specified door tile to be
closed without an animation
[AXVE_AXPE] B1 addelevmenuitem param1. param2: param3: param4: # Adds an
elevator menu item. Unused in Ruby & Sapphire.
[BPRE_BPGE] B1 nopB1
[BPEE] B1 nopB1
[AXVE_AXPE] B2 showelevmenu # Shows an elevator menu.
[BPRE_BPGE] B2 nopB2
[BPEE] B2 nopB2
B3 checkcoins output: # your number of coins is stored to
the given variable
B4 givecoins count:
B5 removecoins count:
B6 setwildbattle species:[Link] level. item:[Link]
B7 dowildbattle # runs a battle setup with
setwildbattle
B8 setvirtualaddress pointer::|h # Sets a relative address to be used
by other virtual commands.
# This is usually used in Mystery Gift
scripts.
B9 virtualgoto destination<`xse`> # ???
BA virtualcall destination<`xse`>
BB virtualgotoif condition. destination<>
BC virtualcallif condition. destination<>
BD virtualmsgbox text<"">
BE virtualloadpointer text<""> # uses gStringVar4
BF virtualbuffer [Link] text<> # stores text in a buffer
C0 showcoins x. y.
C1 hidecoins x. y. # the X & Y coordinates are required
even though they end up being unused
C2 updatecoins x. y. # the X & Y coordinates are required
even though they end up being unused
C3 incrementhiddenvalue a. # example: pokecenter nurse uses
variable 0xF after you pick yes
C4 warp6 mapbank. map. warp. x: y: # sets a particular map to warp to
upon using an escape rope/Dig
C5 waitcry # used after cry, it pauses the script
[BPRE_BPGE_BPEE] C6 bufferboxname [Link] box: # box can
be a variable or a literal
[BPRE_BPGE] C7 textcolor color. # 00=blue, 01=red, FF=default,
XX=black. Only in FR/LG
[BPEE] C7 nopC7
[BPRE_BPGE] C8 helptext pointer<""> # something with helptext? Does some
tile loading, which can glitch textboxes
[BPEE] C8 nopC8
[BPRE_BPGE] C9 unloadhelptext # related to help-text box that
appears in the opened Main Menu
[BPEE] C9 nopC9
[BPRE_BPGE] CA signmsg # makes message boxes look like
signposts
[BPEE] CA nopCA
[BPRE_BPGE] CB normalmsg # ends the effect of signmsg.
Textboxes look like normal textboxes.
[BPEE] CB nopCB
[BPRE_BPGE] CC comparehiddenvar a. value:: # compares a hidden value to a given
value.
[BPEE] CC nopCC
[BPRE_BPGE_BPEE] CD setmodernfatefulencounter slot: # a pokemon in your party
now has its modern fateful encounter attribute set
[BPRE_BPGE_BPEE] CE checkmodernfatefulencounter slot: # if the pokemon is not a
modern fateful encounter, then varResult = 1.
# if the pokemon is a
fateful encounter (or the specified slot is invalid), then varResult = 0.
[BPRE_BPGE_BPEE] CF trywondercardscript # Tries a wonder card script.
[BPRE_BPGE_BPEE] CF executeram # Tries a wonder card script.
[BPRE_BPGE] D0 setworldmapflag mapflag:|h # This lets the player fly to a given
map, if the map has a flight spot
[BPEE] D0 nopD0 # (nop in Emerald)
[BPRE_BPGE_BPEE] D1 warpteleport2 bank. map. exit. x: y: # clone of
warpteleport, only used in FR/LG and only with specials
[BPRE_BPGE_BPEE] D2 setcatchlocation slot: [Link] # changes
the catch location of a pokemon in your party (0-5)
[BPEE] D3 moverotatingtileobjects puzzleNumber:
[BPRE_BPGE] D3 braillelength pointer<> # sets variable var4 based on the
braille string's length
# call this, then special 0x1B2 to
make a cursor appear at the end of the text
[BPRE_BPGE] D4 bufferitems2 [Link] item: quantity: # buffers
the item name, but pluralized if quantity is 2 or more
[BPEE] D4 turnrotatingtileobjects
# there is no D5 in ruby nor firered
[BPEE] D5 initrotatingtilepuzzle isTrickHouse:
[BPEE] D6 freerotatingtilepuzzle
[BPEE] D7 warp7 mapbank. map. warp. x: y: # used in Mossdeep City's gym
[BPEE] D8 selectapproachingtrainer # Sets the selected sprite to
the ID of the currently approaching trainer.
[BPEE] D9 lockfortrainer # Locks the movement of the
NPCs that are not the player nor the approaching trainer.
[BPEE] DA hidebox2 # hides a displayed Braille
textbox. Only for Emerald
[BPEE] DB preparemsg3 pointer<""> # shows a text box with text
appearing instantaneously.
[BPEE] DC fadescreen3 [Link] # fades the screen in or out,
swapping buffers. Emerald only.
[BPEE] DD buffertrainerclass [Link] class:[Link]
# stores a trainer class into a specific buffer (Emerald only)
[BPEE] DE buffertrainername [Link] trainer:[Link]
# stores a trainer name into a specific buffer (Emerald only)
[BPEE] DF pokenavcall text<""> # displays a pokenav call.
(Emerald only)
[BPEE] E0 warp8 bank. map. exit. x: y: # warps the player while fading
the screen to white
[BPEE] E1 buffercontesttype [Link] contest:
# stores the contest type name in a buffer. (Emerald Only)
[BPEE] E2 bufferitems2 [Link] item:[Link] quantity:
# stores pluralized item name in a buffer. (Emerald Only)

# XX msgbox text<> type. # multicommand, 8 bytes total


# XX message text<> type.
# XX giveitem item: quantity: message. # multicommand, 12 bytes total
# XX giveitem2 item: quantity: song: # multicommand, 17 bytes total (like
giveitem, but with fanfare)
# XX giveitem3 decoration: # multicommand, 7 bytes
# XX wildbattle species: level. item: # multicommand, 7 bytes
# setwildbattle species: level. item:
# dowildbattle
# XX wildbattle2 species: level. item: style. # multicommand, 10 bytes
# setwildbattle species: level. item:
# (3 bytes?)
# dowildbattle
# XX registernav trainer: #multicommand, 7 bytes (Emerald
Only)

# givemoney/paymoney/checkmoney/showmoney/hidemoney/updatemoney
# verify which of these have the execution check flag, and which don't

# darken/lighten: flashSize different lengths?

You might also like