diff options
Diffstat (limited to 'src/macros/scripts.asm')
-rwxr-xr-x | src/macros/scripts.asm | 215 |
1 files changed, 137 insertions, 78 deletions
diff --git a/src/macros/scripts.asm b/src/macros/scripts.asm index d6ec604..31a96c3 100755 --- a/src/macros/scripts.asm +++ b/src/macros/scripts.asm @@ -111,158 +111,195 @@ ENDM const ScriptCommand_EndScriptLoop10_index ; $67 ; Script Macros + +; Stops the current script and returns control flow back to assembly end_script_loop: MACRO run_command ScriptCommand_EndScriptLoop1 ENDM +; Closes current dialog window close_advanced_text_box: MACRO run_command ScriptCommand_CloseAdvancedTextBox ENDM +; Opens a new dialog window and displays the given text print_text_string: MACRO run_command ScriptCommand_PrintTextString - tx \1 + tx \1 ; Text Pointer ENDM +; Displays text and allows players to choose yes or no. Will jump on yes. +; if first argument is 0000 (NULL), will overwrite last text with yes/no. ask_question_jump: MACRO run_command ScriptCommand_AskQuestionJump - tx \1 - dw \2 +IF ISCONST(\1) + dw \1 ; NULL +ELSE + tx \1 ; Text Pointer +ENDC + dw \2 ; Jump Location ENDM +; Begins a battle with the NPC currently being spoken to start_battle: MACRO run_command ScriptCommand_StartBattle - db \1 - db \2 - db \3 + db \1 ; Prize Amount (ex PRIZES_2) + db \2 ; Deck ID (ex SAMS_PRACTICE_DECK_ID) + db \3 ; Duel Music (ex MUSIC_DUEL_THEME_1) ENDM +; Prints the first or second text depending on if wScriptControlByte is nonzero or zero respectively print_variable_text: MACRO run_command ScriptCommand_PrintVariableText - tx \1 - tx \2 + tx \1 ; Text Pointer + tx \2 ; Text Pointer ENDM +; Displays text then fully quits out of scripting system (Does NOT return to RST20) print_text_quit_fully: MACRO run_command ScriptCommand_PrintTextQuitFully - tx \1 + tx \1 ; Text Pointer ENDM +; Moves the current NPC depending on their current direction +; Argument points to a table of 4 NPCMovements chosen based on direction value move_active_npc_by_direction: MACRO run_command ScriptCommand_MoveActiveNPCByDirection - dw \1 + dw \1 ; Movement Table ENDM +; Closes the textbox currently on the screen close_text_box: MACRO run_command ScriptCommand_CloseTextBox ENDM +; Gives the player up to 3 booster packs. Arguments can be replaced by NO_BOOSTER give_booster_packs: MACRO run_command ScriptCommand_GiveBoosterPacks - db \1 - db \2 - db \3 + db \1 ; booster pack (ex BOOSTER_LABORATORY_NEUTRAL + db \2 ; booster pack + db \3 ; booster pack ENDM +; Jumps to a given script position if the player owns a card anywhere jump_if_card_owned: MACRO run_command ScriptCommand_JumpIfCardOwned - db \1 - dw \2 + db \1 ; card ID (ex LAPRAS) + dw \2 ; script label ENDM +; Jumps to a given script position if the player has a card specifically in their collection jump_if_card_in_collection: MACRO run_command ScriptCommand_JumpIfCardInCollection - db \1 - dw \2 + db \1 ; card ID (ex LAPRAS) + dw \2 ; script label ENDM +; Gives the player a card straight to their collection. +; Does not show the card received screen. For that see show_card_received_screen give_card: MACRO run_command ScriptCommand_GiveCard - db \1 + db \1 ; card ID (ex LAPRAS) ENDM +; Removes a card from the player's collection, usually to trade take_card: MACRO run_command ScriptCommand_TakeCard - db \1 + db \1 ; card ID (ex LAPRAS) ENDM +; Jumps to a given script position if the player owns enough cards jump_if_enough_cards_owned: MACRO run_command ScriptCommand_JumpIfEnoughCardsOwned - dw \1 - dw \2 + dw \1 ; amount of cards needed + dw \2 ; script label ENDM +; Jumps to a script position depending on how far in the fight club pupil quest you are fight_club_pupil_jump: MACRO run_command ScriptCommand_JumpBasedOnFightingClubPupilStatus - dw \1 - dw \2 - dw \3 - dw \4 - dw \5 + dw \1 ; Script Label (First Interaction) + dw \2 ; Script Label (Three Pupils Remaining) + dw \3 ; Script Label (Two Pupils Remaining) + dw \4 ; Script Label (One Pupil Remaining) + dw \5 ; Script Label (All Pupils Defeated) ENDM +; Jumps to a given script position script_jump: MACRO run_command ScriptCommand_Jump - dw \1 + dw \1 ; Script Label ENDM +; Attemps to send Dr. Mason's PC Packs to the player try_give_medal_pc_packs: MACRO run_command ScriptCommand_TryGiveMedalPCPacks ENDM +; Causes the player to face the specified direction set_player_direction: MACRO run_command ScriptCommand_SetPlayerDirection - db \1 + db \1 ; Direction (ex NORTH) ENDM +; Moves the player move_player: MACRO run_command ScriptCommand_MovePlayer - db \1 - db \2 + db \1 ; Direction (ex NORTH) + db \2 ; Speed ENDM +; Shows a fullscreen image of a card and says the player has received it show_card_received_screen: MACRO run_command ScriptCommand_ShowCardReceivedScreen - db \1 + db \1 ; Card received (ex LAPRAS) ENDM +; Sets the active NPC set_dialog_npc: MACRO run_command ScriptCommand_SetDialogNPC - db \1 + db \1 ; NPC (ex NPC_DRMASON) ENDM +; Sets the active NPC and script. Not immediately executed. set_next_npc_and_script: MACRO run_command ScriptCommand_SetNextNPCAndScript - db \1 - dw \2 + db \1 ; NPC (ex NPC_DRMASON) + dw \2 ; Script Label ENDM +; Waits a number of frames do_frames: MACRO run_command ScriptCommand_DoFrames - db \1 + db \1 ; Number of frames to wait ENDM +; Jumps to a script position if the player's X and Y match the given values jump_if_player_coords_match: MACRO run_command ScriptCommand_JumpIfPlayerCoordsMatch - db \1 - db \2 - dw \3 + db \1 ; X Coord + db \2 ; Y Coord + dw \3 ; Script Label ENDM +; Moves the active NPC using an NPCMovement move_active_npc: MACRO run_command ScriptCommand_MoveActiveNPC - dw \1 + dw \1 ; NPCMovement (ex NPCMovement_d880) ENDM +; Gives the player one of each booster pack with a trainer focus give_one_of_each_trainer_booster: MACRO run_command ScriptCommand_GiveOneOfEachTrainerBooster ENDM +; Moves the NPC in wTempNPC using an NPCMovement move_wram_npc: MACRO run_command ScriptCommand_MoveWramNPC - dw \1 + dw \1 ; NPCMovement (ex NPCMovement_d880) ENDM +; Closes Advanced TextBoxes then Ends Script Loop quit_script_fully: MACRO run_command ScriptCommand_QuitScriptFully ENDM @@ -271,64 +308,74 @@ choose_deck_to_duel_against_multichoice: MACRO run_command ScriptCommand_ChooseDeckToDuelAgainstMultichoice ENDM +; Opens the deck machine open_deck_machine: MACRO run_command ScriptCommand_OpenDeckMachine - db \1 + db \1 ; Deck Machine Type? ENDM choose_starter_deck_multichoice: MACRO run_command ScriptCommand_ChooseStarterDeckMultichoice ENDM +; Enters a given map screen enter_map: MACRO run_command ScriptCommand_EnterMap - db \1 - db \2 - db \3 - db \4 - db \5 + db \1 ; Unused + db \2 ; Room (ex MASON_LABORATORY) + db \3 ; Player X + db \4 ; Player Y + db \5 ; Player Direction ENDM +; Moves any NPC using an NPCMovement move_arbitrary_npc: MACRO run_command ScriptCommand_MoveArbitraryNPC - db \1 - dw \2 + db \1 ; NPC (ex NPC_JOSHUA) + dw \2 ; NPCMovement (NPCMovement_e2ab) ENDM +; Tries to give the player a specific PC Pack from Dr. Mason try_give_pc_pack: MACRO run_command ScriptCommand_TryGivePCPack - db \1 + db \1 ; PC Pack Index ENDM +; Nothing. script_nop: MACRO run_command ScriptCommand_nop ENDM +; Plays a sound effect play_sfx: MACRO run_command ScriptCommand_PlaySFX - db \1 + db \1 ; Sound Effect (ex SFX_56) ENDM +; Pauses the current song pause_song: MACRO run_command ScriptCommand_PauseSong ENDM +; Resumes the current song resume_song: MACRO run_command ScriptCommand_ResumeSong ENDM +; Waits for the current song to finish wait_for_song_to_finish: MACRO run_command ScriptCommand_WaitForSongToFinish ENDM +; Asks the player a question then jumps ask_question_jump_default_yes: MACRO run_command ScriptCommand_AskQuestionJumpDefaultYes IF ISCONST(\1) - dw \1 + dw \1 ; NULL ELSE - tx \1 + tx \1 ; Text Pointer ENDC - dw \2 + dw \2 ; Script Label ENDM show_sam_normal_multichoice: MACRO @@ -359,77 +406,89 @@ end_script_loop_6: MACRO run_command ScriptCommand_EndScriptLoop6 ENDM +; Sets a flag's value script_set_flag_value: MACRO run_command ScriptCommand_SetFlagValue - db \1 - db \2 + db \1 ; flag (ex EVENT_FLAG_11) + db \2 ; new value ENDM +; Jumps to a script position if a given flag is zero jump_if_flag_zero_1: MACRO run_command ScriptCommand_JumpIfFlagZero1 - db \1 - dw \2 + db \1 ; flag (ex EVENT_FLAG_11) + dw \2 ; Script Label ENDM +; Jumps to a script position if a given flag is nonzero jump_if_flag_nonzero_1: MACRO run_command ScriptCommand_JumpIfFlagNonzero1 - db \1 - dw \2 + db \1 ; flag (ex EVENT_FLAG_11) + dw \2 ; Script Label ENDM +; Jumps to a script position if a flag matches given value jump_if_flag_equal: MACRO run_command ScriptCommand_JumpIfFlagEqual - db \1 - db \2 - dw \3 + db \1 ; flag (ex EVENT_FLAG_11) + db \2 ; value + dw \3 ; Script Label ENDM +; Jumps to a script position if a flag does not match a given value jump_if_flag_not_equal: MACRO run_command ScriptCommand_JumpIfFlagNotEqual - db \1 - db \2 - dw \3 + db \1 ; flag (ex EVENT_FLAG_11) + db \2 ; value + dw \3 ; Script Label ENDM +; Jump to a script position if a flag is not less than a given value jump_if_flag_not_less_than: MACRO run_command ScriptCommand_JumpIfFlagNotLessThan - db \1 - db \2 - dw \3 + db \1 ; flag (ex EVENT_FLAG_11) + db \2 ; value + dw \3 ; Script Label ENDM +; Jump to a script position if a flag is less than a given value jump_if_flag_less_than: MACRO run_command ScriptCommand_JumpIfFlagLessThan - db \1 - db \2 - dw \3 + db \1 ; flag (ex EVENT_FLAG_11) + db \2 ; value + dw \3 ; Script Label ENDM +; Sets a flag to its maximum possible value max_out_flag_value: MACRO run_command ScriptCommand_MaxOutFlagValue - db \1 + db \1 ; flag (ex EVENT_FLAG_11) ENDM +; Sets a flags value to zero zero_out_flag_value: MACRO run_command ScriptCommand_ZeroOutFlagValue - db \1 + db \1 ; flag (ex EVENT_FLAG_11) ENDM +; Jumps to a script position if a flag is zero jump_if_flag_zero_2: MACRO run_command ScriptCommand_JumpIfFlagZero2 - db \1 - dw \2 + db \1 ; flag (ex EVENT_FLAG_11) + dw \2 ; Script Label ENDM +; Jumps to a script position if a flag is nonzero jump_if_flag_nonzero_2: MACRO run_command ScriptCommand_JumpIfFlagNonzero2 - db \1 - dw \2 + db \1 ; flag (ex EVENT_FLAG_11) + dw \2 ; Script Label ENDM +; Increments given flags value (truncates the new value) script_increment_flag_value: MACRO run_command ScriptCommand_IncrementFlagValue - db \1 + db \1 ; flag (ex EVENT_FLAG_11) ENDM end_script_loop_7: MACRO |