Merge pull request #125 from AnonymousRandomPerson/main
Some checks failed
build / build (push) Has been cancelled

Decomped more AI functions
This commit is contained in:
AnonymousRandomPerson
2025-05-09 00:12:38 -04:00
committed by GitHub
32 changed files with 24284 additions and 24145 deletions

View File

@@ -1,4 +1,85 @@
#pragma once
.public AreItemsEquivalent
.public BAG_ITEMS_PTR_MIRROR
.public BulkItemToItem
.public CALCIUM_STAT_BOOST
.public CopyBitsFrom
.public CopyBitsTo
.public DUNGEON_MOVE_TABLES
.public Debug_Print0
.public EXCLUSIVE_ITEM_ATTACK_BOOSTS
.public EXCLUSIVE_ITEM_DEFENSE_BOOSTS
.public EXCLUSIVE_ITEM_EFFECT_DATA
.public EXCLUSIVE_ITEM_SPECIAL_ATTACK_BOOSTS
.public EXCLUSIVE_ITEM_SPECIAL_DEFENSE_BOOSTS
.public EXCLUSIVE_ITEM_STAT_BOOST_DATA_INDEXES
.public FemaleToMaleForm
.public GINSENG_CHANCE_3
.public GUMMI_STAT_BOOST
.public GetBagCapacity
.public GetBagCapacitySpecialEpisode
.public GetBaseFormCastformDeoxysCherrim
.public GetDungeonResultString
.public GetExclusiveItem
.public GetExclusiveItemParameter
.public GetExclusiveItemType
.public GetExecuteSpecialEpisodeType
.public GetFamilyIndex
.public GetItemCategory
.public GetItemCategoryVeneer
.public GetItemIdFromList
.public GetMaxPp
.public GetMoveMaxGinsengBoostGround
.public GetPartyMembers
.public GetPerformanceFlagWithChecks
.public GetRank
.public GetRankStorageSize
.public GetScenarioBalance
.public GetTeamMember
.public GetType
.public HasMonsterBeenAttackedInDungeons
.public IQ_GUMMI_GAIN_TABLE
.public IRON_STAT_BOOST
.public InitBulkItem
.public Is2TurnsMove
.public IsGummi
.public IsItemInTimeDarkness
.public IsItemValidVeneer
.public IsMonsterValid
.public IsStorableItem
.public IsThrownItem
.public IsTicketItem
.public IsTreasureBox
.public ItemZInit
.public KECLEON_SHOP_ITEM_TABLE_LISTS_1
.public KECLEON_SHOP_ITEM_TABLE_LISTS_2
.public LIFE_SEED_HP_BOOST
.public LoadFileFromRom
.public LoadScriptVariableValue
.public MemAlloc
.public MemFree
.public MemZero
.public OpenWaza
.public PROTEIN_STAT_BOOST
.public RECYCLE_SHOP_ITEM_LIST
.public Rand16Bit
.public RandInt
.public RandIntSafe
.public RandRange
.public RemoveEmptyItems
.public SITRUS_BERRY_FULL_HP_BOOST
.public SaveScriptVariableValue
.public SelectWaza
.public SetItemAcquired
.public SetNbRecycled
.public SortItemList
.public StringFromId
.public TYPE_SPECIFIC_EXCLUSIVE_ITEMS
.public UnloadFile
.public WONDER_GUMMI_IQ_GAIN
.public WONDER_GUMMI_STAT_BOOST
.public ZINC_STAT_BOOST
.public ZInit8
.public _0209889C
.public _020988A4
.public _020988A8
@@ -18,556 +99,21 @@
.public _02098E14
.public _02098E58
.public _02098E9C
.public _02098EA8
.public _02098EE0
.public _02098F60
.public _02098F78
.public _02098F90
.public _02098FA8
.public _02098FBC
.public _02098FC0
.public _02098FC8
.public _0209901C
.public _02099020
.public _02099024
.public _02099028
.public _0209902C
.public _02099080
.public _02099110
.public _02099124
.public _02099138
.public _02099140
.public _0209915C
.public _0209916C
.public _0209918C
.public _020991C8
.public _020991F0
.public _02099210
.public _02099224
.public _02099240
.public _0209939C
.public _020993B4
.public _020993D0
.public _020993E8
.public _02099404
.public _02099404_EU
.public _02099418
.public _02099434
.public _02099448
.public _02099464
.public _02099470
.public _0209947C
.public _0209948C
.public _0209949C
.public _020994B0
.public _020994C0
.public _020994D8
.public _02099500
.public _02099514
.public _02099528
.public _0209953C
.public _02099554
.public _0209956C
.public _02099584
.public _0209958C
.public _02099594
.public _020995BC
.public _020995D0
.public _020995E8
.public _020995F8
.public _0209960C
.public _02099620
.public _02099634
.public _02099644
.public _02099650
.public _02099660
.public _02099684
.public _020996A4
.public _020996C0
.public _020996D8
.public _020996E0
.public _02099714
.public _0209971C
.public _02099720
.public _020997A4
.public _020997B4
.public _020997E4
.public _0209990C
.public _0209995C
.public _020999AC
.public _020999B0
.public _020999C8
.public _020999CC
.public _020999D0
.public _020999D4
.public _020999D8
.public _020999E4
.public _020999F0
.public _020999F4
.public _020999F8
.public _020999FC
.public _02099A00
.public _02099A04
.public _02099A08
.public _02099A10
.public _02099A14
.public _02099A18
.public _02099A1C
.public _02099A24
.public _02099A28
.public _02099A2C
.public _02099A30
.public _02099A34
.public _02099A38
.public _02099A40
.public _02099A44
.public _02099A5C
.public _02099A64
.public _02099A70
.public _02099A74
.public _02099A7C
.public _02099A84
.public _02099A8C
.public _02099A98
.public _02099AA0
.public _02099AA4
.public _02099AAC
.public _02099AB8
.public _02099AC0
.public _02099AC8
.public _02099AD0
.public _02099AD4
.public _02099AE0
.public _02099AF0
.public _02099AF8
.public _02099B04
.public _02099B10
.public _02099B18
.public _02099B24
.public _02099B2C
.public _02099B34
.public _02099B40
.public _02099B48
.public _02099B50
.public _02099B58
.public _02099B60
.public _02099B6C
.public _02099B74
.public _02099B7C
.public _02099B8C
.public _02099B9C
.public _02099BA8
.public _02099BB0
.public _02099BBC
.public _02099BC4
.public _02099BCC
.public _02099BD4
.public _02099BDC
.public _02099BE4
.public _02099BEC
.public _02099BF0_EU
.public _02099BF4
.public _02099BFC
.public _02099C04_EU
.public _02099C0C
.public _02099C14
.public _02099C1C
.public _02099C24
.public _02099C2C
.public _02099C34
.public _02099C44
.public _02099C4C
.public _02099C54
.public _02099C5C
.public _02099C68
.public _02099C70
.public _02099C78
.public _02099C84
.public _02099CA0
.public _02099CA4
.public _02099CAC
.public _02099CB8
.public _02099CC4
.public _02099D0C
.public _02099D10
.public _02099D1C
.public _02099D2C
.public _02099D3C
.public _02099D50
.public _02099D54
.public _02099D64
.public _02099D74
.public _02099D84
.public _02099D8C
.public _02099D90
.public _02099DA0
.public _02099DB0
.public _02099DC0
.public _02099DD0
.public _02099DEC
.public _02099E08
.public _02099E18
.public _02099E20
.public _02099E40
.public _02099E64_EU
.public _0209A044
.public _0209A046
.public _0209A230_EU
.public _0209A2D4_EU
.public _0209A2F4_EU
.public _0209A3B4
.public _0209A3B6
.public _020A1874
.public _020A1878
.public _020A18A0
.public _020A18C8
.public _020AF6D0
.public _020AF6D4
.public _020AF6E8
.public _020AF6F0
.public _020AF6F8
.public _020AF700
.public _020AF710
.public _020AF714
.public _020AF720
.public _020AF721
.public _020AF722
.public _020AF760
.public _020AF76C
.public _020AF77C
.public _020AF780
.public _020AF784
.public _020AF798
.public _020AF7AC
.public _020AF7C0
.public _020AF7E4
.public _020AF890
.public _020AF96C
.public _020AFA48
.public _020AFB24
.public _020AFB28
.public _020AFB4C
.public _020AFB6C
.public _020AFC28
.public _020AFC30
.public _020AFC3C
.public _020AFC4C
.public _020AFC50
.public _020AFC64
.public _020AFC6C
.public _020AFC70
.public _020AFCE4
.public _020B05AC_EU
.public _020B05B0_EU
.public _020B05BC_EU
.public _020B05C0_EU
.public _020B05D4_EU
.public _020B05D8_EU
.public _020B112C_JP
.public _022A4BD8
.public _022A4BE8
.public _022A4BEC
.public _022A4C00
.public _022A4C28
.public _022A4E50
.public _022A4E58
.public _022A4E7C
.public _022A4E84
.public _022A4E8C
.public _022A4EA4
.public _022A4EAC
.public _022A4EB4
.public _022A4EC4
.public _022A4ECC
.public _022A4EF4
.public _022A4EFC
.public _022A4F38
.public _022A5038
.public _022A5048
.public _022A504C
.public _022A5068
.public _022A5268
.public _022A5468
.public _022A5969
.public _022A596A
.public _022A5970
.public _s32_div_f
.public _u32_div_f
.public AreItemsEquivalent
.public ArrayCopy32
.public ArrayFill32
.public AUDIO_COMMANDS_BUFFER
.public BAG_ITEMS_PTR_MIRROR
.public BulkItemToItem
.public CALCIUM_STAT_BOOST
.public CopyAndInterleave
.public CopyAndInterleave0
.public CopyBitsFrom
.public CopyBitsTo
.public CopyStringFromId
.public Debug_FatalError
.public Debug_GetDebugFlag
.public Debug_Print
.public Debug_Print0
.public DirectoryFileMngr_GetDirectoryFileSize
.public DirectoryFileMngr_LoadDirectoryFile
.public DirectoryFileMngr_OpenDirectoryFile
.public DseBgm_IsPlaying
.public DseBgm_Load
.public DseBgm_SetFades
.public DseBgm_SetSignalCallback
.public DseBgm_Stop
.public DseBgm_Unload
.public DseDriver_ConfigureHeap
.public DseDriver_Init
.public DseDriver_LoadDefaultSettings
.public DseSe_GetUsedBankIDs
.public DseSe_HasPlayingInstances
.public DseSe_Load
.public DseSe_Play
.public DseSe_Stop
.public DseSe_StopAll
.public DseSe_Unload
.public DseSequence_GetParameter
.public DseSwd_IsBankLoading
.public DseSwd_LoadBank
.public DseSwd_LoadMainBank
.public DseSwd_LoadWaves
.public DseSwd_Unload
.public DUNGEON_MOVE_TABLES
.public DungeonGoesUp
.public DungeonSwapIdxToId
.public EnqueueRender3dTexture
.public ENTITIES
.public EXCLUSIVE_ITEM_ATTACK_BOOSTS
.public EXCLUSIVE_ITEM_DEFENSE_BOOSTS
.public EXCLUSIVE_ITEM_EFFECT_DATA
.public EXCLUSIVE_ITEM_SPECIAL_ATTACK_BOOSTS
.public EXCLUSIVE_ITEM_SPECIAL_DEFENSE_BOOSTS
.public EXCLUSIVE_ITEM_STAT_BOOST_DATA_INDEXES
.public FemaleToMaleForm
.public FileClose
.public FileGetSize
.public FileRom_HandleOpen
.public FileRom_HandleRead
.public FileRom_InitDataTransfer
.public FileRom_StopDataTransfer
.public FileRom_Veneer_FileInit
.public G3i_LookAt_
.public G3i_OrthoW_
.public GetAbility
.public GetAbilityString
.public GetActiveRosterIndex
.public GetActiveTeamMember
.public GetActorMatchingStorageId
.public GetBagCapacity
.public GetBagCapacitySpecialEpisode
.public GetBaseFormCastformDeoxysCherrim
.public GetDsFirmwareUserSettingsVeneer
.public GetExclusiveItem
.public GetExclusiveItemParameter
.public GetExclusiveItemType
.public GetExecuteSpecialEpisodeType
.public GetFamilyIndex
.public GetGameMode
.public GetIqSkillStringId
.public GetItemCategory
.public GetItemCategoryVeneer
.public GetItemIdFromList
.public GetItemMoveId16
.public GetItemNameFormatted
.public GetMainTeamName
.public GetMonsterGender
.public GetMonsterGenderVeneer
.public GetNameString
.public GetNbFloors
.public GetNbFloorsPlusOne
.public GetPartyMembers
.public GetPerformanceFlagWithChecks
.public GetRank
.public GetRankStorageSize
.public GetScenarioBalance
.public GetStringFromFileVeneer
.public GetTeamMember
.public GetType
.public GetTypeStringId
.public GINSENG_CHANCE_3
.public GUMMI_STAT_BOOST
.public GX_BeginLoadBGExtPltt
.public GX_BeginLoadOBJExtPltt
.public GX_BeginLoadTex
.public GX_BeginLoadTexPltt
.public GX_EndLoadBGExtPltt
.public GX_EndLoadOBJExtPltt
.public GX_EndLoadTex
.public GX_EndLoadTexPltt
.public GX_LoadTex
.public GX_LoadTexPltt
.public GXS_BeginLoadBGExtPltt
.public GXS_BeginLoadOBJExtPltt
.public GXS_EndLoadBGExtPltt
.public GXS_EndLoadOBJExtPltt
.public HasMonsterBeenAttackedInDungeons
.public InitBulkItem
.public IQ_GUMMI_GAIN_TABLE
.public IqSkillFlagTest
.public IRON_STAT_BOOST
.public IsGummi
.public IsItemInTimeDarkness
.public IsItemValidVeneer
.public IsMonsterValid
.public IsStorableItem
.public IsThrownItem
.public IsTicketItem
.public IsTreasureBox
.public ItemZInit
.public KECLEON_SHOP_ITEM_TABLE_LISTS_1
.public KECLEON_SHOP_ITEM_TABLE_LISTS_2
.public LANGUAGE_INFO_DATA
.public LIFE_SEED_HP_BOOST
.public LoadFileFromRom
.public LoadScriptVariableValue
.public LoadScriptVariableValueAtIndex
.public LoadStringFile
.public MemAlloc
.public MemArenaAlloc
.public Memcpy32
.public MemFree
.public MemLocateSet
.public MemLocateUnset
.public memset
.public MemZero
.public MemZero32
.public MOVE_ACCURACY_STARS_TABLE
.public MOVE_POWER_STARS_TABLE
.public MultiplyByFixedPoint
.public NewRender3dQuadrilateral
.public NewRender3dRectangle
.public NewRender3dTexture
.public NewRender3dTiling
.public ov10_022BDADC
.public ov10_022C2528
.public PointsToZero
.public PROTEIN_STAT_BOOST
.public PUNCH_MOVE_LIST
.public Rand16Bit
.public RandInt
.public RandIntSafe
.public RandRange
.public RECOIL_MOVE_LIST
.public RECYCLE_SHOP_ITEM_LIST
.public RemoveEmptyItems
.public Render3dProcessQueue
.public RENDER_3D
.public RENDER_3D_FUNCTIONS_64
.public ResumeBgm
.public Rgb8ToRgb5
.public SaveScriptVariableValue
.public SetItemAcquired
.public SetNbRecycled
.public SITRUS_BERRY_FULL_HP_BOOST
.public SortItemList
.public sprintf
.public strcat
.public strcmp
.public strcpy
.public StringFromId
.public strlen
.public strncmp
.public strstr
.public sub_01FF8F04
.public sub_02002778
.public sub_020027E8
.public sub_02002A9C
.public sub_02002C40
.public sub_02002CAC
.public sub_02002CB4
.public sub_02002D14
.public sub_02002E98
.public sub_02002ECC
.public sub_02002F34
.public sub_02002F7C
.public sub_02002F98
.public sub_02002FB4
.public sub_0200302C
.public sub_020030FC
.public sub_02003AB0
.public sub_02006220
.public sub_020063A0
.public sub_020063D4
.public sub_0200A124
.public sub_0200A174
.public sub_0200A180
.public sub_0200A184
.public sub_0200A29C
.public sub_0200A2B4
.public sub_0200A478
.public sub_0200A504
.public sub_0200A510
.public sub_0200A590
.public sub_0200A5B0
.public sub_0200A5F8
.public sub_0200A618
.public sub_0200B330
.public sub_0200B3C0
.public sub_0200B3D4
.public sub_0200B3FC
.public sub_0200B508
.public sub_0200B570
.public sub_0200B57C
.public sub_0200B630
.public sub_0200B67C
.public sub_0200B6F0
.public sub_0200B768
.public sub_0200D1F0
.public sub_0200D310
.public sub_0200D8AC
.public sub_0200EB90
.public sub_020257FC
.public sub_02025C7C
.public sub_0204BBB0
.public sub_0204E530
.public sub_0204F6F8
.public sub_0204F77C
.public sub_02050974
.public sub_02050990
.public sub_020509BC
.public sub_02053D1C
.public sub_02054FB8
.public sub_02054FEC
.public sub_02055020
.public sub_02055054
.public sub_020564B0
.public sub_020582E0
.public sub_02058C30
.public sub_0206549C
.public sub_02065B14
.public sub_02065BF0
.public sub_02065CD8
.public sub_0206A90C
.public sub_0206AA5C
.public sub_0206AB98
.public sub_0206ABB0
.public sub_0206AD4C
.public sub_0206ADA0
.public sub_0206ADB8
.public sub_0206BA5C
.public sub_0206C36C
.public sub_0206C39C
.public sub_0206C620
.public sub_0206C6BC
.public sub_0206C754
.public sub_0206F5C8
.public sub_0207A2DC
.public sub_0207C9C4
.public sub_0207C9E4
.public sub_0207CC10
.public TEAM_MEMBER_TABLE_PTR
.public TYPE_SPECIFIC_EXCLUSIVE_ITEMS
.public UnloadFile
.public vsprintf
.public WAN_TABLE
.public WONDER_GUMMI_IQ_GAIN
.public WONDER_GUMMI_STAT_BOOST
.public ZINC_STAT_BOOST
.public ZInit8

View File

@@ -0,0 +1,481 @@
#pragma once
.public AUDIO_COMMANDS_BUFFER
.public ArrayCopy32
.public ArrayFill32
.public BagHasExclusiveItemTypeForMonster
.public CopyAndInterleave
.public CopyAndInterleave0
.public CopyBitsFrom
.public CopyBitsTo
.public CopyStringFromId
.public DUNGEON_MOVE_TABLES
.public Debug_FatalError
.public Debug_GetDebugFlag
.public Debug_Print
.public Debug_Print0
.public DirectoryFileMngr_GetDirectoryFileSize
.public DirectoryFileMngr_LoadDirectoryFile
.public DirectoryFileMngr_OpenDirectoryFile
.public DseBgm_IsPlaying
.public DseBgm_Load
.public DseBgm_SetFades
.public DseBgm_SetSignalCallback
.public DseBgm_Stop
.public DseBgm_Unload
.public DseDriver_ConfigureHeap
.public DseDriver_Init
.public DseDriver_LoadDefaultSettings
.public DseSe_GetUsedBankIDs
.public DseSe_HasPlayingInstances
.public DseSe_Load
.public DseSe_Play
.public DseSe_Stop
.public DseSe_StopAll
.public DseSe_Unload
.public DseSequence_GetParameter
.public DseSwd_IsBankLoading
.public DseSwd_LoadBank
.public DseSwd_LoadMainBank
.public DseSwd_LoadWaves
.public DseSwd_Unload
.public DungeonGoesUp
.public DungeonSwapIdxToId
.public ENTITIES
.public EnqueueRender3dTexture
.public FileClose
.public FileGetSize
.public FileRom_HandleOpen
.public FileRom_HandleRead
.public FileRom_InitDataTransfer
.public FileRom_StopDataTransfer
.public FileRom_Veneer_FileInit
.public G3i_LookAt_
.public G3i_OrthoW_
.public GXS_BeginLoadBGExtPltt
.public GXS_BeginLoadOBJExtPltt
.public GXS_EndLoadBGExtPltt
.public GXS_EndLoadOBJExtPltt
.public GX_BeginLoadBGExtPltt
.public GX_BeginLoadOBJExtPltt
.public GX_BeginLoadTex
.public GX_BeginLoadTexPltt
.public GX_EndLoadBGExtPltt
.public GX_EndLoadOBJExtPltt
.public GX_EndLoadTex
.public GX_EndLoadTexPltt
.public GX_LoadTex
.public GX_LoadTexPltt
.public GetAbility
.public GetAbilityString
.public GetActiveRosterIndex
.public GetActiveTeamMember
.public GetActorMatchingStorageId
.public GetCurrentBagCapacity
.public GetDsFirmwareUserSettingsVeneer
.public GetExecuteSpecialEpisodeType
.public GetGameMode
.public GetInfoMoveGround
.public GetIqSkillStringId
.public GetItemMoveId16
.public GetItemNameFormatted
.public GetMainTeamName
.public GetMonsterGender
.public GetMonsterGenderVeneer
.public GetMoveName
.public GetNameString
.public GetNbFloors
.public GetNbFloorsPlusOne
.public GetPerformanceFlagWithChecks
.public GetStringFromFileVeneer
.public GetTeamMember
.public GetTypeStringId
.public IqSkillFlagTest
.public LANGUAGE_INFO_DATA
.public LoadFileFromRom
.public LoadScriptVariableValue
.public LoadScriptVariableValueAtIndex
.public LoadStringFile
.public MOVE_ACCURACY_STARS_TABLE
.public MOVE_POWER_STARS_TABLE
.public MemAlloc
.public MemArenaAlloc
.public MemFree
.public MemLocateSet
.public MemLocateUnset
.public MemZero
.public MemZero32
.public Memcpy32
.public MultiplyByFixedPoint
.public NewRender3dQuadrilateral
.public NewRender3dRectangle
.public NewRender3dTexture
.public NewRender3dTiling
.public PUNCH_MOVE_LIST
.public PointsToZero
.public RECOIL_MOVE_LIST
.public RENDER_3D
.public RENDER_3D_FUNCTIONS_64
.public Rand16Bit
.public Render3dProcessQueue
.public ResumeBgm
.public Rgb8ToRgb5
.public StringFromId
.public TEAM_MEMBER_TABLE_PTR
.public UnloadFile
.public WAN_TABLE
.public ZInit8
.public _02098EA8
.public _02098EE0
.public _02098F60
.public _02098F78
.public _02098F90
.public _02098FA8
.public _02098FBC
.public _02098FC0
.public _02098FC8
.public _0209901C
.public _02099020
.public _02099024
.public _02099028
.public _0209902C
.public _02099080
.public _02099110
.public _02099124
.public _02099138
.public _02099140
.public _0209915C
.public _0209916C
.public _0209918C
.public _020991C8
.public _020991F0
.public _02099210
.public _02099224
.public _02099240
.public _0209939C
.public _020993B4
.public _020993D0
.public _020993E8
.public _02099404
.public _02099404_EU
.public _02099418
.public _02099434
.public _02099448
.public _02099464
.public _02099470
.public _0209947C
.public _0209948C
.public _0209949C
.public _020994B0
.public _020994C0
.public _020994D8
.public _02099500
.public _02099514
.public _02099528
.public _0209953C
.public _02099554
.public _0209956C
.public _02099584
.public _0209958C
.public _02099594
.public _020995BC
.public _020995D0
.public _020995E8
.public _020995F8
.public _0209960C
.public _02099620
.public _02099634
.public _02099644
.public _02099650
.public _02099660
.public _02099684
.public _020996A4
.public _020996C0
.public _020996D8
.public _020996E0
.public _02099714
.public _0209971C
.public _02099720
.public _020997A4
.public _020997B4
.public _020997E4
.public _0209990C
.public _0209995C
.public _020999AC
.public _020999B0
.public _020999C8
.public _020999CC
.public _020999D0
.public _020999D4
.public _020999D8
.public _020999E4
.public _020999F0
.public _020999F4
.public _020999F8
.public _020999FC
.public _02099A00
.public _02099A04
.public _02099A08
.public _02099A10
.public _02099A14
.public _02099A18
.public _02099A1C
.public _02099A24
.public _02099A28
.public _02099A2C
.public _02099A30
.public _02099A34
.public _02099A38
.public _02099A40
.public _02099A44
.public _02099A5C
.public _02099A64
.public _02099A70
.public _02099A74
.public _02099A7C
.public _02099A84
.public _02099A8C
.public _02099A98
.public _02099AA0
.public _02099AA4
.public _02099AAC
.public _02099AB8
.public _02099AC0
.public _02099AC8
.public _02099AD0
.public _02099AD4
.public _02099AE0
.public _02099AF0
.public _02099AF8
.public _02099B04
.public _02099B10
.public _02099B18
.public _02099B24
.public _02099B2C
.public _02099B34
.public _02099B40
.public _02099B48
.public _02099B50
.public _02099B58
.public _02099B60
.public _02099B6C
.public _02099B74
.public _02099B7C
.public _02099B8C
.public _02099B9C
.public _02099BA8
.public _02099BB0
.public _02099BBC
.public _02099BC4
.public _02099BCC
.public _02099BD4
.public _02099BDC
.public _02099BE4
.public _02099BEC
.public _02099BF0_EU
.public _02099BF4
.public _02099BFC
.public _02099C04_EU
.public _02099C0C
.public _02099C14
.public _02099C1C
.public _02099C24
.public _02099C2C
.public _02099C34
.public _02099C44
.public _02099C4C
.public _02099C54
.public _02099C5C
.public _02099C68
.public _02099C70
.public _02099C78
.public _02099C84
.public _02099CA0
.public _02099CA4
.public _02099CAC
.public _02099CB8
.public _02099CC4
.public _02099D0C
.public _02099D10
.public _02099D1C
.public _02099D2C
.public _02099D3C
.public _02099D50
.public _02099D54
.public _02099D64
.public _02099D74
.public _02099D84
.public _02099D8C
.public _02099D90
.public _02099DA0
.public _02099DB0
.public _02099DC0
.public _02099DD0
.public _02099DEC
.public _02099E08
.public _02099E18
.public _02099E20
.public _02099E40
.public _02099E64_EU
.public _0209A044
.public _0209A046
.public _0209A230_EU
.public _0209A2D4_EU
.public _0209A2F4_EU
.public _0209A3B4
.public _0209A3B6
.public _020AF6E8
.public _020AF6F0
.public _020AF6F8
.public _020AF700
.public _020AF710
.public _020AF714
.public _020AF720
.public _020AF721
.public _020AF722
.public _020AF760
.public _020AF76C
.public _020AF77C
.public _020AF780
.public _020AF784
.public _020AF798
.public _020AF7AC
.public _020AF7C0
.public _020AF7E4
.public _020AF890
.public _020AF96C
.public _020AFA48
.public _020AFB24
.public _020AFB28
.public _020AFB4C
.public _020AFB6C
.public _020AFC28
.public _020AFC30
.public _020AFC3C
.public _020AFC4C
.public _020AFC50
.public _020AFC64
.public _020AFC6C
.public _020AFC70
.public _020AFCE4
.public _020B05AC_EU
.public _020B05B0_EU
.public _020B05BC_EU
.public _020B05C0_EU
.public _020B05D4_EU
.public _020B05D8_EU
.public _020B112C_JP
.public _022A4BE8
.public _022A4BEC
.public _022A4C00
.public _022A4C28
.public _022A4E50
.public _022A4E58
.public _022A4E7C
.public _022A4E84
.public _022A4E8C
.public _022A4EA4
.public _022A4EAC
.public _022A4EB4
.public _022A4EC4
.public _022A4ECC
.public _022A4EF4
.public _022A4EFC
.public _022A4F38
.public _022A5038
.public _022A5048
.public _022A504C
.public _022A5068
.public _022A5268
.public _022A5468
.public _022A5969
.public _022A596A
.public _022A5970
.public _s32_div_f
.public _u32_div_f
.public memset
.public ov10_022BDADC
.public ov10_022C2528
.public sprintf
.public strcat
.public strcmp
.public strcpy
.public strlen
.public strncmp
.public strstr
.public sub_01FF8F04
.public sub_02002778
.public sub_020027E8
.public sub_02002A9C
.public sub_02002C40
.public sub_02002CAC
.public sub_02002CB4
.public sub_02002D14
.public sub_02002E98
.public sub_02002ECC
.public sub_02002F34
.public sub_02002F7C
.public sub_02002F98
.public sub_02002FB4
.public sub_0200302C
.public sub_020030FC
.public sub_02003AB0
.public sub_02006220
.public sub_020063A0
.public sub_020063D4
.public sub_0200A124
.public sub_0200A174
.public sub_0200A180
.public sub_0200A184
.public sub_0200A29C
.public sub_0200A2B4
.public sub_0200A478
.public sub_0200A504
.public sub_0200A510
.public sub_0200A590
.public sub_0200A5B0
.public sub_0200A5F8
.public sub_0200A618
.public sub_0200B330
.public sub_0200B3C0
.public sub_0200B3D4
.public sub_0200B3FC
.public sub_0200B508
.public sub_0200B570
.public sub_0200B57C
.public sub_0200B630
.public sub_0200B67C
.public sub_0200B6F0
.public sub_0200B768
.public sub_0200D310
.public sub_020257FC
.public sub_02025C7C
.public sub_0204BBB0
.public sub_0204E530
.public sub_0204F6F8
.public sub_0204F77C
.public sub_02053D1C
.public sub_020564B0
.public sub_02058C30
.public sub_0206549C
.public sub_02065B14
.public sub_02065BF0
.public sub_02065CD8
.public sub_0206A90C
.public sub_0206AA5C
.public sub_0206AB98
.public sub_0206ABB0
.public sub_0206AD4C
.public sub_0206ADA0
.public sub_0206ADB8
.public sub_0206BA5C
.public sub_0206C36C
.public sub_0206C39C
.public sub_0206C620
.public sub_0206C6BC
.public sub_0206C754
.public sub_0206F5C8
.public sub_0207A2DC
.public sub_0207C9C4
.public sub_0207C9E4
.public sub_0207CC10
.public vsprintf

View File

@@ -6,12 +6,11 @@
.public GetName
.public GetNameRaw
.public GetNameWithGender
.public IsBlinded
.public StringFromId
.public ov29_0234B0B4
.public ov29_023527C0
.public ov29_023527D0
.public strcpy
.public StringFromId
.public sub_02024FB8
.public sub_02056084
.public sub_02058534

View File

@@ -0,0 +1,2 @@
#pragma once
.public IsBlinded

View File

@@ -0,0 +1 @@
#pragma once

View File

@@ -0,0 +1,3 @@
#pragma once
.public EAT_ITEM_EFFECT_IGNORE_LIST
.public IsItemValidVeneer

View File

@@ -1,20 +1,18 @@
#pragma once
.public DUNGEON_PTR
.public DetermineAllMonsterShadow
.public DetermineTileWalkableNeighbors
.public DIRECTIONS_XY
.public DUNGEON_PTR
.public EAT_ITEM_EFFECT_IGNORE_LIST
.public EnsureCanStandCurrentTile
.public EntityIsValid__0231EDD8
.public GetMaxPp
.public GetMoveCategory
.public GetTile
.public GetTileSafe
.public GetTreatmentBetweenMonsters
.public InitMove
.public IsFullFloorFixedRoom
.public IsItemValidVeneer
.public LogMessageByIdWithPopupCheckUser
.public StairsAlwaysReachable
.public UpdateMinimap
.public UpdateTrapsVisibility
.public ov29_022E0378
.public ov29_022EA370
.public ov29_022F9C74
@@ -22,6 +20,3 @@
.public ov29_0233665C
.public ov29_0233785C
.public ov29_0233FB1C
.public StairsAlwaysReachable
.public UpdateMinimap
.public UpdateTrapsVisibility

File diff suppressed because it is too large Load Diff

23155
asm/main_02013AD0.s Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -18819,8 +18819,8 @@ SPECIAL_BAND_STAT_BOOST:
.global _020A1870
_020A1870:
.byte 0x0A, 0x00, 0x00, 0x00
.global _020A1874
_020A1874:
.global UNKNOWN_PP_BOOST_AMOUNT
UNKNOWN_PP_BOOST_AMOUNT:
.byte 0x04, 0x00, 0x00, 0x00
.global _020A1878
_020A1878:
@@ -18852,8 +18852,8 @@ AURA_BOW_STAT_BOOST:
.global _020A189C
_020A189C:
.byte 0x2C, 0x01, 0x00, 0x00
.global _020A18A0
_020A18A0:
.global MULTITALENT_PP_BOOST_AMOUNT
MULTITALENT_PP_BOOST_AMOUNT:
.byte 0x05, 0x00, 0x00, 0x00
.global MIN_IQ_ITEM_MASTER
MIN_IQ_ITEM_MASTER:
@@ -18882,8 +18882,8 @@ _020A18C0:
.global EVOLUTION_HP_BONUS
EVOLUTION_HP_BONUS:
.byte 0x0A, 0x00, 0x00, 0x00
.global _020A18C8
_020A18C8:
.global EXCLUSIVE_ITEM_PP_BOOST_AMOUNT
EXCLUSIVE_ITEM_PP_BOOST_AMOUNT:
.byte 0x02, 0x00, 0x00, 0x00
.global DAMAGE_FORMULA_FLV_SHIFT
DAMAGE_FORMULA_FLV_SHIFT:

View File

@@ -402,291 +402,3 @@ _02300490:
bl ov29_0234B0B4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end ov29_0230040C
arm_func_start IsMonsterDrowsy
IsMonsterDrowsy: ; 0x023004B0
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xbd]
cmp r0, #1
moveq r0, #1
bxeq lr
cmp r0, #3
moveq r0, #1
bxeq lr
cmp r0, #4
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end IsMonsterDrowsy
arm_func_start MonsterHasNonvolatileNonsleepStatus
MonsterHasNonvolatileNonsleepStatus: ; 0x023004E4
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xbf]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
arm_func_end MonsterHasNonvolatileNonsleepStatus
arm_func_start MonsterHasImmobilizingStatus
MonsterHasImmobilizingStatus: ; 0x02300500
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xc4]
cmp r0, #3
cmpne r0, #5
cmpne r0, #0
movne r0, #1
moveq r0, #0
bx lr
arm_func_end MonsterHasImmobilizingStatus
arm_func_start MonsterHasAttackInterferingStatus
MonsterHasAttackInterferingStatus: ; 0x02300520
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xd0]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
arm_func_end MonsterHasAttackInterferingStatus
arm_func_start MonsterHasSkillInterferingStatus
MonsterHasSkillInterferingStatus: ; 0x0230053C
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xd8]
cmp r0, #1
moveq r0, #1
bxeq lr
cmp r0, #2
moveq r0, #1
bxeq lr
cmp r0, #4
moveq r0, #1
bxeq lr
cmp r0, #5
moveq r0, #1
bxeq lr
cmp r0, #6
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end MonsterHasSkillInterferingStatus
arm_func_start MonsterHasLeechSeedStatus
MonsterHasLeechSeedStatus: ; 0x02300588
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xe0]
cmp r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end MonsterHasLeechSeedStatus
arm_func_start MonsterHasWhifferStatus
MonsterHasWhifferStatus: ; 0x023005A4
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xec]
cmp r0, #2
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end MonsterHasWhifferStatus
arm_func_start IsMonsterVisuallyImpaired
IsMonsterVisuallyImpaired: ; 0x023005C0
stmdb sp!, {r4, lr}
ldr r4, [r0, #0xb4]
bl IsBlinded
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, pc}
ldrb r0, [r4, #0xf1]
cmp r0, #2
moveq r0, #1
ldmeqia sp!, {r4, pc}
cmp r0, #4
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r4, pc}
arm_func_end IsMonsterVisuallyImpaired
arm_func_start IsMonsterMuzzled
IsMonsterMuzzled: ; 0x023005FC
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xf3]
cmp r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end IsMonsterMuzzled
arm_func_start MonsterHasMiracleEyeStatus
MonsterHasMiracleEyeStatus: ; 0x02300618
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xf5]
cmp r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end MonsterHasMiracleEyeStatus
arm_func_start MonsterHasNegativeStatus
MonsterHasNegativeStatus: ; 0x02300634
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r4, [r6, #0xb4]
mov r5, r1
bl IsMonsterDrowsy
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
bl MonsterHasNonvolatileNonsleepStatus
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
bl MonsterHasImmobilizingStatus
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
bl MonsterHasAttackInterferingStatus
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
bl MonsterHasSkillInterferingStatus
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
bl MonsterHasLeechSeedStatus
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
bl MonsterHasWhifferStatus
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
mov r1, r5
bl IsMonsterVisuallyImpaired
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
bl IsMonsterMuzzled
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
bl MonsterHasMiracleEyeStatus
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
ldrb r0, [r4, #0xfe]
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
#ifdef JAPAN
ldrb r0, [r4, #0x105]
#else
ldrb r0, [r4, #0x106]
#endif
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
mov ip, #0
#ifdef JAPAN
add r3, r4, #0x120
#else
add r3, r4, #0x124
#endif
mov r1, ip
mov r2, #1
b _02300770
_02300740:
ldrb r0, [r3, ip, lsl #3]
add lr, r3, ip, lsl #3
tst r0, #1
movne r0, r2
moveq r0, r1
tst r0, #0xff
beq _0230076C
ldrh r0, [lr, #2]
tst r0, #1
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
_0230076C:
add ip, ip, #1
_02300770:
cmp ip, #4
blt _02300740
mov r1, #0
b _02300798
_02300780:
add r0, r4, r1
#ifdef JAPAN
ldrb r0, [r0, #0x115]
#else
ldrb r0, [r0, #0x119]
#endif
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
add r1, r1, #1
_02300798:
cmp r1, #5
blt _02300780
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
arm_func_end MonsterHasNegativeStatus
arm_func_start IsMonsterSleeping
IsMonsterSleeping: ; 0x023007A8
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xbd]
cmp r0, #1
moveq r0, #1
bxeq lr
cmp r0, #5
moveq r0, #1
bxeq lr
cmp r0, #3
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end IsMonsterSleeping
arm_func_start ov29_023007DC
ov29_023007DC: ; 0x023007DC
ldr r3, [r0, #0xb4]
ldr r0, _02300814 ; =0x000003E7
ldrsh r2, [r3, #0x12]
ldrsh r1, [r3, #0x16]
add r2, r2, r1
cmp r2, r0
movgt r2, r0
mov r0, r2, asr #1
ldrsh r1, [r3, #0x10]
add r0, r2, r0, lsr #30
cmp r1, r0, asr #2
movle r0, #1
movgt r0, #0
bx lr
.align 2, 0
_02300814: .word 0x000003E7
arm_func_end ov29_023007DC

113
asm/overlay_29_02300500.s Normal file
View File

@@ -0,0 +1,113 @@
.include "asm/macros.inc"
.include "overlay_29_02300500.inc"
.text
arm_func_start MonsterHasImmobilizingStatus
MonsterHasImmobilizingStatus: ; 0x02300500
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xc4]
cmp r0, #3
cmpne r0, #5
cmpne r0, #0
movne r0, #1
moveq r0, #0
bx lr
arm_func_end MonsterHasImmobilizingStatus
arm_func_start MonsterHasAttackInterferingStatus
MonsterHasAttackInterferingStatus: ; 0x02300520
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xd0]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
arm_func_end MonsterHasAttackInterferingStatus
arm_func_start MonsterHasSkillInterferingStatus
MonsterHasSkillInterferingStatus: ; 0x0230053C
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xd8]
cmp r0, #1
moveq r0, #1
bxeq lr
cmp r0, #2
moveq r0, #1
bxeq lr
cmp r0, #4
moveq r0, #1
bxeq lr
cmp r0, #5
moveq r0, #1
bxeq lr
cmp r0, #6
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end MonsterHasSkillInterferingStatus
arm_func_start MonsterHasLeechSeedStatus
MonsterHasLeechSeedStatus: ; 0x02300588
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xe0]
cmp r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end MonsterHasLeechSeedStatus
arm_func_start MonsterHasWhifferStatus
MonsterHasWhifferStatus: ; 0x023005A4
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xec]
cmp r0, #2
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end MonsterHasWhifferStatus
arm_func_start IsMonsterVisuallyImpaired
IsMonsterVisuallyImpaired: ; 0x023005C0
stmdb sp!, {r4, lr}
ldr r4, [r0, #0xb4]
bl IsBlinded
cmp r0, #0
movne r0, #1
ldmneia sp!, {r4, pc}
ldrb r0, [r4, #0xf1]
cmp r0, #2
moveq r0, #1
ldmeqia sp!, {r4, pc}
cmp r0, #4
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r4, pc}
arm_func_end IsMonsterVisuallyImpaired
arm_func_start IsMonsterMuzzled
IsMonsterMuzzled: ; 0x023005FC
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xf3]
cmp r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end IsMonsterMuzzled
arm_func_start MonsterHasMiracleEyeStatus
MonsterHasMiracleEyeStatus: ; 0x02300618
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xf5]
cmp r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end MonsterHasMiracleEyeStatus

41
asm/overlay_29_023007A8.s Normal file
View File

@@ -0,0 +1,41 @@
.include "asm/macros.inc"
.include "overlay_29_023007A8.inc"
.text
arm_func_start IsMonsterSleeping
IsMonsterSleeping: ; 0x023007A8
ldr r0, [r0, #0xb4]
ldrb r0, [r0, #0xbd]
cmp r0, #1
moveq r0, #1
bxeq lr
cmp r0, #5
moveq r0, #1
bxeq lr
cmp r0, #3
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end IsMonsterSleeping
arm_func_start ov29_023007DC
ov29_023007DC: ; 0x023007DC
ldr r3, [r0, #0xb4]
ldr r0, _02300814 ; =0x000003E7
ldrsh r2, [r3, #0x12]
ldrsh r1, [r3, #0x16]
add r2, r2, r1
cmp r2, r0
movgt r2, r0
mov r0, r2, asr #1
ldrsh r1, [r3, #0x10]
add r0, r2, r0, lsr #30
cmp r1, r0, asr #2
movle r0, #1
movgt r0, #0
bx lr
.align 2, 0
_02300814: .word 0x000003E7
arm_func_end ov29_023007DC

37
asm/overlay_29_0231E990.s Normal file
View File

@@ -0,0 +1,37 @@
.include "asm/macros.inc"
.include "overlay_29_0231E990.inc"
.text
arm_func_start ShouldTryEatItem
ShouldTryEatItem: ; 0x0231E990
stmdb sp!, {r4, lr}
mov r4, r0
cmp r4, #0x45
blt _0231E9A8
cmp r4, #0x8a
ble _0231E9B0
_0231E9A8:
mov r0, #0
ldmia sp!, {r4, pc}
_0231E9B0:
bl IsItemValidVeneer
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, _0231E9EC ; =EAT_ITEM_EFFECT_IGNORE_LIST
b _0231E9D8
_0231E9C8:
cmp r4, r1
moveq r0, #0
ldmeqia sp!, {r4, pc}
add r0, r0, #2
_0231E9D8:
ldrsh r1, [r0]
cmp r1, #0
bne _0231E9C8
mov r0, #1
ldmia sp!, {r4, pc}
.align 2, 0
_0231E9EC: .word EAT_ITEM_EFFECT_IGNORE_LIST
arm_func_end ShouldTryEatItem

View File

@@ -1,98 +1,8 @@
.include "asm/macros.inc"
.include "overlay_29_0231E8F0.inc"
.include "overlay_29_0231EA04.inc"
.text
arm_func_start IsAdjacentToEnemy
IsAdjacentToEnemy: ; 0x0231E8F0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r5, #0
mov sl, #1
mov r6, r0
mov sb, r5
mov r8, r5
mov r7, sl
ldr r4, _0231E98C ; =DIRECTIONS_XY
b _0231E97C
_0231E914:
mov r1, r5, lsl #2
add r0, r4, r5, lsl #2
ldrsh ip, [r6, #4]
ldrsh r3, [r4, r1]
ldrsh r2, [r6, #6]
ldrsh r1, [r0, #2]
add r0, ip, r3
add r1, r2, r1
bl GetTile
ldr r1, [r0, #0xc]
cmp r1, #0
beq _0231E978
ldr r0, [r1]
cmp r0, #0
moveq r0, sl
movne r0, sb
cmp r0, #1
beq _0231E978
mov r0, r6
mov r2, r8
mov r3, r7
bl GetTreatmentBetweenMonsters
cmp r0, #1
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_0231E978:
add r5, r5, #1
_0231E97C:
cmp r5, #8
blt _0231E914
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0231E98C: .word DIRECTIONS_XY
arm_func_end IsAdjacentToEnemy
arm_func_start ShouldTryEatItem
ShouldTryEatItem: ; 0x0231E990
stmdb sp!, {r4, lr}
mov r4, r0
cmp r4, #0x45
blt _0231E9A8
cmp r4, #0x8a
ble _0231E9B0
_0231E9A8:
mov r0, #0
ldmia sp!, {r4, pc}
_0231E9B0:
bl IsItemValidVeneer
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, _0231E9EC ; =EAT_ITEM_EFFECT_IGNORE_LIST
b _0231E9D8
_0231E9C8:
cmp r4, r1
moveq r0, #0
ldmeqia sp!, {r4, pc}
add r0, r0, #2
_0231E9D8:
ldrsh r1, [r0]
cmp r1, #0
bne _0231E9C8
mov r0, #1
ldmia sp!, {r4, pc}
.align 2, 0
_0231E9EC: .word EAT_ITEM_EFFECT_IGNORE_LIST
arm_func_end ShouldTryEatItem
arm_func_start GetMaxPpWrapper
GetMaxPpWrapper: ; 0x0231E9F0
stmdb sp!, {r3, lr}
bl GetMaxPp
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r3, pc}
arm_func_end GetMaxPpWrapper
arm_func_start ov29_0231EA04
ov29_0231EA04: ; 0x0231EA04
ldr ip, _0231EA14 ; =InitMove

View File

@@ -1,5 +1,5 @@
#ifndef HEADERS_TYPES_DUNGEON_MODE_DUNGEON_H_
#define HEADERS_TYPES_DUNGEON_MODE_DUNGEON_H_
#ifndef PMDSKY_DUNGEON_H
#define PMDSKY_DUNGEON_H
#include "dungeon_mode.h"
#include "enums.h"
@@ -1762,5 +1762,4 @@ struct dungeon {
u8 field_0x2cb13;
};
#endif
#endif // PMDSKY_DUNGEON_H

View File

@@ -3,6 +3,14 @@
#include "dungeon_mode.h"
// Called to get the probability of an item being used or thrown by an AI on the current turn.
// item_consumer: Pointer to either the user if it is an item used by the AI or the target if it is an item thrown by the AI
// item: Pointer to item
// flags: Size-2 bitvector: if bit 0 is set, the AI is throwing the item. If bit 1 is set, it is targeting an ally with the item.
// return: Integer in range [0, 100]
u32 GetAiUseItemProbability(struct entity *item_consumer, struct item *item, u32 flags);
// Called to check if a hostile entity is present in any of the tiles adjacent to an entity.
// return: True if yes, false if no
bool8 IsAdjacentToEnemy(struct entity *entity);
#endif //PMDSKY_DUNGEON_AI_ITEM_WEIGHT_H

11
include/dungeon_logic.h Normal file
View File

@@ -0,0 +1,11 @@
#ifndef PMDSKY_DUNGEON_LOGIC_H
#define PMDSKY_DUNGEON_LOGIC_H
#include "dungeon_mode.h"
// Checks if a monster has any "negative" status conditions. This includes a wide variety of non-self-inflicted statuses that could traditionally be viewed as actual "status conditions", as well as speed being lowered and moves being sealed.
// monster: entity pointer
// check_held_item: flag for whether to check for the held item (see IsMonsterVisuallyImpaired)
bool8 MonsterHasNegativeStatus(struct entity *monster, bool8 check_held_item);
#endif //PMDSKY_DUNGEON_LOGIC_H

12
include/dungeon_logic_0.h Normal file
View File

@@ -0,0 +1,12 @@
#ifndef PMDSKY_DUNGEON_LOGIC_0_H
#define PMDSKY_DUNGEON_LOGIC_0_H
#include "dungeon_mode.h"
// Checks if a monster has the sleep, nightmare, or yawning status. Note that this excludes the napping status.
bool8 IsMonsterDrowsy(struct entity *monster);
//Checks if a monster has one of the statuses in the "burn" group, which includes the traditionally non-volatile status conditions (except sleep) in the main series: STATUS_BURN, STATUS_POISONED, STATUS_BADLY_POISONED, STATUS_PARALYSIS, and STATUS_IDENTIFYING.
// STATUS_IDENTIFYING is probably included based on enum status_id? Unless it's handled differently somehow.
bool8 MonsterHasNonvolatileNonsleepStatus(struct entity *monster);
#endif //PMDSKY_DUNGEON_LOGIC_0_H

View File

@@ -2,15 +2,16 @@
#define PMDSKY_DUNGEON_MODE_H
#include "direction.h"
#include "dungeon_mode_common.h"
#include "enums.h"
#include "item.h"
#include "move.h"
#include "graphics.h"
#include "util.h"
#define NUM_PICKED_IQ_SKILLS 3
#define MAX_MON_MOVES 4
#define MAX_SPEED_STAGE 4
#define NUM_SPEED_COUNTERS 5
// Used in various contexts, like with entity positions in the dungeon
struct position {

View File

@@ -2900,17 +2900,6 @@ enum movement_flag
MOVEMENT_FLAG_SWAPPING_PLACES_PETRIFIED_ALLY = 1 << 15, // Set if the Pokémon is petrified and the leader cures them by swapping places.
};
enum move_flag
{
MOVE_FLAG_EXISTS = 1 << 0,
MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN = 1 << 1, // This move is linked with the previous move in the Pokémon's moveset.
MOVE_FLAG_ENABLED_FOR_AI = 1 << 2, // Enabled for the AI to use.
MOVE_FLAG_SET = 1 << 3, // This move can be triggered by pressing L+A instead of having to go to the move menu.
MOVE_FLAG_LAST_USED = 1 << 4, // The most recent move used by the Pokémon.
MOVE_FLAG_DISABLED = 1 << 5, // Disabled by an effect like Taunt.
MOVE_FLAG_INTERNAL_MARKER = 1 << 7 // Possibly some kind of flag used internally to mark a move and find it again
};
// Mobility types for monsters
enum mobility_type {
MOBILITY_NORMAL = 0,

View File

@@ -1,8 +1,30 @@
#ifndef HEADERS_TYPES_DUNGEON_MODE_COMMON_H_
#define HEADERS_TYPES_DUNGEON_MODE_COMMON_H_
#ifndef PMDSKY_MOVE_H
#define PMDSKY_MOVE_H
#include "enums.h"
enum move_flag
{
MOVE_FLAG_EXISTS = 1 << 0,
MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN = 1 << 1, // This move is linked with the previous move in the Pokémon's moveset.
MOVE_FLAG_ENABLED_FOR_AI = 1 << 2, // Enabled for the AI to use.
MOVE_FLAG_SET = 1 << 3, // This move can be triggered by pressing L+A instead of having to go to the move menu.
MOVE_FLAG_LAST_USED = 1 << 4, // The most recent move used by the Pokémon.
MOVE_FLAG_DISABLED = 1 << 5, // Disabled by an effect like Taunt.
MOVE_FLAG_INTERNAL_MARKER = 1 << 7 // Possibly some kind of flag used internally to mark a move and find it again
};
enum move_flag_2
{
MOVE_FLAG_SEALED = 1 << 0,
MOVE_FLAG_CONSUME_PP = 1 << 2,
MOVE_FLAG_CONSUME_2_PP = 1 << 3,
MOVE_FLAG_CONSUME_4_PP = 1 << 5,
MOVE_FLAG_MULTITALENT_PP_BOOST = 1 << 8,
MOVE_FLAG_EXCLUSIVE_ITEM_PP_BOOST = 1 << 9,
MOVE_FLAG_UNKNOWN_PP_BOOST = 1 << 10,
};
// Monster move info
struct move {
// 0x0: flags: 1-byte bitfield
@@ -28,12 +50,14 @@ struct move {
// bool8 f_consume_4_pp : 1;
// u16 flags2_unk7 : 1;
// u16 flags2_unk8 : 1;
// bool8 f_multitalent_pp_boost : 1; // The IQ skill Multitalent is actively boosting move PP
// bool8 f_exclusive_item_pp_boost : 1; // A PP-boosting exclusive item is in effect
// u16 flags3_unk10 : 6;
// bool8 f_unknown_pp_boost : 1; // A PP-boosting effect? Possibly unused?
// uint16_t flags3_unk11 : 5;
enum move_id id : 16; // 0x4
enum move_id id; // 0x4
u8 pp; // 0x6: Current PP
u8 ginseng; // 0x7: Ginseng boost
};
#endif
#endif // PMDSKY_MOVE_H

112
include/move_data.h Normal file
View File

@@ -0,0 +1,112 @@
#ifndef PMDSKY_MOVE_DATA_H
#define PMDSKY_MOVE_DATA_H
#include "util.h"
// Move target (i.e., who does a move affect when used?)
// In the move data, this is the lower 4 bits of the joint Range + Target bitfield
enum move_target
{
TARGET_ENEMIES = 0,
TARGET_PARTY = 1, // including the user
TARGET_ALL = 2, // including the user
TARGET_USER = 3,
TARGET_ENEMIES_AFTER_CHARGING = 4, // in some sense the user while charging, then enemies
TARGET_ALL_EXCEPT_USER = 5,
TARGET_TEAMMATES = 6, // excluding the user
TARGET_SPECIAL = 15, // for weird moves
};
// Move range.
// In the move data, this is the upper 4 bits of the joint Range + Target bitfield
enum move_range
{
RANGE_FRONT = 0, // 1 tile in front
RANGE_FRONT_AND_SIDES = 1, // also cuts corners
RANGE_NEARBY = 2, // the 8 surrounding tiles
RANGE_ROOM = 3, // the whole room
RANGE_FRONT_2 = 4, // 2 tiles in front, also cuts corners but the AI doesn't account for that
RANGE_FRONT_10 = 5, // 10 tiles in front
RANGE_FLOOR = 6, // the whole floor
// Depends on the move:
// - if the target is the user, then the range is also just the user
// - if the target is enemies after charging, the range is front or front with corner cutting,
// depending on the move
RANGE_USER = 7,
RANGE_FRONT_WITH_CORNER_CUTTING = 8, // same as RANGE_FRONT but cuts corners
// same as RANGE_FRONT_2 but the AI accounts for corner-cutting
RANGE_FRONT_2_WITH_CORNER_CUTTING = 9,
RANGE_SPECIAL = 15, // for weird moves
};
// Conditions checked by the AI to determine when a move should be used
// It does not affect how the move works
enum move_ai_condition
{
AI_CONDITION_NONE = 0,
// The AI will consider a target elegible wirh a chance equal to the
// move's "ai_condition_random_chance" value
AI_CONDITION_RANDOM = 1,
AI_CONDITION_HP_25 = 2, // Target has HP <= 25%
AI_CONDITION_STATUS = 3, // Target has a negative status condition
AI_CONDITION_ASLEEP = 4, // Target is asleep, napping or in a nightmare
AI_CONDITION_GHOST = 5, // Target is ghost-type and not exposed
AI_CONDITION_HP_25_OR_STATUS = 6, // Target has HP <= 25% or a negative status condition
};
// In the move data, the target and range are encoded together in the first byte of a single
// two-byte field. The target is the lower half, and the range is the upper half.
struct move_target_and_range
{
enum move_target target : 4;
enum move_range range : 4;
enum move_ai_condition ai_condition : 4;
};
// Data for a single move
struct move_data
{
u16 base_power; // 0x0
u8 type; // 0x2
u8 category; // 0x3
struct move_target_and_range target_range; // 0x4
struct move_target_and_range ai_target_range; // 0x6: Target/range as seen by the AI
u8 pp; // 0x8
u8 ai_weight; // 0x9: Possibly. Weight for AI's random move selection
// 0xA: Both accuracy values are used to calculate the move's actual accuracy.
// See the PMD Info Spreadsheet.
u8 accuracy1;
u8 accuracy2; // 0xB
// 0xC: If this move has a random chance AI condition (see enum move_ai_condition),
// this is the chance that the AI will consider a potential target as elegible
u8 ai_condition_random_chance;
u8 strikes; // 0xD: Number of times the move hits (i.e. for multi-hit moves)
u8 max_ginseng_boost; // 0xE: Maximum possible Ginseng boost for this move
u8 crit_chance; // 0xF: The base critical hit chance
bool8 reflected_by_magic_coat; // 0x10
bool8 can_be_snatched; // 0x11
bool8 fails_while_muzzled; // 0x12
// 0x13: Seems to be used by the AI with Status Checker for using moves against frozen monsters
bool8 ai_can_use_against_frozen;
bool8 usable_while_taunted; // 0x14
// 0x15: Index in the string files of the range string to be displayed in the move info screen
u8 range_string_idx;
u16 id; // 0x16
// 0x18: Index in the string files of the message string to be displayed in the dungeon message
// log when a move is used. E.g., the default (0) is "[User] used [move]!"
u16 message_string_idx;
};
// The move data table, as contained within /BALANCE/waza_p.bin, and when loaded into memory.
struct move_data_table
{
struct move_data moves[559]; // 0x8
};
struct move_data_table_outer
{
u8 fill0[8];
struct move_data_table *moves;
};
#endif //PMDSKY_MOVE_DATA_H

10
include/moves.h Normal file
View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_MOVES_H
#define PMDSKY_MOVES_H
#include "move.h"
// Gets the maximum PP for a given move.
// return: max PP for the given move, capped at 99
u32 GetMaxPp(struct move *move);
#endif //PMDSKY_MOVES_H

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_0231E9F0_H
#define PMDSKY_OVERLAY_29_0231E9F0_H
#include "move.h"
// Gets the maximum PP for a given move. A wrapper around the function in the ARM 9 binary.
// return: max PP for the given move, capped at 99
s16 GetMaxPpWrapper(struct move *move);
#endif //PMDSKY_OVERLAY_29_0231E9F0_H

View File

@@ -2,7 +2,7 @@
#define PMDSKY_OVERLAY_29_0232E250_H
#include "dungeon_mode.h"
#include "dungeon_mode_common.h"
#include "move.h"
#include "item.h"
// Checks if an entity pointer points to a valid entity (not entity type 0, which represents no entity).

View File

@@ -29,6 +29,8 @@ Static main
Object asm/main_0200E864.o
Object src/main_0200ECFC.o
Object asm/main_0200ED1C.o
Object src/moves.o
Object asm/main_02013AD0.o
Object src/main_02025788.o
Object asm/main_020257FC.o
Object src/main_0202593C.o
@@ -294,6 +296,10 @@ Overlay OVY_29
Object asm/overlay_29_022FF8C8.o
Object src/overlay_29_023000E4.o
Object asm/overlay_29_02300108.o
Object src/dungeon_logic_0.o
Object asm/overlay_29_02300500.o
Object src/dungeon_logic.o
Object asm/overlay_29_023007A8.o
Object src/dungeon_capabilities.o
Object asm/overlay_29_023008DC.o
Object src/dungeon_capabilities_1.o
@@ -373,7 +379,9 @@ Overlay OVY_29
Object src/overlay_29_0231CBC8.o
Object asm/overlay_29_0231CBEC.o
Object src/dungeon_ai_item_weight.o
Object asm/overlay_29_0231E8F0.o
Object asm/overlay_29_0231E990.o
Object src/overlay_29_0231E9F0.o
Object asm/overlay_29_0231EA04.o
Object src/overlay_29_0231EDD8.o
Object asm/overlay_29_0231EDFC.o
Object src/overlay_29_0231F570.o

View File

@@ -1,14 +1,17 @@
#include "dungeon_ai_item_weight.h"
#include "dungeon_ai_targeting_1.h"
#include "dungeon_logic.h"
#include "dungeon_map_access.h"
#include "dungeon_pokemon_attributes_1.h"
#include "dungeon_statuses.h"
#include "dungeon_util.h"
#include "dungeon_util_static.h"
#include "main_02054BE0.h"
#include "number_util.h"
#include "overlay_29_0231E9F0.h"
#include "targeting.h"
#include "util.h"
extern bool8 IsAdjacentToEnemy(struct entity *entity);
extern u8 GetMaxPpWrapper(struct move *move);
extern bool8 MonsterHasNegativeStatus(struct entity *monster, bool8 check_held_item);
extern enum mobility_type GetMobilityType(s16 monster_id);
u32 GetAiUseItemProbability(struct entity *item_consumer, struct item *item, u32 flags)
@@ -368,3 +371,18 @@ u32 GetAiUseItemProbability(struct entity *item_consumer, struct item *item, u32
}
return item_weight;
}
bool8 IsAdjacentToEnemy(struct entity *entity)
{
for (s32 direction = 0; direction < NUM_DIRECTIONS; direction++)
{
struct tile *map_tile = GetTile(entity->pos.x + DIRECTIONS_XY[direction].x, entity->pos.y + DIRECTIONS_XY[direction].y);
if (map_tile->monster != NULL)
{
s32 no_pokemon = map_tile->monster->type == ENTITY_NOTHING;
if (no_pokemon != TRUE && GetTreatmentBetweenMonsters(entity, map_tile->monster, FALSE, TRUE) == TREATMENT_TREAT_AS_ENEMY)
return TRUE;
}
}
return FALSE;
}

74
src/dungeon_logic.c Normal file
View File

@@ -0,0 +1,74 @@
#include "dungeon_logic.h"
#include "dungeon_logic_0.h"
#include "dungeon_util_static.h"
extern bool8 MonsterHasImmobilizingStatus(struct entity *monster);
extern bool8 MonsterHasAttackInterferingStatus(struct entity *monster);
extern bool8 MonsterHasSkillInterferingStatus(struct entity *monster);
extern bool8 MonsterHasLeechSeedStatus(struct entity *monster);
extern bool8 MonsterHasWhifferStatus(struct entity *monster);
extern bool8 IsMonsterVisuallyImpaired(struct entity *monster, bool8 check_held_item);
extern bool8 IsMonsterMuzzled(struct entity *monster);
extern bool8 MonsterHasMiracleEyeStatus(struct entity *monster);
bool8 MonsterHasNegativeStatus(struct entity *monster, bool8 check_held_item)
{
struct monster *pokemon_info = GetEntInfo(monster);
if (IsMonsterDrowsy(monster))
return TRUE;
if (MonsterHasNonvolatileNonsleepStatus(monster))
return TRUE;
if (MonsterHasImmobilizingStatus(monster))
return TRUE;
if (MonsterHasAttackInterferingStatus(monster))
return TRUE;
if (MonsterHasSkillInterferingStatus(monster))
return TRUE;
if (MonsterHasLeechSeedStatus(monster))
return TRUE;
if (MonsterHasWhifferStatus(monster))
return TRUE;
if (IsMonsterVisuallyImpaired(monster, check_held_item))
return TRUE;
if (IsMonsterMuzzled(monster))
return TRUE;
if (MonsterHasMiracleEyeStatus(monster))
return TRUE;
if (pokemon_info->exposed)
return TRUE;
if (pokemon_info->perish_song_turns != 0)
return TRUE;
for (s32 i = 0; i < MAX_MON_MOVES; i++)
{
bool8 move_exists;
struct move *move = &pokemon_info->moves.moves[i];
if (move->flags0 & MOVE_FLAG_EXISTS)
move_exists = TRUE;
else
move_exists = FALSE;
if (move_exists && move->flags2 & MOVE_FLAG_SEALED)
return TRUE;
}
for (s32 i = 0; i < NUM_SPEED_COUNTERS; i++)
{
if (pokemon_info->speed_down_counters[i] != 0)
return TRUE;
}
return FALSE;
}

22
src/dungeon_logic_0.c Normal file
View File

@@ -0,0 +1,22 @@
#include "dungeon_logic_0.h"
#include "dungeon_util_static.h"
bool8 IsMonsterDrowsy(struct entity *monster)
{
struct monster *pokemon_info = GetEntInfo(monster);
if (pokemon_info->sleep_class_status.sleep == STATUS_SLEEP_SLEEP)
return TRUE;
if (pokemon_info->sleep_class_status.sleep == STATUS_SLEEP_NIGHTMARE)
return TRUE;
if (pokemon_info->sleep_class_status.sleep == STATUS_SLEEP_YAWNING)
return TRUE;
return FALSE;
}
bool8 MonsterHasNonvolatileNonsleepStatus(struct entity *monster)
{
return GetEntInfo(monster)->burn_class_status.burn != STATUS_BURN_NONE;
}

27
src/moves.c Normal file
View File

@@ -0,0 +1,27 @@
#include "moves.h"
#include "move_data.h"
extern struct move_data_table_outer DUNGEON_MOVE_TABLES;
extern s16 MULTITALENT_PP_BOOST_AMOUNT;
extern s16 EXCLUSIVE_ITEM_PP_BOOST_AMOUNT;
extern s16 UNKNOWN_PP_BOOST_AMOUNT;
u32 GetMaxPp(struct move *move)
{
s16 pp = DUNGEON_MOVE_TABLES.moves->moves[move->id].pp;
if (move->flags2 & MOVE_FLAG_MULTITALENT_PP_BOOST)
pp += MULTITALENT_PP_BOOST_AMOUNT;
if (move->flags2 & MOVE_FLAG_EXCLUSIVE_ITEM_PP_BOOST)
pp += EXCLUSIVE_ITEM_PP_BOOST_AMOUNT;
if (move->flags2 & MOVE_FLAG_UNKNOWN_PP_BOOST)
pp += UNKNOWN_PP_BOOST_AMOUNT;
if (pp > 99)
pp = 99;
return pp;
}

View File

@@ -0,0 +1,7 @@
#include "overlay_29_0231E9F0.h"
#include "moves.h"
s16 GetMaxPpWrapper(struct move *move)
{
return GetMaxPp(move);
}