pokecrystal-board/engine/events/specials.asm

430 lines
6.0 KiB
NASM
Raw Normal View History

2018-06-24 07:09:41 -07:00
Special::
2015-02-11 15:09:35 -08:00
; Run script special de.
ld hl, SpecialsPointers
add hl, de
add hl, de
add hl, de
2015-02-11 15:09:35 -08:00
ld b, [hl]
inc hl
ld a, [hli]
ld h, [hl]
ld l, a
ld a, b
rst FarCall
ret
INCLUDE "data/special_pointers.asm"
2015-02-11 15:09:35 -08:00
2018-06-24 07:09:41 -07:00
DummySpecial_c224:
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
SetPlayerPalette:
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
2015-02-11 15:09:35 -08:00
ld d, a
farcall _SetPlayerPalette
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
GameCornerPrizeMonCheckDex:
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
2015-02-11 15:09:35 -08:00
dec a
call CheckCaughtMon
ret nz
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
2015-02-11 15:09:35 -08:00
dec a
call SetSeenAndCaughtMon
call FadeToMenu
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
ld [wNamedObjectIndexBuffer], a
farcall NewPokedexEntry
2015-11-17 14:56:49 -08:00
call ExitAllMenus
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
UnusedSetSeenMon:
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
2015-02-11 15:09:35 -08:00
dec a
call SetSeenMon
ret
2018-06-24 07:09:41 -07:00
FindPartyMonAboveLevel:
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
2015-02-11 15:09:35 -08:00
ld b, a
farcall _FindPartyMonAboveLevel
2015-10-01 13:55:24 -07:00
jr z, FoundNone
jr FoundOne
2015-02-11 15:09:35 -08:00
2018-06-24 07:09:41 -07:00
FindPartyMonAtLeastThatHappy:
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
2015-02-11 15:09:35 -08:00
ld b, a
farcall _FindPartyMonAtLeastThatHappy
2015-10-01 13:55:24 -07:00
jr z, FoundNone
jr FoundOne
2015-02-11 15:09:35 -08:00
2018-06-24 07:09:41 -07:00
FindPartyMonThatSpecies:
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
2015-02-11 15:09:35 -08:00
ld b, a
farcall _FindPartyMonThatSpecies
2015-10-01 13:55:24 -07:00
jr z, FoundNone
jr FoundOne
2015-02-11 15:09:35 -08:00
2018-06-24 07:09:41 -07:00
FindPartyMonThatSpeciesYourTrainerID:
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
2015-02-11 15:09:35 -08:00
ld b, a
farcall _FindPartyMonThatSpeciesYourTrainerID
2015-10-01 13:55:24 -07:00
jr z, FoundNone
jr FoundOne
2015-02-11 15:09:35 -08:00
2018-06-24 07:09:41 -07:00
FoundOne:
2015-12-11 08:50:49 -08:00
ld a, TRUE
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
FoundNone:
2015-02-11 15:09:35 -08:00
xor a
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
ret
NameRival:
2018-09-16 13:02:58 -07:00
ld b, NAME_RIVAL
2018-01-23 14:39:09 -08:00
ld de, wRivalName
2017-12-24 09:47:30 -08:00
farcall _NamingScreen
2015-02-11 15:09:35 -08:00
; default to "SILVER"
2018-01-23 14:39:09 -08:00
ld hl, wRivalName
ld de, .default
2015-02-11 15:09:35 -08:00
call InitName
ret
.default
2015-02-11 15:09:35 -08:00
db "SILVER@"
2018-06-24 07:09:41 -07:00
NameRater:
farcall _NameRater
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
OverworldTownMap:
2015-02-11 15:09:35 -08:00
call FadeToMenu
2017-12-24 09:47:30 -08:00
farcall _TownMap
2015-11-17 14:56:49 -08:00
call ExitAllMenus
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
UnownPrinter:
2015-02-11 15:09:35 -08:00
call FadeToMenu
farcall _UnownPrinter
2015-11-17 14:56:49 -08:00
call ExitAllMenus
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
DisplayLinkRecord:
2015-02-11 15:09:35 -08:00
call FadeToMenu
farcall _DisplayLinkRecord
2015-11-17 14:56:49 -08:00
call ExitAllMenus
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
PlayersHousePC:
2015-02-11 15:09:35 -08:00
xor a
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2018-01-22 16:10:09 -08:00
farcall _PlayersHousePC
2015-02-11 15:09:35 -08:00
ld a, c
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
CheckMysteryGift:
2015-10-04 11:14:51 -07:00
ld a, BANK(sMysteryGiftItem)
2015-02-11 15:09:35 -08:00
call GetSRAMBank
2015-10-04 11:14:51 -07:00
ld a, [sMysteryGiftItem]
2015-02-11 15:09:35 -08:00
and a
jr z, .no
2015-02-11 15:09:35 -08:00
inc a
.no
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
call CloseSRAM
ret
2018-06-24 07:09:41 -07:00
GetMysteryGiftItem:
2015-10-04 11:14:51 -07:00
ld a, BANK(sMysteryGiftItem)
2015-02-11 15:09:35 -08:00
call GetSRAMBank
2015-10-04 11:14:51 -07:00
ld a, [sMysteryGiftItem]
2018-01-23 14:39:09 -08:00
ld [wCurItem], a
2015-12-11 08:50:49 -08:00
ld a, 1
2015-11-01 15:13:31 -08:00
ld [wItemQuantityChangeBuffer], a
2018-01-23 14:39:09 -08:00
ld hl, wNumItems
2015-02-11 15:09:35 -08:00
call ReceiveItem
2015-12-11 08:50:49 -08:00
jr nc, .no_room
2015-02-11 15:09:35 -08:00
xor a
2015-10-04 11:14:51 -07:00
ld [sMysteryGiftItem], a
2015-02-11 15:09:35 -08:00
call CloseSRAM
2018-01-23 14:39:09 -08:00
ld a, [wCurItem]
ld [wNamedObjectIndexBuffer], a
2015-02-11 15:09:35 -08:00
call GetItemName
2015-10-04 11:14:51 -07:00
ld hl, .ReceiveItemText
2015-02-11 15:09:35 -08:00
call PrintText
2015-12-11 08:50:49 -08:00
ld a, TRUE
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
ret
2015-12-11 08:50:49 -08:00
.no_room
2015-02-11 15:09:35 -08:00
call CloseSRAM
xor a
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
ret
.ReceiveItemText:
2015-02-11 15:09:35 -08:00
; received item
text_far UnknownText_0x1bd3be
2015-02-11 15:09:35 -08:00
db "@"
2018-06-24 07:09:41 -07:00
BugContestJudging:
farcall _BugContestJudging
2015-02-11 15:09:35 -08:00
ld a, b
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
MapRadio:
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
2015-02-11 15:09:35 -08:00
ld e, a
2017-12-24 09:47:30 -08:00
farcall PlayRadio
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
UnownPuzzle:
2015-02-11 15:09:35 -08:00
call FadeToMenu
farcall _UnownPuzzle
2015-12-11 08:33:14 -08:00
ld a, [wSolvedUnownPuzzle]
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-11-17 14:56:49 -08:00
call ExitAllMenus
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
SlotMachine:
call CheckCoinsAndCoinCase
2015-02-11 15:09:35 -08:00
ret c
ld a, BANK(_SlotMachine)
ld hl, _SlotMachine
call StartGameCornerGame
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
CardFlip:
call CheckCoinsAndCoinCase
2015-02-11 15:09:35 -08:00
ret c
ld a, BANK(_CardFlip)
ld hl, _CardFlip
call StartGameCornerGame
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
DummyNonfunctionalGameCornerGame:
call CheckCoinsAndCoinCase
2015-02-11 15:09:35 -08:00
ret c
ld a, BANK(_DummyGame)
ld hl, _DummyGame
call StartGameCornerGame
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
StartGameCornerGame:
2015-11-01 09:44:30 -08:00
call FarQueueScript
2015-02-11 15:09:35 -08:00
call FadeToMenu
2015-11-01 09:44:30 -08:00
ld hl, wQueuedScriptBank
2015-02-11 15:09:35 -08:00
ld a, [hli]
push af
ld a, [hli]
ld h, [hl]
ld l, a
pop af
rst FarCall
2015-11-17 14:56:49 -08:00
call ExitAllMenus
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
CheckCoinsAndCoinCase:
ld hl, wCoins
2015-02-11 15:09:35 -08:00
ld a, [hli]
or [hl]
2015-12-11 08:50:49 -08:00
jr z, .no_coins
2015-02-11 15:09:35 -08:00
ld a, COIN_CASE
2018-01-23 14:39:09 -08:00
ld [wCurItem], a
ld hl, wNumItems
2015-02-11 15:09:35 -08:00
call CheckItem
2015-12-11 08:50:49 -08:00
jr nc, .no_coin_case
2015-02-11 15:09:35 -08:00
and a
ret
2015-12-11 08:50:49 -08:00
.no_coins
ld hl, .NoCoinsText
jr .print
2015-02-11 15:09:35 -08:00
2015-12-11 08:50:49 -08:00
.no_coin_case
ld hl, .NoCoinCaseText
2015-02-11 15:09:35 -08:00
2015-12-11 08:50:49 -08:00
.print
2015-02-11 15:09:35 -08:00
call PrintText
scf
ret
.NoCoinsText:
2015-02-11 15:09:35 -08:00
; You have no coins.
text_far UnknownText_0x1bd3d7
2015-02-11 15:09:35 -08:00
db "@"
.NoCoinCaseText:
2015-02-11 15:09:35 -08:00
; You don't have a COIN CASE.
text_far UnknownText_0x1bd3eb
2015-02-11 15:09:35 -08:00
db "@"
2018-06-24 07:09:41 -07:00
ClearBGPalettesBufferScreen:
2015-11-11 20:38:57 -08:00
call ClearBGPalettes
call BufferScreen
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
ScriptReturnCarry:
2015-02-11 15:09:35 -08:00
jr c, .carry
xor a
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
ret
.carry
ld a, 1
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
UnusedCheckUnusedTwoDayTimer:
2017-12-24 09:47:30 -08:00
farcall CheckUnusedTwoDayTimer
2015-10-24 07:34:19 -07:00
ld a, [wUnusedTwoDayTimer]
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
ActivateFishingSwarm:
2018-01-23 14:39:09 -08:00
ld a, [wScriptVar]
2015-10-16 10:35:43 -07:00
ld [wFishingSwarmFlag], a
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
StoreSwarmMapIndices::
2015-02-11 15:09:35 -08:00
ld a, c
and a
2015-12-09 08:38:40 -08:00
jr nz, .yanma
; swarm dark cave violet entrance
2015-02-11 15:09:35 -08:00
ld a, d
2015-12-09 08:38:40 -08:00
ld [wDunsparceMapGroup], a
2015-02-11 15:09:35 -08:00
ld a, e
2015-12-09 08:38:40 -08:00
ld [wDunsparceMapNumber], a
2015-02-11 15:09:35 -08:00
ret
2015-12-09 08:38:40 -08:00
.yanma
2015-02-11 15:09:35 -08:00
ld a, d
2015-12-09 08:38:40 -08:00
ld [wYanmaMapGroup], a
2015-02-11 15:09:35 -08:00
ld a, e
2015-12-09 08:38:40 -08:00
ld [wYanmaMapNumber], a
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
CheckPokerus:
2015-02-11 15:09:35 -08:00
; Check if a monster in your party has Pokerus
farcall _CheckPokerus
2015-02-11 15:09:35 -08:00
jp ScriptReturnCarry
2018-06-24 07:09:41 -07:00
ResetLuckyNumberShowFlag:
2017-12-24 09:47:30 -08:00
farcall RestartLuckyNumberCountdown
ld hl, wLuckyNumberShowFlag
2018-01-22 11:34:55 -08:00
res LUCKYNUMBERSHOW_GAME_OVER_F, [hl]
2017-12-24 09:47:30 -08:00
farcall LoadOrRegenerateLuckyIDNumber
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
CheckLuckyNumberShowFlag:
farcall _CheckLuckyNumberShowFlag
2015-02-11 15:09:35 -08:00
jp ScriptReturnCarry
SnorlaxAwake:
2015-02-11 15:09:35 -08:00
; Check if the Poké Flute channel is playing, and if the player is standing
; next to Snorlax.
; outputs:
2018-01-23 14:39:09 -08:00
; wScriptVar is 1 if the conditions are met, otherwise 0.
2015-02-11 15:09:35 -08:00
; check background music
ld a, [wMapMusic]
cp MUSIC_POKE_FLUTE_CHANNEL
jr nz, .nope
2018-01-23 14:39:09 -08:00
ld a, [wXCoord]
2015-02-11 15:09:35 -08:00
ld b, a
2018-01-23 14:39:09 -08:00
ld a, [wYCoord]
2015-02-11 15:09:35 -08:00
ld c, a
ld hl, .ProximityCoords
.loop
ld a, [hli]
2015-12-11 08:50:49 -08:00
cp -1
2015-02-11 15:09:35 -08:00
jr z, .nope
cp b
jr nz, .nextcoord
ld a, [hli]
cp c
jr nz, .loop
2015-12-11 08:50:49 -08:00
ld a, TRUE
2015-02-11 15:09:35 -08:00
jr .done
.nextcoord
inc hl
jr .loop
.nope
xor a
.done
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
ret
.ProximityCoords:
2015-02-11 15:09:35 -08:00
; x, y
db 33, 8 ; left
db 34, 10 ; below
db 35, 10 ; below
db 36, 8 ; right
db 36, 9 ; right
2015-12-11 08:50:49 -08:00
db -1
2015-02-11 15:09:35 -08:00
2018-06-24 07:09:41 -07:00
PlayCurMonCry:
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
jp PlayMonCry
2015-02-11 15:09:35 -08:00
2018-06-24 07:09:41 -07:00
GameboyCheck:
ldh a, [hCGB]
2015-02-11 15:09:35 -08:00
and a
jr nz, .cgb
ldh a, [hSGB]
2015-02-11 15:09:35 -08:00
and a
jr nz, .sgb
.gb
2018-01-11 22:40:20 -08:00
xor a ; GBCHECK_GB
2015-02-11 15:09:35 -08:00
jr .done
.sgb
2018-01-11 22:40:20 -08:00
ld a, GBCHECK_SGB
2015-02-11 15:09:35 -08:00
jr .done
.cgb
2018-01-11 22:40:20 -08:00
ld a, GBCHECK_CGB
2015-02-11 15:09:35 -08:00
.done
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
FadeOutMusic:
ld a, LOW(MUSIC_NONE)
2018-01-23 14:39:09 -08:00
ld [wMusicFadeID], a
ld a, HIGH(MUSIC_NONE)
2018-01-23 14:39:09 -08:00
ld [wMusicFadeID + 1], a
2015-02-11 15:09:35 -08:00
ld a, $2
2018-01-23 14:39:09 -08:00
ld [wMusicFade], a
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
Diploma:
2015-02-11 15:09:35 -08:00
call FadeToMenu
2017-12-24 09:47:30 -08:00
farcall _Diploma
2015-11-17 14:56:49 -08:00
call ExitAllMenus
2015-02-11 15:09:35 -08:00
ret
2018-06-24 07:09:41 -07:00
PrintDiploma:
2015-02-11 15:09:35 -08:00
call FadeToMenu
2017-12-24 09:47:30 -08:00
farcall _PrintDiploma
2015-11-17 14:56:49 -08:00
call ExitAllMenus
2015-02-11 15:09:35 -08:00
ret
TrainerHouse:
2015-10-04 11:14:51 -07:00
ld a, BANK(sMysteryGiftTrainerHouseFlag)
2015-02-11 15:09:35 -08:00
call GetSRAMBank
2015-10-04 11:14:51 -07:00
ld a, [sMysteryGiftTrainerHouseFlag]
2018-01-23 14:39:09 -08:00
ld [wScriptVar], a
2015-02-11 15:09:35 -08:00
jp CloseSRAM