ref: 96ae7a7ee37571db441fe4a5ada1a6b56e876d6a
dir: /engine/specials.asm/
Special:: ; c01b ; Run script special de. ld hl, SpecialsPointers add hl, de add hl, de add hl, de ld b, [hl] inc hl ld a, [hli] ld h, [hl] ld l, a ld a, b rst FarCall ret ; c029 INCLUDE "data/special_pointers.asm" DummySpecial_c224: ; c224 ret ; c225 SetPlayerPalette: ; c225 ld a, [ScriptVar] ld d, a farcall _SetPlayerPalette ret ; c230 GameCornerPrizeMonCheckDex: ; c230 ld a, [ScriptVar] dec a call CheckCaughtMon ret nz ld a, [ScriptVar] dec a call SetSeenAndCaughtMon call FadeToMenu ld a, [ScriptVar] ld [wd265], a farcall NewPokedexEntry call ExitAllMenus ret ; c252 UnusedSetSeenMon: ; c252 ld a, [ScriptVar] dec a call SetSeenMon ret ; c25a FindPartyMonGreaterThanThatLevel: ; c25a ld a, [ScriptVar] ld b, a farcall _FindPartyMonGreaterThanThatLevel jr z, FoundNone jr FoundOne FindPartyMonAtLeastThatHappy: ; c268 ld a, [ScriptVar] ld b, a farcall _FindPartyMonAtLeastThatHappy jr z, FoundNone jr FoundOne FindPartyMonThatSpecies: ; c276 ld a, [ScriptVar] ld b, a farcall _FindPartyMonThatSpecies jr z, FoundNone jr FoundOne FindPartyMonThatSpeciesYourTrainerID: ; c284 ld a, [ScriptVar] ld b, a farcall _FindPartyMonThatSpeciesYourTrainerID jr z, FoundNone jr FoundOne FoundOne: ; c292 ld a, TRUE ld [ScriptVar], a ret FoundNone: ; c298 xor a ld [ScriptVar], a ret ; c29d NameRival: ; 0xc29d ld b, $2 ; rival ld de, RivalName farcall _NamingScreen ; default to "SILVER" ld hl, RivalName ld de, DefaultRivalName call InitName ret ; 0xc2b2 DefaultRivalName: ; 0xc2b2 db "SILVER@" NameRater: ; c2b9 farcall _NameRater ret ; c2c0 OverworldTownMap: ; c2c0 call FadeToMenu farcall _TownMap call ExitAllMenus ret ; c2cd UnownPrinter: ; c2cd call FadeToMenu farcall _UnownPrinter call ExitAllMenus ret ; c2da DisplayLinkRecord: ; c2da call FadeToMenu farcall _DisplayLinkRecord call ExitAllMenus ret ; c2e7 PlayersHousePC: ; c2e7 xor a ld [ScriptVar], a farcall _PlayersHousePC ld a, c ld [ScriptVar], a ret ; c2f6 CheckMysteryGift: ; c2f6 ld a, BANK(sMysteryGiftItem) call GetSRAMBank ld a, [sMysteryGiftItem] and a jr z, .no inc a .no ld [ScriptVar], a call CloseSRAM ret ; c309 GetMysteryGiftItem: ; c309 ld a, BANK(sMysteryGiftItem) call GetSRAMBank ld a, [sMysteryGiftItem] ld [CurItem], a ld a, 1 ld [wItemQuantityChangeBuffer], a ld hl, NumItems call ReceiveItem jr nc, .no_room xor a ld [sMysteryGiftItem], a call CloseSRAM ld a, [CurItem] ld [wd265], a call GetItemName ld hl, .ReceiveItemText call PrintText ld a, TRUE ld [ScriptVar], a ret .no_room call CloseSRAM xor a ld [ScriptVar], a ret ; c345 .ReceiveItemText: ; 0xc345 ; received item text_jump UnknownText_0x1bd3be db "@" ; 0xc34a BugContestJudging: ; c34a farcall _BugContestJudging ld a, b ld [ScriptVar], a ret ; c355 MapRadio: ; c355 ld a, [ScriptVar] ld e, a farcall PlayRadio ret ; c360 UnownPuzzle: ; c360 call FadeToMenu farcall _UnownPuzzle ld a, [wSolvedUnownPuzzle] ld [ScriptVar], a call ExitAllMenus ret ; c373 SlotMachine: ; c373 call CheckCoinsAndCoinCase ret c ld a, BANK(_SlotMachine) ld hl, _SlotMachine call StartGameCornerGame ret ; c380 CardFlip: ; c380 call CheckCoinsAndCoinCase ret c ld a, BANK(_CardFlip) ld hl, _CardFlip call StartGameCornerGame ret ; c38d DummyNonfunctionalGameCornerGame: ; c38d call CheckCoinsAndCoinCase ret c ld a, BANK(_DummyGame) ld hl, _DummyGame call StartGameCornerGame ret ; c39a StartGameCornerGame: ; c39a call FarQueueScript call FadeToMenu ld hl, wQueuedScriptBank ld a, [hli] push af ld a, [hli] ld h, [hl] ld l, a pop af rst FarCall call ExitAllMenus ret ; c3ae CheckCoinsAndCoinCase: ; c3ae ld hl, Coins ld a, [hli] or [hl] jr z, .no_coins ld a, COIN_CASE ld [CurItem], a ld hl, NumItems call CheckItem jr nc, .no_coin_case and a ret .no_coins ld hl, .NoCoinsText jr .print .no_coin_case ld hl, .NoCoinCaseText .print call PrintText scf ret ; c3d1 .NoCoinsText: ; 0xc3d1 ; You have no coins. text_jump UnknownText_0x1bd3d7 db "@" ; 0xc3d6 .NoCoinCaseText: ; 0xc3d6 ; You don't have a COIN CASE. text_jump UnknownText_0x1bd3eb db "@" ; 0xc3db ClearBGPalettesBufferScreen: ; c3db call ClearBGPalettes call BufferScreen ret ; c3e2 ScriptReturnCarry: ; c3e2 jr c, .carry xor a ld [ScriptVar], a ret .carry ld a, 1 ld [ScriptVar], a ret ; c3ef UnusedCheckUnusedTwoDayTimer: ; c3ef farcall CheckUnusedTwoDayTimer ld a, [wUnusedTwoDayTimer] ld [ScriptVar], a ret ; c3fc ActivateFishingSwarm: ; c3fc ld a, [ScriptVar] ld [wFishingSwarmFlag], a ret ; c403 StoreSwarmMapIndices:: ; c403 ld a, c and a jr nz, .yanma ; swarm dark cave violet entrance ld a, d ld [wDunsparceMapGroup], a ld a, e ld [wDunsparceMapNumber], a ret .yanma ld a, d ld [wYanmaMapGroup], a ld a, e ld [wYanmaMapNumber], a ret ; c419 CheckPokerus: ; c419 ; Check if a monster in your party has Pokerus farcall _CheckPokerus jp ScriptReturnCarry ; c422 ResetLuckyNumberShowFlag: ; c422 farcall RestartLuckyNumberCountdown ld hl, wLuckyNumberShowFlag res LUCKYNUMBERSHOW_GAME_OVER_F, [hl] farcall LoadOrRegenerateLuckyIDNumber ret ; c434 CheckLuckyNumberShowFlag: ; c434 farcall _CheckLuckyNumberShowFlag jp ScriptReturnCarry ; c43d SnorlaxAwake: ; 0xc43d ; Check if the Poké Flute channel is playing, and if the player is standing ; next to Snorlax. ; outputs: ; ScriptVar is 1 if the conditions are met, otherwise 0. ; check background music ld a, [wMapMusic] cp MUSIC_POKE_FLUTE_CHANNEL jr nz, .nope ld a, [XCoord] ld b, a ld a, [YCoord] ld c, a ld hl, .ProximityCoords .loop ld a, [hli] cp -1 jr z, .nope cp b jr nz, .nextcoord ld a, [hli] cp c jr nz, .loop ld a, TRUE jr .done .nextcoord inc hl jr .loop .nope xor a .done ld [ScriptVar], a ret .ProximityCoords: ; x, y db 33, 8 ; left db 34, 10 ; below db 35, 10 ; below db 36, 8 ; right db 36, 9 ; right db -1 PlayCurMonCry: ; c472 ld a, [CurPartySpecies] jp PlayMonCry ; c478 GameboyCheck: ; c478 ld a, [hCGB] and a jr nz, .cgb ld a, [hSGB] and a jr nz, .sgb .gb xor a ; GBCHECK_GB jr .done .sgb ld a, GBCHECK_SGB jr .done .cgb ld a, GBCHECK_CGB .done ld [ScriptVar], a ret FadeOutMusic: ; c48f ld a, LOW(MUSIC_NONE) ld [MusicFadeID], a ld a, HIGH(MUSIC_NONE) ld [MusicFadeID + 1], a ld a, $2 ld [MusicFade], a ret ; c49f Diploma: ; c49f call FadeToMenu farcall _Diploma call ExitAllMenus ret ; c4ac PrintDiploma: ; c4ac call FadeToMenu farcall _PrintDiploma call ExitAllMenus ret ; c4b9 TrainerHouse: ; 0xc4b9 ld a, BANK(sMysteryGiftTrainerHouseFlag) call GetSRAMBank ld a, [sMysteryGiftTrainerHouseFlag] ld [ScriptVar], a jp CloseSRAM