summaryrefslogtreecommitdiff
path: root/engine/scripting.asm
diff options
context:
space:
mode:
authormid-kid <esteve.varela@gmail.com>2018-03-13 13:07:16 +0100
committermid-kid <esteve.varela@gmail.com>2018-03-13 13:21:40 +0100
commitbaa0dc5a963a79843b37888bcfe1d2dfe833ade9 (patch)
tree968c86105bd67a3121d8f3f20018bfc59191f4c9 /engine/scripting.asm
parent12070ca50067d3abe36a730190f88ee43f2cace9 (diff)
Organize the engine/ directory
This is an informed attempt at reorganizing the engine/ directory by creating categorized subdirectories, in order to make it easier to navigate and find things. The directories created are as follows: * engine/game: Contains all "minigames", things like the unown puzzle and slot machine. * engine/gfx: Contains all handling of graphics. From loading palettes to playing animations. * engine/link: Contains all multiplayer functionality. * engine/menu: Contains all generic/misc. menus and menu code. Other, more specialized menus are in their own subdirectories (pokedex, pokegear, party menu, etc). * engine/overworld: Contains all handling of the overworld. From loading and connecting maps to wild encounters and the scripting engine. * engine/pokegear: In the same vein as engine/pokedex, except it could use some more splitting up. * engine/pokemon: Contains everything related to manipulating pokemon data. From the pokemon storage system to evolution and mail. * engine/printer: Contains everything related to printing things as well as the printer communication. * engine/title: Contains intro sequences, title screens and credits.
Diffstat (limited to 'engine/scripting.asm')
-rw-r--r--engine/scripting.asm2857
1 files changed, 0 insertions, 2857 deletions
diff --git a/engine/scripting.asm b/engine/scripting.asm
deleted file mode 100644
index f65f2f9c0..000000000
--- a/engine/scripting.asm
+++ /dev/null
@@ -1,2857 +0,0 @@
-; Event scripting commands.
-
-
-EnableScriptMode::
- push af
- ld a, SCRIPT_READ
- ld [wScriptMode], a
- pop af
- ret
-
-ScriptEvents::
- call StartScript
-.loop
- ld a, [wScriptMode]
- ld hl, .modes
- rst JumpTable
- call CheckScript
- jr nz, .loop
- ret
-
-.modes
- dw EndScript
- dw RunScriptCommand
- dw WaitScriptMovement
- dw WaitScript
-
-EndScript:
- call StopScript
- ret
-
-WaitScript:
- call StopScript
-
- ld hl, wScriptDelay
- dec [hl]
- ret nz
-
- farcall Function58b9
-
- ld a, SCRIPT_READ
- ld [wScriptMode], a
- call StartScript
- ret
-
-WaitScriptMovement:
- call StopScript
-
- ld hl, wVramState
- bit 7, [hl]
- ret nz
-
- farcall Function58b9
-
- ld a, SCRIPT_READ
- ld [wScriptMode], a
- call StartScript
- ret
-
-RunScriptCommand:
- call GetScriptByte
- ld hl, ScriptCommandTable
- rst JumpTable
- ret
-
-
-ScriptCommandTable:
-; entries correspond to macros/scripts/events.asm enumeration
- dw Script_scall ; 00
- dw Script_farscall ; 01
- dw Script_ptcall ; 02
- dw Script_jump ; 03
- dw Script_farjump ; 04
- dw Script_ptjump ; 05
- dw Script_ifequal ; 06
- dw Script_ifnotequal ; 07
- dw Script_iffalse ; 08
- dw Script_iftrue ; 09
- dw Script_ifgreater ; 0a
- dw Script_ifless ; 0b
- dw Script_jumpstd ; 0c
- dw Script_callstd ; 0d
- dw Script_callasm ; 0e
- dw Script_special ; 0f
- dw Script_ptcallasm ; 10
- dw Script_checkmapscene ; 11
- dw Script_setmapscene ; 12
- dw Script_checkscene ; 13
- dw Script_setscene ; 14
- dw Script_writebyte ; 15
- dw Script_addvar ; 16
- dw Script_random ; 17
- dw Script_checkver ; 18
- dw Script_copybytetovar ; 19
- dw Script_copyvartobyte ; 1a
- dw Script_loadvar ; 1b
- dw Script_checkcode ; 1c
- dw Script_writevarcode ; 1d
- dw Script_writecode ; 1e
- dw Script_giveitem ; 1f
- dw Script_takeitem ; 20
- dw Script_checkitem ; 21
- dw Script_givemoney ; 22
- dw Script_takemoney ; 23
- dw Script_checkmoney ; 24
- dw Script_givecoins ; 25
- dw Script_takecoins ; 26
- dw Script_checkcoins ; 27
- dw Script_addcellnum ; 28
- dw Script_delcellnum ; 29
- dw Script_checkcellnum ; 2a
- dw Script_checktime ; 2b
- dw Script_checkpoke ; 2c
- dw Script_givepoke ; 2d
- dw Script_giveegg ; 2e
- dw Script_givepokeitem ; 2f
- dw Script_checkpokeitem ; 30
- dw Script_checkevent ; 31
- dw Script_clearevent ; 32
- dw Script_setevent ; 33
- dw Script_checkflag ; 34
- dw Script_clearflag ; 35
- dw Script_setflag ; 36
- dw Script_wildon ; 37
- dw Script_wildoff ; 38
- dw Script_xycompare ; 39
- dw Script_warpmod ; 3a
- dw Script_blackoutmod ; 3b
- dw Script_warp ; 3c
- dw Script_readmoney ; 3d
- dw Script_readcoins ; 3e
- dw Script_vartomem ; 3f
- dw Script_pokenamemem ; 40
- dw Script_itemtotext ; 41
- dw Script_mapnametotext ; 42
- dw Script_trainertotext ; 43
- dw Script_stringtotext ; 44
- dw Script_itemnotify ; 45
- dw Script_pocketisfull ; 46
- dw Script_opentext ; 47
- dw Script_refreshscreen ; 48
- dw Script_closetext ; 49
- dw Script_loadbytec2cf ; 4a
- dw Script_farwritetext ; 4b
- dw Script_writetext ; 4c
- dw Script_repeattext ; 4d
- dw Script_yesorno ; 4e
- dw Script_loadmenu ; 4f
- dw Script_closewindow ; 50
- dw Script_jumptextfaceplayer ; 51
-if _CRYSTAL
- dw Script_farjumptext ; 52
-endc
- dw Script_jumptext ; 53
- dw Script_waitbutton ; 54
- dw Script_buttonsound ; 55
- dw Script_pokepic ; 56
- dw Script_closepokepic ; 57
- dw Script__2dmenu ; 58
- dw Script_verticalmenu ; 59
- dw Script_loadpikachudata ; 5a
- dw Script_randomwildmon ; 5b
- dw Script_loadmemtrainer ; 5c
- dw Script_loadwildmon ; 5d
- dw Script_loadtrainer ; 5e
- dw Script_startbattle ; 5f
- dw Script_reloadmapafterbattle ; 60
- dw Script_catchtutorial ; 61
- dw Script_trainertext ; 62
- dw Script_trainerflagaction ; 63
- dw Script_winlosstext ; 64
- dw Script_scripttalkafter ; 65
- dw Script_endifjustbattled ; 66
- dw Script_checkjustbattled ; 67
- dw Script_setlasttalked ; 68
- dw Script_applymovement ; 69
- dw Script_applymovement2 ; 6a
- dw Script_faceplayer ; 6b
- dw Script_faceobject ; 6c
- dw Script_variablesprite ; 6d
- dw Script_disappear ; 6e
- dw Script_appear ; 6f
- dw Script_follow ; 70
- dw Script_stopfollow ; 71
- dw Script_moveobject ; 72
- dw Script_writeobjectxy ; 73
- dw Script_loademote ; 74
- dw Script_showemote ; 75
- dw Script_turnobject ; 76
- dw Script_follownotexact ; 77
- dw Script_earthquake ; 78
- dw Script_changemap ; 79
- dw Script_changeblock ; 7a
- dw Script_reloadmap ; 7b
- dw Script_reloadmappart ; 7c
- dw Script_writecmdqueue ; 7d
- dw Script_delcmdqueue ; 7e
- dw Script_playmusic ; 7f
- dw Script_encountermusic ; 80
- dw Script_musicfadeout ; 81
- dw Script_playmapmusic ; 82
- dw Script_dontrestartmapmusic ; 83
- dw Script_cry ; 84
- dw Script_playsound ; 85
- dw Script_waitsfx ; 86
- dw Script_warpsound ; 87
- dw Script_specialsound ; 88
- dw Script_passtoengine ; 89
- dw Script_newloadmap ; 8a
- dw Script_pause ; 8b
- dw Script_deactivatefacing ; 8c
- dw Script_priorityjump ; 8d
- dw Script_warpcheck ; 8e
- dw Script_ptpriorityjump ; 8f
- dw Script_return ; 90
- dw Script_end ; 91
- dw Script_reloadandreturn ; 92
- dw Script_endall ; 93
- dw Script_pokemart ; 94
- dw Script_elevator ; 95
- dw Script_trade ; 96
- dw Script_askforphonenumber ; 97
- dw Script_phonecall ; 98
- dw Script_hangup ; 99
- dw Script_describedecoration ; 9a
- dw Script_fruittree ; 9b
- dw Script_specialphonecall ; 9c
- dw Script_checkphonecall ; 9d
- dw Script_verbosegiveitem ; 9e
- dw Script_verbosegiveitem2 ; 9f
- dw Script_swarm ; a0
- dw Script_halloffame ; a1
- dw Script_credits ; a2
- dw Script_warpfacing ; a3
- dw Script_battletowertext ; a4
- dw Script_landmarktotext ; a5
- dw Script_trainerclassname ; a6
- dw Script_name ; a7
- dw Script_wait ; a8
- dw Script_checksave ; a9
-
-StartScript:
- ld hl, wScriptFlags
- set SCRIPT_RUNNING, [hl]
- ret
-
-CheckScript:
- ld hl, wScriptFlags
- bit SCRIPT_RUNNING, [hl]
- ret
-
-StopScript:
- ld hl, wScriptFlags
- res SCRIPT_RUNNING, [hl]
- ret
-
-Script_callasm:
-; script command 0xe
-; parameters: asm
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, b
- rst FarCall
- ret
-
-Script_special:
-; script command 0xf
-; parameters: predefined_script
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- farcall Special
- ret
-
-Script_ptcallasm:
-; script command 0x10
-; parameters: asm
-
- 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
-
-Script_jumptextfaceplayer:
-; script command 0x51
-; parameters: text_pointer
-
- ld a, [wScriptBank]
- ld [wScriptTextBank], a
- call GetScriptByte
- ld [wScriptTextAddr], a
- call GetScriptByte
- ld [wScriptTextAddr + 1], a
- ld b, BANK(JumpTextFacePlayerScript)
- ld hl, JumpTextFacePlayerScript
- jp ScriptJump
-
-Script_jumptext:
-; script command 0x53
-; parameters: text_pointer
-
- ld a, [wScriptBank]
- ld [wScriptTextBank], a
- call GetScriptByte
- ld [wScriptTextAddr], a
- call GetScriptByte
- ld [wScriptTextAddr + 1], a
- ld b, BANK(JumpTextScript)
- ld hl, JumpTextScript
- jp ScriptJump
-
-JumpTextFacePlayerScript:
- faceplayer
-JumpTextScript:
- opentext
- repeattext -1, -1
- waitbutton
- closetext
- end
-
-
-if _CRYSTAL
-
-Script_farjumptext:
-; script command 0x52
-; parameters: text_pointer
-
- call GetScriptByte
- ld [wScriptTextBank], a
- call GetScriptByte
- ld [wScriptTextAddr], a
- call GetScriptByte
- ld [wScriptTextAddr + 1], a
- ld b, BANK(JumpTextScript)
- ld hl, JumpTextScript
- jp ScriptJump
-
-endc
-
-
-Script_writetext:
-; script command 0x4c
-; parameters: text_pointer
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [wScriptBank]
- ld b, a
- call MapTextbox
- ret
-
-Script_farwritetext:
-; script command 0x4b
-; parameters: text_pointer
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- call MapTextbox
- ret
-
-Script_repeattext:
-; script command 0x4d
-; parameters: byte, byte
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- cp -1
- jr nz, .done
- ld a, l
- cp -1
- jr nz, .done
- ld hl, wScriptTextBank
- ld a, [hli]
- ld b, a
- ld a, [hli]
- ld h, [hl]
- ld l, a
- call MapTextbox
- ret
-
-.done
- ret
-
-Script_waitbutton:
-; script command 0x54
-
- jp WaitButton
-
-Script_buttonsound:
-; script command 0x55
-
- ld a, [hOAMUpdate]
- push af
- ld a, $1
- ld [hOAMUpdate], a
- call WaitBGMap
- call ButtonSound
- pop af
- ld [hOAMUpdate], a
- ret
-
-Script_yesorno:
-; script command 0x4e
-
- call YesNoBox
- ld a, FALSE
- jr c, .no
- ld a, TRUE
-.no
- ld [wScriptVar], a
- ret
-
-Script_loadmenu:
-; script command 0x4f
-; parameters: menu_header
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld de, LoadMenuHeader
- ld a, [wScriptBank]
- call Call_a_de
- call UpdateSprites
- ret
-
-Script_closewindow:
-; script command 0x50
-
- call CloseWindow
- call UpdateSprites
- ret
-
-Script_pokepic:
-; script command 0x56
-; parameters: pokemon
-
- call GetScriptByte
- and a
- jr nz, .ok
- ld a, [wScriptVar]
-.ok
- ld [wCurPartySpecies], a
- farcall Pokepic
- ret
-
-Script_closepokepic:
-; script command 0x57
-
- farcall ClosePokepic
- ret
-
-Script_verticalmenu:
-; script command 0x59
-
- ld a, [wScriptBank]
- ld hl, VerticalMenu
- rst FarCall
- ld a, [wMenuCursorY]
- jr nc, .ok
- xor a
-.ok
- ld [wScriptVar], a
- ret
-
-Script__2dmenu:
-; script command 0x58
-
- ld a, [wScriptBank]
- ld hl, _2DMenu
- rst FarCall
- ld a, [wMenuCursorBuffer]
- jr nc, .ok
- xor a
-.ok
- ld [wScriptVar], a
- ret
-
-Script_battletowertext:
-; script command 0xa4
-; parameters: pointer, memory
-
- call SetUpTextBox
- call GetScriptByte
- ld c, a
- farcall BattleTowerText
- ret
-
-Script_verbosegiveitem:
-; script command 0x9e
-; parameters: item, quantity
-
- call Script_giveitem
- call CurItemName
- ld de, wStringBuffer1
- ld a, 1
- call CopyConvertedText
- ld b, BANK(GiveItemScript)
- ld de, GiveItemScript
- jp ScriptCall
-
-
-ret_96f76:
- ret
-
-GiveItemScript:
- callasm ret_96f76
- writetext ReceivedItemText
- iffalse .Full
- waitsfx
- specialsound
- waitbutton
- itemnotify
- end
-
-.Full:
- buttonsound
- pocketisfull
- end
-
-ReceivedItemText:
- text_jump UnknownText_0x1c4719
- db "@"
-
-
-Script_verbosegiveitem2:
-; script command 0x9f
-; parameters: item, var
-
- call GetScriptByte
- cp -1
- jr nz, .ok
- ld a, [wScriptVar]
-.ok
- ld [wCurItem], a
- call GetScriptByte
- call GetVarAction
- ld a, [de]
- ld [wItemQuantityChangeBuffer], a
- ld hl, wNumItems
- call ReceiveItem
- ld a, TRUE
- jr c, .ok2
- xor a
-.ok2
- ld [wScriptVar], a
- call CurItemName
- ld de, wStringBuffer1
- ld a, 1
- call CopyConvertedText
- ld b, BANK(GiveItemScript)
- ld de, GiveItemScript
- jp ScriptCall
-
-Script_itemnotify:
-; script command 0x45
-
- call GetPocketName
- call CurItemName
- ld b, BANK(PutItemInPocketText)
- ld hl, PutItemInPocketText
- call MapTextbox
- ret
-
-Script_pocketisfull:
-; script command 0x46
-
- call GetPocketName
- call CurItemName
- ld b, BANK(PocketIsFullText)
- ld hl, PocketIsFullText
- call MapTextbox
- ret
-
-Script_specialsound:
-; script command 0x88
-
- farcall 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
-
-
-GetPocketName:
- farcall CheckItemPocket
- ld a, [wItemAttributeParamBuffer]
- dec a
- ld hl, .Pockets
- maskbits NUM_POCKETS
- add a
- ld e, a
- ld d, 0
- add hl, de
- ld a, [hli]
- ld d, [hl]
- ld e, a
- ld hl, wStringBuffer3
- 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@"
-
-CurItemName:
- ld a, [wCurItem]
- ld [wd265], a
- call GetItemName
- ret
-
-
-PutItemInPocketText:
- text_jump UnknownText_0x1c472c
- db "@"
-
-PocketIsFullText:
- text_jump UnknownText_0x1c474b
- db "@"
-
-
-Script_pokemart:
-; script command 0x94
-; parameters: dialog_id, mart_id
-
- call GetScriptByte
- ld c, a
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [wScriptBank]
- ld b, a
- farcall OpenMartDialog
- ret
-
-Script_elevator:
-; script command 0x95
-; parameters: floor_list_pointer
-
- xor a
- ld [wScriptVar], a
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [wScriptBank]
- ld b, a
- farcall Elevator
- ret c
- ld a, TRUE
- ld [wScriptVar], a
- ret
-
-Script_trade:
-; script command 0x96
-; parameters: trade_id
-
- call GetScriptByte
- ld e, a
- farcall NPCTrade
- ret
-
-Script_phonecall:
-; script command 0x98
-; parameters: caller_name
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [wScriptBank]
- ld b, a
- farcall PhoneCall
- ret
-
-Script_hangup:
-; script command 0x99
-
- farcall HangUp
- ret
-
-Script_askforphonenumber:
-; script command 0x97
-; parameters: number
-
- call YesNoBox
- jr c, .refused
- call GetScriptByte
- ld c, a
- farcall AddPhoneNumber
- jr c, .phonefull
- xor a ; PHONE_CONTACT_GOT
- jr .done
-.phonefull
- ld a, PHONE_CONTACTS_FULL
- jr .done
-.refused
- call GetScriptByte
- ld a, PHONE_CONTACT_REFUSED
-.done
- ld [wScriptVar], a
- ret
-
-Script_describedecoration:
-; script command 0x9a
-; parameters: byte
-
- call GetScriptByte
- ld b, a
- farcall DescribeDecoration
- ld h, d
- ld l, e
- jp ScriptJump
-
-Script_fruittree:
-; script command 0x9b
-; parameters: tree_id
-
- call GetScriptByte
- ld [wCurFruitTree], a
- ld b, BANK(FruitTreeScript)
- ld hl, FruitTreeScript
- jp ScriptJump
-
-Script_swarm:
-; script command 0xa0
-; parameters: flag, map_group, map_id
-
- call GetScriptByte
- ld c, a
- call GetScriptByte
- ld d, a
- call GetScriptByte
- ld e, a
- farcall StoreSwarmMapIndices
- ret
-
-Script_trainertext:
-; script command 0x62
-; parameters: which_text
-
- call GetScriptByte
- ld c, a
- ld b, 0
- ld hl, wWalkingX
- add hl, bc
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [wEngineBuffer1]
- ld b, a
- call MapTextbox
- ret
-
-Script_scripttalkafter:
-; script command 0x65
-
- ld hl, wScriptAfterPointer
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [wEngineBuffer1]
- ld b, a
- jp ScriptJump
-
-Script_trainerflagaction:
-; script command 0x63
-; parameters: action
-
- xor a
- ld [wScriptVar], 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, TRUE
- ld [wScriptVar], a
- ret
-
-Script_winlosstext:
-; script command 0x64
-; parameters: win_text_pointer, loss_text_pointer
-
- ld hl, wWinTextPointer
- call GetScriptByte
- ld [hli], a
- call GetScriptByte
- ld [hli], a
- ld hl, wLossTextPointer
- call GetScriptByte
- ld [hli], a
- call GetScriptByte
- ld [hli], a
- ret
-
-Script_endifjustbattled:
-; script command 0x66
-
- ld a, [wRunningTrainerBattleScript]
- and a
- ret z
- jp Script_end
-
-Script_checkjustbattled:
-; script command 0x67
-
- ld a, TRUE
- ld [wScriptVar], a
- ld a, [wRunningTrainerBattleScript]
- and a
- ret nz
- xor a
- ld [wScriptVar], a
- ret
-
-Script_encountermusic:
-; script command 0x80
-
- ld a, [wOtherTrainerClass]
- ld e, a
- farcall PlayTrainerEncounterMusic
- ret
-
-Script_playmapmusic:
-; script command 0x82
-
- call PlayMapMusic
- ret
-
-Script_playmusic:
-; script command 0x7f
-; parameters: music_pointer
-
- ld de, MUSIC_NONE
- call PlayMusic
- xor a
- ld [wMusicFade], a
- call MaxVolume
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- call PlayMusic
- ret
-
-Script_musicfadeout:
-; script command 0x81
-; parameters: music, fadetime
-
- call GetScriptByte
- ld [wMusicFadeID], a
- call GetScriptByte
- ld [wMusicFadeID + 1], a
- call GetScriptByte
- and $ff ^ (1 << MUSIC_FADE_IN_F)
- ld [wMusicFade], a
- ret
-
-Script_playsound:
-; script command 0x85
-; parameters: sound_pointer
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- call PlaySFX
- ret
-
-Script_waitsfx:
-; script command 0x86
-
- call WaitSFX
- ret
-
-Script_warpsound:
-; script command 0x87
-
- farcall GetWarpSFX
- call PlaySFX
- ret
-
-Script_cry:
-; script command 0x84
-; parameters: cry_id
-
- call GetScriptByte
- push af
- call GetScriptByte
- pop af
- and a
- jr nz, .ok
- ld a, [wScriptVar]
-.ok
- call PlayMonCry
- ret
-
-GetScriptObject:
- and a ; PLAYER?
- ret z
- cp LAST_TALKED
- ret z
- dec a
- ret
-
-Script_setlasttalked:
-; script command 0x68
-; parameters: object_id
-
- call GetScriptByte
- call GetScriptObject
- ld [hLastTalked], a
- ret
-
-Script_applymovement:
-; script command 0x69
-; parameters: object_id, data
-
- call GetScriptByte
- call GetScriptObject
- ld c, a
-
-ApplyMovement:
- push bc
- ld a, c
- farcall SetFlagsForMovement_1
- pop bc
-
- push bc
- call SetFlagsForMovement_2
- pop bc
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [wScriptBank]
- ld b, a
- call GetMovementData
- ret c
-
- ld a, SCRIPT_WAIT_MOVEMENT
- ld [wScriptMode], a
- call StopScript
- ret
-
-SetFlagsForMovement_2:
- farcall _SetFlagsForMovement_2
- ret
-
-Script_applymovement2:
-; script command 0x6a
-; parameters: data
-; apply movement to last talked
-
- ld a, [hLastTalked]
- ld c, a
- jp ApplyMovement
-
-Script_faceplayer:
-; script command 0x6b
-
- ld a, [hLastTalked]
- and a
- ret z
- ld d, $0
- ld a, [hLastTalked]
- ld e, a
- farcall GetRelativeFacing
- ld a, d
- add a
- add a
- ld e, a
- ld a, [hLastTalked]
- ld d, a
- call ApplyObjectFacing
- ret
-
-Script_faceobject:
-; script command 0x6c
-; parameters: object1, object2
-
- call GetScriptByte
- call GetScriptObject
- cp LAST_TALKED
- jr c, .ok
- ld a, [hLastTalked]
-.ok
- ld e, a
- call GetScriptByte
- call GetScriptObject
- cp LAST_TALKED
- jr nz, .ok2
- ld a, [hLastTalked]
-.ok2
- ld d, a
- push de
- farcall GetRelativeFacing
- pop bc
- ret c
- ld a, d
- add a
- add a
- ld e, a
- ld d, c
- call ApplyObjectFacing
- ret
-
-Script_turnobject:
-; script command 0x76
-; parameters: object_id, facing
-
- call GetScriptByte
- call GetScriptObject
- cp LAST_TALKED
- jr nz, .ok
- ld a, [hLastTalked]
-.ok
- ld d, a
- call GetScriptByte
- add a
- add a
- ld e, a
- call ApplyObjectFacing
- ret
-
-ApplyObjectFacing:
- ld a, d
- push de
- call CheckObjectVisibility
- jr c, .not_visible
- 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 FIXED_FACING, [hl]
- jr nz, .not_visible
- pop de
- ld a, e
- call SetSpriteDirection
- ld hl, wVramState
- bit 6, [hl]
- jr nz, .text_state
- call .DisableTextTiles
-.text_state
- call UpdateSprites
- ret
-
-.not_visible
- pop de
- scf
- ret
-
-.DisableTextTiles:
- 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
- ret
-
-Script_variablesprite:
-; script command 0x6d
-; parameters: byte, sprite
-
- call GetScriptByte
- ld e, a
- ld d, $0
- ld hl, wVariableSprites
- add hl, de
- call GetScriptByte
- ld [hl], a
- ret
-
-Script_appear:
-; script command 0x6f
-; parameters: object_id
-
- call GetScriptByte
- call GetScriptObject
- call _CopyObjectStruct
- ld a, [hMapObjectIndexBuffer]
- ld b, 0 ; clear
- call ApplyEventActionAppearDisappear
- ret
-
-Script_disappear:
-; script command 0x6e
-; parameters: object_id
-
- call GetScriptByte
- call GetScriptObject
- cp LAST_TALKED
- jr nz, .ok
- ld a, [hLastTalked]
-.ok
- call DeleteObjectStruct
- ld a, [hMapObjectIndexBuffer]
- ld b, 1 ; set
- call ApplyEventActionAppearDisappear
- farcall _UpdateSprites
- ret
-
-ApplyEventActionAppearDisappear:
- 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
- cp d
- jr nz, .okay
- xor a
- ret
-.okay
- call EventFlagAction
- ret
-
-Script_follow:
-; script command 0x70
-; parameters: object2, object1
-
- call GetScriptByte
- call GetScriptObject
- ld b, a
- call GetScriptByte
- call GetScriptObject
- ld c, a
- farcall StartFollow
- ret
-
-Script_stopfollow:
-; script command 0x71
-
- farcall StopFollow
- ret
-
-Script_moveobject:
-; script command 0x72
-; parameters: object id, x, y
-
- call GetScriptByte
- call GetScriptObject
- ld b, a
- call GetScriptByte
- add 4
- ld d, a
- call GetScriptByte
- add 4
- ld e, a
- farcall CopyDECoordsToMapObject
- ret
-
-Script_writeobjectxy:
-; script command 0x73
-; parameters: object_id
-
- call GetScriptByte
- call GetScriptObject
- cp LAST_TALKED
- jr nz, .ok
- ld a, [hLastTalked]
-.ok
- ld b, a
- farcall WriteObjectXY
- ret
-
-Script_follownotexact:
-; script command 0x77
-; parameters: object2, object1
-
- call GetScriptByte
- call GetScriptObject
- ld b, a
- call GetScriptByte
- call GetScriptObject
- ld c, a
- farcall FollowNotExact
- ret
-
-Script_loademote:
-; script command 0x74
-; parameters: bubble
-
- call GetScriptByte
- cp -1
- jr nz, .not_var_emote
- ld a, [wScriptVar]
-.not_var_emote
- ld c, a
- farcall LoadEmote
- ret
-
-Script_showemote:
-; script command 0x75
-; parameters: bubble, object_id, time
-
- call GetScriptByte
- ld [wScriptVar], a
- call GetScriptByte
- call GetScriptObject
- cp LAST_TALKED
- jr z, .ok
- ld [hLastTalked], a
-.ok
- call GetScriptByte
- ld [wScriptDelay], a
- ld b, BANK(ShowEmoteScript)
- ld de, ShowEmoteScript
- jp ScriptCall
-
-ShowEmoteScript:
- loademote EMOTE_MEM
- applymovement2 .Show
- pause 0
- applymovement2 .Hide
- end
-
-.Show:
- show_emote
- step_sleep 1
- step_end
-
-.Hide:
- hide_emote
- step_sleep 1
- step_end
-
-
-Script_earthquake:
-; script command 0x78
-; parameters: param
-
- ld hl, EarthquakeMovement
- ld de, wEarthquakeMovementDataBuffer
- ld bc, EarthquakeMovement.End - EarthquakeMovement
- call CopyBytes
- call GetScriptByte
- ld [wEarthquakeMovementDataBuffer + 1], a
- and %00111111
- ld [wEarthquakeMovementDataBuffer + 3], a
- ld b, BANK(.script)
- ld de, .script
- jp ScriptCall
-
-.script
- applymovement PLAYER, wEarthquakeMovementDataBuffer
- end
-
-EarthquakeMovement:
- step_shake 16 ; the 16 gets overwritten with the script byte
- step_sleep 16 ; the 16 gets overwritten with the lower 6 bits of the script byte
- step_end
-.End
-
-
-Script_loadpikachudata:
-; script command 0x5a
-
- ld a, PIKACHU
- ld [wTempWildMonSpecies], a
- ld a, 5
- ld [wCurPartyLevel], a
- ret
-
-Script_randomwildmon:
-; script command 0x5b
-
- xor a
- ld [wBattleScriptFlags], a
- ret
-
-Script_loadmemtrainer:
-; script command 0x5c
-
- ld a, (1 << 7) | 1
- ld [wBattleScriptFlags], a
- ld a, [wTempTrainerClass]
- ld [wOtherTrainerClass], a
- ld a, [wTempTrainerID]
- ld [wOtherTrainerID], a
- ret
-
-Script_loadwildmon:
-; script command 0x5d
-; parameters: pokemon, level
-
- ld a, (1 << 7)
- ld [wBattleScriptFlags], a
- call GetScriptByte
- ld [wTempWildMonSpecies], a
- call GetScriptByte
- ld [wCurPartyLevel], a
- ret
-
-Script_loadtrainer:
-; script command 0x5e
-; parameters: trainer_group, trainer_id
-
- ld a, (1 << 7) | 1
- ld [wBattleScriptFlags], a
- call GetScriptByte
- ld [wOtherTrainerClass], a
- call GetScriptByte
- ld [wOtherTrainerID], a
- ret
-
-Script_startbattle:
-; script command 0x5f
-
- call BufferScreen
- predef StartBattle
- ld a, [wBattleResult]
- and $3f
- ld [wScriptVar], a
- ret
-
-Script_catchtutorial:
-; script command 0x61
-; parameters: byte
-
- call GetScriptByte
- ld [wBattleType], a
- call BufferScreen
- farcall CatchTutorial
- jp Script_reloadmap
-
-Script_reloadmapafterbattle:
-; script command 0x60
-
- ld hl, wBattleScriptFlags
- ld d, [hl]
- ld [hl], $0
- ld a, [wBattleResult]
- and $3f
- cp $1
- jr nz, .notblackedout
- ld b, BANK(Script_BattleWhiteout)
- ld hl, Script_BattleWhiteout
- jp ScriptJump
-
-.notblackedout
- bit 0, d
- jr z, .was_wild
- farcall MomTriesToBuySomething
- jr .done
-
-.was_wild
- ld a, [wBattleResult]
- bit 7, a
- jr z, .done
- ld b, BANK(Script_SpecialBillCall)
- ld de, Script_SpecialBillCall
- farcall LoadScriptBDE
-.done
- jp Script_reloadmap
-
-Script_reloadmap:
-; script command 0x7b
-
- xor a
- ld [wBattleScriptFlags], a
- ld a, MAPSETUP_RELOADMAP
- ld [hMapEntryMethod], a
- ld a, $1
- call LoadMapStatus
- call StopScript
- ret
-
-Script_scall:
-; script command 0x0
-; parameters: pointer
-
- ld a, [wScriptBank]
- ld b, a
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- jr ScriptCall
-
-Script_farscall:
-; script command 0x1
-; parameters: pointer
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- jr ScriptCall
-
-Script_ptcall:
-; script command 0x2
-; parameters: pointer
-
- 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:
-; Bug: The script stack has a capacity of 5 scripts, yet there is
-; nothing to stop you from pushing a sixth script. The high part
-; of the script address can then be overwritten by modifications
-; to wScriptDelay, causing the script to return to the rst/interrupt
-; space.
-
- push de
- ld hl, wScriptStackSize
- ld e, [hl]
- inc [hl]
- ld d, $0
- ld hl, wScriptStack
- add hl, de
- add hl, de
- add hl, de
- pop de
- ld a, [wScriptBank]
- ld [hli], a
- ld a, [wScriptPos]
- ld [hli], a
- ld a, [wScriptPos + 1]
- ld [hl], a
- ld a, b
- ld [wScriptBank], a
- ld a, e
- ld [wScriptPos], a
- ld a, d
- ld [wScriptPos + 1], a
- ret
-
-CallCallback::
- ld a, [wScriptBank]
- or $80
- ld [wScriptBank], a
- jp ScriptCall
-
-Script_jump:
-; script command 0x3
-; parameters: pointer
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [wScriptBank]
- ld b, a
- jp ScriptJump
-
-Script_farjump:
-; script command 0x4
-; parameters: pointer
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- jp ScriptJump
-
-Script_ptjump:
-; script command 0x5
-; parameters: pointer
-
- 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
-
-Script_iffalse:
-; script command 0x8
-; parameters: pointer
-
- ld a, [wScriptVar]
- and a
- jp nz, SkipTwoScriptBytes
- jp Script_jump
-
-Script_iftrue:
-; script command 0x9
-; parameters: pointer
-
- ld a, [wScriptVar]
- and a
- jp nz, Script_jump
- jp SkipTwoScriptBytes
-
-Script_ifequal:
-; script command 0x6
-; parameters: byte, pointer
-
- call GetScriptByte
- ld hl, wScriptVar
- cp [hl]
- jr z, Script_jump
- jr SkipTwoScriptBytes
-
-Script_ifnotequal:
-; script command 0x7
-; parameters: byte, pointer
-
- call GetScriptByte
- ld hl, wScriptVar
- cp [hl]
- jr nz, Script_jump
- jr SkipTwoScriptBytes
-
-Script_ifgreater:
-; script command 0xa
-; parameters: byte, pointer
-
- ld a, [wScriptVar]
- ld b, a
- call GetScriptByte
- cp b
- jr c, Script_jump
- jr SkipTwoScriptBytes
-
-Script_ifless:
-; script command 0xb
-; parameters: byte, pointer
-
- call GetScriptByte
- ld b, a
- ld a, [wScriptVar]
- cp b
- jr c, Script_jump
- jr SkipTwoScriptBytes
-
-Script_jumpstd:
-; script command 0xc
-; parameters: predefined_script
-
- call StdScript
- jr ScriptJump
-
-Script_callstd:
-; script command 0xd
-; parameters: predefined_script
-
- call StdScript
- ld d, h
- ld e, l
- jp ScriptCall
-
-StdScript:
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld hl, StdScripts
- add hl, de
- add hl, de
- add hl, de
- ld a, BANK(StdScripts)
- call GetFarByte
- ld b, a
- inc hl
- ld a, BANK(StdScripts)
- call GetFarHalfword
- ret
-
-SkipTwoScriptBytes:
- call GetScriptByte
- call GetScriptByte
- ret
-
-ScriptJump:
- ld a, b
- ld [wScriptBank], a
- ld a, l
- ld [wScriptPos], a
- ld a, h
- ld [wScriptPos + 1], a
- ret
-
-Script_priorityjump:
-; script command 0x8d
-; parameters: pointer
-
- ld a, [wScriptBank]
- ld [wPriorityScriptBank], a
- call GetScriptByte
- ld [wPriorityScriptAddr], a
- call GetScriptByte
- ld [wPriorityScriptAddr + 1], a
- ld hl, wScriptFlags
- set 3, [hl]
- ret
-
-Script_checkscene:
-; script command 0x13
-
- call CheckScenes
- jr z, .no_scene
- ld [wScriptVar], a
- ret
-
-.no_scene
- ld a, $ff
- ld [wScriptVar], a
- ret
-
-Script_checkmapscene:
-; script command 0x11
-; parameters: map_group, map_id
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld c, a
- call GetMapSceneID
- ld a, d
- or e
- jr z, .no_scene
- ld a, [de]
- ld [wScriptVar], a
- ret
-
-.no_scene
- ld a, $ff
- ld [wScriptVar], a
- ret
-
-Script_setscene:
-; script command 0x14
-; parameters: scene_id
-
- ld a, [wMapGroup]
- ld b, a
- ld a, [wMapNumber]
- ld c, a
- jr DoScene
-
-Script_setmapscene:
-; script command 0x12
-; parameters: map_group, map_id, scene_id
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld c, a
-DoScene:
- call GetMapSceneID
- ld a, d
- or e
- jr z, .no_scene
- call GetScriptByte
- ld [de], a
-.no_scene
- ret
-
-Script_copybytetovar:
-; script command 0x19
-; parameters: address
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [hl]
- ld [wScriptVar], a
- ret
-
-Script_copyvartobyte:
-; script command 0x1a
-; parameters: address
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [wScriptVar]
- ld [hl], a
- ret
-
-Script_loadvar:
-; script command 0x1b
-; parameters: address, value
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- call GetScriptByte
- ld [hl], a
- ret
-
-Script_writebyte:
-; script command 0x15
-; parameters: value
-
- call GetScriptByte
- ld [wScriptVar], a
- ret
-
-Script_addvar:
-; script command 0x16
-; parameters: value
-
- call GetScriptByte
- ld hl, wScriptVar
- add [hl]
- ld [hl], a
- ret
-
-Script_random:
-; script command 0x17
-; parameters: input
-
- call GetScriptByte
- ld [wScriptVar], a
- and a
- ret z
-
- ld c, a
- call .Divide256byC
- and a
- jr z, .no_restriction ; 256 % b == 0
- ld b, a
- xor a
- sub b
- ld b, a
-.loop
- push bc
- call Random
- pop bc
- ld a, [hRandomAdd]
- cp b
- jr nc, .loop
- jr .finish
-
-.no_restriction
- push bc
- call Random
- pop bc
- ld a, [hRandomAdd]
-
-.finish
- push af
- ld a, [wScriptVar]
- ld c, a
- pop af
- call SimpleDivide
- ld [wScriptVar], a
- ret
-
-.Divide256byC:
- xor a
- ld b, a
- sub c
-.mod_loop
- inc b
- sub c
- jr nc, .mod_loop
- dec b
- add c
- ret
-
-Script_checkcode:
-; script command 0x1c
-; parameters: variable_id
-
- call GetScriptByte
- call GetVarAction
- ld a, [de]
- ld [wScriptVar], a
- ret
-
-Script_writevarcode:
-; script command 0x1d
-; parameters: variable_id
-
- call GetScriptByte
- call GetVarAction
- ld a, [wScriptVar]
- ld [de], a
- ret
-
-Script_writecode:
-; script command 0x1e
-; parameters: variable_id, value
-
- call GetScriptByte
- call GetVarAction
- call GetScriptByte
- ld [de], a
- ret
-
-GetVarAction:
- ld c, a
- farcall _GetVarAction
- ret
-
-Script_checkver:
-; script command 0x18
-
- ld a, [.gs_version]
- ld [wScriptVar], a
- ret
-
-.gs_version:
- db GS_VERSION
-
-Script_pokenamemem:
-; script command 0x40
-; parameters: pokemon (0 aka USE_SCRIPT_VAR to use wScriptVar), memory
-
- call GetScriptByte
- and a
- jr nz, .gotit
- ld a, [wScriptVar]
-.gotit
- ld [wd265], a
- call GetPokemonName
- ld de, wStringBuffer1
-
-ConvertMemToText:
- call GetScriptByte
- cp NUM_MEM_BUFFERS
- jr c, .ok
- xor a
-.ok
-
-CopyConvertedText:
- ld hl, wStringBuffer3
- ld bc, wStringBuffer4 - wStringBuffer3
- call AddNTimes
- call CopyName2
- ret
-
-Script_itemtotext:
-; script command 0x41
-; parameters: item (0 aka USE_SCRIPT_VAR to use wScriptVar), memory
-
- call GetScriptByte
- and a ; USE_SCRIPT_VAR
- jr nz, .ok
- ld a, [wScriptVar]
-.ok
- ld [wd265], a
- call GetItemName
- ld de, wStringBuffer1
- jr ConvertMemToText
-
-Script_mapnametotext:
-; script command 0x42
-; parameters: memory
-
- ld a, [wMapGroup]
- ld b, a
- ld a, [wMapNumber]
- ld c, a
- call GetWorldMapLocation
-
-ConvertLandmarkToText:
- ld e, a
- farcall GetLandmarkName
- ld de, wStringBuffer1
- jp ConvertMemToText
-
-Script_landmarktotext:
-; script command 0xa5
-; parameters: id, memory
-
- call GetScriptByte
- jr ConvertLandmarkToText
-
-Script_trainertotext:
-; script command 0x43
-; parameters: trainer_id, trainer_group, memory
-
- call GetScriptByte
- ld c, a
- call GetScriptByte
- ld b, a
- farcall GetTrainerName
- jr ConvertMemToText
-
-Script_name:
-; script command 0xa7
-; parameters: type, id, memory
-
- call GetScriptByte
- ld [wNamedObjectTypeBuffer], a
-
-ContinueToGetName:
- call GetScriptByte
- ld [wCurSpecies], a
- call GetName
- ld de, wStringBuffer1
- jp ConvertMemToText
-
-Script_trainerclassname:
-; script command 0xa6
-; parameters: id, memory
-
- ld a, TRAINER_NAME
- ld [wNamedObjectTypeBuffer], a
- jr ContinueToGetName
-
-Script_readmoney:
-; script command 0x3d
-; parameters: account, memory
-
- call ResetStringBuffer1
- call GetMoneyAccount
- ld hl, wStringBuffer1
- lb bc, PRINTNUM_RIGHTALIGN | 3, 6
- call PrintNum
- ld de, wStringBuffer1
- jp ConvertMemToText
-
-Script_readcoins:
-; script command 0x3e
-; parameters: memory
-
- call ResetStringBuffer1
- ld hl, wStringBuffer1
- ld de, wCoins
- lb bc, PRINTNUM_RIGHTALIGN | 2, 6
- call PrintNum
- ld de, wStringBuffer1
- jp ConvertMemToText
-
-Script_vartomem:
-; script command 0x3f
-; parameters: memory
-
- call ResetStringBuffer1
- ld de, wScriptVar
- ld hl, wStringBuffer1
- lb bc, PRINTNUM_RIGHTALIGN | 1, 3
- call PrintNum
- ld de, wStringBuffer1
- jp ConvertMemToText
-
-ResetStringBuffer1:
- ld hl, wStringBuffer1
- ld bc, NAME_LENGTH
- ld a, "@"
- call ByteFill
- ret
-
-Script_stringtotext:
-; script command 0x44
-; parameters: text_pointer, memory
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [wScriptBank]
- ld hl, CopyName1
- rst FarCall
- ld de, wStringBuffer2
- jp ConvertMemToText
-
-Script_givepokeitem:
-; script command 0x2f
-; parameters: pointer
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [wScriptBank]
- call GetFarByte
- ld b, a
- push bc
- inc hl
- ld bc, MAIL_MSG_LENGTH
- ld de, wd002
- ld a, [wScriptBank]
- call FarCopyBytes
- pop bc
- farcall GivePokeItem
- ret
-
-Script_checkpokeitem:
-; script command 0x30
-; parameters: pointer
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [wScriptBank]
- ld b, a
- farcall CheckPokeItem
- ret
-
-Script_giveitem:
-; script command 0x1f
-; parameters: item, quantity
-
- call GetScriptByte
- cp ITEM_FROM_MEM
- jr nz, .ok
- ld a, [wScriptVar]
-.ok
- ld [wCurItem], a
- call GetScriptByte
- ld [wItemQuantityChangeBuffer], a
- ld hl, wNumItems
- call ReceiveItem
- jr nc, .full
- ld a, TRUE
- ld [wScriptVar], a
- ret
-.full
- xor a
- ld [wScriptVar], a
- ret
-
-Script_takeitem:
-; script command 0x20
-; parameters: item, quantity
-
- xor a
- ld [wScriptVar], a
- call GetScriptByte
- ld [wCurItem], a
- call GetScriptByte
- ld [wItemQuantityChangeBuffer], a
- ld a, -1
- ld [wCurItemQuantity], a
- ld hl, wNumItems
- call TossItem
- ret nc
- ld a, TRUE
- ld [wScriptVar], a
- ret
-
-Script_checkitem:
-; script command 0x21
-; parameters: item
-
- xor a
- ld [wScriptVar], a
- call GetScriptByte
- ld [wCurItem], a
- ld hl, wNumItems
- call CheckItem
- ret nc
- ld a, TRUE
- ld [wScriptVar], a
- ret
-
-Script_givemoney:
-; script command 0x22
-; parameters: account, money
-
- call GetMoneyAccount
- call LoadMoneyAmountToMem
- farcall GiveMoney
- ret
-
-Script_takemoney:
-; script command 0x23
-; parameters: account, money
-
- call GetMoneyAccount
- call LoadMoneyAmountToMem
- farcall TakeMoney
- ret
-
-Script_checkmoney:
-; script command 0x24
-; parameters: account, money
-
- call GetMoneyAccount
- call LoadMoneyAmountToMem
- farcall CompareMoney
-
-CompareMoneyAction:
- jr c, .less
- jr z, .exact
- ld a, HAVE_MORE
- jr .done
-.exact
- ld a, HAVE_AMOUNT
- jr .done
-.less
- ld a, HAVE_LESS
-.done
- ld [wScriptVar], a
- ret
-
-GetMoneyAccount:
- call GetScriptByte
- and a
- ld de, wMoney ; YOUR_MONEY
- ret z
- ld de, wMomsMoney ; MOMS_MONEY
- ret
-
-LoadMoneyAmountToMem:
- 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
-
-Script_givecoins:
-; script command 0x25
-; parameters: coins
-
- call LoadCoinAmountToMem
- farcall GiveCoins
- ret
-
-Script_takecoins:
-; script command 0x26
-; parameters: coins
-
- call LoadCoinAmountToMem
- farcall TakeCoins
- ret
-
-Script_checkcoins:
-; script command 0x27
-; parameters: coins
-
- call LoadCoinAmountToMem
- farcall CheckCoins
- jr CompareMoneyAction
-
-LoadCoinAmountToMem:
- call GetScriptByte
- ld [hMoneyTemp + 1], a
- call GetScriptByte
- ld [hMoneyTemp], a
- ld bc, hMoneyTemp
- ret
-
-Script_checktime:
-; script command 0x2b
-; parameters: time
-
- xor a
- ld [wScriptVar], a
- farcall CheckTime
- call GetScriptByte
- and c
- ret z
- ld a, TRUE
- ld [wScriptVar], a
- ret
-
-Script_checkpoke:
-; script command 0x2c
-; parameters: pokemon
-
- xor a
- ld [wScriptVar], a
- call GetScriptByte
- ld hl, wPartySpecies
- ld de, 1
- call IsInArray
- ret nc
- ld a, TRUE
- ld [wScriptVar], a
- ret
-
-Script_addcellnum:
-; script command 0x28
-; parameters: person
-
- xor a
- ld [wScriptVar], a
- call GetScriptByte
- ld c, a
- farcall AddPhoneNumber
- ret nc
- ld a, TRUE
- ld [wScriptVar], a
- ret
-
-Script_delcellnum:
-; script command 0x29
-; parameters: person
-
- xor a
- ld [wScriptVar], a
- call GetScriptByte
- ld c, a
- farcall DelCellNum
- ret nc
- ld a, TRUE
- ld [wScriptVar], a
- ret
-
-Script_checkcellnum:
-; script command 0x2a
-; parameters: person
-; returns false if the cell number is not in your phone
-
- xor a
- ld [wScriptVar], a
- call GetScriptByte
- ld c, a
- farcall CheckCellNum
- ret nc
- ld a, TRUE
- ld [wScriptVar], a
- ret
-
-Script_specialphonecall:
-; script command 0x9c
-; parameters: call_id
-
- call GetScriptByte
- ld [wSpecialPhoneCallID], a
- call GetScriptByte
- ld [wSpecialPhoneCallID + 1], a
- ret
-
-Script_checkphonecall:
-; script command 0x9d
-; returns false if no special phone call is stored
-
- ld a, [wSpecialPhoneCallID]
- and a
- jr z, .ok
- ld a, TRUE
-.ok
- ld [wScriptVar], a
- ret
-
-Script_givepoke:
-; script command 0x2d
-; parameters: pokemon, level, item, trainer, trainer_name_pointer, pkmn_nickname
-
- call GetScriptByte
- ld [wCurPartySpecies], a
- call GetScriptByte
- ld [wCurPartyLevel], a
- call GetScriptByte
- ld [wCurItem], a
- call GetScriptByte
- and a
- ld b, a
- jr z, .ok
- ld hl, wScriptPos
- ld e, [hl]
- inc hl
- ld d, [hl]
- call GetScriptByte
- call GetScriptByte
- call GetScriptByte
- call GetScriptByte
-.ok
- farcall GivePoke
- ld a, b
- ld [wScriptVar], a
- ret
-
-Script_giveegg:
-; script command 0x2e
-; parameters: pokemon, level
-; if no room in the party, return 0 in wScriptVar; else, return 2
-
- xor a ; PARTYMON
- ld [wScriptVar], a
- ld [wMonType], a
- call GetScriptByte
- ld [wCurPartySpecies], a
- call GetScriptByte
- ld [wCurPartyLevel], a
- farcall GiveEgg
- ret nc
- ld a, 2
- ld [wScriptVar], a
- ret
-
-Script_setevent:
-; script command 0x33
-; parameters: bit_number
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, SET_FLAG
- call EventFlagAction
- ret
-
-Script_clearevent:
-; script command 0x32
-; parameters: bit_number
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, RESET_FLAG
- call EventFlagAction
- ret
-
-Script_checkevent:
-; script command 0x31
-; parameters: bit_number
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, CHECK_FLAG
- call EventFlagAction
- ld a, c
- and a
- jr z, .false
- ld a, TRUE
-.false
- ld [wScriptVar], a
- ret
-
-Script_setflag:
-; script command 0x36
-; parameters: bit_number
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, SET_FLAG
- call _EngineFlagAction
- ret
-
-Script_clearflag:
-; script command 0x35
-; parameters: bit_number
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, RESET_FLAG
- call _EngineFlagAction
- ret
-
-Script_checkflag:
-; script command 0x34
-; parameters: bit_number
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, CHECK_FLAG
- call _EngineFlagAction
- ld a, c
- and a
- jr z, .false
- ld a, TRUE
-.false
- ld [wScriptVar], a
- ret
-
-_EngineFlagAction:
- farcall EngineFlagAction
- ret
-
-Script_wildoff:
-; script command 0x38
-
- ld hl, wStatusFlags
- set STATUSFLAGS_NO_WILD_ENCOUNTERS_F, [hl]
- ret
-
-Script_wildon:
-; script command 0x37
-
- ld hl, wStatusFlags
- res STATUSFLAGS_NO_WILD_ENCOUNTERS_F, [hl]
- ret
-
-Script_xycompare:
-; script command 0x39
-; parameters: pointer
-
- call GetScriptByte
- ld [wXYComparePointer], a
- call GetScriptByte
- ld [wXYComparePointer + 1], a
- ret
-
-Script_warpfacing:
-; script command 0xa3
-; parameters: facing, map_group, map_id, x, y
-
- call GetScriptByte
- maskbits NUM_DIRECTIONS
- ld c, a
- ld a, [wPlayerSpriteSetupFlags]
- set PLAYERSPRITESETUP_CUSTOM_FACING_F, a
- or c
- ld [wPlayerSpriteSetupFlags], a
-; fall through
-
-Script_warp:
-; script command 0x3c
-; parameters: map_group, map_id, x, y
-
-; This seems to be some sort of error handling case.
- call GetScriptByte
- and a
- jr z, .not_ok
- ld [wMapGroup], a
- call GetScriptByte
- ld [wMapNumber], a
- call GetScriptByte
- ld [wXCoord], a
- call GetScriptByte
- ld [wYCoord], a
- ld a, -1
- ld [wDefaultSpawnpoint], 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 [wDefaultSpawnpoint], a
- ld a, MAPSETUP_BADWARP
- ld [hMapEntryMethod], a
- ld a, 1
- call LoadMapStatus
- call StopScript
- ret
-
-Script_warpmod:
-; script command 0x3a
-; parameters: warp_id, map_group, map_id
-
- call GetScriptByte
- ld [wBackupWarpNumber], a
- call GetScriptByte
- ld [wBackupMapGroup], a
- call GetScriptByte
- ld [wBackupMapNumber], a
- ret
-
-Script_blackoutmod:
-; script command 0x3b
-; parameters: map_group, map_id
-
- call GetScriptByte
- ld [wLastSpawnMapGroup], a
- call GetScriptByte
- ld [wLastSpawnMapNumber], a
- ret
-
-Script_dontrestartmapmusic:
-; script command 0x83
-
- ld a, 1
- ld [wDontPlayMapMusicOnReload], a
- ret
-
-Script_writecmdqueue:
-; script command 0x7d
-; parameters: queue_pointer
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [wScriptBank]
- ld b, a
- farcall WriteCmdQueue ; no need to farcall
- ret
-
-Script_delcmdqueue:
-; script command 0x7e
-; parameters: byte
-
- xor a
- ld [wScriptVar], a
- call GetScriptByte
- ld b, a
- farcall DelCmdQueue ; no need to farcall
- ret c
- ld a, 1
- ld [wScriptVar], a
- ret
-
-Script_changemap:
-; script command 0x79
-; parameters: map_data_pointer
-
- call GetScriptByte
- ld [wMapBlocksBank], a
- call GetScriptByte
- ld [wMapBlocksPointer], a
- call GetScriptByte
- ld [wMapBlocksPointer + 1], a
- call ChangeMap
- call BufferScreen
- ret
-
-Script_changeblock:
-; script command 0x7a
-; parameters: x, y, block
-
- call GetScriptByte
- add 4
- ld d, a
- call GetScriptByte
- add 4
- ld e, a
- call GetBlockLocation
- call GetScriptByte
- ld [hl], a
- call BufferScreen
- ret
-
-Script_reloadmappart::
-; script command 0x7c
-
- xor a
- ld [hBGMapMode], a
- call OverworldTextModeSwitch
- call GetMovementPermissions
- farcall ReloadMapPart
- call UpdateSprites
- ret
-
-Script_warpcheck:
-; script command 0x8e
-
- call WarpCheck
- ret nc
- farcall EnableEvents
- ret
-
-Script_enableevents:
-; unused
- farcall EnableEvents
- ret
-
-Script_newloadmap:
-; script command 0x8a
-; parameters: which_method
-
- call GetScriptByte
- ld [hMapEntryMethod], a
- ld a, 1
- call LoadMapStatus
- call StopScript
- ret
-
-Script_reloadandreturn:
-; script command 0x92
-
- call Script_newloadmap
- jp Script_end
-
-Script_opentext:
-; script command 0x47
-
- call OpenText
- ret
-
-Script_refreshscreen:
-; script command 0x48
-; parameters: dummy
-
- call RefreshScreen
- call GetScriptByte
- ret
-
-Script_loadbytec2cf:
-; script command 0x4a
-; parameters: byte
-
- call GetScriptByte
- ld [wc2cf], a
- ret
-
- db closetext_command ; unused
-
-Script_closetext:
-; script command 0x49
-
- call _OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
- call CloseText
- ret
-
-
-Script_passtoengine:
-; script command 0x89
-; parameters: data_pointer
-
- call GetScriptByte
- push af
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- pop af
- call StartAutoInput
- ret
-
-Script_pause:
-; script command 0x8b
-; parameters: length
-
- call GetScriptByte
- and a
- jr z, .loop
- ld [wScriptDelay], a
-.loop
- ld c, 2
- call DelayFrames
- ld hl, wScriptDelay
- dec [hl]
- jr nz, .loop
- ret
-
-Script_deactivatefacing:
-; script command 0x8c
-; parameters: time
-
- call GetScriptByte
- and a
- jr z, .no_time
- ld [wScriptDelay], a
-.no_time
- ld a, SCRIPT_WAIT
- ld [wScriptMode], a
- call StopScript
- ret
-
-Script_ptpriorityjump:
-; script command 0x8f
-; parameters: pointer
-
- call StopScript
- jp Script_jump
-
-Script_end:
-; script command 0x91
-
- call ExitScriptSubroutine
- jr c, .resume
- ret
-
-.resume
- xor a
- ld [wScriptRunning], a
- ld a, SCRIPT_OFF
- ld [wScriptMode], a
- ld hl, wScriptFlags
- res 0, [hl]
- call StopScript
- ret
-
-Script_return:
-; script command 0x90
-
- call ExitScriptSubroutine
- jr c, .dummy
-.dummy
- ld hl, wScriptFlags
- res 0, [hl]
- call StopScript
- ret
-
-ExitScriptSubroutine:
-; Return carry if there's no parent to return to.
-
- ld hl, wScriptStackSize
- ld a, [hl]
- and a
- jr z, .done
- dec [hl]
- ld e, [hl]
- ld d, $0
- ld hl, wScriptStack
- add hl, de
- add hl, de
- add hl, de
- ld a, [hli]
- ld b, a
- and " "
- ld [wScriptBank], a
- ld a, [hli]
- ld e, a
- ld [wScriptPos], a
- ld a, [hl]
- ld d, a
- ld [wScriptPos + 1], a
- and a
- ret
-.done
- scf
- ret
-
-Script_endall:
-; script command 0x93
-
- xor a
- ld [wScriptStackSize], a
- ld [wScriptRunning], a
- ld a, SCRIPT_OFF
- ld [wScriptMode], a
- ld hl, wScriptFlags
- res 0, [hl]
- call StopScript
- ret
-
-Script_halloffame:
-; script command 0xa1
-
- ld hl, wGameTimerPause
- res GAMETIMERPAUSE_TIMER_PAUSED_F, [hl]
- farcall StubbedTrainerRankings_HallOfFame
- farcall StubbedTrainerRankings_HallOfFame2
- farcall HallOfFame
- ld hl, wGameTimerPause
- set GAMETIMERPAUSE_TIMER_PAUSED_F, [hl]
- jr ReturnFromCredits
-
-Script_credits:
-; script command 0xa2
-
- farcall RedCredits
-ReturnFromCredits:
- call Script_endall
- ld a, $3
- call LoadMapStatus
- call StopScript
- ret
-
-Script_wait:
-; script command 0xa8
-; parameters: unknown
-
- push bc
- call GetScriptByte
-.loop
- push af
- ld c, 6
- call DelayFrames
- pop af
- dec a
- jr nz, .loop
- pop bc
- ret
-
-Script_checksave:
-; script command 0xa9
-
- farcall CheckSave
- ld a, c
- ld [wScriptVar], a
- ret
-
-
-; unused
- ld a, [.byte]
- ld [wScriptVar], a
- ret
-
-.byte
- db 0