pokecrystal-board/engine/specials.asm

647 lines
12 KiB
NASM
Raw Normal View History

2015-02-11 15:09:35 -08:00
Special:: ; c01b
; Run script special de.
ld hl, SpecialsPointers
rept 3
add hl,de
endr
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
; c029
SpecialsPointers:: ; c029
add_special WarpToSpawnPoint
; Communications
add_special Special_SetBitsForLinkTradeRequest
add_special Special_WaitForLinkedFriend
add_special Special_CheckLinkTimeout
add_special Special_TryQuickSave
add_special Special_CheckBothSelectedSameRoom
add_special Special_FailedLinkToPast
add_special Special_CloseLink
add_special Special_AbortLink
add_special Special_SetBitsForBattleRequest
add_special Special_SetBitsForTimeCapsuleRequest
add_special Special_CheckTimeCapsuleCompatibility
add_special Special_EnterTimeCapsule
add_special Special_TradeCenter
add_special Special_Colosseum
add_special Special_TimeCapsule
add_special Special_CableClubCheckWhichChris
add_special Special_CheckMysteryGift
add_special Special_GetMysteryGiftItem
add_special Special_UnlockMysteryGift
2015-10-16 10:35:43 -07:00
; Map Events
add_special BugContestJudging
add_special CheckPartyFullAfterContest
add_special CheckFirstMonFainted
add_special ContestReturnMons
add_special Special_GiveParkBalls
add_special Special_CheckMagikarpLength
add_special Special_MagikarpHouseSign
add_special HealParty
add_special PokemonCenterPC
add_special Special_KrissHousePC
add_special Special_DayCareMan
add_special Special_DayCareLady
add_special Special_DayCareManOutside
2015-06-25 21:01:08 -07:00
add_special MoveDeletion
add_special Special_BankOfMom
add_special Special_MagnetTrain
2015-02-11 15:09:35 -08:00
add_special SpecialNameRival
add_special Special_SetDayOfWeek
add_special Special_TownMap
add_special Special_UnownPrinter
add_special MapRadio
add_special Special_UnownPuzzle
add_special Special_SlotMachine
add_special Special_CardFlip
add_special Special_DummyNonfunctionalGameCornerGame
add_special Special_WhiteBGMapBufferScreen
add_special FadeBlackBGMap
add_special Special_BattleTowerFade
add_special Special_FadeBlackQuickly
add_special FadeInBGMap
add_special Special_FadeInQuickly
add_special Special_ReloadSpritesNoPalettes
2015-02-11 15:09:35 -08:00
add_special WhiteBGMap
add_special UpdateTimePals
add_special ClearTileMap
add_special UpdateSprites
2015-11-04 13:14:27 -08:00
add_special ReplaceKrisSprite
add_special Special_GameCornerPrizeMonCheckDex
2015-02-11 15:09:35 -08:00
add_special SpecialSeenMon
add_special WaitSFX
add_special PlayMapMusic
add_special RestartMapMusic
add_special HealMachineAnim
2015-10-01 13:55:24 -07:00
add_special Special_SurfStartStep
add_special Special_FindGreaterThanThatLevel
add_special Special_FindAtLeastThatHappy
add_special Special_FindThatSpecies
add_special Special_FindThatSpeciesYourTrainerID
2015-10-24 07:34:19 -07:00
add_special Special_CheckUnusedTwoDayTimer ; unreferenced
2015-10-16 10:35:43 -07:00
add_special Special_DayCareMon1
add_special Special_DayCareMon2
add_special Special_SelectRandomBugContestContestants
2015-10-16 10:35:43 -07:00
add_special Special_ActivateFishingSwarm
add_special ToggleMaptileDecorations
add_special ToggleDecorationsVisibility
2015-02-11 15:09:35 -08:00
add_special SpecialGiveShuckle
add_special SpecialReturnShuckle
2015-10-16 10:35:43 -07:00
add_special Special_BillsGrandfather
2015-02-11 15:09:35 -08:00
add_special SpecialCheckPokerus
2015-10-16 10:35:43 -07:00
add_special Special_DisplayCoinCaseBalance
add_special Special_DisplayMoneyAndCoinBalance
2015-02-11 15:09:35 -08:00
add_special Function24ae8
add_special Special_CheckForLuckyNumberWinners
add_special Special_CheckLuckyNumberShowFlag
add_special Special_ResetLuckyNumberShowFlag
2015-10-16 10:35:43 -07:00
add_special Special_PrintTodaysLuckyNumber
add_special Special_SelectApricornForKurt
2015-02-11 15:09:35 -08:00
add_special SpecialNameRater
add_special Functionc2da
add_special GetFirstPokemonHappiness
add_special CheckFirstMonIsEgg
add_special RandomPhoneRareWildMon
add_special RandomPhoneWildMon
2015-02-11 15:09:35 -08:00
add_special RandomPhoneMon
add_special RunCallback_04
2015-10-31 18:05:02 -07:00
add_special PlaySlowCry
2015-02-11 15:09:35 -08:00
add_special SpecialSnorlaxAwake
2015-10-12 09:33:24 -07:00
add_special Special_YoungerHaircutBrother
add_special Special_OlderHaircutBrother
add_special Special_DaisyMassage
2015-02-11 15:09:35 -08:00
add_special Functionc472
add_special ProfOaksPCBoot
add_special SpecialGameboyCheck
add_special SpecialTrainerHouse
2015-11-05 11:06:03 -08:00
add_special PhotoStudio
2015-02-11 15:09:35 -08:00
add_special InitRoamMons
add_special Functionc48f
add_special Functionc49f
add_special Functionc4ac
add_special Function11ac3e
add_special Function11b444
add_special Function11b5e8
add_special Function11b7e5
add_special Function11b879
add_special Function11b920
add_special Function11b93b
add_special Function1700b0
add_special Function1700ba
add_special Function170114
2015-11-03 12:05:19 -08:00
add_special BattleTowerBattle
2015-02-11 15:09:35 -08:00
add_special Function1704e1
2015-11-07 11:38:52 -08:00
add_special EmptySpecial_17021d
add_special Function_LoadOpponentTrainerAndPokemonsWithOTSprite
2015-02-11 15:09:35 -08:00
add_special Function11ba38
2015-08-23 06:09:56 -07:00
add_special SpecialCheckForBattleTowerRules
2015-02-11 15:09:35 -08:00
add_special Function117656
add_special Reset
add_special Function1011f1
add_special Function101220
add_special Function101225
add_special Function101231
add_special Function4925b
add_special SpecialOmanyteChamber
2015-02-11 15:09:35 -08:00
add_special Function11c1ab
2015-11-03 12:05:19 -08:00
add_special BattleTowerAction
add_special Special_DisplayUnownWords
2015-08-24 08:04:13 -07:00
add_special Special_Menu_ChallengeExplanationCancel
2015-02-11 15:09:35 -08:00
add_special Function17d2b6
add_special Function17d2ce
add_special Function17f53d
add_special Function103612
add_special SpecialHoOhChamber
add_special Function102142
2015-10-01 13:55:24 -07:00
add_special Special_CelebiShrineEvent
2015-02-11 15:09:35 -08:00
add_special Function49bf9
add_special SpecialPokeSeer
add_special SpecialBuenasPassword
add_special SpecialBuenaPrize
add_special SpecialDratini
2015-10-24 07:34:19 -07:00
add_special Special_SampleKenjiBreakCountdown
2015-02-11 15:09:35 -08:00
add_special SpecialBeastsCheck
add_special SpecialMonCheck
add_special Functionc225
add_special Function170bd2
add_special Mobile_SelectThreeMons
2015-02-11 15:09:35 -08:00
add_special Function1037eb
add_special Function10383c
add_special Mobile_HealParty
2015-11-04 17:20:14 -08:00
add_special RefreshSprites
2015-02-11 15:09:35 -08:00
add_special Function1037c2
add_special Function10630f
add_special Function103780
add_special Function10387b
add_special Function4ae12
add_special LoadMapPalettes
2015-02-11 15:09:35 -08:00
add_special Function4a927
2015-10-04 11:14:51 -07:00
add_special Special_InitialSetDSTFlag
add_special Special_InitialClearDSTFlag
2015-02-11 15:09:35 -08:00
add_special SpecialNone
; c224
SpecialNone: ; c224
ret
; c225
Functionc225: ; c225
ld a, [ScriptVar]
ld d, a
callba Function57e2
ret
; c230
Special_GameCornerPrizeMonCheckDex: ; c230
2015-02-11 15:09:35 -08:00
ld a, [ScriptVar]
dec a
call CheckCaughtMon
ret nz
ld a, [ScriptVar]
dec a
call SetSeenAndCaughtMon
call FadeToMenu
ld a, [ScriptVar]
ld [wd265], a
callba Functionfb877
call Function2b4d
ret
; c252
SpecialSeenMon: ; c252
ld a, [ScriptVar]
dec a
call SetSeenMon
ret
; c25a
2015-10-01 13:55:24 -07:00
Special_FindGreaterThanThatLevel: ; c25a
2015-02-11 15:09:35 -08:00
ld a, [ScriptVar]
ld b, a
2015-10-01 13:55:24 -07:00
callba _FindGreaterThanThatLevel
jr z, FoundNone
jr FoundOne
2015-02-11 15:09:35 -08:00
2015-10-01 13:55:24 -07:00
Special_FindAtLeastThatHappy: ; c268
2015-02-11 15:09:35 -08:00
ld a, [ScriptVar]
ld b, a
2015-10-01 13:55:24 -07:00
callba _FindAtLeastThatHappy
jr z, FoundNone
jr FoundOne
2015-02-11 15:09:35 -08:00
2015-10-01 13:55:24 -07:00
Special_FindThatSpecies: ; c276
2015-02-11 15:09:35 -08:00
ld a, [ScriptVar]
ld b, a
2015-10-01 13:55:24 -07:00
callba _FindThatSpecies
jr z, FoundNone
jr FoundOne
2015-02-11 15:09:35 -08:00
2015-10-01 13:55:24 -07:00
Special_FindThatSpeciesYourTrainerID: ; c284
2015-02-11 15:09:35 -08:00
ld a, [ScriptVar]
ld b, a
2015-10-01 13:55:24 -07:00
callba _FindThatSpeciesYourTrainerID
jr z, FoundNone
jr FoundOne
2015-02-11 15:09:35 -08:00
2015-10-01 13:55:24 -07:00
FoundOne: ; c292
2015-02-11 15:09:35 -08:00
ld a, $1
ld [ScriptVar], a
ret
2015-10-01 13:55:24 -07:00
FoundNone: ; c298
2015-02-11 15:09:35 -08:00
xor a
ld [ScriptVar], a
ret
; c29d
SpecialNameRival: ; 0xc29d
ld b, $2 ; rival
ld de, RivalName
callba _NamingScreen
2015-02-11 15:09:35 -08:00
; default to "SILVER"
ld hl, RivalName
ld de, DefaultRivalName
call InitName
ret
; 0xc2b2
DefaultRivalName: ; 0xc2b2
db "SILVER@"
SpecialNameRater: ; c2b9
callba NameRater
ret
; c2c0
Special_TownMap: ; c2c0
2015-02-11 15:09:35 -08:00
call FadeToMenu
callba Function9191c
call Function2b4d
ret
; c2cd
Special_UnownPrinter: ; c2cd
2015-02-11 15:09:35 -08:00
call FadeToMenu
callba Function16be4
call Function2b4d
ret
; c2da
Functionc2da: ; c2da
call FadeToMenu
callba Function3f836
call Function2b4d
ret
; c2e7
Special_KrissHousePC: ; c2e7
2015-02-11 15:09:35 -08:00
xor a
ld [ScriptVar], a
callba Function156d9
ld a, c
ld [ScriptVar], a
ret
; c2f6
Special_CheckMysteryGift: ; c2f6
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
2015-02-11 15:09:35 -08:00
ld [ScriptVar], a
call CloseSRAM
ret
; c309
Special_GetMysteryGiftItem: ; c309
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
ld [CurItem], a
ld a, $1
2015-11-01 15:13:31 -08:00
ld [wItemQuantityChangeBuffer], a
2015-02-11 15:09:35 -08:00
ld hl, NumItems
call ReceiveItem
jr nc, .asm_c33d
xor a
2015-10-04 11:14:51 -07:00
ld [sMysteryGiftItem], a
2015-02-11 15:09:35 -08:00
call CloseSRAM
ld a, [CurItem]
ld [wd265], a
call GetItemName
2015-10-04 11:14:51 -07:00
ld hl, .ReceiveItemText
2015-02-11 15:09:35 -08:00
call PrintText
ld a, $1
ld [ScriptVar], a
ret
.asm_c33d
call CloseSRAM
xor a
ld [ScriptVar], a
ret
; c345
2015-10-04 11:14:51 -07:00
.ReceiveItemText: ; 0xc345
2015-02-11 15:09:35 -08:00
; received item
text_jump UnknownText_0x1bd3be
db "@"
; 0xc34a
BugContestJudging: ; c34a
callba _BugContestJudging
2015-02-11 15:09:35 -08:00
ld a, b
ld [ScriptVar], a
ret
; c355
MapRadio: ; c355
2015-02-11 15:09:35 -08:00
ld a, [ScriptVar]
ld e, a
callba PlayRadio
2015-02-11 15:09:35 -08:00
ret
; c360
Special_UnownPuzzle: ; c360
2015-02-11 15:09:35 -08:00
call FadeToMenu
callba Functione1190
ld a, [wd0ec]
ld [ScriptVar], a
call Function2b4d
ret
; c373
Special_SlotMachine: ; c373
call Special_CheckCoins
2015-02-11 15:09:35 -08:00
ret c
ld a, BANK(_SlotMachine)
ld hl, _SlotMachine
call Special_StartGameCornerGame
2015-02-11 15:09:35 -08:00
ret
; c380
Special_CardFlip: ; c380
call Special_CheckCoins
2015-02-11 15:09:35 -08:00
ret c
ld a, BANK(_CardFlip)
ld hl, _CardFlip
call Special_StartGameCornerGame
2015-02-11 15:09:35 -08:00
ret
; c38d
Special_DummyNonfunctionalGameCornerGame: ; c38d
call Special_CheckCoins
2015-02-11 15:09:35 -08:00
ret c
ld a, BANK(_DummyGame)
ld hl, _DummyGame
call Special_StartGameCornerGame
2015-02-11 15:09:35 -08:00
ret
; c39a
Special_StartGameCornerGame: ; c39a
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
call Function2b4d
ret
; c3ae
Special_CheckCoins: ; c3ae
2015-02-11 15:09:35 -08:00
ld hl, Coins
ld a, [hli]
or [hl]
jr z, .asm_c3c4
ld a, COIN_CASE
ld [CurItem], a
ld hl, NumItems
call CheckItem
jr nc, .asm_c3c9
and a
ret
.asm_c3c4
ld hl, UnknownText_0xc3d1
jr .asm_c3cc
.asm_c3c9
ld hl, UnknownText_0xc3d6
.asm_c3cc
call PrintText
scf
ret
; c3d1
UnknownText_0xc3d1: ; 0xc3d1
; You have no coins.
text_jump UnknownText_0x1bd3d7
db "@"
; 0xc3d6
UnknownText_0xc3d6: ; 0xc3d6
; You don't have a COIN CASE.
text_jump UnknownText_0x1bd3eb
db "@"
; 0xc3db
Special_WhiteBGMapBufferScreen: ; c3db
2015-02-11 15:09:35 -08:00
call WhiteBGMap
call BufferScreen
2015-02-11 15:09:35 -08:00
ret
; c3e2
ScriptReturnCarry: ; c3e2
jr c, .carry
xor a
ld [ScriptVar], a
ret
.carry
ld a, 1
ld [ScriptVar], a
ret
; c3ef
2015-10-24 07:34:19 -07:00
Special_CheckUnusedTwoDayTimer: ; c3ef
callba CheckUnusedTwoDayTimer
ld a, [wUnusedTwoDayTimer]
2015-02-11 15:09:35 -08:00
ld [ScriptVar], a
ret
; c3fc
2015-10-16 10:35:43 -07:00
Special_ActivateFishingSwarm: ; c3fc
2015-02-11 15:09:35 -08:00
ld a, [ScriptVar]
2015-10-16 10:35:43 -07:00
ld [wFishingSwarmFlag], a
2015-02-11 15:09:35 -08:00
ret
; c403
LoadWildData:: ; c403
2015-02-11 15:09:35 -08:00
ld a, c
and a
jr nz, .swarm_route35
; swarm dark cave violet entrance
2015-02-11 15:09:35 -08:00
ld a, d
ld [wdfcc], a
ld a, e
ld [wdfcd], a
ret
.swarm_route35
2015-02-11 15:09:35 -08:00
ld a, d
ld [wdc5a], a
ld a, e
ld [wdc5b], a
ret
; c419
SpecialCheckPokerus: ; c419
; Check if a monster in your party has Pokerus
callba CheckPokerus
jp ScriptReturnCarry
; c422
Special_ResetLuckyNumberShowFlag: ; c422
2015-10-24 07:34:19 -07:00
callba RestartLuckyNumberCountdown
ld hl, wLuckyNumberShowFlag
2015-02-11 15:09:35 -08:00
res 0, [hl]
callba LoadOrRegenerateLuckyIDNumber
2015-02-11 15:09:35 -08:00
ret
; c434
Special_CheckLuckyNumberShowFlag: ; c434
2015-10-16 10:35:43 -07:00
callba CheckLuckyNumberShowFlag
2015-02-11 15:09:35 -08:00
jp ScriptReturnCarry
; c43d
SpecialSnorlaxAwake: ; 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 $ff
jr z, .nope
cp b
jr nz, .nextcoord
ld a, [hli]
cp c
jr nz, .loop
ld a, $1
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 $ff
Functionc472: ; c472
ld a, [CurPartySpecies]
jp PlayCry
; c478
SpecialGameboyCheck: ; c478
ld a, [hCGB]
and a
jr nz, .cgb
ld a, [hSGB]
and a
jr nz, .sgb
.gb
xor a
jr .done
.sgb
ld a, 1
jr .done
.cgb
ld a, 2
.done
ld [ScriptVar], a
ret
Functionc48f: ; c48f
ld a, MUSIC_NONE % $100
ld [MusicFadeIDLo], a
ld a, MUSIC_NONE / $100
ld [MusicFadeIDHi], a
ld a, $2
ld [MusicFade], a
ret
; c49f
Functionc49f: ; c49f
call FadeToMenu
callba Function1dd702
call Function2b4d
ret
; c4ac
Functionc4ac: ; c4ac
call FadeToMenu
callba Function84688
call Function2b4d
ret
; c4b9
SpecialTrainerHouse: ; 0xc4b9
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]
2015-02-11 15:09:35 -08:00
ld [ScriptVar], a
jp CloseSRAM