Merge branch 'master' of github.com:pret/pokeemerald into battle_engine_sync

This commit is contained in:
ultima-soul committed 2021-11-21 10:40:26 -08:00
commit 3ed51d6d91
965 files changed
+54032 -52665

No files matched your search

+46 -46
View File
@@ -14,7 +14,7 @@
.byte 0x02
.4byte \template
.if \anim_battler == ANIM_TARGET
.byte 0x80 | (\subpriority_offset & 0x7F)
.byte ANIMSPRITE_IS_TARGET | (\subpriority_offset & 0x7F)
.else
.byte (\subpriority_offset & 0x7F)
.endif
@@ -34,20 +34,20 @@
.Lcreatetask_\@_2:
.endm
.macro delay param0:req
.macro delay frames:req
.byte 0x4
.byte \param0
.byte \frames
.endm
.macro waitforvisualfinish
.byte 0x5
.endm
.macro hang1
.macro nop
.byte 0x6
.endm
.macro hang2
.macro nop2
.byte 0x7
.endm
@@ -79,30 +79,30 @@
.byte 0xd
.endm
.macro call param0:req
.macro call ptr:req
.byte 0xe
.4byte \param0
.4byte \ptr
.endm
.macro return
.byte 0xf
.endm
.macro setarg param0:req, param1:req
.macro setarg argId:req, value:req
.byte 0x10
.byte \param0
.2byte \param1
.byte \argId
.2byte \value
.endm
.macro choosetwoturnanim param0:req, param1:req
.macro choosetwoturnanim ptr1:req, ptr2:req
.byte 0x11
.4byte \param0
.4byte \param1
.4byte \ptr1
.4byte \ptr2
.endm
.macro jumpifmoveturn param0:req, ptr:req
.macro jumpifmoveturn value:req, ptr:req
.byte 0x12
.byte \param0
.byte \value
.4byte \ptr
.endm
@@ -144,13 +144,13 @@
.byte \pan
.endm
.macro panse_1B se:req, param1:req, param2:req, param3:req, param4:req
.macro panse se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req
.byte 0x1b
.2byte \se
.byte \param1
.byte \param2
.byte \param3
.byte \param4
.byte \currentPan
.byte \targetPan
.byte \incrementPan
.byte \delay
.endm
.macro loopsewithpan se:req, pan:req, wait:req, times:req
@@ -168,9 +168,9 @@
.byte \wait
.endm
.macro setbldcnt param0:req
.macro setbldcnt bldcnt:req
.byte 0x1e
.2byte \param0
.2byte \bldcnt
.endm
.macro createsoundtask addr:req, argv:vararg
@@ -186,19 +186,19 @@
.byte 0x20
.endm
.macro jumpargeq param0:req, param1:req, ptr:req
.macro jumpargeq argId:req, value:req, ptr:req
.byte 0x21
.byte \param0
.2byte \param1
.byte \argId
.2byte \value
.4byte \ptr
.endm
.macro monbg_22 battler:req
.macro monbg_static battler:req
.byte 0x22
.byte \battler
.endm
.macro clearmonbg_23 battler:req
.macro clearmonbg_static battler:req
.byte 0x23
.byte \battler
.endm
@@ -208,41 +208,41 @@
.4byte \ptr
.endm
.macro fadetobgfromset param0:req, param1:req, param2:req
.macro fadetobgfromset bgOpponent:req, bgPlayer:req, bgContest:req
.byte 0x25
.byte \param0
.byte \param1
.byte \param2
.byte \bgOpponent
.byte \bgPlayer
.byte \bgContest
.endm
.macro panse_26 se:req, param1:req, param2:req, param3:req, param4:req
.macro panse_adjustnone se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req
.byte 0x26
.2byte \se
.byte \param1
.byte \param2
.byte \param3
.byte \param4
.byte \currentPan
.byte \targetPan
.byte \incrementPan
.byte \delay
.endm
.macro panse_27 se:req, param1:req, param2:req, param3:req, param4:req
.macro panse_adjustall se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req
.byte 0x27
.2byte \se
.byte \param1
.byte \param2
.byte \param3
.byte \param4
.byte \currentPan
.byte \targetPan
.byte \incrementPan
.byte \delay
.endm
.macro monbgprio_28 battler:req
.macro splitbgprio battler:req
.byte 0x28
.byte \battler
.endm
.macro monbgprio_29
.macro splitbgprio_all
.byte 0x29
.endm
.macro monbgprio_2A battler:req
.macro splitbgprio_foes battler:req
.byte 0x2a
.byte \battler
.endm
@@ -257,12 +257,12 @@
.byte \battler
.endm
.macro doublebattle_2D battler:req
.macro teamattack_moveback battler:req
.byte 0x2d
.byte \battler
.endm
.macro doublebattle_2E battler:req
.macro teamattack_movefwd battler:req
.byte 0x2e
.byte \battler
.endm
+3 -3
View File
@@ -53,7 +53,7 @@
special CallApprenticeFunction
.endm
@ Always returns TRUE. No side effect. May have been for debug or dummied for some other reason
@ Always returns TRUE. No side effect. May have been for debug or dummied for some other reason
.macro apprentice_shouldcheckgone
setvar VAR_0x8004, APPRENTICE_FUNC_CHECK_GONE
special CallApprenticeFunction
@@ -109,7 +109,7 @@
special CallApprenticeFunction
.endm
@ Set which mon the Apprentice should lead with
@ Set which mon the Apprentice should lead with
.macro apprentice_setleadmon monId:req
copyvar VAR_0x8005, \monId
setvar VAR_0x8004, APPRENTICE_FUNC_SET_LEAD_MON
@@ -141,7 +141,7 @@
special CallApprenticeFunction
.endm
@ Always returns TRUE. No side effect. May have been for debug or dummied for some other reason
@ Always returns TRUE. No side effect. May have been for debug or dummied for some other reason
.macro apprentice_shouldleave
setvar VAR_0x8004, APPRENTICE_FUNC_SHOULD_LEAVE
special CallApprenticeFunction
@@ -88,7 +88,7 @@
.endm
@ Return the FACTORY_STYLE_* dependent on what types of moves the opponents team has, or FACTORY_NUM_STYLES if multiple styles tie for the same amount of moves
.macro factory_getopponentstyle
.macro factory_getopponentstyle
setvar VAR_0x8004, BATTLE_FACTORY_FUNC_GET_OPPONENT_STYLE
special CallBattleFactoryFunction
.endm
+1 -1
View File
@@ -31,7 +31,7 @@
special CallBattlePalaceFunction
.endm
@ Buffer the opponents intro speech to gStringVar4. Also used by Battle Arena and Factory
@ Buffer the opponents intro speech to gStringVar4. Also used by Battle Arena and Factory
.macro palace_getopponentintro
setvar VAR_0x8004, BATTLE_PALACE_FUNC_GET_OPPONENT_INTRO
special CallBattlePalaceFunction
@@ -1,7 +1,7 @@
@ Initialize the Battle Pyramid challenge
.macro pyramid_init
setvar VAR_0x8004, BATTLE_PYRAMID_FUNC_INIT
special CallBattlePyramidFunction
special CallBattlePyramidFunction
.endm
@ Get the value of some PYRAMID_DATA_*. See GetBattlePyramidData for the data types that can be retrieved
@@ -59,7 +59,7 @@
@ Set the facility trainers to gBattleFrontierTrainers
.macro pyramid_settrainers
setvar VAR_0x8004, BATTLE_PYRAMID_FUNC_SET_TRAINERS
special CallBattlePyramidFunction
special CallBattlePyramidFunction
.endm
@ Show the post-battle hint text
@@ -68,11 +68,11 @@
special CallBattlePyramidFunction
.endm
@ VAR_RESULT is 1 if player is on a Pyramid floor, 2 if on the Pyramid peak, 0 otherwise
@ VAR_RESULT is 1 if player is on a Pyramid floor, 2 if on the Pyramid peak, 0 otherwise
.macro pyramid_inchallenge
setvar VAR_0x8004, BATTLE_PYRAMID_FUNC_IS_IN
special CallBattlePyramidFunction
.endm
.endm
@ Update the light around the player. 2 different modes, for setting or incrementing light. See PYRAMID_LIGHT_*
.macro pyramid_updatelight radius:req, mode:req, sound=0xFFFF
@@ -83,7 +83,7 @@
setvar VAR_0x8007, \sound
.endif
special CallBattlePyramidFunction
.endm
.endm
@ Reset the held items to what they were at the start of the challenge
.macro pyramid_clearhelditems
@@ -100,5 +100,5 @@
@ Reset sketched moves and update the party order in the saveblock
.macro pyramid_resetparty
setvar VAR_0x8004, BATTLE_PYRAMID_FUNC_RESTORE_PARTY
special CallBattlePyramidFunction
special CallBattlePyramidFunction
.endm
File diff suppressed because it is too large. Load diff
+9 -9
View File
@@ -26,7 +26,7 @@
special CallVerdanturfTentFunction
.endm
@ Buffers the opponents intro speech to STR_VAR_4. Despite being a Verdanturf Tent function, it serves the same purpose for all 3 tents.
@ Buffers the opponents intro speech to STR_VAR_4. Despite being a Verdanturf Tent function, it serves the same purpose for all 3 tents.
.macro battletent_getopponentintro
setvar VAR_0x8004, VERDANTURF_TENT_FUNC_GET_OPPONENT_INTRO
special CallVerdanturfTentFunction
@@ -36,7 +36,7 @@
.macro verdanturftent_save challengeStatus:req
setvar VAR_0x8004, VERDANTURF_TENT_FUNC_SAVE
setvar VAR_0x8005, \challengeStatus
special CallVerdanturfTentFunction
special CallVerdanturfTentFunction
.endm
@ Set the prize item as randomly selected from a list. Randomness unnecessary, as the list is only 1 item
@@ -49,7 +49,7 @@
.macro verdanturftent_giveprize
setvar VAR_0x8004, VERDANTURF_TENT_FUNC_GIVE_PRIZE
special CallVerdanturfTentFunction
.endm
.endm
@ Fallarbor Tent
@@ -79,7 +79,7 @@
setvar VAR_0x8004, FALLARBOR_TENT_FUNC_SAVE
setvar VAR_0x8005, \challengeStatus
special CallFallarborTentFunction
.endm
.endm
@ Set the prize item as randomly selected from a list. Randomness unnecessary, as the list is only 1 item
.macro fallarbortent_setrandomprize
@@ -97,7 +97,7 @@
.macro fallarbortent_getopponentname
setvar VAR_0x8004, FALLARBOR_TENT_FUNC_GET_OPPONENT_NAME
special CallFallarborTentFunction
.endm
.endm
@ Slateport Tent
@@ -127,15 +127,15 @@
setvar VAR_0x8004, SLATEPORT_TENT_FUNC_SAVE
setvar VAR_0x8005, \challengeStatus
special CallSlateportTentFunction
.endm
.endm
@ Set the prize item as randomly selected from a list. Randomness unnecessary, as the list is only 1 item
@ Set the prize item as randomly selected from a list. Randomness unnecessary, as the list is only 1 item
.macro slateporttent_setrandomprize
setvar VAR_0x8004, SLATEPORT_TENT_FUNC_SET_RANDOM_PRIZE
special CallSlateportTentFunction
.endm
@ Give the current prize item. FALSE if no room for prize
@ Give the current prize item. FALSE if no room for prize
.macro slateporttent_giveprize
setvar VAR_0x8004, SLATEPORT_TENT_FUNC_GIVE_PRIZE
special CallSlateportTentFunction
@@ -157,7 +157,7 @@
.macro slateporttent_generateopponentmons
setvar VAR_0x8004, SLATEPORT_TENT_FUNC_GENERATE_OPPONENT_MONS
special CallSlateportTentFunction
.endm
.endm
@ Slateport Tent's version of factory_generaterentalmons
.macro slateporttent_generaterentalmons
+37 -32
View File
@@ -274,8 +274,8 @@
.2byte \functionId
.endm
@ Blocks script execution until a command or ASM code manually unblocks it. Generally used with specific
@ commands and specials. If this command runs, and a subsequent command or piece of ASM does not unblock
@ Blocks script execution until a command or ASM code manually unblocks it. Generally used with specific
@ commands and specials. If this command runs, and a subsequent command or piece of ASM does not unblock
@ state, the script will remain blocked indefinitely (essentially a hang).
.macro waitstate
.byte 0x27
@@ -317,7 +317,7 @@
.byte 0x2d
.endm
@ Sets the values of variables 0x8000, 0x8001, and 0x8002 to the current hour, minute, and second. In FRLG,
@ Sets the values of variables 0x8000, 0x8001, and 0x8002 to the current hour, minute, and second. In FRLG,
@ this command sets those variables to zero.
.macro gettime
.byte 0x2e
@@ -382,7 +382,7 @@
.byte \speed
.endm
@ Sends the player to Warp warp on Map bank.map. If the specified warp is 0xFF,
@ Sends the player to Warp warp on Map bank.map. If the specified warp is 0xFF,
@ then the player will instead be sent to (X, Y) on the map.
.macro warp map:req, warp:req, X:req, Y:req
.byte 0x39
@@ -434,7 +434,7 @@
.2byte \Y
.endm
@ Sets the warp destination that a warp to Warp 127 on Map 127.127 will connect to.
@ Sets the warp destination that a warp to Warp 127 on Map 127.127 will connect to.
@ Useful when a map has warps that need to go to script-controlled locations (i.e. elevators).
.macro setdynamicwarp map:req, warp:req, X:req, Y:req
.byte 0x3f
@@ -474,7 +474,7 @@
.byte 0x43
.endm
@ Attempts to add quantity of item index to the player's Bag. If the player has enough room, the item will be added and
@ Attempts to add quantity of item index to the player's Bag. If the player has enough room, the item will be added and
@ VAR_RESULT will be set to TRUE; otherwise, VAR_RESULT is set to FALSE.
.macro additem index:req, quantity=1
.byte 0x44
@@ -489,7 +489,7 @@
.2byte \quantity
.endm
@ Checks if the player has enough space in their Bag to hold quantity more of item index. Sets VAR_RESULT to
@ Checks if the player has enough space in their Bag to hold quantity more of item index. Sets VAR_RESULT to
@ TRUE if there is room, or FALSE is there is no room.
.macro checkitemspace index:req, quantity:req
.byte 0x46
@@ -505,7 +505,7 @@
.2byte \quantity
.endm
@ Checks which Bag pocket the specified item belongs in, and writes the pocket value (POCKET_*) to VAR_RESULT.
@ Checks which Bag pocket the specified item belongs in, and writes the pocket value (POCKET_*) to VAR_RESULT.
@ This script is used to show the name of the proper Bag pocket when the player receives an item via callstd (simplified to giveitem in XSE).
.macro checkitemtype index:req
.byte 0x48
@@ -544,7 +544,7 @@
.2byte \decoration
.endm
@ Checks if the player has enough space in their PC to hold decoration. Sets VAR_RESULT to TRUE if there is room, or
@ Checks if the player has enough space in their PC to hold decoration. Sets VAR_RESULT to TRUE if there is room, or
@ FALSE is there is no room. In FireRed, this command is a nop. (The argument is read, but not used for anything.)
.macro checkdecorspace decoration:req
.byte 0x4e
@@ -567,9 +567,9 @@
.endif
.endm
@ Blocks script execution until the movements being applied to the specified (index) Object finish.
@ If the specified Object is 0x0000, then the command will block script execution until all Objects
@ affected by applymovement finish their movements. If the specified Object is not currently being
@ Blocks script execution until the movements being applied to the specified (index) Object finish.
@ If the specified Object is 0x0000, then the command will block script execution until all Objects
@ affected by applymovement finish their movements. If the specified Object is not currently being
@ manipulated with applymovement, then this command does nothing.
@ If no map is specified, then the current map is used.
.macro waitmovement index:req, map
@@ -583,8 +583,8 @@
.endif
.endm
@ Attempts to hide the specified (index) Object on the specified (map_group, map_num) map,
@ by setting its visibility flag if it has a valid one. If the Object does not have a valid
@ Attempts to hide the specified (index) Object on the specified (map_group, map_num) map,
@ by setting its visibility flag if it has a valid one. If the Object does not have a valid
@ visibility flag, this command does nothing.
@ If no map is specified, then the current map is used.
.macro removeobject index:req, map
@@ -598,7 +598,7 @@
.endif
.endm
@ Unsets the specified (index) Object's visibility flag on the specified (map_group, map_num) map if it has a valid one.
@ Unsets the specified (index) Object's visibility flag on the specified (map_group, map_num) map if it has a valid one.
@ If the Object does not have a valid visibility flag, this command does nothing.
@ If no map is specified, then the current map is used.
.macro addobject index:req, map
@@ -740,7 +740,7 @@
.endm
@ Starts a trainer battle using the battle information stored in RAM (usually by trainerbattle, which actually calls this
@ Starts a trainer battle using the battle information stored in RAM (usually by trainerbattle, which actually calls this
@ command behind-the-scenes), and blocks script execution until the battle finishes.
.macro trainerbattlebegin
.byte 0x5d
@@ -781,7 +781,7 @@
.2byte \y
.endm
@ Copies a live object event's xy position to its template, so that if the sprite goes off screen,
@ Copies a live object event's xy position to its template, so that if the sprite goes off screen,
@ it'll still be there when it comes back on screen.
.macro copyobjectxytoperm index:req
.byte 0x64
@@ -794,14 +794,14 @@
.byte \byte
.endm
@ If a standard message box (or its text) is being drawn on-screen, this command blocks script execution until the
@ If a standard message box (or its text) is being drawn on-screen, this command blocks script execution until the
@ box and its text have been fully drawn.
.macro waitmessage
.byte 0x66
.endm
@ Starts displaying a standard message box containing the specified text. If text is a pointer, then the string at
@ that offset will be loaded and used. If text is script bank 0, then the value of script bank 0 will be treated as
@ Starts displaying a standard message box containing the specified text. If text is a pointer, then the string at
@ that offset will be loaded and used. If text is script bank 0, then the value of script bank 0 will be treated as
@ a pointer to the text. (You can use loadpointer to place a string pointer in a script bank.)
.macro message text:req
.byte 0x67
@@ -846,7 +846,7 @@
.byte \y
.endm
@ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made.
@ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made.
@ Lists of options are predefined (sMultichoiceLists) and the one to be used is specified with multichoiceId.
@ If ignoreBPress is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button.
.macro multichoice x:req, y:req, multichoiceId:req, ignoreBPress:req
@@ -859,7 +859,7 @@
@ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made.
@ Lists of options are predefined (sMultichoiceLists) and the one to be used is specified with multichoiceId.
@ The default argument determines the initial position of the cursor when the box is first opened; it is zero-indexed, and if it is too large, it is treated as 0x00.
@ The default argument determines the initial position of the cursor when the box is first opened; it is zero-indexed, and if it is too large, it is treated as 0x00.
@ If ignoreBPress is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button.
.macro multichoicedefault x:req, y:req, multichoiceId:req, default:req, ignoreBPress:req
.byte 0x70
@@ -925,8 +925,8 @@
.byte \winnerId
.endm
@ Displays the string at pointer as braille text in a standard message box. The string must be formatted to use braille
@ characters and needs to provide six extra starting characters that are skipped (in RS, these characters determined the
@ Displays the string at pointer as braille text in a standard message box. The string must be formatted to use braille
@ characters and needs to provide six extra starting characters that are skipped (in RS, these characters determined the
@ box's size and position, but in Emerald these are calculated automatically).
.macro braillemessage text:req
.byte 0x78
@@ -996,7 +996,7 @@
.2byte \slot
.endm
@ Writes the name of the item at index item to the specified buffer. If the specified index is larger than
@ Writes the name of the item at index item to the specified buffer. If the specified index is larger than
@ the number of items in the game (0x176), the name of item 0 ("????????") is buffered instead.
.macro bufferitemname out:req, item:req
.byte 0x80
@@ -1112,7 +1112,7 @@
.byte \check
.endm
@ If check is 0x00, this command will check if the player has money >= value; VAR_RESULT is set to TRUE if the player
@ If check is 0x00, this command will check if the player has money >= value; VAR_RESULT is set to TRUE if the player
@ has enough money, or FALSE if they do not.
.macro checkmoney value:req, check:req
.byte 0x92
@@ -1343,7 +1343,7 @@
@ Prepares to start a wild battle against a species at Level level holding item.
@ If species2 is something other than SPECIES_NONE, then the battle is a double battle with another pokemon
@ with species species2 at Level level2 holding item2.
@ with species species2 at Level level2 holding item2.
@ Running this command will not affect normal wild battles. You start the prepared battle with dowildbattle.
@ If the player only has one pokemon, a scripted double battle will be buggy.
.macro setwildbattle species:req, level:req, item:req, species2=SPECIES_NONE, level2=0, item2=ITEM_NONE
@@ -1452,7 +1452,7 @@
.2byte \box
.endm
@ Sets the color of the text in standard message boxes. 0x00 produces blue (male) text, 0x01 produces red (female) text,
@ Sets the color of the text in standard message boxes. 0x00 produces blue (male) text, 0x01 produces red (female) text,
@ 0xFF resets the color to the default for the current OW's gender, and all other values produce black text.
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
.macro textcolor color:req
@@ -1460,7 +1460,7 @@
.byte \color
.endm
@ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom
@ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom
@ of the screen when the Main Menu is opened.
@ Used only in FireRed/LeafGreen, does nothing in Emerald.
.macro loadhelp pointer:req
@@ -1649,7 +1649,7 @@
.macro goto_if_lt dest:req @ LESS THAN
goto_if 0, \dest
.endm
.endm
.macro goto_if_eq dest:req @ EQUAL
goto_if 1, \dest
@@ -1683,7 +1683,7 @@
.macro call_if_lt dest:req @ LESS THAN
call_if 0, \dest
.endm
.endm
.macro call_if_eq dest:req @ EQUAL
call_if 1, \dest
@@ -1799,6 +1799,12 @@
dofieldeffect FLDEFF_SPARKLE
.endm
.macro braillemsgbox text:req
braillemessage \text
waitbuttonpress
closebraillemessage
.endm
@ Set up a totem boost for the next battle.
@ 'battler' is the position of the mon you want to gain a boost. see B_POSITION_xx in include/constants/battle.h.
@ The rest of the arguments are the stat change values to each stat.
@@ -1859,4 +1865,3 @@
.macro totemboost_evas2 battler:req
settotemboost \battler, 0, 0, 0, 0, 0, 0, 2
.endm
+8 -8
View File
@@ -43,18 +43,18 @@
create_movement_action walk_in_place_fast_up
create_movement_action walk_in_place_fast_left
create_movement_action walk_in_place_fast_right
create_movement_action walk_in_place_fastest_down
create_movement_action walk_in_place_fastest_up
create_movement_action walk_in_place_fastest_left
create_movement_action walk_in_place_fastest_right
create_movement_action walk_in_place_faster_down
create_movement_action walk_in_place_faster_up
create_movement_action walk_in_place_faster_left
create_movement_action walk_in_place_faster_right
create_movement_action ride_water_current_down
create_movement_action ride_water_current_up
create_movement_action ride_water_current_left
create_movement_action ride_water_current_right
create_movement_action walk_fastest_down
create_movement_action walk_fastest_up
create_movement_action walk_fastest_left
create_movement_action walk_fastest_right
create_movement_action walk_faster_down
create_movement_action walk_faster_up
create_movement_action walk_faster_left
create_movement_action walk_faster_right
create_movement_action slide_down
create_movement_action slide_up
create_movement_action slide_left
-35
View File
@@ -1,35 +0,0 @@
.global RomHeaderNintendoLogo
RomHeaderNintendoLogo:
.space 156
RomHeaderGameTitle:
.space 12
.global RomHeaderGameCode
RomHeaderGameCode:
.space 4
RomHeaderMakerCode:
.space 2
RomHeaderMagic:
.byte 0
RomHeaderMainUnitCode:
.byte 0
RomHeaderDeviceType:
.byte 0
RomHeaderReserved1:
.space 7
.global RomHeaderSoftwareVersion
RomHeaderSoftwareVersion:
.byte 0
RomHeaderChecksum:
.byte 0
RomHeaderReserved2:
.space 2