summaryrefslogtreecommitdiff
path: root/asm/macros/battle_frontier/frontier_util.inc
diff options
context:
space:
mode:
Diffstat (limited to 'asm/macros/battle_frontier/frontier_util.inc')
-rw-r--r--asm/macros/battle_frontier/frontier_util.inc153
1 files changed, 153 insertions, 0 deletions
diff --git a/asm/macros/battle_frontier/frontier_util.inc b/asm/macros/battle_frontier/frontier_util.inc
new file mode 100644
index 000000000..def5b4d1c
--- /dev/null
+++ b/asm/macros/battle_frontier/frontier_util.inc
@@ -0,0 +1,153 @@
+ @ Get the status (CHALLENGE_STATUS_*) of the current challenge and store the result in VAR_TEMP_0
+ .macro frontier_getstatus
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_GET_STATUS
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Get the value of some FRONTIER_DATA_*. See GetFrontierData for the data types that can be retrieved
+ .macro frontier_get data:req
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_GET_DATA
+ setvar VAR_0x8005, \data
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Set the value of some FRONTIER_DATA_*. Some data types do not need a val argument because the value is set directly from somewhere else. See SetFrontierData for the data types that can be set
+ .macro frontier_set data:req, val=0xFFFF
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SET_DATA
+ setvar VAR_0x8005, \data
+ .if \val == 0xFFFF
+ @ no value provided
+ .elseif \val >= VARS_START
+ copyvar VAR_0x8006, \val
+ .else
+ setvar VAR_0x8006, \val
+ .endif
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Load the selected mons into gSelectedOrderFromParty and reduce the players party to these mons
+ .macro frontier_setpartyorder partySize:req
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SET_PARTY_ORDER
+ setvar VAR_0x8005, \partySize
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Performs a soft reset
+ .macro frontier_reset
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SOFT_RESET
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Loads gBattleFrontierTrainers into gFacilityTrainers
+ .macro frontier_settrainers
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SET_TRAINERS
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Sets the selected party mons in the saveblock
+ .macro frontier_saveparty
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SAVE_PARTY
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Shows the results window for the given facility and mode. Facilities with only 1 mode dont provide the mode argument
+ .macro frontier_results facility:req, mode=0xFF
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_RESULTS_WINDOW
+ setvar VAR_0x8005, \facility
+ .if \mode != 0xFF
+ setvar VAR_0x8006, \mode
+ .endif
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Checks if the Battle Frontier TV special should air, and if so attempts to set it up
+ .macro frontier_checkairshow
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_CHECK_AIR_TV_SHOW
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Get the status of the Frontier Brain (Not ready, Silver/Gold streak before symbols, Silver/Gold streak after symbols)
+ .macro frontier_getbrainstatus
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_GET_BRAIN_STATUS
+ special CallFrontierUtilFunc
+ .endm
+
+ @ TRUE if the opponent is a Frontier Brain, FALSE otherwise
+ .macro frontier_isbrain
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_IS_BRAIN
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Awards battle points depending on the current challenge
+ .macro frontier_givepoints
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_GIVE_BATTLE_POINTS
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Returns 0-2 for the number of facility symbols the player has
+ .macro frontier_getsymbols
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_GET_FACILITY_SYMBOLS
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Awards a frontier symbol depending on the current challenge
+ .macro frontier_givesymbol
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_GIVE_FACILITY_SYMBOL
+ special CallFrontierUtilFunc
+ .endm
+
+ @ TRUE if the given battleType is set in gBattleTypeFlags, FALSE otherwise
+ .macro frontier_isbattletype battleType:req
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_CHECK_BATTLE_TYPE
+ setvar VAR_0x8005, \battleType
+ special CallFrontierUtilFunc
+ .endm
+
+ @ TRUE if there are insufficient eligible party mons to participate in the challenge, and buffers caught ineligible species to STR_VAR_1. FALSE otherwise. The return value is stored in VAR_0x8004 instead, and the current level mode is expected to be in VAR_RESULT
+ .macro frontier_checkineligible
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_CHECK_INELIGIBLE
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Validates the visiting E-Reader trainer. 0 if valid, 1 if not
+ .macro frontier_checkvisittrainer
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_CHECK_VISIT_TRAINER
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Increments the current win streak by 1
+ .macro frontier_incrementstreak
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_INCREMENT_STREAK
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Resets the party held items to what they were upon entering the challenge
+ .macro frontier_restorehelditems
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_RESTORE_HELD_ITEMS
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Move the recorded battle to save data
+ .macro frontier_savebattle
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SAVE_BATTLE
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Buffer the name of gTrainerBattleOpponent_A in STR_VAR_1 (0) or STR_VAR_2 (1)
+ .macro frontier_gettrainername stringVar:req
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_BUFFER_TRAINER_NAME
+ setvar VAR_0x8005, \stringVar
+ special CallFrontierUtilFunc
+ .endm
+
+ @ If any moves were copied using Sketch during the challenge then restore them to Sketch
+ .macro frontier_resetsketch
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_RESET_SKETCH_MOVES
+ special CallFrontierUtilFunc
+ .endm
+
+ @ Set the object event gfx of the Frontier Brain for the current facility
+ .macro frontier_setbrainobj
+ setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SET_BRAIN_OBJECT
+ special CallFrontierUtilFunc
+ .endm