mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
Merge pull request #242 from AnonymousRandomPerson/main
Some checks failed
build / build (push) Has been cancelled
Some checks failed
build / build (push) Has been cancelled
Synced from pmdsky-debug
This commit is contained in:
commit
8b0ed735ed
|
|
@ -1679,11 +1679,11 @@
|
|||
.public SoundLfoWave_InvalidFunc
|
||||
.public SoundLfoWave_ReverseSawFunc
|
||||
.public SoundLfoWave_SawFunc
|
||||
.public ST_I2N_E_BIN
|
||||
.public ST_I2N_F_BIN
|
||||
.public ST_I2N_G_BIN
|
||||
.public ST_I2N_I_BIN
|
||||
.public ST_I2N_S_BIN
|
||||
.public ST_I2N_E_BIN_FILE_NAME
|
||||
.public ST_I2N_F_BIN_FILE_NAME
|
||||
.public ST_I2N_G_BIN_FILE_NAME
|
||||
.public ST_I2N_I_BIN_FILE_NAME
|
||||
.public ST_I2N_S_BIN_FILE_NAME
|
||||
.public STRING_BALANCE_M_LEVEL_BIN
|
||||
.public STRING_DUNGEON_DUNGEON_BIN
|
||||
.public STRING_EFFECT_EFFECT_BIN
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
.public ov29_023009CC
|
||||
.public ov29_02304AFC
|
||||
.public ov29_0231AE3C
|
||||
.public ov29_0232145C
|
||||
.public UseMove
|
||||
.public ov29_02322374
|
||||
.public ov29_0233A248
|
||||
.public ov29_02344544
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
#pragma once
|
||||
.public _020A1870
|
||||
.public Conversion2IsActive
|
||||
.public DIRECTIONS_XY
|
||||
.public DisplayAnimatedNumbers
|
||||
.public DUNGEON_PTR
|
||||
.public DisplayAnimatedNumbers
|
||||
.public EntityIsValid__022F7364
|
||||
.public GetMaxPp
|
||||
.public GetMoveBasePp
|
||||
|
|
@ -11,9 +10,10 @@
|
|||
.public IqSkillIsEnabled
|
||||
.public IsMonster__022F9720
|
||||
.public IsSecretBazaarNpcBehavior
|
||||
.public ov29_022E576C
|
||||
.public ov29_02307CE0
|
||||
.public ov29_02348100
|
||||
.public TeamMemberHasEnabledIqSkill
|
||||
.public UpdateMapSurveyorFlag
|
||||
.public UpdateMinimap
|
||||
.public _020A1870
|
||||
.public ov29_022E576C
|
||||
.public ov29_02307CE0
|
||||
.public ov29_02348100
|
||||
|
|
|
|||
2
asm/include/overlay_29_022FBA70.inc
Normal file
2
asm/include/overlay_29_022FBA70.inc
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#pragma once
|
||||
.public IsMonster__022F9720
|
||||
|
|
@ -1,11 +1,9 @@
|
|||
#pragma once
|
||||
.public DUNGEON_PTR
|
||||
.public EntityIsValid__022F7364
|
||||
.public GetBodySize
|
||||
.public GetIdleAnimationId
|
||||
.public GetTileSafe
|
||||
.public InitAnimationControlWithSet__0201C0CC
|
||||
.public IsMonster__022F9720
|
||||
.public SetSpriteIdForAnimationControl
|
||||
.public ov29_022DDA54
|
||||
.public ov29_02304830
|
||||
.public SetSpriteIdForAnimationControl
|
||||
|
|
|
|||
5
asm/include/overlay_29_022FBC4C.inc
Normal file
5
asm/include/overlay_29_022FBC4C.inc
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
#pragma once
|
||||
.public DUNGEON_PTR
|
||||
.public EntityIsValid__022F7364
|
||||
.public GetBodySize
|
||||
.public IsMonster__022F9720
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
.public IsMonster__0231A9D4
|
||||
.public LogMessageByIdWithPopupCheckUser
|
||||
.public ov29_022FA574
|
||||
.public ov29_0232145C
|
||||
.public UseMove
|
||||
.public ShouldUsePp
|
||||
.public TryActivateTruant
|
||||
.public UpdateMovePp
|
||||
|
|
|
|||
|
|
@ -3,13 +3,9 @@
|
|||
.public DUNGEON_PTR
|
||||
.public EntityIsValid__0231B194
|
||||
.public GetTreasureBoxChances
|
||||
.public IsMonster__0231A9D4
|
||||
.public LogMessageByIdWithPopupCheckParticipants
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public ov29_022E4110
|
||||
.public ov29_022FB9E0
|
||||
.public ov29_0232145C
|
||||
.public ov29_0232E80C
|
||||
.public PrepareItemForPrinting__02345728
|
||||
.public SetActionUseMoveAi
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public ov29_022E4110
|
||||
.public ov29_0232E80C
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
.public ov29_022F8830
|
||||
.public ov29_022F9C34
|
||||
.public ov29_022FA02C
|
||||
.public ov29_022FBA54
|
||||
.public DoesMonsterHaveMove
|
||||
.public ov29_023009A0
|
||||
.public ov29_023021F0
|
||||
.public ov29_02339FF4
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@
|
|||
.public ov29_022EBB98
|
||||
.public ov29_022FAFD4
|
||||
.public ov29_022FB920
|
||||
.public ov29_022FBA54
|
||||
.public DoesMonsterHaveMove
|
||||
.public ov29_023009A0
|
||||
.public ov29_023457C8
|
||||
.public ov29_0234B4CC
|
||||
|
|
|
|||
|
|
@ -1,16 +1,11 @@
|
|||
#pragma once
|
||||
.public AddMessageToAlertBox
|
||||
.public AdvanceFrame
|
||||
.public AllowPortraitDefault
|
||||
.public AnimationDelayOrSomething
|
||||
.public BAG_ITEMS_PTR_MIRROR
|
||||
.public CanSeeTarget
|
||||
.public ChangeDungeonMusic
|
||||
.public CloseAlertBox
|
||||
.public CreateAlertBox
|
||||
.public DUNGEON_PTR
|
||||
.public DisplayMessage
|
||||
.public DisplayMessage2
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRandInt
|
||||
.public EndNegativeStatusConditionWrapper
|
||||
.public EntityIsValid__0234987C
|
||||
|
|
@ -21,20 +16,17 @@
|
|||
.public GetItemToDeliver
|
||||
.public GetItemToRetrieve
|
||||
.public GetLeader
|
||||
.public GetMessageLogPreprocessorArgs
|
||||
.public GetMissionDestination
|
||||
.public GetMissionTargetEnemy
|
||||
.public GetMonsterGenderVeneer
|
||||
.public GetMonsterPreEvolution
|
||||
.public GetName
|
||||
.public GetRandomSpawnMonsterID
|
||||
.public GetSecondFormIfValid
|
||||
.public GetSize0x80Buffer
|
||||
.public GetSpecialTargetItem
|
||||
.public GetTargetMonsterNotFoundFlag
|
||||
.public HandleFaint
|
||||
.public InitPortraitParams
|
||||
.public InitPreprocessorArgs
|
||||
.public IsAlertBoxActive
|
||||
.public InitPortraitDungeon
|
||||
.public IsCastform
|
||||
.public IsCherrim
|
||||
.public IsCurrentMissionType
|
||||
|
|
@ -45,67 +37,40 @@
|
|||
.public IsExperienceLocked
|
||||
.public IsJirachiChallengeFloor
|
||||
.public ItemZInit
|
||||
.public MemAlloc
|
||||
.public MemFree
|
||||
.public MemZero
|
||||
.public MESSAGE_LOG_INFO
|
||||
.public LogMessageById
|
||||
.public MusicTableIdxToMusicId
|
||||
.public ov10_022BFD20
|
||||
.public ov29_022E0B60
|
||||
.public ov29_022E2CA0
|
||||
.public PositionIsOnStairs
|
||||
.public PrepareItemForPrinting__02345728
|
||||
.public RemoveEmptyItemsInBagWrapper
|
||||
.public RemoveGroundItem
|
||||
.public SetDungeonEscapeFields
|
||||
.public SetMessageLogPreprocessorArgsStringToName
|
||||
.public SetPortraitLayout
|
||||
.public SetPreprocessorArgsIdVal
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public YesNoMenu
|
||||
.public ov29_022E550C
|
||||
.public ov29_022E68F0
|
||||
.public ov29_022E8244
|
||||
.public ov29_022E9FC0
|
||||
.public ov29_022EA428
|
||||
.public ov29_022EAC8C
|
||||
.public ov29_022EACE4
|
||||
.public ov29_022EAEFC
|
||||
.public ov29_022EAF34
|
||||
.public ov29_022F2FE4
|
||||
.public ov29_022FA3D4
|
||||
.public ov29_022FBA54
|
||||
.public ov29_022FBBEC
|
||||
.public FindMonsterWithBehavior
|
||||
.public ov29_023009CC
|
||||
.public ov29_02300B04
|
||||
.public ov29_0231AF24
|
||||
.public ov29_0233A248
|
||||
.public ov29_02344B9C
|
||||
.public ov29_02348888
|
||||
.public ov29_02348A18
|
||||
.public ov29_023491B8
|
||||
.public ov29_023496B0
|
||||
.public TeleportFleeingOutlaw
|
||||
.public ov29_0234AEE8
|
||||
.public ov29_0234AF34
|
||||
.public ov29_0234D630
|
||||
.public ov29_0234D70C
|
||||
.public ov29_0234D838
|
||||
.public ov29_0234D8A0
|
||||
.public ov29_02353214
|
||||
.public ov29_023537C8
|
||||
.public ov29_0237C694
|
||||
.public PositionIsOnStairs
|
||||
.public PrepareItemForPrinting__02345728
|
||||
.public PreprocessString
|
||||
.public RemoveEmptyItemsInBagWrapper
|
||||
.public RemoveGroundItem
|
||||
.public SetDungeonEscapeFields
|
||||
.public SetPortraitLayout
|
||||
.public ShouldDisplayEntityWrapper
|
||||
.public ShouldMonsterHeadToStairs
|
||||
.public StringFromId
|
||||
.public strlen
|
||||
.public strncmp
|
||||
.public strncpy
|
||||
.public sub_02001808
|
||||
.public sub_02017C10
|
||||
.public sub_0202836C
|
||||
.public sub_02030214
|
||||
.public sub_02047FFC
|
||||
.public sub_0204804C
|
||||
.public sub_020480CC
|
||||
.public sub_02048134
|
||||
.public sub_02048150
|
||||
.public sub_02048240
|
||||
.public sub_0204833C
|
||||
.public sub_02048360
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public YesNoMenu
|
||||
|
|
|
|||
50
asm/include/overlay_29_0234AEE8.inc
Normal file
50
asm/include/overlay_29_0234AEE8.inc
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#pragma once
|
||||
.public AddMessageToAlertBox
|
||||
.public AdvanceFrame
|
||||
.public AllowPortraitDefault
|
||||
.public AnimationDelayOrSomething
|
||||
.public ChangeDungeonMusic
|
||||
.public CloseAlertBox
|
||||
.public CreateAlertBox
|
||||
.public DUNGEON_PTR
|
||||
.public GetName
|
||||
.public GetSize0x80Buffer
|
||||
.public HandleFaint
|
||||
.public InitPortraitParams
|
||||
.public InitPreprocessorArgs
|
||||
.public IsAlertBoxActive
|
||||
.public MESSAGE_LOG_INFO
|
||||
.public MemAlloc
|
||||
.public MemFree
|
||||
.public MemZero
|
||||
.public MusicTableIdxToMusicId
|
||||
.public PreprocessString
|
||||
.public ShouldDisplayEntityWrapper
|
||||
.public StringFromId
|
||||
.public ov10_022BFD20
|
||||
.public ov29_022E0B60
|
||||
.public ov29_022E2CA0
|
||||
.public ov29_022E68F0
|
||||
.public ov29_022E9FC0
|
||||
.public ov29_022EA428
|
||||
.public ov29_022EAEFC
|
||||
.public ov29_022EAF34
|
||||
.public ov29_022F2FE4
|
||||
.public ov29_0233A248
|
||||
.public ov29_02348A18
|
||||
.public ov29_02353214
|
||||
.public ov29_0237C694
|
||||
.public strlen
|
||||
.public strncmp
|
||||
.public strncpy
|
||||
.public sub_02001808
|
||||
.public sub_0202836C
|
||||
.public sub_02030214
|
||||
.public sub_02047FFC
|
||||
.public sub_0204804C
|
||||
.public sub_020480CC
|
||||
.public sub_02048134
|
||||
.public sub_02048150
|
||||
.public sub_02048240
|
||||
.public sub_0204833C
|
||||
.public sub_02048360
|
||||
|
|
@ -2886,24 +2886,24 @@ _02097FE4:
|
|||
.byte 0x25, 0x73, 0x5B, 0x43, 0x53, 0x3A, 0x31, 0x3A, 0x52, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52, 0x3A
|
||||
.byte 0x31, 0x5D, 0x00, 0x00
|
||||
#ifdef EUROPE
|
||||
.global ST_I2N_I_BIN
|
||||
ST_I2N_I_BIN:
|
||||
.global ST_I2N_I_BIN_FILE_NAME
|
||||
ST_I2N_I_BIN_FILE_NAME:
|
||||
.string "st_i2n_i.bin"
|
||||
.align 4
|
||||
.global ST_I2N_E_BIN
|
||||
ST_I2N_E_BIN:
|
||||
.global ST_I2N_E_BIN_FILE_NAME
|
||||
ST_I2N_E_BIN_FILE_NAME:
|
||||
.string "st_i2n_e.bin"
|
||||
.align 4
|
||||
.global ST_I2N_S_BIN
|
||||
ST_I2N_S_BIN:
|
||||
.global ST_I2N_S_BIN_FILE_NAME
|
||||
ST_I2N_S_BIN_FILE_NAME:
|
||||
.string "st_i2n_s.bin"
|
||||
.align 4
|
||||
.global ST_I2N_G_BIN
|
||||
ST_I2N_G_BIN:
|
||||
.global ST_I2N_G_BIN_FILE_NAME
|
||||
ST_I2N_G_BIN_FILE_NAME:
|
||||
.string "st_i2n_g.bin"
|
||||
.align 4
|
||||
.global ST_I2N_F_BIN
|
||||
ST_I2N_F_BIN:
|
||||
.global ST_I2N_F_BIN_FILE_NAME
|
||||
ST_I2N_F_BIN_FILE_NAME:
|
||||
.string "st_i2n_f.bin"
|
||||
.align 4
|
||||
#endif
|
||||
|
|
@ -2914,16 +2914,16 @@ BABY_EXCLUSIVE_ITEM_PAIRS:
|
|||
.byte 0xCF, 0x01, 0x0B, 0x01, 0xD0, 0x01, 0x46, 0x01, 0xD1, 0x01, 0x88, 0x01, 0xD2, 0x01, 0xE0, 0x01
|
||||
.byte 0xD3, 0x01, 0xE1, 0x01, 0xD4, 0x01, 0xE2, 0x01, 0xD5, 0x01, 0xE9, 0x01, 0xD6, 0x01, 0xF4, 0x01
|
||||
.byte 0xD7, 0x01, 0x13, 0x02
|
||||
.global ITEM_P_BIN
|
||||
ITEM_P_BIN:
|
||||
.global ITEM_P_BIN_FILE_PATH
|
||||
ITEM_P_BIN_FILE_PATH:
|
||||
.string "rom0:/BALANCE/item_p.bin"
|
||||
.align 4
|
||||
.global ITEM_S_P_BIN
|
||||
ITEM_S_P_BIN:
|
||||
.global ITEM_S_P_BIN_FILE_PATH
|
||||
ITEM_S_P_BIN_FILE_PATH:
|
||||
.string "rom0:/BALANCE/item_s_p.bin"
|
||||
.align 4
|
||||
.global ITEM_ST_I2N_BIN
|
||||
ITEM_ST_I2N_BIN:
|
||||
.global ITEM_ST_I2N_BIN_FORMAT
|
||||
ITEM_ST_I2N_BIN_FORMAT:
|
||||
#ifdef EUROPE
|
||||
.string "rom0:/BALANCE/%s"
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -11671,11 +11671,11 @@ ITEM_DATA_TABLE_PTRS:
|
|||
#ifdef EUROPE
|
||||
.global ITEM_LANG_FILE_ARRAY
|
||||
ITEM_LANG_FILE_ARRAY:
|
||||
.word ST_I2N_E_BIN
|
||||
.word ST_I2N_F_BIN
|
||||
.word ST_I2N_G_BIN
|
||||
.word ST_I2N_I_BIN
|
||||
.word ST_I2N_S_BIN
|
||||
.word ST_I2N_E_BIN_FILE_NAME
|
||||
.word ST_I2N_F_BIN_FILE_NAME
|
||||
.word ST_I2N_G_BIN_FILE_NAME
|
||||
.word ST_I2N_I_BIN_FILE_NAME
|
||||
.word ST_I2N_S_BIN_FILE_NAME
|
||||
#endif
|
||||
.global _020AF6D0
|
||||
_020AF6D0:
|
||||
|
|
|
|||
|
|
@ -529,7 +529,7 @@ _022F5F9C:
|
|||
ldrb r1, [r8, #0x54]
|
||||
mov r2, r4
|
||||
mov r3, r5
|
||||
bl ov29_0232145C
|
||||
bl UseMove
|
||||
bl IsFloorOver
|
||||
cmp r0, #0
|
||||
ldreqb r0, [r8, #0x23e + OV29_022F5F18_OFFSET]
|
||||
|
|
|
|||
|
|
@ -311,93 +311,3 @@ ov29_022FB9BC: ; 0x022FB9BC
|
|||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_022FB9BC
|
||||
|
||||
arm_func_start ov29_022FB9E0
|
||||
ov29_022FB9E0: ; 0x022FB9E0
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl IsMonster__022F9720
|
||||
cmp r0, #0
|
||||
beq _022FBA4C
|
||||
ldr r1, [r5, #0xb4]
|
||||
mov r0, #0
|
||||
#ifdef JAPAN
|
||||
add ip, r1, #0x120
|
||||
#else
|
||||
add ip, r1, #0x124
|
||||
#endif
|
||||
mov r2, r0
|
||||
mov r3, #1
|
||||
b _022FBA44
|
||||
_022FBA10:
|
||||
ldrb r1, [ip, r0, lsl #3]
|
||||
add lr, ip, r0, lsl #3
|
||||
tst r1, #1
|
||||
movne r1, r3
|
||||
moveq r1, r2
|
||||
tst r1, #0xff
|
||||
beq _022FBA38
|
||||
ldrh r1, [lr, #4]
|
||||
cmp r1, r4
|
||||
ldmeqia sp!, {r3, r4, r5, pc}
|
||||
_022FBA38:
|
||||
add r0, r0, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
_022FBA44:
|
||||
cmp r0, #4
|
||||
blt _022FBA10
|
||||
_022FBA4C:
|
||||
mvn r0, #0
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end ov29_022FB9E0
|
||||
|
||||
arm_func_start ov29_022FBA54
|
||||
ov29_022FBA54: ; 0x022FBA54
|
||||
stmdb sp!, {r3, lr}
|
||||
bl ov29_022FB9E0
|
||||
cmp r0, #0
|
||||
movge r0, #1
|
||||
movlt r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_022FBA54
|
||||
|
||||
arm_func_start IsSpecialStoryAllyOrClient
|
||||
IsSpecialStoryAllyOrClient: ; 0x022FBA70
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl IsMonster__022F9720
|
||||
cmp r0, #0
|
||||
beq _022FBAAC
|
||||
ldr r0, [r4, #0xb4]
|
||||
ldrb r0, [r0, #0x48]
|
||||
cmp r0, #0xfa
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r4, pc}
|
||||
cmp r0, #0xd9
|
||||
blo _022FBAAC
|
||||
cmp r0, #0xe4
|
||||
movlo r0, #1
|
||||
ldmloia sp!, {r4, pc}
|
||||
_022FBAAC:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end IsSpecialStoryAllyOrClient
|
||||
|
||||
arm_func_start ResetTriggerFlags
|
||||
ResetTriggerFlags: ; 0x022FBAB4
|
||||
ldr r2, [r0, #0xb4]
|
||||
cmp r2, #0
|
||||
addne r0, r2, #0x100
|
||||
movne r1, #0
|
||||
#ifdef JAPAN
|
||||
strneh r1, [r0, #0x8e]
|
||||
strne r1, [r2, #0x188]
|
||||
#else
|
||||
strneh r1, [r0, #0x92]
|
||||
strne r1, [r2, #0x18c]
|
||||
#endif
|
||||
bx lr
|
||||
arm_func_end ResetTriggerFlags
|
||||
|
|
|
|||
42
asm/overlay_29_022FBA70.s
Normal file
42
asm/overlay_29_022FBA70.s
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022FBA70.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start IsSpecialStoryAllyOrClient
|
||||
IsSpecialStoryAllyOrClient: ; 0x022FBA70
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl IsMonster__022F9720
|
||||
cmp r0, #0
|
||||
beq _022FBAAC
|
||||
ldr r0, [r4, #0xb4]
|
||||
ldrb r0, [r0, #0x48]
|
||||
cmp r0, #0xfa
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r4, pc}
|
||||
cmp r0, #0xd9
|
||||
blo _022FBAAC
|
||||
cmp r0, #0xe4
|
||||
movlo r0, #1
|
||||
ldmloia sp!, {r4, pc}
|
||||
_022FBAAC:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end IsSpecialStoryAllyOrClient
|
||||
|
||||
arm_func_start ResetTriggerFlags
|
||||
ResetTriggerFlags: ; 0x022FBAB4
|
||||
ldr r2, [r0, #0xb4]
|
||||
cmp r2, #0
|
||||
addne r0, r2, #0x100
|
||||
movne r1, #0
|
||||
#ifdef JAPAN
|
||||
strneh r1, [r0, #0x8e]
|
||||
strne r1, [r2, #0x188]
|
||||
#else
|
||||
strneh r1, [r0, #0x92]
|
||||
strne r1, [r2, #0x18c]
|
||||
#endif
|
||||
bx lr
|
||||
arm_func_end ResetTriggerFlags
|
||||
|
|
@ -81,186 +81,3 @@ _022FBBE4: .word DUNGEON_PTR
|
|||
_022FBBE8: .word 0x00019914
|
||||
#endif
|
||||
arm_func_end ov29_022FBB1C
|
||||
|
||||
arm_func_start ov29_022FBBEC
|
||||
ov29_022FBBEC: ; 0x022FBBEC
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r5, r0
|
||||
mov r4, #0
|
||||
ldr r6, _022FBC48 ; =DUNGEON_PTR
|
||||
b _022FBC38
|
||||
_022FBC00:
|
||||
ldr r0, [r6]
|
||||
add r0, r0, r4, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr r7, [r0, #0xad4]
|
||||
#else
|
||||
ldr r7, [r0, #0xb78]
|
||||
#endif
|
||||
mov r0, r7
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FBC34
|
||||
ldr r0, [r7, #0xb4]
|
||||
ldrb r0, [r0, #0xbc]
|
||||
cmp r5, r0
|
||||
moveq r0, r7
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_022FBC34:
|
||||
add r4, r4, #1
|
||||
_022FBC38:
|
||||
cmp r4, #0x14
|
||||
blt _022FBC00
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_022FBC48: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBBEC
|
||||
|
||||
arm_func_start ov29_022FBC4C
|
||||
ov29_022FBC4C: ; 0x022FBC4C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, #0
|
||||
ldr r4, _022FBC90 ; =DUNGEON_PTR
|
||||
b _022FBC80
|
||||
_022FBC5C:
|
||||
ldr r0, [r4]
|
||||
add r0, r0, r5, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr r0, [r0, #0xa84]
|
||||
#else
|
||||
ldr r0, [r0, #0xb28]
|
||||
#endif
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r3, r4, r5, pc}
|
||||
add r5, r5, #1
|
||||
_022FBC80:
|
||||
cmp r5, #4
|
||||
blt _022FBC5C
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_022FBC90: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBC4C
|
||||
|
||||
arm_func_start ov29_022FBC94
|
||||
ov29_022FBC94: ; 0x022FBC94
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
bl GetBodySize
|
||||
ldr r6, _022FBD04 ; =DUNGEON_PTR
|
||||
mov r4, r0
|
||||
mov r5, #0
|
||||
_022FBCA8:
|
||||
ldr r0, [r6]
|
||||
add r0, r0, r5, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr r0, [r0, #0xa84]
|
||||
#else
|
||||
ldr r0, [r0, #0xb28]
|
||||
#endif
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FBCE4
|
||||
ldr r0, [r6]
|
||||
add r0, r0, r5, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr r0, [r0, #0xa84]
|
||||
#else
|
||||
ldr r0, [r0, #0xb28]
|
||||
#endif
|
||||
ldr r0, [r0, #0xb4]
|
||||
ldrsh r0, [r0, #2]
|
||||
bl GetBodySize
|
||||
add r4, r4, r0
|
||||
_022FBCE4:
|
||||
add r5, r5, #1
|
||||
cmp r5, #4
|
||||
blt _022FBCA8
|
||||
cmp r4, #6
|
||||
movle r0, #1
|
||||
movgt r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_022FBD04: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBC94
|
||||
|
||||
#ifndef JAPAN
|
||||
arm_func_start ov29_022FBD08
|
||||
ov29_022FBD08: ; 0x022FBD08
|
||||
ldr r0, _022FBD20 ; =DUNGEON_PTR
|
||||
mov r1, #0
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x3000
|
||||
str r1, [r0, #0xe1c]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022FBD20: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBD08
|
||||
|
||||
arm_func_start ov29_022FBD24
|
||||
ov29_022FBD24: ; 0x022FBD24
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl IsMonster__022F9720
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
ldr r0, _022FBD7C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x1cc
|
||||
add r3, r0, #0x3c00
|
||||
ldr r2, [r3, #0x50]
|
||||
cmp r2, #0x14
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
ldr r1, [r4, #0xb4]
|
||||
mov r0, #1
|
||||
ldr r1, [r1, #0xb0]
|
||||
str r1, [r3, r2, lsl #2]
|
||||
ldr r1, [r3, #0x50]
|
||||
add r1, r1, #1
|
||||
str r1, [r3, #0x50]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022FBD7C: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBD24
|
||||
|
||||
arm_func_start ov29_022FBD80
|
||||
ov29_022FBD80: ; 0x022FBD80
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl IsMonster__022F9720
|
||||
cmp r0, #0
|
||||
beq _022FBDD4
|
||||
ldr r0, _022FBDDC ; =DUNGEON_PTR
|
||||
ldr r1, [r4, #0xb4]
|
||||
ldr r0, [r0]
|
||||
ldr r2, [r1, #0xb0]
|
||||
add r0, r0, #0x1cc
|
||||
add r1, r0, #0x3c00
|
||||
ldr ip, [r1, #0x50]
|
||||
mov r3, #0
|
||||
b _022FBDCC
|
||||
_022FBDB8:
|
||||
ldr r0, [r1, r3, lsl #2]
|
||||
cmp r2, r0
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r4, pc}
|
||||
add r3, r3, #1
|
||||
_022FBDCC:
|
||||
cmp r3, ip
|
||||
blt _022FBDB8
|
||||
_022FBDD4:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022FBDDC: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBD80
|
||||
#endif
|
||||
|
|
|
|||
151
asm/overlay_29_022FBC4C.s
Normal file
151
asm/overlay_29_022FBC4C.s
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022FBC4C.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_022FBC4C
|
||||
ov29_022FBC4C: ; 0x022FBC4C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, #0
|
||||
ldr r4, _022FBC90 ; =DUNGEON_PTR
|
||||
b _022FBC80
|
||||
_022FBC5C:
|
||||
ldr r0, [r4]
|
||||
add r0, r0, r5, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr r0, [r0, #0xa84]
|
||||
#else
|
||||
ldr r0, [r0, #0xb28]
|
||||
#endif
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r3, r4, r5, pc}
|
||||
add r5, r5, #1
|
||||
_022FBC80:
|
||||
cmp r5, #4
|
||||
blt _022FBC5C
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_022FBC90: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBC4C
|
||||
|
||||
arm_func_start ov29_022FBC94
|
||||
ov29_022FBC94: ; 0x022FBC94
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
bl GetBodySize
|
||||
ldr r6, _022FBD04 ; =DUNGEON_PTR
|
||||
mov r4, r0
|
||||
mov r5, #0
|
||||
_022FBCA8:
|
||||
ldr r0, [r6]
|
||||
add r0, r0, r5, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr r0, [r0, #0xa84]
|
||||
#else
|
||||
ldr r0, [r0, #0xb28]
|
||||
#endif
|
||||
bl EntityIsValid__022F7364
|
||||
cmp r0, #0
|
||||
beq _022FBCE4
|
||||
ldr r0, [r6]
|
||||
add r0, r0, r5, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr r0, [r0, #0xa84]
|
||||
#else
|
||||
ldr r0, [r0, #0xb28]
|
||||
#endif
|
||||
ldr r0, [r0, #0xb4]
|
||||
ldrsh r0, [r0, #2]
|
||||
bl GetBodySize
|
||||
add r4, r4, r0
|
||||
_022FBCE4:
|
||||
add r5, r5, #1
|
||||
cmp r5, #4
|
||||
blt _022FBCA8
|
||||
cmp r4, #6
|
||||
movle r0, #1
|
||||
movgt r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_022FBD04: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBC94
|
||||
|
||||
#ifndef JAPAN
|
||||
arm_func_start ov29_022FBD08
|
||||
ov29_022FBD08: ; 0x022FBD08
|
||||
ldr r0, _022FBD20 ; =DUNGEON_PTR
|
||||
mov r1, #0
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x3000
|
||||
str r1, [r0, #0xe1c]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022FBD20: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBD08
|
||||
|
||||
arm_func_start ov29_022FBD24
|
||||
ov29_022FBD24: ; 0x022FBD24
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl IsMonster__022F9720
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
ldr r0, _022FBD7C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x1cc
|
||||
add r3, r0, #0x3c00
|
||||
ldr r2, [r3, #0x50]
|
||||
cmp r2, #0x14
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
ldr r1, [r4, #0xb4]
|
||||
mov r0, #1
|
||||
ldr r1, [r1, #0xb0]
|
||||
str r1, [r3, r2, lsl #2]
|
||||
ldr r1, [r3, #0x50]
|
||||
add r1, r1, #1
|
||||
str r1, [r3, #0x50]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022FBD7C: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBD24
|
||||
|
||||
arm_func_start ov29_022FBD80
|
||||
ov29_022FBD80: ; 0x022FBD80
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl IsMonster__022F9720
|
||||
cmp r0, #0
|
||||
beq _022FBDD4
|
||||
ldr r0, _022FBDDC ; =DUNGEON_PTR
|
||||
ldr r1, [r4, #0xb4]
|
||||
ldr r0, [r0]
|
||||
ldr r2, [r1, #0xb0]
|
||||
add r0, r0, #0x1cc
|
||||
add r1, r0, #0x3c00
|
||||
ldr ip, [r1, #0x50]
|
||||
mov r3, #0
|
||||
b _022FBDCC
|
||||
_022FBDB8:
|
||||
ldr r0, [r1, r3, lsl #2]
|
||||
cmp r2, r0
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r4, pc}
|
||||
add r3, r3, #1
|
||||
_022FBDCC:
|
||||
cmp r3, ip
|
||||
blt _022FBDB8
|
||||
_022FBDD4:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022FBDDC: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBD80
|
||||
#endif
|
||||
|
|
@ -56,7 +56,7 @@ _0231A924:
|
|||
ldrb r1, [r8, #0x4e]
|
||||
mov r2, r4
|
||||
mov r3, r5
|
||||
bl ov29_0232145C
|
||||
bl UseMove
|
||||
mov r0, sb
|
||||
bl EntityIsValid__02319F8C
|
||||
cmp r0, #0
|
||||
|
|
|
|||
|
|
@ -1,55 +1,8 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0231AF24.inc"
|
||||
.include "overlay_29_0231AFB4.inc"
|
||||
|
||||
.text
|
||||
|
||||
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}
|
||||
|
|
@ -1235,7 +1235,7 @@ _0231DAF8:
|
|||
mov r6, r0
|
||||
mov r0, r7
|
||||
mov r1, r5
|
||||
bl ov29_022FBA54
|
||||
bl DoesMonsterHaveMove
|
||||
cmp r0, #0
|
||||
mov r0, r7
|
||||
movne r6, #0
|
||||
|
|
|
|||
|
|
@ -3,12 +3,12 @@
|
|||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_0232145C
|
||||
ov29_0232145C: ; 0x0232145C
|
||||
arm_func_start UseMove
|
||||
UseMove: ; 0x0232145C
|
||||
#ifdef JAPAN
|
||||
#define OV29_0232145C_OFFSET -4
|
||||
#define USE_MOVE_OFFSET -4
|
||||
#else
|
||||
#define OV29_0232145C_OFFSET 0
|
||||
#define USE_MOVE_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x34
|
||||
|
|
@ -24,7 +24,7 @@ ov29_0232145C: ; 0x0232145C
|
|||
bge _02321A40
|
||||
bl ResetTriggerFlags
|
||||
mov r0, #0
|
||||
strb r0, [r5, #0x163 + OV29_0232145C_OFFSET]
|
||||
strb r0, [r5, #0x163 + USE_MOVE_OFFSET]
|
||||
ldrb r1, [r5, #0xd0]
|
||||
cmp r1, #1
|
||||
bne _023214C4
|
||||
|
|
@ -69,7 +69,7 @@ _0232152C:
|
|||
add r1, r5, r0, lsl #1
|
||||
add r1, r1, #0x100
|
||||
add r0, r0, #1
|
||||
strh r2, [r1, #0x94 + OV29_0232145C_OFFSET]
|
||||
strh r2, [r1, #0x94 + USE_MOVE_OFFSET]
|
||||
cmp r0, #4
|
||||
blt _0232152C
|
||||
mov r1, r2
|
||||
|
|
@ -80,7 +80,7 @@ _0232154C:
|
|||
add r2, r2, #1
|
||||
bge _02321578
|
||||
add r0, r5, r4, lsl #3
|
||||
ldrb r0, [r0, #0x124 + OV29_0232145C_OFFSET]
|
||||
ldrb r0, [r0, #0x124 + USE_MOVE_OFFSET]
|
||||
tst r0, #2
|
||||
beq _02321578
|
||||
add r1, r1, #1
|
||||
|
|
@ -92,7 +92,7 @@ _02321578:
|
|||
movge r6, #1
|
||||
movlt r6, #0
|
||||
_02321584:
|
||||
add r1, r5, #0x124 + OV29_0232145C_OFFSET
|
||||
add r1, r5, #0x124 + USE_MOVE_OFFSET
|
||||
mov r0, sl
|
||||
add r4, r1, sb, lsl #3
|
||||
bl EntityIsValid__02321438
|
||||
|
|
@ -183,7 +183,7 @@ _023216AC:
|
|||
mov r0, #0
|
||||
str r0, [sp, #0x10]
|
||||
ldr r0, [r1, #0x18]
|
||||
strb fp, [r5, #0x163 + OV29_0232145C_OFFSET]
|
||||
strb fp, [r5, #0x163 + USE_MOVE_OFFSET]
|
||||
ldrh r1, [r4, #4]
|
||||
str r0, [sp, #0xc]
|
||||
cmp r1, #0xe5
|
||||
|
|
@ -306,7 +306,7 @@ _02321848:
|
|||
cmp sb, #4
|
||||
bge _02321888
|
||||
add r0, r5, sb, lsl #3
|
||||
ldrb r0, [r0, #0x124 + OV29_0232145C_OFFSET]
|
||||
ldrb r0, [r0, #0x124 + USE_MOVE_OFFSET]
|
||||
tst r0, #2
|
||||
bne _02321584
|
||||
_02321888:
|
||||
|
|
@ -318,10 +318,10 @@ _02321888:
|
|||
_0232189C:
|
||||
add r0, r5, sb, lsl #1
|
||||
add r0, r0, #0x100
|
||||
ldrh r1, [r0, #0x94 + OV29_0232145C_OFFSET]
|
||||
ldrh r1, [r0, #0x94 + USE_MOVE_OFFSET]
|
||||
cmp r1, #0
|
||||
beq _02321994
|
||||
ldrh r1, [r0, #0x94 + OV29_0232145C_OFFSET]
|
||||
ldrh r1, [r0, #0x94 + USE_MOVE_OFFSET]
|
||||
add r4, sp, #0x24
|
||||
mov r0, r4
|
||||
bl InitMoveCheckId
|
||||
|
|
@ -445,13 +445,13 @@ _02321A40:
|
|||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
#define OV29_0232145C_DATA_OFFSET -0x2BE
|
||||
#define UseMove_DATA_OFFSET -0x2BE
|
||||
#else
|
||||
#define OV29_0232145C_DATA_OFFSET 0
|
||||
#define UseMove_DATA_OFFSET 0
|
||||
#endif
|
||||
_02321A48: .word 0x00000E7C + OV29_0232145C_DATA_OFFSET
|
||||
_02321A4C: .word 0x00000E7D + OV29_0232145C_DATA_OFFSET
|
||||
_02321A50: .word 0x00000E78 + OV29_0232145C_DATA_OFFSET
|
||||
_02321A48: .word 0x00000E7C + UseMove_DATA_OFFSET
|
||||
_02321A4C: .word 0x00000E7D + UseMove_DATA_OFFSET
|
||||
_02321A50: .word 0x00000E78 + UseMove_DATA_OFFSET
|
||||
_02321A54: .word ov29_0237CA68
|
||||
#ifdef JAPAN
|
||||
_02321A5C: .word 0x00000BC1
|
||||
|
|
@ -460,13 +460,13 @@ _02322F08: .word 0x00000BC2
|
|||
_02321A58: .word 0x00000E7E
|
||||
_02321A5C: .word 0x00000E7F
|
||||
#endif
|
||||
_02321A60: .word 0x00000E81 + OV29_0232145C_DATA_OFFSET
|
||||
_02321A64: .word 0x00000E79 + OV29_0232145C_DATA_OFFSET
|
||||
_02321A60: .word 0x00000E81 + UseMove_DATA_OFFSET
|
||||
_02321A64: .word 0x00000E79 + UseMove_DATA_OFFSET
|
||||
_02321A68: .word 0x000001D1
|
||||
_02321A6C: .word 0x00000E76 + OV29_0232145C_DATA_OFFSET
|
||||
_02321A70: .word 0x00000E77 + OV29_0232145C_DATA_OFFSET
|
||||
_02321A6C: .word 0x00000E76 + UseMove_DATA_OFFSET
|
||||
_02321A70: .word 0x00000E77 + UseMove_DATA_OFFSET
|
||||
_02321A74: .word ov10_022C4714
|
||||
arm_func_end ov29_0232145C
|
||||
arm_func_end UseMove
|
||||
|
||||
arm_func_start TryActivateNondamagingDefenderAbility
|
||||
TryActivateNondamagingDefenderAbility: ; 0x02321A78
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ _0234694C:
|
|||
movne sb, r6
|
||||
mov r0, sl
|
||||
mov r1, r8
|
||||
bl ov29_022FBA54
|
||||
bl DoesMonsterHaveMove
|
||||
cmp r0, #0
|
||||
movne sb, r5
|
||||
mov r0, sl
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
1114
asm/overlay_29_0234AEE8.s
Normal file
1114
asm/overlay_29_0234AEE8.s
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -4,7 +4,7 @@
|
|||
#include "dungeon_mode.h"
|
||||
|
||||
// True if the given monster is cornered (it can't move in any direction)
|
||||
bool8 IsMonsterCornered(struct entity *monster);
|
||||
bool8 CanMonsterMoveOrSwapWithAllyInAnyDirection(struct entity *monster);
|
||||
// Checks if the given monster can move in the specified direction. Includes if an allied or neutral monster is standing on an adjacent tile, as the monsters can swap places.
|
||||
// Returns false if an enemy monster is standing on the target tile
|
||||
bool8 CanMonsterMoveOrSwapWithAllyInDirection(struct entity *monster, s32 direction);
|
||||
|
|
|
|||
9
include/overlay_29_022FBA54.h
Normal file
9
include/overlay_29_022FBA54.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef PMDSKY_OVERLAY_29_022FBA54_H
|
||||
#define PMDSKY_OVERLAY_29_022FBA54_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
s16 FindMoveOnMonster(struct entity* entity, enum move_id move_id);
|
||||
bool8 DoesMonsterHaveMove(struct entity* entity, enum move_id move_id);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_022FBA54_H
|
||||
8
include/overlay_29_022FBBEC.h
Normal file
8
include/overlay_29_022FBBEC.h
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#ifndef PMDSKY_OVERLAY_29_022FBBEC_H
|
||||
#define PMDSKY_OVERLAY_29_022FBBEC_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
struct entity* FindMonsterWithBehavior(enum monster_behavior monster_behavior);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_022FBBEC_H
|
||||
6
include/overlay_29_0234AEA4.h
Normal file
6
include/overlay_29_0234AEA4.h
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef PMDSKY_OVERLAY_29_0234AEA4_H
|
||||
#define PMDSKY_OVERLAY_29_0234AEA4_H
|
||||
|
||||
void TeleportFleeingOutlaw();
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_0234AEA4_H
|
||||
|
|
@ -7,5 +7,6 @@
|
|||
const struct natural_gift_item_info* GetEntityNaturalGiftInfo(struct entity* entity);
|
||||
// Gets the current Weather Ball type for the given entity, based on the apparent weather.
|
||||
enum type_id GetEntityWeatherBallType(struct entity* entity);
|
||||
void UseMoveByMoveId(struct entity *entity, enum move_id move_id, bool8 add_move_if_not_exists);
|
||||
|
||||
#endif //PMDSKY_SPECIAL_MOVE_TYPES_H
|
||||
|
|
|
|||
8
main.lsf
8
main.lsf
|
|
@ -453,8 +453,12 @@ Overlay OVY_29
|
|||
Object src/overlay_29_022FB538.o
|
||||
Object src/dungeon_logic_4.o
|
||||
Object asm/overlay_29_022FB678.o
|
||||
Object src/overlay_29_022FBA54.o
|
||||
Object asm/overlay_29_022FBA70.o
|
||||
Object src/joined_at_checks.o
|
||||
Object asm/overlay_29_022FBB1C.o
|
||||
Object src/overlay_29_022FBBEC.o
|
||||
Object asm/overlay_29_022FBC4C.o
|
||||
Object src/dungeon_logic_7.o
|
||||
Object asm/overlay_29_022FBE58.o
|
||||
Object src/overlay_29_022FC99C.o
|
||||
|
|
@ -570,7 +574,7 @@ Overlay OVY_29
|
|||
Object src/overlay_29_0231ACAC.o
|
||||
Object asm/overlay_29_0231AD38.o
|
||||
Object src/special_move_types.o
|
||||
Object asm/overlay_29_0231AF24.o
|
||||
Object asm/overlay_29_0231AFB4.o
|
||||
Object src/overlay_29_0231B194.o
|
||||
Object asm/overlay_29_0231B1B8.o
|
||||
Object src/overlay_29_0231B318.o
|
||||
|
|
@ -656,6 +660,8 @@ Overlay OVY_29
|
|||
Object asm/overlay_29_02348D3C.o
|
||||
Object src/overlay_29_0234987C.o
|
||||
Object asm/overlay_29_023498A0.o
|
||||
Object src/overlay_29_0234AEA4.o
|
||||
Object asm/overlay_29_0234AEE8.o
|
||||
Object src/overlay_29_0234BBE8.o
|
||||
Object asm/overlay_29_0234BEE0.o
|
||||
Object src/overlay_29_0234CA68.o
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ void ChooseAiMove(struct entity *monster)
|
|||
if (!AreMovesEnabled(DUNGEON_PTR[0]->gen_info.fixed_room_id) ||
|
||||
MonsterCannotAttack(monster, FALSE) ||
|
||||
ShouldMonsterRunAwayAndShowEffect(monster, TRUE) ||
|
||||
GetEntInfo(monster)->monster_behavior == BEHAVIOR_FLEEING_OUTLAW && IsMonsterCornered(monster) ||
|
||||
GetEntInfo(monster)->monster_behavior == BEHAVIOR_FLEEING_OUTLAW && CanMonsterMoveOrSwapWithAllyInAnyDirection(monster) ||
|
||||
IsTacticSet(monster, TACTIC_KEEP_YOUR_DISTANCE) ||
|
||||
(pokemon_info->cringe_class_status.cringe == STATUS_CRINGE_CONFUSED && DungeonRandOutcome__022EAB20(AI_CONFUSED_NO_ATTACK_CHANCE)))
|
||||
return;
|
||||
|
|
@ -327,7 +327,7 @@ asm void ChooseAiMove(struct entity *monster)
|
|||
cmp r0, #3
|
||||
bne _01FFB6CC
|
||||
mov r0, r10
|
||||
bl IsMonsterCornered
|
||||
bl CanMonsterMoveOrSwapWithAllyInAnyDirection
|
||||
cmp r0, #0
|
||||
bne _01FFBD0C
|
||||
_01FFB6CC:
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
#include "secondary_terrain_types.h"
|
||||
#include "targeting.h"
|
||||
|
||||
bool8 IsMonsterCornered(struct entity *monster)
|
||||
bool8 CanMonsterMoveOrSwapWithAllyInAnyDirection(struct entity *monster)
|
||||
{
|
||||
for (u8 i = 0; i < NUM_DIRECTIONS; i++)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@ extern const char ITEM_NAME_FORMAT_YELLOW;
|
|||
extern const char ITEM_NAME_FORMAT_INDIGO;
|
||||
extern const char ITEM_NAME_FORMAT_PLAIN;
|
||||
extern const char ITEM_NAME_FORMAT_CREAM;
|
||||
extern const char ITEM_P_BIN;
|
||||
extern const char ITEM_S_P_BIN;
|
||||
extern const char ITEM_ST_I2N_BIN;
|
||||
extern const char ITEM_P_BIN_FILE_PATH;
|
||||
extern const char ITEM_S_P_BIN_FILE_PATH;
|
||||
extern const char ITEM_ST_I2N_BIN_FORMAT;
|
||||
extern char* ITEM_LANG_FILE_ARRAY[];
|
||||
|
||||
extern void LoadFileFromRom(struct iovec* iov, const char* filepath, u32 flags);
|
||||
|
|
@ -36,18 +36,18 @@ static void SprintfStatic__0200E990(char*, const char*, ...);
|
|||
void LoadItemPspi2n(void) {
|
||||
struct iovec iov;
|
||||
|
||||
LoadFileFromRom(&iov, &ITEM_P_BIN, 1);
|
||||
LoadFileFromRom(&iov, &ITEM_P_BIN_FILE_PATH, 1);
|
||||
HandleSir0Translation(&ITEM_DATA_TABLE_PTRS.data, iov.iov_base);
|
||||
LoadFileFromRom(&iov, &ITEM_S_P_BIN, 1);
|
||||
LoadFileFromRom(&iov, &ITEM_S_P_BIN_FILE_PATH, 1);
|
||||
HandleSir0Translation(&ITEM_DATA_TABLE_PTRS.exclusive_data, iov.iov_base);
|
||||
if (PointsToZero(&ITEM_DATA_TABLE_PTRS.langFile) != 0) {
|
||||
ZInit8(&ITEM_DATA_TABLE_PTRS.langFile);
|
||||
#ifdef EUROPE
|
||||
char buf[256];
|
||||
SprintfStatic__0200E990(buf, &ITEM_ST_I2N_BIN, ITEM_LANG_FILE_ARRAY[GetLanguage()]);
|
||||
SprintfStatic__0200E990(buf, &ITEM_ST_I2N_BIN_FORMAT, ITEM_LANG_FILE_ARRAY[GetLanguage()]);
|
||||
LoadFileFromRom(&ITEM_DATA_TABLE_PTRS.langFile, buf, 1);
|
||||
#else
|
||||
LoadFileFromRom(&ITEM_DATA_TABLE_PTRS.langFile, &ITEM_ST_I2N_BIN, 1);
|
||||
LoadFileFromRom(&ITEM_DATA_TABLE_PTRS.langFile, &ITEM_ST_I2N_BIN_FORMAT, 1);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
|||
23
src/overlay_29_022FBA54.c
Normal file
23
src/overlay_29_022FBA54.c
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
#include "overlay_29_022FBA54.h"
|
||||
#include "dungeon_util_static.h"
|
||||
#include "overlay_29_022F9720.h"
|
||||
|
||||
s16 FindMoveOnMonster(struct entity* entity, enum move_id move_id)
|
||||
{
|
||||
if (IsMonster__022F9720(entity))
|
||||
{
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
for (s16 i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
struct move *move = &monster->moves.moves[i];
|
||||
if (MoveExists(move) && move->id == move_id)
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool8 DoesMonsterHaveMove(struct entity* entity, enum move_id move_id)
|
||||
{
|
||||
return FindMoveOnMonster(entity, move_id) >= 0;
|
||||
}
|
||||
15
src/overlay_29_022FBBEC.c
Normal file
15
src/overlay_29_022FBBEC.c
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include "overlay_29_022FBBEC.h"
|
||||
#include "dungeon.h"
|
||||
#include "dungeon_util_static.h"
|
||||
#include "overlay_29_022F7364.h"
|
||||
|
||||
struct entity* FindMonsterWithBehavior(enum monster_behavior monster_behavior)
|
||||
{
|
||||
for (s32 i = 0; i < DUNGEON_MAX_POKEMON; i++)
|
||||
{
|
||||
struct entity *entity = DUNGEON_PTR[0]->active_monster_ptrs[i];
|
||||
if (EntityIsValid__022F7364(entity) && monster_behavior == GetEntInfo(entity)->monster_behavior)
|
||||
return entity;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
12
src/overlay_29_0234AEA4.c
Normal file
12
src/overlay_29_0234AEA4.c
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#include "overlay_29_0234AEA4.h"
|
||||
#include "overlay_29_022FA430.h"
|
||||
#include "overlay_29_022FBA54.h"
|
||||
#include "overlay_29_022FBBEC.h"
|
||||
#include "special_move_types.h"
|
||||
|
||||
void TeleportFleeingOutlaw()
|
||||
{
|
||||
struct entity *entity = FindMonsterWithBehavior(BEHAVIOR_FLEEING_OUTLAW);
|
||||
if (!ShouldMonsterHeadToStairs(entity) && DoesMonsterHaveMove(entity, MOVE_TELEPORT))
|
||||
UseMoveByMoveId(entity, MOVE_TELEPORT, 0);
|
||||
}
|
||||
|
|
@ -1,10 +1,14 @@
|
|||
#include "special_move_types.h"
|
||||
#include "dungeon_action_helper.h"
|
||||
#include "dungeon_parameters_2.h"
|
||||
#include "dungeon_util_static.h"
|
||||
#include "natural_gift_data.h"
|
||||
#include "overlay_29_0231A9D4.h"
|
||||
#include "overlay_29_022FBA54.h"
|
||||
#include "weather.h"
|
||||
|
||||
extern void UseMove(struct entity*, s16, s32, s32, s32);
|
||||
|
||||
const struct natural_gift_item_info* GetEntityNaturalGiftInfo(struct entity* entity)
|
||||
{
|
||||
if (IsMonster__0231A9D4(entity)) {
|
||||
|
|
@ -38,3 +42,22 @@ enum type_id GetEntityWeatherBallType(struct entity* entity)
|
|||
{
|
||||
return WEATHER_BALL_TYPE_TABLE[GetApparentWeather(entity)];
|
||||
}
|
||||
|
||||
void UseMoveByMoveId(struct entity *entity, enum move_id move_id, bool8 add_move_if_not_exists)
|
||||
{
|
||||
if (!IsMonster__0231A9D4(entity))
|
||||
return;
|
||||
|
||||
s16 move_index = FindMoveOnMonster(entity, move_id);
|
||||
if (add_move_if_not_exists && move_index < 0) {
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
SetActionUseMoveAi(&monster->action, 0, DIR_DOWN);
|
||||
monster->moves.moves[0].flags0 = MOVE_FLAG_EXISTS;
|
||||
monster->moves.moves[0].flags2 = 0;
|
||||
monster->moves.moves[0].id = move_id;
|
||||
monster->moves.moves[0].pp = 1;
|
||||
monster->moves.moves[0].ginseng = 0;
|
||||
move_index = 0;
|
||||
}
|
||||
UseMove(entity, move_index, 1, 0, 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import yaml
|
|||
from typing import Dict, List
|
||||
|
||||
from containing_folder import CONTAINING_FOLDER
|
||||
from symbol_details import SymbolDetails
|
||||
from symbol_details import ALWAYS_APPEND_ADDRESS_SYMBOLS, IGNORE_DUPLICATE_SYMBOLS, SymbolDetails
|
||||
|
||||
SYMBOLS_FOLDER = 'symbols'
|
||||
pmdsky_debug_path = None
|
||||
|
|
@ -22,6 +22,9 @@ PMDSKY_DEBUG_SYMBOL_BLACKLIST = set([
|
|||
'MEMORY_ALLOCATION_TABLE'
|
||||
])
|
||||
|
||||
def format_symbol_with_address(symbol_name, address):
|
||||
return f'{symbol_name}__{address:08X}'
|
||||
|
||||
"""
|
||||
Returns the file path where pmdsky-debug is located locally, defined within pmdsky_debug_location.txt.
|
||||
"""
|
||||
|
|
@ -90,17 +93,22 @@ def read_pmdsky_debug_symbols() -> Dict[str, Dict[str, Dict[int, SymbolDetails]]
|
|||
aliases = []
|
||||
|
||||
def add_symbol_address(address: int, symbol_details: SymbolDetails):
|
||||
if address in symbols:
|
||||
if address in symbols and symbol_details.name not in IGNORE_DUPLICATE_SYMBOLS:
|
||||
print(f'Warning: Duplicate symbols found for address {hex(address)}: {symbols[address].name}, {symbol_details.name}')
|
||||
symbols[address] = symbol_details
|
||||
|
||||
# If the symbol has multiple addresses in pmdsky-debug, append the address to the symbol name to ensure
|
||||
# that each instance of the symbol has a unique name within the decomp.
|
||||
if isinstance(addresses, list):
|
||||
if len(addresses) > 1:
|
||||
for address in addresses:
|
||||
aliases = [f'{alias}__{address:08X}' for alias in aliases]
|
||||
add_symbol_address(address, SymbolDetails(f'{symbol_name}__{address:08X}', full_file_path, is_data, aliases))
|
||||
aliases = [format_symbol_with_address(alias, address) for alias in aliases]
|
||||
add_symbol_address(address, SymbolDetails(format_symbol_with_address(symbol_name, address), full_file_path, is_data, aliases))
|
||||
else:
|
||||
add_symbol_address(addresses[0], SymbolDetails(symbol_name, full_file_path, is_data, aliases))
|
||||
elif symbol_name in ALWAYS_APPEND_ADDRESS_SYMBOLS:
|
||||
aliases = [format_symbol_with_address(alias, address) for alias in aliases]
|
||||
add_symbol_address(addresses, SymbolDetails(format_symbol_with_address(symbol_name, address), full_file_path, is_data, aliases))
|
||||
else:
|
||||
add_symbol_address(addresses, SymbolDetails(symbol_name, full_file_path, is_data, aliases))
|
||||
|
||||
|
|
|
|||
|
|
@ -116,6 +116,18 @@ XMAP_TO_PMDSKY_DEBUG_SYMBOL_MAPPING = {
|
|||
'sPositionZero': 'POSITION_ZERO',
|
||||
}
|
||||
|
||||
# These symbols intentionally have the same address as another symbol in pmdsky-debug. Don't display warnings for them.
|
||||
IGNORE_DUPLICATE_SYMBOLS = set([
|
||||
'GUEST_MONSTER_DATA',
|
||||
'GUEST_MONSTER_BANETTE',
|
||||
])
|
||||
|
||||
# Symbols to always append the address onto.
|
||||
# Used for symbols that are part of multiple overlays, making it harder to detect whether there are multiple symbols with the same name.
|
||||
ALWAYS_APPEND_ADDRESS_SYMBOLS = set([
|
||||
'SprintfStatic',
|
||||
])
|
||||
|
||||
PMDSKY_DEBUG_TO_XMAP_SYMBOL_MAPPING = {pmdsky_debug_name: xmap_name for xmap_name, pmdsky_debug_name in XMAP_TO_PMDSKY_DEBUG_SYMBOL_MAPPING.items()}
|
||||
|
||||
@dataclass
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user