code:
.macro def_special ptr
.global SPECIAL_\ptr
.set SPECIAL_\ptr, __special__
.set __special__, __special__ + 1
	.4byte \ptr
	.endm

.set __special__, 0
		.align 2
gSpecials:: @ 81DBA64
	def_special HealPlayerParty
	def_special SetCableClubWarp
	def_special DoCableClubWarp
	def_special ReturnFromLinkRoom
	def_special CleanupLinkRoomState
	def_special ExitLinkRoom
	def_special SetPlayerSecretBase
	def_special CheckPlayerHasSecretBase
	def_special EnterSecretBase
	def_special ClearAndLeaveSecretBase
	def_special MoveOutOfSecretBase
	def_special IsCurSecretBaseOwnedByAnotherPlayer
	def_special GetCurSecretBaseRegistrationValidity
	def_special ToggleCurSecretBaseRegistry
	def_special ShowSecretBaseDecorationMenu
	def_special ShowSecretBaseRegistryMenu
	def_special PrepSecretBaseBattleFlags
	def_special GetSecretBaseOwnerAndState
	def_special InitSecretBaseDecorationSprites
	def_special SetDecoration
	def_special GetObjectEventLocalIdByFlag
	def_special GetSecretBaseTypeInFrontOfPlayer
	def_special SetSecretBaseOwnerGfxId
	def_special PutAwayDecorationIteration
	def_special EnterNewlyCreatedSecretBase
	def_special SetBattledOwnerFromResult
	def_special DoSecretBasePCTurnOffEffect
	def_special RecordMixingPlayerSpotTriggered
	def_special TryBattleLinkup
	def_special TryTradeLinkup
	def_special TryRecordMixLinkup
	def_special ValidateMixingGameLanguage
	def_special CloseLink
	def_special ColosseumPlayerSpotTriggered
	def_special PlayerEnteredTradeSeat
	def_special nullsub_37
	def_special CableClubSaveGame
	def_special TryBerryBlenderLinkup
	def_special GetLinkPartnerNames
	def_special SpawnLinkPartnerObjectEvent
	def_special SavePlayerParty
	def_special LoadPlayerParty
	def_special ChooseHalfPartyForBattle
	def_special Script_ShowLinkTrainerCard
	def_special ObjectEventInteractionGetBerryTreeData
	def_special ObjectEventInteractionGetBerryName
	def_special ObjectEventInteractionGetBerryCountString
	def_special Bag_ChooseBerry
	def_special ObjectEventInteractionPlantBerryTree
	def_special ObjectEventInteractionPickBerryTree
	def_special ObjectEventInteractionRemoveBerryTree
	def_special ObjectEventInteractionWaterBerryTree
	def_special PlayerHasBerries
	def_special IsEnigmaBerryValid
	def_special GetTrainerBattleMode
	def_special ShowTrainerIntroSpeech
	def_special ShowTrainerCantBattleSpeech
	def_special GetTrainerFlag
	def_special EndTrainerApproach
	def_special SetUpTrainerEncounterMusic
	def_special ShouldTryRematchBattle
	def_special IsTrainerReadyForRematch
	def_special BattleSetup_StartRematchBattle
	def_special ShowPokemonStorageSystemPC
	def_special HasEnoughMonsForDoubleBattle
	def_special TurnOffTVScreen
	def_special DoTVShow
	def_special DoPokeNews
	def_special GetRandomActiveShowIdx
	def_special GetSelectedTVShow
	def_special InterviewBefore
	def_special InterviewAfter
	def_special IsLeadMonNicknamedOrNotEnglish
	def_special SetContestCategoryStringVarForInterview
	def_special GetNextActiveShowIfMassOutbreak
	def_special TV_IsScriptShowKindAlreadyInQueue
	def_special CheckForBigMovieOrEmergencyNewsOnTV
	def_special GetMomOrDadStringForTVMessage
	def_special ResetTVShowState
	def_special GetContestWinnerId
	def_special GetContestPlayerId
	def_special sub_80F8814
	def_special BufferContestWinnerTrainerName
	def_special BufferContestWinnerMonName
	def_special BufferContestTrainerAndMonNames
	def_special GetContestMonConditionRanking
	def_special SetContestTrainerGfxIds
	def_special TryEnterContestMon
	def_special sub_80F8970
	def_special SetLinkContestPlayerGfx
	def_special GetContestMonCondition
	def_special HasMonWonThisContestBefore
	def_special GiveMonContestRibbon
	def_special IsContestDebugActive
	def_special GiveMonArtistRibbon
	def_special TryContestGModeLinkup
	def_special SaveGame
	def_special DoWateringBerryTreeAnim
	def_special ShowEasyChatScreen
	def_special ShowEasyChatProfile
	def_special ScrSpecial_GetCurrentMauvilleMan
	def_special ScrSpecial_HasBardSongBeenChanged
	def_special ScrSpecial_SaveBardSongLyrics
	def_special ScrSpecial_GetHipsterSpokenFlag
	def_special ScrSpecial_SetHipsterSpokenFlag
	def_special ScrSpecial_HipsterTeachWord
	def_special ScrSpecial_PlayBardSong
	def_special ScrSpecial_SetMauvilleOldManObjEventGfx
	def_special ScrSpecial_GenerateGiddyLine
	def_special ScrSpecial_GiddyShouldTellAnotherTale
	def_special ScrSpecial_StorytellerGetFreeStorySlot
	def_special ScrSpecial_StorytellerDisplayStory
	def_special ScrSpecial_StorytellerStoryListMenu
	def_special ScrSpecial_StorytellerUpdateStat
	def_special ScrSpecial_StorytellerInitializeRandomStat
	def_special ScrSpecial_HasStorytellerAlreadyRecorded
	def_special ScrSpecial_TraderMenuGetDecoration
	def_special ScrSpecial_GetTraderTradedFlag
	def_special ScrSpecial_DoesPlayerHaveNoDecorations
	def_special ScrSpecial_IsDecorationFull
	def_special ScrSpecial_TraderMenuGiveDecoration
	def_special ScrSpecial_TraderDoDecorationTrade
	def_special GetSeedotSizeRecordInfo
	def_special CompareSeedotSize
	def_special GetLotadSizeRecordInfo
	def_special CompareLotadSize
	def_special TryPutNameRaterShowOnTheAir
	def_special BufferMonNickname
	def_special IsMonOTIDNotPlayers
	def_special BufferTrendyPhraseString
	def_special TrendyPhraseIsOld
	def_special BufferDeepLinkPhrase
	def_special GetDewfordHallPaintingNameIndex
	def_special SwapRegisteredBike
	def_special CalculatePlayerPartyCount
	def_special CountPartyNonEggMons
	def_special CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
	def_special ShouldReadyContestArtist
	def_special SaveMuseumContestPainting
	def_special DoesContestCategoryHaveWinner
	def_special CountPlayerContestPaintings
	def_special ShowContestWinnerPainting
	def_special MauvilleGymSetDefaultBarriers
	def_special MauvilleGymPressSwitch
	def_special ShowFieldMessageStringVar4
	def_special DrawWholeMapView
	def_special StorePlayerCoordsInVars
	def_special MauvilleGymDeactivatePuzzle
	def_special PetalburgGymSlideOpenRoomDoors
	def_special PetalburgGymUnlockRoomDoors
	def_special GetPlayerTrainerIdOnesDigit
	def_special GetPlayerBigGuyGirlString
	def_special GetRivalSonDaughterString
	def_special SetHiddenItemFlag
	def_special CableCarWarp
	def_special CableCar
	def_special Overworld_PlaySpecialMapMusic
	def_special StartWallClock
	def_special Special_ViewWallClock
	def_special ChooseStarter
	def_special StartWallyTutorialBattle
	def_special ChangePokemonNickname
	def_special ChoosePartyMon
	def_special GetFirstFreePokeblockSlot
	def_special DoBerryBlending
	def_special PlayRoulette
	def_special IsFanClubMemberFanOfPlayer
	def_special GetNumFansOfPlayerInTrainerFanClub
	def_special BufferFanClubTrainerName
	def_special TryLoseFansFromPlayTimeAfterLinkBattle
	def_special TryLoseFansFromPlayTime
	def_special SetPlayerGotFirstFans
	def_special UpdateTrainerFanClubGameClear
	def_special Script_TryGainNewFanFromCounter
	def_special RockSmashWildEncounter
	def_special GabbyAndTyGetBattleNum
	def_special GabbyAndTyAfterInterview
	def_special GabbyAndTyBeforeInterview
	def_special DoTVShowInSearchOfTrainers
	def_special IsTVShowInSearchOfTrainersAiring
	def_special GabbyAndTyGetLastQuote
	def_special GabbyAndTyGetLastBattleTrivia
	def_special GabbyAndTySetScriptVarsToObjectEventLocalIds
	def_special GetBattleOutcome
	def_special GetDaycareMonNicknames
	def_special GetDaycareState
	def_special RejectEggFromDayCare
	def_special GiveEggFromDaycare
	def_special SetDaycareCompatibilityString
	def_special GetSelectedMonNicknameAndSpecies
	def_special StoreSelectedPokemonInDaycare
	def_special ChooseSendDaycareMon
	def_special ShowDaycareLevelMenu
	def_special GetNumLevelsGainedFromDaycare
	def_special GetDaycareCost
	def_special TakePokemonFromDaycare
	def_special ScriptHatchMon
	def_special EggHatch
	def_special CheckDaycareMonReceivedMail
	def_special ShowLinkBattleRecords
	def_special IsEnoughForCostInVar0x8005
	def_special SubtractMoneyFromVar0x8005
	def_special TryFieldPoisonWhiteOut
	def_special SetCB2WhiteOut
	def_special RotatingGate_InitPuzzle
	def_special RotatingGate_InitPuzzleAndGraphics
	def_special SetSSTidalFlag
	def_special ResetSSTidalFlag
	def_special EnterSafariMode
	def_special ExitSafariMode
	def_special GetPokeblockFeederInFront
	def_special OpenPokeblockCaseOnFeeder
	def_special IsMirageIslandPresent
	def_special UpdateShoalTideFlag
	def_special InitBirchState
	def_special ScriptGetPokedexInfo
	def_special ShowPokedexRatingMessage
	def_special DoPCTurnOnEffect
	def_special DoPCTurnOffEffect
	def_special SetDeptStoreFloor
	def_special DoLotteryCornerComputerEffect
	def_special EndLotteryCornerComputerEffect
	def_special ChooseMonForMoveRelearner
	def_special MoveDeleterChooseMoveToForget
	def_special MoveDeleterForgetMove
	def_special BufferMoveDeleterNicknameAndMove
	def_special GetNumMovesSelectedMonHas
	def_special TeachMoveRelearnerMove
	def_special GetRecordedCyclingRoadResults
	def_special Special_BeginCyclingRoadChallenge
	def_special GetPlayerAvatarBike
	def_special FinishCyclingRoadChallenge
	def_special UpdateCyclingRoadState
	def_special GetLeadMonFriendshipScore
	def_special CallFrontierUtilFunc
	def_special CallBattleTowerFunc
	def_special CallBattleDomeFunction
	def_special CallBattlePalaceFunction
	def_special CopyEReaderTrainerGreeting
	def_special DoSpecialTrainerBattle
	def_special CallBattleArenaFunction
	def_special CallBattleFactoryFunction
	def_special CallBattlePikeFunction
	def_special CallBattlePyramidFunction
	def_special StopMapMusic
	def_special CallVerdanturfTentFunction
	def_special CallFallarborTentFunction
	def_special CallSlateportTentFunction
	def_special ChoosePartyForBattleFrontier
	def_special ValidateEReaderTrainer
	def_special GetBestBattleTowerStreak
	def_special ReducePlayerPartyToSelectedMons
	def_special BedroomPC
	def_special PlayerPC
	def_special FieldShowRegionMap
	def_special GetInGameTradeSpeciesInfo
	def_special CreateInGameTradePokemon
	def_special DoInGameTradeScene
	def_special GetTradeSpecies
	def_special GetWeekCount
	def_special RetrieveLotteryNumber
	def_special PickLotteryCornerTicket
	def_special ShowBerryBlenderRecordWindow
	def_special ResetTrickHouseNuggetFlag
	def_special SetTrickHouseNuggetFlag
	def_special ScriptMenu_CreatePCMultichoice
	def_special AccessHallOfFamePC
	def_special Special_ShowDiploma
	def_special CheckLeadMonCool
	def_special CheckLeadMonBeauty
	def_special CheckLeadMonCute
	def_special CheckLeadMonSmart
	def_special CheckLeadMonTough
	def_special LookThroughPorthole
	def_special DoSoftReset
	def_special GameClear
	def_special MoveElevator
	def_special ShowGlassWorkshopMenu
	def_special SpawnCameraObject
	def_special RemoveCameraObject
	def_special GetPokeblockNameByMonNature
	def_special GetSecretBaseNearbyMapName
	def_special CheckRelicanthWailord
	def_special ShouldDoBrailleRegirockEffectOld
	def_special DoOrbEffect
	def_special FadeOutOrbEffect
	def_special WaitWeather
	def_special BufferEReaderTrainerName
	def_special GetSlotMachineId
	def_special GetPlayerFacingDirection
	def_special FoundAbandonedShipRoom1Key
	def_special FoundAbandonedShipRoom2Key
	def_special FoundAbandonedShipRoom4Key
	def_special FoundAbandonedShipRoom6Key
	def_special LeadMonHasEffortRibbon
	def_special GiveLeadMonEffortRibbon
	def_special Special_AreLeadMonEVsMaxedOut
	def_special Script_FacePlayer
	def_special Script_ClearHeldMovement
	def_special InitRoamer
	def_special TryUpdateRusturfTunnelState
	def_special IsGrassTypeInParty
	def_special DoContestHallWarp
	def_special PutZigzagoonInPlayerParty
	def_special IsStarterInParty
	def_special CopyCurSecretBaseOwnerName_StrVar1
	def_special ScriptCheckFreePokemonStorageSpace
	def_special DoSealedChamberShakingEffect1
	def_special ShowDeptStoreElevatorFloorSelect
	def_special InteractWithShieldOrTVDecoration
	def_special IsPokerusInParty
	def_special SetSootopolisGymCrackedIceMetatiles
	def_special ShakeCamera
	def_special StartGroudonKyogreBattle
	def_special BattleSetup_StartLegendaryBattle
	def_special StartRegiBattle
	def_special SetUpTrainerMovement
	def_special DoSealedChamberShakingEffect2
	def_special FoundBlackGlasses
	def_special StartDroughtWeatherBlend
	def_special DoDiveWarp
	def_special DoFallWarp
	def_special ShowContestEntryMonPic
	def_special HideContestEntryMonPic
	def_special SetEReaderTrainerGfxId
	def_special BattleSetup_StartLatiBattle
	def_special SetRoute119Weather
	def_special SetRoute123Weather
	def_special GetContestMultiplayerId
	def_special ScriptGetPartyMonSpecies
	def_special IsSelectedMonEgg
	def_special TryInitBattleTowerAwardManObjectEvent
	def_special MoveOutOfSecretBaseFromOutside
	def_special LoadPlayerBag
	def_special Script_FadeOutMapMusic
	def_special SetPacifidlogTMReceivedDay
	def_special GetDaysUntilPacifidlogTMAvailable
	def_special HasAllHoennMons
	def_special MonOTNameNotPlayer
	def_special BufferLottoTicketNumber
	def_special TryHideBattleTowerReporter
	def_special DoesPartyHaveEnigmaBerry
	def_special GenerateContestRand
	def_special SetChampionSaveWarp
	def_special TryPutTreasureInvestigatorsOnAir
	def_special TryPutLotteryWinnerReportOnAir
	def_special TrySetUpTrainerFanClubSpecial
	def_special ShouldHideFanClubInterviewer
	def_special ShowGlassWorkshopMenu
	def_special PutFanClubSpecialOnTheAir
	def_special IncrementDailyPlantedBerries
	def_special IncrementDailyPickedBerries
	def_special InitSecretBaseVars
	def_special CheckInteractedWithFriendsSandOrnament
	def_special DeclinedSecretBaseBattle
	def_special DrewSecretBaseBattle
	def_special WonSecretBaseBattle
	def_special LostSecretBaseBattle
	def_special CheckInteractedWithFriendsDollDecor
	def_special CheckInteractedWithFriendsCushionDecor
	def_special CheckInteractedWithFriendsFurnitureBottom
	def_special CheckInteractedWithFriendsFurnitureMiddle
	def_special CheckInteractedWithFriendsFurnitureTop
	def_special CheckInteractedWithFriendsPosterDecor
	def_special SetLilycoveLadyGfx
	def_special Script_GetLilycoveLadyId
	def_special GetFavorLadyState
	def_special BufferFavorLadyRequest
	def_special HasAnotherPlayerGivenFavorLadyItem
	def_special BufferFavorLadyItemName
	def_special BufferFavorLadyPlayerName
	def_special DidFavorLadyLikeItem
	def_special Script_FavorLadyOpenBagMenu
	def_special Script_DoesFavorLadyLikeItem
	def_special IsFavorLadyThresholdMet
	def_special FavorLadyGetPrize
	def_special SetFavorLadyState_Complete
	def_special GetQuizLadyState
	def_special GetQuizAuthor
	def_special IsQuizLadyWaitingForChallenger
	def_special QuizLadyShowQuizQuestion
	def_special QuizLadyGetPlayerAnswer
	def_special IsQuizAnswerCorrect
	def_special BufferQuizPrizeItem
	def_special SetQuizLadyState_Complete
	def_special BufferQuizAuthorNameAndCheckIfLady
	def_special SetQuizLadyState_GivePrize
	def_special ClearQuizLadyPlayerAnswer
	def_special Script_QuizLadyOpenBagMenu
	def_special ClearQuizLadyQuestionAndAnswer
	def_special QuizLadySetCustomQuestion
	def_special QuizLadyTakePrizeForCustomQuiz
	def_special GetMysteryEventCardVal
	def_special QuizLadyRecordCustomQuizData
	def_special QuizLadySetWaitingForChallenger
	def_special BufferQuizCorrectAnswer
	def_special BufferQuizPrizeName
	def_special QuizLadyPickNewQuestion
	def_special ShouldContestLadyShowGoOnAir
	def_special HasPlayerGivenContestLadyPokeblock
	def_special Script_BufferContestLadyCategoryAndMonName
	def_special OpenPokeblockCaseForContestLady
	def_special SetContestLadyGivenPokeblock
	def_special GetContestLadyMonSpecies
	def_special GetContestLadyCategory
	def_special PutLilycoveContestLadyShowOnTheAir
	def_special CloseBattlePikeCurtain
	def_special CallApprenticeFunction
	def_special ShouldTryGetTrainerScript
	def_special ShowMapNamePopup
	def_special ShowMapNamePopup
	def_special DoMirageTowerCeilingCrumble
	def_special SetMirageTowerVisibility
	def_special StartPlayerDescendMirageTower
	def_special BufferTMHMMoveName
	def_special IsWirelessAdapterConnected
	def_special TryBecomeLinkLeader
	def_special TryJoinLinkGroup
	def_special RunUnionRoom
	def_special ShowWirelessCommunicationScreen
	def_special InitUnionRoom
	def_special BufferUnionRoomPlayerName
	def_special sub_801DC20
	def_special ChooseMonForWirelessMinigame
	def_special Script_ResetUnionRoomTrade
	def_special IsBadEggInParty
	def_special ValidateReceivedWonderCard
	def_special HasAtLeastOneBerry
	def_special IsPokemonJumpSpeciesInParty
	def_special ShowPokemonJumpRecords
	def_special IsDodrioInParty
	def_special ShowDodrioBerryPickingRecords
	def_special OffsetCameraForBattle
	def_special GetDeptStoreDefaultFloorChoice
	def_special BufferVarsForIVRater
	def_special LinkContestWaitForConnection
	def_special GetWirelessCommType
	def_special LinkContestTryShowWirelessIndicator
	def_special LinkContestTryHideWirelessIndicator
	def_special IsWirelessContest
	def_special ShowRankingHallRecordsWindow
	def_special ScrollRankingHallRecordsWindow
	def_special ShowFrontierManiacMessage
	def_special IsContestWithRSPlayer
	def_special ClearLinkContestFlags
	def_special TryContestEModeLinkup
	def_special ShowScrollableMultichoice
	def_special sub_813A630
	def_special BufferBattleTowerElevatorFloors
	def_special TryStoreHeldItemsInPyramidBag
	def_special ChooseItemsToTossFromPyramidBag
	def_special DoBattlePyramidMonsHaveHeldItem
	def_special BattlePyramidChooseMonHeldItems
	def_special SetBattleTowerLinkPlayerGfx
	def_special ShowNatureGirlMessage
	def_special ShowBattlePointsWindow
	def_special UpdateBattlePointsWindow
	def_special CloseBattlePointsWindow
	def_special GiveFrontierBattlePoints
	def_special TakeFrontierBattlePoints
	def_special GetFrontierBattlePoints
	def_special ShowFrontierExchangeCornerItemIconWindow
	def_special CloseFrontierExchangeCornerItemIconWindow
	def_special DisplayBerryPowderVendorMenu
	def_special RemoveBerryPowderVendorMenu
	def_special HasEnoughBerryPowder
	def_special TakeBerryPowder
	def_special PrintPlayerBerryPowderAmount
	def_special ShowFrontierGamblerLookingMessage
	def_special ShowFrontierGamblerGoMessage
	def_special Script_DoRayquazaScene
	def_special OpenPokenavForTutorial
	def_special ScriptMenu_CreateStartMenuForPokenavTutorial
	def_special CountPlayerTrainerStars
	def_special BufferBattleFrontierTutorMoveName
	def_special CloseBattleFrontierTutorWindow
	def_special sub_813ADD4
	def_special ChooseMonForMoveTutor
	def_special GetBattleFrontierTutorMoveIndex
	def_special sub_813AF48
	def_special DoDeoxysRockInteraction
	def_special SetDeoxysRockPalette
	def_special CreateObedientEnemyMon
	def_special StartMirageTowerDisintegration
	def_special StartMirageTowerShake
	def_special StartMirageTowerFossilFallAndSink
	def_special ChangeBoxPokemonNickname
	def_special GetPCBoxToSendMon
	def_special ShouldShowBoxWasFullMessage
	def_special SetMatchCallRegisteredFlag
	def_special DoDomeConfetti
	def_special CreateAbnormalWeatherEvent
	def_special GetAbnormalWeatherMapNameAndType
	def_special GetMartEmployeeObjectEventId
	def_special SaveForBattleTowerLink
	def_special Unused_SetWeatherSunny
	def_special SetUnlockedPokedexFlags
	def_special IsTrainerRegistered
	def_special ShouldDoBrailleRegicePuzzle
	def_special EnableNationalPokedex
	def_special ScriptMenu_CreateLilycoveSSTidalMultichoice
	def_special GetLilycoveSSTidalSelection
	def_special TurnOnTVScreen
	def_special SetMewAboveGrass
	def_special ShouldDistributeEonTicket
	def_special LinkRetireStatusWithBattleTowerPartner
	def_special sub_813B534
	def_special CallTrainerHillFunction
	def_special Script_DoRayquazaScene @ Listed twice
	def_special LoopWingFlapSE
	def_special DestroyMewEmergingGrassSprite
	def_special ShowBerryCrushRankings
	def_special TryBufferWaldaPhrase
	def_special DoWaldaNamingScreen
	def_special TryGetWallpaperWithWaldaPhrase
	def_special PlayerNotAtTrainerHillEntrance
	def_special GetBattlePyramidHint
	def_special LoadLinkContestPlayerPalettes
	def_special ShowTrainerHillRecords
	def_special PlayerFaceTrainerAfterBattle
	def_special ResetHealLocationFromDewford
	def_special IsLastMonThatKnowsSurf
	def_special CountPartyAliveNonEggMons
	def_special TryPrepareSecondApproachingTrainer
	def_special RemoveRecordsWindow
	def_special CloseDeptStoreElevatorWindow
	def_special TrySetBattleTowerLinkType


code:
gText_AbnormalWeatherEnded_Rain:: @ 8273656
	.string "The massive downpour appears to\n"
	.string "have stopped…$"

gText_AbnormalWeatherEnded_Sun:: @ 8273684
	.string "The intense sunshine appears to\n"
	.string "have subsided…$"

repo_name: Lunos/pokeemerald

license: mit