Merge pull request #86 from PikalaxALT/special_ptr_table

Decompile special pointers
This commit is contained in:
Diegoisawesome
2017-10-20 00:24:06 -05:00
committed by GitHub
5 changed files with 542 additions and 6 deletions

View File

@@ -241,14 +241,14 @@
@ Calls a special function; that is, a piece of ASM code designed for use by scripts and listed in a table of pointers. @ Calls a special function; that is, a piece of ASM code designed for use by scripts and listed in a table of pointers.
.macro special function .macro special function
.byte 0x25 .byte 0x25
.2byte \function .2byte SPECIAL_\function
.endm .endm
@ Calls a special function. That function's output (if any) will be written to the variable you specify. @ Calls a special function. That function's output (if any) will be written to the variable you specify.
.macro specialval output, function .macro specialval output, function
.byte 0x26 .byte 0x26
.2byte \output .2byte \output
.2byte \function .2byte SPECIAL_\function
.endm .endm
@ Blocks script execution until a command or ASM code manually unblocks it. Generally used with specific commands and specials. If this command runs, and a subsequent command or piece of ASM does not unblock state, the script will remain blocked indefinitely (essentially a hang). @ Blocks script execution until a command or ASM code manually unblocks it. Generally used with specific commands and specials. If this command runs, and a subsequent command or piece of ASM does not unblock state, the script will remain blocked indefinitely (essentially a hang).

View File

@@ -12,8 +12,7 @@ gScriptCmdTableEnd:: @ 81DBA08
gSpecialVars:: @ 81DBA0C gSpecialVars:: @ 81DBA0C
.incbin "baserom.gba", 0x1dba0c, 0x58 .incbin "baserom.gba", 0x1dba0c, 0x58
gSpecials:: @ 81DBA64 .include "data/specials.inc"
.incbin "baserom.gba", 0x1dba64, 0x83c
gStdScripts:: @ 81DC2A0 gStdScripts:: @ 81DC2A0
.incbin "baserom.gba", 0x1dc2a0, 0x2c .incbin "baserom.gba", 0x1dc2a0, 0x2c

537
data/specials.inc Normal file
View File

@@ -0,0 +1,537 @@
.macro def_special ptr
.set SPECIAL_\ptr, __special__
.set __special__, __special__ + 1
.4byte \ptr
.endm
.set __special__, 0
.align 2
gSpecials:: @ 81DBA64
def_special sp000_heal_pokemon
def_special sub_809D2BC
def_special sub_80AF948
def_special sub_80AF9F8
def_special sub_80B36EC
def_special sub_80B371C
def_special sub_80E8E18
def_special sub_80E8BC8
def_special sub_80E9068
def_special sub_80E9A90
def_special sub_80E9AC0
def_special sub_80E9744
def_special sub_80E9BDC
def_special sub_80E9C2C
def_special sub_80E9C74
def_special sub_80E9C88
def_special sub_80EA2E4
def_special sub_80EA354
def_special sub_80E933C
def_special sub_8127E18
def_special sub_81297AC
def_special sub_80E8C98
def_special sub_80E95D4
def_special sub_8129708
def_special sub_80E91F8
def_special sub_80EA30C
def_special sub_80FA57C
def_special sub_80E6BE8
def_special sub_80B2DA4
def_special sub_80B2E4C
def_special sub_80B2E74
def_special sub_80B2EA8
def_special sub_80097E8
def_special sub_80B3968
def_special sub_80B3924
def_special nullsub_37
def_special sub_80B3254
def_special sub_80B2FD8
def_special sub_8138240
def_special SpawnLinkPartnerFieldObject
def_special copy_player_party_to_sav1
def_special copy_player_party_from_sav1
def_special sub_80F9438
def_special sp02A_crash_sound
def_special FieldObjectInteractionGetBerryTreeData
def_special FieldObjectInteractionGetBerryName
def_special FieldObjectInteractionGetBerryCountString
def_special Bag_ChooseBerry
def_special FieldObjectInteractionPlantBerryTree
def_special FieldObjectInteractionPickBerryTree
def_special FieldObjectInteractionRemoveBerryTree
def_special FieldObjectInteractionWaterBerryTree
def_special PlayerHasBerries
def_special IsEnigmaBerryValid
def_special sub_80B170C
def_special sub_80B1A14
def_special special_trainer_unable_to_battle
def_special check_trainer_flag
def_special sub_80B45AC
def_special SetUpTrainerEncounterMusic
def_special sub_80B226C
def_special sub_80B22A0
def_special sub_80B19EC
def_special sub_80C7578
def_special sub_80F92F8
def_special TurnOffTVScreen
def_special DoTVShow
def_special DoPokeNews
def_special special_0x44
def_special special_0x45
def_special InterviewBefore
def_special InterviewAfter
def_special sub_80EF8F8
def_special SetContestCategoryStringVarForInterview
def_special special_0x4a
def_special TV_IsScriptShowKindAlreadyInQueue
def_special CheckForBigMovieOrEmergencyNewsOnTV
def_special GetMomOrDadStringForTVMessage
def_special ResetTVShowState
def_special sub_80F831C
def_special sub_80F84B0
def_special sub_80F8814
def_special sub_80F834C
def_special sub_80F8390
def_special sub_80F8850
def_special sub_80F82B4
def_special sub_80F87D8
def_special sub_80F7F30
def_special sub_80F8970
def_special sub_80F8AFC
def_special sub_80F82FC
def_special sub_80F7F7C
def_special sub_80F7FFC
def_special sub_80F8D24
def_special sub_80F8C7C
def_special sub_80B3000
def_special sub_809FF80
def_special sub_80FAFF8
def_special easy_chat_input_maybe
def_special sub_811EECC
def_special sub_81201DC
def_special sub_81201F4
def_special sub_8120210
def_special sub_8120358
def_special sub_8120374
def_special sub_812038C
def_special sub_8120340
def_special sub_8120B5C
def_special sub_81203FC
def_special sub_81203C4
def_special sub_81213B0
def_special sub_812139C
def_special sub_8121388
def_special sub_81213D8
def_special sub_8121450
def_special sub_8121424
def_special sub_8133EC0
def_special sub_8133CD8
def_special sub_8133CF4
def_special sub_8133D2C
def_special sub_8133D8C
def_special sub_8133E38
def_special GetSeedotSizeRecordInfo
def_special CompareSeedotSize
def_special GetLotadSizeRecordInfo
def_special CompareLotadSize
def_special TV_PutNameRaterShowOnTheAirIfNicnkameChanged
def_special TV_CopyNicknameToStringVar1AndEnsureTerminated
def_special TV_CheckMonOTIDEqualsPlayerID
def_special sub_8122998
def_special sub_81229C8
def_special sub_811EF6C
def_special sub_8122A30
def_special sub_80D6EDC
def_special CalculatePlayerPartyCount
def_special sub_80C7008
def_special sub_80C70AC
def_special sub_80F88E8
def_special sub_80F88DC
def_special sub_80F8864
def_special sub_80F8940
def_special ShowContestWinner
def_special sub_8138540
def_special sub_81384F0
def_special sub_8138AC0
def_special DrawWholeMapView
def_special sub_8138AD0
def_special sub_8138750
def_special sub_81388E4
def_special sub_8138AA4
def_special sub_8138AF0
def_special sub_8138B10
def_special sub_8138B48
def_special sub_8138BC8
def_special sub_8138B8C
def_special sub_814FC9C
def_special sub_8085784
def_special Special_StartWallClock
def_special Special_ViewWallClock
def_special sub_80B1138
def_special sub_80B086C
def_special ChangePokemonNickname
def_special sub_81B94B0
def_special sub_8136EF4
def_special sub_807FA80
def_special sub_8142BC8
def_special sub_813BD60
def_special sub_813BCA8
def_special sub_813BDB4
def_special sub_813BA30
def_special sub_813BCE8
def_special sub_813BF60
def_special sub_813BA60
def_special sub_813BF7C
def_special rock_smash_wild_pokemon_encounter
def_special GabbyAndTyGetBattleNum
def_special GabbyAndTyAfterInterview
def_special GabbyAndTyBeforeInterview
def_special DoTVShowInSearchOfTrainers
def_special IsTVShowInSearchOfTrainersAiring
def_special GabbyAndTyGetLastQuote
def_special GabbyAndTyGetLastBattleTrivia
def_special GabbyAndTySetScriptVarsToFieldObjectLocalIds
def_special sub_8138B80
def_special sp0B5_daycare
def_special sp0B6_daycare
def_special sub_8070728
def_special sp0B8_daycare
def_special sp0B9_daycare_relationship_comment
def_special sub_8070C58
def_special daycare_send_selected_pokemon
def_special sub_8071330
def_special sub_80712C0
def_special sub_806FF30
def_special sub_806FED8
def_special sub_806FDC4
def_special ScriptHatchMon
def_special EggHatch
def_special sub_8071614
def_special sub_813C4BC
def_special IsEnoughForCostInVar0x8005
def_special SubtractMoneyFromVar0x8005
def_special sub_80F972C
def_special sp0C8_whiteout_maybe
def_special sub_80FBE90
def_special sub_80FBED0
def_special sub_8137F90
def_special sub_8137FB0
def_special EnterSafariMode
def_special ExitSafariMode
def_special GetPokeblockFeederInFront
def_special sub_8135908
def_special sub_813793C
def_special sub_8137988
def_special sub_8137A0C
def_special sub_8137A4C
def_special sub_8137C10
def_special sp0D9_ComputerRelated
def_special sub_8138E20
def_special sub_8139994
def_special sub_8138EC0
def_special sub_8138FAC
def_special sub_81B951C
def_special sub_81B968C
def_special sub_81B9770
def_special sub_81B9718
def_special sub_81B96D0
def_special sub_8160638
def_special sub_8137EFC
def_special sub_8137D0C
def_special sp0E3_walkrun_bitfield_interpretation
def_special sub_8137E6C
def_special sub_8137F44
def_special sub_8138C04
def_special sub_81A1780
def_special sub_8161F74
def_special sub_818E9AC
def_special sub_8195960
def_special sub_8165360
def_special sub_8163AC4
def_special sub_81A5238
def_special sub_81A5E74
def_special sub_81A703C
def_special sub_81A8E7C
def_special StopMapMusic
def_special sub_81B99B4
def_special sub_81B9B80
def_special sub_81B9D08
def_special sub_80F9490
def_special sub_81652B4
def_special sub_8139228
def_special sub_80F94E8
def_special sub_816AE58
def_special sub_816AE98
def_special sub_8138C94
def_special sub_807E73C
def_special sub_807EA10
def_special sub_807F0E4
def_special sub_807E9D4
def_special sub_8138BDC
def_special RetrieveLotteryNumber
def_special PickLotteryCornerTicket
def_special ShowBerryBlenderRecordWindow
def_special sub_8138FEC
def_special sub_8138FD4
def_special sp109_CreatePCMenu
def_special sub_8137C28
def_special sub_8137CB4
def_special sub_8139004
def_special sub_8139030
def_special sub_813905C
def_special sub_8139088
def_special sub_81390B4
def_special sub_80FB7A4
def_special DoSoftReset
def_special sub_8137734
def_special sub_8139A78
def_special nullsub_55
def_special SpawnScriptFieldObject
def_special RemoveScriptFieldObject
def_special sub_81391D0
def_special sub_8139200
def_special CheckRelicanthWailord
def_special ShouldDoBrailleStrengthEffectOld
def_special sub_80B0534
def_special sub_80B058C
def_special sub_81379F8
def_special sub_8139238
def_special sub_8139248
def_special player_get_direction_lower_nybble
def_special sub_81392AC
def_special sub_81392D4
def_special sub_81392F8
def_special sub_8139320
def_special sub_8139348
def_special sub_8139370
def_special sub_81393C8
def_special sub_8098574
def_special sub_809859C
def_special InitRoamer
def_special sub_81393FC
def_special sub_81390E0
def_special sub_80AFC60
def_special sub_813946C
def_special sub_81394D8
def_special sub_80E980C
def_special sub_8139530
def_special DoSealedChamberShakingEffect1
def_special sub_8139B60
def_special sub_80FAC78
def_special sub_8139540
def_special sub_809E1C8
def_special sub_8139560
def_special sub_80B0A18
def_special sub_80B0934
def_special sub_80B0A74
def_special sub_80B16D8
def_special DoSealedChamberShakingEffect2
def_special sub_8139634
def_special sub_80AC81C
def_special sp13E_warp_to_last_warp
def_special sp13F_fall_to_last_warp
def_special sub_80F8D28
def_special sub_80F8EB8
def_special sub_8162794
def_special sub_80B08EC
def_special sub_8139648
def_special sub_8139668
def_special sub_80F8FA0
def_special sub_81396E0
def_special sub_81B98DC
def_special nullsub_54
def_special sub_80E9B70
def_special copy_bags_and_unk_data_from_save_blocks
def_special sub_80B05B4
def_special sub_8139754
def_special sub_813970C
def_special sub_80C08E4
def_special sub_8139770
def_special sub_81397C4
def_special sub_81653CC
def_special sub_80F9370
def_special sub_80F8FE8
def_special sub_81AFDD0
def_special sub_80EDCE8
def_special sub_80EE2CC
def_special sub_80EE72C
def_special sub_80EE7C0
def_special nullsub_55
def_special PutFanClubSpecialOnTheAir
def_special sub_80EED10
def_special sub_80EED34
def_special sub_80EB1AC
def_special sub_80EBE7C
def_special sub_80EB300
def_special sub_80EB438
def_special sub_80EB368
def_special sub_80EB3D0
def_special sub_80EB290
def_special sub_80EB2C8
def_special sub_80EB56C
def_special sub_80EB9E0
def_special sub_80EBB28
def_special sub_80EB498
def_special sub_818D9C0
def_special sub_818DAEC
def_special sub_818DBE8
def_special sub_818DC2C
def_special sub_818DC60
def_special sub_818DCC8
def_special sub_818DD14
def_special sub_818DD54
def_special sub_818DD78
def_special sub_818DE44
def_special sub_818DE5C
def_special sub_818DEA0
def_special sub_818DEDC
def_special sub_818E038
def_special sub_818E06C
def_special sub_818E2D8
def_special sub_811A858
def_special sub_818E2FC
def_special sub_818E308
def_special sub_818E358
def_special sub_818E37C
def_special sub_818E298
def_special sub_818E39C
def_special sub_818E3BC
def_special sub_818E3E0
def_special sub_818E430
def_special sub_818E47C
def_special sub_818E490
def_special sub_813986C
def_special sub_818E4A4
def_special sub_818E510
def_special sub_818E538
def_special sub_818E274
def_special sub_818E3EC
def_special sub_818E8E0
def_special sub_818E8B4
def_special sub_818E914
def_special sub_818E92C
def_special sub_818E940
def_special sub_818E960
def_special sub_818E990
def_special PutLilycoveContestLadyShowOnTheAir
def_special sub_813B880
def_special sub_81A085C
def_special CheckIfMultipleTrainersWantBattle
def_special AddMapNamePopUpWindowTask
def_special AddMapNamePopUpWindowTask
def_special sub_81BE994
def_special sub_81BE79C
def_special sub_81BE7F4
def_special sub_81398C0
def_special sub_80093CC
def_special BerryBlenderLinkBecomeLeader
def_special BerryBlenderLinkJoinGroup
def_special UnionRoomSpecial
def_special sub_801A42C
def_special sub_8016934
def_special sp182_move_string
def_special sub_801DC20
def_special sub_81B8958
def_special sub_8018090
def_special sub_813990C
def_special sub_801B27C
def_special HasAtLeastOneBerry
def_special sub_802C920
def_special sub_802E3C4
def_special sub_8027A5C
def_special sub_8027AAC
def_special sub_8139980
def_special sub_81399F4
def_special sub_8139D98
def_special sub_80F905C
def_special sub_800B518
def_special sub_80F90DC
def_special sub_80F910C
def_special sub_80F9160
def_special sub_81A4AA0
def_special sub_81A4AE8
def_special sub_8139F20
def_special sub_80F9134
def_special sub_80F9154
def_special sub_80B3028
def_special sub_813A128
def_special sub_813A630
def_special sub_813A080
def_special sub_81C6A94
def_special sub_81C4F24
def_special sub_81B95E0
def_special sub_81B9620
def_special sub_813A76C
def_special sub_813A7B8
def_special sub_813A958
def_special sub_813A8FC
def_special sub_813A988
def_special sub_813A9D0
def_special sub_813A9A4
def_special sub_813AA04
def_special sub_813AA18
def_special sub_813AA44
def_special sub_80248B0
def_special sub_8024918
def_special sub_80246D4
def_special sub_802477C
def_special sub_802488C
def_special sub_813A820
def_special sub_813A854
def_special sub_813B7D8
def_special sub_81C72A4
def_special sp106_CreateStartMenu
def_special sub_80C2E40
def_special sub_813AC7C
def_special sub_813ADB8
def_special sub_813ADD4
def_special sub_81B892C
def_special sub_813AEB4
def_special sub_813AF48
def_special sub_813AFC8
def_special sub_813B1D0
def_special DoScriptedWildBattle
def_special sub_81BEB54
def_special sub_81BEB68
def_special sub_81BEB7C
def_special ChangeBoxPokemonNickname
def_special get_unknown_box_id
def_special sub_813B21C
def_special sub_81D1C20
def_special sub_8175280
def_special sub_813B2E4
def_special sub_813B374
def_special sub_813B490
def_special sub_80A08CC
def_special sub_813B484
def_special sub_81AFDA0
def_special sub_813B4E0
def_special ShouldDoBrailleRegicePuzzle
def_special EnableNationalPokedex
def_special sub_80E2548
def_special sub_80E2878
def_special TurnOnTVScreen
def_special sub_81D4A90
def_special sub_813B514
def_special sub_813B568
def_special sub_813B534
def_special sp194_trainer_tower
def_special sub_813B7D8
def_special sub_813B80C
def_special sub_81D4BEC
def_special sub_80224D0
def_special sub_81D99BC
def_special walda_maybe
def_special sub_81D9AC4
def_special sub_8139ED0
def_special sub_813B968
def_special sub_80F8B94
def_special sub_813C904
def_special sub_80B4808
def_special sub_813B9A0
def_special sub_81B9918
def_special sub_80722E0
def_special sub_80B45D0
def_special sub_813C5A0
def_special sub_8139C10
def_special sub_80B3BC4

View File

@@ -462,7 +462,7 @@ static void VBlankCB_EggHatch(void)
TransferPlttBuffer(); TransferPlttBuffer();
} }
static void EggHatch(void) void EggHatch(void)
{ {
ScriptContext2_Enable(); ScriptContext2_Enable();
CreateTask(Task_EggHatch, 10); CreateTask(Task_EggHatch, 10);

View File

@@ -139,7 +139,7 @@ static void ClearAllPokeblockFeeders(void)
memset(sPokeblockFeeders, 0, sizeof(sPokeblockFeeders)); memset(sPokeblockFeeders, 0, sizeof(sPokeblockFeeders));
} }
static void GetPokeblockFeederInFront(void) void GetPokeblockFeederInFront(void)
{ {
s16 x, y; s16 x, y;
u16 i; u16 i;