mirror of
https://github.com/pret/pmd-sky.git
synced 2026-10-01 06:37:50 -05:00
Merge pull request #143 from AnonymousRandomPerson/main
Some checks failed
build / build (push) Has been cancelled
Some checks failed
build / build (push) Has been cancelled
Decomped more AI functions
This commit is contained in:
@@ -9,6 +9,6 @@
|
||||
.public GetTreatmentBetweenMonsters
|
||||
.public InitMove
|
||||
.public IsMonster__0231A9D4
|
||||
.public ov29_0231985C
|
||||
.public ResetAiCanAttackInDirection
|
||||
.public ov29_0231B008
|
||||
.public TryAddTargetToAiTargetList
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
#pragma once
|
||||
.public DUNGEON_MOVE_TABLES
|
||||
.public GetMaxPp
|
||||
.public _02098D64
|
||||
|
||||
3
asm/include/main_02013864.inc
Normal file
3
asm/include/main_02013864.inc
Normal file
@@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
.public DUNGEON_MOVE_TABLES
|
||||
.public _02098D64
|
||||
@@ -1,477 +1,3 @@
|
||||
#pragma once
|
||||
.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 _0209A230_EU
|
||||
.public _0209A2D4_EU
|
||||
.public _0209A2F4_EU
|
||||
.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 _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 ArrayCopy32
|
||||
.public ArrayFill32
|
||||
.public AUDIO_COMMANDS_BUFFER
|
||||
.public BagHasExclusiveItemTypeForMonster
|
||||
.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 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 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 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 IqSkillFlagTest
|
||||
.public LANGUAGE_INFO_DATA
|
||||
.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 PUNCH_MOVE_LIST
|
||||
.public Rand16Bit
|
||||
.public RECOIL_MOVE_LIST
|
||||
.public Render3dProcessQueue
|
||||
.public RENDER_3D
|
||||
.public RENDER_3D_FUNCTIONS_64
|
||||
.public ResumeBgm
|
||||
.public Rgb8ToRgb5
|
||||
.public sprintf
|
||||
.public strcat
|
||||
.public strcmp
|
||||
.public strcpy
|
||||
.public StringFromId
|
||||
.public strlen
|
||||
.public strncmp
|
||||
.public StrncpySimpleNoPadSafe
|
||||
.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_02025480
|
||||
.public sub_020257FC
|
||||
.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 TEAM_MEMBER_TABLE_PTR
|
||||
.public UnloadFile
|
||||
.public vsprintf
|
||||
.public WAN_TABLE
|
||||
.public ZInit8
|
||||
.public _s32_div_f
|
||||
|
||||
479
asm/include/main_02013C30.inc
Normal file
479
asm/include/main_02013C30.inc
Normal file
@@ -0,0 +1,479 @@
|
||||
#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 GetMoveActualAccuracy
|
||||
.public GetMoveBasePowerFromId
|
||||
.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 StrncpySimpleNoPadSafe
|
||||
.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 _0209A230_EU
|
||||
.public _0209A2D4_EU
|
||||
.public _0209A2F4_EU
|
||||
.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 _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_02025480
|
||||
.public sub_020257FC
|
||||
.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
|
||||
@@ -3,21 +3,18 @@
|
||||
.public AdvanceFrame
|
||||
.public AiMovement
|
||||
.public AnimationDelayOrSomething
|
||||
.public ApplyItemEffect
|
||||
.public BAG_ITEMS_PTR_MIRROR
|
||||
.public BELLY_DRAIN_IN_WALLS_INT
|
||||
.public CanMonsterSpawn
|
||||
.public CanMonsterUseItem
|
||||
.public CeilFixedPoint
|
||||
.public ChangeMonsterAnimation
|
||||
.public CheckTeamMemberIdx
|
||||
.public CheckVariousStatuses
|
||||
.public CheckVariousStatuses2
|
||||
.public Conversion2IsActive
|
||||
.public DefenderAbilityIsActive__022F96CC
|
||||
.public DIRECTIONS_XY
|
||||
.public DiscoverMinimap
|
||||
.public DUNGEON_PTR
|
||||
.public DefenderAbilityIsActive__022F96CC
|
||||
.public DiscoverMinimap
|
||||
.public DungeonRandInt
|
||||
.public EnableIqSkill
|
||||
.public EndBurnClassStatus
|
||||
@@ -26,48 +23,48 @@
|
||||
.public EndReflectClassStatus
|
||||
.public EndSleepClassStatus
|
||||
.public EntityIsValid__022F7364
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
.public ExclusiveItemEffectIsActive__022FAC98
|
||||
.public GetActiveTeamMember
|
||||
.public GetChebyshevDistance
|
||||
.public GetConversion2ConvertToType
|
||||
.public GetDirectionTowardsPosition
|
||||
.public GetExclusiveItemWithEffectFromBag
|
||||
.public GetFloorType
|
||||
.public GetIdleAnimationId
|
||||
.public GetLeader
|
||||
.public GetLearnableIqSkills
|
||||
.public GetMaxPp
|
||||
.public GetMaxPpWrapper
|
||||
.public GetMobilityType
|
||||
.public GetMonsterEvoStatus
|
||||
.public GetMoveType
|
||||
.public GetMoveTypeForMonster
|
||||
.public GetNbItemsInBag
|
||||
.public GetScenarioBalance
|
||||
.public GetStairsRoom
|
||||
.public GetStairsSpawnPosition
|
||||
.public GetTile
|
||||
.public GetTileAtEntity
|
||||
.public GetTileSafe
|
||||
.public GetTreatmentBetweenMonsters
|
||||
.public GetTypeMatchupBothTypes
|
||||
.public HasHeldItem
|
||||
.public HasMaxGinsengBoost99
|
||||
.public IqSkillIsEnabled
|
||||
.public IsCurrentFixedRoomBossFight
|
||||
.public IsFullFloorFixedRoom
|
||||
.public IsMonsterIdInNormalRange
|
||||
.public IsMonsterSleeping
|
||||
.public IsOneHitKoMove
|
||||
.public ItemZInit
|
||||
.public LogMessageByIdWithPopup
|
||||
.public LogMessageByIdWithPopupCheckUser
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public PointCameraToMonster
|
||||
.public RestoreAllMovePP
|
||||
.public SECONDARY_TERRAIN_TYPES
|
||||
.public SetActionPassTurnOrWalk
|
||||
.public ShouldDisplayEntityWrapper
|
||||
.public ShowPpRestoreEffect
|
||||
.public SubFixedPoint
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryInflictBurnStatus
|
||||
.public TryInflictPausedStatus
|
||||
.public UpdateCamera
|
||||
.public UpdateMinimap
|
||||
.public UpdateStatusIconFlags
|
||||
.public ov29_022E0A04
|
||||
.public ov29_022E4160
|
||||
.public ov29_022E68BC
|
||||
.public ov29_022E68D8
|
||||
.public ov29_022E6928
|
||||
.public ov29_022E8104
|
||||
.public ov29_022E81F8
|
||||
.public ov29_022EA370
|
||||
@@ -79,31 +76,12 @@
|
||||
.public ov29_02304A48
|
||||
.public ov29_02307CE0
|
||||
.public ov29_02307DD0
|
||||
.public ov29_0230F9A4
|
||||
.public ov29_02344B44
|
||||
.public ov29_0234B034
|
||||
.public ov29_0234B084
|
||||
.public ov29_0234B09C
|
||||
.public PointCameraToMonster
|
||||
.public RandInt
|
||||
.public RemoveEquivItem
|
||||
.public RestoreAllMovePP
|
||||
.public SECONDARY_TERRAIN_TYPES
|
||||
.public SetActionPassTurnOrWalk
|
||||
.public ShouldDisplayEntityWrapper
|
||||
.public ShouldTryEatItem
|
||||
.public ShowPpRestoreEffect
|
||||
.public sub_0201405C
|
||||
.public sub_02017C50
|
||||
.public sub_0204AEF0
|
||||
.public sub_02050FF8
|
||||
.public sub_02052E2C
|
||||
.public sub_02056228
|
||||
.public SubFixedPoint
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryIncreaseHp
|
||||
.public TryInflictBurnStatus
|
||||
.public TryInflictPausedStatus
|
||||
.public UpdateCamera
|
||||
.public UpdateMinimap
|
||||
.public UpdateStatusIconFlags
|
||||
|
||||
32
asm/include/overlay_29_022FACBC.inc
Normal file
32
asm/include/overlay_29_022FACBC.inc
Normal file
@@ -0,0 +1,32 @@
|
||||
#pragma once
|
||||
.public ApplyItemEffect
|
||||
.public BAG_ITEMS_PTR_MIRROR
|
||||
.public CanMonsterUseItem
|
||||
.public DUNGEON_PTR
|
||||
.public EntityIsValid__022F7364
|
||||
.public ExclusiveItemEffectIsActive__022FAC98
|
||||
.public GetFloorType
|
||||
.public GetLeader
|
||||
.public GetMoveType
|
||||
.public GetNbItemsInBag
|
||||
.public GetScenarioBalance
|
||||
.public GetStairsSpawnPosition
|
||||
.public GetTreatmentBetweenMonsters
|
||||
.public GetTypeMatchupBothTypes
|
||||
.public HasMaxGinsengBoost99
|
||||
.public IqSkillIsEnabled
|
||||
.public IsCurrentFixedRoomBossFight
|
||||
.public IsOneHitKoMove
|
||||
.public ItemZInit
|
||||
.public LogMessageByIdWithPopupCheckUser
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public RandInt
|
||||
.public RemoveEquivItem
|
||||
.public ShouldTryEatItem
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryIncreaseHp
|
||||
.public ov29_022E6928
|
||||
.public ov29_022EA370
|
||||
.public ov29_0230F9A4
|
||||
.public ov29_02344B44
|
||||
.public ov29_0234B09C
|
||||
@@ -1,21 +1,12 @@
|
||||
#pragma once
|
||||
.public AbilityIsActive
|
||||
.public DUNGEON_PTR
|
||||
.public EntityIsValid__023000E4
|
||||
.public EXCL_ITEM_EFFECTS_WEATHER_ATK_SPEED_BOOST
|
||||
.public EXCL_ITEM_EFFECTS_WEATHER_MOVE_SPEED_BOOST
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
.public ExclusiveItemEffectIsActive__022FFF28
|
||||
.public GetApparentWeather
|
||||
.public GetExclusiveItemWithEffectFromBag
|
||||
.public GetMobilityTypeCheckSlipAndFloating
|
||||
.public GetSpeedStatus
|
||||
.public GetTile
|
||||
.public IqSkillIsEnabled
|
||||
.public IsCurrentTilesetBackground
|
||||
.public ItemIsActive__022FF898
|
||||
.public LogMessageByIdWithPopupCheckUser
|
||||
.public MonsterIsType
|
||||
.public ov29_022E655C
|
||||
.public ov29_02344B44
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public UpdateStateFlags
|
||||
|
||||
13
asm/include/overlay_29_022FFF4C.inc
Normal file
13
asm/include/overlay_29_022FFF4C.inc
Normal file
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
.public AbilityIsActive
|
||||
.public CalcSpeedStage
|
||||
.public EXCL_ITEM_EFFECTS_WEATHER_ATK_SPEED_BOOST
|
||||
.public EntityIsValid__023000E4
|
||||
.public ExclusiveItemEffectIsActive__022FFF28
|
||||
.public GetApparentWeather
|
||||
.public GetExclusiveItemWithEffectFromBag
|
||||
.public LogMessageByIdWithPopupCheckUser
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public UpdateStateFlags
|
||||
.public ov29_022E655C
|
||||
.public ov29_02344B44
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
.public AbilityIsActive
|
||||
.public DefenderAbilityIsActive__02301A0C
|
||||
.public DUNGEON_PTR
|
||||
.public DefenderAbilityIsActive__02301A0C
|
||||
.public EntityIsValid__023000E4
|
||||
.public GravityIsActive
|
||||
.public ov29_022FAFD4
|
||||
|
||||
2
asm/include/overlay_29_02301E88.inc
Normal file
2
asm/include/overlay_29_02301E88.inc
Normal file
@@ -0,0 +1,2 @@
|
||||
#pragma once
|
||||
.public GravityIsActive
|
||||
@@ -1,2 +0,0 @@
|
||||
#pragma once
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
@@ -1,8 +1,4 @@
|
||||
#pragma once
|
||||
.public DIRECTIONS_XY
|
||||
.public DUNGEON_PTR
|
||||
.public EntityIsValid__0230F008
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
.public GetTile
|
||||
.public IsMonster__0230F980
|
||||
.public ItemIsActive__0230F810
|
||||
.public ExclusiveItemEffectIsActive__0230F8AC
|
||||
|
||||
6
asm/include/overlay_29_0230F8D0.inc
Normal file
6
asm/include/overlay_29_0230F8D0.inc
Normal file
@@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
.public DIRECTIONS_XY
|
||||
.public EntityIsValid__0230F008
|
||||
.public GetTile
|
||||
.public IsMonster__0230F980
|
||||
.public ItemIsActive__0230F810
|
||||
@@ -18,7 +18,7 @@
|
||||
.public EndSureShotClassStatus
|
||||
.public EntityIsValid__02311010
|
||||
.public EntityIsValid__023118B4
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
.public ExclusiveItemEffectIsActive__02311064
|
||||
.public GetApparentWeather
|
||||
.public GetRegenSpeed
|
||||
.public ICE_BODY_BONUS_REGEN
|
||||
@@ -26,12 +26,12 @@
|
||||
.public IsFloorOver
|
||||
.public ItemIsActive__02311034
|
||||
.public LogMessageByIdWithPopupCheckUser
|
||||
.public ov10_022C4674
|
||||
.public ov10_022C46F8
|
||||
.public ov29_0234B294
|
||||
.public ov29_02353318
|
||||
.public RAIN_ABILITY_BONUS_REGEN
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TickStatusTurnCounter
|
||||
.public UpdateStatusIconFlags
|
||||
.public WISH_BONUS_REGEN
|
||||
.public ov10_022C4674
|
||||
.public ov10_022C46F8
|
||||
.public ov29_0234B294
|
||||
.public ov29_02353318
|
||||
@@ -1,19 +1,16 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public AllocateTemp1024ByteBufferFromPool
|
||||
.public CalcSpeedStage
|
||||
.public CalcSpeedStageWrapper
|
||||
.public CalcStatusDuration
|
||||
.public ChangeShayminForme
|
||||
.public CopyStringFromId
|
||||
.public DefenderAbilityIsActive__02311B94
|
||||
.public DIRECTIONS_XY
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRandInt
|
||||
.public DungeonRandOutcome__022EAB20
|
||||
.public DefenderAbilityIsActive__02311B94
|
||||
.public EntityIsValid__023118B4
|
||||
.public EntityIsValid__02315118
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
.public ExclusiveItemEffectIsActiveWithLogging
|
||||
.public ExclusiveItemEffectIsActive__023147EC
|
||||
.public GetExclusiveItemWithEffectFromBag
|
||||
.public GetTile
|
||||
.public GetTileAtEntity
|
||||
@@ -21,11 +18,16 @@
|
||||
.public IsProtectedFromSleepClassStatus
|
||||
.public IsProtectedFromStatDrops
|
||||
.public ItemIsActive__02311BF8
|
||||
.public ItemIsActive__0231513C
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public MonsterIsType
|
||||
.public MultiplyByFixedPoint
|
||||
.public ov10_022C4618
|
||||
.public PlayExclamationPointEffect__022E5D4C
|
||||
.public SECONDARY_TERRAIN_TYPES
|
||||
.public SafeguardIsActive
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryActivateQuickFeet
|
||||
.public TryActivateSteadfast
|
||||
.public UpdateStatusIconFlags
|
||||
.public ov10_022C4728
|
||||
.public ov10_022C479C
|
||||
.public ov10_022C47A0
|
||||
@@ -35,14 +37,11 @@
|
||||
.public ov10_022C4878
|
||||
.public ov10_022C4880
|
||||
.public ov10_022C4884
|
||||
.public ov10_022C488C
|
||||
.public ov10_022C4890
|
||||
.public ov10_022C4894
|
||||
.public ov10_022C4898
|
||||
.public ov10_022C48A0
|
||||
.public ov10_022C48AC
|
||||
.public ov10_022C48B8
|
||||
.public ov29_022E41CC
|
||||
.public ov29_022E41F0
|
||||
.public ov29_022E4240
|
||||
.public ov29_022E4290
|
||||
@@ -53,8 +52,6 @@
|
||||
.public ov29_022E4388
|
||||
.public ov29_022E43D8
|
||||
.public ov29_022E4428
|
||||
.public ov29_022E44CC
|
||||
.public ov29_022E451C
|
||||
.public ov29_022E4B8C
|
||||
.public ov29_022E4BA0
|
||||
.public ov29_022E4BB4
|
||||
@@ -72,8 +69,6 @@
|
||||
.public ov29_022E5258
|
||||
.public ov29_022E52F8
|
||||
.public ov29_022E53EC
|
||||
.public ov29_022E543C
|
||||
.public ov29_022E60E4
|
||||
.public ov29_0230040C
|
||||
.public ov29_023018AC
|
||||
.public ov29_02304A48
|
||||
@@ -82,11 +77,3 @@
|
||||
.public ov29_0234B034
|
||||
.public ov29_0234B084
|
||||
.public ov29_0234B0B4
|
||||
.public ov29_02353318
|
||||
.public PlayExclamationPointEffect__022E5D4C
|
||||
.public SafeguardIsActive
|
||||
.public SECONDARY_TERRAIN_TYPES
|
||||
.public SPEED_BOOST_TURN_RANGE
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryActivateSteadfast
|
||||
.public UpdateStatusIconFlags
|
||||
|
||||
29
asm/include/overlay_29_02314810.inc
Normal file
29
asm/include/overlay_29_02314810.inc
Normal file
@@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public CalcSpeedStage
|
||||
.public CalcSpeedStageWrapper
|
||||
.public CalcStatusDuration
|
||||
.public DungeonRandInt
|
||||
.public DungeonRandOutcome__022EAB20
|
||||
.public EntityIsValid__023118B4
|
||||
.public EntityIsValid__02315118
|
||||
.public ExclusiveItemEffectIsActive__023147EC
|
||||
.public GetExclusiveItemWithEffectFromBag
|
||||
.public IsProtectedFromNegativeStatus
|
||||
.public ItemIsActive__0231513C
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public SPEED_BOOST_TURN_RANGE
|
||||
.public SafeguardIsActive
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public UpdateStatusIconFlags
|
||||
.public ov10_022C4618
|
||||
.public ov10_022C488C
|
||||
.public ov10_022C4890
|
||||
.public ov29_022E41CC
|
||||
.public ov29_022E44CC
|
||||
.public ov29_022E451C
|
||||
.public ov29_022E543C
|
||||
.public ov29_022E60E4
|
||||
.public ov29_02344B44
|
||||
.public ov29_0234B084
|
||||
.public ov29_02353318
|
||||
@@ -1,36 +1,12 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public CAN_ATTACK_IN_DIRECTION
|
||||
.public CalcStatusDuration
|
||||
.public CanAttackInDirection
|
||||
.public CanSeeTarget
|
||||
.public DIRECTIONS_XY
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRandInt
|
||||
.public DungeonRandOutcome__022EAB20
|
||||
.public EntityIsValid__02318E4C
|
||||
.public EntityIsValid__02319F8C
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
.public GetDirectionTowardsPosition
|
||||
.public GetEntityMoveTargetAndRange
|
||||
.public GetMoveTargetAndRange
|
||||
.public GetMoveTypeForMonster
|
||||
.public GetTile
|
||||
.public IqSkillIsEnabled
|
||||
.public IsAffectedByTaunt
|
||||
.public IsAiTargetEligible
|
||||
.public IsBlinded
|
||||
.public IsTargetInRange
|
||||
.public ExclusiveItemEffectIsActive__023197A8
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
.public POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
.public POTENTIAL_TARGETS
|
||||
.public StatusCheckerCheck
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryAddTargetToAiTargetList
|
||||
.public UpdateStatusIconFlags
|
||||
.public WeightMove
|
||||
.public abs
|
||||
.public ov10_022C4648
|
||||
.public ov10_022C472C
|
||||
.public ov10_022C4730
|
||||
|
||||
3
asm/include/overlay_29_023197CC.inc
Normal file
3
asm/include/overlay_29_023197CC.inc
Normal file
@@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
.public EntityIsValid__02318E4C
|
||||
.public ExclusiveItemEffectIsActive__023197A8
|
||||
26
asm/include/overlay_29_02319880.inc
Normal file
26
asm/include/overlay_29_02319880.inc
Normal file
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
.public AI_CAN_ATTACK_IN_DIRECTION
|
||||
.public AI_POTENTIAL_ATTACK_TARGETS
|
||||
.public AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
.public AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
.public CanAttackInDirection
|
||||
.public CanSeeTarget
|
||||
.public DIRECTIONS_XY
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRandInt
|
||||
.public EntityIsValid__02319F8C
|
||||
.public GetDirectionTowardsPosition
|
||||
.public GetEntityMoveTargetAndRange
|
||||
.public GetMoveTargetAndRange
|
||||
.public GetMoveTypeForMonster
|
||||
.public GetTile
|
||||
.public IqSkillIsEnabled
|
||||
.public IsAffectedByTaunt
|
||||
.public IsAiTargetEligible
|
||||
.public IsBlinded
|
||||
.public IsTargetInRange
|
||||
.public ResetAiCanAttackInDirection
|
||||
.public StatusCheckerCheck
|
||||
.public TryAddTargetToAiTargetList
|
||||
.public WeightMoveWithIqSkills
|
||||
.public abs
|
||||
@@ -19,7 +19,7 @@
|
||||
.public ov29_0230B7D4
|
||||
.public ov29_0230F8D0
|
||||
.public ov29_02333FD0
|
||||
.public CAN_ATTACK_IN_DIRECTION
|
||||
.public POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
.public POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
.public POTENTIAL_TARGETS
|
||||
.public AI_CAN_ATTACK_IN_DIRECTION
|
||||
.public AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
.public AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
.public AI_POTENTIAL_ATTACK_TARGETS
|
||||
|
||||
@@ -1,18 +1,8 @@
|
||||
#pragma once
|
||||
.public AreMovesEnabled
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRandOutcome__022EAB20
|
||||
.public EntityIsValid__02319F8C
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
.public GetNumberOfAttacks
|
||||
.public ExclusiveItemEffectIsActive__0231A87C
|
||||
.public IqSkillIsEnabled
|
||||
.public IsFloorOver
|
||||
.public IsMonster__0231A9D4
|
||||
.public LogMessageByIdWithPopupCheckUser
|
||||
.public ov10_022C459C
|
||||
.public ov29_022FA574
|
||||
.public ov29_0232145C
|
||||
.public PlayExclamationPointEffect__022E4880
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryActivateTruant
|
||||
.public UpdateMovePp
|
||||
.public ov10_022C459C
|
||||
|
||||
13
asm/include/overlay_29_0231A8A0.inc
Normal file
13
asm/include/overlay_29_0231A8A0.inc
Normal file
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
.public AreMovesEnabled
|
||||
.public DUNGEON_PTR
|
||||
.public EntityIsValid__02319F8C
|
||||
.public GetNumberOfAttacks
|
||||
.public IsFloorOver
|
||||
.public IsMonster__0231A9D4
|
||||
.public LogMessageByIdWithPopupCheckUser
|
||||
.public ShouldUsePp
|
||||
.public TryActivateTruant
|
||||
.public UpdateMovePp
|
||||
.public ov29_022FA574
|
||||
.public ov29_0232145C
|
||||
@@ -1,39 +1,20 @@
|
||||
#pragma once
|
||||
.public AiConsiderMove
|
||||
.public AreOrbsAllowed
|
||||
.public BoostSpeedOneStage
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRandInt
|
||||
.public EnemyEvolution
|
||||
.public EntityIsValid__02319F8C
|
||||
.public EntityIsValid__0231B194
|
||||
.public ExclusiveItemEffectIsActive__0231A87C
|
||||
.public GetApparentWeather
|
||||
.public GetItemMoveId16
|
||||
.public GetItemToUse
|
||||
.public GetMoveTargetAndRange
|
||||
.public GetTreasureBoxChances
|
||||
.public InitMove
|
||||
.public IsFloorOver
|
||||
.public IsMonster__0231A9D4
|
||||
.public IsMoveRangeString19
|
||||
.public LogMessageByIdWithPopupCheckParticipants
|
||||
.public LogMessageByIdWithPopupCheckUser
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public MonsterIsType
|
||||
.public NATURAL_GIFT_ITEM_TABLE
|
||||
.public ov29_022E4110
|
||||
.public ov29_022EB4E8
|
||||
.public ov29_022FB9E0
|
||||
.public ov29_022FBAB4
|
||||
.public ov29_02321274
|
||||
.public ov29_0232145C
|
||||
.public ov29_02322374
|
||||
.public ov29_0232E80C
|
||||
.public ov29_02344B44
|
||||
.public RemoveUsedItem
|
||||
.public SetActionUseMoveAi
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryActivateTruant
|
||||
.public UpdateAiTargetPos
|
||||
.public WEATHER_BALL_TYPE_TABLE
|
||||
.public ov29_022EB4E8
|
||||
.public ov29_022FBAB4
|
||||
.public ov29_02321274
|
||||
.public ov29_02322374
|
||||
.public ov29_02344B44
|
||||
|
||||
20
asm/include/overlay_29_0231AD38.inc
Normal file
20
asm/include/overlay_29_0231AD38.inc
Normal file
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
.public BoostSpeedOneStage
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRandInt
|
||||
.public EntityIsValid__0231B194
|
||||
.public GetApparentWeather
|
||||
.public GetEntityMoveTargetAndRange
|
||||
.public GetTreasureBoxChances
|
||||
.public IsMonster__0231A9D4
|
||||
.public LogMessageByIdWithPopupCheckParticipants
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public NATURAL_GIFT_ITEM_TABLE
|
||||
.public SetActionUseMoveAi
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public WEATHER_BALL_TYPE_TABLE
|
||||
.public ov29_022E4110
|
||||
.public ov29_022FB9E0
|
||||
.public ov29_0232145C
|
||||
.public ov29_0232E80C
|
||||
.public ov29_02344B44
|
||||
@@ -1,40 +1,24 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public AdvanceFrame
|
||||
.public AnimationDelayOrSomething
|
||||
.public DETECT_BAND_MOVE_ACCURACY_DROP
|
||||
.public DIRECTIONS_XY
|
||||
.public DUNGEON_PTR
|
||||
.public DefenderAbilityIsActive__02322D64
|
||||
.public DungeonRandInt
|
||||
.public DungeonRandRange
|
||||
.public EXCL_ITEM_EFFECTS_EVASION_BOOST
|
||||
.public EntityIsValid__02321438
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
.public ExclusiveItemEffectIsActive__02323918
|
||||
.public ExecuteMoveEffect
|
||||
.public FormatMoveStringMore
|
||||
.public GetApparentWeather
|
||||
.public GetBodySize
|
||||
.public GetEntityMoveTargetAndRange
|
||||
.public GetMonsterGenderVeneer
|
||||
.public GetMoveAccuracyOrAiChance
|
||||
.public GetMoveAnimation
|
||||
.public GetMoveAnimationId
|
||||
.public GetMoveAnimationSpeed
|
||||
.public GetMoveNbStrikes
|
||||
.public GetTile
|
||||
.public GetTreatmentBetweenMonsters
|
||||
.public HasHeldItem
|
||||
.public IqSkillIsEnabled
|
||||
.public IsChargingTwoTurnMove
|
||||
.public LogMessageQuiet
|
||||
.public LogMessageWithPopup
|
||||
.public MALE_ACCURACY_STAGE_MULTIPLIERS
|
||||
.public MALE_EVASION_STAGE_MULTIPLIERS
|
||||
.public MoveIsNotPhysical
|
||||
.public PlayMoveAnimation
|
||||
.public PositionHasMonster
|
||||
.public QUICK_DODGER_MOVE_ACCURACY_DROP
|
||||
.public ShouldDisplayEntityWrapper
|
||||
.public TwoTurnMoveForcedMiss
|
||||
.public _s32_div_f
|
||||
@@ -43,16 +27,13 @@
|
||||
.public ov10_022BEB2C
|
||||
.public ov10_022BF01C
|
||||
.public ov10_022BFDAC
|
||||
.public ov29_022E28D4
|
||||
.public ov29_022E2CA0
|
||||
.public ov29_022EA370
|
||||
.public ov29_022F87C0
|
||||
.public ov29_022F8830
|
||||
.public ov29_022F88C0
|
||||
.public ov29_022FAFD4
|
||||
.public ov29_0230040C
|
||||
.public ov29_023024E0
|
||||
.public ov29_02304A48
|
||||
.public ov29_023243B4
|
||||
.public ov29_02324D60
|
||||
.public ov29_02324E78
|
||||
.public ov29_023250D4
|
||||
@@ -62,8 +43,6 @@
|
||||
.public ov29_0235175C
|
||||
.public ov29_02352A54
|
||||
.public ov29_02352A6C
|
||||
.public ov29_02352A8C
|
||||
.public ov29_0235370C
|
||||
.public sub_020018D0
|
||||
.public sub_02001980
|
||||
.public sub_0201CF90
|
||||
|
||||
45
asm/include/overlay_29_0232393C.inc
Normal file
45
asm/include/overlay_29_0232393C.inc
Normal file
@@ -0,0 +1,45 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public AdvanceFrame
|
||||
.public AnimationDelayOrSomething
|
||||
.public DETECT_BAND_MOVE_ACCURACY_DROP
|
||||
.public DIRECTIONS_XY
|
||||
.public DUNGEON_PTR
|
||||
.public DefenderAbilityIsActive__02322D64
|
||||
.public DungeonRandInt
|
||||
.public DungeonRandRange
|
||||
.public EXCL_ITEM_EFFECTS_EVASION_BOOST
|
||||
.public EntityIsValid__02321438
|
||||
.public ExclusiveItemEffectIsActive__02323918
|
||||
.public GetApparentWeather
|
||||
.public GetEntityMoveTargetAndRange
|
||||
.public GetMonsterGenderVeneer
|
||||
.public GetMoveAccuracyOrAiChance
|
||||
.public GetMoveAnimationSpeed
|
||||
.public GetMoveNbStrikes
|
||||
.public GetTreatmentBetweenMonsters
|
||||
.public HasHeldItem
|
||||
.public IqSkillIsEnabled
|
||||
.public IsChargingTwoTurnMove
|
||||
.public MALE_ACCURACY_STAGE_MULTIPLIERS
|
||||
.public MALE_EVASION_STAGE_MULTIPLIERS
|
||||
.public MoveIsNotPhysical
|
||||
.public PlayMoveAnimation
|
||||
.public PositionHasMonster
|
||||
.public QUICK_DODGER_MOVE_ACCURACY_DROP
|
||||
.public TwoTurnMoveForcedMiss
|
||||
.public _s32_div_f
|
||||
.public ov10_022BDE50
|
||||
.public ov10_022BEB2C
|
||||
.public ov29_022E28D4
|
||||
.public ov29_022E2CA0
|
||||
.public ov29_022EA370
|
||||
.public ov29_022F87C0
|
||||
.public ov29_022F8830
|
||||
.public ov29_022F88C0
|
||||
.public ov29_023024E0
|
||||
.public ov29_02322F78
|
||||
.public ov29_0234B4CC
|
||||
.public ov29_02352A8C
|
||||
.public ov29_0235370C
|
||||
.public sub_020018D0
|
||||
@@ -1,20 +1,16 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public AbilityIsActiveVeneer
|
||||
.public abs
|
||||
.public AnimationDelayOrSomething
|
||||
.public ApplyDamageAndEffects
|
||||
.public ApplyDamageAndEffectsWrapper
|
||||
.public AreEntitiesAdjacent
|
||||
.public ATK_STAT_IDX
|
||||
.public CalcDamage
|
||||
.public CanAttackInDirection
|
||||
.public CanBeSnatched
|
||||
.public MonsterCannotAttack
|
||||
.public CanSeeTarget
|
||||
.public CanHitWithRegularAttack
|
||||
.public CeilFixedPoint
|
||||
.public Conversion2IsActive
|
||||
.public CreateMainMenus
|
||||
.public DIRECTIONS_XY
|
||||
.public DUNGEON_PTR
|
||||
.public DefenderAbilityIsActive__02332A0C
|
||||
.public DisplayAnimatedNumbers
|
||||
.public DoMoveAbsorb
|
||||
.public DoMoveAcupressure
|
||||
@@ -57,9 +53,6 @@
|
||||
.public DoMoveCrunch
|
||||
.public DoMoveCrushClaw
|
||||
.public DoMoveCurse
|
||||
.public DoMoveDamage__02325DC0
|
||||
.public DoMoveDamage__0232A500
|
||||
.public DoMoveDamage__0232B8B0
|
||||
.public DoMoveDamageBoostAllStats
|
||||
.public DoMoveDamageBurn10
|
||||
.public DoMoveDamageBurn10FlameWheel
|
||||
@@ -87,6 +80,9 @@
|
||||
.public DoMoveDamageStealItem
|
||||
.public DoMoveDamageWeightDependent
|
||||
.public DoMoveDamageWithRecoil
|
||||
.public DoMoveDamage__02325DC0
|
||||
.public DoMoveDamage__0232A500
|
||||
.public DoMoveDamage__0232B8B0
|
||||
.public DoMoveDecoy
|
||||
.public DoMoveDefendOrder
|
||||
.public DoMoveDefenseCurl
|
||||
@@ -138,16 +134,16 @@
|
||||
.public DoMoveHail
|
||||
.public DoMoveHammerArm
|
||||
.public DoMoveHaze
|
||||
.public DoMoveHeadbutt
|
||||
.public DoMoveHeadSmash
|
||||
.public DoMoveHeadbutt
|
||||
.public DoMoveHealBlock
|
||||
.public DoMoveHealingWish
|
||||
.public DoMoveHealOrder
|
||||
.public DoMoveHealStatus
|
||||
.public DoMoveHealingWish
|
||||
.public DoMoveHeartSwap
|
||||
.public DoMoveHelpingHand
|
||||
.public DoMoveHiddenPower
|
||||
.public DoMoveHiJumpKick
|
||||
.public DoMoveHiddenPower
|
||||
.public DoMoveHornDrill
|
||||
.public DoMoveHpGauge
|
||||
.public DoMoveHurl
|
||||
@@ -190,8 +186,8 @@
|
||||
.public DoMoveNastyPlot
|
||||
.public DoMoveNaturalGift
|
||||
.public DoMoveNaturePower
|
||||
.public DoMoveNightmare
|
||||
.public DoMoveNightShade
|
||||
.public DoMoveNightmare
|
||||
.public DoMoveNoMove
|
||||
.public DoMoveOctazooka
|
||||
.public DoMoveOhko
|
||||
@@ -216,9 +212,9 @@
|
||||
.public DoMovePowerTrick
|
||||
.public DoMovePresent
|
||||
.public DoMoveProtect
|
||||
.public DoMovePsychUp
|
||||
.public DoMovePsychoBoost
|
||||
.public DoMovePsychoShift
|
||||
.public DoMovePsychUp
|
||||
.public DoMovePsywave
|
||||
.public DoMoveRage
|
||||
.public DoMoveRainDance
|
||||
@@ -268,8 +264,8 @@
|
||||
.public DoMoveSolarBeam
|
||||
.public DoMoveSonicBoom
|
||||
.public DoMoveSpikes
|
||||
.public DoMoveSpite
|
||||
.public DoMoveSpitUp
|
||||
.public DoMoveSpite
|
||||
.public DoMoveSplash
|
||||
.public DoMoveSport
|
||||
.public DoMoveStayAway
|
||||
@@ -296,10 +292,10 @@
|
||||
.public DoMoveTailGlow
|
||||
.public DoMoveTakeaway
|
||||
.public DoMoveTaunt
|
||||
.public DoMoveThunderbolt
|
||||
.public DoMoveThunderFang
|
||||
.public DoMoveThundershock
|
||||
.public DoMoveThunderWave
|
||||
.public DoMoveThunderbolt
|
||||
.public DoMoveThundershock
|
||||
.public DoMoveTickle
|
||||
.public DoMoveTorment
|
||||
.public DoMoveToxic
|
||||
@@ -321,8 +317,8 @@
|
||||
.public DoMoveVitalThrow
|
||||
.public DoMoveWakeUpSlap
|
||||
.public DoMoveWarp
|
||||
.public DoMoveWaterfall
|
||||
.public DoMoveWaterSpout
|
||||
.public DoMoveWaterfall
|
||||
.public DoMoveWeatherBall
|
||||
.public DoMoveWhirlpool
|
||||
.public DoMoveWildCall
|
||||
@@ -332,25 +328,20 @@
|
||||
.public DoMoveWrap
|
||||
.public DoMoveYawn
|
||||
.public DoMoveZapCannon
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRandInt
|
||||
.public DungeonRandOutcome__022EAB20
|
||||
.public DungeonRandOutcomeUserAction
|
||||
.public DungeonRandOutcome__022EAB20
|
||||
.public EntityIsValid__0232E840
|
||||
.public EntityIsValid__02333FAC
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
.public ExclusiveItemEffectIsActive__023329E8
|
||||
.public FOREWARN_FORCED_MISS_CHANCE
|
||||
.public GetApparentWeather
|
||||
.public GetDamageSourceWrapper
|
||||
.public GetDirectionTowardsPosition
|
||||
.public GetEntityMoveTargetAndRange
|
||||
.public GetExclusiveItemWithEffectFromBag
|
||||
.public GetMoveCategory
|
||||
.public GetMoveCritChance
|
||||
.public GetMovePower
|
||||
.public GetMoveTypeForMonster
|
||||
.public GetTile
|
||||
.public GetTileAtEntity
|
||||
.public GetTreatmentBetweenMonsters
|
||||
.public HasHeldItem
|
||||
.public HasLowHealth
|
||||
@@ -365,66 +356,17 @@
|
||||
.public IsReflectedByMagicCoat
|
||||
.public IsSoundMove
|
||||
.public LightningRodStormDrainCheck
|
||||
.public LogMessageByIdQuietCheckUserTarget
|
||||
.public LogMessageByIdWithPopupCheckParticipants
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public LowerOffensiveStat
|
||||
.public MirrorMoveIsActive
|
||||
.public MistIsActive
|
||||
.public MonsterHasNegativeStatus
|
||||
.public MonsterIsType
|
||||
.public MonsterCannotAttack
|
||||
.public MoveHitCheck
|
||||
.public ov10_022BFD6C
|
||||
.public ov10_022C4480
|
||||
.public ov10_022C4504
|
||||
.public ov10_022C4508
|
||||
.public ov10_022C45F8
|
||||
.public ov10_022C460C
|
||||
.public ov10_022C4614
|
||||
.public ov10_022C483C
|
||||
.public ov10_022C6322
|
||||
.public ov29_022E3FCC
|
||||
.public ov29_022E4110
|
||||
.public ov29_022E56A0
|
||||
.public ov29_022E576C
|
||||
.public ov29_022E6338
|
||||
.public ov29_022E6388
|
||||
.public ov29_022E6424
|
||||
.public ov29_022EA370
|
||||
.public ov29_022EDC30
|
||||
.public ov29_022F9840
|
||||
.public ov29_022FB1A8
|
||||
.public ov29_0230040C
|
||||
.public ov29_023007DC
|
||||
.public ov29_02300D50
|
||||
.public ov29_02300DC0
|
||||
.public ov29_02301C2C
|
||||
.public ov29_02304A48
|
||||
.public ov29_02304C3C
|
||||
.public ov29_02307BDC
|
||||
.public ov29_0230D088
|
||||
.public ov29_02314DC4
|
||||
.public ov29_0231AD38
|
||||
.public ov29_023201D0
|
||||
.public ov29_0232393C
|
||||
.public ov29_02324D60
|
||||
.public ov29_023258EC
|
||||
.public ov29_0232E744
|
||||
.public ov29_0233103C
|
||||
.public ov29_023315F4
|
||||
.public ov29_02337E2C
|
||||
.public ov29_023381C0
|
||||
.public ov29_02344B44
|
||||
.public ov29_0234B034
|
||||
.public ov29_02353718
|
||||
.public ov29_0237CA68
|
||||
.public ov29_0237CA74
|
||||
.public ov29_0237CA80
|
||||
.public PerformDamageSequence
|
||||
.public PlayMoveAnimation
|
||||
.public ROLLOUT_ICE_BALL_MISSED
|
||||
.public ShouldDisplayEntityWrapper
|
||||
.public SPATK_STAT_IDX
|
||||
.public sub_02050FF8
|
||||
.public ShouldDisplayEntityWrapper
|
||||
.public SubFixedPoint
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryActivateConversion2
|
||||
@@ -435,3 +377,43 @@
|
||||
.public TryWarp
|
||||
.public TwoTurnMoveForcedMiss
|
||||
.public UpdateShopkeeperModeAfterAttack
|
||||
.public ov10_022BFD6C
|
||||
.public ov10_022C4480
|
||||
.public ov10_022C4504
|
||||
.public ov10_022C4508
|
||||
.public ov10_022C45F8
|
||||
.public ov10_022C460C
|
||||
.public ov10_022C4614
|
||||
.public ov10_022C483C
|
||||
.public ov29_022E3FCC
|
||||
.public ov29_022E4110
|
||||
.public ov29_022E56A0
|
||||
.public ov29_022E6338
|
||||
.public ov29_022E6388
|
||||
.public ov29_022E6424
|
||||
.public ov29_022EA370
|
||||
.public ov29_022F9840
|
||||
.public ov29_022FB1A8
|
||||
.public ov29_0230040C
|
||||
.public ov29_02300D50
|
||||
.public ov29_02300DC0
|
||||
.public ov29_02301C2C
|
||||
.public ov29_02304A48
|
||||
.public ov29_02304C3C
|
||||
.public ov29_02307BDC
|
||||
.public ov29_02314DC4
|
||||
.public ov29_0231AD38
|
||||
.public ov29_023201D0
|
||||
.public ov29_0232393C
|
||||
.public ov29_02324D60
|
||||
.public ov29_023258EC
|
||||
.public ov29_0232E744
|
||||
.public ov29_02333044
|
||||
.public ov29_023381C0
|
||||
.public ov29_02344B44
|
||||
.public ov29_0234B034
|
||||
.public ov29_02353718
|
||||
.public ov29_0237CA68
|
||||
.public ov29_0237CA74
|
||||
.public ov29_0237CA80
|
||||
.public sub_02050FF8
|
||||
|
||||
39
asm/include/overlay_29_02332A0C.inc
Normal file
39
asm/include/overlay_29_02332A0C.inc
Normal file
@@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public ApplyDamageAndEffects
|
||||
.public CalcDamage
|
||||
.public CanAttackInDirection
|
||||
.public CanSeeTarget
|
||||
.public CeilFixedPoint
|
||||
.public Conversion2IsActive
|
||||
.public DUNGEON_PTR
|
||||
.public DisplayAnimatedNumbers
|
||||
.public EntityIsValid__0232E840
|
||||
.public EntityIsValid__02333FAC
|
||||
.public GetApparentWeather
|
||||
.public GetDamageSourceWrapper
|
||||
.public GetDirectionTowardsPosition
|
||||
.public GetMoveCategory
|
||||
.public GetMoveCritChance
|
||||
.public GetMovePower
|
||||
.public GetMoveTypeForMonster
|
||||
.public GetTileAtEntity
|
||||
.public IsCurrentFixedRoomBossFight
|
||||
.public LogMessageByIdQuietCheckUserTarget
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public MirrorMoveIsActive
|
||||
.public MistIsActive
|
||||
.public MonsterHasNegativeStatus
|
||||
.public MonsterIsType
|
||||
.public MoveHitCheck
|
||||
.public ShouldDisplayEntityWrapper
|
||||
.public abs
|
||||
.public ov10_022C6322
|
||||
.public ov29_022E576C
|
||||
.public ov29_022EDC30
|
||||
.public ov29_0230040C
|
||||
.public ov29_023007DC
|
||||
.public ov29_02304A48
|
||||
.public ov29_0230D088
|
||||
.public ov29_02337E2C
|
||||
.public ov29_0234B034
|
||||
@@ -1,2 +0,0 @@
|
||||
#pragma once
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
@@ -207,7 +207,7 @@ sub_01FFBF78: ; 0x01FFBF78
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl ov29_0231985C
|
||||
bl ResetAiCanAttackInDirection
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
bl CanSeeTarget
|
||||
|
||||
@@ -32,197 +32,3 @@ GetInfoMoveGround: ; 0x02013828
|
||||
strb r1, [r0, #4]
|
||||
bx lr
|
||||
arm_func_end GetInfoMoveGround
|
||||
|
||||
arm_func_start GetMoveTargetAndRange
|
||||
GetMoveTargetAndRange: ; 0x02013840
|
||||
ldr r2, _02013860 ; =DUNGEON_MOVE_TABLES
|
||||
ldrh r3, [r0, #4]
|
||||
ldr r2, [r2, #8]
|
||||
mov r0, #0x1a
|
||||
mla r0, r3, r0, r2
|
||||
add r0, r0, r1, lsl #1
|
||||
ldrsh r0, [r0, #4]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02013860: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveTargetAndRange
|
||||
|
||||
arm_func_start GetMoveType
|
||||
GetMoveType: ; 0x02013864
|
||||
ldr r1, _02013880 ; =DUNGEON_MOVE_TABLES
|
||||
ldrh r2, [r0, #4]
|
||||
ldr r1, [r1, #8]
|
||||
mov r0, #0x1a
|
||||
mla r0, r2, r0, r1
|
||||
ldrb r0, [r0, #2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02013880: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveType
|
||||
|
||||
arm_func_start GetMovesetLevelUpPtr
|
||||
GetMovesetLevelUpPtr: ; 0x02013884
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0x258
|
||||
subge r0, r4, #0x258
|
||||
movge r0, r0, lsl #0x10
|
||||
movge r4, r0, asr #0x10
|
||||
mov r0, r4
|
||||
bl IsInvalidMoveset
|
||||
cmp r0, #0
|
||||
ldrne r0, _020138C4 ; =_02098D64
|
||||
ldreq r1, _020138C8 ; =DUNGEON_MOVE_TABLES
|
||||
moveq r0, #0xc
|
||||
smulbbeq r0, r4, r0
|
||||
ldreq r1, [r1]
|
||||
ldreq r0, [r1, r0]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_020138C4: .word _02098D64
|
||||
_020138C8: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMovesetLevelUpPtr
|
||||
|
||||
arm_func_start IsInvalidMoveset
|
||||
IsInvalidMoveset: ; 0x020138CC
|
||||
cmp r0, #0
|
||||
ble _020138E0
|
||||
ldr r1, _020138F0 ; =0x00000229
|
||||
cmp r0, r1
|
||||
blt _020138E8
|
||||
_020138E0:
|
||||
mov r0, #1
|
||||
bx lr
|
||||
_020138E8:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_020138F0: .word 0x00000229
|
||||
arm_func_end IsInvalidMoveset
|
||||
|
||||
arm_func_start GetMovesetHmTmPtr
|
||||
GetMovesetHmTmPtr: ; 0x020138F4
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0x258
|
||||
subge r0, r4, #0x258
|
||||
movge r0, r0, lsl #0x10
|
||||
movge r4, r0, asr #0x10
|
||||
mov r0, r4
|
||||
bl IsInvalidMoveset
|
||||
cmp r0, #0
|
||||
ldrne r0, _02013938 ; =_02098D64
|
||||
ldmneia sp!, {r4, pc}
|
||||
ldr r1, _0201393C ; =DUNGEON_MOVE_TABLES
|
||||
mov r0, #0xc
|
||||
ldr r1, [r1]
|
||||
smlabb r0, r4, r0, r1
|
||||
ldr r0, [r0, #4]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_02013938: .word _02098D64
|
||||
_0201393C: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMovesetHmTmPtr
|
||||
|
||||
arm_func_start GetMovesetEggPtr
|
||||
GetMovesetEggPtr: ; 0x02013940
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0x258
|
||||
subge r0, r4, #0x258
|
||||
movge r0, r0, lsl #0x10
|
||||
movge r4, r0, asr #0x10
|
||||
mov r0, r4
|
||||
bl IsInvalidMoveset
|
||||
cmp r0, #0
|
||||
ldrne r0, _02013984 ; =_02098D64
|
||||
ldmneia sp!, {r4, pc}
|
||||
ldr r1, _02013988 ; =DUNGEON_MOVE_TABLES
|
||||
mov r0, #0xc
|
||||
ldr r1, [r1]
|
||||
smlabb r0, r4, r0, r1
|
||||
ldr r0, [r0, #8]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_02013984: .word _02098D64
|
||||
_02013988: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMovesetEggPtr
|
||||
|
||||
arm_func_start GetMoveAiWeight
|
||||
GetMoveAiWeight: ; 0x0201398C
|
||||
ldr r1, _020139A8 ; =DUNGEON_MOVE_TABLES
|
||||
ldrh r2, [r0, #4]
|
||||
ldr r1, [r1, #8]
|
||||
mov r0, #0x1a
|
||||
mla r0, r2, r0, r1
|
||||
ldrb r0, [r0, #9]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_020139A8: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveAiWeight
|
||||
|
||||
arm_func_start GetMoveNbStrikes
|
||||
GetMoveNbStrikes: ; 0x020139AC
|
||||
ldr r1, _020139C8 ; =DUNGEON_MOVE_TABLES
|
||||
ldrh r2, [r0, #4]
|
||||
ldr r1, [r1, #8]
|
||||
mov r0, #0x1a
|
||||
mla r0, r2, r0, r1
|
||||
ldrb r0, [r0, #0xd]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_020139C8: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveNbStrikes
|
||||
|
||||
arm_func_start GetMoveBasePower
|
||||
GetMoveBasePower: ; 0x020139CC
|
||||
ldrh r2, [r0, #4]
|
||||
mov r0, #0x1a
|
||||
ldr r1, _020139E8 ; =DUNGEON_MOVE_TABLES
|
||||
mul r0, r2, r0
|
||||
ldr r1, [r1, #8]
|
||||
ldrsh r0, [r1, r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_020139E8: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveBasePower
|
||||
|
||||
arm_func_start GetMoveBasePowerGround
|
||||
GetMoveBasePowerGround: ; 0x020139EC
|
||||
ldrh r2, [r0, #2]
|
||||
mov r0, #0x1a
|
||||
ldr r1, _02013A08 ; =DUNGEON_MOVE_TABLES
|
||||
mul r0, r2, r0
|
||||
ldr r1, [r1, #8]
|
||||
ldrsh r0, [r1, r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02013A08: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveBasePowerGround
|
||||
|
||||
arm_func_start GetMoveAccuracyOrAiChance
|
||||
GetMoveAccuracyOrAiChance: ; 0x02013A0C
|
||||
ldr r2, _02013A2C ; =DUNGEON_MOVE_TABLES
|
||||
ldrh r3, [r0, #4]
|
||||
ldr r2, [r2, #8]
|
||||
mov r0, #0x1a
|
||||
mla r0, r3, r0, r2
|
||||
add r0, r0, r1
|
||||
ldrb r0, [r0, #0xa]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02013A2C: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveAccuracyOrAiChance
|
||||
|
||||
arm_func_start GetMoveBasePp
|
||||
GetMoveBasePp: ; 0x02013A30
|
||||
ldr r1, _02013A4C ; =DUNGEON_MOVE_TABLES
|
||||
ldrh r2, [r0, #4]
|
||||
ldr r1, [r1, #8]
|
||||
mov r0, #0x1a
|
||||
mla r0, r2, r0, r1
|
||||
ldrb r0, [r0, #8]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02013A4C: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveBasePp
|
||||
|
||||
184
asm/main_02013864.s
Normal file
184
asm/main_02013864.s
Normal file
@@ -0,0 +1,184 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "main_02013864.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start GetMoveType
|
||||
GetMoveType: ; 0x02013864
|
||||
ldr r1, _02013880 ; =DUNGEON_MOVE_TABLES
|
||||
ldrh r2, [r0, #4]
|
||||
ldr r1, [r1, #8]
|
||||
mov r0, #0x1a
|
||||
mla r0, r2, r0, r1
|
||||
ldrb r0, [r0, #2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02013880: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveType
|
||||
|
||||
arm_func_start GetMovesetLevelUpPtr
|
||||
GetMovesetLevelUpPtr: ; 0x02013884
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0x258
|
||||
subge r0, r4, #0x258
|
||||
movge r0, r0, lsl #0x10
|
||||
movge r4, r0, asr #0x10
|
||||
mov r0, r4
|
||||
bl IsInvalidMoveset
|
||||
cmp r0, #0
|
||||
ldrne r0, _020138C4 ; =_02098D64
|
||||
ldreq r1, _020138C8 ; =DUNGEON_MOVE_TABLES
|
||||
moveq r0, #0xc
|
||||
smulbbeq r0, r4, r0
|
||||
ldreq r1, [r1]
|
||||
ldreq r0, [r1, r0]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_020138C4: .word _02098D64
|
||||
_020138C8: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMovesetLevelUpPtr
|
||||
|
||||
arm_func_start IsInvalidMoveset
|
||||
IsInvalidMoveset: ; 0x020138CC
|
||||
cmp r0, #0
|
||||
ble _020138E0
|
||||
ldr r1, _020138F0 ; =0x00000229
|
||||
cmp r0, r1
|
||||
blt _020138E8
|
||||
_020138E0:
|
||||
mov r0, #1
|
||||
bx lr
|
||||
_020138E8:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_020138F0: .word 0x00000229
|
||||
arm_func_end IsInvalidMoveset
|
||||
|
||||
arm_func_start GetMovesetHmTmPtr
|
||||
GetMovesetHmTmPtr: ; 0x020138F4
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0x258
|
||||
subge r0, r4, #0x258
|
||||
movge r0, r0, lsl #0x10
|
||||
movge r4, r0, asr #0x10
|
||||
mov r0, r4
|
||||
bl IsInvalidMoveset
|
||||
cmp r0, #0
|
||||
ldrne r0, _02013938 ; =_02098D64
|
||||
ldmneia sp!, {r4, pc}
|
||||
ldr r1, _0201393C ; =DUNGEON_MOVE_TABLES
|
||||
mov r0, #0xc
|
||||
ldr r1, [r1]
|
||||
smlabb r0, r4, r0, r1
|
||||
ldr r0, [r0, #4]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_02013938: .word _02098D64
|
||||
_0201393C: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMovesetHmTmPtr
|
||||
|
||||
arm_func_start GetMovesetEggPtr
|
||||
GetMovesetEggPtr: ; 0x02013940
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0x258
|
||||
subge r0, r4, #0x258
|
||||
movge r0, r0, lsl #0x10
|
||||
movge r4, r0, asr #0x10
|
||||
mov r0, r4
|
||||
bl IsInvalidMoveset
|
||||
cmp r0, #0
|
||||
ldrne r0, _02013984 ; =_02098D64
|
||||
ldmneia sp!, {r4, pc}
|
||||
ldr r1, _02013988 ; =DUNGEON_MOVE_TABLES
|
||||
mov r0, #0xc
|
||||
ldr r1, [r1]
|
||||
smlabb r0, r4, r0, r1
|
||||
ldr r0, [r0, #8]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_02013984: .word _02098D64
|
||||
_02013988: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMovesetEggPtr
|
||||
|
||||
arm_func_start GetMoveAiWeight
|
||||
GetMoveAiWeight: ; 0x0201398C
|
||||
ldr r1, _020139A8 ; =DUNGEON_MOVE_TABLES
|
||||
ldrh r2, [r0, #4]
|
||||
ldr r1, [r1, #8]
|
||||
mov r0, #0x1a
|
||||
mla r0, r2, r0, r1
|
||||
ldrb r0, [r0, #9]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_020139A8: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveAiWeight
|
||||
|
||||
arm_func_start GetMoveNbStrikes
|
||||
GetMoveNbStrikes: ; 0x020139AC
|
||||
ldr r1, _020139C8 ; =DUNGEON_MOVE_TABLES
|
||||
ldrh r2, [r0, #4]
|
||||
ldr r1, [r1, #8]
|
||||
mov r0, #0x1a
|
||||
mla r0, r2, r0, r1
|
||||
ldrb r0, [r0, #0xd]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_020139C8: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveNbStrikes
|
||||
|
||||
arm_func_start GetMoveBasePower
|
||||
GetMoveBasePower: ; 0x020139CC
|
||||
ldrh r2, [r0, #4]
|
||||
mov r0, #0x1a
|
||||
ldr r1, _020139E8 ; =DUNGEON_MOVE_TABLES
|
||||
mul r0, r2, r0
|
||||
ldr r1, [r1, #8]
|
||||
ldrsh r0, [r1, r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_020139E8: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveBasePower
|
||||
|
||||
arm_func_start GetMoveBasePowerGround
|
||||
GetMoveBasePowerGround: ; 0x020139EC
|
||||
ldrh r2, [r0, #2]
|
||||
mov r0, #0x1a
|
||||
ldr r1, _02013A08 ; =DUNGEON_MOVE_TABLES
|
||||
mul r0, r2, r0
|
||||
ldr r1, [r1, #8]
|
||||
ldrsh r0, [r1, r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02013A08: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveBasePowerGround
|
||||
|
||||
arm_func_start GetMoveAccuracyOrAiChance
|
||||
GetMoveAccuracyOrAiChance: ; 0x02013A0C
|
||||
ldr r2, _02013A2C ; =DUNGEON_MOVE_TABLES
|
||||
ldrh r3, [r0, #4]
|
||||
ldr r2, [r2, #8]
|
||||
mov r0, #0x1a
|
||||
mla r0, r3, r0, r2
|
||||
add r0, r0, r1
|
||||
ldrb r0, [r0, #0xa]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02013A2C: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveAccuracyOrAiChance
|
||||
|
||||
arm_func_start GetMoveBasePp
|
||||
GetMoveBasePp: ; 0x02013A30
|
||||
ldr r1, _02013A4C ; =DUNGEON_MOVE_TABLES
|
||||
ldrh r2, [r0, #4]
|
||||
ldr r1, [r1, #8]
|
||||
mov r0, #0x1a
|
||||
mla r0, r2, r0, r1
|
||||
ldrb r0, [r0, #8]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02013A4C: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMoveBasePp
|
||||
22194
asm/main_02013AD0.s
22194
asm/main_02013AD0.s
File diff suppressed because it is too large
Load Diff
22182
asm/main_02013C30.s
Normal file
22182
asm/main_02013C30.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1802,720 +1802,3 @@ _022FAC94: .word 0x00000962
|
||||
_022FAC94: .word 0x00000C23
|
||||
#endif
|
||||
arm_func_end ov29_022FAA58
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActive__022FAC98
|
||||
ExclusiveItemEffectIsActive__022FAC98: ; 0x022FAC98
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, [r0, #0xb4]
|
||||
ldrb r0, [r2, #6]
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
#ifdef JAPAN
|
||||
add r0, r2, #0x224
|
||||
#else
|
||||
add r0, r2, #0x228
|
||||
#endif
|
||||
bl ExclusiveItemEffectFlagTest
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActive__022FAC98
|
||||
|
||||
arm_func_start ov29_022FACBC
|
||||
ov29_022FACBC: ; 0x022FACBC
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
sub sp, sp, #4
|
||||
ldr r1, _022FAD44 ; =DUNGEON_PTR
|
||||
mov sb, r0
|
||||
ldr r0, [r1]
|
||||
mov r8, #0
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x284
|
||||
#else
|
||||
add r0, r0, #0x328
|
||||
#endif
|
||||
ldr r5, _022FAD48 ; =0x000003E7
|
||||
add r7, r0, #0x12800
|
||||
mov r4, r8
|
||||
mov r6, #0x48
|
||||
_022FACE8:
|
||||
ldr sl, [r7, r8, lsl #2]
|
||||
mov r0, sl
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FAD28
|
||||
mov r0, sl
|
||||
mov r1, r6
|
||||
bl ExclusiveItemEffectIsActive__022FAC98
|
||||
cmp r0, #0
|
||||
beq _022FAD28
|
||||
mov r0, sl
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, r4
|
||||
str sb, [sp]
|
||||
bl TryIncreaseHp
|
||||
_022FAD28:
|
||||
add r0, r8, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r8, r0, asr #0x10
|
||||
cmp r8, #4
|
||||
blt _022FACE8
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
|
||||
.align 2, 0
|
||||
_022FAD44: .word DUNGEON_PTR
|
||||
_022FAD48: .word 0x000003E7
|
||||
arm_func_end ov29_022FACBC
|
||||
|
||||
arm_func_start ov29_022FAD4C
|
||||
ov29_022FAD4C: ; 0x022FAD4C
|
||||
#ifdef JAPAN
|
||||
#define OV29_022FAD4C_OFFSET -0xA4
|
||||
#else
|
||||
#define OV29_022FAD4C_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
ldr r1, _022FAF00 ; =DUNGEON_PTR
|
||||
mov r8, #0
|
||||
ldr r1, [r1]
|
||||
sub r3, r8, #1
|
||||
add r2, r1, #0xcc00
|
||||
ldrsh r4, [r2, #0xe4 + OV29_022FAD4C_OFFSET]
|
||||
add r1, r1, #0x328 + OV29_022FAD4C_OFFSET
|
||||
add r5, r1, #0x12800
|
||||
cmp r4, r3
|
||||
ldreqsh r1, [r2, #0xe6 + OV29_022FAD4C_OFFSET]
|
||||
mov sb, r0
|
||||
moveq r0, r3
|
||||
cmpeq r1, r0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
mov r7, #0
|
||||
mov r4, #0x1a
|
||||
b _022FADE4
|
||||
_022FAD94:
|
||||
ldr r6, [r5, r7, lsl #2]
|
||||
mov r0, r6
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FADD8
|
||||
ldr r0, [r6, #0xb4]
|
||||
ldrb r0, [r0, #0x48]
|
||||
cmp r0, #0xd9
|
||||
blo _022FADC0
|
||||
cmp r0, #0xe4
|
||||
blo _022FADD8
|
||||
_022FADC0:
|
||||
mov r0, r6
|
||||
mov r1, r4
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
movne r8, #1
|
||||
bne _022FADEC
|
||||
_022FADD8:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
_022FADE4:
|
||||
cmp r7, #4
|
||||
blt _022FAD94
|
||||
_022FADEC:
|
||||
cmp r8, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
bl GetFloorType
|
||||
cmp r0, #0
|
||||
bne _022FAEEC
|
||||
cmp sb, #0
|
||||
bne _022FAE14
|
||||
#ifdef JAPAN
|
||||
mov r0, r6
|
||||
mov r1, #0x960
|
||||
#else
|
||||
ldr r1, _022FAF04 ; =0x00000C21
|
||||
mov r0, r6
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
_022FAE14:
|
||||
bl GetLeader
|
||||
mov r5, r0
|
||||
add r0, sp, #0
|
||||
add r1, sp, #2
|
||||
mov r4, #0
|
||||
bl GetStairsSpawnPosition
|
||||
ldrsh r1, [sp]
|
||||
ldrsh r3, [r5, #4]
|
||||
ldrsh r2, [sp, #2]
|
||||
cmp r3, r1
|
||||
ldreqsh r0, [r5, #6]
|
||||
cmpeq r0, r2
|
||||
cmp r3, r1
|
||||
bne _022FAE58
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
movlt r4, #0
|
||||
_022FAE58:
|
||||
cmp r3, r1
|
||||
ldrltsh r0, [r5, #6]
|
||||
cmplt r0, r2
|
||||
movlt r4, #1
|
||||
cmp r3, r1
|
||||
bge _022FAE7C
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
moveq r4, #2
|
||||
_022FAE7C:
|
||||
cmp r3, r1
|
||||
bge _022FAE90
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
movgt r4, #3
|
||||
_022FAE90:
|
||||
cmp r3, r1
|
||||
bne _022FAEA4
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
movgt r4, #4
|
||||
_022FAEA4:
|
||||
cmp r3, r1
|
||||
ldrgtsh r0, [r5, #6]
|
||||
cmpgt r0, r2
|
||||
movgt r4, #5
|
||||
cmp r3, r1
|
||||
ble _022FAEC8
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
moveq r4, #6
|
||||
_022FAEC8:
|
||||
cmp r3, r1
|
||||
ble _022FAEDC
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
movlt r4, #7
|
||||
_022FAEDC:
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl ov29_022E6928
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
_022FAEEC:
|
||||
bl GetFloorType
|
||||
cmp r0, #1
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
bl GetFloorType
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_022FAF00: .word DUNGEON_PTR
|
||||
#ifndef JAPAN
|
||||
_022FAF04: .word 0x00000C21
|
||||
#endif
|
||||
arm_func_end ov29_022FAD4C
|
||||
|
||||
arm_func_start ov29_022FAF08
|
||||
ov29_022FAF08: ; 0x022FAF08
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
ldr r1, _022FAFC8 ; =DUNGEON_PTR
|
||||
mov r6, r0
|
||||
ldr r0, [r1]
|
||||
mov r5, #0
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x284
|
||||
#else
|
||||
add r0, r0, #0x328
|
||||
#endif
|
||||
add r8, r0, #0x12800
|
||||
bl IsCurrentFixedRoomBossFight
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
mov sb, r5
|
||||
mov r7, #0x36
|
||||
b _022FAF74
|
||||
_022FAF3C:
|
||||
ldr r4, [r8, sb, lsl #2]
|
||||
mov r0, r4
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FAF68
|
||||
mov r0, r4
|
||||
mov r1, r7
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
movne r5, #1
|
||||
bne _022FAF7C
|
||||
_022FAF68:
|
||||
add r0, sb, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov sb, r0, asr #0x10
|
||||
_022FAF74:
|
||||
cmp sb, #4
|
||||
blt _022FAF3C
|
||||
_022FAF7C:
|
||||
cmp r5, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
ldr r1, _022FAFC8 ; =DUNGEON_PTR
|
||||
ldr r0, _022FAFCC ; =0x00012AF8
|
||||
ldr r1, [r1]
|
||||
ldrsh r1, [r1, r0]
|
||||
cmp r1, #0
|
||||
ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
cmp r6, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
mov r0, #0
|
||||
bl ov29_0234B09C
|
||||
ldr r1, _022FAFD0 ; =0x00000C22
|
||||
mov r0, r4
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
mov r0, #0x78
|
||||
mov r1, #0xa
|
||||
bl ov29_022EA370
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_022FAFC8: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_022FAFCC: .word 0x00012A54
|
||||
_022FAFD0: .word 0x00000961
|
||||
#else
|
||||
_022FAFCC: .word 0x00012AF8
|
||||
_022FAFD0: .word 0x00000C22
|
||||
#endif
|
||||
arm_func_end ov29_022FAF08
|
||||
|
||||
arm_func_start ov29_022FAFD4
|
||||
ov29_022FAFD4: ; 0x022FAFD4
|
||||
stmdb sp!, {r3, lr}
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
bl GetTreatmentBetweenMonsters
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_022FAFD4
|
||||
|
||||
arm_func_start GetTeamMemberWithIqSkill
|
||||
GetTeamMemberWithIqSkill: ; 0x022FAFF8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
ldr r1, _022FB060 ; =DUNGEON_PTR
|
||||
mov r4, #0
|
||||
ldr r1, [r1]
|
||||
mov r5, r0
|
||||
#ifdef JAPAN
|
||||
add r0, r1, #0x284
|
||||
#else
|
||||
add r0, r1, #0x328
|
||||
#endif
|
||||
mov r7, r4
|
||||
add r6, r0, #0x12800
|
||||
b _022FB050
|
||||
_022FB01C:
|
||||
ldr r0, [r6, r7, lsl #2]
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FB044
|
||||
ldr r0, [r6, r7, lsl #2]
|
||||
mov r1, r5
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
ldrne r4, [r6, r7, lsl #2]
|
||||
bne _022FB058
|
||||
_022FB044:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
_022FB050:
|
||||
cmp r7, #4
|
||||
blt _022FB01C
|
||||
_022FB058:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_022FB060: .word DUNGEON_PTR
|
||||
arm_func_end GetTeamMemberWithIqSkill
|
||||
|
||||
arm_func_start TeamMemberHasEnabledIqSkill
|
||||
TeamMemberHasEnabledIqSkill: ; 0x022FB064
|
||||
stmdb sp!, {r3, lr}
|
||||
bl GetTeamMemberWithIqSkill
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end TeamMemberHasEnabledIqSkill
|
||||
|
||||
arm_func_start TeamLeaderIqSkillIsEnabled
|
||||
TeamLeaderIqSkillIsEnabled: ; 0x022FB080
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl GetLeader
|
||||
mov r1, r4
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end TeamLeaderIqSkillIsEnabled
|
||||
|
||||
arm_func_start CountMovesOutOfPp
|
||||
CountMovesOutOfPp: ; 0x022FB0A8
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr ip, [r0, #0xb4]
|
||||
mov r0, #0
|
||||
mov lr, r0
|
||||
mov r2, r0
|
||||
mov r3, #1
|
||||
_022FB0C0:
|
||||
add r1, ip, lr, lsl #3
|
||||
#ifdef JAPAN
|
||||
ldrb r1, [r1, #0x120]
|
||||
#else
|
||||
ldrb r1, [r1, #0x124]
|
||||
#endif
|
||||
tst r1, #1
|
||||
movne r1, r3
|
||||
moveq r1, r2
|
||||
tst r1, #0xff
|
||||
beq _022FB0F4
|
||||
add r1, ip, lr, lsl #3
|
||||
#ifdef JAPAN
|
||||
ldrb r1, [r1, #0x126]
|
||||
#else
|
||||
ldrb r1, [r1, #0x12a]
|
||||
#endif
|
||||
cmp r1, #0
|
||||
addeq r0, r0, #1
|
||||
moveq r0, r0, lsl #0x10
|
||||
moveq r0, r0, asr #0x10
|
||||
_022FB0F4:
|
||||
add r1, lr, #1
|
||||
mov r1, r1, lsl #0x10
|
||||
mov lr, r1, asr #0x10
|
||||
cmp lr, #4
|
||||
blt _022FB0C0
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end CountMovesOutOfPp
|
||||
|
||||
arm_func_start HasSuperEffectiveMoveAgainstUser
|
||||
HasSuperEffectiveMoveAgainstUser: ; 0x022FB10C
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
mov sb, r1
|
||||
ldr r6, [sb, #0xb4]
|
||||
mov r7, #0
|
||||
mov sl, r0
|
||||
mov r8, r2
|
||||
#ifdef JAPAN
|
||||
add r4, r6, #0x120
|
||||
#else
|
||||
add r4, r6, #0x124
|
||||
#endif
|
||||
mov fp, r7
|
||||
mov r5, #1
|
||||
b _022FB198
|
||||
_022FB134:
|
||||
add r0, r6, r7, lsl #3
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r0, #0x120]
|
||||
#else
|
||||
ldrb r0, [r0, #0x124]
|
||||
#endif
|
||||
tst r0, #1
|
||||
movne r0, r5
|
||||
moveq r0, fp
|
||||
tst r0, #0xff
|
||||
beq _022FB18C
|
||||
cmp r8, #0
|
||||
beq _022FB168
|
||||
add r0, r4, r7, lsl #3
|
||||
bl HasMaxGinsengBoost99
|
||||
cmp r0, #0
|
||||
beq _022FB18C
|
||||
_022FB168:
|
||||
add r0, r4, r7, lsl #3
|
||||
bl GetMoveType
|
||||
mov r2, r0
|
||||
mov r0, sb
|
||||
mov r1, sl
|
||||
bl GetTypeMatchupBothTypes
|
||||
cmp r0, #3
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
_022FB18C:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
_022FB198:
|
||||
cmp r7, #4
|
||||
blt _022FB134
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
arm_func_end HasSuperEffectiveMoveAgainstUser
|
||||
|
||||
arm_func_start ov29_022FB1A8
|
||||
ov29_022FB1A8: ; 0x022FB1A8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, #0
|
||||
ldr r6, [r0, #0xb4]
|
||||
mov r4, r7
|
||||
mov r5, #1
|
||||
b _022FB204
|
||||
_022FB1C0:
|
||||
add r0, r6, r7, lsl #3
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r0, #0x120]
|
||||
#else
|
||||
ldrb r0, [r0, #0x124]
|
||||
#endif
|
||||
tst r0, #1
|
||||
movne r0, r5
|
||||
moveq r0, r4
|
||||
tst r0, #0xff
|
||||
beq _022FB1F8
|
||||
add r0, r6, r7, lsl #3
|
||||
add r0, r0, #0x100
|
||||
#ifdef JAPAN
|
||||
ldrh r0, [r0, #0x24]
|
||||
#else
|
||||
ldrh r0, [r0, #0x28]
|
||||
#endif
|
||||
bl IsOneHitKoMove
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_022FB1F8:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
_022FB204:
|
||||
cmp r7, #4
|
||||
blt _022FB1C0
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end ov29_022FB1A8
|
||||
|
||||
arm_func_start TryEatItem
|
||||
TryEatItem: ; 0x022FB214
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x74
|
||||
mov sl, r0
|
||||
mov sb, r1
|
||||
mov r5, #0
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FB244
|
||||
mov r0, sb
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
bne _022FB24C
|
||||
_022FB244:
|
||||
mov r0, #0
|
||||
b _022FB508
|
||||
_022FB24C:
|
||||
ldr r4, [sb, #0xb4]
|
||||
ldrb r0, [r4, #6]
|
||||
cmp r0, #0
|
||||
ldrsh r0, [r4, #0x66]
|
||||
beq _022FB31C
|
||||
cmp r0, #0
|
||||
beq _022FB504
|
||||
ldrsh r0, [r4, #0x66]
|
||||
bl ShouldTryEatItem
|
||||
cmp r0, #0
|
||||
beq _022FB504
|
||||
mov r0, sl
|
||||
add r1, r4, #0x62
|
||||
bl CanMonsterUseItem
|
||||
cmp r0, #0
|
||||
beq _022FB504
|
||||
mov r0, r5
|
||||
mov r1, sl
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r1, sb
|
||||
mov r0, #1
|
||||
mov r2, r5
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, r4, #0x62
|
||||
mov r0, #1
|
||||
bl ov29_02344B44
|
||||
ldr r2, _022FB510 ; =0x00000C24
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
ldrh r2, [r4, #0x62]
|
||||
mov r0, sl
|
||||
add r1, r4, #0x62
|
||||
strh r2, [sp, #8]
|
||||
ldrh r2, [r4, #0x64]
|
||||
strh r2, [sp, #0xa]
|
||||
ldrh r2, [r4, #0x66]
|
||||
strh r2, [sp, #0xc]
|
||||
bl ov29_0230F9A4
|
||||
add r0, r4, #0x62
|
||||
bl ItemZInit
|
||||
mov r0, r5
|
||||
str sl, [sp]
|
||||
add r1, sp, #8
|
||||
str r1, [sp, #4]
|
||||
mov r3, sb
|
||||
mov r1, r0
|
||||
mov r2, r0
|
||||
bl ApplyItemEffect
|
||||
mov r5, #1
|
||||
b _022FB504
|
||||
_022FB31C:
|
||||
bl ShouldTryEatItem
|
||||
cmp r0, #0
|
||||
beq _022FB3D4
|
||||
mov r0, sl
|
||||
add r1, r4, #0x62
|
||||
bl CanMonsterUseItem
|
||||
cmp r0, #0
|
||||
beq _022FB504
|
||||
mov r0, r5
|
||||
mov r1, sl
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r1, sb
|
||||
mov r0, #1
|
||||
mov r2, r5
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, r4, #0x62
|
||||
mov r0, #1
|
||||
bl ov29_02344B44
|
||||
ldr r2, _022FB510 ; =0x00000C24
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
ldrh r2, [r4, #0x62]
|
||||
mov r0, sl
|
||||
add r1, r4, #0x62
|
||||
strh r2, [sp, #8]
|
||||
ldrh r2, [r4, #0x64]
|
||||
strh r2, [sp, #0xa]
|
||||
ldrh r2, [r4, #0x66]
|
||||
strh r2, [sp, #0xc]
|
||||
bl ov29_0230F9A4
|
||||
add r0, r4, #0x62
|
||||
bl RemoveEquivItem
|
||||
add r0, r4, #0x62
|
||||
bl ItemZInit
|
||||
mov r0, r5
|
||||
str sl, [sp]
|
||||
add r1, sp, #8
|
||||
str r1, [sp, #4]
|
||||
mov r3, sb
|
||||
mov r1, r0
|
||||
mov r2, r0
|
||||
bl ApplyItemEffect
|
||||
mov r5, #1
|
||||
b _022FB504
|
||||
_022FB3D4:
|
||||
bl GetNbItemsInBag
|
||||
mov r7, r0
|
||||
mov r6, r5
|
||||
add r4, sp, #0xe
|
||||
b _022FB3F8
|
||||
_022FB3E8:
|
||||
mov r0, r7
|
||||
bl RandInt
|
||||
strb r0, [r4, r6]
|
||||
add r6, r6, #1
|
||||
_022FB3F8:
|
||||
cmp r6, r7
|
||||
blt _022FB3E8
|
||||
add r0, sp, #0xe
|
||||
mov r1, #0
|
||||
add r0, r0, r7
|
||||
b _022FB418
|
||||
_022FB410:
|
||||
strb r1, [r0, r1]
|
||||
add r1, r1, #1
|
||||
_022FB418:
|
||||
cmp r1, r7
|
||||
blt _022FB410
|
||||
mov r8, #0
|
||||
add r4, sp, #0xe
|
||||
ldr fp, _022FB514 ; =BAG_ITEMS_PTR_MIRROR
|
||||
b _022FB4FC
|
||||
_022FB430:
|
||||
ldrb r1, [r4, r8]
|
||||
ldr r3, [fp]
|
||||
mov r0, #6
|
||||
smulbb r2, r1, r0
|
||||
ldr r1, [r3, #0x384]
|
||||
ldrb r0, [r1, r2]
|
||||
add r6, r1, r2
|
||||
tst r0, #1
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
tst r0, #0xff
|
||||
beq _022FB4F8
|
||||
ldrb r0, [r6, #1]
|
||||
cmp r0, #0
|
||||
bne _022FB4F8
|
||||
ldrsh r0, [r6, #4]
|
||||
bl ShouldTryEatItem
|
||||
cmp r0, #0
|
||||
beq _022FB4F8
|
||||
mov r0, sl
|
||||
mov r1, r6
|
||||
bl CanMonsterUseItem
|
||||
cmp r0, #0
|
||||
beq _022FB504
|
||||
mov r0, #0
|
||||
mov r1, sl
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r1, sb
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r1, r6
|
||||
mov r0, #1
|
||||
bl ov29_02344B44
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
ldr r2, _022FB518 ; =0x00000C25
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
str sl, [sp]
|
||||
mov r3, sb
|
||||
str r6, [sp, #4]
|
||||
mov r0, #0
|
||||
mov r1, r0
|
||||
mov r2, r0
|
||||
bl ApplyItemEffect
|
||||
mov r0, r6
|
||||
bl RemoveEquivItem
|
||||
mov r5, #1
|
||||
b _022FB504
|
||||
_022FB4F8:
|
||||
add r8, r8, #1
|
||||
_022FB4FC:
|
||||
cmp r8, r7, lsl #1
|
||||
blt _022FB430
|
||||
_022FB504:
|
||||
mov r0, r5
|
||||
_022FB508:
|
||||
add sp, sp, #0x74
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_022FB510: .word 0x00000963
|
||||
_022FB514: .word BAG_ITEMS_PTR_MIRROR
|
||||
_022FB518: .word 0x00000964
|
||||
#else
|
||||
_022FB510: .word 0x00000C24
|
||||
_022FB514: .word BAG_ITEMS_PTR_MIRROR
|
||||
_022FB518: .word 0x00000C25
|
||||
#endif
|
||||
arm_func_end TryEatItem
|
||||
|
||||
arm_func_start ov29_022FB51C
|
||||
ov29_022FB51C: ; 0x022FB51C
|
||||
stmdb sp!, {r3, lr}
|
||||
bl GetScenarioBalance
|
||||
cmp r0, #2
|
||||
movhs r0, #1
|
||||
movlo r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_022FB51C
|
||||
|
||||
704
asm/overlay_29_022FACBC.s
Normal file
704
asm/overlay_29_022FACBC.s
Normal file
@@ -0,0 +1,704 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022FACBC.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_022FACBC
|
||||
ov29_022FACBC: ; 0x022FACBC
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
sub sp, sp, #4
|
||||
ldr r1, _022FAD44 ; =DUNGEON_PTR
|
||||
mov sb, r0
|
||||
ldr r0, [r1]
|
||||
mov r8, #0
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x284
|
||||
#else
|
||||
add r0, r0, #0x328
|
||||
#endif
|
||||
ldr r5, _022FAD48 ; =0x000003E7
|
||||
add r7, r0, #0x12800
|
||||
mov r4, r8
|
||||
mov r6, #0x48
|
||||
_022FACE8:
|
||||
ldr sl, [r7, r8, lsl #2]
|
||||
mov r0, sl
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FAD28
|
||||
mov r0, sl
|
||||
mov r1, r6
|
||||
bl ExclusiveItemEffectIsActive__022FAC98
|
||||
cmp r0, #0
|
||||
beq _022FAD28
|
||||
mov r0, sl
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, r4
|
||||
str sb, [sp]
|
||||
bl TryIncreaseHp
|
||||
_022FAD28:
|
||||
add r0, r8, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r8, r0, asr #0x10
|
||||
cmp r8, #4
|
||||
blt _022FACE8
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
|
||||
.align 2, 0
|
||||
_022FAD44: .word DUNGEON_PTR
|
||||
_022FAD48: .word 0x000003E7
|
||||
arm_func_end ov29_022FACBC
|
||||
|
||||
arm_func_start ov29_022FAD4C
|
||||
ov29_022FAD4C: ; 0x022FAD4C
|
||||
#ifdef JAPAN
|
||||
#define OV29_022FAD4C_OFFSET -0xA4
|
||||
#else
|
||||
#define OV29_022FAD4C_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
ldr r1, _022FAF00 ; =DUNGEON_PTR
|
||||
mov r8, #0
|
||||
ldr r1, [r1]
|
||||
sub r3, r8, #1
|
||||
add r2, r1, #0xcc00
|
||||
ldrsh r4, [r2, #0xe4 + OV29_022FAD4C_OFFSET]
|
||||
add r1, r1, #0x328 + OV29_022FAD4C_OFFSET
|
||||
add r5, r1, #0x12800
|
||||
cmp r4, r3
|
||||
ldreqsh r1, [r2, #0xe6 + OV29_022FAD4C_OFFSET]
|
||||
mov sb, r0
|
||||
moveq r0, r3
|
||||
cmpeq r1, r0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
mov r7, #0
|
||||
mov r4, #0x1a
|
||||
b _022FADE4
|
||||
_022FAD94:
|
||||
ldr r6, [r5, r7, lsl #2]
|
||||
mov r0, r6
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FADD8
|
||||
ldr r0, [r6, #0xb4]
|
||||
ldrb r0, [r0, #0x48]
|
||||
cmp r0, #0xd9
|
||||
blo _022FADC0
|
||||
cmp r0, #0xe4
|
||||
blo _022FADD8
|
||||
_022FADC0:
|
||||
mov r0, r6
|
||||
mov r1, r4
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
movne r8, #1
|
||||
bne _022FADEC
|
||||
_022FADD8:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
_022FADE4:
|
||||
cmp r7, #4
|
||||
blt _022FAD94
|
||||
_022FADEC:
|
||||
cmp r8, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
bl GetFloorType
|
||||
cmp r0, #0
|
||||
bne _022FAEEC
|
||||
cmp sb, #0
|
||||
bne _022FAE14
|
||||
#ifdef JAPAN
|
||||
mov r0, r6
|
||||
mov r1, #0x960
|
||||
#else
|
||||
ldr r1, _022FAF04 ; =0x00000C21
|
||||
mov r0, r6
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
_022FAE14:
|
||||
bl GetLeader
|
||||
mov r5, r0
|
||||
add r0, sp, #0
|
||||
add r1, sp, #2
|
||||
mov r4, #0
|
||||
bl GetStairsSpawnPosition
|
||||
ldrsh r1, [sp]
|
||||
ldrsh r3, [r5, #4]
|
||||
ldrsh r2, [sp, #2]
|
||||
cmp r3, r1
|
||||
ldreqsh r0, [r5, #6]
|
||||
cmpeq r0, r2
|
||||
cmp r3, r1
|
||||
bne _022FAE58
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
movlt r4, #0
|
||||
_022FAE58:
|
||||
cmp r3, r1
|
||||
ldrltsh r0, [r5, #6]
|
||||
cmplt r0, r2
|
||||
movlt r4, #1
|
||||
cmp r3, r1
|
||||
bge _022FAE7C
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
moveq r4, #2
|
||||
_022FAE7C:
|
||||
cmp r3, r1
|
||||
bge _022FAE90
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
movgt r4, #3
|
||||
_022FAE90:
|
||||
cmp r3, r1
|
||||
bne _022FAEA4
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
movgt r4, #4
|
||||
_022FAEA4:
|
||||
cmp r3, r1
|
||||
ldrgtsh r0, [r5, #6]
|
||||
cmpgt r0, r2
|
||||
movgt r4, #5
|
||||
cmp r3, r1
|
||||
ble _022FAEC8
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
moveq r4, #6
|
||||
_022FAEC8:
|
||||
cmp r3, r1
|
||||
ble _022FAEDC
|
||||
ldrsh r0, [r5, #6]
|
||||
cmp r0, r2
|
||||
movlt r4, #7
|
||||
_022FAEDC:
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl ov29_022E6928
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
_022FAEEC:
|
||||
bl GetFloorType
|
||||
cmp r0, #1
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
bl GetFloorType
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_022FAF00: .word DUNGEON_PTR
|
||||
#ifndef JAPAN
|
||||
_022FAF04: .word 0x00000C21
|
||||
#endif
|
||||
arm_func_end ov29_022FAD4C
|
||||
|
||||
arm_func_start ov29_022FAF08
|
||||
ov29_022FAF08: ; 0x022FAF08
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
ldr r1, _022FAFC8 ; =DUNGEON_PTR
|
||||
mov r6, r0
|
||||
ldr r0, [r1]
|
||||
mov r5, #0
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x284
|
||||
#else
|
||||
add r0, r0, #0x328
|
||||
#endif
|
||||
add r8, r0, #0x12800
|
||||
bl IsCurrentFixedRoomBossFight
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
mov sb, r5
|
||||
mov r7, #0x36
|
||||
b _022FAF74
|
||||
_022FAF3C:
|
||||
ldr r4, [r8, sb, lsl #2]
|
||||
mov r0, r4
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FAF68
|
||||
mov r0, r4
|
||||
mov r1, r7
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
movne r5, #1
|
||||
bne _022FAF7C
|
||||
_022FAF68:
|
||||
add r0, sb, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov sb, r0, asr #0x10
|
||||
_022FAF74:
|
||||
cmp sb, #4
|
||||
blt _022FAF3C
|
||||
_022FAF7C:
|
||||
cmp r5, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
ldr r1, _022FAFC8 ; =DUNGEON_PTR
|
||||
ldr r0, _022FAFCC ; =0x00012AF8
|
||||
ldr r1, [r1]
|
||||
ldrsh r1, [r1, r0]
|
||||
cmp r1, #0
|
||||
ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
cmp r6, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
mov r0, #0
|
||||
bl ov29_0234B09C
|
||||
ldr r1, _022FAFD0 ; =0x00000C22
|
||||
mov r0, r4
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
mov r0, #0x78
|
||||
mov r1, #0xa
|
||||
bl ov29_022EA370
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_022FAFC8: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_022FAFCC: .word 0x00012A54
|
||||
_022FAFD0: .word 0x00000961
|
||||
#else
|
||||
_022FAFCC: .word 0x00012AF8
|
||||
_022FAFD0: .word 0x00000C22
|
||||
#endif
|
||||
arm_func_end ov29_022FAF08
|
||||
|
||||
arm_func_start ov29_022FAFD4
|
||||
ov29_022FAFD4: ; 0x022FAFD4
|
||||
stmdb sp!, {r3, lr}
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
bl GetTreatmentBetweenMonsters
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_022FAFD4
|
||||
|
||||
arm_func_start GetTeamMemberWithIqSkill
|
||||
GetTeamMemberWithIqSkill: ; 0x022FAFF8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
ldr r1, _022FB060 ; =DUNGEON_PTR
|
||||
mov r4, #0
|
||||
ldr r1, [r1]
|
||||
mov r5, r0
|
||||
#ifdef JAPAN
|
||||
add r0, r1, #0x284
|
||||
#else
|
||||
add r0, r1, #0x328
|
||||
#endif
|
||||
mov r7, r4
|
||||
add r6, r0, #0x12800
|
||||
b _022FB050
|
||||
_022FB01C:
|
||||
ldr r0, [r6, r7, lsl #2]
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FB044
|
||||
ldr r0, [r6, r7, lsl #2]
|
||||
mov r1, r5
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
ldrne r4, [r6, r7, lsl #2]
|
||||
bne _022FB058
|
||||
_022FB044:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
_022FB050:
|
||||
cmp r7, #4
|
||||
blt _022FB01C
|
||||
_022FB058:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_022FB060: .word DUNGEON_PTR
|
||||
arm_func_end GetTeamMemberWithIqSkill
|
||||
|
||||
arm_func_start TeamMemberHasEnabledIqSkill
|
||||
TeamMemberHasEnabledIqSkill: ; 0x022FB064
|
||||
stmdb sp!, {r3, lr}
|
||||
bl GetTeamMemberWithIqSkill
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end TeamMemberHasEnabledIqSkill
|
||||
|
||||
arm_func_start TeamLeaderIqSkillIsEnabled
|
||||
TeamLeaderIqSkillIsEnabled: ; 0x022FB080
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl GetLeader
|
||||
mov r1, r4
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end TeamLeaderIqSkillIsEnabled
|
||||
|
||||
arm_func_start CountMovesOutOfPp
|
||||
CountMovesOutOfPp: ; 0x022FB0A8
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr ip, [r0, #0xb4]
|
||||
mov r0, #0
|
||||
mov lr, r0
|
||||
mov r2, r0
|
||||
mov r3, #1
|
||||
_022FB0C0:
|
||||
add r1, ip, lr, lsl #3
|
||||
#ifdef JAPAN
|
||||
ldrb r1, [r1, #0x120]
|
||||
#else
|
||||
ldrb r1, [r1, #0x124]
|
||||
#endif
|
||||
tst r1, #1
|
||||
movne r1, r3
|
||||
moveq r1, r2
|
||||
tst r1, #0xff
|
||||
beq _022FB0F4
|
||||
add r1, ip, lr, lsl #3
|
||||
#ifdef JAPAN
|
||||
ldrb r1, [r1, #0x126]
|
||||
#else
|
||||
ldrb r1, [r1, #0x12a]
|
||||
#endif
|
||||
cmp r1, #0
|
||||
addeq r0, r0, #1
|
||||
moveq r0, r0, lsl #0x10
|
||||
moveq r0, r0, asr #0x10
|
||||
_022FB0F4:
|
||||
add r1, lr, #1
|
||||
mov r1, r1, lsl #0x10
|
||||
mov lr, r1, asr #0x10
|
||||
cmp lr, #4
|
||||
blt _022FB0C0
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end CountMovesOutOfPp
|
||||
|
||||
arm_func_start HasSuperEffectiveMoveAgainstUser
|
||||
HasSuperEffectiveMoveAgainstUser: ; 0x022FB10C
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
mov sb, r1
|
||||
ldr r6, [sb, #0xb4]
|
||||
mov r7, #0
|
||||
mov sl, r0
|
||||
mov r8, r2
|
||||
#ifdef JAPAN
|
||||
add r4, r6, #0x120
|
||||
#else
|
||||
add r4, r6, #0x124
|
||||
#endif
|
||||
mov fp, r7
|
||||
mov r5, #1
|
||||
b _022FB198
|
||||
_022FB134:
|
||||
add r0, r6, r7, lsl #3
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r0, #0x120]
|
||||
#else
|
||||
ldrb r0, [r0, #0x124]
|
||||
#endif
|
||||
tst r0, #1
|
||||
movne r0, r5
|
||||
moveq r0, fp
|
||||
tst r0, #0xff
|
||||
beq _022FB18C
|
||||
cmp r8, #0
|
||||
beq _022FB168
|
||||
add r0, r4, r7, lsl #3
|
||||
bl HasMaxGinsengBoost99
|
||||
cmp r0, #0
|
||||
beq _022FB18C
|
||||
_022FB168:
|
||||
add r0, r4, r7, lsl #3
|
||||
bl GetMoveType
|
||||
mov r2, r0
|
||||
mov r0, sb
|
||||
mov r1, sl
|
||||
bl GetTypeMatchupBothTypes
|
||||
cmp r0, #3
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
_022FB18C:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
_022FB198:
|
||||
cmp r7, #4
|
||||
blt _022FB134
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
arm_func_end HasSuperEffectiveMoveAgainstUser
|
||||
|
||||
arm_func_start ov29_022FB1A8
|
||||
ov29_022FB1A8: ; 0x022FB1A8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, #0
|
||||
ldr r6, [r0, #0xb4]
|
||||
mov r4, r7
|
||||
mov r5, #1
|
||||
b _022FB204
|
||||
_022FB1C0:
|
||||
add r0, r6, r7, lsl #3
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r0, #0x120]
|
||||
#else
|
||||
ldrb r0, [r0, #0x124]
|
||||
#endif
|
||||
tst r0, #1
|
||||
movne r0, r5
|
||||
moveq r0, r4
|
||||
tst r0, #0xff
|
||||
beq _022FB1F8
|
||||
add r0, r6, r7, lsl #3
|
||||
add r0, r0, #0x100
|
||||
#ifdef JAPAN
|
||||
ldrh r0, [r0, #0x24]
|
||||
#else
|
||||
ldrh r0, [r0, #0x28]
|
||||
#endif
|
||||
bl IsOneHitKoMove
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_022FB1F8:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
_022FB204:
|
||||
cmp r7, #4
|
||||
blt _022FB1C0
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end ov29_022FB1A8
|
||||
|
||||
arm_func_start TryEatItem
|
||||
TryEatItem: ; 0x022FB214
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x74
|
||||
mov sl, r0
|
||||
mov sb, r1
|
||||
mov r5, #0
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FB244
|
||||
mov r0, sb
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
bne _022FB24C
|
||||
_022FB244:
|
||||
mov r0, #0
|
||||
b _022FB508
|
||||
_022FB24C:
|
||||
ldr r4, [sb, #0xb4]
|
||||
ldrb r0, [r4, #6]
|
||||
cmp r0, #0
|
||||
ldrsh r0, [r4, #0x66]
|
||||
beq _022FB31C
|
||||
cmp r0, #0
|
||||
beq _022FB504
|
||||
ldrsh r0, [r4, #0x66]
|
||||
bl ShouldTryEatItem
|
||||
cmp r0, #0
|
||||
beq _022FB504
|
||||
mov r0, sl
|
||||
add r1, r4, #0x62
|
||||
bl CanMonsterUseItem
|
||||
cmp r0, #0
|
||||
beq _022FB504
|
||||
mov r0, r5
|
||||
mov r1, sl
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r1, sb
|
||||
mov r0, #1
|
||||
mov r2, r5
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, r4, #0x62
|
||||
mov r0, #1
|
||||
bl ov29_02344B44
|
||||
ldr r2, _022FB510 ; =0x00000C24
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
ldrh r2, [r4, #0x62]
|
||||
mov r0, sl
|
||||
add r1, r4, #0x62
|
||||
strh r2, [sp, #8]
|
||||
ldrh r2, [r4, #0x64]
|
||||
strh r2, [sp, #0xa]
|
||||
ldrh r2, [r4, #0x66]
|
||||
strh r2, [sp, #0xc]
|
||||
bl ov29_0230F9A4
|
||||
add r0, r4, #0x62
|
||||
bl ItemZInit
|
||||
mov r0, r5
|
||||
str sl, [sp]
|
||||
add r1, sp, #8
|
||||
str r1, [sp, #4]
|
||||
mov r3, sb
|
||||
mov r1, r0
|
||||
mov r2, r0
|
||||
bl ApplyItemEffect
|
||||
mov r5, #1
|
||||
b _022FB504
|
||||
_022FB31C:
|
||||
bl ShouldTryEatItem
|
||||
cmp r0, #0
|
||||
beq _022FB3D4
|
||||
mov r0, sl
|
||||
add r1, r4, #0x62
|
||||
bl CanMonsterUseItem
|
||||
cmp r0, #0
|
||||
beq _022FB504
|
||||
mov r0, r5
|
||||
mov r1, sl
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r1, sb
|
||||
mov r0, #1
|
||||
mov r2, r5
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, r4, #0x62
|
||||
mov r0, #1
|
||||
bl ov29_02344B44
|
||||
ldr r2, _022FB510 ; =0x00000C24
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
ldrh r2, [r4, #0x62]
|
||||
mov r0, sl
|
||||
add r1, r4, #0x62
|
||||
strh r2, [sp, #8]
|
||||
ldrh r2, [r4, #0x64]
|
||||
strh r2, [sp, #0xa]
|
||||
ldrh r2, [r4, #0x66]
|
||||
strh r2, [sp, #0xc]
|
||||
bl ov29_0230F9A4
|
||||
add r0, r4, #0x62
|
||||
bl RemoveEquivItem
|
||||
add r0, r4, #0x62
|
||||
bl ItemZInit
|
||||
mov r0, r5
|
||||
str sl, [sp]
|
||||
add r1, sp, #8
|
||||
str r1, [sp, #4]
|
||||
mov r3, sb
|
||||
mov r1, r0
|
||||
mov r2, r0
|
||||
bl ApplyItemEffect
|
||||
mov r5, #1
|
||||
b _022FB504
|
||||
_022FB3D4:
|
||||
bl GetNbItemsInBag
|
||||
mov r7, r0
|
||||
mov r6, r5
|
||||
add r4, sp, #0xe
|
||||
b _022FB3F8
|
||||
_022FB3E8:
|
||||
mov r0, r7
|
||||
bl RandInt
|
||||
strb r0, [r4, r6]
|
||||
add r6, r6, #1
|
||||
_022FB3F8:
|
||||
cmp r6, r7
|
||||
blt _022FB3E8
|
||||
add r0, sp, #0xe
|
||||
mov r1, #0
|
||||
add r0, r0, r7
|
||||
b _022FB418
|
||||
_022FB410:
|
||||
strb r1, [r0, r1]
|
||||
add r1, r1, #1
|
||||
_022FB418:
|
||||
cmp r1, r7
|
||||
blt _022FB410
|
||||
mov r8, #0
|
||||
add r4, sp, #0xe
|
||||
ldr fp, _022FB514 ; =BAG_ITEMS_PTR_MIRROR
|
||||
b _022FB4FC
|
||||
_022FB430:
|
||||
ldrb r1, [r4, r8]
|
||||
ldr r3, [fp]
|
||||
mov r0, #6
|
||||
smulbb r2, r1, r0
|
||||
ldr r1, [r3, #0x384]
|
||||
ldrb r0, [r1, r2]
|
||||
add r6, r1, r2
|
||||
tst r0, #1
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
tst r0, #0xff
|
||||
beq _022FB4F8
|
||||
ldrb r0, [r6, #1]
|
||||
cmp r0, #0
|
||||
bne _022FB4F8
|
||||
ldrsh r0, [r6, #4]
|
||||
bl ShouldTryEatItem
|
||||
cmp r0, #0
|
||||
beq _022FB4F8
|
||||
mov r0, sl
|
||||
mov r1, r6
|
||||
bl CanMonsterUseItem
|
||||
cmp r0, #0
|
||||
beq _022FB504
|
||||
mov r0, #0
|
||||
mov r1, sl
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r1, sb
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r1, r6
|
||||
mov r0, #1
|
||||
bl ov29_02344B44
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
ldr r2, _022FB518 ; =0x00000C25
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
str sl, [sp]
|
||||
mov r3, sb
|
||||
str r6, [sp, #4]
|
||||
mov r0, #0
|
||||
mov r1, r0
|
||||
mov r2, r0
|
||||
bl ApplyItemEffect
|
||||
mov r0, r6
|
||||
bl RemoveEquivItem
|
||||
mov r5, #1
|
||||
b _022FB504
|
||||
_022FB4F8:
|
||||
add r8, r8, #1
|
||||
_022FB4FC:
|
||||
cmp r8, r7, lsl #1
|
||||
blt _022FB430
|
||||
_022FB504:
|
||||
mov r0, r5
|
||||
_022FB508:
|
||||
add sp, sp, #0x74
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_022FB510: .word 0x00000963
|
||||
_022FB514: .word BAG_ITEMS_PTR_MIRROR
|
||||
_022FB518: .word 0x00000964
|
||||
#else
|
||||
_022FB510: .word 0x00000C24
|
||||
_022FB514: .word BAG_ITEMS_PTR_MIRROR
|
||||
_022FB518: .word 0x00000C25
|
||||
#endif
|
||||
arm_func_end TryEatItem
|
||||
|
||||
arm_func_start ov29_022FB51C
|
||||
ov29_022FB51C: ; 0x022FB51C
|
||||
stmdb sp!, {r3, lr}
|
||||
bl GetScenarioBalance
|
||||
cmp r0, #2
|
||||
movhs r0, #1
|
||||
movlo r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_022FB51C
|
||||
@@ -562,153 +562,3 @@ _022FFF1C: .word 0x000001A5
|
||||
_022FFF20: .word 0x0000017F
|
||||
_022FFF24: .word DUNGEON_PTR
|
||||
arm_func_end CalcSpeedStage
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActive__022FFF28
|
||||
ExclusiveItemEffectIsActive__022FFF28: ; 0x022FFF28
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, [r0, #0xb4]
|
||||
ldrb r0, [r2, #6]
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
#ifdef JAPAN
|
||||
add r0, r2, #0x224
|
||||
#else
|
||||
add r0, r2, #0x228
|
||||
#endif
|
||||
bl ExclusiveItemEffectFlagTest
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActive__022FFF28
|
||||
|
||||
arm_func_start CalcSpeedStageWrapper
|
||||
CalcSpeedStageWrapper: ; 0x022FFF4C
|
||||
ldr ip, _022FFF58 ; =CalcSpeedStage
|
||||
mov r1, #1
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_022FFF58: .word CalcSpeedStage
|
||||
arm_func_end CalcSpeedStageWrapper
|
||||
|
||||
arm_func_start GetNumberOfAttacks
|
||||
GetNumberOfAttacks: ; 0x022FFF5C
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
sub sp, sp, #8
|
||||
mov r5, #0
|
||||
mov sl, r0
|
||||
mov sb, r1
|
||||
mov r6, r5
|
||||
mov r7, r5
|
||||
bl EntityIsValid__023000E4
|
||||
cmp r0, #0
|
||||
moveq r0, r5
|
||||
beq _023000D4
|
||||
mov r0, sl
|
||||
bl GetApparentWeather
|
||||
mov r8, r0
|
||||
cmp r8, #4
|
||||
bne _022FFFB8
|
||||
mov r0, sl
|
||||
mov r1, #0x1b
|
||||
bl AbilityIsActive
|
||||
cmp r0, #0
|
||||
movne r5, #1
|
||||
movne r6, r5
|
||||
b _022FFFD8
|
||||
_022FFFB8:
|
||||
cmp r8, #1
|
||||
bne _022FFFD8
|
||||
mov r0, sl
|
||||
mov r1, #0x4a
|
||||
bl AbilityIsActive
|
||||
cmp r0, #0
|
||||
movne r5, #1
|
||||
movne r6, r5
|
||||
_022FFFD8:
|
||||
ldr r4, _023000DC ; =EXCL_ITEM_EFFECTS_WEATHER_ATK_SPEED_BOOST
|
||||
ldrb r0, [r4, r8]
|
||||
cmp r0, #0
|
||||
beq _02300000
|
||||
ldrb r1, [r4, r8]
|
||||
mov r0, sl
|
||||
bl ExclusiveItemEffectIsActive__022FFF28
|
||||
cmp r0, #0
|
||||
ldrneb r7, [r4, r8]
|
||||
movne r5, #1
|
||||
_02300000:
|
||||
mov r0, sl
|
||||
mov r1, #0x54
|
||||
bl AbilityIsActive
|
||||
cmp r0, #0
|
||||
beq _02300028
|
||||
ldr r0, [sl, #0xb4]
|
||||
ldrsh r0, [r0, #0x66]
|
||||
cmp r0, #0
|
||||
moveq r5, #1
|
||||
moveq r6, r5
|
||||
_02300028:
|
||||
cmp sb, #0
|
||||
beq _023000C8
|
||||
cmp r6, #0
|
||||
beq _02300068
|
||||
ldr r0, [sl, #0xb4]
|
||||
mov r2, r5
|
||||
mov r1, #0x40
|
||||
bl UpdateStateFlags
|
||||
cmp r0, #0
|
||||
beq _023000C8
|
||||
mov r0, sl
|
||||
bl ov29_022E655C
|
||||
#ifdef JAPAN
|
||||
ldr r1, _02301510 ; =0x0000096F
|
||||
mov r0, sl
|
||||
#else
|
||||
mov r0, sl
|
||||
mov r1, #0xc30
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
b _023000C8
|
||||
_02300068:
|
||||
cmp r7, #0
|
||||
beq _023000C8
|
||||
ldr r0, [sl, #0xb4]
|
||||
mov r2, r5
|
||||
mov r1, #0x40
|
||||
bl UpdateStateFlags
|
||||
cmp r0, #0
|
||||
beq _023000C8
|
||||
mov r0, sl
|
||||
bl ov29_022E655C
|
||||
mov r0, #0
|
||||
mov r1, sl
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r2, sp, #0
|
||||
mov r0, sl
|
||||
mov r1, r7
|
||||
bl GetExclusiveItemWithEffectFromBag
|
||||
add r1, sp, #0
|
||||
mov r0, #0
|
||||
bl ov29_02344B44
|
||||
#ifdef JAPAN
|
||||
mov r0, sl
|
||||
mov r1, #0x970
|
||||
#else
|
||||
ldr r1, _023000E0 ; =0x00000C31
|
||||
mov r0, sl
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
_023000C8:
|
||||
cmp r5, #0
|
||||
movne r0, #2
|
||||
moveq r0, #1
|
||||
_023000D4:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
||||
.align 2, 0
|
||||
_023000DC: .word EXCL_ITEM_EFFECTS_WEATHER_ATK_SPEED_BOOST
|
||||
#ifdef JAPAN
|
||||
_02301510: .word 0x0000096F
|
||||
#else
|
||||
_023000E0: .word 0x00000C31
|
||||
#endif
|
||||
arm_func_end GetNumberOfAttacks
|
||||
|
||||
137
asm/overlay_29_022FFF4C.s
Normal file
137
asm/overlay_29_022FFF4C.s
Normal file
@@ -0,0 +1,137 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022FFF4C.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start CalcSpeedStageWrapper
|
||||
CalcSpeedStageWrapper: ; 0x022FFF4C
|
||||
ldr ip, _022FFF58 ; =CalcSpeedStage
|
||||
mov r1, #1
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_022FFF58: .word CalcSpeedStage
|
||||
arm_func_end CalcSpeedStageWrapper
|
||||
|
||||
arm_func_start GetNumberOfAttacks
|
||||
GetNumberOfAttacks: ; 0x022FFF5C
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
sub sp, sp, #8
|
||||
mov r5, #0
|
||||
mov sl, r0
|
||||
mov sb, r1
|
||||
mov r6, r5
|
||||
mov r7, r5
|
||||
bl EntityIsValid__023000E4
|
||||
cmp r0, #0
|
||||
moveq r0, r5
|
||||
beq _023000D4
|
||||
mov r0, sl
|
||||
bl GetApparentWeather
|
||||
mov r8, r0
|
||||
cmp r8, #4
|
||||
bne _022FFFB8
|
||||
mov r0, sl
|
||||
mov r1, #0x1b
|
||||
bl AbilityIsActive
|
||||
cmp r0, #0
|
||||
movne r5, #1
|
||||
movne r6, r5
|
||||
b _022FFFD8
|
||||
_022FFFB8:
|
||||
cmp r8, #1
|
||||
bne _022FFFD8
|
||||
mov r0, sl
|
||||
mov r1, #0x4a
|
||||
bl AbilityIsActive
|
||||
cmp r0, #0
|
||||
movne r5, #1
|
||||
movne r6, r5
|
||||
_022FFFD8:
|
||||
ldr r4, _023000DC ; =EXCL_ITEM_EFFECTS_WEATHER_ATK_SPEED_BOOST
|
||||
ldrb r0, [r4, r8]
|
||||
cmp r0, #0
|
||||
beq _02300000
|
||||
ldrb r1, [r4, r8]
|
||||
mov r0, sl
|
||||
bl ExclusiveItemEffectIsActive__022FFF28
|
||||
cmp r0, #0
|
||||
ldrneb r7, [r4, r8]
|
||||
movne r5, #1
|
||||
_02300000:
|
||||
mov r0, sl
|
||||
mov r1, #0x54
|
||||
bl AbilityIsActive
|
||||
cmp r0, #0
|
||||
beq _02300028
|
||||
ldr r0, [sl, #0xb4]
|
||||
ldrsh r0, [r0, #0x66]
|
||||
cmp r0, #0
|
||||
moveq r5, #1
|
||||
moveq r6, r5
|
||||
_02300028:
|
||||
cmp sb, #0
|
||||
beq _023000C8
|
||||
cmp r6, #0
|
||||
beq _02300068
|
||||
ldr r0, [sl, #0xb4]
|
||||
mov r2, r5
|
||||
mov r1, #0x40
|
||||
bl UpdateStateFlags
|
||||
cmp r0, #0
|
||||
beq _023000C8
|
||||
mov r0, sl
|
||||
bl ov29_022E655C
|
||||
#ifdef JAPAN
|
||||
ldr r1, _02301510 ; =0x0000096F
|
||||
mov r0, sl
|
||||
#else
|
||||
mov r0, sl
|
||||
mov r1, #0xc30
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
b _023000C8
|
||||
_02300068:
|
||||
cmp r7, #0
|
||||
beq _023000C8
|
||||
ldr r0, [sl, #0xb4]
|
||||
mov r2, r5
|
||||
mov r1, #0x40
|
||||
bl UpdateStateFlags
|
||||
cmp r0, #0
|
||||
beq _023000C8
|
||||
mov r0, sl
|
||||
bl ov29_022E655C
|
||||
mov r0, #0
|
||||
mov r1, sl
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r2, sp, #0
|
||||
mov r0, sl
|
||||
mov r1, r7
|
||||
bl GetExclusiveItemWithEffectFromBag
|
||||
add r1, sp, #0
|
||||
mov r0, #0
|
||||
bl ov29_02344B44
|
||||
#ifdef JAPAN
|
||||
mov r0, sl
|
||||
mov r1, #0x970
|
||||
#else
|
||||
ldr r1, _023000E0 ; =0x00000C31
|
||||
mov r0, sl
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
_023000C8:
|
||||
cmp r5, #0
|
||||
movne r0, #2
|
||||
moveq r0, #1
|
||||
_023000D4:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
||||
.align 2, 0
|
||||
_023000DC: .word EXCL_ITEM_EFFECTS_WEATHER_ATK_SPEED_BOOST
|
||||
#ifdef JAPAN
|
||||
_02301510: .word 0x0000096F
|
||||
#else
|
||||
_023000E0: .word 0x00000C31
|
||||
#endif
|
||||
arm_func_end GetNumberOfAttacks
|
||||
@@ -105,56 +105,3 @@ LevitateIsActive: ; 0x02301E18
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end LevitateIsActive
|
||||
|
||||
arm_func_start MonsterIsType
|
||||
MonsterIsType: ; 0x02301E50
|
||||
cmp r1, #0
|
||||
ldr r2, [r0, #0xb4]
|
||||
moveq r0, #0
|
||||
bxeq lr
|
||||
ldrb r0, [r2, #0x5e]
|
||||
cmp r0, r1
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
ldrb r0, [r2, #0x5f]
|
||||
cmp r0, r1
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
arm_func_end MonsterIsType
|
||||
|
||||
arm_func_start IsTypeAffectedByGravity
|
||||
IsTypeAffectedByGravity: ; 0x02301E88
|
||||
stmdb sp!, {r3, lr}
|
||||
cmp r1, #0xa
|
||||
bne _02301EA4
|
||||
bl GravityIsActive
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
_02301EA4:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end IsTypeAffectedByGravity
|
||||
|
||||
arm_func_start HasTypeAffectedByGravity
|
||||
HasTypeAffectedByGravity: ; 0x02301EAC
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r3, [r0, #0xb4]
|
||||
cmp r1, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
ldrb r2, [r3, #0x5e]
|
||||
cmp r2, r1
|
||||
bne _02301ED4
|
||||
bl IsTypeAffectedByGravity
|
||||
ldmia sp!, {r3, pc}
|
||||
_02301ED4:
|
||||
ldrb r2, [r3, #0x5f]
|
||||
cmp r2, r1
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
bl IsTypeAffectedByGravity
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end HasTypeAffectedByGravity
|
||||
|
||||
39
asm/overlay_29_02301E88.s
Normal file
39
asm/overlay_29_02301E88.s
Normal file
@@ -0,0 +1,39 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02301E88.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start IsTypeAffectedByGravity
|
||||
IsTypeAffectedByGravity: ; 0x02301E88
|
||||
stmdb sp!, {r3, lr}
|
||||
cmp r1, #0xa
|
||||
bne _02301EA4
|
||||
bl GravityIsActive
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
_02301EA4:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end IsTypeAffectedByGravity
|
||||
|
||||
arm_func_start HasTypeAffectedByGravity
|
||||
HasTypeAffectedByGravity: ; 0x02301EAC
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r3, [r0, #0xb4]
|
||||
cmp r1, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
ldrb r2, [r3, #0x5e]
|
||||
cmp r2, r1
|
||||
bne _02301ED4
|
||||
bl IsTypeAffectedByGravity
|
||||
ldmia sp!, {r3, pc}
|
||||
_02301ED4:
|
||||
ldrb r2, [r3, #0x5f]
|
||||
cmp r2, r1
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
bl IsTypeAffectedByGravity
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end HasTypeAffectedByGravity
|
||||
@@ -1,21 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0230A9B8.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActive__0230A9B8
|
||||
ExclusiveItemEffectIsActive__0230A9B8: ; 0x0230A9B8
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, [r0, #0xb4]
|
||||
ldrb r0, [r2, #6]
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
#ifdef JAPAN
|
||||
add r0, r2, #0x224
|
||||
#else
|
||||
add r0, r2, #0x228
|
||||
#endif
|
||||
bl ExclusiveItemEffectFlagTest
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActive__0230A9B8
|
||||
@@ -41,72 +41,3 @@ _0230F898:
|
||||
.align 2, 0
|
||||
_0230F8A8: .word DUNGEON_PTR
|
||||
arm_func_end TeamMemberHasExclusiveItemEffectActive
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActive__0230F8AC
|
||||
ExclusiveItemEffectIsActive__0230F8AC: ; 0x0230F8AC
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, [r0, #0xb4]
|
||||
ldrb r0, [r2, #6]
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
#ifdef JAPAN
|
||||
add r0, r2, #0x224
|
||||
#else
|
||||
add r0, r2, #0x228
|
||||
#endif
|
||||
bl ExclusiveItemEffectFlagTest
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActive__0230F8AC
|
||||
|
||||
arm_func_start ov29_0230F8D0
|
||||
ov29_0230F8D0: ; 0x0230F8D0
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
bl EntityIsValid__0230F008
|
||||
cmp r0, #0
|
||||
moveq r0, #0xff
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
ldr r0, [r8, #0xb4]
|
||||
mov r5, #0
|
||||
ldrb r6, [r0, #0x4c]
|
||||
ldr r4, _0230F97C ; =DIRECTIONS_XY
|
||||
b _0230F96C
|
||||
_0230F900:
|
||||
mov r1, r6, lsl #2
|
||||
add r0, r4, r6, lsl #2
|
||||
ldrsh ip, [r8, #4]
|
||||
ldrsh r3, [r4, r1]
|
||||
ldrsh r2, [r8, #6]
|
||||
ldrsh r1, [r0, #2]
|
||||
add r0, ip, r3
|
||||
add r1, r2, r1
|
||||
bl GetTile
|
||||
ldr sb, [r0, #0xc]
|
||||
cmp sb, #0
|
||||
beq _0230F958
|
||||
mov r0, sb
|
||||
bl IsMonster__0230F980
|
||||
cmp r0, #0
|
||||
beq _0230F958
|
||||
mov r0, sb
|
||||
mov r1, r7
|
||||
bl ItemIsActive__0230F810
|
||||
cmp r0, #0
|
||||
movne r0, r6
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
_0230F958:
|
||||
add r0, r6, #1
|
||||
and r0, r0, #0xff
|
||||
add r1, r5, #1
|
||||
and r6, r0, #7
|
||||
and r5, r1, #0xff
|
||||
_0230F96C:
|
||||
cmp r5, #8
|
||||
blo _0230F900
|
||||
mov r0, #0xff
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_0230F97C: .word DIRECTIONS_XY
|
||||
arm_func_end ov29_0230F8D0
|
||||
|
||||
56
asm/overlay_29_0230F8D0.s
Normal file
56
asm/overlay_29_0230F8D0.s
Normal file
@@ -0,0 +1,56 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0230F8D0.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_0230F8D0
|
||||
ov29_0230F8D0: ; 0x0230F8D0
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
bl EntityIsValid__0230F008
|
||||
cmp r0, #0
|
||||
moveq r0, #0xff
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
ldr r0, [r8, #0xb4]
|
||||
mov r5, #0
|
||||
ldrb r6, [r0, #0x4c]
|
||||
ldr r4, _0230F97C ; =DIRECTIONS_XY
|
||||
b _0230F96C
|
||||
_0230F900:
|
||||
mov r1, r6, lsl #2
|
||||
add r0, r4, r6, lsl #2
|
||||
ldrsh ip, [r8, #4]
|
||||
ldrsh r3, [r4, r1]
|
||||
ldrsh r2, [r8, #6]
|
||||
ldrsh r1, [r0, #2]
|
||||
add r0, ip, r3
|
||||
add r1, r2, r1
|
||||
bl GetTile
|
||||
ldr sb, [r0, #0xc]
|
||||
cmp sb, #0
|
||||
beq _0230F958
|
||||
mov r0, sb
|
||||
bl IsMonster__0230F980
|
||||
cmp r0, #0
|
||||
beq _0230F958
|
||||
mov r0, sb
|
||||
mov r1, r7
|
||||
bl ItemIsActive__0230F810
|
||||
cmp r0, #0
|
||||
movne r0, r6
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
_0230F958:
|
||||
add r0, r6, #1
|
||||
and r0, r0, #0xff
|
||||
add r1, r5, #1
|
||||
and r6, r0, #7
|
||||
and r5, r1, #0xff
|
||||
_0230F96C:
|
||||
cmp r5, #8
|
||||
blo _0230F900
|
||||
mov r0, #0xff
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_0230F97C: .word DIRECTIONS_XY
|
||||
arm_func_end ov29_0230F8D0
|
||||
@@ -1,25 +1,8 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02311064.inc"
|
||||
.include "overlay_29_02311088.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActive__02311064
|
||||
ExclusiveItemEffectIsActive__02311064: ; 0x02311064
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, [r0, #0xb4]
|
||||
ldrb r0, [r2, #6]
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
#ifdef JAPAN
|
||||
add r0, r2, #0x224
|
||||
#else
|
||||
add r0, r2, #0x228
|
||||
#endif
|
||||
bl ExclusiveItemEffectFlagTest
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActive__02311064
|
||||
|
||||
arm_func_start TickStatusAndHealthRegen
|
||||
TickStatusAndHealthRegen: ; 0x02311088
|
||||
#ifdef JAPAN
|
||||
@@ -3329,764 +3329,3 @@ _023147E0: .word 0x00000D01 + TRY_INFLICT_PARALYSIS_STATUS_OFFSET
|
||||
_023147E4: .word DIRECTIONS_XY
|
||||
_023147E8: .word 0x00000DC5 + TRY_INFLICT_PARALYSIS_STATUS_OFFSET
|
||||
arm_func_end TryInflictParalysisStatus
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActive__023147EC
|
||||
ExclusiveItemEffectIsActive__023147EC: ; 0x023147EC
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, [r0, #0xb4]
|
||||
ldrb r0, [r2, #6]
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
#ifdef JAPAN
|
||||
add r0, r2, #0x224
|
||||
#else
|
||||
add r0, r2, #0x228
|
||||
#endif
|
||||
bl ExclusiveItemEffectFlagTest
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActive__023147EC
|
||||
|
||||
arm_func_start BoostSpeed
|
||||
BoostSpeed: ; 0x02314810
|
||||
#ifdef JAPAN
|
||||
#define BOOST_SPEED_OFFSET -4
|
||||
#else
|
||||
#define BOOST_SPEED_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r8, r1
|
||||
mov sb, r0
|
||||
mov r0, r8
|
||||
mov r7, r2
|
||||
mov r6, r3
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
cmp r6, #0
|
||||
bne _02314850
|
||||
ldr r1, _0231492C ; =SPEED_BOOST_TURN_RANGE
|
||||
mov r0, r8
|
||||
mov r2, #0
|
||||
bl CalcStatusDuration
|
||||
add r6, r0, #1
|
||||
_02314850:
|
||||
mov r0, #0
|
||||
mov r1, r8
|
||||
mov r2, r0
|
||||
ldr r5, [r8, #0xb4]
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl CalcSpeedStage
|
||||
mov r4, r0
|
||||
cmp r4, #4
|
||||
bne _0231489C
|
||||
ldrb r0, [sp, #0x20]
|
||||
cmp r0, #0
|
||||
beq _02314920
|
||||
ldr r2, _02314930 ; =0x00000DDB
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314920
|
||||
_0231489C:
|
||||
mov r2, #0
|
||||
b _023148BC
|
||||
_023148A4:
|
||||
add r1, r5, r2
|
||||
ldrb r0, [r1, #0x114 + BOOST_SPEED_OFFSET]
|
||||
cmp r0, #0
|
||||
streqb r6, [r1, #0x114 + BOOST_SPEED_OFFSET]
|
||||
beq _023148C4
|
||||
add r2, r2, #1
|
||||
_023148BC:
|
||||
cmp r2, #5
|
||||
blt _023148A4
|
||||
_023148C4:
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl CalcSpeedStage
|
||||
mov r6, r0
|
||||
cmp r4, r6
|
||||
bne _023148F0
|
||||
ldr r2, _02314934 ; =0x00000DDA
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314920
|
||||
_023148F0:
|
||||
mov r0, r8
|
||||
bl ov29_022E44CC
|
||||
ldr r0, _02314938 ; =ov29_02353318
|
||||
mov r1, r6, lsl #1
|
||||
ldrh r2, [r0, r1]
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, #1
|
||||
strb r0, [r5, #0x101]
|
||||
mov r0, #0
|
||||
strb r0, [r5, #0x152 + BOOST_SPEED_OFFSET]
|
||||
_02314920:
|
||||
mov r0, r8
|
||||
bl UpdateStatusIconFlags
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_0231492C: .word SPEED_BOOST_TURN_RANGE
|
||||
#ifdef JAPAN
|
||||
_02314930: .word 0x00000B1B
|
||||
_02314934: .word 0x00000B1A
|
||||
#else
|
||||
_02314930: .word 0x00000DDB
|
||||
_02314934: .word 0x00000DDA
|
||||
#endif
|
||||
_02314938: .word ov29_02353318
|
||||
arm_func_end BoostSpeed
|
||||
|
||||
arm_func_start BoostSpeedOneStage
|
||||
BoostSpeedOneStage: ; 0x0231493C
|
||||
stmdb sp!, {r3, lr}
|
||||
str r3, [sp]
|
||||
mov r3, r2
|
||||
mov r2, #1
|
||||
bl BoostSpeed
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end BoostSpeedOneStage
|
||||
|
||||
arm_func_start LowerSpeed
|
||||
LowerSpeed: ; 0x02314954
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
mov sb, r1
|
||||
mov sl, r0
|
||||
mov r0, sb
|
||||
mov r8, r2
|
||||
mov r7, r3
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
mov r2, r7
|
||||
bl SafeguardIsActive
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
mov r2, r7
|
||||
bl IsProtectedFromNegativeStatus
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
mov r0, #0
|
||||
mov r1, sb
|
||||
mov r2, r0
|
||||
ldr r4, [sb, #0xb4]
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r0, sb
|
||||
bl CalcSpeedStageWrapper
|
||||
movs fp, r0
|
||||
bne _023149E8
|
||||
cmp r7, #0
|
||||
beq _02314AA0
|
||||
ldr r2, _02314AAC ; =0x00000DDC
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314AA0
|
||||
_023149E8:
|
||||
mov r5, #0
|
||||
b _02314A34
|
||||
_023149F0:
|
||||
mov r1, #0
|
||||
b _02314A28
|
||||
_023149F8:
|
||||
add r6, r4, r1
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r6, #0x115]
|
||||
#else
|
||||
ldrb r0, [r6, #0x119]
|
||||
#endif
|
||||
cmp r0, #0
|
||||
bne _02314A24
|
||||
ldr r1, _02314AB0 ; =ov10_022C488C
|
||||
mov r0, sb
|
||||
mov r2, #1
|
||||
bl CalcStatusDuration
|
||||
add r0, r0, #1
|
||||
#ifdef JAPAN
|
||||
strb r0, [r6, #0x115]
|
||||
#else
|
||||
strb r0, [r6, #0x119]
|
||||
#endif
|
||||
b _02314A30
|
||||
_02314A24:
|
||||
add r1, r1, #1
|
||||
_02314A28:
|
||||
cmp r1, #5
|
||||
blt _023149F8
|
||||
_02314A30:
|
||||
add r5, r5, #1
|
||||
_02314A34:
|
||||
cmp r5, r8
|
||||
blt _023149F0
|
||||
mov r0, sb
|
||||
bl CalcSpeedStageWrapper
|
||||
mov r4, r0
|
||||
cmp fp, r4
|
||||
bne _02314A6C
|
||||
cmp r7, #0
|
||||
beq _02314AA0
|
||||
ldr r2, _02314AB4 ; =0x00000DDA
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314AA0
|
||||
_02314A6C:
|
||||
mov r0, sb
|
||||
bl ov29_022E451C
|
||||
ldr r0, _02314AB8 ; =ov29_02353318
|
||||
mov r1, r4, lsl #1
|
||||
ldrh r2, [r0, r1]
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
cmp r4, #0
|
||||
bne _02314AA0
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl TryActivateQuickFeet
|
||||
_02314AA0:
|
||||
mov r0, sb
|
||||
bl UpdateStatusIconFlags
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02314AAC: .word 0x00000B1C
|
||||
_02314AB0: .word ov10_022C488C
|
||||
_02314AB4: .word 0x00000B1A
|
||||
#else
|
||||
_02314AAC: .word 0x00000DDC
|
||||
_02314AB0: .word ov10_022C488C
|
||||
_02314AB4: .word 0x00000DDA
|
||||
#endif
|
||||
_02314AB8: .word ov29_02353318
|
||||
arm_func_end LowerSpeed
|
||||
|
||||
arm_func_start TrySealMove
|
||||
TrySealMove: ; 0x02314ABC
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
||||
sub sp, sp, #0x14
|
||||
mov r5, #0
|
||||
movs r7, r1
|
||||
mov r8, r0
|
||||
mov r6, r2
|
||||
moveq r0, r5
|
||||
beq _02314C18
|
||||
mov r2, #1
|
||||
bl SafeguardIsActive
|
||||
cmp r0, #0
|
||||
movne r0, r5
|
||||
bne _02314C18
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, #1
|
||||
bl IsProtectedFromNegativeStatus
|
||||
cmp r0, #0
|
||||
movne r0, r5
|
||||
bne _02314C18
|
||||
ldr r0, [r7, #0xb4]
|
||||
mov r4, r5
|
||||
#ifdef JAPAN
|
||||
add ip, r0, #0x120
|
||||
#else
|
||||
add ip, r0, #0x124
|
||||
#endif
|
||||
mov lr, r4
|
||||
mov r2, r5
|
||||
mov r3, #1
|
||||
add r0, sp, #4
|
||||
_02314B28:
|
||||
ldrb r1, [ip, lr, lsl #3]
|
||||
add sb, ip, lr, lsl #3
|
||||
tst r1, #1
|
||||
movne r1, r3
|
||||
moveq r1, r2
|
||||
tst r1, #0xff
|
||||
beq _02314B54
|
||||
ldrh r1, [sb, #2]
|
||||
tst r1, #1
|
||||
streq sb, [r0, r4, lsl #2]
|
||||
addeq r4, r4, #1
|
||||
_02314B54:
|
||||
add lr, lr, #1
|
||||
cmp lr, #4
|
||||
blt _02314B28
|
||||
cmp r6, #0
|
||||
beq _02314B74
|
||||
cmp r4, #0
|
||||
moveq r0, #0
|
||||
beq _02314C18
|
||||
_02314B74:
|
||||
cmp r4, #0
|
||||
beq _02314BE8
|
||||
ldr r3, _02314C20 ; =0x00000DBE
|
||||
mov r5, #8
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, #1
|
||||
str r5, [sp]
|
||||
bl ExclusiveItemEffectIsActiveWithLogging
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
bne _02314C18
|
||||
cmp r6, #0
|
||||
movne r0, #1
|
||||
bne _02314C18
|
||||
mov r0, r4
|
||||
bl DungeonRandInt
|
||||
add r1, sp, #4
|
||||
ldr r2, [r1, r0, lsl #2]
|
||||
mov r0, #0
|
||||
ldrh r1, [r2, #2]
|
||||
orr r1, r1, #1
|
||||
strh r1, [r2, #2]
|
||||
ldrh r1, [r2, #4]
|
||||
bl ov29_0234B084
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r5, #1
|
||||
bl TryActivateQuickFeet
|
||||
_02314BE8:
|
||||
cmp r5, #0
|
||||
beq _02314C04
|
||||
ldr r2, _02314C24 ; =0x00000DE3
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314C14
|
||||
_02314C04:
|
||||
ldr r2, _02314C28 ; =0x00000DE4
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02314C14:
|
||||
mov r0, #1
|
||||
_02314C18:
|
||||
add sp, sp, #0x14
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02314C20: .word 0x00000AFE
|
||||
_02314C24: .word 0x00000B23
|
||||
_02314C28: .word 0x00000B24
|
||||
#else
|
||||
_02314C20: .word 0x00000DBE
|
||||
_02314C24: .word 0x00000DE3
|
||||
_02314C28: .word 0x00000DE4
|
||||
#endif
|
||||
arm_func_end TrySealMove
|
||||
|
||||
arm_func_start BoostOrLowerSpeed
|
||||
BoostOrLowerSpeed: ; 0x02314C2C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r4, r1
|
||||
mov r5, r0
|
||||
mov r0, r4
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, pc}
|
||||
mov r0, #0x32
|
||||
bl DungeonRandOutcome__022EAB20
|
||||
cmp r0, #0
|
||||
mov r2, #1
|
||||
mov r0, r5
|
||||
beq _02314C74
|
||||
mov r1, r4
|
||||
mov r3, r2
|
||||
bl LowerSpeed
|
||||
b _02314C84
|
||||
_02314C74:
|
||||
mov r1, r4
|
||||
mov r3, #0
|
||||
str r2, [sp]
|
||||
bl BoostSpeed
|
||||
_02314C84:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end BoostOrLowerSpeed
|
||||
|
||||
arm_func_start ResetHitChanceStat
|
||||
ResetHitChanceStat: ; 0x02314C8C
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r5, r1
|
||||
mov r6, r0
|
||||
mov r0, r5
|
||||
mov r8, r2
|
||||
mov r4, r3
|
||||
mov r7, #0
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
ldr r0, [r5, #0xb4]
|
||||
add r1, r0, r8, lsl #1
|
||||
ldrsh r0, [r1, #0x2c]
|
||||
cmp r0, #0xa
|
||||
movne r0, #0xa
|
||||
movne r7, #1
|
||||
strneh r0, [r1, #0x2c]
|
||||
cmp r7, #0
|
||||
beq _02314CE4
|
||||
mov r0, r5
|
||||
bl ov29_022E543C
|
||||
b _02314CF4
|
||||
_02314CE4:
|
||||
cmp r4, #0
|
||||
beq _02314CF4
|
||||
mov r0, r5
|
||||
bl ov29_022E543C
|
||||
_02314CF4:
|
||||
mov r0, #0
|
||||
mov r1, r5
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
cmp r7, #0
|
||||
beq _02314D20
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
#ifdef JAPAN
|
||||
mov r2, #0xaa0
|
||||
#else
|
||||
mov r2, #0xd60
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314D30
|
||||
_02314D20:
|
||||
ldr r2, _02314D3C ; =0x00000D61
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02314D30:
|
||||
mov r0, r5
|
||||
bl UpdateStatusIconFlags
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02314D3C: .word 0x00000AA1
|
||||
#else
|
||||
_02314D3C: .word 0x00000D61
|
||||
#endif
|
||||
arm_func_end ResetHitChanceStat
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActiveWithLogging
|
||||
ExclusiveItemEffectIsActiveWithLogging: ; 0x02314D40
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, sp, #8
|
||||
mov r6, r1
|
||||
ldrb r1, [sp, #0x20]
|
||||
mov r7, r0
|
||||
mov r0, r6
|
||||
mov r5, r2
|
||||
mov r4, r3
|
||||
bl ExclusiveItemEffectIsActive__023147EC
|
||||
cmp r0, #0
|
||||
beq _02314DB8
|
||||
cmp r5, #0
|
||||
beq _02314DB0
|
||||
mov r0, #0
|
||||
mov r1, r6
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldrb r1, [sp, #0x20]
|
||||
add r2, sp, #0
|
||||
mov r0, r6
|
||||
bl GetExclusiveItemWithEffectFromBag
|
||||
add r1, sp, #0
|
||||
mov r0, #1
|
||||
bl ov29_02344B44
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02314DB0:
|
||||
mov r0, #1
|
||||
b _02314DBC
|
||||
_02314DB8:
|
||||
mov r0, #0
|
||||
_02314DBC:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActiveWithLogging
|
||||
|
||||
arm_func_start ov29_02314DC4
|
||||
ov29_02314DC4: ; 0x02314DC4
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, sp, #8
|
||||
mov r7, r0
|
||||
mov r0, #0
|
||||
mov r5, r2
|
||||
mov r2, r0
|
||||
mov r6, r1
|
||||
mov r4, r3
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r2, sp, #0
|
||||
mov r0, r6
|
||||
mov r1, r4
|
||||
bl GetExclusiveItemWithEffectFromBag
|
||||
add r1, sp, #0
|
||||
mov r0, #1
|
||||
bl ov29_02344B44
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end ov29_02314DC4
|
||||
|
||||
arm_func_start TryActivateQuickFeet
|
||||
TryActivateQuickFeet: ; 0x02314E1C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r4, r1
|
||||
mov r5, r0
|
||||
mov r0, r4
|
||||
mov r1, #0x6d
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, pc}
|
||||
mov r3, #0
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r2, #1
|
||||
str r3, [sp]
|
||||
bl BoostSpeed
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end TryActivateQuickFeet
|
||||
|
||||
arm_func_start TryInflictTerrifiedStatus
|
||||
TryInflictTerrifiedStatus: ; 0x02314E60
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
ldr r2, _02314EB0 ; =ov10_022C4618
|
||||
mov r4, r1
|
||||
ldr ip, [r4, #0xb4]
|
||||
mov r3, #1
|
||||
mov r5, r0
|
||||
ldrsh r1, [r2]
|
||||
#ifdef JAPAN
|
||||
strb r3, [ip, #0x103]
|
||||
mov r0, r4
|
||||
strb r1, [ip, #0x104]
|
||||
#else
|
||||
strb r3, [ip, #0x104]
|
||||
mov r0, r4
|
||||
strb r1, [ip, #0x105]
|
||||
#endif
|
||||
bl ov29_022E60E4
|
||||
mov r0, #0
|
||||
mov r1, r4
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r2, _02314EB4 ; =0x00000DE5
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02314EB0: .word ov10_022C4618
|
||||
#ifdef JAPAN
|
||||
_02314EB4: .word 0x00000B25
|
||||
#else
|
||||
_02314EB4: .word 0x00000DE5
|
||||
#endif
|
||||
arm_func_end TryInflictTerrifiedStatus
|
||||
|
||||
arm_func_start TryInflictGrudgeStatus
|
||||
TryInflictGrudgeStatus: ; 0x02314EB8
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r7, r1
|
||||
ldr r5, [r7, #0xb4]
|
||||
mov r8, r0
|
||||
mov r4, #0
|
||||
mov r6, r2
|
||||
mov r2, r4
|
||||
mov r0, #1
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldrb r0, [r5, #0xfd]
|
||||
cmp r0, #0
|
||||
beq _02314F04
|
||||
cmp r6, #0
|
||||
beq _02314F2C
|
||||
ldr r2, _02314F34 ; =0x00000ED1
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314F2C
|
||||
_02314F04:
|
||||
mov r4, #1
|
||||
mov r0, r7
|
||||
strb r4, [r5, #0xfd]
|
||||
bl UpdateStatusIconFlags
|
||||
cmp r6, #0
|
||||
beq _02314F2C
|
||||
#ifdef JAPAN
|
||||
ldr r2, _0231640C ; =0x00000C12
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
#else
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, #0xed0
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02314F2C:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02314F34: .word 0x00000C13
|
||||
_0231640C: .word 0x00000C12
|
||||
#else
|
||||
_02314F34: .word 0x00000ED1
|
||||
#endif
|
||||
arm_func_end TryInflictGrudgeStatus
|
||||
|
||||
arm_func_start TryInflictConfusedStatus
|
||||
TryInflictConfusedStatus: ; 0x02314F38
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r6, r1
|
||||
mov r7, r0
|
||||
mov r0, r6
|
||||
mov r5, r2
|
||||
mov r4, r3
|
||||
bl EntityIsValid__02315118
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl SafeguardIsActive
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl IsProtectedFromNegativeStatus
|
||||
cmp r0, #0
|
||||
mov r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r1, r6
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r0, r6
|
||||
mov r1, #0x19
|
||||
bl ItemIsActive__0231513C
|
||||
cmp r0, #0
|
||||
beq _02314FD8
|
||||
cmp r5, #0
|
||||
beq _02314FD0
|
||||
ldr r2, _02315100 ; =0x00000DAF
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02314FD0:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_02314FD8:
|
||||
mov ip, #2
|
||||
ldr r3, _02315104 ; =0x00000DBA
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
str ip, [sp]
|
||||
bl ExclusiveItemEffectIsActiveWithLogging
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
cmp r7, r6
|
||||
beq _02315048
|
||||
cmp r7, #0
|
||||
moveq r0, #0
|
||||
beq _02315028
|
||||
ldr r0, [r7]
|
||||
cmp r0, #1
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
_02315028:
|
||||
cmp r0, #0
|
||||
beq _02315048
|
||||
mov r0, r7
|
||||
mov r1, #0x53
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
bne _02315054
|
||||
_02315048:
|
||||
mov r0, r6
|
||||
mov r1, #0x40
|
||||
bl AbilityIsActiveVeneer
|
||||
_02315054:
|
||||
cmp r0, #0
|
||||
beq _0231507C
|
||||
cmp r5, #0
|
||||
beq _02315074
|
||||
ldr r2, _02315108 ; =0x00000DA7
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02315074:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_0231507C:
|
||||
cmp r4, #0
|
||||
movne r0, #1
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r0, r6
|
||||
bl ov29_022E41CC
|
||||
ldr r4, [r6, #0xb4]
|
||||
ldrb r0, [r4, #0xd0]
|
||||
cmp r0, #2
|
||||
beq _023150E0
|
||||
ldr r1, _0231510C ; =ov10_022C4890
|
||||
mov r3, #2
|
||||
mov r0, r6
|
||||
mov r2, #1
|
||||
strb r3, [r4, #0xd0]
|
||||
bl CalcStatusDuration
|
||||
add r3, r0, #1
|
||||
ldr r2, _02315110 ; =0x00000CFE
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
strb r3, [r4, #0xd1]
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl TryActivateQuickFeet
|
||||
b _023150F0
|
||||
_023150E0:
|
||||
ldr r2, _02315114 ; =0x00000CFF
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_023150F0:
|
||||
mov r0, r6
|
||||
bl UpdateStatusIconFlags
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
#define TRY_INFLICT_CONFUSED_STATUS_OFFSET -0x2C0
|
||||
#else
|
||||
#define TRY_INFLICT_CONFUSED_STATUS_OFFSET 0
|
||||
#endif
|
||||
_02315100: .word 0x00000DAF + TRY_INFLICT_CONFUSED_STATUS_OFFSET
|
||||
_02315104: .word 0x00000DBA + TRY_INFLICT_CONFUSED_STATUS_OFFSET
|
||||
_02315108: .word 0x00000DA7 + TRY_INFLICT_CONFUSED_STATUS_OFFSET
|
||||
_0231510C: .word ov10_022C4890
|
||||
_02315110: .word 0x00000CFE + TRY_INFLICT_CONFUSED_STATUS_OFFSET
|
||||
_02315114: .word 0x00000CFF + TRY_INFLICT_CONFUSED_STATUS_OFFSET
|
||||
arm_func_end TryInflictConfusedStatus
|
||||
|
||||
748
asm/overlay_29_02314810.s
Normal file
748
asm/overlay_29_02314810.s
Normal file
@@ -0,0 +1,748 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02314810.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start BoostSpeed
|
||||
BoostSpeed: ; 0x02314810
|
||||
#ifdef JAPAN
|
||||
#define BOOST_SPEED_OFFSET -4
|
||||
#else
|
||||
#define BOOST_SPEED_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r8, r1
|
||||
mov sb, r0
|
||||
mov r0, r8
|
||||
mov r7, r2
|
||||
mov r6, r3
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
cmp r6, #0
|
||||
bne _02314850
|
||||
ldr r1, _0231492C ; =SPEED_BOOST_TURN_RANGE
|
||||
mov r0, r8
|
||||
mov r2, #0
|
||||
bl CalcStatusDuration
|
||||
add r6, r0, #1
|
||||
_02314850:
|
||||
mov r0, #0
|
||||
mov r1, r8
|
||||
mov r2, r0
|
||||
ldr r5, [r8, #0xb4]
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl CalcSpeedStage
|
||||
mov r4, r0
|
||||
cmp r4, #4
|
||||
bne _0231489C
|
||||
ldrb r0, [sp, #0x20]
|
||||
cmp r0, #0
|
||||
beq _02314920
|
||||
ldr r2, _02314930 ; =0x00000DDB
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314920
|
||||
_0231489C:
|
||||
mov r2, #0
|
||||
b _023148BC
|
||||
_023148A4:
|
||||
add r1, r5, r2
|
||||
ldrb r0, [r1, #0x114 + BOOST_SPEED_OFFSET]
|
||||
cmp r0, #0
|
||||
streqb r6, [r1, #0x114 + BOOST_SPEED_OFFSET]
|
||||
beq _023148C4
|
||||
add r2, r2, #1
|
||||
_023148BC:
|
||||
cmp r2, #5
|
||||
blt _023148A4
|
||||
_023148C4:
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl CalcSpeedStage
|
||||
mov r6, r0
|
||||
cmp r4, r6
|
||||
bne _023148F0
|
||||
ldr r2, _02314934 ; =0x00000DDA
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314920
|
||||
_023148F0:
|
||||
mov r0, r8
|
||||
bl ov29_022E44CC
|
||||
ldr r0, _02314938 ; =ov29_02353318
|
||||
mov r1, r6, lsl #1
|
||||
ldrh r2, [r0, r1]
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, #1
|
||||
strb r0, [r5, #0x101]
|
||||
mov r0, #0
|
||||
strb r0, [r5, #0x152 + BOOST_SPEED_OFFSET]
|
||||
_02314920:
|
||||
mov r0, r8
|
||||
bl UpdateStatusIconFlags
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_0231492C: .word SPEED_BOOST_TURN_RANGE
|
||||
#ifdef JAPAN
|
||||
_02314930: .word 0x00000B1B
|
||||
_02314934: .word 0x00000B1A
|
||||
#else
|
||||
_02314930: .word 0x00000DDB
|
||||
_02314934: .word 0x00000DDA
|
||||
#endif
|
||||
_02314938: .word ov29_02353318
|
||||
arm_func_end BoostSpeed
|
||||
|
||||
arm_func_start BoostSpeedOneStage
|
||||
BoostSpeedOneStage: ; 0x0231493C
|
||||
stmdb sp!, {r3, lr}
|
||||
str r3, [sp]
|
||||
mov r3, r2
|
||||
mov r2, #1
|
||||
bl BoostSpeed
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end BoostSpeedOneStage
|
||||
|
||||
arm_func_start LowerSpeed
|
||||
LowerSpeed: ; 0x02314954
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
mov sb, r1
|
||||
mov sl, r0
|
||||
mov r0, sb
|
||||
mov r8, r2
|
||||
mov r7, r3
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
mov r2, r7
|
||||
bl SafeguardIsActive
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
mov r2, r7
|
||||
bl IsProtectedFromNegativeStatus
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
mov r0, #0
|
||||
mov r1, sb
|
||||
mov r2, r0
|
||||
ldr r4, [sb, #0xb4]
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r0, sb
|
||||
bl CalcSpeedStageWrapper
|
||||
movs fp, r0
|
||||
bne _023149E8
|
||||
cmp r7, #0
|
||||
beq _02314AA0
|
||||
ldr r2, _02314AAC ; =0x00000DDC
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314AA0
|
||||
_023149E8:
|
||||
mov r5, #0
|
||||
b _02314A34
|
||||
_023149F0:
|
||||
mov r1, #0
|
||||
b _02314A28
|
||||
_023149F8:
|
||||
add r6, r4, r1
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r6, #0x115]
|
||||
#else
|
||||
ldrb r0, [r6, #0x119]
|
||||
#endif
|
||||
cmp r0, #0
|
||||
bne _02314A24
|
||||
ldr r1, _02314AB0 ; =ov10_022C488C
|
||||
mov r0, sb
|
||||
mov r2, #1
|
||||
bl CalcStatusDuration
|
||||
add r0, r0, #1
|
||||
#ifdef JAPAN
|
||||
strb r0, [r6, #0x115]
|
||||
#else
|
||||
strb r0, [r6, #0x119]
|
||||
#endif
|
||||
b _02314A30
|
||||
_02314A24:
|
||||
add r1, r1, #1
|
||||
_02314A28:
|
||||
cmp r1, #5
|
||||
blt _023149F8
|
||||
_02314A30:
|
||||
add r5, r5, #1
|
||||
_02314A34:
|
||||
cmp r5, r8
|
||||
blt _023149F0
|
||||
mov r0, sb
|
||||
bl CalcSpeedStageWrapper
|
||||
mov r4, r0
|
||||
cmp fp, r4
|
||||
bne _02314A6C
|
||||
cmp r7, #0
|
||||
beq _02314AA0
|
||||
ldr r2, _02314AB4 ; =0x00000DDA
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314AA0
|
||||
_02314A6C:
|
||||
mov r0, sb
|
||||
bl ov29_022E451C
|
||||
ldr r0, _02314AB8 ; =ov29_02353318
|
||||
mov r1, r4, lsl #1
|
||||
ldrh r2, [r0, r1]
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
cmp r4, #0
|
||||
bne _02314AA0
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl TryActivateQuickFeet
|
||||
_02314AA0:
|
||||
mov r0, sb
|
||||
bl UpdateStatusIconFlags
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02314AAC: .word 0x00000B1C
|
||||
_02314AB0: .word ov10_022C488C
|
||||
_02314AB4: .word 0x00000B1A
|
||||
#else
|
||||
_02314AAC: .word 0x00000DDC
|
||||
_02314AB0: .word ov10_022C488C
|
||||
_02314AB4: .word 0x00000DDA
|
||||
#endif
|
||||
_02314AB8: .word ov29_02353318
|
||||
arm_func_end LowerSpeed
|
||||
|
||||
arm_func_start TrySealMove
|
||||
TrySealMove: ; 0x02314ABC
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
||||
sub sp, sp, #0x14
|
||||
mov r5, #0
|
||||
movs r7, r1
|
||||
mov r8, r0
|
||||
mov r6, r2
|
||||
moveq r0, r5
|
||||
beq _02314C18
|
||||
mov r2, #1
|
||||
bl SafeguardIsActive
|
||||
cmp r0, #0
|
||||
movne r0, r5
|
||||
bne _02314C18
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, #1
|
||||
bl IsProtectedFromNegativeStatus
|
||||
cmp r0, #0
|
||||
movne r0, r5
|
||||
bne _02314C18
|
||||
ldr r0, [r7, #0xb4]
|
||||
mov r4, r5
|
||||
#ifdef JAPAN
|
||||
add ip, r0, #0x120
|
||||
#else
|
||||
add ip, r0, #0x124
|
||||
#endif
|
||||
mov lr, r4
|
||||
mov r2, r5
|
||||
mov r3, #1
|
||||
add r0, sp, #4
|
||||
_02314B28:
|
||||
ldrb r1, [ip, lr, lsl #3]
|
||||
add sb, ip, lr, lsl #3
|
||||
tst r1, #1
|
||||
movne r1, r3
|
||||
moveq r1, r2
|
||||
tst r1, #0xff
|
||||
beq _02314B54
|
||||
ldrh r1, [sb, #2]
|
||||
tst r1, #1
|
||||
streq sb, [r0, r4, lsl #2]
|
||||
addeq r4, r4, #1
|
||||
_02314B54:
|
||||
add lr, lr, #1
|
||||
cmp lr, #4
|
||||
blt _02314B28
|
||||
cmp r6, #0
|
||||
beq _02314B74
|
||||
cmp r4, #0
|
||||
moveq r0, #0
|
||||
beq _02314C18
|
||||
_02314B74:
|
||||
cmp r4, #0
|
||||
beq _02314BE8
|
||||
ldr r3, _02314C20 ; =0x00000DBE
|
||||
mov r5, #8
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, #1
|
||||
str r5, [sp]
|
||||
bl ExclusiveItemEffectIsActiveWithLogging
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
bne _02314C18
|
||||
cmp r6, #0
|
||||
movne r0, #1
|
||||
bne _02314C18
|
||||
mov r0, r4
|
||||
bl DungeonRandInt
|
||||
add r1, sp, #4
|
||||
ldr r2, [r1, r0, lsl #2]
|
||||
mov r0, #0
|
||||
ldrh r1, [r2, #2]
|
||||
orr r1, r1, #1
|
||||
strh r1, [r2, #2]
|
||||
ldrh r1, [r2, #4]
|
||||
bl ov29_0234B084
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r5, #1
|
||||
bl TryActivateQuickFeet
|
||||
_02314BE8:
|
||||
cmp r5, #0
|
||||
beq _02314C04
|
||||
ldr r2, _02314C24 ; =0x00000DE3
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314C14
|
||||
_02314C04:
|
||||
ldr r2, _02314C28 ; =0x00000DE4
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02314C14:
|
||||
mov r0, #1
|
||||
_02314C18:
|
||||
add sp, sp, #0x14
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02314C20: .word 0x00000AFE
|
||||
_02314C24: .word 0x00000B23
|
||||
_02314C28: .word 0x00000B24
|
||||
#else
|
||||
_02314C20: .word 0x00000DBE
|
||||
_02314C24: .word 0x00000DE3
|
||||
_02314C28: .word 0x00000DE4
|
||||
#endif
|
||||
arm_func_end TrySealMove
|
||||
|
||||
arm_func_start BoostOrLowerSpeed
|
||||
BoostOrLowerSpeed: ; 0x02314C2C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r4, r1
|
||||
mov r5, r0
|
||||
mov r0, r4
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, pc}
|
||||
mov r0, #0x32
|
||||
bl DungeonRandOutcome__022EAB20
|
||||
cmp r0, #0
|
||||
mov r2, #1
|
||||
mov r0, r5
|
||||
beq _02314C74
|
||||
mov r1, r4
|
||||
mov r3, r2
|
||||
bl LowerSpeed
|
||||
b _02314C84
|
||||
_02314C74:
|
||||
mov r1, r4
|
||||
mov r3, #0
|
||||
str r2, [sp]
|
||||
bl BoostSpeed
|
||||
_02314C84:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end BoostOrLowerSpeed
|
||||
|
||||
arm_func_start ResetHitChanceStat
|
||||
ResetHitChanceStat: ; 0x02314C8C
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r5, r1
|
||||
mov r6, r0
|
||||
mov r0, r5
|
||||
mov r8, r2
|
||||
mov r4, r3
|
||||
mov r7, #0
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
ldr r0, [r5, #0xb4]
|
||||
add r1, r0, r8, lsl #1
|
||||
ldrsh r0, [r1, #0x2c]
|
||||
cmp r0, #0xa
|
||||
movne r0, #0xa
|
||||
movne r7, #1
|
||||
strneh r0, [r1, #0x2c]
|
||||
cmp r7, #0
|
||||
beq _02314CE4
|
||||
mov r0, r5
|
||||
bl ov29_022E543C
|
||||
b _02314CF4
|
||||
_02314CE4:
|
||||
cmp r4, #0
|
||||
beq _02314CF4
|
||||
mov r0, r5
|
||||
bl ov29_022E543C
|
||||
_02314CF4:
|
||||
mov r0, #0
|
||||
mov r1, r5
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
cmp r7, #0
|
||||
beq _02314D20
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
#ifdef JAPAN
|
||||
mov r2, #0xaa0
|
||||
#else
|
||||
mov r2, #0xd60
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314D30
|
||||
_02314D20:
|
||||
ldr r2, _02314D3C ; =0x00000D61
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02314D30:
|
||||
mov r0, r5
|
||||
bl UpdateStatusIconFlags
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02314D3C: .word 0x00000AA1
|
||||
#else
|
||||
_02314D3C: .word 0x00000D61
|
||||
#endif
|
||||
arm_func_end ResetHitChanceStat
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActiveWithLogging
|
||||
ExclusiveItemEffectIsActiveWithLogging: ; 0x02314D40
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, sp, #8
|
||||
mov r6, r1
|
||||
ldrb r1, [sp, #0x20]
|
||||
mov r7, r0
|
||||
mov r0, r6
|
||||
mov r5, r2
|
||||
mov r4, r3
|
||||
bl ExclusiveItemEffectIsActive__023147EC
|
||||
cmp r0, #0
|
||||
beq _02314DB8
|
||||
cmp r5, #0
|
||||
beq _02314DB0
|
||||
mov r0, #0
|
||||
mov r1, r6
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldrb r1, [sp, #0x20]
|
||||
add r2, sp, #0
|
||||
mov r0, r6
|
||||
bl GetExclusiveItemWithEffectFromBag
|
||||
add r1, sp, #0
|
||||
mov r0, #1
|
||||
bl ov29_02344B44
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02314DB0:
|
||||
mov r0, #1
|
||||
b _02314DBC
|
||||
_02314DB8:
|
||||
mov r0, #0
|
||||
_02314DBC:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActiveWithLogging
|
||||
|
||||
arm_func_start ov29_02314DC4
|
||||
ov29_02314DC4: ; 0x02314DC4
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, sp, #8
|
||||
mov r7, r0
|
||||
mov r0, #0
|
||||
mov r5, r2
|
||||
mov r2, r0
|
||||
mov r6, r1
|
||||
mov r4, r3
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r2, sp, #0
|
||||
mov r0, r6
|
||||
mov r1, r4
|
||||
bl GetExclusiveItemWithEffectFromBag
|
||||
add r1, sp, #0
|
||||
mov r0, #1
|
||||
bl ov29_02344B44
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end ov29_02314DC4
|
||||
|
||||
arm_func_start TryActivateQuickFeet
|
||||
TryActivateQuickFeet: ; 0x02314E1C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r4, r1
|
||||
mov r5, r0
|
||||
mov r0, r4
|
||||
mov r1, #0x6d
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, pc}
|
||||
mov r3, #0
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r2, #1
|
||||
str r3, [sp]
|
||||
bl BoostSpeed
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end TryActivateQuickFeet
|
||||
|
||||
arm_func_start TryInflictTerrifiedStatus
|
||||
TryInflictTerrifiedStatus: ; 0x02314E60
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
ldr r2, _02314EB0 ; =ov10_022C4618
|
||||
mov r4, r1
|
||||
ldr ip, [r4, #0xb4]
|
||||
mov r3, #1
|
||||
mov r5, r0
|
||||
ldrsh r1, [r2]
|
||||
#ifdef JAPAN
|
||||
strb r3, [ip, #0x103]
|
||||
mov r0, r4
|
||||
strb r1, [ip, #0x104]
|
||||
#else
|
||||
strb r3, [ip, #0x104]
|
||||
mov r0, r4
|
||||
strb r1, [ip, #0x105]
|
||||
#endif
|
||||
bl ov29_022E60E4
|
||||
mov r0, #0
|
||||
mov r1, r4
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r2, _02314EB4 ; =0x00000DE5
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02314EB0: .word ov10_022C4618
|
||||
#ifdef JAPAN
|
||||
_02314EB4: .word 0x00000B25
|
||||
#else
|
||||
_02314EB4: .word 0x00000DE5
|
||||
#endif
|
||||
arm_func_end TryInflictTerrifiedStatus
|
||||
|
||||
arm_func_start TryInflictGrudgeStatus
|
||||
TryInflictGrudgeStatus: ; 0x02314EB8
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r7, r1
|
||||
ldr r5, [r7, #0xb4]
|
||||
mov r8, r0
|
||||
mov r4, #0
|
||||
mov r6, r2
|
||||
mov r2, r4
|
||||
mov r0, #1
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldrb r0, [r5, #0xfd]
|
||||
cmp r0, #0
|
||||
beq _02314F04
|
||||
cmp r6, #0
|
||||
beq _02314F2C
|
||||
ldr r2, _02314F34 ; =0x00000ED1
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02314F2C
|
||||
_02314F04:
|
||||
mov r4, #1
|
||||
mov r0, r7
|
||||
strb r4, [r5, #0xfd]
|
||||
bl UpdateStatusIconFlags
|
||||
cmp r6, #0
|
||||
beq _02314F2C
|
||||
#ifdef JAPAN
|
||||
ldr r2, _0231640C ; =0x00000C12
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
#else
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, #0xed0
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02314F2C:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02314F34: .word 0x00000C13
|
||||
_0231640C: .word 0x00000C12
|
||||
#else
|
||||
_02314F34: .word 0x00000ED1
|
||||
#endif
|
||||
arm_func_end TryInflictGrudgeStatus
|
||||
|
||||
arm_func_start TryInflictConfusedStatus
|
||||
TryInflictConfusedStatus: ; 0x02314F38
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r6, r1
|
||||
mov r7, r0
|
||||
mov r0, r6
|
||||
mov r5, r2
|
||||
mov r4, r3
|
||||
bl EntityIsValid__02315118
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl SafeguardIsActive
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl IsProtectedFromNegativeStatus
|
||||
cmp r0, #0
|
||||
mov r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r1, r6
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r0, r6
|
||||
mov r1, #0x19
|
||||
bl ItemIsActive__0231513C
|
||||
cmp r0, #0
|
||||
beq _02314FD8
|
||||
cmp r5, #0
|
||||
beq _02314FD0
|
||||
ldr r2, _02315100 ; =0x00000DAF
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02314FD0:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_02314FD8:
|
||||
mov ip, #2
|
||||
ldr r3, _02315104 ; =0x00000DBA
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
str ip, [sp]
|
||||
bl ExclusiveItemEffectIsActiveWithLogging
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
cmp r7, r6
|
||||
beq _02315048
|
||||
cmp r7, #0
|
||||
moveq r0, #0
|
||||
beq _02315028
|
||||
ldr r0, [r7]
|
||||
cmp r0, #1
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
_02315028:
|
||||
cmp r0, #0
|
||||
beq _02315048
|
||||
mov r0, r7
|
||||
mov r1, #0x53
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
bne _02315054
|
||||
_02315048:
|
||||
mov r0, r6
|
||||
mov r1, #0x40
|
||||
bl AbilityIsActiveVeneer
|
||||
_02315054:
|
||||
cmp r0, #0
|
||||
beq _0231507C
|
||||
cmp r5, #0
|
||||
beq _02315074
|
||||
ldr r2, _02315108 ; =0x00000DA7
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02315074:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_0231507C:
|
||||
cmp r4, #0
|
||||
movne r0, #1
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r0, r6
|
||||
bl ov29_022E41CC
|
||||
ldr r4, [r6, #0xb4]
|
||||
ldrb r0, [r4, #0xd0]
|
||||
cmp r0, #2
|
||||
beq _023150E0
|
||||
ldr r1, _0231510C ; =ov10_022C4890
|
||||
mov r3, #2
|
||||
mov r0, r6
|
||||
mov r2, #1
|
||||
strb r3, [r4, #0xd0]
|
||||
bl CalcStatusDuration
|
||||
add r3, r0, #1
|
||||
ldr r2, _02315110 ; =0x00000CFE
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
strb r3, [r4, #0xd1]
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl TryActivateQuickFeet
|
||||
b _023150F0
|
||||
_023150E0:
|
||||
ldr r2, _02315114 ; =0x00000CFF
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_023150F0:
|
||||
mov r0, r6
|
||||
bl UpdateStatusIconFlags
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
#define TRY_INFLICT_CONFUSED_STATUS_OFFSET -0x2C0
|
||||
#else
|
||||
#define TRY_INFLICT_CONFUSED_STATUS_OFFSET 0
|
||||
#endif
|
||||
_02315100: .word 0x00000DAF + TRY_INFLICT_CONFUSED_STATUS_OFFSET
|
||||
_02315104: .word 0x00000DBA + TRY_INFLICT_CONFUSED_STATUS_OFFSET
|
||||
_02315108: .word 0x00000DA7 + TRY_INFLICT_CONFUSED_STATUS_OFFSET
|
||||
_0231510C: .word ov10_022C4890
|
||||
_02315110: .word 0x00000CFE + TRY_INFLICT_CONFUSED_STATUS_OFFSET
|
||||
_02315114: .word 0x00000CFF + TRY_INFLICT_CONFUSED_STATUS_OFFSET
|
||||
arm_func_end TryInflictConfusedStatus
|
||||
@@ -767,585 +767,3 @@ _0231979C:
|
||||
.align 2, 0
|
||||
_023197A4: .word ov10_022C4648
|
||||
arm_func_end MirrorMoveIsActive
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActive__023197A8
|
||||
ExclusiveItemEffectIsActive__023197A8: ; 0x023197A8
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, [r0, #0xb4]
|
||||
ldrb r0, [r2, #6]
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
#ifdef JAPAN
|
||||
add r0, r2, #0x224
|
||||
#else
|
||||
add r0, r2, #0x228
|
||||
#endif
|
||||
bl ExclusiveItemEffectFlagTest
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActive__023197A8
|
||||
|
||||
arm_func_start MistIsActive
|
||||
MistIsActive: ; 0x023197CC
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl EntityIsValid__02318E4C
|
||||
cmp r0, #0
|
||||
beq _0231980C
|
||||
ldr r0, [r4, #0xb4]
|
||||
ldrb r0, [r0, #0xd5]
|
||||
cmp r0, #0xe
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r4, pc}
|
||||
mov r0, r4
|
||||
mov r1, #0x26
|
||||
bl ExclusiveItemEffectIsActive__023197A8
|
||||
cmp r0, #0
|
||||
movne r0, #2
|
||||
ldmneia sp!, {r4, pc}
|
||||
_0231980C:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end MistIsActive
|
||||
|
||||
arm_func_start Conversion2IsActive
|
||||
Conversion2IsActive: ; 0x02319814
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl EntityIsValid__02318E4C
|
||||
cmp r0, #0
|
||||
beq _02319854
|
||||
ldr r0, [r4, #0xb4]
|
||||
ldrb r0, [r0, #0xd5]
|
||||
cmp r0, #0xc
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r4, pc}
|
||||
mov r0, r4
|
||||
mov r1, #0x27
|
||||
bl ExclusiveItemEffectIsActive__023197A8
|
||||
cmp r0, #0
|
||||
movne r0, #2
|
||||
ldmneia sp!, {r4, pc}
|
||||
_02319854:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end Conversion2IsActive
|
||||
|
||||
arm_func_start ov29_0231985C
|
||||
ov29_0231985C: ; 0x0231985C
|
||||
mov r2, #0
|
||||
ldr r0, _0231987C ; =CAN_ATTACK_IN_DIRECTION
|
||||
mov r1, r2
|
||||
_02319868:
|
||||
strb r1, [r0, r2]
|
||||
add r2, r2, #1
|
||||
cmp r2, #8
|
||||
blt _02319868
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0231987C: .word CAN_ATTACK_IN_DIRECTION
|
||||
arm_func_end ov29_0231985C
|
||||
|
||||
; https://decomp.me/scratch/jVfou
|
||||
#ifndef NONMATCHING
|
||||
arm_func_start AiConsiderMove
|
||||
AiConsiderMove: ; 0x02319880
|
||||
#ifdef JAPAN
|
||||
#define AI_CONSIDER_MOVE_OFFSET -0xA4
|
||||
#else
|
||||
#define AI_CONSIDER_MOVE_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x2c
|
||||
mov sl, r1
|
||||
str r0, [sp, #8]
|
||||
mov r0, #1
|
||||
mov sb, r2
|
||||
ldr r6, [sl, #0xb4]
|
||||
str r0, [sp, #0x14]
|
||||
mov r5, #0
|
||||
bl ov29_0231985C
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
mov r2, #1
|
||||
bl GetEntityMoveTargetAndRange
|
||||
str r0, [sp, #0x24]
|
||||
mov r0, sl
|
||||
mov r1, #8
|
||||
bl IqSkillIsEnabled
|
||||
mov r4, r0
|
||||
ldr r0, [sp, #8]
|
||||
mov r1, r5
|
||||
strb r1, [r0]
|
||||
ldrb r0, [r6, #0xd0]
|
||||
cmp r0, #5
|
||||
bne _023198F8
|
||||
mov r0, sb
|
||||
bl IsAffectedByTaunt
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
beq _02319F64
|
||||
_023198F8:
|
||||
cmp r4, #0
|
||||
beq _02319918
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl StatusCheckerCheck
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
beq _02319F64
|
||||
_02319918:
|
||||
mov r0, sb
|
||||
mov r1, #0
|
||||
bl GetMoveTargetAndRange
|
||||
ldr r1, _02319F6C ; =0x00000273
|
||||
cmp r0, r1
|
||||
bne _02319958
|
||||
ldrsh r3, [r6, #0x12]
|
||||
ldrsh r2, [r6, #0x16]
|
||||
add r0, r1, #0x174
|
||||
add r2, r3, r2
|
||||
cmp r2, r0
|
||||
movgt r2, r0
|
||||
ldrsh r0, [r6, #0x10]
|
||||
cmp r0, r2
|
||||
moveq r0, #1
|
||||
beq _02319F64
|
||||
_02319958:
|
||||
ldr r0, [sp, #0x24]
|
||||
ands r7, r0, #0xf0
|
||||
cmpne r7, #0x10
|
||||
cmpne r7, #0x20
|
||||
bne _02319A54
|
||||
mov r0, sl
|
||||
mov r1, #1
|
||||
bl IsBlinded
|
||||
cmp r0, #0
|
||||
beq _023199C0
|
||||
ldrb r6, [r6, #0x4c]
|
||||
ldr r4, _02319F70 ; =CAN_ATTACK_IN_DIRECTION
|
||||
ldrb r0, [r4, r6]
|
||||
cmp r0, #0
|
||||
bne _02319E88
|
||||
ldr r1, _02319F74 ; =POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
mov r3, #1
|
||||
ldr r0, _02319F78 ; =POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
mov r2, #0x63
|
||||
strb r3, [r4, r6]
|
||||
strb r6, [r1]
|
||||
str r2, [r0]
|
||||
mov r1, #0
|
||||
str r1, [r0, #0x20]
|
||||
add r5, r5, #1
|
||||
b _02319E88
|
||||
_023199C0:
|
||||
ldr fp, _02319F7C ; =DIRECTIONS_XY
|
||||
mov r8, #0
|
||||
_023199C8:
|
||||
mov r1, r8, lsl #2
|
||||
add r0, fp, r8, lsl #2
|
||||
ldrsh r6, [sl, #4]
|
||||
ldrsh r3, [fp, r1]
|
||||
ldrsh r2, [sl, #6]
|
||||
ldrsh r1, [r0, #2]
|
||||
add r0, r6, r3
|
||||
add r1, r2, r1
|
||||
bl GetTile
|
||||
ldr r6, [r0, #0xc]
|
||||
cmp r6, #0
|
||||
beq _02319A44
|
||||
ldr r0, [r6]
|
||||
cmp r0, #1
|
||||
bne _02319A44
|
||||
cmp r7, #0x10
|
||||
cmpne r7, #0x20
|
||||
beq _02319A24
|
||||
mov r0, sl
|
||||
mov r1, r8
|
||||
bl CanAttackInDirection
|
||||
cmp r0, #0
|
||||
beq _02319A44
|
||||
_02319A24:
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r0, r5
|
||||
mov r2, sl
|
||||
mov r3, r6
|
||||
str r4, [sp, #4]
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
_02319A44:
|
||||
add r8, r8, #1
|
||||
cmp r8, #8
|
||||
blt _023199C8
|
||||
b _02319E88
|
||||
_02319A54:
|
||||
cmp r7, #0x30
|
||||
bne _02319AC8
|
||||
ldr r7, _02319F80 ; =DUNGEON_PTR
|
||||
mov r6, #0
|
||||
_02319A64:
|
||||
ldr r0, [r7]
|
||||
add r0, r0, r6, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
ldr r8, [r0, #0xb78 + AI_CONSIDER_MOVE_OFFSET]
|
||||
mov r0, r8
|
||||
bl EntityIsValid__02319F8C
|
||||
cmp r0, #0
|
||||
beq _02319AB8
|
||||
mov r0, sl
|
||||
mov r1, r8
|
||||
bl CanSeeTarget
|
||||
cmp r0, #0
|
||||
beq _02319AB8
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r0, r5
|
||||
mov r2, sl
|
||||
mov r3, r8
|
||||
str r4, [sp, #4]
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
_02319AB8:
|
||||
add r6, r6, #1
|
||||
cmp r6, #0x14
|
||||
blt _02319A64
|
||||
b _02319E88
|
||||
_02319AC8:
|
||||
cmp r7, #0x40
|
||||
bne _02319BB0
|
||||
mov r8, #0
|
||||
_02319AD4:
|
||||
ldr r0, _02319F7C ; =DIRECTIONS_XY
|
||||
mov r2, r8, lsl #2
|
||||
add r0, r0, r8, lsl #2
|
||||
ldrsh r6, [r0, #2]
|
||||
ldr r0, _02319F7C ; =DIRECTIONS_XY
|
||||
ldrsh r1, [sl, #6]
|
||||
ldrsh r7, [r0, r2]
|
||||
ldrsh r0, [sl, #4]
|
||||
add r1, r1, r6
|
||||
add r0, r0, r7
|
||||
bl GetTile
|
||||
mov fp, r0
|
||||
mov r0, sl
|
||||
mov r1, r8
|
||||
bl CanAttackInDirection
|
||||
cmp r0, #0
|
||||
beq _02319BA0
|
||||
ldr r3, [fp, #0xc]
|
||||
cmp r3, #0
|
||||
beq _02319B58
|
||||
ldr r0, [r3]
|
||||
cmp r0, #1
|
||||
bne _02319B58
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r0, r5
|
||||
mov r2, sl
|
||||
str r4, [sp, #4]
|
||||
mov fp, r5
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
cmp fp, r5
|
||||
bne _02319BA0
|
||||
_02319B58:
|
||||
ldrsh r0, [sl, #4]
|
||||
ldrsh r1, [sl, #6]
|
||||
add r0, r0, r7, lsl #1
|
||||
add r1, r1, r6, lsl #1
|
||||
bl GetTile
|
||||
ldr r3, [r0, #0xc]
|
||||
cmp r3, #0
|
||||
beq _02319BA0
|
||||
ldr r0, [r3]
|
||||
cmp r0, #1
|
||||
bne _02319BA0
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r0, r5
|
||||
mov r2, sl
|
||||
str r4, [sp, #4]
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
_02319BA0:
|
||||
add r8, r8, #1
|
||||
cmp r8, #8
|
||||
blt _02319AD4
|
||||
b _02319E88
|
||||
_02319BB0:
|
||||
cmp r7, #0x50
|
||||
cmpne r7, #0x80
|
||||
cmpne r7, #0x90
|
||||
bne _02319E00
|
||||
cmp r7, #0x50
|
||||
moveq r0, #0xa
|
||||
streq r0, [sp, #0xc]
|
||||
movne r0, #1
|
||||
strne r0, [sp, #0xc]
|
||||
cmp r7, #0x90
|
||||
moveq r0, #2
|
||||
streq r0, [sp, #0xc]
|
||||
mov r0, #0
|
||||
str r0, [sp, #0x20]
|
||||
mvn r0, #0
|
||||
str r0, [sp, #0x28]
|
||||
_02319BF0:
|
||||
ldr r0, _02319F80 ; =DUNGEON_PTR
|
||||
ldr r1, [r0]
|
||||
ldr r0, [sp, #0x20]
|
||||
add r0, r1, r0, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
ldr r0, [r0, #0xb78 + AI_CONSIDER_MOVE_OFFSET]
|
||||
str r0, [sp, #0x18]
|
||||
bl EntityIsValid__02319F8C
|
||||
cmp r0, #0
|
||||
ldrne r0, [sp, #0x18]
|
||||
cmpne sl, r0
|
||||
beq _02319DE8
|
||||
ldr r1, [sp, #0x18]
|
||||
add r0, sl, #4
|
||||
add r1, r1, #4
|
||||
bl GetDirectionTowardsPosition
|
||||
ldr r1, _02319F70 ; =CAN_ATTACK_IN_DIRECTION
|
||||
str r0, [sp, #0x1c]
|
||||
ldrb r0, [r1, r0]
|
||||
cmp r0, #0
|
||||
bne _02319DE8
|
||||
ldr r1, [sp, #0x18]
|
||||
mov r0, sl
|
||||
bl CanSeeTarget
|
||||
cmp r0, #0
|
||||
beq _02319DE8
|
||||
ldr r0, [sp, #0x18]
|
||||
ldrsh r6, [sl, #4]
|
||||
ldrsh fp, [r0, #4]
|
||||
sub r0, r6, fp
|
||||
bl abs
|
||||
str r0, [sp, #0x10]
|
||||
ldr r0, [sp, #0x18]
|
||||
ldrsh r8, [sl, #6]
|
||||
ldrsh r7, [r0, #6]
|
||||
sub r0, r8, r7
|
||||
bl abs
|
||||
ldr r1, [sp, #0x10]
|
||||
cmp r1, r0
|
||||
movgt r2, r1
|
||||
movle r2, r0
|
||||
cmp r2, #0xa
|
||||
movgt r0, #0
|
||||
bgt _02319D50
|
||||
ldr r1, [sp, #0xc]
|
||||
cmp r2, r1
|
||||
movgt r0, #0
|
||||
bgt _02319D50
|
||||
ldr r1, [sp, #0x10]
|
||||
cmp r1, r0
|
||||
ldr r0, [sp, #0x28]
|
||||
bne _02319CF8
|
||||
cmp r6, fp
|
||||
cmplt r8, r7
|
||||
movlt r0, #1
|
||||
blt _02319D44
|
||||
cmp r6, fp
|
||||
bge _02319CE4
|
||||
cmp r8, r7
|
||||
movgt r0, #3
|
||||
bgt _02319D44
|
||||
_02319CE4:
|
||||
cmp r6, fp
|
||||
cmpgt r8, r7
|
||||
movgt r0, #5
|
||||
movle r0, #7
|
||||
b _02319D44
|
||||
_02319CF8:
|
||||
cmp r6, fp
|
||||
bne _02319D0C
|
||||
cmp r8, r7
|
||||
movlt r0, #0
|
||||
blt _02319D44
|
||||
_02319D0C:
|
||||
cmp r6, fp
|
||||
bge _02319D20
|
||||
cmp r8, r7
|
||||
moveq r0, #2
|
||||
beq _02319D44
|
||||
_02319D20:
|
||||
cmp r6, fp
|
||||
bne _02319D34
|
||||
cmp r8, r7
|
||||
movgt r0, #4
|
||||
bgt _02319D44
|
||||
_02319D34:
|
||||
cmp r6, fp
|
||||
ble _02319D44
|
||||
cmp r8, r7
|
||||
moveq r0, #6
|
||||
_02319D44:
|
||||
cmp r0, #0
|
||||
movge r0, #1
|
||||
movlt r0, #0
|
||||
_02319D50:
|
||||
cmp r0, #0
|
||||
beq _02319DE8
|
||||
str r4, [sp]
|
||||
ldr r0, [sp, #0x24]
|
||||
ldr r2, [sp, #0x18]
|
||||
mov r1, sl
|
||||
mov r3, sb
|
||||
bl IsAiTargetEligible
|
||||
cmp r0, #0
|
||||
beq _02319DE8
|
||||
ldr r1, [sp, #0x18]
|
||||
ldr r2, [sp, #0x1c]
|
||||
ldr r3, [sp, #0xc]
|
||||
mov r0, sl
|
||||
bl IsTargetInRange
|
||||
cmp r0, #0
|
||||
beq _02319DE8
|
||||
ldr r1, _02319F70 ; =CAN_ATTACK_IN_DIRECTION
|
||||
ldr r0, [sp, #0x1c]
|
||||
mov r2, #1
|
||||
strb r2, [r1, r0]
|
||||
mov r1, r0
|
||||
ldr r0, _02319F74 ; =POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
strb r1, [r0, r5]
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl GetMoveTypeForMonster
|
||||
mov r3, r0
|
||||
ldr r1, [sp, #0x24]
|
||||
ldr r2, [sp, #0x18]
|
||||
mov r0, sl
|
||||
bl WeightMove
|
||||
ldr r1, _02319F84 ; =POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
str r0, [r1, r5, lsl #2]
|
||||
ldr r1, [sp, #0x18]
|
||||
ldr r0, _02319F88 ; =POTENTIAL_TARGETS
|
||||
str r1, [r0, r5, lsl #2]
|
||||
add r5, r5, #1
|
||||
_02319DE8:
|
||||
ldr r0, [sp, #0x20]
|
||||
add r0, r0, #1
|
||||
str r0, [sp, #0x20]
|
||||
cmp r0, #0x14
|
||||
blt _02319BF0
|
||||
b _02319E88
|
||||
_02319E00:
|
||||
cmp r7, #0x60
|
||||
bne _02319E60
|
||||
ldr r7, _02319F80 ; =DUNGEON_PTR
|
||||
mov r6, #0
|
||||
_02319E10:
|
||||
ldr r0, [r7]
|
||||
add r0, r0, r6, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
ldr r8, [r0, #0xb78 + AI_CONSIDER_MOVE_OFFSET]
|
||||
mov r0, r8
|
||||
bl EntityIsValid__02319F8C
|
||||
cmp r0, #0
|
||||
beq _02319E50
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r0, r5
|
||||
mov r2, sl
|
||||
mov r3, r8
|
||||
str r4, [sp, #4]
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
_02319E50:
|
||||
add r6, r6, #1
|
||||
cmp r6, #0x14
|
||||
blt _02319E10
|
||||
b _02319E88
|
||||
_02319E60:
|
||||
cmp r7, #0x70
|
||||
bne _02319E88
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r2, sl
|
||||
mov r3, sl
|
||||
mov r0, #0
|
||||
str r4, [sp, #4]
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
_02319E88:
|
||||
cmp r5, #0
|
||||
ldreq r0, [sp, #8]
|
||||
moveq r1, #0
|
||||
streqb r1, [r0]
|
||||
beq _02319F60
|
||||
mov r0, #0
|
||||
str r0, [sp, #0x14]
|
||||
mov r4, r0
|
||||
ldr r3, _02319F84 ; =POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
b _02319EC4
|
||||
_02319EB0:
|
||||
ldr r2, [r3, r4, lsl #2]
|
||||
ldr r1, [sp, #0x14]
|
||||
add r4, r4, #1
|
||||
cmp r1, r2
|
||||
strlt r2, [sp, #0x14]
|
||||
_02319EC4:
|
||||
cmp r4, r5
|
||||
blt _02319EB0
|
||||
mov r6, #0
|
||||
mov r2, r6
|
||||
ldr r4, _02319F84 ; =POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
b _02319EF0
|
||||
_02319EDC:
|
||||
ldr r3, [r4, r6, lsl #2]
|
||||
ldr r1, [sp, #0x14]
|
||||
cmp r1, r3
|
||||
strne r2, [r4, r6, lsl #2]
|
||||
add r6, r6, #1
|
||||
_02319EF0:
|
||||
cmp r6, r5
|
||||
blt _02319EDC
|
||||
mov r3, #0
|
||||
ldr r2, _02319F84 ; =POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
b _02319F10
|
||||
_02319F04:
|
||||
ldr r1, [r2, r3, lsl #2]
|
||||
add r3, r3, #1
|
||||
add r0, r0, r1
|
||||
_02319F10:
|
||||
cmp r3, r5
|
||||
blt _02319F04
|
||||
bl DungeonRandInt
|
||||
mov r3, #0
|
||||
ldr r2, _02319F84 ; =POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
b _02319F38
|
||||
_02319F28:
|
||||
ldr r1, [r2, r3, lsl #2]
|
||||
subs r0, r0, r1
|
||||
bmi _02319F40
|
||||
add r3, r3, #1
|
||||
_02319F38:
|
||||
cmp r3, r5
|
||||
blt _02319F28
|
||||
_02319F40:
|
||||
ldr r1, _02319F74 ; =POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
ldr r0, [sp, #8]
|
||||
mov r2, #1
|
||||
strb r2, [r0]
|
||||
ldrb r2, [r1, r3]
|
||||
mov r1, #8
|
||||
strb r2, [r0, #1]
|
||||
str r1, [r0, #4]
|
||||
_02319F60:
|
||||
ldr r0, [sp, #0x14]
|
||||
_02319F64:
|
||||
add sp, sp, #0x2c
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_02319F6C: .word 0x00000273
|
||||
_02319F70: .word CAN_ATTACK_IN_DIRECTION
|
||||
_02319F74: .word POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
_02319F78: .word POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
_02319F7C: .word DIRECTIONS_XY
|
||||
_02319F80: .word DUNGEON_PTR
|
||||
_02319F84: .word POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
_02319F88: .word POTENTIAL_TARGETS
|
||||
arm_func_end AiConsiderMove
|
||||
#endif
|
||||
|
||||
50
asm/overlay_29_023197CC.s
Normal file
50
asm/overlay_29_023197CC.s
Normal file
@@ -0,0 +1,50 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_023197CC.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start MistIsActive
|
||||
MistIsActive: ; 0x023197CC
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl EntityIsValid__02318E4C
|
||||
cmp r0, #0
|
||||
beq _0231980C
|
||||
ldr r0, [r4, #0xb4]
|
||||
ldrb r0, [r0, #0xd5]
|
||||
cmp r0, #0xe
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r4, pc}
|
||||
mov r0, r4
|
||||
mov r1, #0x26
|
||||
bl ExclusiveItemEffectIsActive__023197A8
|
||||
cmp r0, #0
|
||||
movne r0, #2
|
||||
ldmneia sp!, {r4, pc}
|
||||
_0231980C:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end MistIsActive
|
||||
|
||||
arm_func_start Conversion2IsActive
|
||||
Conversion2IsActive: ; 0x02319814
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl EntityIsValid__02318E4C
|
||||
cmp r0, #0
|
||||
beq _02319854
|
||||
ldr r0, [r4, #0xb4]
|
||||
ldrb r0, [r0, #0xd5]
|
||||
cmp r0, #0xc
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r4, pc}
|
||||
mov r0, r4
|
||||
mov r1, #0x27
|
||||
bl ExclusiveItemEffectIsActive__023197A8
|
||||
cmp r0, #0
|
||||
movne r0, #2
|
||||
ldmneia sp!, {r4, pc}
|
||||
_02319854:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end Conversion2IsActive
|
||||
508
asm/overlay_29_02319880.s
Normal file
508
asm/overlay_29_02319880.s
Normal file
@@ -0,0 +1,508 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02319880.inc"
|
||||
|
||||
.text
|
||||
|
||||
; https://decomp.me/scratch/jVfou
|
||||
#ifndef NONMATCHING
|
||||
arm_func_start AiConsiderMove
|
||||
AiConsiderMove: ; 0x02319880
|
||||
#ifdef JAPAN
|
||||
#define AI_CONSIDER_MOVE_OFFSET -0xA4
|
||||
#else
|
||||
#define AI_CONSIDER_MOVE_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x2c
|
||||
mov sl, r1
|
||||
str r0, [sp, #8]
|
||||
mov r0, #1
|
||||
mov sb, r2
|
||||
ldr r6, [sl, #0xb4]
|
||||
str r0, [sp, #0x14]
|
||||
mov r5, #0
|
||||
bl ResetAiCanAttackInDirection
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
mov r2, #1
|
||||
bl GetEntityMoveTargetAndRange
|
||||
str r0, [sp, #0x24]
|
||||
mov r0, sl
|
||||
mov r1, #8
|
||||
bl IqSkillIsEnabled
|
||||
mov r4, r0
|
||||
ldr r0, [sp, #8]
|
||||
mov r1, r5
|
||||
strb r1, [r0]
|
||||
ldrb r0, [r6, #0xd0]
|
||||
cmp r0, #5
|
||||
bne _023198F8
|
||||
mov r0, sb
|
||||
bl IsAffectedByTaunt
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
beq _02319F64
|
||||
_023198F8:
|
||||
cmp r4, #0
|
||||
beq _02319918
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl StatusCheckerCheck
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
beq _02319F64
|
||||
_02319918:
|
||||
mov r0, sb
|
||||
mov r1, #0
|
||||
bl GetMoveTargetAndRange
|
||||
ldr r1, _02319F6C ; =0x00000273
|
||||
cmp r0, r1
|
||||
bne _02319958
|
||||
ldrsh r3, [r6, #0x12]
|
||||
ldrsh r2, [r6, #0x16]
|
||||
add r0, r1, #0x174
|
||||
add r2, r3, r2
|
||||
cmp r2, r0
|
||||
movgt r2, r0
|
||||
ldrsh r0, [r6, #0x10]
|
||||
cmp r0, r2
|
||||
moveq r0, #1
|
||||
beq _02319F64
|
||||
_02319958:
|
||||
ldr r0, [sp, #0x24]
|
||||
ands r7, r0, #0xf0
|
||||
cmpne r7, #0x10
|
||||
cmpne r7, #0x20
|
||||
bne _02319A54
|
||||
mov r0, sl
|
||||
mov r1, #1
|
||||
bl IsBlinded
|
||||
cmp r0, #0
|
||||
beq _023199C0
|
||||
ldrb r6, [r6, #0x4c]
|
||||
ldr r4, _02319F70 ; =AI_CAN_ATTACK_IN_DIRECTION
|
||||
ldrb r0, [r4, r6]
|
||||
cmp r0, #0
|
||||
bne _02319E88
|
||||
ldr r1, _02319F74 ; =AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
mov r3, #1
|
||||
ldr r0, _02319F78 ; =AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
mov r2, #0x63
|
||||
strb r3, [r4, r6]
|
||||
strb r6, [r1]
|
||||
str r2, [r0]
|
||||
mov r1, #0
|
||||
str r1, [r0, #0x20]
|
||||
add r5, r5, #1
|
||||
b _02319E88
|
||||
_023199C0:
|
||||
ldr fp, _02319F7C ; =DIRECTIONS_XY
|
||||
mov r8, #0
|
||||
_023199C8:
|
||||
mov r1, r8, lsl #2
|
||||
add r0, fp, r8, lsl #2
|
||||
ldrsh r6, [sl, #4]
|
||||
ldrsh r3, [fp, r1]
|
||||
ldrsh r2, [sl, #6]
|
||||
ldrsh r1, [r0, #2]
|
||||
add r0, r6, r3
|
||||
add r1, r2, r1
|
||||
bl GetTile
|
||||
ldr r6, [r0, #0xc]
|
||||
cmp r6, #0
|
||||
beq _02319A44
|
||||
ldr r0, [r6]
|
||||
cmp r0, #1
|
||||
bne _02319A44
|
||||
cmp r7, #0x10
|
||||
cmpne r7, #0x20
|
||||
beq _02319A24
|
||||
mov r0, sl
|
||||
mov r1, r8
|
||||
bl CanAttackInDirection
|
||||
cmp r0, #0
|
||||
beq _02319A44
|
||||
_02319A24:
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r0, r5
|
||||
mov r2, sl
|
||||
mov r3, r6
|
||||
str r4, [sp, #4]
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
_02319A44:
|
||||
add r8, r8, #1
|
||||
cmp r8, #8
|
||||
blt _023199C8
|
||||
b _02319E88
|
||||
_02319A54:
|
||||
cmp r7, #0x30
|
||||
bne _02319AC8
|
||||
ldr r7, _02319F80 ; =DUNGEON_PTR
|
||||
mov r6, #0
|
||||
_02319A64:
|
||||
ldr r0, [r7]
|
||||
add r0, r0, r6, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
ldr r8, [r0, #0xb78 + AI_CONSIDER_MOVE_OFFSET]
|
||||
mov r0, r8
|
||||
bl EntityIsValid__02319F8C
|
||||
cmp r0, #0
|
||||
beq _02319AB8
|
||||
mov r0, sl
|
||||
mov r1, r8
|
||||
bl CanSeeTarget
|
||||
cmp r0, #0
|
||||
beq _02319AB8
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r0, r5
|
||||
mov r2, sl
|
||||
mov r3, r8
|
||||
str r4, [sp, #4]
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
_02319AB8:
|
||||
add r6, r6, #1
|
||||
cmp r6, #0x14
|
||||
blt _02319A64
|
||||
b _02319E88
|
||||
_02319AC8:
|
||||
cmp r7, #0x40
|
||||
bne _02319BB0
|
||||
mov r8, #0
|
||||
_02319AD4:
|
||||
ldr r0, _02319F7C ; =DIRECTIONS_XY
|
||||
mov r2, r8, lsl #2
|
||||
add r0, r0, r8, lsl #2
|
||||
ldrsh r6, [r0, #2]
|
||||
ldr r0, _02319F7C ; =DIRECTIONS_XY
|
||||
ldrsh r1, [sl, #6]
|
||||
ldrsh r7, [r0, r2]
|
||||
ldrsh r0, [sl, #4]
|
||||
add r1, r1, r6
|
||||
add r0, r0, r7
|
||||
bl GetTile
|
||||
mov fp, r0
|
||||
mov r0, sl
|
||||
mov r1, r8
|
||||
bl CanAttackInDirection
|
||||
cmp r0, #0
|
||||
beq _02319BA0
|
||||
ldr r3, [fp, #0xc]
|
||||
cmp r3, #0
|
||||
beq _02319B58
|
||||
ldr r0, [r3]
|
||||
cmp r0, #1
|
||||
bne _02319B58
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r0, r5
|
||||
mov r2, sl
|
||||
str r4, [sp, #4]
|
||||
mov fp, r5
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
cmp fp, r5
|
||||
bne _02319BA0
|
||||
_02319B58:
|
||||
ldrsh r0, [sl, #4]
|
||||
ldrsh r1, [sl, #6]
|
||||
add r0, r0, r7, lsl #1
|
||||
add r1, r1, r6, lsl #1
|
||||
bl GetTile
|
||||
ldr r3, [r0, #0xc]
|
||||
cmp r3, #0
|
||||
beq _02319BA0
|
||||
ldr r0, [r3]
|
||||
cmp r0, #1
|
||||
bne _02319BA0
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r0, r5
|
||||
mov r2, sl
|
||||
str r4, [sp, #4]
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
_02319BA0:
|
||||
add r8, r8, #1
|
||||
cmp r8, #8
|
||||
blt _02319AD4
|
||||
b _02319E88
|
||||
_02319BB0:
|
||||
cmp r7, #0x50
|
||||
cmpne r7, #0x80
|
||||
cmpne r7, #0x90
|
||||
bne _02319E00
|
||||
cmp r7, #0x50
|
||||
moveq r0, #0xa
|
||||
streq r0, [sp, #0xc]
|
||||
movne r0, #1
|
||||
strne r0, [sp, #0xc]
|
||||
cmp r7, #0x90
|
||||
moveq r0, #2
|
||||
streq r0, [sp, #0xc]
|
||||
mov r0, #0
|
||||
str r0, [sp, #0x20]
|
||||
mvn r0, #0
|
||||
str r0, [sp, #0x28]
|
||||
_02319BF0:
|
||||
ldr r0, _02319F80 ; =DUNGEON_PTR
|
||||
ldr r1, [r0]
|
||||
ldr r0, [sp, #0x20]
|
||||
add r0, r1, r0, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
ldr r0, [r0, #0xb78 + AI_CONSIDER_MOVE_OFFSET]
|
||||
str r0, [sp, #0x18]
|
||||
bl EntityIsValid__02319F8C
|
||||
cmp r0, #0
|
||||
ldrne r0, [sp, #0x18]
|
||||
cmpne sl, r0
|
||||
beq _02319DE8
|
||||
ldr r1, [sp, #0x18]
|
||||
add r0, sl, #4
|
||||
add r1, r1, #4
|
||||
bl GetDirectionTowardsPosition
|
||||
ldr r1, _02319F70 ; =AI_CAN_ATTACK_IN_DIRECTION
|
||||
str r0, [sp, #0x1c]
|
||||
ldrb r0, [r1, r0]
|
||||
cmp r0, #0
|
||||
bne _02319DE8
|
||||
ldr r1, [sp, #0x18]
|
||||
mov r0, sl
|
||||
bl CanSeeTarget
|
||||
cmp r0, #0
|
||||
beq _02319DE8
|
||||
ldr r0, [sp, #0x18]
|
||||
ldrsh r6, [sl, #4]
|
||||
ldrsh fp, [r0, #4]
|
||||
sub r0, r6, fp
|
||||
bl abs
|
||||
str r0, [sp, #0x10]
|
||||
ldr r0, [sp, #0x18]
|
||||
ldrsh r8, [sl, #6]
|
||||
ldrsh r7, [r0, #6]
|
||||
sub r0, r8, r7
|
||||
bl abs
|
||||
ldr r1, [sp, #0x10]
|
||||
cmp r1, r0
|
||||
movgt r2, r1
|
||||
movle r2, r0
|
||||
cmp r2, #0xa
|
||||
movgt r0, #0
|
||||
bgt _02319D50
|
||||
ldr r1, [sp, #0xc]
|
||||
cmp r2, r1
|
||||
movgt r0, #0
|
||||
bgt _02319D50
|
||||
ldr r1, [sp, #0x10]
|
||||
cmp r1, r0
|
||||
ldr r0, [sp, #0x28]
|
||||
bne _02319CF8
|
||||
cmp r6, fp
|
||||
cmplt r8, r7
|
||||
movlt r0, #1
|
||||
blt _02319D44
|
||||
cmp r6, fp
|
||||
bge _02319CE4
|
||||
cmp r8, r7
|
||||
movgt r0, #3
|
||||
bgt _02319D44
|
||||
_02319CE4:
|
||||
cmp r6, fp
|
||||
cmpgt r8, r7
|
||||
movgt r0, #5
|
||||
movle r0, #7
|
||||
b _02319D44
|
||||
_02319CF8:
|
||||
cmp r6, fp
|
||||
bne _02319D0C
|
||||
cmp r8, r7
|
||||
movlt r0, #0
|
||||
blt _02319D44
|
||||
_02319D0C:
|
||||
cmp r6, fp
|
||||
bge _02319D20
|
||||
cmp r8, r7
|
||||
moveq r0, #2
|
||||
beq _02319D44
|
||||
_02319D20:
|
||||
cmp r6, fp
|
||||
bne _02319D34
|
||||
cmp r8, r7
|
||||
movgt r0, #4
|
||||
bgt _02319D44
|
||||
_02319D34:
|
||||
cmp r6, fp
|
||||
ble _02319D44
|
||||
cmp r8, r7
|
||||
moveq r0, #6
|
||||
_02319D44:
|
||||
cmp r0, #0
|
||||
movge r0, #1
|
||||
movlt r0, #0
|
||||
_02319D50:
|
||||
cmp r0, #0
|
||||
beq _02319DE8
|
||||
str r4, [sp]
|
||||
ldr r0, [sp, #0x24]
|
||||
ldr r2, [sp, #0x18]
|
||||
mov r1, sl
|
||||
mov r3, sb
|
||||
bl IsAiTargetEligible
|
||||
cmp r0, #0
|
||||
beq _02319DE8
|
||||
ldr r1, [sp, #0x18]
|
||||
ldr r2, [sp, #0x1c]
|
||||
ldr r3, [sp, #0xc]
|
||||
mov r0, sl
|
||||
bl IsTargetInRange
|
||||
cmp r0, #0
|
||||
beq _02319DE8
|
||||
ldr r1, _02319F70 ; =AI_CAN_ATTACK_IN_DIRECTION
|
||||
ldr r0, [sp, #0x1c]
|
||||
mov r2, #1
|
||||
strb r2, [r1, r0]
|
||||
mov r1, r0
|
||||
ldr r0, _02319F74 ; =AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
strb r1, [r0, r5]
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl GetMoveTypeForMonster
|
||||
mov r3, r0
|
||||
ldr r1, [sp, #0x24]
|
||||
ldr r2, [sp, #0x18]
|
||||
mov r0, sl
|
||||
bl WeightMoveWithIqSkills
|
||||
ldr r1, _02319F84 ; =AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
str r0, [r1, r5, lsl #2]
|
||||
ldr r1, [sp, #0x18]
|
||||
ldr r0, _02319F88 ; =AI_POTENTIAL_ATTACK_TARGETS
|
||||
str r1, [r0, r5, lsl #2]
|
||||
add r5, r5, #1
|
||||
_02319DE8:
|
||||
ldr r0, [sp, #0x20]
|
||||
add r0, r0, #1
|
||||
str r0, [sp, #0x20]
|
||||
cmp r0, #0x14
|
||||
blt _02319BF0
|
||||
b _02319E88
|
||||
_02319E00:
|
||||
cmp r7, #0x60
|
||||
bne _02319E60
|
||||
ldr r7, _02319F80 ; =DUNGEON_PTR
|
||||
mov r6, #0
|
||||
_02319E10:
|
||||
ldr r0, [r7]
|
||||
add r0, r0, r6, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
ldr r8, [r0, #0xb78 + AI_CONSIDER_MOVE_OFFSET]
|
||||
mov r0, r8
|
||||
bl EntityIsValid__02319F8C
|
||||
cmp r0, #0
|
||||
beq _02319E50
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r0, r5
|
||||
mov r2, sl
|
||||
mov r3, r8
|
||||
str r4, [sp, #4]
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
_02319E50:
|
||||
add r6, r6, #1
|
||||
cmp r6, #0x14
|
||||
blt _02319E10
|
||||
b _02319E88
|
||||
_02319E60:
|
||||
cmp r7, #0x70
|
||||
bne _02319E88
|
||||
str sb, [sp]
|
||||
ldr r1, [sp, #0x24]
|
||||
mov r2, sl
|
||||
mov r3, sl
|
||||
mov r0, #0
|
||||
str r4, [sp, #4]
|
||||
bl TryAddTargetToAiTargetList
|
||||
mov r5, r0
|
||||
_02319E88:
|
||||
cmp r5, #0
|
||||
ldreq r0, [sp, #8]
|
||||
moveq r1, #0
|
||||
streqb r1, [r0]
|
||||
beq _02319F60
|
||||
mov r0, #0
|
||||
str r0, [sp, #0x14]
|
||||
mov r4, r0
|
||||
ldr r3, _02319F84 ; =AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
b _02319EC4
|
||||
_02319EB0:
|
||||
ldr r2, [r3, r4, lsl #2]
|
||||
ldr r1, [sp, #0x14]
|
||||
add r4, r4, #1
|
||||
cmp r1, r2
|
||||
strlt r2, [sp, #0x14]
|
||||
_02319EC4:
|
||||
cmp r4, r5
|
||||
blt _02319EB0
|
||||
mov r6, #0
|
||||
mov r2, r6
|
||||
ldr r4, _02319F84 ; =AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
b _02319EF0
|
||||
_02319EDC:
|
||||
ldr r3, [r4, r6, lsl #2]
|
||||
ldr r1, [sp, #0x14]
|
||||
cmp r1, r3
|
||||
strne r2, [r4, r6, lsl #2]
|
||||
add r6, r6, #1
|
||||
_02319EF0:
|
||||
cmp r6, r5
|
||||
blt _02319EDC
|
||||
mov r3, #0
|
||||
ldr r2, _02319F84 ; =AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
b _02319F10
|
||||
_02319F04:
|
||||
ldr r1, [r2, r3, lsl #2]
|
||||
add r3, r3, #1
|
||||
add r0, r0, r1
|
||||
_02319F10:
|
||||
cmp r3, r5
|
||||
blt _02319F04
|
||||
bl DungeonRandInt
|
||||
mov r3, #0
|
||||
ldr r2, _02319F84 ; =AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
b _02319F38
|
||||
_02319F28:
|
||||
ldr r1, [r2, r3, lsl #2]
|
||||
subs r0, r0, r1
|
||||
bmi _02319F40
|
||||
add r3, r3, #1
|
||||
_02319F38:
|
||||
cmp r3, r5
|
||||
blt _02319F28
|
||||
_02319F40:
|
||||
ldr r1, _02319F74 ; =AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
ldr r0, [sp, #8]
|
||||
mov r2, #1
|
||||
strb r2, [r0]
|
||||
ldrb r2, [r1, r3]
|
||||
mov r1, #8
|
||||
strb r2, [r0, #1]
|
||||
str r1, [r0, #4]
|
||||
_02319F60:
|
||||
ldr r0, [sp, #0x14]
|
||||
_02319F64:
|
||||
add sp, sp, #0x2c
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_02319F6C: .word 0x00000273
|
||||
_02319F70: .word AI_CAN_ATTACK_IN_DIRECTION
|
||||
_02319F74: .word AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
_02319F78: .word AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
_02319F7C: .word DIRECTIONS_XY
|
||||
_02319F80: .word DUNGEON_PTR
|
||||
_02319F84: .word AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
_02319F88: .word AI_POTENTIAL_ATTACK_TARGETS
|
||||
arm_func_end AiConsiderMove
|
||||
#endif
|
||||
@@ -30,7 +30,7 @@ TryAddTargetToAiTargetList: ; 0x02319FB0
|
||||
bl GetDirectionTowardsPosition
|
||||
mov r5, r0
|
||||
_0231A010:
|
||||
ldr r4, _0231A094 ; =CAN_ATTACK_IN_DIRECTION
|
||||
ldr r4, _0231A094 ; =AI_CAN_ATTACK_IN_DIRECTION
|
||||
ldrb r0, [r4, r5]
|
||||
cmp r0, #0
|
||||
movne r0, sb
|
||||
@@ -44,7 +44,7 @@ _0231A010:
|
||||
bl IsAiTargetEligible
|
||||
cmp r0, #0
|
||||
beq _0231A08C
|
||||
ldr r2, _0231A098 ; =POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
ldr r2, _0231A098 ; =AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
mov r3, #1
|
||||
ldr r1, [sp, #0x20]
|
||||
mov r0, r7
|
||||
@@ -55,9 +55,9 @@ _0231A010:
|
||||
mov r0, r7
|
||||
mov r1, r8
|
||||
mov r2, r6
|
||||
bl WeightMove
|
||||
ldr r2, _0231A09C ; =POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
ldr r1, _0231A0A0 ; =POTENTIAL_TARGETS
|
||||
bl WeightMoveWithIqSkills
|
||||
ldr r2, _0231A09C ; =AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
ldr r1, _0231A0A0 ; =AI_POTENTIAL_ATTACK_TARGETS
|
||||
str r0, [r2, sb, lsl #2]
|
||||
str r6, [r1, sb, lsl #2]
|
||||
add sb, sb, #1
|
||||
@@ -65,10 +65,10 @@ _0231A08C:
|
||||
mov r0, sb
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_0231A094: .word CAN_ATTACK_IN_DIRECTION
|
||||
_0231A098: .word POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
_0231A09C: .word POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
_0231A0A0: .word POTENTIAL_TARGETS
|
||||
_0231A094: .word AI_CAN_ATTACK_IN_DIRECTION
|
||||
_0231A098: .word AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
_0231A09C: .word AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
_0231A0A0: .word AI_POTENTIAL_ATTACK_TARGETS
|
||||
arm_func_end TryAddTargetToAiTargetList
|
||||
|
||||
arm_func_start IsAiTargetEligible
|
||||
@@ -266,8 +266,8 @@ _0231A358:
|
||||
_0231A360: .word 0x000001B7
|
||||
arm_func_end IsAiTargetEligible
|
||||
|
||||
arm_func_start WeightMove
|
||||
WeightMove: ; 0x0231A364
|
||||
arm_func_start WeightMoveWithIqSkills
|
||||
WeightMoveWithIqSkills: ; 0x0231A364
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r7, r2
|
||||
mov sb, r0
|
||||
@@ -340,7 +340,7 @@ _0231A454:
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_0231A45C: .word DUNGEON_PTR
|
||||
arm_func_end WeightMove
|
||||
arm_func_end WeightMoveWithIqSkills
|
||||
|
||||
arm_func_start TargetRegularAttack
|
||||
TargetRegularAttack: ; 0x0231A460
|
||||
@@ -431,7 +431,7 @@ _0231A58C:
|
||||
mov r2, r8
|
||||
mov r0, sl
|
||||
mov r3, r1
|
||||
bl WeightMove
|
||||
bl WeightMoveWithIqSkills
|
||||
add r1, sp, #8
|
||||
cmp fp, #0
|
||||
str r0, [r1, r4, lsl #2]
|
||||
|
||||
@@ -69,122 +69,3 @@ _0231A874: .word 0x00000DF5
|
||||
_0231A878: .word 0x00000DF7
|
||||
#endif
|
||||
arm_func_end ShouldUsePp
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActive__0231A87C
|
||||
ExclusiveItemEffectIsActive__0231A87C: ; 0x0231A87C
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, [r0, #0xb4]
|
||||
ldrb r0, [r2, #6]
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
#ifdef JAPAN
|
||||
add r0, r2, #0x224
|
||||
#else
|
||||
add r0, r2, #0x228
|
||||
#endif
|
||||
bl ExclusiveItemEffectFlagTest
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActive__0231A87C
|
||||
|
||||
arm_func_start ov29_0231A8A0
|
||||
ov29_0231A8A0: ; 0x0231A8A0
|
||||
#ifdef JAPAN
|
||||
#define OV29_0231A8A0_OFFSET -4
|
||||
#else
|
||||
#define OV29_0231A8A0_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
sub sp, sp, #4
|
||||
mov sb, r0
|
||||
mov r7, #0
|
||||
bl IsMonster__0231A9D4
|
||||
cmp r0, #0
|
||||
beq _0231A910
|
||||
ldr r0, _0231A9CC ; =DUNGEON_PTR
|
||||
ldr r4, [sb, #0xb4]
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x4000
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r0, #0x36]
|
||||
#else
|
||||
ldrb r0, [r0, #0xda]
|
||||
#endif
|
||||
bl AreMovesEnabled
|
||||
cmp r0, #0
|
||||
bne _0231A8EC
|
||||
ldr r1, _0231A9D0 ; =0x00000DFD
|
||||
mov r0, sb
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
b _0231A9C4
|
||||
_0231A8EC:
|
||||
mov r1, r7
|
||||
mov r0, sb
|
||||
strb r1, [r4, #0x23f + OV29_0231A8A0_OFFSET]
|
||||
bl ShouldUsePp
|
||||
cmp r0, #0
|
||||
movne r7, #1
|
||||
strneb r7, [r4, #0x23f + OV29_0231A8A0_OFFSET]
|
||||
mov r0, #0
|
||||
strb r0, [r4, #0x23e + OV29_0231A8A0_OFFSET]
|
||||
_0231A910:
|
||||
mov r6, #0
|
||||
mov r4, #1
|
||||
mov r5, r6
|
||||
mov sl, r4
|
||||
b _0231A970
|
||||
_0231A924:
|
||||
ldr r8, [sb, #0xb4]
|
||||
mov r0, sb
|
||||
str r5, [sp]
|
||||
ldrb r1, [r8, #0x4e]
|
||||
mov r2, r4
|
||||
mov r3, r5
|
||||
bl ov29_0232145C
|
||||
mov r0, sb
|
||||
bl EntityIsValid__02319F8C
|
||||
cmp r0, #0
|
||||
beq _0231A984
|
||||
bl IsFloorOver
|
||||
cmp r0, #0
|
||||
ldreqb r0, [r8, #0x23e + OV29_0231A8A0_OFFSET]
|
||||
cmpeq r0, #0
|
||||
ldreqb r0, [r8, #0x163 + OV29_0231A8A0_OFFSET]
|
||||
cmpeq r0, #0
|
||||
bne _0231A984
|
||||
add r6, r6, #1
|
||||
_0231A970:
|
||||
mov r0, sb
|
||||
mov r1, sl
|
||||
bl GetNumberOfAttacks
|
||||
cmp r6, r0
|
||||
blt _0231A924
|
||||
_0231A984:
|
||||
mov r0, sb
|
||||
bl EntityIsValid__02319F8C
|
||||
cmp r0, #0
|
||||
beq _0231A9BC
|
||||
cmp r7, #0
|
||||
moveq r1, #1
|
||||
movne r1, #0
|
||||
ldr r4, [sb, #0xb4]
|
||||
mov r0, sb
|
||||
and r1, r1, #0xff
|
||||
bl UpdateMovePp
|
||||
ldrb r1, [r4, #0x4e]
|
||||
mov r0, sb
|
||||
bl ov29_022FA574
|
||||
_0231A9BC:
|
||||
mov r0, sb
|
||||
bl TryActivateTruant
|
||||
_0231A9C4:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
|
||||
.align 2, 0
|
||||
_0231A9CC: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_0231A9D0: .word 0x00000B3D
|
||||
#else
|
||||
_0231A9D0: .word 0x00000DFD
|
||||
#endif
|
||||
arm_func_end ov29_0231A8A0
|
||||
|
||||
106
asm/overlay_29_0231A8A0.s
Normal file
106
asm/overlay_29_0231A8A0.s
Normal file
@@ -0,0 +1,106 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0231A8A0.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_0231A8A0
|
||||
ov29_0231A8A0: ; 0x0231A8A0
|
||||
#ifdef JAPAN
|
||||
#define OV29_0231A8A0_OFFSET -4
|
||||
#else
|
||||
#define OV29_0231A8A0_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
sub sp, sp, #4
|
||||
mov sb, r0
|
||||
mov r7, #0
|
||||
bl IsMonster__0231A9D4
|
||||
cmp r0, #0
|
||||
beq _0231A910
|
||||
ldr r0, _0231A9CC ; =DUNGEON_PTR
|
||||
ldr r4, [sb, #0xb4]
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x4000
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r0, #0x36]
|
||||
#else
|
||||
ldrb r0, [r0, #0xda]
|
||||
#endif
|
||||
bl AreMovesEnabled
|
||||
cmp r0, #0
|
||||
bne _0231A8EC
|
||||
ldr r1, _0231A9D0 ; =0x00000DFD
|
||||
mov r0, sb
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
b _0231A9C4
|
||||
_0231A8EC:
|
||||
mov r1, r7
|
||||
mov r0, sb
|
||||
strb r1, [r4, #0x23f + OV29_0231A8A0_OFFSET]
|
||||
bl ShouldUsePp
|
||||
cmp r0, #0
|
||||
movne r7, #1
|
||||
strneb r7, [r4, #0x23f + OV29_0231A8A0_OFFSET]
|
||||
mov r0, #0
|
||||
strb r0, [r4, #0x23e + OV29_0231A8A0_OFFSET]
|
||||
_0231A910:
|
||||
mov r6, #0
|
||||
mov r4, #1
|
||||
mov r5, r6
|
||||
mov sl, r4
|
||||
b _0231A970
|
||||
_0231A924:
|
||||
ldr r8, [sb, #0xb4]
|
||||
mov r0, sb
|
||||
str r5, [sp]
|
||||
ldrb r1, [r8, #0x4e]
|
||||
mov r2, r4
|
||||
mov r3, r5
|
||||
bl ov29_0232145C
|
||||
mov r0, sb
|
||||
bl EntityIsValid__02319F8C
|
||||
cmp r0, #0
|
||||
beq _0231A984
|
||||
bl IsFloorOver
|
||||
cmp r0, #0
|
||||
ldreqb r0, [r8, #0x23e + OV29_0231A8A0_OFFSET]
|
||||
cmpeq r0, #0
|
||||
ldreqb r0, [r8, #0x163 + OV29_0231A8A0_OFFSET]
|
||||
cmpeq r0, #0
|
||||
bne _0231A984
|
||||
add r6, r6, #1
|
||||
_0231A970:
|
||||
mov r0, sb
|
||||
mov r1, sl
|
||||
bl GetNumberOfAttacks
|
||||
cmp r6, r0
|
||||
blt _0231A924
|
||||
_0231A984:
|
||||
mov r0, sb
|
||||
bl EntityIsValid__02319F8C
|
||||
cmp r0, #0
|
||||
beq _0231A9BC
|
||||
cmp r7, #0
|
||||
moveq r1, #1
|
||||
movne r1, #0
|
||||
ldr r4, [sb, #0xb4]
|
||||
mov r0, sb
|
||||
and r1, r1, #0xff
|
||||
bl UpdateMovePp
|
||||
ldrb r1, [r4, #0x4e]
|
||||
mov r0, sb
|
||||
bl ov29_022FA574
|
||||
_0231A9BC:
|
||||
mov r0, sb
|
||||
bl TryActivateTruant
|
||||
_0231A9C4:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
|
||||
.align 2, 0
|
||||
_0231A9CC: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_0231A9D0: .word 0x00000B3D
|
||||
#else
|
||||
_0231A9D0: .word 0x00000DFD
|
||||
#endif
|
||||
arm_func_end ov29_0231A8A0
|
||||
@@ -207,422 +207,3 @@ _0231ACA0: .word 0x00000DFB + OV29_0231A9F8_OFFSET
|
||||
_0231ACA4: .word 0x00000DFC + OV29_0231A9F8_OFFSET
|
||||
_0231ACA8: .word 0x00000141
|
||||
arm_func_end ov29_0231A9F8
|
||||
|
||||
arm_func_start GetEntityMoveTargetAndRange
|
||||
GetEntityMoveTargetAndRange: ; 0x0231ACAC
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r5, r1
|
||||
ldrh r1, [r5, #4]
|
||||
mov r4, r2
|
||||
mov r6, r0
|
||||
cmp r1, #0xed
|
||||
cmpeq r4, #0
|
||||
bne _0231ACE0
|
||||
mov r1, #0xe
|
||||
bl MonsterIsType
|
||||
cmp r0, #0
|
||||
moveq r0, #0x73
|
||||
ldmeqia sp!, {r4, r5, r6, pc}
|
||||
_0231ACE0:
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl GetMoveTargetAndRange
|
||||
mov r4, r0
|
||||
mov r0, r5
|
||||
bl IsMoveRangeString19
|
||||
cmp r0, #0
|
||||
beq _0231AD2C
|
||||
mov r0, r6
|
||||
mov r1, #0x55
|
||||
bl ExclusiveItemEffectIsActive__0231A87C
|
||||
cmp r0, #0
|
||||
beq _0231AD2C
|
||||
ldr r0, _0231AD34 ; =0x00000273
|
||||
cmp r4, r0
|
||||
subeq r4, r0, #0x12
|
||||
beq _0231AD2C
|
||||
cmp r4, #0x73
|
||||
moveq r4, #0x61
|
||||
_0231AD2C:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0231AD34: .word 0x00000273
|
||||
arm_func_end GetEntityMoveTargetAndRange
|
||||
|
||||
arm_func_start ov29_0231AD38
|
||||
ov29_0231AD38: ; 0x0231AD38
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r2, #1
|
||||
bl GetEntityMoveTargetAndRange
|
||||
and r4, r0, #0xf
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #0
|
||||
bl GetEntityMoveTargetAndRange
|
||||
cmp r4, #3
|
||||
and r0, r0, #0xf
|
||||
cmpne r4, #1
|
||||
cmpne r0, #4
|
||||
cmpne r0, #3
|
||||
cmpne r0, #1
|
||||
cmpne r0, #6
|
||||
beq _0231ADA0
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #0
|
||||
bl GetEntityMoveTargetAndRange
|
||||
and r0, r0, #0xf0
|
||||
cmp r0, #0x70
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r4, r5, r6, pc}
|
||||
_0231ADA0:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
arm_func_end ov29_0231AD38
|
||||
|
||||
arm_func_start ov29_0231ADA8
|
||||
ov29_0231ADA8: ; 0x0231ADA8
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
sub sp, sp, #8
|
||||
ldr r1, [r0, #0xb4]
|
||||
mov r0, #0
|
||||
mov r5, r0
|
||||
#ifdef JAPAN
|
||||
add r4, r1, #0x120
|
||||
#else
|
||||
add r4, r1, #0x124
|
||||
#endif
|
||||
mov ip, r0
|
||||
mov lr, #1
|
||||
add r2, sp, #0
|
||||
_0231ADCC:
|
||||
ldrb r1, [r4, r5, lsl #3]
|
||||
add r3, r4, r5, lsl #3
|
||||
tst r1, #1
|
||||
movne r1, lr
|
||||
moveq r1, ip
|
||||
tst r1, #0xff
|
||||
beq _0231AE00
|
||||
ldrh r3, [r3, #4]
|
||||
add r1, r0, #1
|
||||
mov r0, r0, lsl #1
|
||||
mov r1, r1, lsl #0x10
|
||||
strh r3, [r2, r0]
|
||||
mov r0, r1, lsr #0x10
|
||||
_0231AE00:
|
||||
add r1, r5, #1
|
||||
mov r1, r1, lsl #0x10
|
||||
mov r5, r1, lsr #0x10
|
||||
cmp r5, #4
|
||||
blo _0231ADCC
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
beq _0231AE34
|
||||
bl DungeonRandInt
|
||||
mov r0, r0, lsl #0x10
|
||||
add r1, sp, #0
|
||||
mov r0, r0, lsr #0xf
|
||||
ldrh r0, [r1, r0]
|
||||
_0231AE34:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end ov29_0231ADA8
|
||||
|
||||
arm_func_start ov29_0231AE3C
|
||||
ov29_0231AE3C: ; 0x0231AE3C
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr ip, [r0, #0xb4]
|
||||
mov r0, #0
|
||||
mov lr, r0
|
||||
mov r2, r0
|
||||
mov r3, #1
|
||||
_0231AE54:
|
||||
add r1, ip, lr, lsl #3
|
||||
#ifdef JAPAN
|
||||
ldrb r1, [r1, #0x120]
|
||||
#else
|
||||
ldrb r1, [r1, #0x124]
|
||||
#endif
|
||||
tst r1, #1
|
||||
movne r1, r3
|
||||
moveq r1, r2
|
||||
tst r1, #0xff
|
||||
add r1, lr, #1
|
||||
addne r0, r0, #1
|
||||
mov r1, r1, lsl #0x10
|
||||
movne r0, r0, lsl #0x10
|
||||
mov lr, r1, lsr #0x10
|
||||
movne r0, r0, lsr #0x10
|
||||
cmp lr, #4
|
||||
blo _0231AE54
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_0231AE3C
|
||||
|
||||
arm_func_start GetEntityNaturalGiftInfo
|
||||
GetEntityNaturalGiftInfo: ; 0x0231AE90
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r4, r0
|
||||
bl IsMonster__0231A9D4
|
||||
cmp r0, #0
|
||||
ldrne r4, [r4, #0xb4]
|
||||
ldrnesh r0, [r4, #0x66]
|
||||
cmpne r0, #0
|
||||
beq _0231AF00
|
||||
mov ip, #0
|
||||
ldr r3, _0231AF08 ; =NATURAL_GIFT_ITEM_TABLE
|
||||
mov lr, ip
|
||||
mov r1, #6
|
||||
_0231AEC0:
|
||||
smulbb r5, lr, r1
|
||||
ldrsh r2, [r3, r5]
|
||||
cmp r2, #0
|
||||
beq _0231AEF0
|
||||
ldrsh r0, [r4, #0x66]
|
||||
cmp r0, r2
|
||||
moveq ip, #1
|
||||
beq _0231AEF0
|
||||
add r0, lr, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov lr, r0, asr #0x10
|
||||
b _0231AEC0
|
||||
_0231AEF0:
|
||||
cmp ip, #0
|
||||
ldrne r0, _0231AF08 ; =NATURAL_GIFT_ITEM_TABLE
|
||||
addne r0, r0, r5
|
||||
ldmneia sp!, {r3, r4, r5, pc}
|
||||
_0231AF00:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0231AF08: .word NATURAL_GIFT_ITEM_TABLE
|
||||
arm_func_end GetEntityNaturalGiftInfo
|
||||
|
||||
arm_func_start GetEntityWeatherBallType
|
||||
GetEntityWeatherBallType: ; 0x0231AF0C
|
||||
stmdb sp!, {r3, lr}
|
||||
bl GetApparentWeather
|
||||
ldr r1, _0231AF20 ; =WEATHER_BALL_TYPE_TABLE
|
||||
ldrb r0, [r1, r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0231AF20: .word WEATHER_BALL_TYPE_TABLE
|
||||
arm_func_end GetEntityWeatherBallType
|
||||
|
||||
arm_func_start ov29_0231AF24
|
||||
ov29_0231AF24: ; 0x0231AF24
|
||||
#ifdef JAPAN
|
||||
#define OV29_0231AF24_OFFSET -4
|
||||
#else
|
||||
#define OV29_0231AF24_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
bl IsMonster__0231A9D4
|
||||
cmp r0, #0
|
||||
beq _0231AFAC
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
bl ov29_022FB9E0
|
||||
mov r1, r0
|
||||
cmp r4, #0
|
||||
beq _0231AF98
|
||||
cmp r1, #0
|
||||
bge _0231AF98
|
||||
ldr r4, [r6, #0xb4]
|
||||
mov r1, #0
|
||||
mov r2, r1
|
||||
add r0, r4, #0x4a
|
||||
bl SetActionUseMoveAi
|
||||
mov r2, #1
|
||||
strb r2, [r4, #0x124 + OV29_0231AF24_OFFSET]
|
||||
add r0, r4, #0x100
|
||||
mov r1, #0
|
||||
strh r1, [r0, #0x26 + OV29_0231AF24_OFFSET]
|
||||
strh r5, [r0, #0x28 + OV29_0231AF24_OFFSET]
|
||||
strb r2, [r4, #0x12a + OV29_0231AF24_OFFSET]
|
||||
strb r1, [r4, #0x12b + OV29_0231AF24_OFFSET]
|
||||
_0231AF98:
|
||||
mov r3, #0
|
||||
mov r0, r6
|
||||
mov r2, #1
|
||||
str r3, [sp]
|
||||
bl ov29_0232145C
|
||||
_0231AFAC:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
arm_func_end ov29_0231AF24
|
||||
|
||||
arm_func_start ov29_0231AFB4
|
||||
ov29_0231AFB4: ; 0x0231AFB4
|
||||
stmdb sp!, {r4, lr}
|
||||
mov ip, #0
|
||||
ldr r1, _0231B004 ; =DUNGEON_PTR
|
||||
mov r2, ip
|
||||
mov r3, ip
|
||||
_0231AFC8:
|
||||
ldr r0, [r1]
|
||||
mov r4, r3
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x1840
|
||||
add r0, r0, #0x18000
|
||||
#else
|
||||
add r0, r0, #0xe4
|
||||
add r0, r0, #0x19800
|
||||
#endif
|
||||
add lr, r0, ip, lsl #4
|
||||
_0231AFDC:
|
||||
str r2, [lr, r4, lsl #3]
|
||||
add r0, lr, r4, lsl #3
|
||||
add r4, r4, #1
|
||||
str r2, [r0, #4]
|
||||
cmp r4, #2
|
||||
blt _0231AFDC
|
||||
add ip, ip, #1
|
||||
cmp ip, #2
|
||||
blt _0231AFC8
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0231B004: .word DUNGEON_PTR
|
||||
arm_func_end ov29_0231AFB4
|
||||
|
||||
arm_func_start ov29_0231B008
|
||||
ov29_0231B008: ; 0x0231B008
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov lr, #0
|
||||
ldr r1, _0231B05C ; =DUNGEON_PTR
|
||||
mov r3, lr
|
||||
mov r2, #2
|
||||
mov ip, lr
|
||||
_0231B020:
|
||||
ldr r0, [r1]
|
||||
mov r5, ip
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x1840
|
||||
add r0, r0, #0x18000
|
||||
#else
|
||||
add r0, r0, #0xe4
|
||||
add r0, r0, #0x19800
|
||||
#endif
|
||||
add r4, r0, lr, lsl #4
|
||||
_0231B034:
|
||||
str r3, [r4, r5, lsl #3]
|
||||
add r0, r4, r5, lsl #3
|
||||
add r5, r5, #1
|
||||
str r2, [r0, #4]
|
||||
cmp r5, #2
|
||||
blt _0231B034
|
||||
add lr, lr, #1
|
||||
cmp lr, #2
|
||||
blt _0231B020
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0231B05C: .word DUNGEON_PTR
|
||||
arm_func_end ov29_0231B008
|
||||
|
||||
arm_func_start ActivateMotorDrive
|
||||
ActivateMotorDrive: ; 0x0231B060
|
||||
stmdb sp!, {r3, r4, lr}
|
||||
sub sp, sp, #4
|
||||
#ifdef JAPAN
|
||||
mov ip, #0x66
|
||||
mov r4, r0
|
||||
rsb r2, ip, #0x9e0
|
||||
#else
|
||||
ldr r2, _0231B0A0 ; =0x00000C3B
|
||||
mov ip, #0x66
|
||||
mov r4, r0
|
||||
#endif
|
||||
mov r1, #0
|
||||
mov r3, #2
|
||||
str ip, [sp]
|
||||
bl LogMessageByIdWithPopupCheckParticipants
|
||||
mov r0, r4
|
||||
mov r1, r4
|
||||
mov r2, #0
|
||||
mov r3, #1
|
||||
bl BoostSpeedOneStage
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, pc}
|
||||
.align 2, 0
|
||||
#ifndef JAPAN
|
||||
_0231B0A0: .word 0x00000C3B
|
||||
#endif
|
||||
arm_func_end ActivateMotorDrive
|
||||
|
||||
arm_func_start TryActivateFrisk
|
||||
TryActivateFrisk: ; 0x0231B0A4
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
sub sp, sp, #8
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl EntityIsValid__0231B194
|
||||
cmp r0, #0
|
||||
beq _0231B184
|
||||
mov r0, r4
|
||||
bl EntityIsValid__0231B194
|
||||
cmp r0, #0
|
||||
beq _0231B184
|
||||
ldr r0, [r5, #0xb4]
|
||||
ldr r6, [r4, #0xb4]
|
||||
ldrb r0, [r0, #6]
|
||||
cmp r0, #0
|
||||
bne _0231B184
|
||||
bl ov29_0232E80C
|
||||
cmp r4, r0
|
||||
ldrneb r0, [r6, #6]
|
||||
cmpne r0, #0
|
||||
beq _0231B184
|
||||
ldrsh r0, [r6, #0x66]
|
||||
cmp r0, #0
|
||||
bne _0231B150
|
||||
ldrsh r0, [r6, #2]
|
||||
add r1, sp, #0
|
||||
bl GetTreasureBoxChances
|
||||
ldrsh r0, [sp, #4]
|
||||
cmp r0, #0
|
||||
ldrlesh r0, [sp, #6]
|
||||
cmple r0, #0
|
||||
ble _0231B184
|
||||
mov r0, r5
|
||||
bl ov29_022E4110
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r2, _0231B18C ; =0x00000C3D
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _0231B184
|
||||
_0231B150:
|
||||
mov r0, r5
|
||||
bl ov29_022E4110
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, r6, #0x62
|
||||
mov r0, #2
|
||||
bl ov29_02344B44
|
||||
ldr r2, _0231B190 ; =0x00000C3C
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0231B184:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_0231B18C: .word 0x0000097C
|
||||
_0231B190: .word 0x0000097B
|
||||
#else
|
||||
_0231B18C: .word 0x00000C3D
|
||||
_0231B190: .word 0x00000C3C
|
||||
#endif
|
||||
arm_func_end TryActivateFrisk
|
||||
|
||||
381
asm/overlay_29_0231AD38.s
Normal file
381
asm/overlay_29_0231AD38.s
Normal file
@@ -0,0 +1,381 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0231AD38.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_0231AD38
|
||||
ov29_0231AD38: ; 0x0231AD38
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r2, #1
|
||||
bl GetEntityMoveTargetAndRange
|
||||
and r4, r0, #0xf
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #0
|
||||
bl GetEntityMoveTargetAndRange
|
||||
cmp r4, #3
|
||||
and r0, r0, #0xf
|
||||
cmpne r4, #1
|
||||
cmpne r0, #4
|
||||
cmpne r0, #3
|
||||
cmpne r0, #1
|
||||
cmpne r0, #6
|
||||
beq _0231ADA0
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #0
|
||||
bl GetEntityMoveTargetAndRange
|
||||
and r0, r0, #0xf0
|
||||
cmp r0, #0x70
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r4, r5, r6, pc}
|
||||
_0231ADA0:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
arm_func_end ov29_0231AD38
|
||||
|
||||
arm_func_start ov29_0231ADA8
|
||||
ov29_0231ADA8: ; 0x0231ADA8
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
sub sp, sp, #8
|
||||
ldr r1, [r0, #0xb4]
|
||||
mov r0, #0
|
||||
mov r5, r0
|
||||
#ifdef JAPAN
|
||||
add r4, r1, #0x120
|
||||
#else
|
||||
add r4, r1, #0x124
|
||||
#endif
|
||||
mov ip, r0
|
||||
mov lr, #1
|
||||
add r2, sp, #0
|
||||
_0231ADCC:
|
||||
ldrb r1, [r4, r5, lsl #3]
|
||||
add r3, r4, r5, lsl #3
|
||||
tst r1, #1
|
||||
movne r1, lr
|
||||
moveq r1, ip
|
||||
tst r1, #0xff
|
||||
beq _0231AE00
|
||||
ldrh r3, [r3, #4]
|
||||
add r1, r0, #1
|
||||
mov r0, r0, lsl #1
|
||||
mov r1, r1, lsl #0x10
|
||||
strh r3, [r2, r0]
|
||||
mov r0, r1, lsr #0x10
|
||||
_0231AE00:
|
||||
add r1, r5, #1
|
||||
mov r1, r1, lsl #0x10
|
||||
mov r5, r1, lsr #0x10
|
||||
cmp r5, #4
|
||||
blo _0231ADCC
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
beq _0231AE34
|
||||
bl DungeonRandInt
|
||||
mov r0, r0, lsl #0x10
|
||||
add r1, sp, #0
|
||||
mov r0, r0, lsr #0xf
|
||||
ldrh r0, [r1, r0]
|
||||
_0231AE34:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end ov29_0231ADA8
|
||||
|
||||
arm_func_start ov29_0231AE3C
|
||||
ov29_0231AE3C: ; 0x0231AE3C
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr ip, [r0, #0xb4]
|
||||
mov r0, #0
|
||||
mov lr, r0
|
||||
mov r2, r0
|
||||
mov r3, #1
|
||||
_0231AE54:
|
||||
add r1, ip, lr, lsl #3
|
||||
#ifdef JAPAN
|
||||
ldrb r1, [r1, #0x120]
|
||||
#else
|
||||
ldrb r1, [r1, #0x124]
|
||||
#endif
|
||||
tst r1, #1
|
||||
movne r1, r3
|
||||
moveq r1, r2
|
||||
tst r1, #0xff
|
||||
add r1, lr, #1
|
||||
addne r0, r0, #1
|
||||
mov r1, r1, lsl #0x10
|
||||
movne r0, r0, lsl #0x10
|
||||
mov lr, r1, lsr #0x10
|
||||
movne r0, r0, lsr #0x10
|
||||
cmp lr, #4
|
||||
blo _0231AE54
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_0231AE3C
|
||||
|
||||
arm_func_start GetEntityNaturalGiftInfo
|
||||
GetEntityNaturalGiftInfo: ; 0x0231AE90
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r4, r0
|
||||
bl IsMonster__0231A9D4
|
||||
cmp r0, #0
|
||||
ldrne r4, [r4, #0xb4]
|
||||
ldrnesh r0, [r4, #0x66]
|
||||
cmpne r0, #0
|
||||
beq _0231AF00
|
||||
mov ip, #0
|
||||
ldr r3, _0231AF08 ; =NATURAL_GIFT_ITEM_TABLE
|
||||
mov lr, ip
|
||||
mov r1, #6
|
||||
_0231AEC0:
|
||||
smulbb r5, lr, r1
|
||||
ldrsh r2, [r3, r5]
|
||||
cmp r2, #0
|
||||
beq _0231AEF0
|
||||
ldrsh r0, [r4, #0x66]
|
||||
cmp r0, r2
|
||||
moveq ip, #1
|
||||
beq _0231AEF0
|
||||
add r0, lr, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov lr, r0, asr #0x10
|
||||
b _0231AEC0
|
||||
_0231AEF0:
|
||||
cmp ip, #0
|
||||
ldrne r0, _0231AF08 ; =NATURAL_GIFT_ITEM_TABLE
|
||||
addne r0, r0, r5
|
||||
ldmneia sp!, {r3, r4, r5, pc}
|
||||
_0231AF00:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0231AF08: .word NATURAL_GIFT_ITEM_TABLE
|
||||
arm_func_end GetEntityNaturalGiftInfo
|
||||
|
||||
arm_func_start GetEntityWeatherBallType
|
||||
GetEntityWeatherBallType: ; 0x0231AF0C
|
||||
stmdb sp!, {r3, lr}
|
||||
bl GetApparentWeather
|
||||
ldr r1, _0231AF20 ; =WEATHER_BALL_TYPE_TABLE
|
||||
ldrb r0, [r1, r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0231AF20: .word WEATHER_BALL_TYPE_TABLE
|
||||
arm_func_end GetEntityWeatherBallType
|
||||
|
||||
arm_func_start ov29_0231AF24
|
||||
ov29_0231AF24: ; 0x0231AF24
|
||||
#ifdef JAPAN
|
||||
#define OV29_0231AF24_OFFSET -4
|
||||
#else
|
||||
#define OV29_0231AF24_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
bl IsMonster__0231A9D4
|
||||
cmp r0, #0
|
||||
beq _0231AFAC
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
bl ov29_022FB9E0
|
||||
mov r1, r0
|
||||
cmp r4, #0
|
||||
beq _0231AF98
|
||||
cmp r1, #0
|
||||
bge _0231AF98
|
||||
ldr r4, [r6, #0xb4]
|
||||
mov r1, #0
|
||||
mov r2, r1
|
||||
add r0, r4, #0x4a
|
||||
bl SetActionUseMoveAi
|
||||
mov r2, #1
|
||||
strb r2, [r4, #0x124 + OV29_0231AF24_OFFSET]
|
||||
add r0, r4, #0x100
|
||||
mov r1, #0
|
||||
strh r1, [r0, #0x26 + OV29_0231AF24_OFFSET]
|
||||
strh r5, [r0, #0x28 + OV29_0231AF24_OFFSET]
|
||||
strb r2, [r4, #0x12a + OV29_0231AF24_OFFSET]
|
||||
strb r1, [r4, #0x12b + OV29_0231AF24_OFFSET]
|
||||
_0231AF98:
|
||||
mov r3, #0
|
||||
mov r0, r6
|
||||
mov r2, #1
|
||||
str r3, [sp]
|
||||
bl ov29_0232145C
|
||||
_0231AFAC:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
arm_func_end ov29_0231AF24
|
||||
|
||||
arm_func_start ov29_0231AFB4
|
||||
ov29_0231AFB4: ; 0x0231AFB4
|
||||
stmdb sp!, {r4, lr}
|
||||
mov ip, #0
|
||||
ldr r1, _0231B004 ; =DUNGEON_PTR
|
||||
mov r2, ip
|
||||
mov r3, ip
|
||||
_0231AFC8:
|
||||
ldr r0, [r1]
|
||||
mov r4, r3
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x1840
|
||||
add r0, r0, #0x18000
|
||||
#else
|
||||
add r0, r0, #0xe4
|
||||
add r0, r0, #0x19800
|
||||
#endif
|
||||
add lr, r0, ip, lsl #4
|
||||
_0231AFDC:
|
||||
str r2, [lr, r4, lsl #3]
|
||||
add r0, lr, r4, lsl #3
|
||||
add r4, r4, #1
|
||||
str r2, [r0, #4]
|
||||
cmp r4, #2
|
||||
blt _0231AFDC
|
||||
add ip, ip, #1
|
||||
cmp ip, #2
|
||||
blt _0231AFC8
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0231B004: .word DUNGEON_PTR
|
||||
arm_func_end ov29_0231AFB4
|
||||
|
||||
arm_func_start ov29_0231B008
|
||||
ov29_0231B008: ; 0x0231B008
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov lr, #0
|
||||
ldr r1, _0231B05C ; =DUNGEON_PTR
|
||||
mov r3, lr
|
||||
mov r2, #2
|
||||
mov ip, lr
|
||||
_0231B020:
|
||||
ldr r0, [r1]
|
||||
mov r5, ip
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x1840
|
||||
add r0, r0, #0x18000
|
||||
#else
|
||||
add r0, r0, #0xe4
|
||||
add r0, r0, #0x19800
|
||||
#endif
|
||||
add r4, r0, lr, lsl #4
|
||||
_0231B034:
|
||||
str r3, [r4, r5, lsl #3]
|
||||
add r0, r4, r5, lsl #3
|
||||
add r5, r5, #1
|
||||
str r2, [r0, #4]
|
||||
cmp r5, #2
|
||||
blt _0231B034
|
||||
add lr, lr, #1
|
||||
cmp lr, #2
|
||||
blt _0231B020
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0231B05C: .word DUNGEON_PTR
|
||||
arm_func_end ov29_0231B008
|
||||
|
||||
arm_func_start ActivateMotorDrive
|
||||
ActivateMotorDrive: ; 0x0231B060
|
||||
stmdb sp!, {r3, r4, lr}
|
||||
sub sp, sp, #4
|
||||
#ifdef JAPAN
|
||||
mov ip, #0x66
|
||||
mov r4, r0
|
||||
rsb r2, ip, #0x9e0
|
||||
#else
|
||||
ldr r2, _0231B0A0 ; =0x00000C3B
|
||||
mov ip, #0x66
|
||||
mov r4, r0
|
||||
#endif
|
||||
mov r1, #0
|
||||
mov r3, #2
|
||||
str ip, [sp]
|
||||
bl LogMessageByIdWithPopupCheckParticipants
|
||||
mov r0, r4
|
||||
mov r1, r4
|
||||
mov r2, #0
|
||||
mov r3, #1
|
||||
bl BoostSpeedOneStage
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, pc}
|
||||
.align 2, 0
|
||||
#ifndef JAPAN
|
||||
_0231B0A0: .word 0x00000C3B
|
||||
#endif
|
||||
arm_func_end ActivateMotorDrive
|
||||
|
||||
arm_func_start TryActivateFrisk
|
||||
TryActivateFrisk: ; 0x0231B0A4
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
sub sp, sp, #8
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl EntityIsValid__0231B194
|
||||
cmp r0, #0
|
||||
beq _0231B184
|
||||
mov r0, r4
|
||||
bl EntityIsValid__0231B194
|
||||
cmp r0, #0
|
||||
beq _0231B184
|
||||
ldr r0, [r5, #0xb4]
|
||||
ldr r6, [r4, #0xb4]
|
||||
ldrb r0, [r0, #6]
|
||||
cmp r0, #0
|
||||
bne _0231B184
|
||||
bl ov29_0232E80C
|
||||
cmp r4, r0
|
||||
ldrneb r0, [r6, #6]
|
||||
cmpne r0, #0
|
||||
beq _0231B184
|
||||
ldrsh r0, [r6, #0x66]
|
||||
cmp r0, #0
|
||||
bne _0231B150
|
||||
ldrsh r0, [r6, #2]
|
||||
add r1, sp, #0
|
||||
bl GetTreasureBoxChances
|
||||
ldrsh r0, [sp, #4]
|
||||
cmp r0, #0
|
||||
ldrlesh r0, [sp, #6]
|
||||
cmple r0, #0
|
||||
ble _0231B184
|
||||
mov r0, r5
|
||||
bl ov29_022E4110
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r2, _0231B18C ; =0x00000C3D
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _0231B184
|
||||
_0231B150:
|
||||
mov r0, r5
|
||||
bl ov29_022E4110
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, r6, #0x62
|
||||
mov r0, #2
|
||||
bl ov29_02344B44
|
||||
ldr r2, _0231B190 ; =0x00000C3C
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0231B184:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_0231B18C: .word 0x0000097C
|
||||
_0231B190: .word 0x0000097B
|
||||
#else
|
||||
_0231B18C: .word 0x00000C3D
|
||||
_0231B190: .word 0x00000C3C
|
||||
#endif
|
||||
arm_func_end TryActivateFrisk
|
||||
@@ -800,922 +800,3 @@ _02323910: .word 0x0001A226
|
||||
#endif
|
||||
_02323914: .word 0x000001E5
|
||||
arm_func_end ov29_023230FC
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActive__02323918
|
||||
ExclusiveItemEffectIsActive__02323918: ; 0x02323918
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, [r0, #0xb4]
|
||||
ldrb r0, [r2, #6]
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
#ifdef JAPAN
|
||||
add r0, r2, #0x224
|
||||
#else
|
||||
add r0, r2, #0x228
|
||||
#endif
|
||||
bl ExclusiveItemEffectFlagTest
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActive__02323918
|
||||
|
||||
arm_func_start ov29_0232393C
|
||||
ov29_0232393C: ; 0x0232393C
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x38
|
||||
ldr r0, [r0, #0xb4]
|
||||
mov sb, r2
|
||||
str r0, [sp, #0x18]
|
||||
mov sl, r1
|
||||
ldrh r0, [sb, #4]
|
||||
ldr r1, [sp, #0x60]
|
||||
str r3, [sp]
|
||||
str r1, [sp, #0x60]
|
||||
ldr r7, [sl, #0xb4]
|
||||
bl GetMoveAnimationSpeed
|
||||
cmp r0, #1
|
||||
moveq r6, #2
|
||||
beq _02323984
|
||||
cmp r0, #2
|
||||
moveq r6, #3
|
||||
movne r6, #6
|
||||
_02323984:
|
||||
ldr r0, [sp, #0x18]
|
||||
ldr r4, _02323C30 ; =DIRECTIONS_XY
|
||||
ldrb r1, [r0, #0x4c]
|
||||
ldrsh r0, [sl, #4]
|
||||
ldr r5, _02323C34 ; =DIRECTIONS_XY + 2
|
||||
add r1, r1, #4
|
||||
strh r0, [sp, #0x34]
|
||||
and r0, r1, #7
|
||||
mov r8, r0, lsl #2
|
||||
ldrsh r4, [r4, r8]
|
||||
ldrsh r3, [sl, #6]
|
||||
add r1, sp, #0x34
|
||||
str r4, [sp, #0x24]
|
||||
ldrsh r4, [r5, r8]
|
||||
strh r3, [sp, #0x36]
|
||||
ldr r3, [sp]
|
||||
mov r0, sl
|
||||
mov r2, sb
|
||||
str r4, [sp, #0x20]
|
||||
bl ov29_02322F78
|
||||
mov r4, r0
|
||||
mov r1, r6
|
||||
mov r0, #0x18
|
||||
bl _s32_div_f
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [sp]
|
||||
cmp r0, #2
|
||||
mov r2, r0
|
||||
ldr r0, [sp, #4]
|
||||
mul r1, r2, r0
|
||||
blt _02323A18
|
||||
add r0, r1, #8
|
||||
str r0, [sp, #0x14]
|
||||
cmp r0, #0x40
|
||||
movge r0, #0x40
|
||||
strge r0, [sp, #0x14]
|
||||
b _02323A20
|
||||
_02323A18:
|
||||
mov r0, #0x20
|
||||
str r0, [sp, #0x14]
|
||||
_02323A20:
|
||||
mov r0, #0x80000
|
||||
mov r5, #0
|
||||
bl _s32_div_f
|
||||
str r0, [sp, #0x1c]
|
||||
ldrb r2, [r7, #0x4c]
|
||||
ldr r1, _02323C38 ; =ov29_02352A8C
|
||||
mov r0, #1
|
||||
ldr r1, [r1, r2, lsl #2]
|
||||
str r1, [sp, #0x10]
|
||||
bl ov29_0234B4CC
|
||||
ldr r0, [sp, #0x24]
|
||||
mov r2, r6, lsl #8
|
||||
mul r1, r0, r2
|
||||
ldr r0, [sp, #0x20]
|
||||
str r1, [sp, #0xc]
|
||||
mul r1, r0, r2
|
||||
mov fp, r5
|
||||
str r1, [sp, #8]
|
||||
b _02323BC0
|
||||
_02323A6C:
|
||||
ldrsh r2, [sp, #0x34]
|
||||
cmp r2, #0
|
||||
ldrgesh r1, [sp, #0x36]
|
||||
cmpge r1, #0
|
||||
blt _02323BCC
|
||||
cmp r2, #0x38
|
||||
cmplt r1, #0x20
|
||||
bge _02323BCC
|
||||
ldr r0, [sp, #0x24]
|
||||
ldrh r6, [sp, #0x34]
|
||||
add r2, r2, r0
|
||||
ldr r0, [sp, #0x20]
|
||||
ldrh r3, [sp, #0x36]
|
||||
add r1, r1, r0
|
||||
add r0, sp, #0x34
|
||||
strh r6, [sp, #0x30]
|
||||
strh r3, [sp, #0x32]
|
||||
strh r2, [sp, #0x34]
|
||||
strh r1, [sp, #0x36]
|
||||
bl ov29_022E2CA0
|
||||
cmp r0, #0
|
||||
beq _02323BB0
|
||||
ldr r0, _02323C3C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x1a000
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r0, #0x19a]
|
||||
#else
|
||||
ldrb r0, [r0, #0x23e]
|
||||
#endif
|
||||
cmp r0, #0
|
||||
bne _02323BB0
|
||||
ldrsh r2, [sp, #0x30]
|
||||
ldrsh r1, [sp, #0x32]
|
||||
mov r0, #0x18
|
||||
smulbb r2, r2, r0
|
||||
smulbb r0, r1, r0
|
||||
add r0, r0, #0x10
|
||||
mov r8, r0, lsl #8
|
||||
mov r0, r4, lsl #0x10
|
||||
add r1, r2, #0xc
|
||||
mov r0, r0, asr #0x10
|
||||
mov r7, r1, lsl #8
|
||||
mov r6, #0
|
||||
str r0, [sp, #0x28]
|
||||
b _02323BA0
|
||||
_02323B14:
|
||||
cmp r4, #0
|
||||
blt _02323B7C
|
||||
ldr r0, [sp, #0x60]
|
||||
cmp r0, #1
|
||||
movne r0, #0
|
||||
bne _02323B3C
|
||||
mov r0, r5, asr #8
|
||||
bl sub_020018D0
|
||||
ldr r1, [sp, #0x14]
|
||||
mul r0, r1, r0
|
||||
_02323B3C:
|
||||
sub r0, r8, r0
|
||||
ldr r2, _02323C3C ; =DUNGEON_PTR
|
||||
mov r0, r0, asr #8
|
||||
strh r0, [sp, #0x2e]
|
||||
mov r0, r7, asr #8
|
||||
ldr r3, [r2]
|
||||
strh r0, [sp, #0x2c]
|
||||
ldr r2, _02323C40 ; =0x0001A226
|
||||
ldr r0, [sp, #0x28]
|
||||
ldrsh r2, [r3, r2]
|
||||
add r1, sp, #0x2c
|
||||
rsb r2, r2, r8, asr #8
|
||||
add r3, r2, r2, lsr #31
|
||||
ldr r2, [sp, #0x10]
|
||||
add r2, r2, r3, asr #1
|
||||
bl ov10_022BEB2C
|
||||
_02323B7C:
|
||||
mov r0, #0x30
|
||||
bl AdvanceFrame
|
||||
ldr r0, [sp, #0xc]
|
||||
add r6, r6, #1
|
||||
add r7, r7, r0
|
||||
ldr r0, [sp, #8]
|
||||
add r8, r8, r0
|
||||
ldr r0, [sp, #0x1c]
|
||||
add r5, r5, r0
|
||||
_02323BA0:
|
||||
ldr r0, [sp, #4]
|
||||
cmp r6, r0
|
||||
blt _02323B14
|
||||
b _02323BBC
|
||||
_02323BB0:
|
||||
ldr r1, [sp, #0x1c]
|
||||
ldr r0, [sp, #4]
|
||||
mla r5, r1, r0, r5
|
||||
_02323BBC:
|
||||
add fp, fp, #1
|
||||
_02323BC0:
|
||||
ldr r0, [sp]
|
||||
cmp fp, r0
|
||||
blt _02323A6C
|
||||
_02323BCC:
|
||||
cmp r4, #0
|
||||
blt _02323BE0
|
||||
mov r0, r4, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
bl ov10_022BDE50
|
||||
_02323BE0:
|
||||
mov r0, #1
|
||||
bl AnimationDelayOrSomething
|
||||
mov r0, #0
|
||||
bl ov29_0234B4CC
|
||||
mov r0, #1
|
||||
mov r1, #0x4a
|
||||
bl ov29_022EA370
|
||||
ldrh r1, [sb, #4]
|
||||
ldr r0, _02323C44 ; =0x00000232
|
||||
add r3, sp, #0x34
|
||||
cmp r1, r0
|
||||
ldreq r0, [sp, #0x18]
|
||||
moveq r1, #0
|
||||
#ifdef JAPAN
|
||||
streqb r1, [r0, #0x16c]
|
||||
#else
|
||||
streqb r1, [r0, #0x170]
|
||||
#endif
|
||||
mov r0, sl
|
||||
mov r2, sb
|
||||
mov r1, #0
|
||||
bl PlayMoveAnimation
|
||||
add sp, sp, #0x38
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_02323C30: .word DIRECTIONS_XY
|
||||
_02323C34: .word DIRECTIONS_XY + 2
|
||||
_02323C38: .word ov29_02352A8C
|
||||
_02323C3C: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_02323C40: .word 0x0001A182
|
||||
#else
|
||||
_02323C40: .word 0x0001A226
|
||||
#endif
|
||||
_02323C44: .word 0x00000232
|
||||
arm_func_end ov29_0232393C
|
||||
|
||||
arm_func_start MoveHitCheck
|
||||
MoveHitCheck: ; 0x02323C48
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0xc
|
||||
mov fp, r2
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r0, fp
|
||||
mov r1, r3
|
||||
bl GetMoveAccuracyOrAiChance
|
||||
mov r8, r0
|
||||
mov r0, #0x64
|
||||
bl DungeonRandInt
|
||||
mov r1, #0
|
||||
str r1, [sp, #4]
|
||||
ldr sb, [r7, #0xb4]
|
||||
str r0, [sp, #8]
|
||||
ldrsh r0, [sb, #2]
|
||||
mov r1, r1
|
||||
str r1, [sp]
|
||||
ldr r5, [r6, #0xb4]
|
||||
bl GetMonsterGenderVeneer
|
||||
cmp r0, #2
|
||||
moveq r0, #1
|
||||
streq r0, [sp, #4]
|
||||
ldrsh r0, [r5, #2]
|
||||
bl GetMonsterGenderVeneer
|
||||
cmp r0, #2
|
||||
moveq r0, #1
|
||||
streq r0, [sp]
|
||||
ldrb r0, [sp, #0x30]
|
||||
mov sl, #0
|
||||
mov r4, sl
|
||||
cmp r0, #0
|
||||
beq _02323CD8
|
||||
cmp r7, r6
|
||||
moveq r0, #1
|
||||
beq _02324008
|
||||
_02323CD8:
|
||||
ldrh r1, [fp, #4]
|
||||
ldr r0, _02324010 ; =0x00000163
|
||||
cmp r1, r0
|
||||
bne _02323D00
|
||||
mov r0, r7
|
||||
mov r1, #4
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
bne _02324008
|
||||
_02323D00:
|
||||
ldrb r0, [sb, #0xec]
|
||||
cmp r0, #1
|
||||
moveq r0, #1
|
||||
beq _02324008
|
||||
cmp r0, #2
|
||||
moveq r0, #0
|
||||
beq _02324008
|
||||
cmp r8, #0x64
|
||||
movgt r0, #1
|
||||
bgt _02324008
|
||||
mov r0, r6
|
||||
mov r1, #0x6f
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
bne _02323D4C
|
||||
mov r0, r6
|
||||
mov r1, #0x2a
|
||||
bl HasHeldItem
|
||||
_02323D4C:
|
||||
cmp r0, #0
|
||||
ldrne r0, _02324014 ; =DETECT_BAND_MOVE_ACCURACY_DROP
|
||||
mov r1, #5
|
||||
ldrne r0, [r0]
|
||||
subne r8, r8, r0
|
||||
mov r0, r6
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
ldrne r0, _02324018 ; =QUICK_DODGER_MOVE_ACCURACY_DROP
|
||||
mov r1, #0x33
|
||||
ldrne r0, [r0]
|
||||
ldrsh sb, [sb, #0x2c]
|
||||
subne r8, r8, r0
|
||||
mov r0, r7
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
ldrh r0, [fp, #4]
|
||||
addne sl, sl, #2
|
||||
cmp r0, #0x40
|
||||
bne _02323DB8
|
||||
mov r0, r7
|
||||
bl GetApparentWeather
|
||||
cmp r0, #4
|
||||
moveq r0, #1
|
||||
beq _02324008
|
||||
cmp r0, #1
|
||||
subeq sl, sl, #2
|
||||
_02323DB8:
|
||||
ldrh r1, [fp, #4]
|
||||
ldr r0, _0232401C ; =0x0000010E
|
||||
cmp r1, r0
|
||||
bne _02323DDC
|
||||
mov r0, r7
|
||||
bl GetApparentWeather
|
||||
cmp r0, #5
|
||||
moveq r0, #1
|
||||
beq _02324008
|
||||
_02323DDC:
|
||||
mov r0, r7
|
||||
mov r1, #0x30
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
addne sl, sl, #1
|
||||
ldrb r0, [r5, #0xfe]
|
||||
add sb, sb, sl
|
||||
ldrsh sl, [r5, #0x2e]
|
||||
cmp r0, #0
|
||||
mov r0, r6
|
||||
movne sl, #0xa
|
||||
bl GetApparentWeather
|
||||
cmp r0, #2
|
||||
bne _02323E30
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, #0x1d
|
||||
#ifndef JAPAN
|
||||
mov r3, #1
|
||||
#endif
|
||||
bl DefenderAbilityIsActive__02322D64
|
||||
cmp r0, #0
|
||||
addne r4, r4, #2
|
||||
_02323E30:
|
||||
mov r0, r7
|
||||
mov r1, #0x30
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
beq _02323E54
|
||||
ldrh r0, [fp, #4]
|
||||
bl MoveIsNotPhysical
|
||||
cmp r0, #0
|
||||
addeq r4, r4, #2
|
||||
_02323E54:
|
||||
mov r0, r6
|
||||
mov r1, #0x3f
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
beq _02323E94
|
||||
ldrsh r2, [r5, #0x12]
|
||||
ldrsh r1, [r5, #0x16]
|
||||
ldr r0, _02324020 ; =0x000003E7
|
||||
add r2, r2, r1
|
||||
cmp r2, r0
|
||||
movgt r2, r0
|
||||
mov r0, r2, asr #1
|
||||
ldrsh r1, [r5, #0x10]
|
||||
add r0, r2, r0, lsr #30
|
||||
cmp r1, r0, asr #2
|
||||
addle r4, r4, #2
|
||||
_02323E94:
|
||||
mov r0, r6
|
||||
mov r1, #0x30
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, #0x62
|
||||
#ifndef JAPAN
|
||||
mov r3, #1
|
||||
#endif
|
||||
subne r4, r4, #1
|
||||
bl DefenderAbilityIsActive__02322D64
|
||||
cmp r0, #0
|
||||
beq _02323ED8
|
||||
ldrb r0, [r5, #0xd0]
|
||||
cmp r0, #2
|
||||
ldrneb r0, [r5, #0xf1]
|
||||
cmpne r0, #2
|
||||
addeq r4, r4, #3
|
||||
_02323ED8:
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, #0x77
|
||||
#ifndef JAPAN
|
||||
mov r3, #1
|
||||
#endif
|
||||
bl DefenderAbilityIsActive__02322D64
|
||||
cmp r0, #0
|
||||
beq _02323F18
|
||||
mov r0, r6
|
||||
bl GetApparentWeather
|
||||
cmp r0, #5
|
||||
beq _02323F14
|
||||
mov r0, r6
|
||||
bl GetApparentWeather
|
||||
cmp r0, #7
|
||||
bne _02323F18
|
||||
_02323F14:
|
||||
add r4, r4, #2
|
||||
_02323F18:
|
||||
mov r0, r6
|
||||
bl GetApparentWeather
|
||||
ldr r2, _02324024 ; =EXCL_ITEM_EFFECTS_EVASION_BOOST
|
||||
ldrb r1, [r2, r0]
|
||||
cmp r1, #0
|
||||
beq _02323F44
|
||||
ldrb r1, [r2, r0]
|
||||
mov r0, r6
|
||||
bl ExclusiveItemEffectIsActive__02323918
|
||||
cmp r0, #0
|
||||
addne r4, r4, #1
|
||||
_02323F44:
|
||||
mov r0, r7
|
||||
mov r1, #0x6a
|
||||
add sl, sl, r4
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne sb, #0xa
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, #0x6a
|
||||
#ifndef JAPAN
|
||||
mov r3, #1
|
||||
#endif
|
||||
movne sl, sb
|
||||
bl DefenderAbilityIsActive__02322D64
|
||||
cmp r0, #0
|
||||
movne sb, #0xa
|
||||
movne sl, sb
|
||||
cmp sb, #0
|
||||
movlt sb, #0
|
||||
blt _02323F94
|
||||
cmp sb, #0x14
|
||||
movgt sb, #0x14
|
||||
_02323F94:
|
||||
ldr r2, _02324028 ; =MALE_ACCURACY_STAGE_MULTIPLIERS
|
||||
ldr r0, [sp, #4]
|
||||
mov r1, #0xa8
|
||||
mla r1, r0, r1, r2
|
||||
ldr r3, [r1, sb, lsl #2]
|
||||
cmp sl, #0
|
||||
movlt sl, #0
|
||||
cmp sl, #0x14
|
||||
movgt sl, #0x14
|
||||
cmp r3, #0
|
||||
movlt r3, #0
|
||||
cmp r3, #0x6400
|
||||
ldr r2, _0232402C ; =MALE_EVASION_STAGE_MULTIPLIERS
|
||||
ldr r0, [sp]
|
||||
mov r1, #0xa8
|
||||
mla r1, r0, r1, r2
|
||||
movgt r3, #0x6400
|
||||
mul r0, r8, r3
|
||||
ldr r1, [r1, sl, lsl #2]
|
||||
mov r8, r0, asr #8
|
||||
cmp r1, #0
|
||||
movlt r1, #0
|
||||
cmp r1, #0x6400
|
||||
movgt r1, #0x6400
|
||||
mul r1, r8, r1
|
||||
ldr r0, [sp, #8]
|
||||
cmp r0, r1, asr #8
|
||||
movlt r0, #1
|
||||
movge r0, #0
|
||||
_02324008:
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_02324010: .word 0x00000163
|
||||
_02324014: .word DETECT_BAND_MOVE_ACCURACY_DROP
|
||||
_02324018: .word QUICK_DODGER_MOVE_ACCURACY_DROP
|
||||
_0232401C: .word 0x0000010E
|
||||
_02324020: .word 0x000003E7
|
||||
_02324024: .word EXCL_ITEM_EFFECTS_EVASION_BOOST
|
||||
_02324028: .word MALE_ACCURACY_STAGE_MULTIPLIERS
|
||||
_0232402C: .word MALE_EVASION_STAGE_MULTIPLIERS
|
||||
arm_func_end MoveHitCheck
|
||||
|
||||
arm_func_start BuildMoveTargetList
|
||||
BuildMoveTargetList: ; 0x02324030
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x18
|
||||
mov sb, r1
|
||||
mov sl, r0
|
||||
mov r0, sb
|
||||
mov r1, #1
|
||||
mov r4, #0
|
||||
mov r8, r2
|
||||
bl ov29_023024E0
|
||||
mov r6, r0
|
||||
mov r0, sb
|
||||
mov r1, r4
|
||||
bl ov29_023024E0
|
||||
str r0, [sp, #0x10]
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
mov r2, r4
|
||||
bl GetEntityMoveTargetAndRange
|
||||
mov r5, r0
|
||||
and r0, r5, #0xf
|
||||
cmp r0, #4
|
||||
bne _023240C0
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl IsChargingTwoTurnMove
|
||||
ldrh r1, [r8, #4]
|
||||
mov r5, r0
|
||||
cmp r1, #0x97
|
||||
bne _023240B4
|
||||
mov r0, sb
|
||||
bl GetApparentWeather
|
||||
cmp r0, #1
|
||||
moveq r5, #1
|
||||
_023240B4:
|
||||
cmp r5, #0
|
||||
movne r5, #0
|
||||
moveq r5, #0x73
|
||||
_023240C0:
|
||||
ands r0, r5, #0xf0
|
||||
bne _023240FC
|
||||
mov r0, sb
|
||||
bl ov29_022F87C0
|
||||
cmp r0, #0
|
||||
beq _0232439C
|
||||
stmia sp, {r0, r8}
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
mov r0, #0
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
b _0232439C
|
||||
_023240FC:
|
||||
cmp r0, #0x10
|
||||
cmpne r0, #0x20
|
||||
bne _023241AC
|
||||
cmp r0, #0x20
|
||||
ldr r0, [sb, #0xb4]
|
||||
mov fp, #0
|
||||
ldreqb r7, [r0, #0x4c]
|
||||
moveq r0, #8
|
||||
ldrneb r1, [r0, #0x4c]
|
||||
streq r0, [sp, #0xc]
|
||||
movne r0, #3
|
||||
strne r0, [sp, #0xc]
|
||||
subne r7, r1, #1
|
||||
b _0232419C
|
||||
_02324134:
|
||||
and r7, r7, #7
|
||||
ldr r1, _023243AC ; =DIRECTIONS_XY
|
||||
mov r2, r7, lsl #2
|
||||
ldrsh r2, [r1, r2]
|
||||
ldrsh r0, [sb, #4]
|
||||
add r1, r1, r7, lsl #2
|
||||
ldrsh r1, [r1, #2]
|
||||
add r0, r0, r2
|
||||
strh r0, [sp, #0x14]
|
||||
ldrsh r2, [sb, #6]
|
||||
add r0, sp, #0x14
|
||||
add r1, r2, r1
|
||||
strh r1, [sp, #0x16]
|
||||
bl PositionHasMonster
|
||||
cmp r0, #0
|
||||
beq _02324194
|
||||
stmia sp, {r0, r8}
|
||||
mov r0, r4
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
_02324194:
|
||||
add fp, fp, #1
|
||||
add r7, r7, #1
|
||||
_0232419C:
|
||||
ldr r0, [sp, #0xc]
|
||||
cmp fp, r0
|
||||
blt _02324134
|
||||
b _0232439C
|
||||
_023241AC:
|
||||
cmp r0, #0x30
|
||||
bne _02324248
|
||||
mov fp, #0
|
||||
_023241B8:
|
||||
ldr r0, _023243B0 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, fp, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr r7, [r0, #0xad4]
|
||||
#else
|
||||
ldr r7, [r0, #0xb78]
|
||||
#endif
|
||||
mov r0, r7
|
||||
bl EntityIsValid__02321438
|
||||
cmp r0, #0
|
||||
beq _02324238
|
||||
mov r0, sb
|
||||
mov r1, r7
|
||||
bl ov29_022E28D4
|
||||
cmp r0, #0
|
||||
beq _02324238
|
||||
cmp r7, sb
|
||||
stmia sp, {r7, r8}
|
||||
mov r0, r4
|
||||
bne _02324220
|
||||
ldr r4, [sp, #0x10]
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
str r4, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
b _02324238
|
||||
_02324220:
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
_02324238:
|
||||
add fp, fp, #1
|
||||
cmp fp, #0x14
|
||||
blt _023241B8
|
||||
b _0232439C
|
||||
_02324248:
|
||||
cmp r0, #0x40
|
||||
bne _023242C4
|
||||
mov r0, sb
|
||||
mov r7, #0
|
||||
bl ov29_022F8830
|
||||
cmp r0, #0
|
||||
beq _02324288
|
||||
stmia sp, {r0, r8}
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
mov r0, r7
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
movs r4, r0
|
||||
movne r7, #1
|
||||
_02324288:
|
||||
cmp r7, #0
|
||||
bne _0232439C
|
||||
mov r0, sb
|
||||
bl ov29_022F88C0
|
||||
cmp r0, #0
|
||||
beq _0232439C
|
||||
stmia sp, {r0, r8}
|
||||
mov r0, r4
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
b _0232439C
|
||||
_023242C4:
|
||||
cmp r0, #0x50
|
||||
beq _0232439C
|
||||
cmp r0, #0x80
|
||||
cmpne r0, #0x90
|
||||
bne _0232430C
|
||||
mov r0, sb
|
||||
bl ov29_022F8830
|
||||
cmp r0, #0
|
||||
beq _0232439C
|
||||
stmia sp, {r0, r8}
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
mov r0, #0
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
b _0232439C
|
||||
_0232430C:
|
||||
cmp r0, #0x60
|
||||
bne _02324370
|
||||
mov r7, #0
|
||||
_02324318:
|
||||
ldr r0, _023243B0 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, r7, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr fp, [r0, #0xad4]
|
||||
#else
|
||||
ldr fp, [r0, #0xb78]
|
||||
#endif
|
||||
mov r0, fp
|
||||
bl EntityIsValid__02321438
|
||||
cmp r0, #0
|
||||
beq _02324360
|
||||
str fp, [sp]
|
||||
str r8, [sp, #4]
|
||||
mov r0, r4
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
_02324360:
|
||||
add r7, r7, #1
|
||||
cmp r7, #0x14
|
||||
blt _02324318
|
||||
b _0232439C
|
||||
_02324370:
|
||||
cmp r0, #0x70
|
||||
bne _0232439C
|
||||
str sb, [sp]
|
||||
str r8, [sp, #4]
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
mov r0, #0
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
_0232439C:
|
||||
mov r0, #0
|
||||
str r0, [sl, r4, lsl #2]
|
||||
add sp, sp, #0x18
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_023243AC: .word DIRECTIONS_XY
|
||||
_023243B0: .word DUNGEON_PTR
|
||||
arm_func_end BuildMoveTargetList
|
||||
|
||||
arm_func_start ov29_023243B4
|
||||
ov29_023243B4: ; 0x023243B4
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
ldr r4, [sp, #0x1c]
|
||||
ldr r5, [sp, #0x18]
|
||||
ldrh r4, [r4, #4]
|
||||
mov r7, r1
|
||||
mov r8, r0
|
||||
cmp r4, #0xfc
|
||||
mov r6, r3
|
||||
mov r4, #0
|
||||
ldr r1, [r5, #0xb4]
|
||||
cmpeq r6, r5
|
||||
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
ldrb r0, [r1, #9]
|
||||
cmp r0, #1
|
||||
moveq r0, r8
|
||||
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
ldrb r0, [r1, #0xbc]
|
||||
cmp r0, #7
|
||||
moveq r0, r8
|
||||
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
ldrb r0, [sp, #0x20]
|
||||
cmp r0, #0
|
||||
movne r4, #1
|
||||
bne _023244C0
|
||||
ands r0, r2, #0xf
|
||||
cmpne r0, #4
|
||||
bne _02324440
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
bl GetTreatmentBetweenMonsters
|
||||
cmp r0, #1
|
||||
moveq r4, #1
|
||||
b _023244C0
|
||||
_02324440:
|
||||
cmp r0, #1
|
||||
bne _02324468
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
bl GetTreatmentBetweenMonsters
|
||||
cmp r0, #0
|
||||
moveq r4, #1
|
||||
b _023244C0
|
||||
_02324468:
|
||||
cmp r0, #2
|
||||
moveq r4, #1
|
||||
beq _023244C0
|
||||
cmp r0, #5
|
||||
bne _02324488
|
||||
cmp r6, r5
|
||||
movne r4, #1
|
||||
b _023244C0
|
||||
_02324488:
|
||||
cmp r0, #6
|
||||
bne _023244B8
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
bl GetTreatmentBetweenMonsters
|
||||
cmp r0, #0
|
||||
bne _023244C0
|
||||
cmp r6, r5
|
||||
movne r4, #1
|
||||
b _023244C0
|
||||
_023244B8:
|
||||
cmp r0, #3
|
||||
moveq r4, #1
|
||||
_023244C0:
|
||||
ldr r1, [sp, #0x1c]
|
||||
mov r0, r5
|
||||
bl TwoTurnMoveForcedMiss
|
||||
cmp r0, #0
|
||||
movne r4, #0
|
||||
cmp r4, #0
|
||||
beq _02324508
|
||||
cmp r8, #0x40
|
||||
bge _02324508
|
||||
str r5, [r7, r8, lsl #2]
|
||||
ldr r0, [r5, #0xb4]
|
||||
add r8, r8, #1
|
||||
ldrb r0, [r0, #6]
|
||||
cmp r0, #0
|
||||
ldreq r0, _02324510 ; =ov29_0235370C
|
||||
ldreq r1, [r0]
|
||||
cmpeq r1, #0
|
||||
streq r5, [r0]
|
||||
_02324508:
|
||||
mov r0, r8
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
_02324510: .word ov29_0235370C
|
||||
arm_func_end ov29_023243B4
|
||||
|
||||
arm_func_start ov29_02324514
|
||||
ov29_02324514: ; 0x02324514
|
||||
stmdb sp!, {r3, lr}
|
||||
bl GetMoveNbStrikes
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
mov r0, #2
|
||||
mov r1, #6
|
||||
bl DungeonRandRange
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_02324514
|
||||
|
||||
arm_func_start IsHyperBeamVariant
|
||||
IsHyperBeamVariant: ; 0x02324534
|
||||
ldrh r2, [r0, #4]
|
||||
cmp r2, #0xee
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
cmp r2, #0xef
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
cmp r2, #0xf2
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
cmp r2, #0x110
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
ldr r1, _023245A0 ; =0x000001C5
|
||||
cmp r2, r1
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
add r0, r1, #2
|
||||
cmp r2, r0
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
add r0, r1, #0x29
|
||||
cmp r2, r0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_023245A0: .word 0x000001C5
|
||||
arm_func_end IsHyperBeamVariant
|
||||
|
||||
906
asm/overlay_29_0232393C.s
Normal file
906
asm/overlay_29_0232393C.s
Normal file
@@ -0,0 +1,906 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0232393C.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_0232393C
|
||||
ov29_0232393C: ; 0x0232393C
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x38
|
||||
ldr r0, [r0, #0xb4]
|
||||
mov sb, r2
|
||||
str r0, [sp, #0x18]
|
||||
mov sl, r1
|
||||
ldrh r0, [sb, #4]
|
||||
ldr r1, [sp, #0x60]
|
||||
str r3, [sp]
|
||||
str r1, [sp, #0x60]
|
||||
ldr r7, [sl, #0xb4]
|
||||
bl GetMoveAnimationSpeed
|
||||
cmp r0, #1
|
||||
moveq r6, #2
|
||||
beq _02323984
|
||||
cmp r0, #2
|
||||
moveq r6, #3
|
||||
movne r6, #6
|
||||
_02323984:
|
||||
ldr r0, [sp, #0x18]
|
||||
ldr r4, _02323C30 ; =DIRECTIONS_XY
|
||||
ldrb r1, [r0, #0x4c]
|
||||
ldrsh r0, [sl, #4]
|
||||
ldr r5, _02323C34 ; =DIRECTIONS_XY + 2
|
||||
add r1, r1, #4
|
||||
strh r0, [sp, #0x34]
|
||||
and r0, r1, #7
|
||||
mov r8, r0, lsl #2
|
||||
ldrsh r4, [r4, r8]
|
||||
ldrsh r3, [sl, #6]
|
||||
add r1, sp, #0x34
|
||||
str r4, [sp, #0x24]
|
||||
ldrsh r4, [r5, r8]
|
||||
strh r3, [sp, #0x36]
|
||||
ldr r3, [sp]
|
||||
mov r0, sl
|
||||
mov r2, sb
|
||||
str r4, [sp, #0x20]
|
||||
bl ov29_02322F78
|
||||
mov r4, r0
|
||||
mov r1, r6
|
||||
mov r0, #0x18
|
||||
bl _s32_div_f
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [sp]
|
||||
cmp r0, #2
|
||||
mov r2, r0
|
||||
ldr r0, [sp, #4]
|
||||
mul r1, r2, r0
|
||||
blt _02323A18
|
||||
add r0, r1, #8
|
||||
str r0, [sp, #0x14]
|
||||
cmp r0, #0x40
|
||||
movge r0, #0x40
|
||||
strge r0, [sp, #0x14]
|
||||
b _02323A20
|
||||
_02323A18:
|
||||
mov r0, #0x20
|
||||
str r0, [sp, #0x14]
|
||||
_02323A20:
|
||||
mov r0, #0x80000
|
||||
mov r5, #0
|
||||
bl _s32_div_f
|
||||
str r0, [sp, #0x1c]
|
||||
ldrb r2, [r7, #0x4c]
|
||||
ldr r1, _02323C38 ; =ov29_02352A8C
|
||||
mov r0, #1
|
||||
ldr r1, [r1, r2, lsl #2]
|
||||
str r1, [sp, #0x10]
|
||||
bl ov29_0234B4CC
|
||||
ldr r0, [sp, #0x24]
|
||||
mov r2, r6, lsl #8
|
||||
mul r1, r0, r2
|
||||
ldr r0, [sp, #0x20]
|
||||
str r1, [sp, #0xc]
|
||||
mul r1, r0, r2
|
||||
mov fp, r5
|
||||
str r1, [sp, #8]
|
||||
b _02323BC0
|
||||
_02323A6C:
|
||||
ldrsh r2, [sp, #0x34]
|
||||
cmp r2, #0
|
||||
ldrgesh r1, [sp, #0x36]
|
||||
cmpge r1, #0
|
||||
blt _02323BCC
|
||||
cmp r2, #0x38
|
||||
cmplt r1, #0x20
|
||||
bge _02323BCC
|
||||
ldr r0, [sp, #0x24]
|
||||
ldrh r6, [sp, #0x34]
|
||||
add r2, r2, r0
|
||||
ldr r0, [sp, #0x20]
|
||||
ldrh r3, [sp, #0x36]
|
||||
add r1, r1, r0
|
||||
add r0, sp, #0x34
|
||||
strh r6, [sp, #0x30]
|
||||
strh r3, [sp, #0x32]
|
||||
strh r2, [sp, #0x34]
|
||||
strh r1, [sp, #0x36]
|
||||
bl ov29_022E2CA0
|
||||
cmp r0, #0
|
||||
beq _02323BB0
|
||||
ldr r0, _02323C3C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x1a000
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r0, #0x19a]
|
||||
#else
|
||||
ldrb r0, [r0, #0x23e]
|
||||
#endif
|
||||
cmp r0, #0
|
||||
bne _02323BB0
|
||||
ldrsh r2, [sp, #0x30]
|
||||
ldrsh r1, [sp, #0x32]
|
||||
mov r0, #0x18
|
||||
smulbb r2, r2, r0
|
||||
smulbb r0, r1, r0
|
||||
add r0, r0, #0x10
|
||||
mov r8, r0, lsl #8
|
||||
mov r0, r4, lsl #0x10
|
||||
add r1, r2, #0xc
|
||||
mov r0, r0, asr #0x10
|
||||
mov r7, r1, lsl #8
|
||||
mov r6, #0
|
||||
str r0, [sp, #0x28]
|
||||
b _02323BA0
|
||||
_02323B14:
|
||||
cmp r4, #0
|
||||
blt _02323B7C
|
||||
ldr r0, [sp, #0x60]
|
||||
cmp r0, #1
|
||||
movne r0, #0
|
||||
bne _02323B3C
|
||||
mov r0, r5, asr #8
|
||||
bl sub_020018D0
|
||||
ldr r1, [sp, #0x14]
|
||||
mul r0, r1, r0
|
||||
_02323B3C:
|
||||
sub r0, r8, r0
|
||||
ldr r2, _02323C3C ; =DUNGEON_PTR
|
||||
mov r0, r0, asr #8
|
||||
strh r0, [sp, #0x2e]
|
||||
mov r0, r7, asr #8
|
||||
ldr r3, [r2]
|
||||
strh r0, [sp, #0x2c]
|
||||
ldr r2, _02323C40 ; =0x0001A226
|
||||
ldr r0, [sp, #0x28]
|
||||
ldrsh r2, [r3, r2]
|
||||
add r1, sp, #0x2c
|
||||
rsb r2, r2, r8, asr #8
|
||||
add r3, r2, r2, lsr #31
|
||||
ldr r2, [sp, #0x10]
|
||||
add r2, r2, r3, asr #1
|
||||
bl ov10_022BEB2C
|
||||
_02323B7C:
|
||||
mov r0, #0x30
|
||||
bl AdvanceFrame
|
||||
ldr r0, [sp, #0xc]
|
||||
add r6, r6, #1
|
||||
add r7, r7, r0
|
||||
ldr r0, [sp, #8]
|
||||
add r8, r8, r0
|
||||
ldr r0, [sp, #0x1c]
|
||||
add r5, r5, r0
|
||||
_02323BA0:
|
||||
ldr r0, [sp, #4]
|
||||
cmp r6, r0
|
||||
blt _02323B14
|
||||
b _02323BBC
|
||||
_02323BB0:
|
||||
ldr r1, [sp, #0x1c]
|
||||
ldr r0, [sp, #4]
|
||||
mla r5, r1, r0, r5
|
||||
_02323BBC:
|
||||
add fp, fp, #1
|
||||
_02323BC0:
|
||||
ldr r0, [sp]
|
||||
cmp fp, r0
|
||||
blt _02323A6C
|
||||
_02323BCC:
|
||||
cmp r4, #0
|
||||
blt _02323BE0
|
||||
mov r0, r4, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
bl ov10_022BDE50
|
||||
_02323BE0:
|
||||
mov r0, #1
|
||||
bl AnimationDelayOrSomething
|
||||
mov r0, #0
|
||||
bl ov29_0234B4CC
|
||||
mov r0, #1
|
||||
mov r1, #0x4a
|
||||
bl ov29_022EA370
|
||||
ldrh r1, [sb, #4]
|
||||
ldr r0, _02323C44 ; =0x00000232
|
||||
add r3, sp, #0x34
|
||||
cmp r1, r0
|
||||
ldreq r0, [sp, #0x18]
|
||||
moveq r1, #0
|
||||
#ifdef JAPAN
|
||||
streqb r1, [r0, #0x16c]
|
||||
#else
|
||||
streqb r1, [r0, #0x170]
|
||||
#endif
|
||||
mov r0, sl
|
||||
mov r2, sb
|
||||
mov r1, #0
|
||||
bl PlayMoveAnimation
|
||||
add sp, sp, #0x38
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_02323C30: .word DIRECTIONS_XY
|
||||
_02323C34: .word DIRECTIONS_XY + 2
|
||||
_02323C38: .word ov29_02352A8C
|
||||
_02323C3C: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_02323C40: .word 0x0001A182
|
||||
#else
|
||||
_02323C40: .word 0x0001A226
|
||||
#endif
|
||||
_02323C44: .word 0x00000232
|
||||
arm_func_end ov29_0232393C
|
||||
|
||||
arm_func_start MoveHitCheck
|
||||
MoveHitCheck: ; 0x02323C48
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0xc
|
||||
mov fp, r2
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r0, fp
|
||||
mov r1, r3
|
||||
bl GetMoveAccuracyOrAiChance
|
||||
mov r8, r0
|
||||
mov r0, #0x64
|
||||
bl DungeonRandInt
|
||||
mov r1, #0
|
||||
str r1, [sp, #4]
|
||||
ldr sb, [r7, #0xb4]
|
||||
str r0, [sp, #8]
|
||||
ldrsh r0, [sb, #2]
|
||||
mov r1, r1
|
||||
str r1, [sp]
|
||||
ldr r5, [r6, #0xb4]
|
||||
bl GetMonsterGenderVeneer
|
||||
cmp r0, #2
|
||||
moveq r0, #1
|
||||
streq r0, [sp, #4]
|
||||
ldrsh r0, [r5, #2]
|
||||
bl GetMonsterGenderVeneer
|
||||
cmp r0, #2
|
||||
moveq r0, #1
|
||||
streq r0, [sp]
|
||||
ldrb r0, [sp, #0x30]
|
||||
mov sl, #0
|
||||
mov r4, sl
|
||||
cmp r0, #0
|
||||
beq _02323CD8
|
||||
cmp r7, r6
|
||||
moveq r0, #1
|
||||
beq _02324008
|
||||
_02323CD8:
|
||||
ldrh r1, [fp, #4]
|
||||
ldr r0, _02324010 ; =0x00000163
|
||||
cmp r1, r0
|
||||
bne _02323D00
|
||||
mov r0, r7
|
||||
mov r1, #4
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
bne _02324008
|
||||
_02323D00:
|
||||
ldrb r0, [sb, #0xec]
|
||||
cmp r0, #1
|
||||
moveq r0, #1
|
||||
beq _02324008
|
||||
cmp r0, #2
|
||||
moveq r0, #0
|
||||
beq _02324008
|
||||
cmp r8, #0x64
|
||||
movgt r0, #1
|
||||
bgt _02324008
|
||||
mov r0, r6
|
||||
mov r1, #0x6f
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
bne _02323D4C
|
||||
mov r0, r6
|
||||
mov r1, #0x2a
|
||||
bl HasHeldItem
|
||||
_02323D4C:
|
||||
cmp r0, #0
|
||||
ldrne r0, _02324014 ; =DETECT_BAND_MOVE_ACCURACY_DROP
|
||||
mov r1, #5
|
||||
ldrne r0, [r0]
|
||||
subne r8, r8, r0
|
||||
mov r0, r6
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
ldrne r0, _02324018 ; =QUICK_DODGER_MOVE_ACCURACY_DROP
|
||||
mov r1, #0x33
|
||||
ldrne r0, [r0]
|
||||
ldrsh sb, [sb, #0x2c]
|
||||
subne r8, r8, r0
|
||||
mov r0, r7
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
ldrh r0, [fp, #4]
|
||||
addne sl, sl, #2
|
||||
cmp r0, #0x40
|
||||
bne _02323DB8
|
||||
mov r0, r7
|
||||
bl GetApparentWeather
|
||||
cmp r0, #4
|
||||
moveq r0, #1
|
||||
beq _02324008
|
||||
cmp r0, #1
|
||||
subeq sl, sl, #2
|
||||
_02323DB8:
|
||||
ldrh r1, [fp, #4]
|
||||
ldr r0, _0232401C ; =0x0000010E
|
||||
cmp r1, r0
|
||||
bne _02323DDC
|
||||
mov r0, r7
|
||||
bl GetApparentWeather
|
||||
cmp r0, #5
|
||||
moveq r0, #1
|
||||
beq _02324008
|
||||
_02323DDC:
|
||||
mov r0, r7
|
||||
mov r1, #0x30
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
addne sl, sl, #1
|
||||
ldrb r0, [r5, #0xfe]
|
||||
add sb, sb, sl
|
||||
ldrsh sl, [r5, #0x2e]
|
||||
cmp r0, #0
|
||||
mov r0, r6
|
||||
movne sl, #0xa
|
||||
bl GetApparentWeather
|
||||
cmp r0, #2
|
||||
bne _02323E30
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, #0x1d
|
||||
#ifndef JAPAN
|
||||
mov r3, #1
|
||||
#endif
|
||||
bl DefenderAbilityIsActive__02322D64
|
||||
cmp r0, #0
|
||||
addne r4, r4, #2
|
||||
_02323E30:
|
||||
mov r0, r7
|
||||
mov r1, #0x30
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
beq _02323E54
|
||||
ldrh r0, [fp, #4]
|
||||
bl MoveIsNotPhysical
|
||||
cmp r0, #0
|
||||
addeq r4, r4, #2
|
||||
_02323E54:
|
||||
mov r0, r6
|
||||
mov r1, #0x3f
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
beq _02323E94
|
||||
ldrsh r2, [r5, #0x12]
|
||||
ldrsh r1, [r5, #0x16]
|
||||
ldr r0, _02324020 ; =0x000003E7
|
||||
add r2, r2, r1
|
||||
cmp r2, r0
|
||||
movgt r2, r0
|
||||
mov r0, r2, asr #1
|
||||
ldrsh r1, [r5, #0x10]
|
||||
add r0, r2, r0, lsr #30
|
||||
cmp r1, r0, asr #2
|
||||
addle r4, r4, #2
|
||||
_02323E94:
|
||||
mov r0, r6
|
||||
mov r1, #0x30
|
||||
bl IqSkillIsEnabled
|
||||
cmp r0, #0
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, #0x62
|
||||
#ifndef JAPAN
|
||||
mov r3, #1
|
||||
#endif
|
||||
subne r4, r4, #1
|
||||
bl DefenderAbilityIsActive__02322D64
|
||||
cmp r0, #0
|
||||
beq _02323ED8
|
||||
ldrb r0, [r5, #0xd0]
|
||||
cmp r0, #2
|
||||
ldrneb r0, [r5, #0xf1]
|
||||
cmpne r0, #2
|
||||
addeq r4, r4, #3
|
||||
_02323ED8:
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, #0x77
|
||||
#ifndef JAPAN
|
||||
mov r3, #1
|
||||
#endif
|
||||
bl DefenderAbilityIsActive__02322D64
|
||||
cmp r0, #0
|
||||
beq _02323F18
|
||||
mov r0, r6
|
||||
bl GetApparentWeather
|
||||
cmp r0, #5
|
||||
beq _02323F14
|
||||
mov r0, r6
|
||||
bl GetApparentWeather
|
||||
cmp r0, #7
|
||||
bne _02323F18
|
||||
_02323F14:
|
||||
add r4, r4, #2
|
||||
_02323F18:
|
||||
mov r0, r6
|
||||
bl GetApparentWeather
|
||||
ldr r2, _02324024 ; =EXCL_ITEM_EFFECTS_EVASION_BOOST
|
||||
ldrb r1, [r2, r0]
|
||||
cmp r1, #0
|
||||
beq _02323F44
|
||||
ldrb r1, [r2, r0]
|
||||
mov r0, r6
|
||||
bl ExclusiveItemEffectIsActive__02323918
|
||||
cmp r0, #0
|
||||
addne r4, r4, #1
|
||||
_02323F44:
|
||||
mov r0, r7
|
||||
mov r1, #0x6a
|
||||
add sl, sl, r4
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne sb, #0xa
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, #0x6a
|
||||
#ifndef JAPAN
|
||||
mov r3, #1
|
||||
#endif
|
||||
movne sl, sb
|
||||
bl DefenderAbilityIsActive__02322D64
|
||||
cmp r0, #0
|
||||
movne sb, #0xa
|
||||
movne sl, sb
|
||||
cmp sb, #0
|
||||
movlt sb, #0
|
||||
blt _02323F94
|
||||
cmp sb, #0x14
|
||||
movgt sb, #0x14
|
||||
_02323F94:
|
||||
ldr r2, _02324028 ; =MALE_ACCURACY_STAGE_MULTIPLIERS
|
||||
ldr r0, [sp, #4]
|
||||
mov r1, #0xa8
|
||||
mla r1, r0, r1, r2
|
||||
ldr r3, [r1, sb, lsl #2]
|
||||
cmp sl, #0
|
||||
movlt sl, #0
|
||||
cmp sl, #0x14
|
||||
movgt sl, #0x14
|
||||
cmp r3, #0
|
||||
movlt r3, #0
|
||||
cmp r3, #0x6400
|
||||
ldr r2, _0232402C ; =MALE_EVASION_STAGE_MULTIPLIERS
|
||||
ldr r0, [sp]
|
||||
mov r1, #0xa8
|
||||
mla r1, r0, r1, r2
|
||||
movgt r3, #0x6400
|
||||
mul r0, r8, r3
|
||||
ldr r1, [r1, sl, lsl #2]
|
||||
mov r8, r0, asr #8
|
||||
cmp r1, #0
|
||||
movlt r1, #0
|
||||
cmp r1, #0x6400
|
||||
movgt r1, #0x6400
|
||||
mul r1, r8, r1
|
||||
ldr r0, [sp, #8]
|
||||
cmp r0, r1, asr #8
|
||||
movlt r0, #1
|
||||
movge r0, #0
|
||||
_02324008:
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_02324010: .word 0x00000163
|
||||
_02324014: .word DETECT_BAND_MOVE_ACCURACY_DROP
|
||||
_02324018: .word QUICK_DODGER_MOVE_ACCURACY_DROP
|
||||
_0232401C: .word 0x0000010E
|
||||
_02324020: .word 0x000003E7
|
||||
_02324024: .word EXCL_ITEM_EFFECTS_EVASION_BOOST
|
||||
_02324028: .word MALE_ACCURACY_STAGE_MULTIPLIERS
|
||||
_0232402C: .word MALE_EVASION_STAGE_MULTIPLIERS
|
||||
arm_func_end MoveHitCheck
|
||||
|
||||
arm_func_start BuildMoveTargetList
|
||||
BuildMoveTargetList: ; 0x02324030
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x18
|
||||
mov sb, r1
|
||||
mov sl, r0
|
||||
mov r0, sb
|
||||
mov r1, #1
|
||||
mov r4, #0
|
||||
mov r8, r2
|
||||
bl ov29_023024E0
|
||||
mov r6, r0
|
||||
mov r0, sb
|
||||
mov r1, r4
|
||||
bl ov29_023024E0
|
||||
str r0, [sp, #0x10]
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
mov r2, r4
|
||||
bl GetEntityMoveTargetAndRange
|
||||
mov r5, r0
|
||||
and r0, r5, #0xf
|
||||
cmp r0, #4
|
||||
bne _023240C0
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl IsChargingTwoTurnMove
|
||||
ldrh r1, [r8, #4]
|
||||
mov r5, r0
|
||||
cmp r1, #0x97
|
||||
bne _023240B4
|
||||
mov r0, sb
|
||||
bl GetApparentWeather
|
||||
cmp r0, #1
|
||||
moveq r5, #1
|
||||
_023240B4:
|
||||
cmp r5, #0
|
||||
movne r5, #0
|
||||
moveq r5, #0x73
|
||||
_023240C0:
|
||||
ands r0, r5, #0xf0
|
||||
bne _023240FC
|
||||
mov r0, sb
|
||||
bl ov29_022F87C0
|
||||
cmp r0, #0
|
||||
beq _0232439C
|
||||
stmia sp, {r0, r8}
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
mov r0, #0
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
b _0232439C
|
||||
_023240FC:
|
||||
cmp r0, #0x10
|
||||
cmpne r0, #0x20
|
||||
bne _023241AC
|
||||
cmp r0, #0x20
|
||||
ldr r0, [sb, #0xb4]
|
||||
mov fp, #0
|
||||
ldreqb r7, [r0, #0x4c]
|
||||
moveq r0, #8
|
||||
ldrneb r1, [r0, #0x4c]
|
||||
streq r0, [sp, #0xc]
|
||||
movne r0, #3
|
||||
strne r0, [sp, #0xc]
|
||||
subne r7, r1, #1
|
||||
b _0232419C
|
||||
_02324134:
|
||||
and r7, r7, #7
|
||||
ldr r1, _023243AC ; =DIRECTIONS_XY
|
||||
mov r2, r7, lsl #2
|
||||
ldrsh r2, [r1, r2]
|
||||
ldrsh r0, [sb, #4]
|
||||
add r1, r1, r7, lsl #2
|
||||
ldrsh r1, [r1, #2]
|
||||
add r0, r0, r2
|
||||
strh r0, [sp, #0x14]
|
||||
ldrsh r2, [sb, #6]
|
||||
add r0, sp, #0x14
|
||||
add r1, r2, r1
|
||||
strh r1, [sp, #0x16]
|
||||
bl PositionHasMonster
|
||||
cmp r0, #0
|
||||
beq _02324194
|
||||
stmia sp, {r0, r8}
|
||||
mov r0, r4
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
_02324194:
|
||||
add fp, fp, #1
|
||||
add r7, r7, #1
|
||||
_0232419C:
|
||||
ldr r0, [sp, #0xc]
|
||||
cmp fp, r0
|
||||
blt _02324134
|
||||
b _0232439C
|
||||
_023241AC:
|
||||
cmp r0, #0x30
|
||||
bne _02324248
|
||||
mov fp, #0
|
||||
_023241B8:
|
||||
ldr r0, _023243B0 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, fp, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr r7, [r0, #0xad4]
|
||||
#else
|
||||
ldr r7, [r0, #0xb78]
|
||||
#endif
|
||||
mov r0, r7
|
||||
bl EntityIsValid__02321438
|
||||
cmp r0, #0
|
||||
beq _02324238
|
||||
mov r0, sb
|
||||
mov r1, r7
|
||||
bl ov29_022E28D4
|
||||
cmp r0, #0
|
||||
beq _02324238
|
||||
cmp r7, sb
|
||||
stmia sp, {r7, r8}
|
||||
mov r0, r4
|
||||
bne _02324220
|
||||
ldr r4, [sp, #0x10]
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
str r4, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
b _02324238
|
||||
_02324220:
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
_02324238:
|
||||
add fp, fp, #1
|
||||
cmp fp, #0x14
|
||||
blt _023241B8
|
||||
b _0232439C
|
||||
_02324248:
|
||||
cmp r0, #0x40
|
||||
bne _023242C4
|
||||
mov r0, sb
|
||||
mov r7, #0
|
||||
bl ov29_022F8830
|
||||
cmp r0, #0
|
||||
beq _02324288
|
||||
stmia sp, {r0, r8}
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
mov r0, r7
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
movs r4, r0
|
||||
movne r7, #1
|
||||
_02324288:
|
||||
cmp r7, #0
|
||||
bne _0232439C
|
||||
mov r0, sb
|
||||
bl ov29_022F88C0
|
||||
cmp r0, #0
|
||||
beq _0232439C
|
||||
stmia sp, {r0, r8}
|
||||
mov r0, r4
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
b _0232439C
|
||||
_023242C4:
|
||||
cmp r0, #0x50
|
||||
beq _0232439C
|
||||
cmp r0, #0x80
|
||||
cmpne r0, #0x90
|
||||
bne _0232430C
|
||||
mov r0, sb
|
||||
bl ov29_022F8830
|
||||
cmp r0, #0
|
||||
beq _0232439C
|
||||
stmia sp, {r0, r8}
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
mov r0, #0
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
b _0232439C
|
||||
_0232430C:
|
||||
cmp r0, #0x60
|
||||
bne _02324370
|
||||
mov r7, #0
|
||||
_02324318:
|
||||
ldr r0, _023243B0 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, r7, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr fp, [r0, #0xad4]
|
||||
#else
|
||||
ldr fp, [r0, #0xb78]
|
||||
#endif
|
||||
mov r0, fp
|
||||
bl EntityIsValid__02321438
|
||||
cmp r0, #0
|
||||
beq _02324360
|
||||
str fp, [sp]
|
||||
str r8, [sp, #4]
|
||||
mov r0, r4
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
_02324360:
|
||||
add r7, r7, #1
|
||||
cmp r7, #0x14
|
||||
blt _02324318
|
||||
b _0232439C
|
||||
_02324370:
|
||||
cmp r0, #0x70
|
||||
bne _0232439C
|
||||
str sb, [sp]
|
||||
str r8, [sp, #4]
|
||||
mov r1, sl
|
||||
mov r2, r5
|
||||
mov r3, sb
|
||||
mov r0, #0
|
||||
str r6, [sp, #8]
|
||||
bl ov29_023243B4
|
||||
mov r4, r0
|
||||
_0232439C:
|
||||
mov r0, #0
|
||||
str r0, [sl, r4, lsl #2]
|
||||
add sp, sp, #0x18
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_023243AC: .word DIRECTIONS_XY
|
||||
_023243B0: .word DUNGEON_PTR
|
||||
arm_func_end BuildMoveTargetList
|
||||
|
||||
arm_func_start ov29_023243B4
|
||||
ov29_023243B4: ; 0x023243B4
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
ldr r4, [sp, #0x1c]
|
||||
ldr r5, [sp, #0x18]
|
||||
ldrh r4, [r4, #4]
|
||||
mov r7, r1
|
||||
mov r8, r0
|
||||
cmp r4, #0xfc
|
||||
mov r6, r3
|
||||
mov r4, #0
|
||||
ldr r1, [r5, #0xb4]
|
||||
cmpeq r6, r5
|
||||
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
ldrb r0, [r1, #9]
|
||||
cmp r0, #1
|
||||
moveq r0, r8
|
||||
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
ldrb r0, [r1, #0xbc]
|
||||
cmp r0, #7
|
||||
moveq r0, r8
|
||||
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
ldrb r0, [sp, #0x20]
|
||||
cmp r0, #0
|
||||
movne r4, #1
|
||||
bne _023244C0
|
||||
ands r0, r2, #0xf
|
||||
cmpne r0, #4
|
||||
bne _02324440
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
bl GetTreatmentBetweenMonsters
|
||||
cmp r0, #1
|
||||
moveq r4, #1
|
||||
b _023244C0
|
||||
_02324440:
|
||||
cmp r0, #1
|
||||
bne _02324468
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
bl GetTreatmentBetweenMonsters
|
||||
cmp r0, #0
|
||||
moveq r4, #1
|
||||
b _023244C0
|
||||
_02324468:
|
||||
cmp r0, #2
|
||||
moveq r4, #1
|
||||
beq _023244C0
|
||||
cmp r0, #5
|
||||
bne _02324488
|
||||
cmp r6, r5
|
||||
movne r4, #1
|
||||
b _023244C0
|
||||
_02324488:
|
||||
cmp r0, #6
|
||||
bne _023244B8
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
bl GetTreatmentBetweenMonsters
|
||||
cmp r0, #0
|
||||
bne _023244C0
|
||||
cmp r6, r5
|
||||
movne r4, #1
|
||||
b _023244C0
|
||||
_023244B8:
|
||||
cmp r0, #3
|
||||
moveq r4, #1
|
||||
_023244C0:
|
||||
ldr r1, [sp, #0x1c]
|
||||
mov r0, r5
|
||||
bl TwoTurnMoveForcedMiss
|
||||
cmp r0, #0
|
||||
movne r4, #0
|
||||
cmp r4, #0
|
||||
beq _02324508
|
||||
cmp r8, #0x40
|
||||
bge _02324508
|
||||
str r5, [r7, r8, lsl #2]
|
||||
ldr r0, [r5, #0xb4]
|
||||
add r8, r8, #1
|
||||
ldrb r0, [r0, #6]
|
||||
cmp r0, #0
|
||||
ldreq r0, _02324510 ; =ov29_0235370C
|
||||
ldreq r1, [r0]
|
||||
cmpeq r1, #0
|
||||
streq r5, [r0]
|
||||
_02324508:
|
||||
mov r0, r8
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
_02324510: .word ov29_0235370C
|
||||
arm_func_end ov29_023243B4
|
||||
|
||||
arm_func_start ov29_02324514
|
||||
ov29_02324514: ; 0x02324514
|
||||
stmdb sp!, {r3, lr}
|
||||
bl GetMoveNbStrikes
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
mov r0, #2
|
||||
mov r1, #6
|
||||
bl DungeonRandRange
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_02324514
|
||||
|
||||
arm_func_start IsHyperBeamVariant
|
||||
IsHyperBeamVariant: ; 0x02324534
|
||||
ldrh r2, [r0, #4]
|
||||
cmp r2, #0xee
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
cmp r2, #0xef
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
cmp r2, #0xf2
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
cmp r2, #0x110
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
ldr r1, _023245A0 ; =0x000001C5
|
||||
cmp r2, r1
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
add r0, r1, #2
|
||||
cmp r2, r0
|
||||
moveq r0, #1
|
||||
bxeq lr
|
||||
add r0, r1, #0x29
|
||||
cmp r2, r0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_023245A0: .word 0x000001C5
|
||||
arm_func_end IsHyperBeamVariant
|
||||
File diff suppressed because it is too large
Load Diff
1640
asm/overlay_29_02332A0C.s
Normal file
1640
asm/overlay_29_02332A0C.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,21 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02347B80.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ExclusiveItemEffectIsActive__02347B80
|
||||
ExclusiveItemEffectIsActive__02347B80: ; 0x02347B80
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, [r0, #0xb4]
|
||||
ldrb r0, [r2, #6]
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, pc}
|
||||
#ifdef JAPAN
|
||||
add r0, r2, #0x224
|
||||
#else
|
||||
add r0, r2, #0x228
|
||||
#endif
|
||||
bl ExclusiveItemEffectFlagTest
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ExclusiveItemEffectIsActive__02347B80
|
||||
@@ -2,17 +2,17 @@
|
||||
.include "overlay_29_bss_0237CA18.inc"
|
||||
|
||||
.bss
|
||||
.global CAN_ATTACK_IN_DIRECTION
|
||||
CAN_ATTACK_IN_DIRECTION:
|
||||
.global AI_CAN_ATTACK_IN_DIRECTION
|
||||
AI_CAN_ATTACK_IN_DIRECTION:
|
||||
.space 0x8
|
||||
.global POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
POTENTIAL_ATTACK_TARGET_DIRECTIONS:
|
||||
.global AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS
|
||||
AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS:
|
||||
.space 0x8
|
||||
.global POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
POTENTIAL_ATTACK_TARGET_WEIGHTS:
|
||||
.global AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
|
||||
AI_POTENTIAL_ATTACK_TARGET_WEIGHTS:
|
||||
.space 0x20
|
||||
.global POTENTIAL_TARGETS
|
||||
POTENTIAL_TARGETS:
|
||||
.global AI_POTENTIAL_ATTACK_TARGETS
|
||||
AI_POTENTIAL_ATTACK_TARGETS:
|
||||
.space 0x20
|
||||
.global ov29_0237CA68
|
||||
ov29_0237CA68:
|
||||
|
||||
@@ -12,7 +12,7 @@ struct ai_possible_move
|
||||
s32 weight;
|
||||
};
|
||||
|
||||
// The AI uses this function to check if a move has any potential targets, to calculate the list of potential targets and to calculate the move's special weight. The weight is calculated using WeightMove.
|
||||
// The AI uses this function to check if a move has any potential targets, to calculate the list of potential targets and to calculate the move's special weight. The weight is calculated using WeightMoveWithIqSkills.
|
||||
// This function also sets the flag can_be_used on the ai_possible_move struct if it makes sense to use it.
|
||||
// The weight returned by this function is not the same as GetMoveAiWeight. If the AI does not have Weak-Type Picker, AiConsiderMove is called after the AI has selected which move it will use (using GetMoveAiWeight). It determines whether it makes sense for the AI to actually use the chosen move (i.e., whether targets are in range), and which direction the AI will use the move in if so. The return value of this function is not used anywhere in this case.
|
||||
// If the AI has Weak-Type Picker, the AI calls this function earlier in the AI logic to determine which move to use, using the returned special weight to find which move has the most advantageous type matchups.
|
||||
|
||||
7
include/dungeon_ai_attack_2.h
Normal file
7
include/dungeon_ai_attack_2.h
Normal file
@@ -0,0 +1,7 @@
|
||||
#ifndef PMDSKY_DUNGEON_AI_ATTACK_2_H
|
||||
#define PMDSKY_DUNGEON_AI_ATTACK_2_H
|
||||
|
||||
// Sets all values in AI_CAN_ATTACK_IN_DIRECTION to false.
|
||||
void ResetAiCanAttackInDirection();
|
||||
|
||||
#endif //PMDSKY_DUNGEON_AI_ATTACK_2_H
|
||||
9
include/dungeon_logic_3.h
Normal file
9
include/dungeon_logic_3.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_DUNGEON_LOGIC_3_H
|
||||
#define PMDSKY_DUNGEON_LOGIC_3_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
// Checks if a monster is a given type.
|
||||
bool8 MonsterIsType(struct entity *entity, enum type_id type_id);
|
||||
|
||||
#endif //PMDSKY_DUNGEON_LOGIC_3_H
|
||||
137
include/item.h
137
include/item.h
@@ -1460,6 +1460,143 @@ enum item_data_flag {
|
||||
ITEM_DATA_FLAG_THROWABLE_AT_ENEMY = 1 << 7,
|
||||
};
|
||||
|
||||
// Exclusive effect ID. These are usually encoded as bitvectors.
|
||||
// Some of these are unused in-game but still labeled if easy to infer.
|
||||
// See https://docs.google.com/spreadsheets/d/1XfE0x6JtLKDlCCvp5doNwyFpMX0C2HZCUCiDc1eMb1g
|
||||
// for a list of exclusive items that map to each effect.
|
||||
enum exclusive_item_effect_id {
|
||||
EXCLUSIVE_EFF_STAT_BOOST = 0, // Normal stat boosts; don't have a unique effect
|
||||
EXCLUSIVE_EFF_NO_PARALYSIS = 1,
|
||||
EXCLUSIVE_EFF_NO_CONFUSION = 2,
|
||||
EXCLUSIVE_EFF_NO_INFATUATION = 3,
|
||||
EXCLUSIVE_EFF_NO_FREEZE = 4,
|
||||
EXCLUSIVE_EFF_NO_CRITICAL_HITS = 5,
|
||||
EXCLUSIVE_EFF_HALVED_EXPLOSION_DAMAGE = 6,
|
||||
EXCLUSIVE_EFF_NO_EXPLOSION_DAMAGE = 7,
|
||||
EXCLUSIVE_EFF_NO_MOVE_DISABLING = 8,
|
||||
EXCLUSIVE_EFF_NO_WEATHER_DAMAGE = 9,
|
||||
EXCLUSIVE_EFF_NO_SLEEP = 10,
|
||||
EXCLUSIVE_EFF_MAY_POISON_PARALYZE_SLEEP_ATTACKERS = 11,
|
||||
EXCLUSIVE_EFF_UNUSED_0xC = 12, // Probably "may afflict <some status> on attackers"
|
||||
EXCLUSIVE_EFF_MAY_SLEEP_ATTACKERS = 13,
|
||||
EXCLUSIVE_EFF_MAY_NIGHTMARE_ATTACKERS = 14,
|
||||
EXCLUSIVE_EFF_MAY_BURN_ATTACKERS = 15,
|
||||
EXCLUSIVE_EFF_MAY_PARALYZE_ATTACKERS = 16,
|
||||
EXCLUSIVE_EFF_MAY_CONFUSE_ATTACKERS = 17,
|
||||
EXCLUSIVE_EFF_MAY_INFATUATE_ATTACKERS = 18,
|
||||
EXCLUSIVE_EFF_MAY_FREEZE_ATTACKERS = 19,
|
||||
EXCLUSIVE_EFF_MAY_SHADOW_HOLD_ATTACKERS = 20,
|
||||
EXCLUSIVE_EFF_MAY_CONSTRICT_ATTACKERS = 21,
|
||||
EXCLUSIVE_EFF_MAY_CRINGE_ATTACKERS = 22,
|
||||
EXCLUSIVE_EFF_MAY_BLINKER_ATTACKERS = 23,
|
||||
EXCLUSIVE_EFF_MAY_SEAL_ATTACKER_MOVES = 24,
|
||||
EXCLUSIVE_EFF_MAY_GO_INVISIBLE_WHEN_ATTACKED = 25,
|
||||
EXCLUSIVE_EFF_MAY_BOOST_MOVEMENT_SPEED_WHEN_ATTACKED = 26,
|
||||
EXCLUSIVE_EFF_MAY_WARP_WHEN_ATTACKED = 27,
|
||||
EXCLUSIVE_EFF_MAY_PERISH_SONG_ATTACKERS = 28,
|
||||
EXCLUSIVE_EFF_MAY_SLOW_ATTACKERS = 29,
|
||||
EXCLUSIVE_EFF_HALVED_PHYSICAL_DAMAGE = 30,
|
||||
EXCLUSIVE_EFF_HALVED_SPECIAL_DAMAGE = 31,
|
||||
EXCLUSIVE_EFF_COUNTER_PHYSICAL_DAMAGE = 32,
|
||||
EXCLUSIVE_EFF_MAY_BOUNCE_STATUS_MOVES = 33,
|
||||
EXCLUSIVE_EFF_MAY_ENDURE = 34,
|
||||
EXCLUSIVE_EFF_COUNTER_25_PCT_PHYSICAL_DAMAGE = 35,
|
||||
EXCLUSIVE_EFF_LONG_TOSS = 36,
|
||||
EXCLUSIVE_EFF_MAY_BOUNCE_MOVES = 37,
|
||||
EXCLUSIVE_EFF_NO_STAT_DROPS = 38,
|
||||
EXCLUSIVE_EFF_CONVERSION_2_WHEN_HIT = 39,
|
||||
EXCLUSIVE_EFF_NO_STATUS_WHEN_CLEAR = 40,
|
||||
EXCLUSIVE_EFF_NO_STATUS_WHEN_SUNNY = 41,
|
||||
EXCLUSIVE_EFF_NO_STATUS_WHEN_SANDSTORM = 42,
|
||||
EXCLUSIVE_EFF_NO_STATUS_WHEN_CLOUDY = 43,
|
||||
EXCLUSIVE_EFF_NO_STATUS_WHEN_RAINY = 44,
|
||||
EXCLUSIVE_EFF_NO_STATUS_WHEN_HAIL = 45,
|
||||
EXCLUSIVE_EFF_NO_STATUS_WHEN_FOGGY = 46,
|
||||
EXCLUSIVE_EFF_MOVEMENT_SPEED_BOOST_WHEN_CLEAR = 47,
|
||||
EXCLUSIVE_EFF_MOVEMENT_SPEED_BOOST_WHEN_SUNNY = 48,
|
||||
EXCLUSIVE_EFF_MOVEMENT_SPEED_BOOST_WHEN_SANDSTORM = 49,
|
||||
EXCLUSIVE_EFF_MOVEMENT_SPEED_BOOST_WHEN_CLOUDY = 50,
|
||||
EXCLUSIVE_EFF_MOVEMENT_SPEED_BOOST_WHEN_RAINY = 51,
|
||||
EXCLUSIVE_EFF_MOVEMENT_SPEED_BOOST_WHEN_HAIL = 52,
|
||||
EXCLUSIVE_EFF_MOVEMENT_SPEED_BOOST_WHEN_FOGGY = 53,
|
||||
EXCLUSIVE_EFF_ATTACK_SPEED_BOOST_WHEN_CLEAR = 54,
|
||||
EXCLUSIVE_EFF_ATTACK_SPEED_BOOST_WHEN_SUNNY = 55,
|
||||
EXCLUSIVE_EFF_ATTACK_SPEED_BOOST_WHEN_SANDSTORM = 56, // Unused in-game
|
||||
EXCLUSIVE_EFF_ATTACK_SPEED_BOOST_WHEN_CLOUDY = 57, // Unused in-game
|
||||
EXCLUSIVE_EFF_ATTACK_SPEED_BOOST_WHEN_RAINY = 58,
|
||||
EXCLUSIVE_EFF_ATTACK_SPEED_BOOST_WHEN_HAIL = 59,
|
||||
EXCLUSIVE_EFF_ATTACK_SPEED_BOOST_WHEN_FOGGY = 60, // Unused in-game
|
||||
EXCLUSIVE_EFF_EVASION_BOOST_WHEN_CLEAR = 61,
|
||||
EXCLUSIVE_EFF_EVASION_BOOST_WHEN_SUNNY = 62,
|
||||
EXCLUSIVE_EFF_EVASION_BOOST_WHEN_SANDSTORM = 63,
|
||||
EXCLUSIVE_EFF_EVASION_BOOST_WHEN_CLOUDY = 64,
|
||||
EXCLUSIVE_EFF_EVASION_BOOST_WHEN_RAINY = 65,
|
||||
EXCLUSIVE_EFF_EVASION_BOOST_WHEN_HAIL = 66, // Unused in-game
|
||||
EXCLUSIVE_EFF_EVASION_BOOST_WHEN_FOGGY = 67,
|
||||
EXCLUSIVE_EFF_BYPASS_REFLECT_LIGHT_SCREEN = 68,
|
||||
EXCLUSIVE_EFF_SCRAPPY = 69,
|
||||
EXCLUSIVE_EFF_MIRACLE_EYE = 70,
|
||||
EXCLUSIVE_EFF_RESTORE_PP_ON_NEW_FLOORS = 71,
|
||||
EXCLUSIVE_EFF_RESTORE_HP_ON_NEW_FLOORS = 72,
|
||||
EXCLUSIVE_EFF_INCREASED_HP_RECOVERY = 73,
|
||||
EXCLUSIVE_EFF_MAX_PP_BOOST = 74,
|
||||
EXCLUSIVE_EFF_UNUSED_0x4B = 75,
|
||||
EXCLUSIVE_EFF_MAX_HP_BOOST_10 = 76,
|
||||
EXCLUSIVE_EFF_MAX_HP_BOOST_20 = 77, // Unused in-game
|
||||
EXCLUSIVE_EFF_MAX_HP_BOOST_30 = 78, // Unused in-game
|
||||
EXCLUSIVE_EFF_EXP_BOOST = 79,
|
||||
EXCLUSIVE_EFF_EXP_FROM_DAMAGE = 80,
|
||||
EXCLUSIVE_EFF_MAY_RESTORE_PP_FROM_DAMAGE = 81,
|
||||
EXCLUSIVE_EFF_MAY_NOT_CONSUME_PP = 82,
|
||||
EXCLUSIVE_EFF_THROWN_ITEM_PROTECTION = 83,
|
||||
EXCLUSIVE_EFF_BOUNCE_THROWN_ITEMS = 84,
|
||||
EXCLUSIVE_EFF_EXTEND_SELF_EFFECTS_TO_TEAM = 85,
|
||||
EXCLUSIVE_EFF_MORE_TREASURE_DROPS = 86,
|
||||
EXCLUSIVE_EFF_HP_DRAIN_RECOVERY_BOOST = 87,
|
||||
EXCLUSIVE_EFF_PRESSURE_BOOST = 88,
|
||||
EXCLUSIVE_EFF_NO_STATUS = 89,
|
||||
EXCLUSIVE_EFF_HALVED_DAMAGE = 90,
|
||||
EXCLUSIVE_EFF_DAMAGE_BOOST_50_PCT = 91,
|
||||
EXCLUSIVE_EFF_ABSORB_TEAMMATE_POISON = 92,
|
||||
EXCLUSIVE_EFF_RECOVER_HP_FROM_APPLES_AND_BERRIES = 93,
|
||||
EXCLUSIVE_EFF_MORE_KECLEON_SHOPS = 94,
|
||||
EXCLUSIVE_EFF_MORE_HIDDEN_STAIRS = 95,
|
||||
EXCLUSIVE_EFF_NO_FRIENDLY_FIRE = 96,
|
||||
EXCLUSIVE_EFF_PICKUP_BOOST = 97,
|
||||
EXCLUSIVE_EFF_MORE_MONEY_DROPS = 98,
|
||||
EXCLUSIVE_EFF_UNUSED_0x63 = 99,
|
||||
EXCLUSIVE_EFF_RECOVER_HP_FROM_WATERY_TERRAIN = 100,
|
||||
EXCLUSIVE_EFF_HEAL_STATUS_FROM_WATERY_TERRAIN = 101,
|
||||
EXCLUSIVE_EFF_NO_FIRE_DAMAGE = 102,
|
||||
EXCLUSIVE_EFF_NO_WATER_DAMAGE = 103,
|
||||
EXCLUSIVE_EFF_NO_GRASS_DAMAGE = 104,
|
||||
EXCLUSIVE_EFF_NO_ELECTRIC_DAMAGE = 105,
|
||||
EXCLUSIVE_EFF_NO_FIGHTING_DAMAGE = 106,
|
||||
EXCLUSIVE_EFF_NO_GROUND_DAMAGE = 107,
|
||||
EXCLUSIVE_EFF_NO_FLYING_DAMAGE = 108,
|
||||
EXCLUSIVE_EFF_NO_PSYCHIC_DAMAGE = 109,
|
||||
EXCLUSIVE_EFF_NO_GHOST_DAMAGE = 110,
|
||||
EXCLUSIVE_EFF_NO_DRAGON_DAMAGE = 111,
|
||||
EXCLUSIVE_EFF_NO_DARK_DAMAGE = 112,
|
||||
EXCLUSIVE_EFF_NO_STEEL_DAMAGE = 113,
|
||||
EXCLUSIVE_EFF_ABSORB_FIRE_DAMAGE = 114,
|
||||
EXCLUSIVE_EFF_ABSORB_WATER_DAMAGE = 115,
|
||||
EXCLUSIVE_EFF_ABSORB_GRASS_DAMAGE = 116,
|
||||
EXCLUSIVE_EFF_ABSORB_ELECTRIC_DAMAGE = 117,
|
||||
EXCLUSIVE_EFF_ABSORB_ICE_DAMAGE = 118,
|
||||
EXCLUSIVE_EFF_ABSORB_FIGHTING_DAMAGE = 119,
|
||||
EXCLUSIVE_EFF_ABSORB_GROUND_DAMAGE = 120,
|
||||
EXCLUSIVE_EFF_ABSORB_FLYING_DAMAGE = 121,
|
||||
EXCLUSIVE_EFF_ABSORB_PSYCHIC_DAMAGE = 122,
|
||||
EXCLUSIVE_EFF_ABSORB_BUG_DAMAGE = 123,
|
||||
EXCLUSIVE_EFF_ABSORB_ROCK_DAMAGE = 124,
|
||||
EXCLUSIVE_EFF_ABSORB_GHOST_DAMAGE = 125,
|
||||
EXCLUSIVE_EFF_ABSORB_DRAGON_DAMAGE = 126,
|
||||
EXCLUSIVE_EFF_ABSORB_DARK_DAMAGE = 127,
|
||||
EXCLUSIVE_EFF_ABSORB_STEEL_DAMAGE = 128,
|
||||
EXCLUSIVE_EFF_LAST = 129, // Used as a null-terminator in some places
|
||||
};
|
||||
|
||||
#define GROUND_ITEM_TOOLBOX_INDEX 0x80
|
||||
#define HELD_ITEM_TOOLBOX_INDEX 0x81
|
||||
#define INVENTORY_SIZE 52
|
||||
|
||||
9
include/main_02013C04.h
Normal file
9
include/main_02013C04.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_MAIN_02013C04_H
|
||||
#define PMDSKY_MAIN_02013C04_H
|
||||
|
||||
#include "move.h"
|
||||
#include "util.h"
|
||||
|
||||
bool32 IsMoveRangeStringUser(struct move *move);
|
||||
|
||||
#endif //PMDSKY_MAIN_02013C04_H
|
||||
@@ -54,14 +54,15 @@ enum move_ai_condition
|
||||
AI_CONDITION_HP_25_OR_STATUS = 0x600, // Target has HP <= 25% or a negative status condition
|
||||
};
|
||||
|
||||
#define MOVE_RANGE_STRING_USER 19
|
||||
|
||||
// Data for a single move
|
||||
struct move_data
|
||||
{
|
||||
u16 base_power; // 0x0
|
||||
u8 type; // 0x2
|
||||
u8 category; // 0x3
|
||||
u16 target_range; // 0x4
|
||||
u16 ai_target_range; // 0x6: Target/range as seen by the AI
|
||||
u16 target_range[2]; // 0x4
|
||||
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.
|
||||
|
||||
10
include/moves_2.h
Normal file
10
include/moves_2.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_MOVES_2_H
|
||||
#define PMDSKY_MOVES_2_H
|
||||
|
||||
#include "move.h"
|
||||
#include "util.h"
|
||||
|
||||
// Gets the move target-and-range field.
|
||||
s16 GetMoveTargetAndRange(struct move *move, bool8 is_ai);
|
||||
|
||||
#endif //PMDSKY_MOVES_2_H
|
||||
9
include/overlay_29_022FAC98.h
Normal file
9
include/overlay_29_022FAC98.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_022FAC98_H
|
||||
#define PMDSKY_OVERLAY_29_022FAC98_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
// Checks if a monster is a team member under the effects of a certain exclusive item effect.
|
||||
bool8 ExclusiveItemEffectIsActive__022FAC98(struct entity *entity, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_022FAC98_H
|
||||
10
include/overlay_29_022FFF28.h
Normal file
10
include/overlay_29_022FFF28.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_022FFF28_H
|
||||
#define PMDSKY_OVERLAY_29_022FFF28_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
// Checks if a monster is a team member under the effects of a certain exclusive item effect.
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__022FFF28(struct entity *entity, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_022FFF28_H
|
||||
@@ -5,5 +5,7 @@
|
||||
|
||||
// Checks if an entity is a monster (entity type 1).
|
||||
bool8 IsMonster__0230A994(struct entity *entity);
|
||||
// Checks if a monster is a team member under the effects of a certain exclusive item effect.
|
||||
bool8 ExclusiveItemEffectIsActive__0230A9B8(struct entity *entity, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_0230A994_H
|
||||
|
||||
9
include/overlay_29_0230F8AC.h
Normal file
9
include/overlay_29_0230F8AC.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_0230F8AC_H
|
||||
#define PMDSKY_OVERLAY_29_0230F8AC_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
// Checks if a monster is a team member under the effects of a certain exclusive item effect.
|
||||
bool8 ExclusiveItemEffectIsActive__0230F8AC(struct entity *entity, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_0230F8AC_H
|
||||
@@ -7,5 +7,7 @@
|
||||
bool8 EntityIsValid__02311010(struct entity *entity);
|
||||
// Checks if a monster is holding a certain item that isn't disabled by Klutz.
|
||||
bool8 ItemIsActive__02311034(struct entity *entity, enum item_id item_id);
|
||||
// Checks if a monster is a team member under the effects of a certain exclusive item effect.
|
||||
bool8 ExclusiveItemEffectIsActive__02311064(struct entity *entity, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_02311010_H
|
||||
|
||||
9
include/overlay_29_023147EC.h
Normal file
9
include/overlay_29_023147EC.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_023147EC_H
|
||||
#define PMDSKY_OVERLAY_29_023147EC_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
// Checks if a monster is a team member under the effects of a certain exclusive item effect.
|
||||
bool8 ExclusiveItemEffectIsActive__023147EC(struct entity *entity, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_023147EC_H
|
||||
9
include/overlay_29_023197A8.h
Normal file
9
include/overlay_29_023197A8.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_023197A8_H
|
||||
#define PMDSKY_OVERLAY_29_023197A8_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
// Checks if a monster is a team member under the effects of a certain exclusive item effect.
|
||||
bool8 ExclusiveItemEffectIsActive__023197A8(struct entity *entity, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_023197A8_H
|
||||
9
include/overlay_29_0231A87C.h
Normal file
9
include/overlay_29_0231A87C.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_0231A87C_H
|
||||
#define PMDSKY_OVERLAY_29_0231A87C_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
// Checks if a monster is a team member under the effects of a certain exclusive item effect.
|
||||
bool8 ExclusiveItemEffectIsActive__0231A87C(struct entity *entity, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_0231A87C_H
|
||||
13
include/overlay_29_0231ACAC.h
Normal file
13
include/overlay_29_0231ACAC.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_0231ACAC_H
|
||||
#define PMDSKY_OVERLAY_29_0231ACAC_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
// Gets the move target-and-range field when used by a given entity.
|
||||
// entity: entity pointer
|
||||
// move: move pointer
|
||||
// is_ai: AI flag (same as GetMoveTargetAndRange)
|
||||
// return: move target and range
|
||||
u32 GetEntityMoveTargetAndRange(struct entity *entity, struct move *move, bool8 is_ai);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_0231ACAC_H
|
||||
9
include/overlay_29_02323918.h
Normal file
9
include/overlay_29_02323918.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_02323918_H
|
||||
#define PMDSKY_OVERLAY_29_02323918_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
// Checks if a monster is a team member under the effects of a certain exclusive item effect.
|
||||
bool8 ExclusiveItemEffectIsActive__02323918(struct entity *entity, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_02323918_H
|
||||
9
include/overlay_29_023329E8.h
Normal file
9
include/overlay_29_023329E8.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_023329E8_H
|
||||
#define PMDSKY_OVERLAY_29_023329E8_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
// Checks if a monster is a team member under the effects of a certain exclusive item effect.
|
||||
bool8 ExclusiveItemEffectIsActive__023329E8(struct entity *entity, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_023329E8_H
|
||||
@@ -5,5 +5,7 @@
|
||||
|
||||
// Checks if a monster is holding a certain item that isn't disabled by Klutz.
|
||||
bool8 ItemIsActive__02347B50(struct entity *entity, enum item_id item_id);
|
||||
// Checks if a monster is a team member under the effects of a certain exclusive item effect.
|
||||
bool8 ExclusiveItemEffectIsActive__02347B80(struct entity *entity, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_02347B50_H
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
typedef s32 fx32_8; // 32-bit signed fixed-point number with 8 fraction bits
|
||||
typedef u32 ufx32_8; // 32-bit unsigned fixed-point number with 8 fraction bits
|
||||
typedef u8 bool8;
|
||||
typedef u32 bool32;
|
||||
|
||||
// RGBA8 structure. Sometimes alpha is ignored and only used for padding
|
||||
struct rgba {
|
||||
|
||||
30
main.lsf
30
main.lsf
@@ -35,8 +35,12 @@ Static main
|
||||
Object asm/main_0200ED1C.o
|
||||
Object src/moves_1.o
|
||||
Object asm/main_020137E8.o
|
||||
Object src/moves_2.o
|
||||
Object asm/main_02013864.o
|
||||
Object src/moves.o
|
||||
Object asm/main_02013AD0.o
|
||||
Object src/main_02013C04.o
|
||||
Object asm/main_02013C30.o
|
||||
Object src/main_020251AC.o
|
||||
Object asm/main_020251F0.o
|
||||
Object src/main_02025788.o
|
||||
@@ -323,6 +327,8 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_022F9194.o
|
||||
Object src/overlay_29_022F9720.o
|
||||
Object asm/overlay_29_022F9744.o
|
||||
Object src/overlay_29_022FAC98.o
|
||||
Object asm/overlay_29_022FACBC.o
|
||||
Object src/overlay_29_022FB538.o
|
||||
Object asm/overlay_29_022FB5EC.o
|
||||
Object src/joined_at_checks.o
|
||||
@@ -339,6 +345,8 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_022FF6C4.o
|
||||
Object src/overlay_29_022FF898.o
|
||||
Object asm/overlay_29_022FF8C8.o
|
||||
Object src/overlay_29_022FFF28.o
|
||||
Object asm/overlay_29_022FFF4C.o
|
||||
Object src/overlay_29_023000E4.o
|
||||
Object asm/overlay_29_02300108.o
|
||||
Object src/dungeon_logic.o
|
||||
@@ -364,6 +372,8 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_02301A84.o
|
||||
Object src/dungeon_pokemon_attributes.o
|
||||
Object asm/overlay_29_02301D84.o
|
||||
Object src/dungeon_logic_3.o
|
||||
Object asm/overlay_29_02301E88.o
|
||||
Object src/dungeon_pokemon_attributes_1.o
|
||||
Object asm/overlay_29_02301FBC.o
|
||||
Object src/dungeon_logic_2.o
|
||||
@@ -387,7 +397,6 @@ Overlay OVY_29
|
||||
Object src/overlay_29_02308FBC.o
|
||||
Object asm/overlay_29_02308FE0.o
|
||||
Object src/overlay_29_0230A994.o
|
||||
Object asm/overlay_29_0230A9B8.o
|
||||
Object src/overlay_29_0230A9DC.o
|
||||
Object asm/overlay_29_0230AA0C.o
|
||||
Object src/overlay_29_0230E578.o
|
||||
@@ -399,14 +408,18 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_0230F02C.o
|
||||
Object src/overlay_29_0230F810.o
|
||||
Object asm/overlay_29_0230F840.o
|
||||
Object src/overlay_29_0230F8AC.o
|
||||
Object asm/overlay_29_0230F8D0.o
|
||||
Object src/overlay_29_0230F980.o
|
||||
Object asm/overlay_29_0230F9A4.o
|
||||
Object src/overlay_29_02311010.o
|
||||
Object asm/overlay_29_02311064.o
|
||||
Object asm/overlay_29_02311088.o
|
||||
Object src/overlay_29_023118B4.o
|
||||
Object asm/overlay_29_023118D8.o
|
||||
Object src/overlay_29_02311BF8.o
|
||||
Object asm/overlay_29_02311C28.o
|
||||
Object src/overlay_29_023147EC.o
|
||||
Object asm/overlay_29_02314810.o
|
||||
Object src/overlay_29_02315118.o
|
||||
Object asm/overlay_29_0231516C.o
|
||||
Object src/dungeon_statuses.o
|
||||
@@ -419,12 +432,20 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_02318D58.o
|
||||
Object src/overlay_29_02318E4C.o
|
||||
Object asm/overlay_29_02318E70.o
|
||||
Object src/overlay_29_023197A8.o
|
||||
Object asm/overlay_29_023197CC.o
|
||||
Object src/dungeon_ai_attack_2.o
|
||||
Object asm/overlay_29_02319880.o
|
||||
Object src/dungeon_ai_attack.o
|
||||
Object asm/overlay_29_02319FB0.o
|
||||
Object src/dungeon_ai_attack_1.o
|
||||
Object asm/overlay_29_0231A7A0.o
|
||||
Object src/overlay_29_0231A87C.o
|
||||
Object asm/overlay_29_0231A8A0.o
|
||||
Object src/overlay_29_0231A9D4.o
|
||||
Object asm/overlay_29_0231A9F8.o
|
||||
Object src/overlay_29_0231ACAC.o
|
||||
Object asm/overlay_29_0231AD38.o
|
||||
Object src/overlay_29_0231B194.o
|
||||
Object asm/overlay_29_0231B1B8.o
|
||||
Object src/overlay_29_0231B318.o
|
||||
@@ -449,6 +470,8 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_0232145C.o
|
||||
Object src/overlay_29_02322DB8.o
|
||||
Object asm/overlay_29_02322DDC.o
|
||||
Object src/overlay_29_02323918.o
|
||||
Object asm/overlay_29_0232393C.o
|
||||
Object src/dungeon_move.o
|
||||
Object asm/overlay_29_rodata_02352A6C.o
|
||||
Object asm/overlay_29_02324698.o
|
||||
@@ -464,6 +487,8 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_0232E2B8.o
|
||||
Object src/overlay_29_0232E840.o
|
||||
Object asm/overlay_29_0232E864.o
|
||||
Object src/overlay_29_023329E8.o
|
||||
Object asm/overlay_29_02332A0C.o
|
||||
Object src/overlay_29_02333FAC.o
|
||||
Object asm/overlay_29_02333FD0.o
|
||||
Object src/overlay_29_023350D8.o
|
||||
@@ -491,7 +516,6 @@ Overlay OVY_29
|
||||
Object src/dungeon_items.o
|
||||
Object asm/overlay_29_02346834.o
|
||||
Object src/overlay_29_02347B50.o
|
||||
Object asm/overlay_29_02347B80.o
|
||||
Object src/overlay_29_02347BA4.o
|
||||
Object asm/overlay_29_02347BC8.o
|
||||
Object src/overlay_29_0234987C.o
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "dungeon_ai_attack.h"
|
||||
#include "dg_random.h"
|
||||
#include "dungeon_ai_attack_1.h"
|
||||
#include "dungeon_ai_attack_2.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_pokemon_attributes_1.h"
|
||||
#include "dungeon_statuses.h"
|
||||
@@ -9,24 +10,23 @@
|
||||
#include "dungeon_visibility.h"
|
||||
#include "main_0208655C.h"
|
||||
#include "move_data.h"
|
||||
#include "moves_2.h"
|
||||
#include "overlay_29_0231ACAC.h"
|
||||
#include "position_util.h"
|
||||
|
||||
extern struct dungeon *DUNGEON_PTR[];
|
||||
extern bool8 CAN_ATTACK_IN_DIRECTION[NUM_DIRECTIONS];
|
||||
extern u8 POTENTIAL_ATTACK_TARGET_DIRECTIONS[NUM_DIRECTIONS];
|
||||
extern s32 POTENTIAL_ATTACK_TARGET_WEIGHTS[NUM_DIRECTIONS];
|
||||
extern struct entity *POTENTIAL_TARGETS[NUM_DIRECTIONS];
|
||||
extern bool8 AI_CAN_ATTACK_IN_DIRECTION[NUM_DIRECTIONS];
|
||||
extern u8 AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS[NUM_DIRECTIONS];
|
||||
extern s32 AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[NUM_DIRECTIONS];
|
||||
extern struct entity *AI_POTENTIAL_ATTACK_TARGETS[NUM_DIRECTIONS];
|
||||
|
||||
extern void ov29_0231985C();
|
||||
extern u16 GetEntityMoveTargetAndRange(struct entity *entity, struct move *move, bool8 is_ai);
|
||||
extern bool8 IsAffectedByTaunt(struct move *move);
|
||||
extern bool8 StatusCheckerCheck(struct entity *attacker, struct move *move);
|
||||
extern u16 GetMoveTargetAndRange(struct move *move, bool8 is_ai);
|
||||
extern bool8 CanAttackInDirection(struct entity *monster, s32 direction);
|
||||
extern s32 TryAddTargetToAiTargetList(s32 current_num_targets, s32 move_ai_range, struct entity *user, struct entity *target, struct move *move, bool8 check_all_conditions);
|
||||
extern bool8 IsAiTargetEligible(s32 move_ai_range, struct entity *user, struct entity *target, struct move *move, bool8 check_all_conditions);
|
||||
extern enum type_id GetMoveTypeForMonster(struct entity *entity, struct move *move);
|
||||
extern s32 WeightMove(struct entity *user, s32 targeting_flags, struct entity *target, enum type_id move_type);
|
||||
extern s32 WeightMoveWithIqSkills(struct entity *user, s32 move_ai_range, struct entity *target, enum type_id move_type);
|
||||
|
||||
// https://decomp.me/scratch/jVfou
|
||||
#ifdef NONMATCHING
|
||||
@@ -36,9 +36,9 @@ u32 AiConsiderMove(struct ai_possible_move *ai_possible_move, struct entity *mon
|
||||
s32 move_weight = 1;
|
||||
bool8 has_status_checker;
|
||||
s32 num_potential_targets = 0;
|
||||
ov29_0231985C();
|
||||
ResetAiCanAttackInDirection();
|
||||
|
||||
s32 targeting_flags = GetEntityMoveTargetAndRange(monster, move, TRUE);
|
||||
s32 move_target_and_range = GetEntityMoveTargetAndRange(monster, move, TRUE);
|
||||
has_status_checker = IqSkillIsEnabled(monster, IQ_STATUS_CHECKER);
|
||||
ai_possible_move->can_be_used = FALSE;
|
||||
if (pokemon_info->cringe_class_status.cringe == STATUS_CRINGE_TAUNTED && !IsAffectedByTaunt(move))
|
||||
@@ -47,7 +47,7 @@ u32 AiConsiderMove(struct ai_possible_move *ai_possible_move, struct entity *mon
|
||||
if (has_status_checker && !StatusCheckerCheck(monster, move))
|
||||
return move_weight;
|
||||
|
||||
if (GetMoveTargetAndRange(move, FALSE) == TARGET_USER + RANGE_USER + AI_CONDITION_HP_25)
|
||||
if (GetMoveTargetAndRange(move, FALSE) == TARGET_USER | RANGE_USER | AI_CONDITION_HP_25)
|
||||
{
|
||||
s32 max_hp = MIN(pokemon_info->max_hp_stat + pokemon_info->max_hp_boost, 999);
|
||||
if (pokemon_info->hp == max_hp)
|
||||
@@ -55,20 +55,20 @@ u32 AiConsiderMove(struct ai_possible_move *ai_possible_move, struct entity *mon
|
||||
}
|
||||
|
||||
s32 i;
|
||||
s32 range_targeting_flags = targeting_flags & 0xF0;
|
||||
if (range_targeting_flags == RANGE_FRONT ||
|
||||
range_targeting_flags == RANGE_FRONT_AND_SIDES ||
|
||||
range_targeting_flags == RANGE_NEARBY)
|
||||
s32 move_range = move_target_and_range & 0xF0;
|
||||
if (move_range == RANGE_FRONT ||
|
||||
move_range == RANGE_FRONT_AND_SIDES ||
|
||||
move_range == RANGE_NEARBY)
|
||||
{
|
||||
if (IsBlinded(monster, TRUE))
|
||||
{
|
||||
u8 direction = pokemon_info->action.direction;
|
||||
if (!CAN_ATTACK_IN_DIRECTION[direction])
|
||||
if (!AI_CAN_ATTACK_IN_DIRECTION[direction])
|
||||
{
|
||||
CAN_ATTACK_IN_DIRECTION[direction] = TRUE;
|
||||
POTENTIAL_ATTACK_TARGET_DIRECTIONS[num_potential_targets] = direction;
|
||||
POTENTIAL_ATTACK_TARGET_WEIGHTS[num_potential_targets] = 99;
|
||||
POTENTIAL_ATTACK_TARGET_WEIGHTS[NUM_DIRECTIONS] = 0;
|
||||
AI_CAN_ATTACK_IN_DIRECTION[direction] = TRUE;
|
||||
AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS[num_potential_targets] = direction;
|
||||
AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[num_potential_targets] = 99;
|
||||
AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[NUM_DIRECTIONS] = 0;
|
||||
num_potential_targets++;
|
||||
}
|
||||
}
|
||||
@@ -79,25 +79,25 @@ u32 AiConsiderMove(struct ai_possible_move *ai_possible_move, struct entity *mon
|
||||
struct entity *adjacent_monster = GetTile(monster->pos.x + DIRECTIONS_XY[i].x, monster->pos.y + DIRECTIONS_XY[i].y)->monster;
|
||||
if (adjacent_monster != NULL &&
|
||||
adjacent_monster->type == ENTITY_MONSTER &&
|
||||
(range_targeting_flags == RANGE_FRONT_AND_SIDES ||
|
||||
range_targeting_flags == RANGE_NEARBY ||
|
||||
(move_range == RANGE_FRONT_AND_SIDES ||
|
||||
move_range == RANGE_NEARBY ||
|
||||
CanAttackInDirection(monster, i)))
|
||||
{
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, targeting_flags, monster, adjacent_monster, move, has_status_checker);
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, move_target_and_range, monster, adjacent_monster, move, has_status_checker);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (range_targeting_flags == RANGE_ROOM)
|
||||
else if (move_range == RANGE_ROOM)
|
||||
{
|
||||
for (i = 0; i < DUNGEON_MAX_POKEMON; i++)
|
||||
{
|
||||
struct entity *target = DUNGEON_PTR[0]->active_monster_ptrs[i];
|
||||
if (EntityIsValid__02319F8C(target) && CanSeeTarget(monster, target))
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, targeting_flags, monster, target, move, has_status_checker);
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, move_target_and_range, monster, target, move, has_status_checker);
|
||||
}
|
||||
}
|
||||
else if (range_targeting_flags == RANGE_FRONT_2)
|
||||
else if (move_range == RANGE_FRONT_2)
|
||||
{
|
||||
for (i = 0; i < NUM_DIRECTIONS; i++)
|
||||
{
|
||||
@@ -107,27 +107,27 @@ u32 AiConsiderMove(struct ai_possible_move *ai_possible_move, struct entity *mon
|
||||
if (target_tile->monster != NULL && target_tile->monster->type == ENTITY_MONSTER)
|
||||
{
|
||||
s32 prev_num_potential_targets = num_potential_targets;
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, targeting_flags, monster, target_tile->monster, move, has_status_checker);
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, move_target_and_range, monster, target_tile->monster, move, has_status_checker);
|
||||
if (prev_num_potential_targets != num_potential_targets)
|
||||
continue;
|
||||
}
|
||||
|
||||
target_tile = GetTile(monster->pos.x + DIRECTIONS_XY[i].x * 2, monster->pos.y + DIRECTIONS_XY[i].y * 2);
|
||||
if (target_tile->monster != NULL && target_tile->monster->type == ENTITY_MONSTER)
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, targeting_flags, monster, target_tile->monster, move, has_status_checker);
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, move_target_and_range, monster, target_tile->monster, move, has_status_checker);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (range_targeting_flags == RANGE_FRONT_10 ||
|
||||
range_targeting_flags == RANGE_FRONT_WITH_CORNER_CUTTING ||
|
||||
range_targeting_flags == RANGE_FRONT_2_WITH_CORNER_CUTTING)
|
||||
else if (move_range == RANGE_FRONT_10 ||
|
||||
move_range == RANGE_FRONT_WITH_CORNER_CUTTING ||
|
||||
move_range == RANGE_FRONT_2_WITH_CORNER_CUTTING)
|
||||
{
|
||||
s32 max_range;
|
||||
if (range_targeting_flags == RANGE_FRONT_10)
|
||||
if (move_range == RANGE_FRONT_10)
|
||||
max_range = RANGED_ATTACK_RANGE;
|
||||
else
|
||||
max_range = 1;
|
||||
if (range_targeting_flags == RANGE_FRONT_2_WITH_CORNER_CUTTING)
|
||||
if (move_range == RANGE_FRONT_2_WITH_CORNER_CUTTING)
|
||||
max_range = 2;
|
||||
|
||||
for (s32 i = 0; i < DUNGEON_MAX_POKEMON; i++)
|
||||
@@ -137,7 +137,7 @@ u32 AiConsiderMove(struct ai_possible_move *ai_possible_move, struct entity *mon
|
||||
if (EntityIsValid__02319F8C(target) && monster != target)
|
||||
{
|
||||
direction = GetDirectionTowardsPosition(&monster->pos, &target->pos);
|
||||
if (!CAN_ATTACK_IN_DIRECTION[direction] && CanSeeTarget(monster, target))
|
||||
if (!AI_CAN_ATTACK_IN_DIRECTION[direction] && CanSeeTarget(monster, target))
|
||||
{
|
||||
s32 target_pos_x = target->pos.x;
|
||||
s32 monster_pos_x = monster->pos.x;
|
||||
@@ -183,13 +183,13 @@ u32 AiConsiderMove(struct ai_possible_move *ai_possible_move, struct entity *mon
|
||||
|
||||
if (is_target_in_line_range)
|
||||
{
|
||||
if (IsAiTargetEligible(targeting_flags, monster, target, move, has_status_checker) &&
|
||||
if (IsAiTargetEligible(move_target_and_range, monster, target, move, has_status_checker) &&
|
||||
IsTargetInRange(monster, target, direction, max_range))
|
||||
{
|
||||
CAN_ATTACK_IN_DIRECTION[direction] = TRUE;
|
||||
POTENTIAL_ATTACK_TARGET_DIRECTIONS[num_potential_targets] = direction;
|
||||
POTENTIAL_ATTACK_TARGET_WEIGHTS[num_potential_targets] = WeightMove(monster, targeting_flags, target, GetMoveTypeForMonster(monster, move));
|
||||
POTENTIAL_TARGETS[num_potential_targets] = target;
|
||||
AI_CAN_ATTACK_IN_DIRECTION[direction] = TRUE;
|
||||
AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS[num_potential_targets] = direction;
|
||||
AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[num_potential_targets] = WeightMoveWithIqSkills(monster, move_target_and_range, target, GetMoveTypeForMonster(monster, move));
|
||||
AI_POTENTIAL_ATTACK_TARGETS[num_potential_targets] = target;
|
||||
num_potential_targets++;
|
||||
}
|
||||
}
|
||||
@@ -197,17 +197,17 @@ u32 AiConsiderMove(struct ai_possible_move *ai_possible_move, struct entity *mon
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (range_targeting_flags == RANGE_FLOOR)
|
||||
else if (move_range == RANGE_FLOOR)
|
||||
{
|
||||
for (i = 0; i < DUNGEON_MAX_POKEMON; i++)
|
||||
{
|
||||
struct entity *target = DUNGEON_PTR[0]->active_monster_ptrs[i];
|
||||
if (EntityIsValid__02319F8C(target))
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, targeting_flags, monster, target, move, has_status_checker);
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, move_target_and_range, monster, target, move, has_status_checker);
|
||||
}
|
||||
}
|
||||
else if (range_targeting_flags == RANGE_USER)
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, targeting_flags, monster, monster, move, has_status_checker);
|
||||
else if (move_range == RANGE_USER)
|
||||
num_potential_targets = TryAddTargetToAiTargetList(num_potential_targets, move_target_and_range, monster, monster, move, has_status_checker);
|
||||
|
||||
if (num_potential_targets == 0)
|
||||
ai_possible_move->can_be_used = FALSE;
|
||||
@@ -217,32 +217,32 @@ u32 AiConsiderMove(struct ai_possible_move *ai_possible_move, struct entity *mon
|
||||
s32 max_weight = 0;
|
||||
for (i = 0; i < num_potential_targets; i++)
|
||||
{
|
||||
if (max_weight < POTENTIAL_ATTACK_TARGET_WEIGHTS[i])
|
||||
max_weight = POTENTIAL_ATTACK_TARGET_WEIGHTS[i];
|
||||
if (max_weight < AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[i])
|
||||
max_weight = AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[i];
|
||||
}
|
||||
|
||||
for (i = 0; i < num_potential_targets; i++)
|
||||
{
|
||||
if (max_weight != POTENTIAL_ATTACK_TARGET_WEIGHTS[i])
|
||||
POTENTIAL_ATTACK_TARGET_WEIGHTS[i] = 0;
|
||||
if (max_weight != AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[i])
|
||||
AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[i] = 0;
|
||||
}
|
||||
|
||||
move_weight = max_weight;
|
||||
for (i = 0; i < num_potential_targets; i++)
|
||||
{
|
||||
total_weight += POTENTIAL_ATTACK_TARGET_WEIGHTS[i];
|
||||
total_weight += AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[i];
|
||||
}
|
||||
|
||||
s32 weight_counter = DungeonRandInt(total_weight);
|
||||
for (i = 0; i < num_potential_targets; i++)
|
||||
{
|
||||
weight_counter -= POTENTIAL_ATTACK_TARGET_WEIGHTS[i];
|
||||
weight_counter -= AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[i];
|
||||
if (weight_counter < 0)
|
||||
break;
|
||||
}
|
||||
|
||||
ai_possible_move->can_be_used = TRUE;
|
||||
ai_possible_move->direction = POTENTIAL_ATTACK_TARGET_DIRECTIONS[i];
|
||||
ai_possible_move->direction = AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS[i];
|
||||
ai_possible_move->weight = 8;
|
||||
}
|
||||
|
||||
|
||||
13
src/dungeon_ai_attack_2.c
Normal file
13
src/dungeon_ai_attack_2.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "dungeon_ai_attack_2.h"
|
||||
#include "direction.h"
|
||||
#include "util.h"
|
||||
|
||||
extern bool8 AI_CAN_ATTACK_IN_DIRECTION[NUM_DIRECTIONS];
|
||||
|
||||
void ResetAiCanAttackInDirection()
|
||||
{
|
||||
for (s32 i = 0; i < NUM_DIRECTIONS; i++)
|
||||
{
|
||||
AI_CAN_ATTACK_IN_DIRECTION[i] = FALSE;
|
||||
}
|
||||
}
|
||||
17
src/dungeon_logic_3.c
Normal file
17
src/dungeon_logic_3.c
Normal file
@@ -0,0 +1,17 @@
|
||||
#include "dungeon_logic_3.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
bool8 MonsterIsType(struct entity *entity, enum type_id type_id)
|
||||
{
|
||||
struct monster *pokemon_info = pokemon_info = GetEntInfo(entity);
|
||||
if (type_id == TYPE_NONE)
|
||||
return FALSE;
|
||||
|
||||
if (pokemon_info->types[0] == type_id)
|
||||
return TRUE;
|
||||
|
||||
if (pokemon_info->types[1] == type_id)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
9
src/main_02013C04.c
Normal file
9
src/main_02013C04.c
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "main_02013C04.h"
|
||||
#include "move_data.h"
|
||||
|
||||
extern struct move_data_table_outer DUNGEON_MOVE_TABLES;
|
||||
|
||||
bool32 IsMoveRangeStringUser(struct move *move)
|
||||
{
|
||||
return DUNGEON_MOVE_TABLES.moves->moves[move->id].range_string_idx == MOVE_RANGE_STRING_USER;
|
||||
}
|
||||
9
src/moves_2.c
Normal file
9
src/moves_2.c
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "moves_2.h"
|
||||
#include "move_data.h"
|
||||
|
||||
extern struct move_data_table_outer DUNGEON_MOVE_TABLES;
|
||||
|
||||
s16 GetMoveTargetAndRange(struct move *move, bool8 is_ai)
|
||||
{
|
||||
return DUNGEON_MOVE_TABLES.moves->moves[move->id].target_range[is_ai];
|
||||
}
|
||||
13
src/overlay_29_022FAC98.c
Normal file
13
src/overlay_29_022FAC98.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_022FAC98.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ExclusiveItemEffectFlagTest(u32 *effect_flags, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__022FAC98(struct entity *entity, enum exclusive_item_effect_id effect_id)
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (!monster->is_not_team_member)
|
||||
return ExclusiveItemEffectFlagTest(monster->exclusive_item_effect_flags, effect_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
13
src/overlay_29_022FFF28.c
Normal file
13
src/overlay_29_022FFF28.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_022FFF28.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ExclusiveItemEffectFlagTest(u32 *effect_flags, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__022FFF28(struct entity *entity, enum exclusive_item_effect_id effect_id)
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (!monster->is_not_team_member)
|
||||
return ExclusiveItemEffectFlagTest(monster->exclusive_item_effect_flags, effect_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1,4 +1,7 @@
|
||||
#include "overlay_29_0230A994.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ExclusiveItemEffectFlagTest(u32 *effect_flags, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
bool8 IsMonster__0230A994(struct entity *entity)
|
||||
{
|
||||
@@ -7,3 +10,12 @@ bool8 IsMonster__0230A994(struct entity *entity)
|
||||
|
||||
return entity->type == ENTITY_MONSTER;
|
||||
}
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__0230A9B8(struct entity *entity, enum exclusive_item_effect_id effect_id)
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (!monster->is_not_team_member)
|
||||
return ExclusiveItemEffectFlagTest(monster->exclusive_item_effect_flags, effect_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
13
src/overlay_29_0230F8AC.c
Normal file
13
src/overlay_29_0230F8AC.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_0230F8AC.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ExclusiveItemEffectFlagTest(u32 *effect_flags, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__0230F8AC(struct entity *entity, enum exclusive_item_effect_id effect_id)
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (!monster->is_not_team_member)
|
||||
return ExclusiveItemEffectFlagTest(monster->exclusive_item_effect_flags, effect_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
#include "overlay_29_02311010.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ExclusiveItemEffectFlagTest(u32 *effect_flags, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
bool8 EntityIsValid__02311010(struct entity *entity)
|
||||
{
|
||||
@@ -17,3 +20,12 @@ bool8 ItemIsActive__02311034(struct entity *entity, enum item_id item_id)
|
||||
|
||||
return HasHeldItem(entity, item_id);
|
||||
}
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__02311064(struct entity *entity, enum exclusive_item_effect_id effect_id)
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (!monster->is_not_team_member)
|
||||
return ExclusiveItemEffectFlagTest(monster->exclusive_item_effect_flags, effect_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
13
src/overlay_29_023147EC.c
Normal file
13
src/overlay_29_023147EC.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_023147EC.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ExclusiveItemEffectFlagTest(u32 *effect_flags, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__023147EC(struct entity *entity, enum exclusive_item_effect_id effect_id)
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (!monster->is_not_team_member)
|
||||
return ExclusiveItemEffectFlagTest(monster->exclusive_item_effect_flags, effect_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
13
src/overlay_29_023197A8.c
Normal file
13
src/overlay_29_023197A8.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_023197A8.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ExclusiveItemEffectFlagTest(u32 *effect_flags, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__023197A8(struct entity *entity, enum exclusive_item_effect_id effect_id)
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (!monster->is_not_team_member)
|
||||
return ExclusiveItemEffectFlagTest(monster->exclusive_item_effect_flags, effect_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
13
src/overlay_29_0231A87C.c
Normal file
13
src/overlay_29_0231A87C.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_0231A87C.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ExclusiveItemEffectFlagTest(u32 *effect_flags, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__0231A87C(struct entity *entity, enum exclusive_item_effect_id effect_id)
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (!monster->is_not_team_member)
|
||||
return ExclusiveItemEffectFlagTest(monster->exclusive_item_effect_flags, effect_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
25
src/overlay_29_0231ACAC.c
Normal file
25
src/overlay_29_0231ACAC.c
Normal file
@@ -0,0 +1,25 @@
|
||||
#include "overlay_29_0231ACAC.h"
|
||||
#include "dungeon_logic_3.h"
|
||||
#include "item.h"
|
||||
#include "main_02013C04.h"
|
||||
#include "move_data.h"
|
||||
#include "moves_2.h"
|
||||
#include "overlay_29_0231A87C.h"
|
||||
|
||||
u32 GetEntityMoveTargetAndRange(struct entity *entity, struct move *move, bool8 is_ai)
|
||||
{
|
||||
if (move->id == MOVE_CURSE && !is_ai && !MonsterIsType(entity, TYPE_GHOST))
|
||||
return TARGET_USER | RANGE_USER;
|
||||
|
||||
s16 move_target_and_range = GetMoveTargetAndRange(move, is_ai);
|
||||
|
||||
if (IsMoveRangeStringUser(move) && ExclusiveItemEffectIsActive__0231A87C(entity, EXCLUSIVE_EFF_EXTEND_SELF_EFFECTS_TO_TEAM))
|
||||
{
|
||||
if (move_target_and_range == (TARGET_USER | RANGE_USER | AI_CONDITION_HP_25))
|
||||
move_target_and_range = TARGET_PARTY | RANGE_FLOOR | AI_CONDITION_HP_25;
|
||||
else if (move_target_and_range == (TARGET_USER | RANGE_USER))
|
||||
move_target_and_range = TARGET_PARTY | RANGE_FLOOR;
|
||||
}
|
||||
|
||||
return move_target_and_range;
|
||||
}
|
||||
13
src/overlay_29_02323918.c
Normal file
13
src/overlay_29_02323918.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_02323918.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ExclusiveItemEffectFlagTest(u32 *effect_flags, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__02323918(struct entity *entity, enum exclusive_item_effect_id effect_id)
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (!monster->is_not_team_member)
|
||||
return ExclusiveItemEffectFlagTest(monster->exclusive_item_effect_flags, effect_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
13
src/overlay_29_023329E8.c
Normal file
13
src/overlay_29_023329E8.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_023329E8.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ExclusiveItemEffectFlagTest(u32 *effect_flags, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__023329E8(struct entity *entity, enum exclusive_item_effect_id effect_id)
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (!monster->is_not_team_member)
|
||||
return ExclusiveItemEffectFlagTest(monster->exclusive_item_effect_flags, effect_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
#include "overlay_29_02347B50.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ExclusiveItemEffectFlagTest(u32 *effect_flags, enum exclusive_item_effect_id effect_id);
|
||||
|
||||
bool8 ItemIsActive__02347B50(struct entity *entity, enum item_id item_id)
|
||||
{
|
||||
@@ -9,3 +12,12 @@ bool8 ItemIsActive__02347B50(struct entity *entity, enum item_id item_id)
|
||||
|
||||
return HasHeldItem(entity, item_id);
|
||||
}
|
||||
|
||||
bool8 ExclusiveItemEffectIsActive__02347B80(struct entity *entity, enum exclusive_item_effect_id effect_id)
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (!monster->is_not_team_member)
|
||||
return ExclusiveItemEffectFlagTest(monster->exclusive_item_effect_flags, effect_id);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -128,7 +128,8 @@ def sync_xmap_symbol(address: int, symbol: SymbolDetails, language: str, section
|
||||
for yaml_symbol in symbol_array:
|
||||
if yaml_symbol['name'] == base_old_symbol_name:
|
||||
if 'aliases' in yaml_symbol:
|
||||
yaml_symbol['aliases'].append(base_symbol_name)
|
||||
if base_symbol_name not in yaml_symbol['aliases']:
|
||||
yaml_symbol['aliases'].append(base_symbol_name)
|
||||
else:
|
||||
yaml_symbol['aliases'] = [base_symbol_name]
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user