pokegold/engine/specials.asm
2016-06-24 22:04:47 -04:00

556 lines
9.5 KiB
NASM
Executable File

Special:: ; c22b
ld hl, SpecialsPointers ; $4239
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
SpecialsPointers:
add_special WarpToSpawnPoint
add_special Function29b22
add_special Function29b4b
add_special Function29bcc
add_special Function29c71
add_special Function29c8d
add_special Function29d01
add_special Function29cf9
add_special Function29ad9
add_special Function29b2b
add_special Function29b34
add_special Function29a47
add_special Function29ac7
add_special Function29ccf
add_special Function29ce4
add_special Function29cba
add_special Function29d4e
add_special Special_CheckMysteryGift
add_special Special_GetMysteryGiftItem
add_special Function2a4e7
add_special BugContestJudging
add_special Functionc7bbf
add_special Function13dce
add_special Function13ded
add_special Function1399d
add_special Functionfbc3c
add_special Functionfbdd6
add_special HealParty
add_special Function15871
add_special Special_PlayerPC
add_special Function16935
add_special Function16989
add_special Function16b8c
add_special Function2c352
add_special Function1646d
add_special Function8ce7c
add_special Special_NameRival
add_special Function908dc
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_ClearBGPalettesBufferScreen
add_special Function8c3ab
add_special Function8c3c4
add_special FadeInPalettes
add_special Function8c3b9
add_special Functiond42, $02
add_special ClearBGPalettes
add_special UpdateTimePals
add_special ClearTileMap
add_special UpdateSprites
add_special ReplacePlayerSprite
add_special Special_GameCornerPrizeMonCheckDex
add_special SpecialSeenMon
add_special WaitSFX, $03
add_special PlayMapMusic
add_special RestartMapMusic
add_special Function126fd
add_special Special_SurfStartStep
add_special Special_FindGreaterThanThatLevel
add_special Special_FindAtLeastThatHappy
add_special Special_FindThatSpecies
add_special Special_FindThatSpeciesYourTrainerID
add_special Special_CheckUnusedTwoDayTimer
add_special Function177a5
add_special Function177c4
add_special Function13d64
add_special Functionc556
add_special Function271be
add_special Function27216
add_special Function73e1
add_special Function7452
add_special Function74cb
add_special Functionc588
add_special Function24a4d
add_special Function24a76
add_special Function24a10
add_special Functionc7a5a
add_special Functionc5a3
add_special Functionc591
add_special Functionc7bad
add_special Functionc5bb
add_special SpecialNameRater
add_special Special_DisplayLinkRecord
add_special GetFirstPokemonHappiness
add_special CheckFirstMonIsEgg
add_special Function2a9f7
add_special Function2aa6b
add_special Function2aab3
add_special Function14226
add_special Functionfb94b
add_special Functionc5d6
add_special Function74e7
add_special Function74ec
add_special Function74f1
add_special Functionc60b
add_special Function267ca
add_special Functionc611
add_special Functionc652
add_special Function16ff7
add_special Function2a7d7
add_special Functionc628
add_special Functionc638
add_special Functionc645
add_special Function90a1b
add_special Function90a54
add_special Function90a8d
add_special SpecialNone
SpecialNone: ; c389
ret
Special_GameCornerPrizeMonCheckDex: ; c38a
ld a, [wScriptVar]
dec a
call CheckCaughtMon
ret nz
ld a, [wScriptVar]
dec a
call SetSeenAndCaughtMon
call FadeToMenu
ld a, [wScriptVar]
ld [wd151], a
callba NewPokedexEntry
call ExitAllMenus
ret
SpecialSeenMon: ; c3ac
ld a, [wScriptVar]
dec a
call SetSeenMon
ret
Special_FindGreaterThanThatLevel: ; c3b4
ld a, [wScriptVar]
ld b, a
callba PartySearch_MaximumLevel ; same bank
jr z, asm_c3f2
jr asm_c3ec
Special_FindAtLeastThatHappy: ; c3c2
ld a, [wScriptVar]
ld b, a
callba PartySearch_MinimumHappiness ; same bank
jr z, asm_c3f2
jr asm_c3ec
Special_FindThatSpecies: ; c3d0
ld a, [wScriptVar]
ld b, a
callba PartySearch_SameSpecies ; same bank
jr z, asm_c3f2
jr asm_c3ec
Special_FindThatSpeciesYourTrainerID: ; c3de
ld a, [wScriptVar]
ld b, a
callba PartySearch_SameSpeciesAndYourID ; same bank
jr z, asm_c3f2
jr asm_c3ec
asm_c3ec
ld a, $1
ld [wScriptVar], a
ret
asm_c3f2
xor a
ld [wScriptVar], a
ret
Special_NameRival: ; c3f7
ld b, $2
ld de, wRivalsName
callba NamingScreen_
ld hl, wRivalsName
ld de, .DefaultName
call InitName
ret
.DefaultName:
IF DEF(GOLD)
db "SILVER@"
ENDC
IF DEF(SILVER)
db "GOLD@"
ENDC
SpecialNameRater: ; c413 (3:4413)
callba Functionfb7f7
ret
Special_TownMap: ; c41a (3:441a)
call FadeToMenu
callba Function9188a
call ExitAllMenus
ret
Special_UnownPrinter: ; c427 (3:4427)
call FadeToMenu
callba Function16e3a
call ExitAllMenus
ret
Special_DisplayLinkRecord: ; c434 (3:4434)
call FadeToMenu
callba Function3f55d
call ExitAllMenus
ret
Special_PlayerPC: ; c441 (3:4441)
xor a
ld [wScriptVar], a
callba Function159b0
ld a, c
ld [wScriptVar], a
ret
Special_CheckMysteryGift: ; c450 (3:4450)
ld a, $0
call OpenSRAM
ld a, [$abe2]
and a
jr z, .asm_c45c
inc a
.asm_c45c
ld [wScriptVar], a
call CloseSRAM
ret
Special_GetMysteryGiftItem: ; c463 (3:4463)
ld a, $0
call OpenSRAM
ld a, [$abe2]
ld [wd002], a
ld a, $1
ld [wd009], a
ld hl, wNumItems
call ReceiveItem
jr nc, .asm_c497
xor a
ld [$abe2], a
call CloseSRAM
ld a, [wd002]
ld [wd151], a
call GetItemName
ld hl, ReceivedMysteryGiftText ; $449f
call PrintText
ld a, $1
ld [wScriptVar], a
ret
.asm_c497
call CloseSRAM
xor a
ld [wScriptVar], a
ret
ReceivedMysteryGiftText:
text_jump ReceivedMysteryGiftText_
db "@"
BugContestJudging: ; c4a4 (3:44a4)
callba Function13a5f
ld a, b
ld [wScriptVar], a
ret
MapRadio: ; c4af (3:44af)
ld a, [wScriptVar]
ld e, a
callba Function919c1
ret
Special_UnownPuzzle: ; c4ba (3:44ba)
call FadeToMenu
callba Functione199d
ld a, [wFieldMoveSucceeded]
ld [wScriptVar], a
call ExitAllMenus
ret
Special_SlotMachine: ; c4cd (3:44cd)
call Functionc508
ret c
ld a, BANK(Function92c36)
ld hl, Function92c36
call Functionc4f4
ret
Special_CardFlip: ; c4da (3:44da)
call Functionc508
ret c
ld a, BANK(Functione0909)
ld hl, Functione0909
call Functionc4f4
ret
Special_DummyNonfunctionalGameCornerGame: ; c4e7 (3:44e7)
call Functionc508
ret c
ld a, BANK(Functione2668)
ld hl, Functione2668
call Functionc4f4
ret
Functionc4f4: ; c4f4 (3:44f4)
call Function3425
call FadeToMenu
ld hl, wcfd8
ld a, [hli]
push af
ld a, [hli]
ld h, [hl]
ld l, a
pop af
rst FarCall
call ExitAllMenus
ret
Functionc508: ; c508 (3:4508)
ld hl, wCoins
ld a, [hli]
or [hl]
jr z, .asm_c51e
ld a, COIN_CASE
ld [wd002], a
ld hl, wNumItems
call CheckItem
jr nc, .asm_c523
and a
ret
.asm_c51e
ld hl, .NoCoinsText
jr .asm_c526
.asm_c523
ld hl, .NoCoinCaseText
.asm_c526
call PrintText
scf
ret
.NoCoinsText:
text_jump NoCoinsText_
db "@"
.NoCoinCaseText:
text_jump NoCoinCaseText_
db "@"
Special_ClearBGPalettesBufferScreen: ; c535 (3:4535)
call ClearBGPalettes
call BufferScreen
ret
Functionc53c: ; c53c (3:453c)
jr c, .asm_c543
xor a
ld [wScriptVar], a
ret
.asm_c543
ld a, $1
ld [wScriptVar], a
ret
Special_CheckUnusedTwoDayTimer: ; c549 (3:4549)
callba Function118f8
ld a, [wUnusedTwoDayTimer]
ld [wScriptVar], a
ret
Functionc556: ; c556 (3:4556)
ld a, [wScriptVar]
ld [wdd19], a
jr .asm_c566
.asm_c55e
ld a, d
ld [wdd17], a
ld a, e
ld [wdd18], a
.asm_c566
SetFlag ENGINE_SPECIAL_WILDDATA
ret
Functionc56c:
CheckFlagHL ENGINE_SPECIAL_WILDDATA
jr z, .asm_c578
xor a
ld [wScriptVar], a
ret
.asm_c578
ld a, $1
ld [wScriptVar], a
xor a
ld [wdd19], a
ld [wdd17], a
ld [wdd18], a
ret
Functionc588: ; c588 (3:4588)
callba Functionc7a40
jp Functionc53c
Functionc591: ; c591 (3:4591)
callba Function11917
ClearFlag ENGINE_LUCKY_NUMBER_SHOW
callba LoadOrRegenerateLuckyIDNumber
ret
Functionc5a3: ; c5a3 (3:45a3)
callba Function1192e
jp Functionc53c
CountUnown: ; c5ac (3:45ac)
ld hl, wUnownDex
ld b, $0
.asm_c5b1
ld a, [hli]
and a
ret z
inc b
ld a, b
cp $1a
jr c, .asm_c5b1
ret
Functionc5bb: ; c5bb (3:45bb)
callba Function24b8d
ld a, c
ld [wScriptVar], a
and a
ret z
ld [wd002], a
ld a, $1
ld [wd009], a
ld hl, wNumItems
call TossItem
ret
Functionc5d6: ; c5d6 (3:45d6)
ld a, [wChannelsEnd]
cp $40
jr nz, .asm_c5fb
ld a, [wXCoord]
ld b, a
ld a, [wYCoord]
ld c, a
ld hl, .ProximityCoords
.asm_c5e8
ld a, [hli]
cp $ff
jr z, .asm_c5fb
cp b
jr nz, .asm_c5f8
ld a, [hli]
cp c
jr nz, .asm_c5e8
ld a, $1
jr .asm_c5fc
.asm_c5f8
inc hl
jr .asm_c5e8
.asm_c5fb
xor a
.asm_c5fc
ld [wScriptVar], 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
Functionc60b: ; c60b (3:460b)
ld a, [wCurPartySpecies]
jp PlayCry
Functionc611: ; c611 (3:4611)
ld a, [hCGB]
and a
jr nz, .asm_c622
ld a, [hSGB]
and a
jr nz, .asm_c61e
xor a
jr .asm_c624
.asm_c61e
ld a, $1
jr .asm_c624
.asm_c622
ld a, $2
.asm_c624
ld [wScriptVar], a
ret
Functionc628: ; c628 (3:4628)
ld a, $0
ld [wMusicFadeID], a
ld a, $0
ld [wMusicFadeIDHi], a
ld a, $2
ld [wMusicFade], a
ret
Functionc638: ; c638 (3:4638)
call FadeToMenu
callba Functione0002
call ExitAllMenus
ret
Functionc645: ; c645 (3:4645)
call FadeToMenu
callba Function84684
call ExitAllMenus
ret
Functionc652: ; c652 (3:4652)
ld a, $0
call OpenSRAM
ld a, [$abfd]
ld [wScriptVar], a
jp CloseSRAM