ref: b1e63485d8747ef4946b56a5d0c07c4fdfaf7186
dir: /engine/scripting.asm/
; Event scripting commands. EnableScriptMode:: ; 96c56 push af ld a, SCRIPT_READ ld [ScriptMode], a pop af ret ; 96c5e ScriptEvents:: ; 96c5e call StartScript .loop ld a, [ScriptMode] ld hl, .modes rst JumpTable call CheckScript jr nz, .loop ret ; 96c6e .modes ; 96c6e dw EndScript dw RunScriptCommand dw WaitScriptMovement dw WaitScript EndScript: ; 96c76 call StopScript ret ; 96c7a WaitScript: ; 96c7a call StopScript ld hl, ScriptDelay dec [hl] ret nz callba Function58b9 ld a, SCRIPT_READ ld [ScriptMode], a call StartScript ret ; 96c91 WaitScriptMovement: ; 96c91 call StopScript ld hl, VramState bit 7, [hl] ret nz callba Function58b9 ld a, SCRIPT_READ ld [ScriptMode], a call StartScript ret ; 96ca9 RunScriptCommand: ; 96ca9 call GetScriptByte ld hl, ScriptCommandTable rst JumpTable ret ; 96cb1 ScriptCommandTable: ; 0x96cb1 dw Script_2call dw Script_3call dw Script_2ptcall dw Script_2jump dw Script_3jump dw Script_2ptjump dw Script_if_equal dw Script_if_not_equal dw Script_iffalse dw Script_iftrue dw Script_if_greater_than dw Script_if_less_than dw Script_jumpstd dw Script_callstd dw Script_3callasm dw Script_special dw Script_2ptcallasm dw Script_checkmaptriggers dw Script_domaptrigger dw Script_checktriggers dw Script_dotrigger dw Script_writebyte dw Script_addvar dw Script_random dw Script_checkver dw Script_copybytetovar dw Script_copyvartobyte dw Script_loadvar dw Script_checkcode dw Script_writevarcode dw Script_writecode dw Script_giveitem dw Script_takeitem dw Script_checkitem dw Script_givemoney dw Script_takemoney dw Script_checkmoney dw Script_givecoins dw Script_takecoins dw Script_checkcoins dw Script_addcellnum dw Script_delcellnum dw Script_checkcellnum dw Script_checktime dw Script_checkpoke dw Script_givepoke dw Script_giveegg dw Script_givepokeitem dw Script_checkpokeitem dw Script_checkevent dw Script_clearevent dw Script_setevent dw Script_checkflag dw Script_clearflag dw Script_setflag dw Script_wildon dw Script_wildoff dw Script_xycompare dw Script_warpmod dw Script_blackoutmod dw Script_warp dw Script_readmoney dw Script_readcoins dw Script_RAM2MEM dw Script_pokenamemem dw Script_itemtotext dw Script_mapnametotext dw Script_trainertotext dw Script_stringtotext dw Script_itemnotify dw Script_pocketisfull dw Script_loadfont dw Script_refreshscreen dw Script_loadmovesprites dw Script_loadbytec1ce dw Script_3writetext dw Script_2writetext dw Script_repeattext dw Script_yesorno dw Script_loadmenudata dw Script_writebackup dw Script_jumptextfaceplayer IF _CRYSTAL dw Script_3jumptext ENDC dw Script_jumptext dw Script_closetext dw Script_keeptextopen dw Script_pokepic dw Script_pokepicyesorno dw Script_interpretmenu dw Script_interpretmenu2 dw Script_loadpikachudata dw Script_battlecheck dw Script_loadtrainerdata dw Script_loadpokedata dw Script_loadtrainer dw Script_startbattle dw Script_returnafterbattle dw Script_catchtutorial dw Script_trainertext dw Script_trainerstatus dw Script_winlosstext dw Script_scripttalkafter dw Script_talkaftercancel dw Script_talkaftercheck dw Script_setlasttalked dw Script_applymovement dw Script_applymovement2 dw Script_faceplayer dw Script_faceperson dw Script_variablesprite dw Script_disappear dw Script_appear dw Script_follow dw Script_stopfollow dw Script_moveperson dw Script_writepersonxy dw Script_loademote dw Script_showemote dw Script_spriteface dw Script_follownotexact dw Script_earthquake dw Script_changemap dw Script_changeblock dw Script_reloadmap dw Script_reloadmappart dw Script_writecmdqueue dw Script_delcmdqueue dw Script_playmusic dw Script_playrammusic dw Script_musicfadeout dw Script_playmapmusic dw Script_reloadmapmusic dw Script_cry dw Script_playsound dw Script_waitbutton dw Script_warpsound dw Script_specialsound dw Script_passtoengine dw Script_newloadmap dw Script_pause dw Script_deactivatefacing dw Script_priorityjump dw Script_warpcheck dw Script_ptpriorityjump dw Script_return dw Script_end dw Script_reloadandreturn dw Script_resetfuncs dw Script_pokemart dw Script_elevator dw Script_trade dw Script_askforphonenumber dw Script_phonecall dw Script_hangup dw Script_describedecoration dw Script_fruittree dw Script_specialphonecall dw Script_checkphonecall dw Script_verbosegiveitem dw Script_verbosegiveitem2 dw Script_loadwilddata dw Script_halloffame dw Script_credits dw Script_warpfacing dw Script_battletowertext dw Script_displaylocation dw Script_trainerclassname dw Script_name dw Script_wait dw Script_unknown0xa9 ; 0x96e05 StartScript: ; 0x96e05 ld hl, ScriptFlags set SCRIPT_RUNNING, [hl] ret ; 0x96e0b CheckScript: ; 0x96e0b ld hl, ScriptFlags bit SCRIPT_RUNNING, [hl] ret ; 0x96e11 StopScript: ; 0x96e11 ld hl, ScriptFlags res SCRIPT_RUNNING, [hl] ret ; 0x96e17 Script_3callasm: ; 0x96e17 ; script command 0xe ; parameters: ; asm (AsmPointerParam) call GetScriptByte ld b, a call GetScriptByte ld l, a call GetScriptByte ld h, a ld a, b rst FarCall ret ; 0x96e26 Script_special: ; 0x96e26 ; script command 0xf ; parameters: ; predefined_script (MultiByteParam) call GetScriptByte ld e, a call GetScriptByte ld d, a callba Special ret ; 0x96e35 Script_2ptcallasm: ; 0x96e35 ; script command 0x10 ; parameters: ; asm (PointerToAsmPointerParam) call GetScriptByte ld l, a call GetScriptByte ld h, a ld b, [hl] inc hl ld a, [hli] ld h, [hl] ld l, a ld a, b rst FarCall ret ; 0x96e45 Script_jumptextfaceplayer: ; 0x96e45 ; script command 0x51 ; parameters: ; text_pointer (RawTextPointerLabelParam) ld a, [ScriptBank] ld [wd44e], a call GetScriptByte ld [wd44f], a call GetScriptByte ld [wd450], a ld b, BANK(JumpTextFacePlayerScript) ld hl, JumpTextFacePlayerScript jp ScriptJump ; 0x96e5f Script_jumptext: ; 0x96e5f ; script command 0x53 ; parameters: ; text_pointer (RawTextPointerLabelParam) ld a, [ScriptBank] ld [wd44e], a call GetScriptByte ld [wd44f], a call GetScriptByte ld [wd450], a ld b, BANK(JumpTextScript) ld hl, JumpTextScript jp ScriptJump ; 0x96e79 JumpTextFacePlayerScript: ; 0x96e79 faceplayer JumpTextScript: ; 0x96e7a loadfont repeattext -1, -1 closetext loadmovesprites end ; 0x96e81 IF _CRYSTAL Script_3jumptext: ; 0x96e81 ; script command 0x52 ; parameters: ; text_pointer (PointerLabelBeforeBank) call GetScriptByte ld [wd44e], a call GetScriptByte ld [wd44f], a call GetScriptByte ld [wd450], a ld b, BANK(JumpTextScript) ld hl, JumpTextScript jp ScriptJump ; 0x96e9b ENDC Script_2writetext: ; 0x96e9b ; script command 0x4c ; parameters: ; text_pointer (RawTextPointerLabelParam) call GetScriptByte ld l, a call GetScriptByte ld h, a ld a, [ScriptBank] ld b, a call MapTextbox ret ; 0x96eab Script_3writetext: ; 0x96eab ; script command 0x4b ; parameters: ; text_pointer (PointerLabelBeforeBank) call GetScriptByte ld b, a call GetScriptByte ld l, a call GetScriptByte ld h, a call MapTextbox ret ; 0x96ebb Script_repeattext: ; 0x96ebb ; script command 0x4d ; parameters: ; byte (SingleByteParam) ; byte (SingleByteParam) call GetScriptByte ld l, a call GetScriptByte ld h, a cp -1 jr nz, .done ; 0x96ec5 $11 ld a, l cp -1 jr nz, .done ; 0x96eca $c ld hl, wd44e ld a, [hli] ld b, a ld a, [hli] ld h, [hl] ld l, a call MapTextbox ret .done ret ; 0x96ed9 Script_closetext: ; 0x96ed9 ; script command 0x54 jp CloseText ; 0x96edc Script_keeptextopen: ; 0x96edc ; script command 0x55 ld a, [hOAMUpdate] push af ld a, $1 ld [hOAMUpdate], a call WaitBGMap call KeepTextOpen pop af ld [hOAMUpdate], a ret ; 0x96eed Script_yesorno: ; 0x96eed ; script command 0x4e call YesNoBox ld a, 0 jr c, .no ; 0x96ef2 $2 ld a, 1 .no ld [ScriptVar], a ret ; 0x96efa Script_loadmenudata: ; 0x96efa ; script command 0x4f ; parameters: ; data (MenuDataPointerParam) call GetScriptByte ld l, a call GetScriptByte ld h, a ld de, LoadMenuDataHeader ld a, [ScriptBank] call Call_a_de call UpdateSprites ret ; 0x96f0f Script_writebackup: ; 0x96f0f ; script command 0x50 call WriteBackup call UpdateSprites ret ; 0x96f16 Script_pokepic: ; 0x96f16 ; script command 0x56 ; parameters: ; pokemon (PokemonParam) call GetScriptByte and a jr nz, .ok ld a, [ScriptVar] .ok ld [CurPartySpecies], a callba Pokepic ret ; 0x96f29 Script_pokepicyesorno: ; 0x96f29 ; script command 0x57 callba PokepicYesOrNo ret ; 0x96f30 Script_interpretmenu2: ; 0x96f30 ; script command 0x59 ld a, [ScriptBank] ld hl, InterpretMenu2 rst FarCall ld a, [MenuSelection2] jr nc, .ok xor a .ok ld [ScriptVar], a ret ; 0x96f41 Script_interpretmenu: ; 0x96f41 ; script command 0x58 ld a, [ScriptBank] ld hl, InterpretMenu rst FarCall ld a, [wMenuCursorBuffer] jr nc, .ok xor a .ok ld [ScriptVar], a ret ; 0x96f52 Script_battletowertext: ; 0x96f52 ; script command 0xa4 ; parameters: ; pointer (PointerLabelBeforeBank) ; memory (SingleByteParam) call SetUpTextBox call GetScriptByte ld c, a callba BattleTowerText ret ; 0x96f60 Script_verbosegiveitem: ; 0x96f60 ; script command 0x9e ; parameters: ; item (ItemLabelByte) ; quantity (DecimalParam) call Script_giveitem call CurItemName ld de, StringBuffer1 ld a, 1 call CopyConvertedText ld b, BANK(GiveItemScript) ld de, GiveItemScript jp ScriptCall ; 0x96f76 Function96f76: ; 96f76 ret ; 96f77 GiveItemScript: ; 96f77 callasm Function96f76 writetext ReceivedItemText iffalse .Full waitbutton specialsound closetext itemnotify end .Full keeptextopen pocketisfull end ; 96f89 ReceivedItemText: ; 96f89 text_jump UnknownText_0x1c4719 db "@" ; 96f8e Script_verbosegiveitem2: ; 0x96f8e ; script command 0x9f ; parameters: ; item (ItemLabelByte) ; var (SingleByteParam) call GetScriptByte cp -1 jr nz, .ok ld a, [ScriptVar] .ok ld [CurItem], a call GetScriptByte call GetVarAction ld a, [de] ld [wItemQuantityChangeBuffer], a ld hl, NumItems call ReceiveItem ld a, 1 jr c, .ok2 xor a .ok2 ld [ScriptVar], a call CurItemName ld de, StringBuffer1 ld a, 1 call CopyConvertedText ld b, BANK(GiveItemScript) ld de, GiveItemScript jp ScriptCall ; 0x96fc6 Script_itemnotify: ; 0x96fc6 ; script command 0x45 call GetPocketName call CurItemName ld b, BANK(PutItemInPocketText) ld hl, PutItemInPocketText call MapTextbox ret ; 0x96fd5 Script_pocketisfull: ; 0x96fd5 ; script command 0x46 call GetPocketName call CurItemName ld b, BANK(PocketIsFullText) ld hl, PocketIsFullText call MapTextbox ret ; 0x96fe4 Script_specialsound: ; 0x96fe4 ; script command 0x88 callba CheckItemPocket ld a, [wItemAttributeParamBuffer] cp TM_HM ld de, SFX_GET_TM jr z, .play ld de, SFX_ITEM .play call PlaySFX call WaitSFX ret ; 0x96ffe GetPocketName: ; 96ffe callba CheckItemPocket ld a, [wItemAttributeParamBuffer] dec a ld hl, .Pockets and 3 add a ld e, a ld d, 0 add hl, de ld a, [hli] ld d, [hl] ld e, a ld hl, StringBuffer3 call CopyName2 ret .Pockets dw .Item dw .Key dw .Ball dw .TM .Item db "ITEM POCKET@" .Key db "KEY POCKET@" .Ball db "BALL POCKET@" .TM db "TM POCKET@" ; 97051 CurItemName: ; 97051 ld a, [CurItem] ld [wd265], a call GetItemName ret ; 9705b PutItemInPocketText: ; 9705b text_jump UnknownText_0x1c472c db "@" ; 97060 PocketIsFullText: ; 97060 text_jump UnknownText_0x1c474b db "@" ; 97065 Script_pokemart: ; 0x97065 ; script command 0x94 ; parameters: ; dialog_id (SingleByteParam) ; mart_id (MultiByteParam) call GetScriptByte ld c, a call GetScriptByte ld e, a call GetScriptByte ld d, a ld a, [ScriptBank] ld b, a callba OpenMartDialog ret ; 0x9707c Script_elevator: ; 0x9707c ; script command 0x95 ; parameters: ; floor_list_pointer (PointerLabelParam) xor a ld [ScriptVar], a call GetScriptByte ld e, a call GetScriptByte ld d, a ld a, [ScriptBank] ld b, a callba Elevator ret c ld a, $1 ld [ScriptVar], a ret ; 0x97099 Script_trade: ; 0x97099 ; script command 0x96 ; parameters: ; trade_id (SingleByteParam) call GetScriptByte ld e, a callba NPCTrade ret ; 0x970a4 Script_phonecall: ; 0x970a4 ; script command 0x98 ; parameters: ; caller_name (RawTextPointerLabelParam) call GetScriptByte ld e, a call GetScriptByte ld d, a ld a, [ScriptBank] ld b, a callba PhoneCall ret ; 0x970b7 Script_hangup: ; 0x970b7 ; script command 0x99 callba HangUp ret ; 0x970be Script_askforphonenumber: ; 0x970be ; script command 0x97 ; parameters: ; number (SingleByteParam) call YesNoBox jr c, .refused ; 0x970c1 $13 call GetScriptByte ld c, a callba AddPhoneNumber jr c, .phonefull ; 0x970cd $3 xor a jr .done ; 0x970d0 $9 .phonefull ld a, 1 jr .done ; 0x970d4 $5 .refused call GetScriptByte ld a, 2 .done ld [ScriptVar], a ret ; 0x970df Script_describedecoration: ; 0x970df ; script command 0x9a ; parameters: ; byte (SingleByteParam) call GetScriptByte ld b, a callba DescribeDecoration ld h, d ld l, e jp ScriptJump ; 0x970ee Script_fruittree: ; 0x970ee ; script command 0x9b ; parameters: ; tree_id (SingleByteParam) call GetScriptByte ld [CurFruitTree], a ld b, BANK(FruitTreeScript) ld hl, FruitTreeScript jp ScriptJump ; 0x970fc Script_loadwilddata: ; 0x970fc ; script command 0xa0 ; parameters: ; flag (SingleByteParam) ; map_group (MapGroupParam) ; map_id (MapIdParam) call GetScriptByte ld c, a call GetScriptByte ld d, a call GetScriptByte ld e, a callba LoadWildData ret ; 0x9710f Script_trainertext: ; 0x9710f ; script command 0x62 ; parameters: ; which_text (SingleByteParam) call GetScriptByte ld c, a ld b, 0 ld hl, WalkingX rept 2 add hl, bc endr ld a, [hli] ld h, [hl] ld l, a ld a, [EngineBuffer1] ld b, a call MapTextbox ret ; 0x97125 Script_scripttalkafter: ; 0x97125 ; script command 0x65 ld hl, wd04b ld a, [hli] ld h, [hl] ld l, a ld a, [EngineBuffer1] ld b, a jp ScriptJump ; 0x97132 Script_trainerstatus: ; 0x97132 ; script command 0x63 ; parameters: ; action (SingleByteParam) xor a ld [ScriptVar], a ld hl, wd041 ld e, [hl] inc hl ld d, [hl] call GetScriptByte ld b, a call EventFlagAction ld a, c and a ret z ld a, 1 ld [ScriptVar], a ret ; 0x9714c Script_winlosstext: ; 0x9714c ; script command 0x64 ; parameters: ; win_text_pointer (TextPointerLabelParam) ; loss_text_pointer (TextPointerLabelParam) ld hl, wWinTextPointer ; d047 call GetScriptByte ld [hli], a call GetScriptByte ld [hli], a ld hl, wLossTextPointer ; d049; this is unnecessary call GetScriptByte ld [hli], a call GetScriptByte ld [hli], a ret ; 0x97163 Script_talkaftercancel: ; 0x97163 ; script command 0x66 ld a, [wd04d] and a ret z jp Script_end ; 0x9716b Script_talkaftercheck: ; 0x9716b ; script command 0x67 ld a, 1 ld [ScriptVar], a ld a, [wd04d] and a ret nz xor a ld [ScriptVar], a ret ; 0x9717a Script_playrammusic: ; 0x9717a ; script command 0x80 ld a, [OtherTrainerClass] ld e, a callba PlayTrainerEncounterMusic ret ; 0x97185 Script_playmapmusic: ; 0x97185 ; script command 0x82 call PlayMapMusic ret ; 0x97189 Script_playmusic: ; 0x97189 ; script command 0x7f ; parameters: ; music_pointer (MultiByteParam) ld de, MUSIC_NONE call PlayMusic xor a ld [MusicFade], a call MaxVolume call GetScriptByte ld e, a call GetScriptByte ld d, a call PlayMusic ret ; 0x971a2 Script_musicfadeout: ; 0x971a2 ; script command 0x81 ; parameters: ; music (MultiByteParam) ; fadetime (SingleByteParam) call GetScriptByte ld [MusicFadeID], a call GetScriptByte ld [MusicFadeID + 1], a call GetScriptByte and $7f ld [MusicFade], a ret ; 0x971b7 Script_playsound: ; 0x971b7 ; script command 0x85 ; parameters: ; sound_pointer (MultiByteParam) call GetScriptByte ld e, a call GetScriptByte ld d, a call PlaySFX ret ; 0x971c3 Script_waitbutton: ; 0x971c3 ; script command 0x86 call WaitSFX ret ; 0x971c7 Script_warpsound: ; 0x971c7 ; script command 0x87 callba Function14a07 call PlaySFX ret ; 0x971d1 Script_cry: ; 0x971d1 ; script command 0x84 ; parameters: ; cry_id (MultiByteParam) call GetScriptByte push af call GetScriptByte pop af and a jr nz, .ok ld a, [ScriptVar] .ok call PlayCry ret ; 0x971e3 GetScriptPerson: ; 0x971e3 and a ret z cp LAST_TALKED ret z dec a ret ; 0x971ea Script_setlasttalked: ; 0x971ea ; script command 0x68 ; parameters: ; person (SingleByteParam) call GetScriptByte call GetScriptPerson ld [hLastTalked], a ret ; 0x971f3 Script_applymovement: ; 0x971f3 ; script command 0x69 ; parameters: ; person (SingleByteParam) ; data (MovementPointerLabelParam) call GetScriptByte call GetScriptPerson ld c, a ; 971fa ApplyMovement: ; 971fa push bc ld a, c callba SetFlagsForMovement_1 pop bc push bc call SetFlagsForMovement_2 pop bc call GetScriptByte ld l, a call GetScriptByte ld h, a ld a, [ScriptBank] ld b, a call GetMovementData ret c ld a, SCRIPT_WAIT_MOVEMENT ld [ScriptMode], a call StopScript ret ; 0x97221 SetFlagsForMovement_2: ; 0x97221 callba _SetFlagsForMovement_2 ret ; 0x97228 Script_applymovement2: ; 0x97228 ; script command 0x6a ; parameters: ; data (MovementPointerLabelParam) ld a, [hLastTalked] ld c, a jp ApplyMovement ; 0x9722e Script_faceplayer: ; 0x9722e ; script command 0x6b ld a, [hLastTalked] and a ret z ld d, $0 ld a, [hLastTalked] ld e, a callba GetRelativeFacing ld a, d rept 2 add a endr ld e, a ld a, [hLastTalked] ld d, a call ApplyPersonFacing ret ; 0x97248 Script_faceperson: ; 0x97248 ; script command 0x6c ; parameters: ; person1 (SingleByteParam) ; person2 (SingleByteParam) call GetScriptByte call GetScriptPerson cp LAST_TALKED jr c, .ok ld a, [hLastTalked] .ok ld e, a call GetScriptByte call GetScriptPerson cp LAST_TALKED jr nz, .ok2 ld a, [hLastTalked] .ok2 ld d, a push de callba GetRelativeFacing pop bc ret c ld a, d rept 2 add a endr ld e, a ld d, c call ApplyPersonFacing ret ; 0x97274 Script_spriteface: ; 0x97274 ; script command 0x76 ; parameters: ; person (SingleByteParam) ; facing (SingleByteParam) call GetScriptByte call GetScriptPerson cp LAST_TALKED jr nz, .ok ld a, [hLastTalked] .ok ld d, a call GetScriptByte rept 2 add a endr ld e, a call ApplyPersonFacing ret ; 0x9728b ApplyPersonFacing: ; 0x9728b ld a, d push de call CheckObjectVisibility jr c, .not_visible ; 0x97290 $27 ld hl, OBJECT_SPRITE add hl, bc ld a, [hl] push bc call DoesSpriteHaveFacings pop bc jr c, .not_visible ; STILL_SPRITE ld hl, OBJECT_FLAGS1 add hl, bc bit 2, [hl] jr nz, .not_visible ; 0x972a4 $13 pop de ld a, e call SetSpriteDirection ld hl, VramState bit 6, [hl] jr nz, .text_state ; 0x972b0 $3 call .DisableTextTiles .text_state call UpdateSprites ret .not_visible pop de scf ret ; 0x972bc .DisableTextTiles: ; 0x972bc call LoadMapPart hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT .loop res 7, [hl] inc hl dec bc ld a, b or c jr nz, .loop ; 0x972cb $f8 ret ; 0x972ce Script_variablesprite: ; 0x972ce ; script command 0x6d ; parameters: ; byte (SingleByteParam) ; sprite (SingleByteParam) call GetScriptByte ld e, a ld d, $0 ld hl, VariableSprites add hl, de call GetScriptByte ld [hl], a ret ; 0x972dd Script_appear: ; 0x972dd ; script command 0x6f ; parameters: ; person (SingleByteParam) call GetScriptByte call GetScriptPerson call _CopyObjectStruct ld a, [hMapObjectIndexBuffer] ld b, 0 ; clear call ApplyEventActionAppearDisappear ret ; 0x972ee Script_disappear: ; 0x972ee ; script command 0x6e ; parameters: ; person (SingleByteParam) call GetScriptByte call GetScriptPerson cp LAST_TALKED jr nz, .ok ld a, [hLastTalked] .ok call DeleteObjectStruct ld a, [hMapObjectIndexBuffer] ld b, 1 ; set call ApplyEventActionAppearDisappear callba RefreshMapAppearDisappear ret ; 0x9730b ApplyEventActionAppearDisappear: ; 0x9730b push bc call GetMapObject ld hl, MAPOBJECT_EVENT_FLAG add hl, bc pop bc ld e, [hl] inc hl ld d, [hl] ld a, -1 cp e jr nz, .okay ; 0x9731a $5 cp d jr nz, .okay ; 0x9731d $2 xor a ret .okay call EventFlagAction ret ; 0x97325 Script_follow: ; 0x97325 ; script command 0x70 ; parameters: ; person2 (SingleByteParam) ; person1 (SingleByteParam) call GetScriptByte call GetScriptPerson ld b, a call GetScriptByte call GetScriptPerson ld c, a callba StartFollow ret ; 0x9733a Script_stopfollow: ; 0x9733a ; script command 0x71 callba StopFollow ret ; 0x97341 Script_moveperson: ; 0x97341 ; script command 0x72 ; parameters: ; person (SingleByteParam) ; x (SingleByteParam) ; y (SingleByteParam) call GetScriptByte call GetScriptPerson ld b, a call GetScriptByte add 4 ld d, a call GetScriptByte add 4 ld e, a callba CopyDECoordsToMapObject ret ; 0x9735b Script_writepersonxy: ; 0x9735b ; script command 0x73 ; parameters: ; person (SingleByteParam) call GetScriptByte call GetScriptPerson cp LAST_TALKED jr nz, .ok ld a, [hLastTalked] .ok ld b, a callba WritePersonXY ret ; 0x9736f Script_follownotexact: ; 0x9736f ; script command 0x77 ; parameters: ; person2 (SingleByteParam) ; person1 (SingleByteParam) call GetScriptByte call GetScriptPerson ld b, a call GetScriptByte call GetScriptPerson ld c, a callba FollowNotExact ret ; 0x97384 Script_loademote: ; 0x97384 ; script command 0x74 ; parameters: ; bubble (SingleByteParam) call GetScriptByte cp -1 jr nz, .not_var_emote ; 0x97389 $3 ld a, [ScriptVar] .not_var_emote ld c, a callba LoadEmote ret ; 0x97396 Script_showemote: ; 0x97396 ; script command 0x75 ; parameters: ; bubble (SingleByteParam) ; person (SingleByteParam) ; time (DecimalParam) call GetScriptByte ld [ScriptVar], a call GetScriptByte call GetScriptPerson cp LAST_TALKED jr z, .ok ld [hLastTalked], a .ok call GetScriptByte ld [ScriptDelay], a ld b, BANK(ShowEmoteScript) ld de, ShowEmoteScript jp ScriptCall ; 0x973b6 ShowEmoteScript: ; 973b6 loademote EMOTE_MEM applymovement2 .Show pause 0 applymovement2 .Hide end .Show show_emote show_person step_end .Hide hide_emote show_person step_end ; 973c7 Script_earthquake: ; 0x973c7 ; script command 0x78 ; parameters: ; param (DecimalParam) ld hl, EarthquakeMovement ld de, wd002 ld bc, EarthquakeMovementEnd - EarthquakeMovement call CopyBytes call GetScriptByte ld [wd003], a and (1 << 6) - 1 ld [wd005], a ld b, BANK(.script) ld de, .script jp ScriptCall ; 0x973e6 .script: ; 973e6 applymovement PLAYER, wd002 end ; 973eb EarthquakeMovement: ; 973eb step_shake 16 step_sleep 16 step_end EarthquakeMovementEnd ; 973f0 Script_loadpikachudata: ; 0x973f0 ; script command 0x5a ld a, PIKACHU ld [TempWildMonSpecies], a ld a, 5 ld [CurPartyLevel], a ret ; 0x973fb Script_battlecheck: ; 0x973fb ; script command 0x5b xor a ld [wd459], a ret ; 0x97400 Script_loadtrainerdata: ; 0x97400 ; script command 0x5c ld a, (1 << 7) | 1 ld [wd459], a ld a, [WalkingDirection] ld [OtherTrainerClass], a ld a, [FacingDirection] ld [OtherTrainerID], a ret ; 0x97412 Script_loadpokedata: ; 0x97412 ; script command 0x5d ; parameters: ; pokemon (PokemonParam) ; level (DecimalParam) ld a, (1 << 7) ld [wd459], a call GetScriptByte ld [TempWildMonSpecies], a call GetScriptByte ld [CurPartyLevel], a ret ; 0x97424 Script_loadtrainer: ; 0x97424 ; script command 0x5e ; parameters: ; trainer_group (TrainerGroupParam) ; trainer_id (TrainerIdParam) ld a, (1 << 7) | 1 ld [wd459], a call GetScriptByte ld [OtherTrainerClass], a call GetScriptByte ld [OtherTrainerID], a ret ; 0x97436 Script_startbattle: ; 0x97436 ; script command 0x5f call BufferScreen predef StartBattle ld a, [wBattleResult] and $3f ld [ScriptVar], a ret ; 0x97447 Script_catchtutorial: ; 0x97447 ; script command 0x61 ; parameters: ; byte (SingleByteParam) call GetScriptByte ld [BattleType], a call BufferScreen callba CatchTutorial jp Script_reloadmap ; 0x97459 Script_returnafterbattle: ; 0x97459 ; script command 0x60 ld hl, wd459 ld d, [hl] ld [hl], $0 ld a, [wBattleResult] and $3f cp $1 jr nz, .notblackedout ; 0x97466 $8 ld b, BANK(UnknownScript_0x124c1) ld hl, UnknownScript_0x124c1 jp ScriptJump .notblackedout bit 0, d jr z, .was_wild ; 0x97472 $8 callba MomTriesToBuySomething jr .done ; 0x9747a $12 .was_wild ld a, [wBattleResult] bit 7, a jr z, .done ; 0x97481 $b ld b, BANK(Script_SpecialBillCall) ld de, Script_SpecialBillCall callba LoadScriptBDE .done jp Script_reloadmap ; 0x97491 Script_reloadmap: ; 0x97491 ; script command 0x7b xor a ld [wd459], a ld a, MAPSETUP_RELOADMAP ld [hMapEntryMethod], a ld a, $1 call LoadMapStatus call StopScript ret ; 0x974a2 Script_2call: ; 0x974a2 ; script command 0x0 ; parameters: ; pointer (ScriptPointerLabelParam) ld a, [ScriptBank] ld b, a call GetScriptByte ld e, a call GetScriptByte ld d, a jr ScriptCall ; 0x974b0 Script_3call: ; 0x974b0 ; script command 0x1 ; parameters: ; pointer (ScriptPointerLabelBeforeBank) call GetScriptByte ld b, a call GetScriptByte ld e, a call GetScriptByte ld d, a jr ScriptCall ; 0x974be Script_2ptcall: ; 0x974be ; script command 0x2 ; parameters: ; pointer (PointerLabelToScriptPointer) call GetScriptByte ld l, a call GetScriptByte ld h, a ld b, [hl] inc hl ld e, [hl] inc hl ld d, [hl] ; fallthrough ScriptCall: ; 0x974cb push de ld hl, wd43c ld e, [hl] inc [hl] ld d, $0 ld hl, wd43d rept 3 add hl, de endr pop de ld a, [ScriptBank] ld [hli], a ld a, [ScriptPos] ld [hli], a ld a, [ScriptPos + 1] ld [hl], a ld a, b ld [ScriptBank], a ld a, e ld [ScriptPos], a ld a, d ld [ScriptPos + 1], a ret ; 0x974f3 CallCallback:: ; 0x974f3 ld a, [ScriptBank] or $80 ld [ScriptBank], a jp ScriptCall ; 0x974fe Script_2jump: ; 0x974fe ; script command 0x3 ; parameters: ; pointer (ScriptPointerLabelParam) call GetScriptByte ld l, a call GetScriptByte ld h, a ld a, [ScriptBank] ld b, a jp ScriptJump ; 0x9750d Script_3jump: ; 0x9750d ; script command 0x4 ; parameters: ; pointer (ScriptPointerLabelBeforeBank) call GetScriptByte ld b, a call GetScriptByte ld l, a call GetScriptByte ld h, a jp ScriptJump ; 0x9751c Script_2ptjump: ; 0x9751c ; script command 0x5 ; parameters: ; pointer (PointerLabelToScriptPointer) call GetScriptByte ld l, a call GetScriptByte ld h, a ld b, [hl] inc hl ld a, [hli] ld h, [hl] ld l, a jp ScriptJump ; 0x9752c Script_iffalse: ; 0x9752c ; script command 0x8 ; parameters: ; pointer (ScriptPointerLabelParam) ld a, [ScriptVar] and a jp nz, SkipTwoScriptBytes jp Script_2jump ; 0x97536 Script_iftrue: ; 0x97536 ; script command 0x9 ; parameters: ; pointer (ScriptPointerLabelParam) ld a, [ScriptVar] and a jp nz, Script_2jump jp SkipTwoScriptBytes ; 0x97540 Script_if_equal: ; 0x97540 ; script command 0x6 ; parameters: ; byte (SingleByteParam) ; pointer (ScriptPointerLabelParam) call GetScriptByte ld hl, ScriptVar cp [hl] jr z, Script_2jump ; 0x97547 $b5 jr SkipTwoScriptBytes ; 0x97549 $4b ; 0x9754b Script_if_not_equal: ; 0x9754b ; script command 0x7 ; parameters: ; byte (SingleByteParam) ; pointer (ScriptPointerLabelParam) call GetScriptByte ld hl, ScriptVar cp [hl] jr nz, Script_2jump ; 0x97552 $aa jr SkipTwoScriptBytes ; 0x97554 $40 ; 0x97556 Script_if_greater_than: ; 0x97556 ; script command 0xa ; parameters: ; byte (SingleByteParam) ; pointer (ScriptPointerLabelParam) ld a, [ScriptVar] ld b, a call GetScriptByte cp b jr c, Script_2jump ; 0x9755e $9e jr SkipTwoScriptBytes ; 0x97560 $34 ; 0x97562 Script_if_less_than: ; 0x97562 ; script command 0xb ; parameters: ; byte (SingleByteParam) ; pointer (ScriptPointerLabelParam) call GetScriptByte ld b, a ld a, [ScriptVar] cp b jr c, Script_2jump ; 0x9756a $92 jr SkipTwoScriptBytes ; 0x9756c $28 ; 0x9756e Script_jumpstd: ; 0x9756e ; script command 0xc ; parameters: ; predefined_script (MultiByteParam) call StdScript jr ScriptJump ; 0x97571 $2a ; 0x97573 Script_callstd: ; 0x97573 ; script command 0xd ; parameters: ; predefined_script (MultiByteParam) call StdScript ld d, h ld e, l jp ScriptCall ; 0x9757b StdScript: ; 0x9757b call GetScriptByte ld e, a call GetScriptByte ld d, a ld hl, StdScripts rept 3 add hl, de endr ld a, BANK(StdScripts) call GetFarByte ld b, a inc hl ld a, BANK(StdScripts) call GetFarHalfword ret ; 0x97596 SkipTwoScriptBytes: ; 0x97596 call GetScriptByte call GetScriptByte ret ; 0x9759d ScriptJump: ; 0x9759d ld a, b ld [ScriptBank], a ld a, l ld [ScriptPos], a ld a, h ld [ScriptPos + 1], a ret ; 0x975aa Script_priorityjump: ; 0x975aa ; script command 0x8d ; parameters: ; pointer (ScriptPointerLabelParam) ld a, [ScriptBank] ld [wd44e], a call GetScriptByte ld [wd44f], a call GetScriptByte ld [wd450], a ld hl, ScriptFlags set 3, [hl] ret ; 0x975c2 Script_checktriggers: ; 0x975c2 ; script command 0x13 call CheckTriggers jr z, .asm_975cb ; 0x975c5 $4 ld [ScriptVar], a ret .asm_975cb ld a, $ff ld [ScriptVar], a ret ; 0x975d1 Script_checkmaptriggers: ; 0x975d1 ; script command 0x11 ; parameters: ; map_group (SingleByteParam) ; map_id (SingleByteParam) call GetScriptByte ld b, a call GetScriptByte ld c, a call GetMapTrigger ld a, d or e jr z, .asm_975e5 ; 0x975de $5 ld a, [de] ld [ScriptVar], a ret .asm_975e5 ld a, $ff ld [ScriptVar], a ret ; 0x975eb Script_dotrigger: ; 0x975eb ; script command 0x14 ; parameters: ; trigger_id (SingleByteParam) ld a, [MapGroup] ld b, a ld a, [MapNumber] ld c, a jr Unknown_975fd ; 0x975f3 $8 ; 0x975f5 Script_domaptrigger: ; 0x975f5 ; script command 0x12 ; parameters: ; map_group (MapGroupParam) ; map_id (MapIdParam) ; trigger_id (SingleByteParam) call GetScriptByte ld b, a call GetScriptByte ld c, a ; fallthrough Unknown_975fd: ; 0x975fd call GetMapTrigger ld a, d or e jr z, .asm_97608 ; 0x97602 $4 call GetScriptByte ld [de], a .asm_97608 ret ; 0x97609 Script_copybytetovar: ; 0x97609 ; script command 0x19 ; parameters: ; address (RAMAddressParam) call GetScriptByte ld l, a call GetScriptByte ld h, a ld a, [hl] ld [ScriptVar], a ret ; 0x97616 Script_copyvartobyte: ; 0x97616 ; script command 0x1a ; parameters: ; address (RAMAddressParam) call GetScriptByte ld l, a call GetScriptByte ld h, a ld a, [ScriptVar] ld [hl], a ret ; 0x97623 Script_loadvar: ; 0x97623 ; script command 0x1b ; parameters: ; address (RAMAddressParam) ; value (SingleByteParam) call GetScriptByte ld l, a call GetScriptByte ld h, a call GetScriptByte ld [hl], a ret ; 0x97630 Script_writebyte: ; 0x97630 ; script command 0x15 ; parameters: ; value (SingleByteParam) call GetScriptByte ld [ScriptVar], a ret ; 0x97637 Script_addvar: ; 0x97637 ; script command 0x16 ; parameters: ; value (SingleByteParam) call GetScriptByte ld hl, ScriptVar add [hl] ld [hl], a ret ; 0x97640 Script_random: ; 0x97640 ; script command 0x17 ; parameters: ; input (SingleByteParam) call GetScriptByte ld [ScriptVar], a and a ret z ld c, a call Function97673 and a jr z, .asm_9765f ; 0x9764d $10 ld b, a xor a sub b ld b, a .asm_97653 push bc call Random pop bc ld a, [$ffe1] cp b jr nc, .asm_97653 ; 0x9765b $f6 jr .asm_97666 ; 0x9765d $7 .asm_9765f push bc call Random pop bc ld a, [$ffe1] .asm_97666 push af ld a, [ScriptVar] ld c, a pop af call SimpleDivide ld [ScriptVar], a ret ; 0x97673 Function97673: ; 0x97673 xor a ld b, a sub c .asm_97676 inc b sub c jr nc, .asm_97676 ; 0x97678 $fc dec b add c ret ; 0x9767d Script_checkcode: ; 0x9767d ; script command 0x1c ; parameters: ; variable_id (SingleByteParam) call GetScriptByte call GetVarAction ld a, [de] ld [ScriptVar], a ret ; 0x97688 Script_writevarcode: ; 0x97688 ; script command 0x1d ; parameters: ; variable_id (SingleByteParam) call GetScriptByte call GetVarAction ld a, [ScriptVar] ld [de], a ret ; 0x97693 Script_writecode: ; 0x97693 ; script command 0x1e ; parameters: ; variable_id (SingleByteParam) ; value (SingleByteParam) call GetScriptByte call GetVarAction call GetScriptByte ld [de], a ret ; 0x9769e GetVarAction: ; 0x9769e ld c, a callba _GetVarAction ret ; 0x976a6 Script_checkver: ; 0x976a6 ; script command 0x18 ld a, [Version] ld [ScriptVar], a ret ; 0x976ad Version: ; 976ad db VERSION ; 976ae Script_pokenamemem: ; 0x976ae ; script command 0x40 ; parameters: ; pokemon (PokemonParam); leave $0 to draw from script var ; memory (SingleByteParam) call GetScriptByte and a jr nz, .gotit ; 0x976b2 $3 ld a, [ScriptVar] .gotit ld [wd265], a call GetPokemonName ld de, StringBuffer1 ConvertMemToText: ; 0x976c0 call GetScriptByte cp 3 jr c, .ok xor a .ok CopyConvertedText: ; 976c8 ld hl, StringBuffer3 ld bc, StringBuffer4 - StringBuffer3 call AddNTimes call CopyName2 ret ; 0x976d5 Script_itemtotext: ; 0x976d5 ; script command 0x41 ; parameters: ; item (ItemLabelByte) ; memory (SingleByteParam) call GetScriptByte and a jr nz, .ok ; 0x976d9 $3 ld a, [ScriptVar] .ok ld [wd265], a call GetItemName ld de, StringBuffer1 jr ConvertMemToText ; 0x976e7 $d7 ; 0x976e9 Script_mapnametotext: ; 0x976e9 ; script command 0x42 ; parameters: ; memory (SingleByteParam) ld a, [MapGroup] ld b, a ld a, [MapNumber] ld c, a call GetWorldMapLocation ConvertLandmarkToText: ; 0x976f4 ld e, a callba GetLandmarkName ld de, StringBuffer1 jp ConvertMemToText ; 0x97701 Script_displaylocation: ; 0x97701 ; script command 0xa5 ; parameters: ; id (SingleByteParam) ; memory (SingleByteParam) call GetScriptByte jr ConvertLandmarkToText ; 0x97704 $ee ; 0x97706 Script_trainertotext: ; 0x97706 ; script command 0x43 ; parameters: ; trainer_id (TrainerGroupParam) ; trainer_group (TrainerIdParam) ; memory (SingleByteParam) call GetScriptByte ld c, a call GetScriptByte ld b, a callba GetTrainerName jr ConvertMemToText ; 0x97714 $aa ; 0x97716 Script_name: ; 0x97716 ; script command 0xa7 ; parameters: ; type (SingleByteParam) ; id (SingleByteParam) ; memory (SingleByteParam) call GetScriptByte ld [wNamedObjectTypeBuffer], a ContinueToGetName: ; 0x9771c call GetScriptByte ld [CurSpecies], a call GetName ld de, StringBuffer1 jp ConvertMemToText ; 0x9772b Script_trainerclassname: ; 0x9772b ; script command 0xa6 ; parameters: ; id (SingleByteParam) ; memory (SingleByteParam) ld a, TRAINER_NAME ld [wNamedObjectTypeBuffer], a jr ContinueToGetName ; 0x97730 $ea ; 0x97732 Script_readmoney: ; 0x97732 ; script command 0x3d ; parameters: ; account (SingleByteParam) ; memory (SingleByteParam) call ResetStringBuffer1 call GetMoneyAccount ld hl, StringBuffer1 lb bc, PRINTNUM_RIGHTALIGN | 3, 6 call PrintNum ld de, StringBuffer1 jp ConvertMemToText ; 0x97747 Script_readcoins: ; 0x97747 ; script command 0x3e ; parameters: ; memory (SingleByteParam) call ResetStringBuffer1 ld hl, StringBuffer1 ld de, Coins lb bc, PRINTNUM_RIGHTALIGN | 2, 6 call PrintNum ld de, StringBuffer1 jp ConvertMemToText ; 0x9775c Script_RAM2MEM: ; 0x9775c ; script command 0x3f ; parameters: ; memory (SingleByteParam) call ResetStringBuffer1 ld de, ScriptVar ld hl, StringBuffer1 lb bc, PRINTNUM_RIGHTALIGN | 1, 3 call PrintNum ld de, StringBuffer1 jp ConvertMemToText ; 0x97771 ResetStringBuffer1: ; 0x97771 ld hl, StringBuffer1 ld bc, NAME_LENGTH ld a, "@" call ByteFill ret ; 0x9777d Script_stringtotext: ; 0x9777d ; script command 0x44 ; parameters: ; text_pointer (EncodedTextLabelParam) ; memory (SingleByteParam) call GetScriptByte ld e, a call GetScriptByte ld d, a ld a, [ScriptBank] ld hl, CopyName1 rst FarCall ld de, StringBuffer2 jp ConvertMemToText ; 0x97792 Script_givepokeitem: ; 0x97792 ; script command 0x2f ; parameters: ; pointer (PointerParamToItemAndLetter) call GetScriptByte ld l, a call GetScriptByte ld h, a ld a, [ScriptBank] call GetFarByte ld b, a push bc inc hl ld bc, MAIL_MAX_LENGTH ld de, wd002 ld a, [ScriptBank] call FarCopyBytes pop bc callba GivePokeItem ret ; 0x977b7 Script_checkpokeitem: ; 0x977b7 ; script command 0x30 ; parameters: ; pointer (PointerParamToItemAndLetter) call GetScriptByte ld e, a call GetScriptByte ld d, a ld a, [ScriptBank] ld b, a callba Function44654 ret ; 0x977ca Script_giveitem: ; 0x977ca ; script command 0x1f ; parameters: ; item (ItemLabelByte) ; quantity (SingleByteParam) call GetScriptByte cp ITEM_FROM_MEM jr nz, .ok ; 0x977cf $3 ld a, [ScriptVar] .ok ld [CurItem], a call GetScriptByte ld [wItemQuantityChangeBuffer], a ld hl, NumItems call ReceiveItem jr nc, .full ; 0x977e3 $6 ld a, $1 ld [ScriptVar], a ret .full xor a ld [ScriptVar], a ret ; 0x977f0 Script_takeitem: ; 0x977f0 ; script command 0x20 ; parameters: ; item (ItemLabelByte) ; quantity (DecimalParam) xor a ld [ScriptVar], a call GetScriptByte ld [CurItem], a call GetScriptByte ld [wItemQuantityChangeBuffer], a ld a, -1 ld [ItemCountBuffer], a ld hl, NumItems call TossItem ret nc ld a, $1 ld [ScriptVar], a ret ; 0x97812 Script_checkitem: ; 0x97812 ; script command 0x21 ; parameters: ; item (ItemLabelByte) xor a ld [ScriptVar], a call GetScriptByte ld [CurItem], a ld hl, NumItems call CheckItem ret nc ld a, 1 ld [ScriptVar], a ret ; 0x97829 Script_givemoney: ; 0x97829 ; script command 0x22 ; parameters: ; account (SingleByteParam) ; money (MoneyByteParam) call GetMoneyAccount call LoadMoneyAmountToMem callba GiveMoney ret ; 0x97836 Script_takemoney: ; 0x97836 ; script command 0x23 ; parameters: ; account (SingleByteParam) ; money (MoneyByteParam) call GetMoneyAccount call LoadMoneyAmountToMem callba TakeMoney ret ; 0x97843 Script_checkmoney: ; 0x97843 ; script command 0x24 ; parameters: ; account (SingleByteParam) ; money (MoneyByteParam) call GetMoneyAccount call LoadMoneyAmountToMem callba CompareMoney ; 0x9784f CompareMoneyAction: ; 0x9784f jr c, .two jr z, .one ld a, 0 jr .done .one ld a, 1 jr .done .two ld a, 2 .done ld [ScriptVar], a ret ; 0x97861 GetMoneyAccount: ; 0x97861 call GetScriptByte and a ld de, Money ret z ld de, wMomsMoney ret ; 0x9786d LoadMoneyAmountToMem: ; 0x9786d ld bc, hMoneyTemp push bc call GetScriptByte ld [bc], a inc bc call GetScriptByte ld [bc], a inc bc call GetScriptByte ld [bc], a pop bc ret ; 0x97881 Script_givecoins: ; 0x97881 ; script command 0x25 ; parameters: ; coins (CoinByteParam) call LoadCoinAmountToMem callba GiveCoins ret ; 0x9788b Script_takecoins: ; 0x9788b ; script command 0x26 ; parameters: ; coins (CoinByteParam) call LoadCoinAmountToMem callba TakeCoins ret ; 0x97895 Script_checkcoins: ; 0x97895 ; script command 0x27 ; parameters: ; coins (CoinByteParam) call LoadCoinAmountToMem callba CheckCoins jr CompareMoneyAction ; 978a0 LoadCoinAmountToMem: ; 978a0 call GetScriptByte ld [hMoneyTemp + 1], a call GetScriptByte ld [hMoneyTemp], a ld bc, hMoneyTemp ret ; 0x978ae Script_checktime: ; 0x978ae ; script command 0x2b ; parameters: ; time (SingleByteParam) xor a ld [ScriptVar], a callba CheckTime call GetScriptByte and c ret z ld a, $1 ld [ScriptVar], a ret ; 0x978c3 Script_checkpoke: ; 0x978c3 ; script command 0x2c ; parameters: ; pkmn (PokemonParam) xor a ld [ScriptVar], a call GetScriptByte ld hl, PartySpecies ld de, 1 call IsInArray ret nc ld a, 1 ld [ScriptVar], a ret ; 0x978da Script_addcellnum: ; 0x978da ; script command 0x28 ; parameters: ; person (SingleByteParam) xor a ld [ScriptVar], a call GetScriptByte ld c, a callba AddPhoneNumber ret nc ld a, $1 ld [ScriptVar], a ret ; 0x978ef Script_delcellnum: ; 0x978ef ; script command 0x29 ; parameters: ; person (SingleByteParam) xor a ld [ScriptVar], a call GetScriptByte ld c, a callba DelCellNum ret nc ld a, $1 ld [ScriptVar], a ret ; 0x97904 Script_checkcellnum: ; 0x97904 ; script command 0x2a ; parameters: ; person (SingleByteParam) ; returns false if the cell number is not in your phone xor a ld [ScriptVar], a call GetScriptByte ld c, a callba CheckCellNum ret nc ld a, $1 ld [ScriptVar], a ret ; 0x97919 Script_specialphonecall: ; 0x97919 ; script command 0x9c ; parameters: ; call_id (MultiByteParam) call GetScriptByte ld [wSpecialPhoneCallID], a call GetScriptByte ld [wSpecialPhoneCallID + 1], a ret ; 0x97926 Script_checkphonecall: ; 0x97926 ; script command 0x9d ; returns false if no special phone call is stored ld a, [wSpecialPhoneCallID] and a jr z, .ok ld a, 1 .ok ld [ScriptVar], a ret ; 0x97932 Script_givepoke: ; 0x97932 ; script command 0x2d ; parameters: ; pokemon (PokemonParam) ; level (DecimalParam) ; item (ItemLabelByte) ; trainer (DecimalParam) ; trainer_name_pointer (MultiByteParam) ; pkmn_nickname (MultiByteParam) call GetScriptByte ld [CurPartySpecies], a call GetScriptByte ld [CurPartyLevel], a call GetScriptByte ld [CurItem], a call GetScriptByte and a ld b, a jr z, .ok ld hl, ScriptPos ld e, [hl] inc hl ld d, [hl] call GetScriptByte call GetScriptByte call GetScriptByte call GetScriptByte .ok callba GivePoke ld a, b ld [ScriptVar], a ret ; 0x97968 Script_giveegg: ; 0x97968 ; script command 0x2e ; parameters: ; pkmn (PokemonParam) ; level (DecimalParam) ; if no room in the party, return 0 in ScriptVar; else, return 2 xor a ; PARTYMON ld [ScriptVar], a ld [MonType], a call GetScriptByte ld [CurPartySpecies], a call GetScriptByte ld [CurPartyLevel], a callba GiveEgg ret nc ld a, 2 ld [ScriptVar], a ret ; 0x97988 Script_setevent: ; 0x97988 ; script command 0x33 ; parameters: ; bit_number (MultiByteParam) call GetScriptByte ld e, a call GetScriptByte ld d, a ld b, SET_FLAG call EventFlagAction ret ; 0x97996 Script_clearevent: ; 0x97996 ; script command 0x32 ; parameters: ; bit_number (MultiByteParam) call GetScriptByte ld e, a call GetScriptByte ld d, a ld b, RESET_FLAG call EventFlagAction ret ; 0x979a4 Script_checkevent: ; 0x979a4 ; script command 0x31 ; parameters: ; bit_number (MultiByteParam) call GetScriptByte ld e, a call GetScriptByte ld d, a ld b, CHECK_FLAG call EventFlagAction ld a, c and a jr z, .false ; 0x979b3 $2 ld a, 1 .false ld [ScriptVar], a ret ; 0x979bb Script_setflag: ; 0x979bb ; script command 0x36 ; parameters: ; bit_number (MultiByteParam) call GetScriptByte ld e, a call GetScriptByte ld d, a ld b, 1 ; set call _EngineFlagAction ret ; 0x979c9 Script_clearflag: ; 0x979c9 ; script command 0x35 ; parameters: ; bit_number (MultiByteParam) call GetScriptByte ld e, a call GetScriptByte ld d, a ld b, 0 ; clear call _EngineFlagAction ret ; 0x979d7 Script_checkflag: ; 0x979d7 ; script command 0x34 ; parameters: ; bit_number (MultiByteParam) call GetScriptByte ld e, a call GetScriptByte ld d, a ld b, 2 ; check call _EngineFlagAction ld a, c and a jr z, .false ; 0x979e6 $2 ld a, 1 .false ld [ScriptVar], a ret ; 0x979ee _EngineFlagAction: ; 0x979ee callba EngineFlagAction ret ; 0x979f5 Script_wildoff: ; 0x979f5 ; script command 0x38 ld hl, StatusFlags set 5, [hl] ret ; 0x979fb Script_wildon: ; 0x979fb ; script command 0x37 ld hl, StatusFlags res 5, [hl] ret ; 0x97a01 Script_xycompare: ; 0x97a01 ; script command 0x39 ; parameters: ; pointer (MultiByteParam) call GetScriptByte ld [wd453], a call GetScriptByte ld [wd454], a ret ; 0x97a0e Script_warpfacing: ; 0x97a0e ; script command 0xa3 ; parameters: ; facing (SingleByteParam) ; map_group (MapGroupParam) ; map_id (MapIdParam) ; x (SingleByteParam) ; y (SingleByteParam) call GetScriptByte and $3 ld c, a ld a, [wPlayerSpriteSetupFlags] set 5, a or c ld [wPlayerSpriteSetupFlags], a ; fall through Script_warp: ; 0x97a1d ; script command 0x3c ; parameters: ; map_group (MapGroupParam) ; map_id (MapIdParam) ; x (SingleByteParam) ; y (SingleByteParam) ; This seems to be some sort of error handling case. call GetScriptByte and a jr z, .not_ok ; 0x97a21 $27 ld [MapGroup], a call GetScriptByte ld [MapNumber], a call GetScriptByte ld [XCoord], a call GetScriptByte ld [YCoord], a ld a, -1 ld [wd001], a ld a, MAPSETUP_WARP ld [hMapEntryMethod], a ld a, 1 call LoadMapStatus call StopScript ret .not_ok call GetScriptByte call GetScriptByte call GetScriptByte ld a, -1 ld [wd001], a ld a, MAPSETUP_BADWARP ld [hMapEntryMethod], a ld a, 1 call LoadMapStatus call StopScript ret ; 0x97a65 Script_warpmod: ; 0x97a65 ; script command 0x3a ; parameters: ; warp_id (SingleByteParam) ; map_group (MapGroupParam) ; map_id (MapIdParam) call GetScriptByte ld [wdcac], a call GetScriptByte ld [BackupMapGroup], a call GetScriptByte ld [BackupMapNumber], a ret ; 0x97a78 Script_blackoutmod: ; 0x97a78 ; script command 0x3b ; parameters: ; map_group (MapGroupParam) ; map_id (MapIdParam) call GetScriptByte ld [wdcb2], a call GetScriptByte ld [wdcb3], a ret ; 0x97a85 Script_reloadmapmusic: ; 0x97a85 ; script command 0x83 ld a, 1 ld [wc2c1], a ret ; 0x97a8b Script_writecmdqueue: ; 0x97a8b ; script command 0x7d ; parameters: ; queue_pointer (MultiByteParam) call GetScriptByte ld e, a call GetScriptByte ld d, a ld a, [ScriptBank] ld b, a callba Function97e31 ret ; 0x97a9e Script_delcmdqueue: ; 0x97a9e ; script command 0x7e ; parameters: ; byte (SingleByteParam) xor a ld [ScriptVar], a call GetScriptByte ld b, a callba Function97e5c ret c ld a, 1 ld [ScriptVar], a ret ; 0x97ab3 Script_changemap: ; 0x97ab3 ; script command 0x79 ; parameters: ; map_data_pointer (MapDataPointerParam) call GetScriptByte ld [MapBlockDataBank], a call GetScriptByte ld [MapBlockDataPointer], a call GetScriptByte ld [MapBlockDataPointer + 1], a call ChangeMap call BufferScreen ret ; 0x97acc Script_changeblock: ; 0x97acc ; script command 0x7a ; parameters: ; x (SingleByteParam) ; y (SingleByteParam) ; block (SingleByteParam) call GetScriptByte add 4 ld d, a call GetScriptByte add 4 ld e, a call GetBlockLocation call GetScriptByte ld [hl], a call BufferScreen ret ; 0x97ae3 Script_reloadmappart:: ; 0x97ae3 ; script command 0x7c xor a ld [hBGMapMode], a call Function2173 call Function2914 callba Function104061 call UpdateSprites ret ; 0x97af6 Script_warpcheck: ; 0x97af6 ; script command 0x8e call Function224a ret nc callba SetAll_ScriptFlags3 ret ; 0x97b01 Function97b01: ; 0x97b01 callba SetAll_ScriptFlags3 ret ; 0x97b08 Script_newloadmap: ; 0x97b08 ; script command 0x8a ; parameters: ; which_method (SingleByteParam) call GetScriptByte ld [hMapEntryMethod], a ld a, 1 call LoadMapStatus call StopScript ret ; 0x97b16 Script_reloadandreturn: ; 0x97b16 ; script command 0x92 call Script_newloadmap jp Script_end ; 0x97b1c Script_loadfont: ; 0x97b1c ; script command 0x47 call LoadFont ret ; 0x97b20 Script_refreshscreen: ; 0x97b20 ; script command 0x48 ; parameters: ; dummy (SingleByteParam) call ResetWindow call GetScriptByte ret ; 0x97b27 Script_loadbytec1ce: ; 0x97b27 ; script command 0x4a ; parameters: ; byte (SingleByteParam) call GetScriptByte ld [wc2cf], a ret ; 0x97b2e LoadMoveSpritesScript: ; 97b2e loadmovesprites ; 97b2f Script_loadmovesprites: ; 0x97b2f ; script command 0x49 call Function2e20 call LoadMoveSprites ret ; 0x97b36 Script_passtoengine: ; 0x97b36 ; script command 0x89 ; parameters: ; data_pointer (PointerLabelBeforeBank) call GetScriptByte push af call GetScriptByte ld l, a call GetScriptByte ld h, a pop af call StartAutoInput ret ; 0x97b47 Script_pause: ; 0x97b47 ; script command 0x8b ; parameters: ; length (DecimalParam) call GetScriptByte and a jr z, .loop ; 0x97b4b $3 ld [ScriptDelay], a .loop ld c, 2 call DelayFrames ld hl, ScriptDelay dec [hl] jr nz, .loop ; 0x97b59 $f5 ret ; 0x97b5c Script_deactivatefacing: ; 0x97b5c ; script command 0x8c ; parameters: ; time (SingleByteParam) call GetScriptByte and a jr z, .no_time ; 0x97b60 $3 ld [ScriptDelay], a .no_time ld a, SCRIPT_WAIT ld [ScriptMode], a call StopScript ret ; 0x97b6e Script_ptpriorityjump: ; 0x97b6e ; script command 0x8f ; parameters: ; pointer (ScriptPointerLabelParam) call StopScript jp Script_2jump ; 0x97b74 Script_end: ; 0x97b74 ; script command 0x91 call ExitScriptSubroutine jr c, .resume ret .resume xor a ld [ScriptRunning], a ld a, SCRIPT_OFF ld [ScriptMode], a ld hl, ScriptFlags res 0, [hl] call StopScript ret ; 0x97b8c Script_return: ; 0x97b8c ; script command 0x90 call ExitScriptSubroutine jr c, .dummy .dummy ld hl, ScriptFlags res 0, [hl] call StopScript ret ; 0x97b9a ExitScriptSubroutine: ; 0x97b9a ; Return carry if there's no parent to return to. ld hl, wd43c ld a, [hl] and a jr z, .done ; 0x97b9f $1d dec [hl] ld e, [hl] ld d, $0 ld hl, wd43d rept 3 add hl,de endr ld a, [hli] ld b, a and " " ld [ScriptBank], a ld a, [hli] ld e, a ld [ScriptPos], a ld a, [hl] ld d, a ld [ScriptPos + 1], a and a ret .done scf ret ; 0x97bc0 Script_resetfuncs: ; 0x97bc0 ; script command 0x93 xor a ld [wd43c], a ld [ScriptRunning], a ld a, SCRIPT_OFF ld [ScriptMode], a ld hl, ScriptFlags res 0, [hl] call StopScript ret ; 0x97bd5 Script_halloffame: ; 0x97bd5 ; script command 0xa1 ld hl, GameTimerPause res 0, [hl] callba Mobile_HallOfFame callba Mobile_HallOfFame2 callba HallOfFame ld hl, GameTimerPause set 0, [hl] jr DisplayCredits ; 0x97bf3 Script_credits: ; 0x97bf3 ; script command 0xa2 callba RedCredits ; fallthrough DisplayCredits: call Script_resetfuncs ld a, $3 call LoadMapStatus call StopScript ret ; 0x97c051 Script_wait: ; 0x97c05 ; script command 0xa8 ; parameters: ; unknown (SingleByteParam) push bc call GetScriptByte .loop push af ld c, 6 call DelayFrames pop af dec a jr nz, .loop ; 0x97c11 $f6 pop bc ret ; 0x97c15 Script_unknown0xa9: ; 0x97c15 ; script command 0xa9 callba Function4cffe ld a, c ld [ScriptVar], a ret ; 0x97c20 Function97c20: ; 97c20 unreferenced ld a, [.byte] ld [ScriptVar], a ret .byte db 0 ; 97c28