mirror of
https://github.com/thornAvery/jep-hack.git
synced 2025-11-06 13:40:58 +13:00
There's a couple bugs here and there, but it's good enough and I think the bugs are related to how I tested it. Doesn't use specials because it seems to just cause comical glitches to occur. The Museum and Ruins of Alph fossil guys will talk differently, implying they're different individuals. The Museum one talks like in HGSS, the RoA one talks like the RBY one and comments on the Unown researcher's lack of care for fossils. Also reused some PokeCom centre lore.
432 lines
6 KiB
NASM
432 lines
6 KiB
NASM
Special::
|
|
; 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
|
|
|
|
INCLUDE "data/events/special_pointers.asm"
|
|
|
|
UnusedDummySpecial:
|
|
ret
|
|
|
|
SetPlayerPalette:
|
|
ld a, [wScriptVar]
|
|
ld d, a
|
|
farcall _SetPlayerPalette
|
|
ret
|
|
|
|
GameCornerPrizeMonCheckDex:
|
|
ld a, [wScriptVar]
|
|
call CheckCaughtMon
|
|
ret nz
|
|
ld a, [wScriptVar]
|
|
call SetSeenAndCaughtMon
|
|
call FadeToMenu
|
|
ld a, [wScriptVar]
|
|
ld [wNamedObjectIndex], a
|
|
farcall NewPokedexEntry
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
UnusedSetSeenMon:
|
|
ld a, [wScriptVar]
|
|
call SetSeenMon
|
|
ret
|
|
|
|
FindPartyMonAboveLevel:
|
|
ld a, [wScriptVar]
|
|
ld b, a
|
|
farcall _FindPartyMonAboveLevel
|
|
jr z, FoundNone
|
|
jr FoundOne
|
|
|
|
FindPartyMonAtLeastThatHappy:
|
|
ld a, [wScriptVar]
|
|
ld b, a
|
|
farcall _FindPartyMonAtLeastThatHappy
|
|
jr z, FoundNone
|
|
jr FoundOne
|
|
|
|
FindPartyMonThatSpecies:
|
|
ld a, [wScriptVar]
|
|
ld b, a
|
|
farcall _FindPartyMonThatSpecies
|
|
jr z, FoundNone
|
|
jr FoundOne
|
|
|
|
FindPartyMonThatSpeciesYourTrainerID:
|
|
ld a, [wScriptVar]
|
|
ld b, a
|
|
farcall _FindPartyMonThatSpeciesYourTrainerID
|
|
jr z, FoundNone
|
|
jr FoundOne
|
|
|
|
FoundOne:
|
|
ld a, TRUE
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
FoundNone:
|
|
xor a
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
NameRival:
|
|
ld b, NAME_RIVAL
|
|
ld de, wRivalName
|
|
farcall _NamingScreen
|
|
ld hl, wRivalName
|
|
ld de, .DefaultName
|
|
call InitName
|
|
ret
|
|
|
|
.DefaultName:
|
|
db "SILVER@"
|
|
|
|
NameRater:
|
|
farcall _NameRater
|
|
ret
|
|
|
|
OverworldTownMap:
|
|
call FadeToMenu
|
|
farcall _TownMap
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
UnownPrinter:
|
|
call FadeToMenu
|
|
farcall _UnownPrinter
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
DisplayLinkRecord:
|
|
call FadeToMenu
|
|
farcall _DisplayLinkRecord
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
PlayersHousePC:
|
|
xor a
|
|
ld [wScriptVar], a
|
|
farcall _PlayersHousePC
|
|
ld a, c
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
CheckMysteryGift:
|
|
ld a, BANK(sMysteryGiftItem)
|
|
call OpenSRAM
|
|
ld a, [sMysteryGiftItem]
|
|
and a
|
|
jr z, .no
|
|
inc a
|
|
|
|
.no
|
|
ld [wScriptVar], a
|
|
call CloseSRAM
|
|
ret
|
|
|
|
GetMysteryGiftItem:
|
|
ld a, BANK(sMysteryGiftItem)
|
|
call OpenSRAM
|
|
ld a, [sMysteryGiftItem]
|
|
ld [wCurItem], a
|
|
ld a, 1
|
|
ld [wItemQuantityChange], a
|
|
ld hl, wNumItems
|
|
call ReceiveItem
|
|
jr nc, .no_room
|
|
xor a
|
|
ld [sMysteryGiftItem], a
|
|
call CloseSRAM
|
|
ld a, [wCurItem]
|
|
ld [wNamedObjectIndex], a
|
|
call GetItemName
|
|
ld hl, .ReceiveItemText
|
|
call PrintText
|
|
ld a, TRUE
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
.no_room
|
|
call CloseSRAM
|
|
xor a
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
.ReceiveItemText:
|
|
text_far _ReceiveItemText
|
|
text_end
|
|
|
|
BugContestJudging:
|
|
farcall _BugContestJudging
|
|
ld a, b
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
MapRadio:
|
|
ld a, [wScriptVar]
|
|
ld e, a
|
|
farcall PlayRadio
|
|
ret
|
|
|
|
UnownPuzzle:
|
|
call FadeToMenu
|
|
farcall _UnownPuzzle
|
|
ld a, [wSolvedUnownPuzzle]
|
|
ld [wScriptVar], a
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
SlotMachine:
|
|
call CheckCoinsAndCoinCase
|
|
ret c
|
|
ld a, BANK(_SlotMachine)
|
|
ld hl, _SlotMachine
|
|
call StartGameCornerGame
|
|
ret
|
|
|
|
CardFlip:
|
|
call CheckCoinsAndCoinCase
|
|
ret c
|
|
ld a, BANK(_CardFlip)
|
|
ld hl, _CardFlip
|
|
call StartGameCornerGame
|
|
ret
|
|
|
|
UnusedMemoryGame:
|
|
call CheckCoinsAndCoinCase
|
|
ret c
|
|
ld a, BANK(_MemoryGame)
|
|
ld hl, _MemoryGame
|
|
call StartGameCornerGame
|
|
ret
|
|
|
|
StartGameCornerGame:
|
|
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
|
|
|
|
CheckCoinsAndCoinCase:
|
|
ld hl, wCoins
|
|
ld a, [hli]
|
|
or [hl]
|
|
jr z, .no_coins
|
|
ld a, COIN_CASE
|
|
ld [wCurItem], a
|
|
ld hl, wNumItems
|
|
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
|
|
|
|
.NoCoinsText:
|
|
text_far _NoCoinsText
|
|
text_end
|
|
|
|
.NoCoinCaseText:
|
|
text_far _NoCoinCaseText
|
|
text_end
|
|
|
|
ClearBGPalettesBufferScreen:
|
|
call ClearBGPalettes
|
|
call BufferScreen
|
|
ret
|
|
|
|
ScriptReturnCarry:
|
|
jr c, .carry
|
|
xor a
|
|
ld [wScriptVar], a
|
|
ret
|
|
.carry
|
|
ld a, 1
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
UnusedCheckUnusedTwoDayTimer:
|
|
farcall CheckUnusedTwoDayTimer
|
|
ld a, [wUnusedTwoDayTimer]
|
|
ld [wScriptVar], a
|
|
ret
|
|
|
|
ActivateFishingSwarm:
|
|
ld a, [wScriptVar]
|
|
ld [wFishingSwarmFlag], a
|
|
ret
|
|
|
|
StoreSwarmMapIndices::
|
|
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
|
|
|
|
CheckPokerus:
|
|
; Check if a monster in your party has Pokerus
|
|
farcall _CheckPokerus
|
|
jp ScriptReturnCarry
|
|
|
|
ResetLuckyNumberShowFlag:
|
|
farcall RestartLuckyNumberCountdown
|
|
ld hl, wLuckyNumberShowFlag
|
|
res LUCKYNUMBERSHOW_GAME_OVER_F, [hl]
|
|
farcall LoadOrRegenerateLuckyIDNumber
|
|
ret
|
|
|
|
CheckLuckyNumberShowFlag:
|
|
farcall _CheckLuckyNumberShowFlag
|
|
jp ScriptReturnCarry
|
|
|
|
SnorlaxAwake:
|
|
; Check if the Poké Flute channel is playing, and if the player is standing
|
|
; next to Snorlax.
|
|
|
|
; outputs:
|
|
; wScriptVar 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, [wXCoord]
|
|
ld b, a
|
|
ld a, [wYCoord]
|
|
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 [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
|
|
|
|
PlayCurMonCry:
|
|
ld a, [wCurPartySpecies]
|
|
jp PlayMonCry
|
|
|
|
GameboyCheck:
|
|
ldh a, [hCGB]
|
|
and a
|
|
jr nz, .cgb
|
|
ldh 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 [wScriptVar], a
|
|
ret
|
|
|
|
FadeOutMusic:
|
|
ld a, LOW(MUSIC_NONE)
|
|
ld [wMusicFadeID], a
|
|
ld a, HIGH(MUSIC_NONE)
|
|
ld [wMusicFadeID + 1], a
|
|
ld a, $2
|
|
ld [wMusicFade], a
|
|
ret
|
|
|
|
Diploma:
|
|
call FadeToMenu
|
|
farcall _Diploma
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
PrintDiploma:
|
|
call FadeToMenu
|
|
farcall _PrintDiploma
|
|
call ExitAllMenus
|
|
ret
|
|
|
|
TrainerHouse:
|
|
ld a, BANK(sMysteryGiftTrainerHouseFlag)
|
|
call OpenSRAM
|
|
ld a, [sMysteryGiftTrainerHouseFlag]
|
|
ld [wScriptVar], a
|
|
jp CloseSRAM
|
|
|
|
; Tradeback NPC tutorial
|
|
TradebackNPC:
|
|
farcall TradebackGuy
|
|
ret
|
|
|
|
;FossilScientist:
|
|
; farcall FossilScientistGuy
|
|
; ret
|