mirror of
https://github.com/pret/pmd-sky.git
synced 2026-09-08 11:26:59 -05:00
Decomp ten move-effect wrappers in overlay_29
DoMoveVitalThrow, DoMoveHealStatus, DoMoveEncore, DoMoveStringShot, DoMoveFocusEnergy, DoMoveCounter, DoMoveParalyze__02326E80, DoMoveShadowHold, DoMoveHaze and DoMoveBoostSpeed1 -- each a thin wrapper that forwards to one status or stat helper and returns TRUE, following DoMoveDefendOrder's shape. Three helpers were already declared in move_orb_effects.h, which fixes the meaning of their constant arguments; the other seven take provisional externs written from the call site. Authored by Claude (Opus 5) under human direction. All ten matched on the first candidate against a context preprocessed from the real headers. Confirmed by a matching build: build/pmdsky.us/pmdsky.us.nds: OK. None of the ten carries a region conditional, so US alone is sufficient here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,132 +1,38 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public ATK_STAT_IDX
|
||||
.public AdvanceFrame
|
||||
.public AnimationHasMoreFrames
|
||||
.public ApplyDamageAndEffectsWrapper
|
||||
.public ApplyDefensiveStatMultiplier
|
||||
.public ApplyOffensiveStatMultiplier
|
||||
.public ATK_STAT_IDX
|
||||
.public AURORA_BEAM_LOWER_ATTACK_CHANCE
|
||||
.public BeginChargedMove
|
||||
.public BITE_CRINGE_CHANCE
|
||||
.public BoostDefensiveStat
|
||||
.public BoostHitChanceStat
|
||||
.public BoostOffensiveStat
|
||||
.public BoostSpeedOneStage
|
||||
.public BUBBLE_LOWER_SPEED_CHANCE
|
||||
.public CalcDamageFixedWrapper
|
||||
.public CalcRecoilDamageFixed
|
||||
.public CalcStatusDuration
|
||||
.public CONSTRICT_LOWER_SPEED_CHANCE
|
||||
.public CRUNCH_LOWER_DEFENSE_CHANCE
|
||||
.public DealDamage
|
||||
.public DealDamageWithType
|
||||
.public DIG_DAMAGE_MULTIPLIER
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRandOutcomeUserAction
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public DungeonRandRange
|
||||
.public EndBurnClassStatus
|
||||
.public EndFrozenStatus
|
||||
.public EndNegativeStatusConditionWrapper
|
||||
.public EndReflectClassStatus
|
||||
.public EndTwoTurnMove
|
||||
.public EntityIsValid__02325620
|
||||
.public EntityIsValidMoveEffects__0232800C
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
.public FACADE_DAMAGE_MULTIPLIER
|
||||
.public FLAME_WHEEL_BURN_CHANCE
|
||||
.public FLAMETHROWER_BURN_CHANCE
|
||||
.public FOCUS_PUNCH_DAMAGE_MULTIPLIER
|
||||
.public FormatMoveStringMore
|
||||
.public GetApparentWeather
|
||||
.public GetDamageSourceWrapper
|
||||
.public GetEffectAnimation
|
||||
.public GetFlashFireStatus
|
||||
.public GetMessageLogPreprocessorArgs
|
||||
.public GetMoveAnimation
|
||||
.public GetMoveCategory
|
||||
.public GetMoveType
|
||||
.public GetTileAtEntity
|
||||
.public GetWeightMultiplier
|
||||
.public InitMove
|
||||
.public IRON_TAIL_LOWER_DEFENSE_CHANCE
|
||||
.public IsChargingTwoTurnMove
|
||||
.public IsMonsterSleeping
|
||||
.public IsTileGround
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public LowerDefensiveStat
|
||||
.public LowerHitChanceStat
|
||||
.public LowerOffensiveStat
|
||||
.public LowerSpeed
|
||||
.public METEOR_MASH_BOOST_ATTACK_CHANCE
|
||||
.public MirrorMoveIsActive
|
||||
.public MORNING_SUN_HP_RESTORATION_TABLE
|
||||
.public MULTIHIT_FATIGUE_MOVE_USED
|
||||
.public NIGHTMARE_TURN_RANGE
|
||||
.public OCTAZOOKA_LOWER_ACCURACY_CHANCE
|
||||
.public ov10_022BED90
|
||||
.public ov10_022BF160
|
||||
.public ov10_022BFC5C
|
||||
.public ov10_022C4C0C
|
||||
.public ov10_022C4C0E
|
||||
.public ov29_022E2CA0
|
||||
.public ov29_022E5474
|
||||
.public ov29_022E6D68
|
||||
.public ov29_02332F18
|
||||
.public ov29_02352AD8
|
||||
.public POWDER_SNOW_FREEZE_CHANCE
|
||||
.public PSYBEAM_CONFUSE_CHANCE
|
||||
.public RAPID_SPIN_BINDING_REMOVAL
|
||||
.public RAZOR_WIND_DAMAGE_MULTIPLIER
|
||||
.public REVERSAL_DAMAGE_MULT_TABLE
|
||||
.public ROCK_SLIDE_CRINGE_CHANCE
|
||||
.public ROLLOUT_DAMAGE_MULT_TABLE
|
||||
.public ROLLOUT_ICE_BALL_MISSED
|
||||
.public ROLLOUT_ICE_BALL_SUCCESSIVE_HITS
|
||||
.public SetReflectStatus
|
||||
.public ShouldDisplayEntityAdvanced
|
||||
.public SILVER_WIND_BOOST_CHANCE
|
||||
.public SKY_ATTACK_CRINGE_CHANCE
|
||||
.public SKY_ATTACK_DAMAGE_MULTIPLIER
|
||||
.public SLEEP_TURN_RANGE
|
||||
.public SMOKESCREEN_TURN_RANGE
|
||||
.public SNORE_CRINGE_CHANCE
|
||||
.public SPATK_STAT_IDX
|
||||
.public StringFromId
|
||||
.public sub_0201CF90
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public SURE_SHOT_TURN_RANGE
|
||||
.public SYNTHESIS_HP_RESTORATION_TABLE
|
||||
.public THUNDER_PARALYZE_CHANCE
|
||||
.public TryActivateWeather
|
||||
.public ShouldDisplayEntityAdvanced
|
||||
.public TryIncreaseHp
|
||||
.public TryInflictBurnStatus
|
||||
.public TryInflictConfusedStatus
|
||||
.public TryInflictConstrictionStatus
|
||||
.public TryInflictCringeStatus
|
||||
.public TryInflictEncoreStatus
|
||||
.public TryInflictEndureStatus
|
||||
.public TryInflictExposedStatus
|
||||
.public TryInflictFocusEnergyStatus
|
||||
.public TryInflictFrozenStatus
|
||||
.public TryInflictGrudgeStatus
|
||||
.public TryInflictMirrorMoveStatus
|
||||
.public TryInflictNightmareStatus
|
||||
.public TryInflictParalysisStatus
|
||||
.public TryInflictShadowHoldStatus
|
||||
.public TryInflictSleeplessStatus
|
||||
.public TryInflictSleepStatus
|
||||
.public TryInflictSureShotStatus
|
||||
.public TryInflictVitalThrowStatus
|
||||
.public TryInflictWhifferStatus
|
||||
.public TryInflictYawningStatus
|
||||
.public TryResetStatChanges
|
||||
.public UnkMapRelatedFunc
|
||||
.public WaitUntilAlertBoxPauseIsOver
|
||||
.public WATER_SPOUT_DAMAGE_MULT_TABLE
|
||||
.public WEATHER_BALL_DAMAGE_MULT_TABLE
|
||||
.public WEATHER_BALL_TYPE_TABLE
|
||||
.public WEATHER_MOVE_TURN_COUNT
|
||||
.public WHIRLPOOL_CONSTRICTION_CHANCE
|
||||
.public YAWN_TURN_RANGE
|
||||
.public ov10_022BED90
|
||||
.public ov10_022BF160
|
||||
.public ov10_022BFC5C
|
||||
.public ov29_022E2CA0
|
||||
.public ov29_022E6D68
|
||||
.public ov29_02352AD8
|
||||
.public sub_0201CF90
|
||||
|
||||
17
asm/include/overlay_29_02325FC4.inc
Normal file
17
asm/include/overlay_29_02325FC4.inc
Normal file
@@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public ApplyOffensiveStatMultiplier
|
||||
.public BeginChargedMove
|
||||
.public DIG_DAMAGE_MULTIPLIER
|
||||
.public DUNGEON_PTR
|
||||
.public DealDamage
|
||||
.public EndTwoTurnMove
|
||||
.public GetTileAtEntity
|
||||
.public IsChargingTwoTurnMove
|
||||
.public IsTileGround
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public LowerHitChanceStat
|
||||
.public SPATK_STAT_IDX
|
||||
.public StringFromId
|
||||
.public TryActivateWeather
|
||||
.public WEATHER_MOVE_TURN_COUNT
|
||||
5
asm/include/overlay_29_023261A0.inc
Normal file
5
asm/include/overlay_29_023261A0.inc
Normal file
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
.public BUBBLE_LOWER_SPEED_CHANCE
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public LowerSpeed
|
||||
12
asm/include/overlay_29_02326220.inc
Normal file
12
asm/include/overlay_29_02326220.inc
Normal file
@@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
.public BeginChargedMove
|
||||
.public CalcDamageFixedWrapper
|
||||
.public FormatMoveStringMore
|
||||
.public GetDamageSourceWrapper
|
||||
.public GetMessageLogPreprocessorArgs
|
||||
.public GetMoveCategory
|
||||
.public GetMoveType
|
||||
.public InitMove
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public StringFromId
|
||||
.public SubstitutePlaceholderStringTags
|
||||
22
asm/include/overlay_29_02326568.inc
Normal file
22
asm/include/overlay_29_02326568.inc
Normal file
@@ -0,0 +1,22 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public ApplyDefensiveStatMultiplier
|
||||
.public BoostOffensiveStat
|
||||
.public DealDamage
|
||||
.public DealDamageWithType
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public EndFrozenStatus
|
||||
.public GetApparentWeather
|
||||
.public IsMonsterSleeping
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public LowerDefensiveStat
|
||||
.public ROCK_SLIDE_CRINGE_CHANCE
|
||||
.public SNORE_CRINGE_CHANCE
|
||||
.public SPATK_STAT_IDX
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryInflictConfusedStatus
|
||||
.public TryInflictConstrictionStatus
|
||||
.public TryInflictCringeStatus
|
||||
.public WEATHER_BALL_DAMAGE_MULT_TABLE
|
||||
.public WEATHER_BALL_TYPE_TABLE
|
||||
.public WHIRLPOOL_CONSTRICTION_CHANCE
|
||||
28
asm/include/overlay_29_023268CC.inc
Normal file
28
asm/include/overlay_29_023268CC.inc
Normal file
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public AURORA_BEAM_LOWER_ATTACK_CHANCE
|
||||
.public ApplyOffensiveStatMultiplier
|
||||
.public BoostOffensiveStat
|
||||
.public CalcDamageFixedWrapper
|
||||
.public CalcStatusDuration
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserAction
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public EndFrozenStatus
|
||||
.public GetDamageSourceWrapper
|
||||
.public GetFlashFireStatus
|
||||
.public GetMoveCategory
|
||||
.public GetMoveType
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public LowerHitChanceStat
|
||||
.public OCTAZOOKA_LOWER_ACCURACY_CHANCE
|
||||
.public SMOKESCREEN_TURN_RANGE
|
||||
.public SPATK_STAT_IDX
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryInflictBurnStatus
|
||||
.public TryInflictConfusedStatus
|
||||
.public TryInflictGrudgeStatus
|
||||
.public TryInflictMirrorMoveStatus
|
||||
.public TryInflictWhifferStatus
|
||||
.public ov10_022C4C0C
|
||||
.public ov10_022C4C0E
|
||||
12
asm/include/overlay_29_02326CC8.inc
Normal file
12
asm/include/overlay_29_02326CC8.inc
Normal file
@@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public BoostDefensiveStat
|
||||
.public BoostHitChanceStat
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public EndFrozenStatus
|
||||
.public FLAMETHROWER_BURN_CHANCE
|
||||
.public FLAME_WHEEL_BURN_CHANCE
|
||||
.public SPATK_STAT_IDX
|
||||
.public TryInflictBurnStatus
|
||||
.public TryInflictExposedStatus
|
||||
36
asm/include/overlay_29_02326E98.inc
Normal file
36
asm/include/overlay_29_02326E98.inc
Normal file
@@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public AbilityIsActiveVeneer
|
||||
.public ApplyDamageAndEffectsWrapper
|
||||
.public BITE_CRINGE_CHANCE
|
||||
.public BeginChargedMove
|
||||
.public BoostOffensiveStat
|
||||
.public CONSTRICT_LOWER_SPEED_CHANCE
|
||||
.public CRUNCH_LOWER_DEFENSE_CHANCE
|
||||
.public CalcDamageFixedWrapper
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserAction
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public EndBurnClassStatus
|
||||
.public EndReflectClassStatus
|
||||
.public EndTwoTurnMove
|
||||
.public ExclusiveItemEffectFlagTest
|
||||
.public FACADE_DAMAGE_MULTIPLIER
|
||||
.public FOCUS_PUNCH_DAMAGE_MULTIPLIER
|
||||
.public GetDamageSourceWrapper
|
||||
.public GetMoveCategory
|
||||
.public GetMoveType
|
||||
.public IsChargingTwoTurnMove
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public LowerDefensiveStat
|
||||
.public LowerOffensiveStat
|
||||
.public LowerSpeed
|
||||
.public MirrorMoveIsActive
|
||||
.public RAZOR_WIND_DAMAGE_MULTIPLIER
|
||||
.public REVERSAL_DAMAGE_MULT_TABLE
|
||||
.public SPATK_STAT_IDX
|
||||
.public StringFromId
|
||||
.public THUNDER_PARALYZE_CHANCE
|
||||
.public TryIncreaseHp
|
||||
.public TryInflictCringeStatus
|
||||
.public TryInflictParalysisStatus
|
||||
13
asm/include/overlay_29_0232776C.inc
Normal file
13
asm/include/overlay_29_0232776C.inc
Normal file
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
.public BoostDefensiveStat
|
||||
.public BoostOffensiveStat
|
||||
.public BoostSpeedOneStage
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserAction
|
||||
.public GetApparentWeather
|
||||
.public GetWeightMultiplier
|
||||
.public MULTIHIT_FATIGUE_MOVE_USED
|
||||
.public SILVER_WIND_BOOST_CHANCE
|
||||
.public SPATK_STAT_IDX
|
||||
.public SYNTHESIS_HP_RESTORATION_TABLE
|
||||
.public TryIncreaseHp
|
||||
38
asm/include/overlay_29_02327940.inc
Normal file
38
asm/include/overlay_29_02327940.inc
Normal file
@@ -0,0 +1,38 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public AbilityIsActiveVeneer
|
||||
.public BeginChargedMove
|
||||
.public BoostDefensiveStat
|
||||
.public BoostOffensiveStat
|
||||
.public CalcRecoilDamageFixed
|
||||
.public CalcStatusDuration
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserAction
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public DungeonRandRange
|
||||
.public EndTwoTurnMove
|
||||
.public EntityIsValidMoveEffects__0232800C
|
||||
.public IsChargingTwoTurnMove
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public LowerDefensiveStat
|
||||
.public LowerOffensiveStat
|
||||
.public LowerSpeed
|
||||
.public METEOR_MASH_BOOST_ATTACK_CHANCE
|
||||
.public POWDER_SNOW_FREEZE_CHANCE
|
||||
.public PSYBEAM_CONFUSE_CHANCE
|
||||
.public RAPID_SPIN_BINDING_REMOVAL
|
||||
.public SKY_ATTACK_CRINGE_CHANCE
|
||||
.public SKY_ATTACK_DAMAGE_MULTIPLIER
|
||||
.public SPATK_STAT_IDX
|
||||
.public SURE_SHOT_TURN_RANGE
|
||||
.public StringFromId
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryInflictConfusedStatus
|
||||
.public TryInflictCringeStatus
|
||||
.public TryInflictEndureStatus
|
||||
.public TryInflictFrozenStatus
|
||||
.public TryInflictSleeplessStatus
|
||||
.public TryInflictSureShotStatus
|
||||
.public WATER_SPOUT_DAMAGE_MULT_TABLE
|
||||
.public ov29_022E5474
|
||||
.public ov29_02332F18
|
||||
File diff suppressed because it is too large
Load Diff
177
asm/overlay_29_02325FC4.s
Normal file
177
asm/overlay_29_02325FC4.s
Normal file
@@ -0,0 +1,177 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02325FC4.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveDig
|
||||
DoMoveDig: ; 0x02325FC4
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
mov r6, r2
|
||||
mov r5, r3
|
||||
mov r4, #0
|
||||
bl GetTileAtEntity
|
||||
mov sb, r0
|
||||
bl IsTileGround
|
||||
cmp r0, #0
|
||||
beq _02326000
|
||||
ldrh r0, [sb]
|
||||
and r0, r0, #3
|
||||
cmp r0, #1
|
||||
beq _02326014
|
||||
_02326000:
|
||||
ldr r2, _0232607C ; =0x00000EC4
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02326074
|
||||
_02326014:
|
||||
mov r0, r8
|
||||
mov r1, r6
|
||||
bl IsChargingTwoTurnMove
|
||||
cmp r0, #0
|
||||
beq _02326050
|
||||
ldr r1, _02326080 ; =DIG_DAMAGE_MULTIPLIER
|
||||
mov r0, r8
|
||||
ldr r3, [r1]
|
||||
mov r1, r7
|
||||
mov r2, r6
|
||||
str r5, [sp]
|
||||
bl DealDamage
|
||||
mov r0, r8
|
||||
bl EndTwoTurnMove
|
||||
b _02326070
|
||||
_02326050:
|
||||
ldr r0, _02326084 ; =0x00000CD6
|
||||
bl StringFromId
|
||||
str r0, [sp]
|
||||
mov r0, r8
|
||||
mov r1, r8
|
||||
mov r3, r6
|
||||
mov r2, #0xa
|
||||
bl BeginChargedMove
|
||||
_02326070:
|
||||
mov r4, #1
|
||||
_02326074:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_0232607C: .word 0x00000C06
|
||||
_02326080: .word DIG_DAMAGE_MULTIPLIER
|
||||
_02326084: .word 0x00000A16
|
||||
#else
|
||||
_0232607C: .word 0x00000EC4
|
||||
_02326080: .word DIG_DAMAGE_MULTIPLIER
|
||||
_02326084: .word 0x00000CD6
|
||||
#endif
|
||||
arm_func_end DoMoveDig
|
||||
|
||||
arm_func_start DoMoveSweetScent
|
||||
DoMoveSweetScent: ; 0x02326088
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _023260A4 ; =SPATK_STAT_IDX
|
||||
mov r3, #1
|
||||
ldr r2, [r2]
|
||||
bl LowerHitChanceStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_023260A4: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveSweetScent
|
||||
|
||||
arm_func_start DoMoveCharm
|
||||
DoMoveCharm: ; 0x023260A8
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _023260CC ; =ATK_STAT_IDX
|
||||
mov ip, #1
|
||||
ldr r2, [r2]
|
||||
mov r3, #0x80
|
||||
str ip, [sp]
|
||||
bl ApplyOffensiveStatMultiplier
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_023260CC: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveCharm
|
||||
|
||||
arm_func_start DoMoveRainDance
|
||||
DoMoveRainDance: ; 0x023260D0
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
ldr r3, _02326120 ; =WEATHER_MOVE_TURN_COUNT
|
||||
ldr r2, _02326124 ; =DUNGEON_PTR
|
||||
ldrsh r3, [r3]
|
||||
ldr r2, [r2]
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
#ifdef JAPAN
|
||||
add r2, r2, #0xcc00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0x9e]
|
||||
#else
|
||||
add r2, r2, #0xcd00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0x42]
|
||||
#endif
|
||||
bl TryActivateWeather
|
||||
cmp r0, #0
|
||||
bne _02326118
|
||||
ldr r2, _02326128 ; =0x00000EC5
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02326118:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02326120: .word WEATHER_MOVE_TURN_COUNT
|
||||
_02326124: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_02326128: .word 0x00000C07
|
||||
#else
|
||||
_02326128: .word 0x00000EC5
|
||||
#endif
|
||||
arm_func_end DoMoveRainDance
|
||||
|
||||
arm_func_start DoMoveHail
|
||||
DoMoveHail: ; 0x0232612C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
ldr r3, _0232617C ; =WEATHER_MOVE_TURN_COUNT
|
||||
ldr r2, _02326180 ; =DUNGEON_PTR
|
||||
ldrsh r3, [r3]
|
||||
ldr r2, [r2]
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
#ifdef JAPAN
|
||||
add r2, r2, #0xcc00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0xa0]
|
||||
#else
|
||||
add r2, r2, #0xcd00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0x44]
|
||||
#endif
|
||||
bl TryActivateWeather
|
||||
cmp r0, #0
|
||||
bne _02326174
|
||||
ldr r2, _02326184 ; =0x00000EC8
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02326174:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0232617C: .word WEATHER_MOVE_TURN_COUNT
|
||||
_02326180: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_02326184: .word 0x00000C0A
|
||||
#else
|
||||
_02326184: .word 0x00000EC8
|
||||
#endif
|
||||
arm_func_end DoMoveHail
|
||||
37
asm/overlay_29_023261A0.s
Normal file
37
asm/overlay_29_023261A0.s
Normal file
@@ -0,0 +1,37 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_023261A0.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveBubble
|
||||
DoMoveBubble: ; 0x023261A0
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _023261FC
|
||||
ldr r1, _02326208 ; =BUBBLE_LOWER_SPEED_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _023261FC
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
mov r3, #0
|
||||
bl LowerSpeed
|
||||
_023261FC:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02326208: .word BUBBLE_LOWER_SPEED_CHANCE
|
||||
arm_func_end DoMoveBubble
|
||||
269
asm/overlay_29_02326220.s
Normal file
269
asm/overlay_29_02326220.s
Normal file
@@ -0,0 +1,269 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02326220.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveRage
|
||||
DoMoveRage: ; 0x02326220
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
mov r6, r0
|
||||
ldr r0, _02326260 ; =0x00000CCF
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
bl StringFromId
|
||||
str r0, [sp]
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r3, r4
|
||||
mov r2, #0xc
|
||||
bl BeginChargedMove
|
||||
mov r0, #1
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02326260: .word 0x00000A0F
|
||||
#else
|
||||
_02326260: .word 0x00000CCF
|
||||
#endif
|
||||
arm_func_end DoMoveRage
|
||||
|
||||
arm_func_start DoMoveSuperFang
|
||||
DoMoveSuperFang: ; 0x02326264
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
sub sp, sp, #0x20
|
||||
mov r7, r1
|
||||
ldr r5, [r7, #0xb4]
|
||||
mov r4, #0
|
||||
ldrsh r5, [r5, #0x10]
|
||||
mov r8, r0
|
||||
mov r6, r2
|
||||
add r2, r5, r5, lsr #31
|
||||
mov r5, r3
|
||||
strb r4, [sp, #0x1c]
|
||||
movs sl, r2, asr #1
|
||||
beq _02326304
|
||||
mov r0, r6
|
||||
bl GetMoveType
|
||||
mov r4, r0
|
||||
ldrh r0, [r6, #4]
|
||||
bl GetMoveCategory
|
||||
mov sb, r0
|
||||
mov r1, r5
|
||||
mov r0, r6
|
||||
bl GetDamageSourceWrapper
|
||||
add r3, sp, #0x1c
|
||||
stmia sp, {r3, r4, sb}
|
||||
str r0, [sp, #0xc]
|
||||
mov r5, #0
|
||||
str r5, [sp, #0x10]
|
||||
mov r3, #1
|
||||
str r3, [sp, #0x14]
|
||||
mov r1, r7
|
||||
mov r2, sl
|
||||
mov r0, r8
|
||||
str r5, [sp, #0x18]
|
||||
bl CalcDamageFixedWrapper
|
||||
ldrb r0, [sp, #0x1c]
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
movne r0, r5
|
||||
strb r0, [sp, #0x1c]
|
||||
b _0232630C
|
||||
_02326304:
|
||||
ldr r2, _02326318 ; =0x00000EC9
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0232630C:
|
||||
ldrb r0, [sp, #0x1c]
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02326318: .word 0x00000C0B
|
||||
#else
|
||||
_02326318: .word 0x00000EC9
|
||||
#endif
|
||||
arm_func_end DoMoveSuperFang
|
||||
|
||||
arm_func_start DoMovePainSplit
|
||||
DoMovePainSplit: ; 0x0232631C
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
ldr r4, [r6, #0xb4]
|
||||
ldr r0, [r5, #0xb4]
|
||||
ldrsh r3, [r4, #0x10]
|
||||
ldrsh r2, [r0, #0x10]
|
||||
ldr r1, _02326400 ; =0x000003E7
|
||||
add r2, r3, r2
|
||||
add r2, r2, r2, lsr #31
|
||||
mov r2, r2, lsl #0xf
|
||||
mov r2, r2, asr #0x10
|
||||
strh r2, [r4, #0x10]
|
||||
strh r2, [r0, #0x10]
|
||||
ldrsh r3, [r4, #0x12]
|
||||
ldrsh r2, [r4, #0x16]
|
||||
add r3, r3, r2
|
||||
cmp r3, r1
|
||||
ldrsh r2, [r4, #0x10]
|
||||
movle r1, r3
|
||||
cmp r2, r1
|
||||
ble _02326384
|
||||
ldr r1, _02326400 ; =0x000003E7
|
||||
cmp r3, r1
|
||||
movgt r3, r1
|
||||
strh r3, [r4, #0x10]
|
||||
_02326384:
|
||||
ldrsh r2, [r0, #0x12]
|
||||
ldrsh r1, [r0, #0x16]
|
||||
ldr r3, _02326400 ; =0x000003E7
|
||||
add r2, r2, r1
|
||||
cmp r2, r3
|
||||
ldrsh r1, [r0, #0x10]
|
||||
movle r3, r2
|
||||
cmp r1, r3
|
||||
ble _023263B8
|
||||
ldr r1, _02326400 ; =0x000003E7
|
||||
cmp r2, r1
|
||||
movgt r2, r1
|
||||
strh r2, [r0, #0x10]
|
||||
_023263B8:
|
||||
mov r0, #0
|
||||
mov r1, r6
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r1, r5
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r4, #0x107]
|
||||
#else
|
||||
ldrb r0, [r4, #0x108]
|
||||
#endif
|
||||
ldr r2, _02326404 ; =0x00000ECA
|
||||
mov r1, r5
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
#ifdef JAPAN
|
||||
strlob r0, [r4, #0x107]
|
||||
#else
|
||||
strlob r0, [r4, #0x108]
|
||||
#endif
|
||||
mov r0, r6
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02326400: .word 0x000003E7
|
||||
#ifdef JAPAN
|
||||
_02326404: .word 0x00000C0C
|
||||
#else
|
||||
_02326404: .word 0x00000ECA
|
||||
#endif
|
||||
arm_func_end DoMovePainSplit
|
||||
|
||||
arm_func_start DoMoveTorment
|
||||
DoMoveTorment: ; 0x02326408
|
||||
#ifdef JAPAN
|
||||
#define DO_MOVE_TORMENT_OFFSET -4
|
||||
#else
|
||||
#define DO_MOVE_TORMENT_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #8
|
||||
mov sb, r1
|
||||
ldr r8, [sb, #0xb4]
|
||||
mov r7, #0
|
||||
mov sl, r0
|
||||
mov r6, r7
|
||||
add r5, r8, #0x124 + DO_MOVE_TORMENT_OFFSET
|
||||
mov fp, #1
|
||||
_0232642C:
|
||||
ldrb r0, [r5, r6, lsl #3]
|
||||
mov r4, r6, lsl #3
|
||||
tst r0, #1
|
||||
movne r0, fp
|
||||
moveq r0, #0
|
||||
tst r0, #0xff
|
||||
beq _023264A0
|
||||
ldrb r0, [r5, r4]
|
||||
tst r0, #0x20
|
||||
bne _02326494
|
||||
tst r0, #0x10
|
||||
beq _023264A0
|
||||
bl GetMessageLogPreprocessorArgs
|
||||
mov r1, #0
|
||||
add r2, r5, r4
|
||||
mov r3, r1
|
||||
bl FormatMoveStringMore
|
||||
ldr r2, _02326548 ; =0x00000ECB
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
ldrb r0, [r5, r4]
|
||||
mov r7, #1
|
||||
orr r0, r0, #0x20
|
||||
strb r0, [r5, r4]
|
||||
b _023264A0
|
||||
_02326494:
|
||||
tst r0, #0x10
|
||||
biceq r0, r0, #0x20
|
||||
streqb r0, [r5, r4]
|
||||
_023264A0:
|
||||
add r6, r6, #1
|
||||
cmp r6, #4
|
||||
blt _0232642C
|
||||
ldrb r0, [r8, #0x144 + DO_MOVE_TORMENT_OFFSET]
|
||||
tst r0, #0x20
|
||||
bne _02326504
|
||||
tst r0, #0x10
|
||||
beq _02326510
|
||||
add r0, sp, #0
|
||||
mov r1, #0x160
|
||||
bl InitMove
|
||||
ldrb r0, [r8, #0x144 + DO_MOVE_TORMENT_OFFSET]
|
||||
mov r7, #1
|
||||
orr r0, r0, #0x20
|
||||
strb r0, [r8, #0x144 + DO_MOVE_TORMENT_OFFSET]
|
||||
bl GetMessageLogPreprocessorArgs
|
||||
mov r1, #0
|
||||
add r2, sp, #0
|
||||
mov r3, r1
|
||||
bl FormatMoveStringMore
|
||||
ldr r2, _02326548 ; =0x00000ECB
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02326510
|
||||
_02326504:
|
||||
tst r0, #0x10
|
||||
biceq r0, r0, #0x20
|
||||
streqb r0, [r8, #0x144 + DO_MOVE_TORMENT_OFFSET]
|
||||
_02326510:
|
||||
cmp r7, #0
|
||||
beq _0232652C
|
||||
ldrb r0, [r8, #0xd2]
|
||||
cmp r0, #1
|
||||
moveq r0, #0
|
||||
streqb r0, [r8, #0xd2]
|
||||
b _0232653C
|
||||
_0232652C:
|
||||
ldr r2, _0232654C ; =0x00000ECC
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0232653C:
|
||||
mov r0, r7
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02326548: .word 0x00000C0D
|
||||
_0232654C: .word 0x00000C0E
|
||||
#else
|
||||
_02326548: .word 0x00000ECB
|
||||
_0232654C: .word 0x00000ECC
|
||||
#endif
|
||||
arm_func_end DoMoveTorment
|
||||
283
asm/overlay_29_02326568.s
Normal file
283
asm/overlay_29_02326568.s
Normal file
@@ -0,0 +1,283 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02326568.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveSwagger
|
||||
DoMoveSwagger: ; 0x02326568
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl TryInflictConfusedStatus
|
||||
ldr r1, _023265A0 ; =ATK_STAT_IDX
|
||||
mov r0, r5
|
||||
ldr r2, [r1]
|
||||
mov r1, r4
|
||||
mov r3, #2
|
||||
bl BoostOffensiveStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_023265A0: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveSwagger
|
||||
|
||||
arm_func_start DoMoveSnore
|
||||
DoMoveSnore: ; 0x023265A4
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
||||
sub sp, sp, #4
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
mov r6, r2
|
||||
mov r5, r3
|
||||
mov r4, #0
|
||||
bl IsMonsterSleeping
|
||||
cmp r0, #0
|
||||
beq _02326624
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, r6
|
||||
mov r3, #0x100
|
||||
str r5, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02326634
|
||||
ldr r1, _02326640 ; =SNORE_CRINGE_CHANCE
|
||||
mov r0, r8
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r7
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02326634
|
||||
mov r2, #0
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r3, r2
|
||||
bl TryInflictCringeStatus
|
||||
b _02326634
|
||||
_02326624:
|
||||
ldr r2, _02326644 ; =0x00000ECD
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02326634:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
_02326640: .word SNORE_CRINGE_CHANCE
|
||||
#ifdef JAPAN
|
||||
_02326644: .word 0x00000C0F
|
||||
#else
|
||||
_02326644: .word 0x00000ECD
|
||||
#endif
|
||||
arm_func_end DoMoveSnore
|
||||
|
||||
arm_func_start DoMoveScreech
|
||||
DoMoveScreech: ; 0x02326648
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _0232666C ; =ATK_STAT_IDX
|
||||
mov ip, #1
|
||||
ldr r2, [r2]
|
||||
mov r3, #0x40
|
||||
str ip, [sp]
|
||||
bl ApplyDefensiveStatMultiplier
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0232666C: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveScreech
|
||||
|
||||
arm_func_start DoMoveDamageCringe30
|
||||
DoMoveDamageCringe30: ; 0x02326670
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _023266CC
|
||||
ldr r1, _023266D8 ; =ROCK_SLIDE_CRINGE_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _023266CC
|
||||
mov r2, #0
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r3, r2
|
||||
bl TryInflictCringeStatus
|
||||
_023266CC:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_023266D8: .word ROCK_SLIDE_CRINGE_CHANCE
|
||||
arm_func_end DoMoveDamageCringe30
|
||||
|
||||
arm_func_start DoMoveWeatherBall
|
||||
DoMoveWeatherBall: ; 0x023266DC
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
sub sp, sp, #8
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
mov r6, r2
|
||||
mov r5, r3
|
||||
bl GetApparentWeather
|
||||
mov r4, r0
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl EndFrozenStatus
|
||||
ldr ip, _02326748 ; =WEATHER_BALL_DAMAGE_MULT_TABLE
|
||||
ldr r2, _0232674C ; =WEATHER_BALL_TYPE_TABLE
|
||||
ldr ip, [ip, r4, lsl #2]
|
||||
ldrb r2, [r2, r4]
|
||||
str ip, [sp]
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r3, r6
|
||||
str r5, [sp, #4]
|
||||
bl DealDamageWithType
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
_02326748: .word WEATHER_BALL_DAMAGE_MULT_TABLE
|
||||
_0232674C: .word WEATHER_BALL_TYPE_TABLE
|
||||
arm_func_end DoMoveWeatherBall
|
||||
|
||||
arm_func_start DoMoveWhirlpool
|
||||
DoMoveWhirlpool: ; 0x02326750
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
mov r5, r1
|
||||
ldr r1, [r5, #0xb4]
|
||||
mov r6, r0
|
||||
ldrb r0, [r1, #0xd2]
|
||||
mov r1, r5
|
||||
mov r4, #0
|
||||
cmp r0, #9
|
||||
moveq ip, #0x200
|
||||
movne ip, #0x100
|
||||
str r3, [sp]
|
||||
mov r0, r6
|
||||
mov r3, ip
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _023267C8
|
||||
ldr r1, _023267D4 ; =WHIRLPOOL_CONSTRICTION_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _023267C8
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #0x3b
|
||||
mov r3, #0
|
||||
bl TryInflictConstrictionStatus
|
||||
_023267C8:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_023267D4: .word WHIRLPOOL_CONSTRICTION_CHANCE
|
||||
arm_func_end DoMoveWhirlpool
|
||||
|
||||
arm_func_start DoMoveFakeTears
|
||||
DoMoveFakeTears: ; 0x023267D8
|
||||
stmdb sp!, {r3, lr}
|
||||
sub sp, sp, #8
|
||||
ldr r2, _02326808 ; =SPATK_STAT_IDX
|
||||
mov ip, #1
|
||||
ldr r2, [r2]
|
||||
str ip, [sp]
|
||||
mov r3, #2
|
||||
str ip, [sp, #4]
|
||||
bl LowerDefensiveStat
|
||||
mov r0, #1
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02326808: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveFakeTears
|
||||
|
||||
arm_func_start DoMoveSpite
|
||||
DoMoveSpite: ; 0x0232680C
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r5, r1
|
||||
ldr r1, [r5, #0xb4]
|
||||
mov r4, #0
|
||||
#ifdef JAPAN
|
||||
add lr, r1, #0x120
|
||||
#else
|
||||
add lr, r1, #0x124
|
||||
#endif
|
||||
mov ip, #1
|
||||
mov r6, r0
|
||||
mov r7, r4
|
||||
mov r3, r4
|
||||
mov r1, r4
|
||||
mov r0, ip
|
||||
_02326838:
|
||||
ldrb r2, [lr, r7, lsl #3]
|
||||
add r8, lr, r7, lsl #3
|
||||
tst r2, #1
|
||||
movne r2, ip
|
||||
moveq r2, r3
|
||||
tst r2, #0xff
|
||||
beq _02326864
|
||||
ldrb r2, [r8]
|
||||
tst r2, #0x10
|
||||
movne r4, r0
|
||||
strneb r1, [r8, #6]
|
||||
_02326864:
|
||||
add r7, r7, #1
|
||||
cmp r7, #4
|
||||
blt _02326838
|
||||
mov r1, r5
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
cmp r4, #0
|
||||
beq _0232689C
|
||||
#ifdef JAPAN
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #0xc10
|
||||
#else
|
||||
ldr r2, _023268B4 ; =0x00000ECE
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _023268AC
|
||||
_0232689C:
|
||||
ldr r2, _023268B8 ; =0x00000ECF
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_023268AC:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_023268B8: .word 0x00000C11
|
||||
#else
|
||||
_023268B4: .word 0x00000ECE
|
||||
_023268B8: .word 0x00000ECF
|
||||
#endif
|
||||
arm_func_end DoMoveSpite
|
||||
332
asm/overlay_29_023268CC.s
Normal file
332
asm/overlay_29_023268CC.s
Normal file
@@ -0,0 +1,332 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_023268CC.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveSmokescreen
|
||||
DoMoveSmokescreen: ; 0x023268CC
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r4, r1
|
||||
mov r5, r0
|
||||
ldr r1, _02326904 ; =SMOKESCREEN_TURN_RANGE
|
||||
mov r0, r4
|
||||
mov r2, #1
|
||||
bl CalcStatusDuration
|
||||
mov r2, r0
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r3, #0
|
||||
bl TryInflictWhifferStatus
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02326904: .word SMOKESCREEN_TURN_RANGE
|
||||
arm_func_end DoMoveSmokescreen
|
||||
|
||||
arm_func_start DoMoveMirrorMove
|
||||
DoMoveMirrorMove: ; 0x02326908
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl EndFrozenStatus
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl TryInflictMirrorMoveStatus
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end DoMoveMirrorMove
|
||||
|
||||
arm_func_start DoMoveOverheat
|
||||
DoMoveOverheat: ; 0x0232692C
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov sb, r0
|
||||
mov r8, r1
|
||||
mov r7, r2
|
||||
ldr r5, [sb, #0xb4]
|
||||
mov r6, r3
|
||||
mov r4, #0
|
||||
bl EndFrozenStatus
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
mov r2, r7
|
||||
mov r3, #0x100
|
||||
str r6, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02326988
|
||||
mov r1, r4
|
||||
mov r0, sb
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserAction
|
||||
cmp r0, #0
|
||||
movne r0, r4
|
||||
#ifdef JAPAN
|
||||
strneb r0, [r5, #0x15b]
|
||||
#else
|
||||
strneb r0, [r5, #0x15f]
|
||||
#endif
|
||||
_02326988:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
arm_func_end DoMoveOverheat
|
||||
|
||||
arm_func_start DoMoveAuroraBeam
|
||||
DoMoveAuroraBeam: ; 0x02326990
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _023269F8
|
||||
ldr r1, _02326A04 ; =AURORA_BEAM_LOWER_ATTACK_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _023269F8
|
||||
ldr r0, _02326A08 ; =ATK_STAT_IDX
|
||||
mov ip, #0
|
||||
ldr r2, [r0]
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r3, #0x80
|
||||
str ip, [sp]
|
||||
bl ApplyOffensiveStatMultiplier
|
||||
_023269F8:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02326A04: .word AURORA_BEAM_LOWER_ATTACK_CHANCE
|
||||
_02326A08: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveAuroraBeam
|
||||
|
||||
arm_func_start DoMoveMemento
|
||||
DoMoveMemento: ; 0x02326A0C
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
mov r6, r0
|
||||
ldr r2, _02326A6C ; =ATK_STAT_IDX
|
||||
ldr r4, [r6, #0xb4]
|
||||
mov ip, #1
|
||||
strh ip, [r4, #0x10]
|
||||
ldr r2, [r2]
|
||||
mov r3, #0x40
|
||||
mov r5, r1
|
||||
str ip, [sp]
|
||||
bl ApplyOffensiveStatMultiplier
|
||||
ldr r0, _02326A70 ; =SPATK_STAT_IDX
|
||||
mov ip, #1
|
||||
ldr r2, [r0]
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r3, #0x40
|
||||
str ip, [sp]
|
||||
bl ApplyOffensiveStatMultiplier
|
||||
mov r0, #1
|
||||
#ifdef JAPAN
|
||||
strb r0, [r4, #0x15a]
|
||||
#else
|
||||
strb r0, [r4, #0x15e]
|
||||
#endif
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02326A6C: .word ATK_STAT_IDX
|
||||
_02326A70: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveMemento
|
||||
|
||||
arm_func_start DoMoveOctazooka
|
||||
DoMoveOctazooka: ; 0x02326A74
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02326AD4
|
||||
ldr r1, _02326AE0 ; =OCTAZOOKA_LOWER_ACCURACY_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02326AD4
|
||||
ldr r1, _02326AE4 ; =ATK_STAT_IDX
|
||||
mov r0, r6
|
||||
ldr r2, [r1]
|
||||
mov r1, r5
|
||||
mov r3, #0
|
||||
bl LowerHitChanceStat
|
||||
_02326AD4:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02326AE0: .word OCTAZOOKA_LOWER_ACCURACY_CHANCE
|
||||
_02326AE4: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveOctazooka
|
||||
|
||||
arm_func_start DoMoveFlatter
|
||||
DoMoveFlatter: ; 0x02326AE8
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl TryInflictConfusedStatus
|
||||
ldr r1, _02326B20 ; =SPATK_STAT_IDX
|
||||
mov r0, r5
|
||||
ldr r2, [r1]
|
||||
mov r1, r4
|
||||
mov r3, #1
|
||||
bl BoostOffensiveStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02326B20: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveFlatter
|
||||
|
||||
arm_func_start DoMoveWillOWisp
|
||||
DoMoveWillOWisp: ; 0x02326B24
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
bl GetFlashFireStatus
|
||||
movs r4, r0
|
||||
beq _02326B94
|
||||
ldr r3, [r5, #0xb4]
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r3, #0x158]
|
||||
#else
|
||||
ldrb r0, [r3, #0x15c]
|
||||
#endif
|
||||
cmp r0, #0
|
||||
bne _02326BAC
|
||||
mov r0, #1
|
||||
mov r1, r5
|
||||
mov r2, #0
|
||||
#ifdef JAPAN
|
||||
strb r0, [r3, #0x158]
|
||||
#else
|
||||
strb r0, [r3, #0x15c]
|
||||
#endif
|
||||
bl SubstitutePlaceholderStringTags
|
||||
cmp r4, #1
|
||||
bne _02326B80
|
||||
ldr r2, _02326BB8 ; =0x00000CDD
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02326BAC
|
||||
_02326B80:
|
||||
ldr r2, _02326BBC ; =0x00000CDC
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02326BAC
|
||||
_02326B94:
|
||||
mov r2, #0
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r3, #1
|
||||
str r2, [sp]
|
||||
bl TryInflictBurnStatus
|
||||
_02326BAC:
|
||||
mov r0, #1
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02326BB8: .word 0x00000A1D
|
||||
_02326BBC: .word 0x00000A1C
|
||||
#else
|
||||
_02326BB8: .word 0x00000CDD
|
||||
_02326BBC: .word 0x00000CDC
|
||||
#endif
|
||||
arm_func_end DoMoveWillOWisp
|
||||
|
||||
arm_func_start DoMoveReturn
|
||||
DoMoveReturn: ; 0x02326BC0
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
sub sp, sp, #0x20
|
||||
mov sb, r0
|
||||
mov r4, r3
|
||||
mov r8, r1
|
||||
mov r7, r2
|
||||
ldr lr, [sb, #0xb4]
|
||||
mov r6, #1
|
||||
mov ip, #0
|
||||
ldr r3, _02326C98 ; =ov10_022C4C0C
|
||||
ldr r0, _02326C9C ; =0x000003E7
|
||||
b _02326C18
|
||||
_02326BF0:
|
||||
mov r5, ip, lsl #2
|
||||
ldrsh r2, [r3, r5]
|
||||
cmp r2, #0
|
||||
blt _02326C20
|
||||
ldrsh r1, [lr, #0xe]
|
||||
cmp r1, r2
|
||||
ldrlt r0, _02326CA0 ; =ov10_022C4C0E
|
||||
ldrltsh r6, [r0, r5]
|
||||
blt _02326C20
|
||||
add ip, ip, #1
|
||||
_02326C18:
|
||||
cmp ip, r0
|
||||
blt _02326BF0
|
||||
_02326C20:
|
||||
mov r0, r7
|
||||
bl GetMoveType
|
||||
mov r5, r0
|
||||
ldrh r0, [r7, #4]
|
||||
bl GetMoveCategory
|
||||
mov r1, r4
|
||||
mov r4, r0
|
||||
mov r0, r7
|
||||
bl GetDamageSourceWrapper
|
||||
add r3, sp, #0x1c
|
||||
stmia sp, {r3, r5}
|
||||
str r4, [sp, #8]
|
||||
mov r2, r6
|
||||
str r0, [sp, #0xc]
|
||||
mov r6, #0
|
||||
str r6, [sp, #0x10]
|
||||
mov r3, #1
|
||||
str r3, [sp, #0x14]
|
||||
mov r1, r8
|
||||
mov r0, sb
|
||||
str r6, [sp, #0x18]
|
||||
bl CalcDamageFixedWrapper
|
||||
ldrb r0, [sp, #0x1c]
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
movne r0, r6
|
||||
strb r0, [sp, #0x1c]
|
||||
and r0, r0, #0xff
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_02326C98: .word ov10_022C4C0C
|
||||
_02326C9C: .word 0x000003E7
|
||||
_02326CA0: .word ov10_022C4C0E
|
||||
arm_func_end DoMoveReturn
|
||||
|
||||
arm_func_start DoMoveGrudge
|
||||
DoMoveGrudge: ; 0x02326CA4
|
||||
ldr ip, _02326CB0 ; =TryInflictGrudgeStatus
|
||||
mov r2, #1
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_02326CB0: .word TryInflictGrudgeStatus
|
||||
arm_func_end DoMoveGrudge
|
||||
145
asm/overlay_29_02326CC8.s
Normal file
145
asm/overlay_29_02326CC8.s
Normal file
@@ -0,0 +1,145 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02326CC8.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveDamageBurn10FlameWheel
|
||||
DoMoveDamageBurn10FlameWheel: ; 0x02326CC8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
||||
sub sp, sp, #4
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
mov r6, r2
|
||||
mov r5, r3
|
||||
mov r4, #0
|
||||
bl EndFrozenStatus
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, r6
|
||||
mov r3, #0x100
|
||||
str r5, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02326D40
|
||||
ldr r1, _02326D4C ; =FLAME_WHEEL_BURN_CHANCE
|
||||
mov r0, r8
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r7
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02326D40
|
||||
mov r2, #0
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r3, r2
|
||||
str r2, [sp]
|
||||
bl TryInflictBurnStatus
|
||||
_02326D40:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
_02326D4C: .word FLAME_WHEEL_BURN_CHANCE
|
||||
arm_func_end DoMoveDamageBurn10FlameWheel
|
||||
|
||||
arm_func_start DoMoveDamageBurn10
|
||||
DoMoveDamageBurn10: ; 0x02326D50
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
||||
sub sp, sp, #4
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
mov r6, r2
|
||||
mov r5, r3
|
||||
mov r4, #0
|
||||
bl EndFrozenStatus
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, r6
|
||||
mov r3, #0x100
|
||||
str r5, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02326DC8
|
||||
ldr r1, _02326DD4 ; =FLAMETHROWER_BURN_CHANCE
|
||||
mov r0, r8
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r7
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02326DC8
|
||||
mov r2, #0
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r3, r2
|
||||
str r2, [sp]
|
||||
bl TryInflictBurnStatus
|
||||
_02326DC8:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
_02326DD4: .word FLAMETHROWER_BURN_CHANCE
|
||||
arm_func_end DoMoveDamageBurn10
|
||||
|
||||
arm_func_start DoMoveExpose
|
||||
DoMoveExpose: ; 0x02326DD8
|
||||
stmdb sp!, {r3, lr}
|
||||
ldrh r3, [r2, #4]
|
||||
ldr r2, _02326E00 ; =0x0000013B
|
||||
cmp r3, r2
|
||||
moveq r2, #0x7a
|
||||
movne r2, #0x51
|
||||
mov r3, #0
|
||||
bl TryInflictExposedStatus
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02326E00: .word 0x0000013B
|
||||
arm_func_end DoMoveExpose
|
||||
|
||||
arm_func_start DoMoveDoubleTeam
|
||||
DoMoveDoubleTeam: ; 0x02326E04
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _02326E1C ; =SPATK_STAT_IDX
|
||||
ldr r2, [r2]
|
||||
bl BoostHitChanceStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02326E1C: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveDoubleTeam
|
||||
|
||||
arm_func_start DoMoveGust
|
||||
DoMoveGust: ; 0x02326E20
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr ip, [r1, #0xb4]
|
||||
mov lr, #1
|
||||
ldrb ip, [ip, #0xd2]
|
||||
add ip, ip, #0xf9
|
||||
and ip, ip, #0xff
|
||||
cmp ip, #1
|
||||
movls lr, #2
|
||||
str r3, [sp]
|
||||
mov r3, lr, lsl #8
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end DoMoveGust
|
||||
|
||||
arm_func_start DoMoveBoostDefense1
|
||||
DoMoveBoostDefense1: ; 0x02326E60
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _02326E7C ; =ATK_STAT_IDX
|
||||
mov r3, #1
|
||||
ldr r2, [r2]
|
||||
bl BoostDefensiveStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02326E7C: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveBoostDefense1
|
||||
692
asm/overlay_29_02326E98.s
Normal file
692
asm/overlay_29_02326E98.s
Normal file
@@ -0,0 +1,692 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02326E98.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveBoostAttack1
|
||||
DoMoveBoostAttack1: ; 0x02326E98
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _02326EB4 ; =ATK_STAT_IDX
|
||||
mov r3, #1
|
||||
ldr r2, [r2]
|
||||
bl BoostOffensiveStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02326EB4: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveBoostAttack1
|
||||
|
||||
arm_func_start DoMoveRazorWind
|
||||
DoMoveRazorWind: ; 0x02326EB8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r5, r2
|
||||
mov r6, r1
|
||||
mov r1, r5
|
||||
mov r7, r0
|
||||
mov r4, r3
|
||||
bl IsChargingTwoTurnMove
|
||||
cmp r0, #0
|
||||
beq _02326F14
|
||||
ldr r1, _02326F40 ; =RAZOR_WIND_DAMAGE_MULTIPLIER
|
||||
mov r0, r7
|
||||
ldr r3, [r1]
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
str r4, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
movne r1, #1
|
||||
moveq r1, #0
|
||||
mov r0, r7
|
||||
and r4, r1, #0xff
|
||||
bl EndTwoTurnMove
|
||||
b _02326F38
|
||||
_02326F14:
|
||||
ldr r0, _02326F44 ; =0x00000CCD
|
||||
bl StringFromId
|
||||
str r0, [sp]
|
||||
mov r0, r7
|
||||
mov r1, r7
|
||||
mov r3, r5
|
||||
mov r2, #4
|
||||
bl BeginChargedMove
|
||||
mov r4, #1
|
||||
_02326F38:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_02326F40: .word RAZOR_WIND_DAMAGE_MULTIPLIER
|
||||
#ifdef JAPAN
|
||||
_02326F44: .word 0x00000A0D
|
||||
#else
|
||||
_02326F44: .word 0x00000CCD
|
||||
#endif
|
||||
arm_func_end DoMoveRazorWind
|
||||
|
||||
arm_func_start DoMoveBide
|
||||
DoMoveBide: ; 0x02326F48
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
mov r6, r0
|
||||
ldr r0, _02326F88 ; =0x00000CCE
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
bl StringFromId
|
||||
str r0, [sp]
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r3, r4
|
||||
mov r2, #1
|
||||
bl BeginChargedMove
|
||||
mov r0, #1
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02326F88: .word 0x00000A0E
|
||||
#else
|
||||
_02326F88: .word 0x00000CCE
|
||||
#endif
|
||||
arm_func_end DoMoveBide
|
||||
|
||||
arm_func_start DoMoveBideUnleash
|
||||
DoMoveBideUnleash: ; 0x02326F8C
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
sub sp, sp, #0x20
|
||||
mov r3, #0
|
||||
mov r6, r0
|
||||
strb r3, [sp, #0x1c]
|
||||
ldr r3, [r6, #0xb4]
|
||||
ldr r0, _0232702C ; =0x000003E7
|
||||
ldr r3, [r3, #0xb8]
|
||||
mov r8, r2
|
||||
mov r4, r3, lsl #1
|
||||
cmp r0, r3, lsl #1
|
||||
movlt r4, r0
|
||||
mov r0, r8
|
||||
mov r5, r1
|
||||
bl GetMoveType
|
||||
mov r7, r0
|
||||
ldrh r0, [r8, #4]
|
||||
bl GetMoveCategory
|
||||
add r2, sp, #0x1c
|
||||
stmia sp, {r2, r7}
|
||||
str r0, [sp, #8]
|
||||
ldr r1, _02327030 ; =0x0000023E
|
||||
mov ip, #0
|
||||
str r1, [sp, #0xc]
|
||||
str ip, [sp, #0x10]
|
||||
mov r3, #1
|
||||
str r3, [sp, #0x14]
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
str ip, [sp, #0x18]
|
||||
bl CalcDamageFixedWrapper
|
||||
ldrb r0, [sp, #0x1c]
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
strb r0, [sp, #0x1c]
|
||||
and r0, r0, #0xff
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
_0232702C: .word 0x000003E7
|
||||
_02327030: .word 0x0000023E
|
||||
arm_func_end DoMoveBideUnleash
|
||||
|
||||
arm_func_start DoMoveCrunch
|
||||
DoMoveCrunch: ; 0x02327034
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
sub sp, sp, #8
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _023270A0
|
||||
ldr r1, _023270AC ; =CRUNCH_LOWER_DEFENSE_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _023270A0
|
||||
ldr r0, _023270B0 ; =ATK_STAT_IDX
|
||||
mov r3, r4
|
||||
ldr r2, [r0]
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
str r3, [sp]
|
||||
mov ip, #0
|
||||
str ip, [sp, #4]
|
||||
bl LowerDefensiveStat
|
||||
_023270A0:
|
||||
mov r0, r4
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_023270AC: .word CRUNCH_LOWER_DEFENSE_CHANCE
|
||||
_023270B0: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveCrunch
|
||||
|
||||
arm_func_start DoMoveDamageCringe20
|
||||
DoMoveDamageCringe20: ; 0x023270B4
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02327110
|
||||
ldr r1, _0232711C ; =BITE_CRINGE_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02327110
|
||||
mov r2, #0
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r3, r2
|
||||
bl TryInflictCringeStatus
|
||||
_02327110:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0232711C: .word BITE_CRINGE_CHANCE
|
||||
arm_func_end DoMoveDamageCringe20
|
||||
|
||||
arm_func_start DoMoveDamageParalyze20
|
||||
DoMoveDamageParalyze20: ; 0x02327120
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _0232717C
|
||||
ldr r1, _02327188 ; =THUNDER_PARALYZE_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _0232717C
|
||||
mov r2, #0
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r3, r2
|
||||
bl TryInflictParalysisStatus
|
||||
_0232717C:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02327188: .word THUNDER_PARALYZE_CHANCE
|
||||
arm_func_end DoMoveDamageParalyze20
|
||||
|
||||
arm_func_start DoMoveEndeavor
|
||||
DoMoveEndeavor: ; 0x0232718C
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
sub sp, sp, #0x20
|
||||
mov r4, #0
|
||||
mov sb, r0
|
||||
strb r4, [sp, #0x1c]
|
||||
mov r8, r1
|
||||
ldr r1, [r8, #0xb4]
|
||||
ldr r0, [sb, #0xb4]
|
||||
ldrsh r1, [r1, #0x10]
|
||||
ldrsh r0, [r0, #0x10]
|
||||
mov r7, r2
|
||||
mov r6, r3
|
||||
subs r5, r1, r0
|
||||
mov r0, r8
|
||||
movmi r5, r4
|
||||
bl MirrorMoveIsActive
|
||||
cmp r0, #0
|
||||
mov r0, r7
|
||||
movne r8, sb
|
||||
bl GetMoveType
|
||||
mov r4, r0
|
||||
ldrh r0, [r7, #4]
|
||||
bl GetMoveCategory
|
||||
mov r1, r6
|
||||
mov r6, r0
|
||||
mov r0, r7
|
||||
bl GetDamageSourceWrapper
|
||||
mov r2, r5
|
||||
add r5, sp, #0x1c
|
||||
str r5, [sp]
|
||||
stmib sp, {r4, r6}
|
||||
str r0, [sp, #0xc]
|
||||
mov r3, #0
|
||||
str r3, [sp, #0x10]
|
||||
mov r4, #1
|
||||
str r4, [sp, #0x14]
|
||||
mov r1, r8
|
||||
mov r0, sb
|
||||
str r3, [sp, #0x18]
|
||||
bl CalcDamageFixedWrapper
|
||||
ldrb r0, [sp, #0x1c]
|
||||
cmp r0, #0
|
||||
moveq r0, r4
|
||||
movne r0, #0
|
||||
strb r0, [sp, #0x1c]
|
||||
and r0, r0, #0xff
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
arm_func_end DoMoveEndeavor
|
||||
|
||||
arm_func_start DoMoveFacade
|
||||
DoMoveFacade: ; 0x0232724C
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr ip, [r0, #0xb4]
|
||||
mov lr, #0x100
|
||||
ldrb ip, [ip, #0xbf]
|
||||
cmp ip, #0
|
||||
ldrne ip, _02327288 ; =FACADE_DAMAGE_MULTIPLIER
|
||||
str r3, [sp]
|
||||
ldrne lr, [ip]
|
||||
mov r3, lr
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02327288: .word FACADE_DAMAGE_MULTIPLIER
|
||||
arm_func_end DoMoveFacade
|
||||
|
||||
arm_func_start DoMoveDamageLowerSpeed20
|
||||
DoMoveDamageLowerSpeed20: ; 0x0232728C
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _023272E8
|
||||
ldr r1, _023272F4 ; =CONSTRICT_LOWER_SPEED_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _023272E8
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
mov r3, #0
|
||||
bl LowerSpeed
|
||||
_023272E8:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_023272F4: .word CONSTRICT_LOWER_SPEED_CHANCE
|
||||
arm_func_end DoMoveDamageLowerSpeed20
|
||||
|
||||
arm_func_start DoMoveBrickBreak
|
||||
DoMoveBrickBreak: ; 0x023272F8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r6, r1
|
||||
ldr r5, [r6, #0xb4]
|
||||
mov r7, r0
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, r4
|
||||
orr r0, r4, r0
|
||||
ands r4, r0, #0xff
|
||||
beq _0232735C
|
||||
ldrb r0, [r5, #0xd5]
|
||||
cmp r0, #1
|
||||
cmpne r0, #3
|
||||
bne _0232735C
|
||||
ldr r2, _02327364 ; =0x00000ED2
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl EndReflectClassStatus
|
||||
_0232735C:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02327364: .word 0x00000C14
|
||||
#else
|
||||
_02327364: .word 0x00000ED2
|
||||
#endif
|
||||
arm_func_end DoMoveBrickBreak
|
||||
|
||||
arm_func_start DoMoveDamageLowerSpeed100
|
||||
DoMoveDamageLowerSpeed100: ; 0x02327368
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _023273C0
|
||||
mov r2, r4
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _023273C0
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
mov r3, #0
|
||||
bl LowerSpeed
|
||||
_023273C0:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
arm_func_end DoMoveDamageLowerSpeed100
|
||||
|
||||
arm_func_start DoMoveFocusPunch
|
||||
DoMoveFocusPunch: ; 0x023273CC
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r5, r2
|
||||
mov r6, r1
|
||||
mov r1, r5
|
||||
mov r7, r0
|
||||
mov r4, r3
|
||||
bl IsChargingTwoTurnMove
|
||||
cmp r0, #0
|
||||
beq _02327428
|
||||
ldr r1, _02327454 ; =FOCUS_PUNCH_DAMAGE_MULTIPLIER
|
||||
mov r0, r7
|
||||
ldr r3, [r1]
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
str r4, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
movne r1, #1
|
||||
moveq r1, #0
|
||||
mov r0, r7
|
||||
and r4, r1, #0xff
|
||||
bl EndTwoTurnMove
|
||||
b _0232744C
|
||||
_02327428:
|
||||
#ifdef JAPAN
|
||||
mov r0, #0xa10
|
||||
#else
|
||||
mov r0, #0xcd0
|
||||
#endif
|
||||
bl StringFromId
|
||||
str r0, [sp]
|
||||
mov r0, r7
|
||||
mov r1, r7
|
||||
mov r3, r5
|
||||
mov r2, #5
|
||||
bl BeginChargedMove
|
||||
mov r4, #1
|
||||
_0232744C:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_02327454: .word FOCUS_PUNCH_DAMAGE_MULTIPLIER
|
||||
arm_func_end DoMoveFocusPunch
|
||||
|
||||
arm_func_start DoMoveDamageDrain
|
||||
DoMoveDamageDrain: ; 0x02327458
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov sb, r0
|
||||
mov r8, r1
|
||||
mov r7, r2
|
||||
mov r5, r3
|
||||
cmp sb, r8
|
||||
mov r4, #0
|
||||
beq _023274B8
|
||||
cmp sb, #0
|
||||
moveq r0, r4
|
||||
beq _02327498
|
||||
ldr r0, [sb]
|
||||
cmp r0, #1
|
||||
moveq r0, #1
|
||||
movne r0, r4
|
||||
and r0, r0, #0xff
|
||||
_02327498:
|
||||
cmp r0, #0
|
||||
beq _023274B8
|
||||
mov r0, sb
|
||||
mov r1, #0x53
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r6, #0
|
||||
bne _023274C8
|
||||
_023274B8:
|
||||
mov r0, r8
|
||||
mov r1, #0x3a
|
||||
bl AbilityIsActiveVeneer
|
||||
mov r6, r0
|
||||
_023274C8:
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
mov r2, r7
|
||||
mov r3, #0x100
|
||||
str r5, [sp]
|
||||
bl DealDamage
|
||||
movs r5, r0
|
||||
movne r4, #1
|
||||
cmp r4, #0
|
||||
beq _02327590
|
||||
mov r0, sb
|
||||
mov r1, #0
|
||||
bl DungeonRandOutcomeUserAction
|
||||
cmp r0, #0
|
||||
beq _02327590
|
||||
ldr r1, [sb, #0xb4]
|
||||
add r0, r5, r5, lsr #31
|
||||
mov r5, r0, asr #1
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r1, #0x107]
|
||||
#else
|
||||
ldrb r0, [r1, #0x108]
|
||||
#endif
|
||||
mov r4, #1
|
||||
cmp r5, #1
|
||||
movlt r5, r4
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
#ifdef JAPAN
|
||||
strlob r0, [r1, #0x107]
|
||||
#else
|
||||
strlob r0, [r1, #0x108]
|
||||
#endif
|
||||
cmp r6, #0
|
||||
beq _0232754C
|
||||
mov r2, #0xd
|
||||
mov r0, sb
|
||||
mov r1, r5
|
||||
add r3, r2, #0x22c
|
||||
bl ApplyDamageAndEffectsWrapper
|
||||
b _02327590
|
||||
_0232754C:
|
||||
ldr r1, [sb, #0xb4]
|
||||
ldrb r0, [r1, #6]
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
bne _0232756C
|
||||
#ifdef JAPAN
|
||||
add r0, r1, #0x224
|
||||
#else
|
||||
add r0, r1, #0x228
|
||||
#endif
|
||||
mov r1, #0x57
|
||||
bl ExclusiveItemEffectFlagTest
|
||||
_0232756C:
|
||||
cmp r0, #0
|
||||
movne r5, r5, lsl #1
|
||||
mov r6, #1
|
||||
mov r0, sb
|
||||
mov r1, sb
|
||||
mov r2, r5
|
||||
mov r3, #0
|
||||
str r6, [sp]
|
||||
bl TryIncreaseHp
|
||||
_02327590:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
arm_func_end DoMoveDamageDrain
|
||||
|
||||
arm_func_start DoMoveReversal
|
||||
DoMoveReversal: ; 0x02327598
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
ldr ip, [r0, #0xb4]
|
||||
ldr r6, _02327644 ; =0x000003E7
|
||||
ldrsh r5, [ip, #0x12]
|
||||
ldrsh r4, [ip, #0x16]
|
||||
ldrsh ip, [ip, #0x10]
|
||||
add lr, r5, r4
|
||||
cmp lr, r6
|
||||
movle r6, lr
|
||||
mov r4, r6, asr #1
|
||||
add r4, r6, r4, lsr #30
|
||||
cmp ip, r4, asr #2
|
||||
movle r5, #0
|
||||
ble _0232761C
|
||||
ldr r4, _02327644 ; =0x000003E7
|
||||
cmp lr, r4
|
||||
movle r4, lr
|
||||
mov r5, r4, lsl #1
|
||||
mov r4, r5, asr #1
|
||||
add r4, r5, r4, lsr #30
|
||||
cmp ip, r4, asr #2
|
||||
movle r5, #1
|
||||
ble _0232761C
|
||||
ldr r4, _02327644 ; =0x000003E7
|
||||
cmp lr, r4
|
||||
movgt lr, r4
|
||||
add r4, lr, lr, lsl #1
|
||||
mov lr, r4, asr #1
|
||||
add lr, r4, lr, lsr #30
|
||||
cmp ip, lr, asr #2
|
||||
movle r5, #2
|
||||
movgt r5, #3
|
||||
_0232761C:
|
||||
ldr r4, _02327648 ; =REVERSAL_DAMAGE_MULT_TABLE
|
||||
str r3, [sp]
|
||||
ldr r3, [r4, r5, lsl #2]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02327644: .word 0x000003E7
|
||||
_02327648: .word REVERSAL_DAMAGE_MULT_TABLE
|
||||
arm_func_end DoMoveReversal
|
||||
|
||||
arm_func_start DoMoveSmellingSalt
|
||||
DoMoveSmellingSalt: ; 0x0232764C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r4, r1
|
||||
ldr ip, [r4, #0xb4]
|
||||
mov r5, r0
|
||||
ldrb ip, [ip, #0xbf]
|
||||
cmp ip, #4
|
||||
str r3, [sp]
|
||||
bne _02327694
|
||||
mov r3, #0x200
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
movne r2, #1
|
||||
moveq r2, #0
|
||||
mov r1, r4
|
||||
mov r0, r5
|
||||
and r4, r2, #0xff
|
||||
bl EndBurnClassStatus
|
||||
b _023276AC
|
||||
_02327694:
|
||||
mov r3, #0x100
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r4, r0, #0xff
|
||||
_023276AC:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end DoMoveSmellingSalt
|
||||
|
||||
arm_func_start DoMoveMetalSound
|
||||
DoMoveMetalSound: ; 0x023276B4
|
||||
stmdb sp!, {r3, lr}
|
||||
sub sp, sp, #8
|
||||
ldr r2, _023276E4 ; =SPATK_STAT_IDX
|
||||
mov ip, #1
|
||||
ldr r2, [r2]
|
||||
str ip, [sp]
|
||||
mov r3, #3
|
||||
str ip, [sp, #4]
|
||||
bl LowerDefensiveStat
|
||||
mov r0, #1
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_023276E4: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveMetalSound
|
||||
|
||||
arm_func_start DoMoveTickle
|
||||
DoMoveTickle: ; 0x023276E8
|
||||
stmdb sp!, {r4, r5, lr}
|
||||
sub sp, sp, #0xc
|
||||
ldr r2, _02327740 ; =SPATK_STAT_IDX
|
||||
mov r3, #1
|
||||
ldr r2, [r2, #4]
|
||||
str r3, [sp]
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
str r2, [sp, #8]
|
||||
str r3, [sp, #4]
|
||||
bl LowerOffensiveStat
|
||||
add r0, sp, #8
|
||||
mov r3, #1
|
||||
ldr r2, [r0]
|
||||
str r3, [sp]
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
str r3, [sp, #4]
|
||||
bl LowerDefensiveStat
|
||||
mov r0, #1
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02327740: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveTickle
|
||||
143
asm/overlay_29_0232776C.s
Normal file
143
asm/overlay_29_0232776C.s
Normal file
@@ -0,0 +1,143 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0232776C.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveDamageMultihitFatigue
|
||||
DoMoveDamageMultihitFatigue: ; 0x0232776C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r5, r0
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _023277AC
|
||||
mov r1, r4
|
||||
mov r0, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserAction
|
||||
cmp r0, #0
|
||||
ldrne r0, _023277B4 ; =MULTIHIT_FATIGUE_MOVE_USED
|
||||
movne r1, r4
|
||||
strneb r1, [r0]
|
||||
_023277AC:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_023277B4: .word MULTIHIT_FATIGUE_MOVE_USED
|
||||
arm_func_end DoMoveDamageMultihitFatigue
|
||||
|
||||
arm_func_start DoMoveDamageWeightDependent
|
||||
DoMoveDamageWeightDependent: ; 0x023277B8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r6, r1
|
||||
ldr r1, [r6, #0xb4]
|
||||
mov r7, r0
|
||||
ldrsh r0, [r1, #4]
|
||||
mov r5, r2
|
||||
mov r4, r3
|
||||
bl GetWeightMultiplier
|
||||
mov r3, r0
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
str r4, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end DoMoveDamageWeightDependent
|
||||
|
||||
arm_func_start DoMoveDamageBoostAllStats
|
||||
DoMoveDamageBoostAllStats: ; 0x02327804
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #0xc
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _023278D4
|
||||
ldr r1, _023278E0 ; =SILVER_WIND_BOOST_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r1, [r1]
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserAction
|
||||
cmp r0, #0
|
||||
beq _023278D4
|
||||
mov r0, r6
|
||||
mov r1, r6
|
||||
mov r2, #0
|
||||
mov r3, r4
|
||||
ldr r5, [r6, #0xb4]
|
||||
bl BoostSpeedOneStage
|
||||
ldr r1, _023278E4 ; =SPATK_STAT_IDX
|
||||
mov r0, r6
|
||||
ldr r2, [r1, #4]
|
||||
mov r1, r6
|
||||
mov r3, r4
|
||||
str r2, [sp, #8]
|
||||
bl BoostOffensiveStat
|
||||
ldr r1, _023278E4 ; =SPATK_STAT_IDX
|
||||
mov r0, r6
|
||||
ldr r2, [r1]
|
||||
mov r1, r6
|
||||
mov r3, r4
|
||||
str r2, [sp, #4]
|
||||
bl BoostOffensiveStat
|
||||
add r2, sp, #8
|
||||
ldr r2, [r2]
|
||||
mov r0, r6
|
||||
mov r1, r6
|
||||
mov r3, r4
|
||||
bl BoostDefensiveStat
|
||||
add r2, sp, #4
|
||||
ldr r2, [r2]
|
||||
mov r0, r6
|
||||
mov r1, r6
|
||||
mov r3, r4
|
||||
bl BoostDefensiveStat
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r5, #0x107]
|
||||
cmp r0, #1
|
||||
movlo r0, r4
|
||||
strlob r0, [r5, #0x107]
|
||||
#else
|
||||
ldrb r0, [r5, #0x108]
|
||||
cmp r0, #1
|
||||
movlo r0, r4
|
||||
strlob r0, [r5, #0x108]
|
||||
#endif
|
||||
_023278D4:
|
||||
mov r0, r4
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_023278E0: .word SILVER_WIND_BOOST_CHANCE
|
||||
_023278E4: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveDamageBoostAllStats
|
||||
|
||||
arm_func_start DoMoveSynthesis
|
||||
DoMoveSynthesis: ; 0x023278E8
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl GetApparentWeather
|
||||
mov ip, #1
|
||||
ldr r1, _02327924 ; =SYNTHESIS_HP_RESTORATION_TABLE
|
||||
mov r0, r0, lsl #1
|
||||
ldrsh r2, [r1, r0]
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r3, #0
|
||||
str ip, [sp]
|
||||
bl TryIncreaseHp
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02327924: .word SYNTHESIS_HP_RESTORATION_TABLE
|
||||
arm_func_end DoMoveSynthesis
|
||||
559
asm/overlay_29_02327940.s
Normal file
559
asm/overlay_29_02327940.s
Normal file
@@ -0,0 +1,559 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02327940.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveRapidSpin
|
||||
DoMoveRapidSpin: ; 0x02327940
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r5, r0
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _023279A0
|
||||
mov r1, r4
|
||||
mov r0, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserAction
|
||||
cmp r0, #0
|
||||
beq _023279A0
|
||||
ldr r0, [r5, #0xb4]
|
||||
add r0, r0, #0x100
|
||||
#ifdef JAPAN
|
||||
ldrh r0, [r0, #0x8e]
|
||||
#else
|
||||
ldrh r0, [r0, #0x92]
|
||||
#endif
|
||||
tst r0, #2
|
||||
ldrne r0, _023279A8 ; =RAPID_SPIN_BINDING_REMOVAL
|
||||
movne r1, #0
|
||||
strneb r1, [r0]
|
||||
ldreq r0, _023279A8 ; =RAPID_SPIN_BINDING_REMOVAL
|
||||
moveq r1, r4
|
||||
streqb r1, [r0]
|
||||
_023279A0:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_023279A8: .word RAPID_SPIN_BINDING_REMOVAL
|
||||
arm_func_end DoMoveRapidSpin
|
||||
|
||||
arm_func_start DoMoveSureShot
|
||||
DoMoveSureShot: ; 0x023279AC
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r4, r1
|
||||
mov r5, r0
|
||||
ldr r1, _023279E0 ; =SURE_SHOT_TURN_RANGE
|
||||
mov r0, r4
|
||||
mov r2, #0
|
||||
bl CalcStatusDuration
|
||||
mov r2, r0
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl TryInflictSureShotStatus
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_023279E0: .word SURE_SHOT_TURN_RANGE
|
||||
arm_func_end DoMoveSureShot
|
||||
|
||||
arm_func_start DoMoveCosmicPower
|
||||
DoMoveCosmicPower: ; 0x023279E4
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
ldr r2, _02327A20 ; =ATK_STAT_IDX
|
||||
mov r3, #1
|
||||
ldr r2, [r2]
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl BoostDefensiveStat
|
||||
ldr r1, _02327A24 ; =SPATK_STAT_IDX
|
||||
mov r0, r5
|
||||
ldr r2, [r1]
|
||||
mov r1, r4
|
||||
mov r3, #1
|
||||
bl BoostDefensiveStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02327A20: .word ATK_STAT_IDX
|
||||
_02327A24: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveCosmicPower
|
||||
|
||||
arm_func_start DoMoveSkyAttack
|
||||
DoMoveSkyAttack: ; 0x02327A28
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
||||
sub sp, sp, #4
|
||||
mov r6, r2
|
||||
mov r7, r1
|
||||
mov r1, r6
|
||||
mov r8, r0
|
||||
mov r5, r3
|
||||
mov r4, #0
|
||||
bl IsChargingTwoTurnMove
|
||||
cmp r0, #0
|
||||
beq _02327AB8
|
||||
ldr r1, _02327AE8 ; =SKY_ATTACK_DAMAGE_MULTIPLIER
|
||||
mov r0, r8
|
||||
ldr r3, [r1]
|
||||
mov r1, r7
|
||||
mov r2, r6
|
||||
str r5, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02327AAC
|
||||
ldr r1, _02327AEC ; =SKY_ATTACK_CRINGE_CHANCE
|
||||
mov r0, r8
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r7
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02327AAC
|
||||
mov r2, #0
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r3, r2
|
||||
bl TryInflictCringeStatus
|
||||
_02327AAC:
|
||||
mov r0, r8
|
||||
bl EndTwoTurnMove
|
||||
b _02327ADC
|
||||
_02327AB8:
|
||||
ldr r0, _02327AF0 ; =0x00000CD1
|
||||
bl StringFromId
|
||||
str r0, [sp]
|
||||
mov r0, r8
|
||||
mov r1, r8
|
||||
mov r3, r6
|
||||
mov r2, #3
|
||||
bl BeginChargedMove
|
||||
mov r4, #1
|
||||
_02327ADC:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
_02327AE8: .word SKY_ATTACK_DAMAGE_MULTIPLIER
|
||||
_02327AEC: .word SKY_ATTACK_CRINGE_CHANCE
|
||||
#ifdef JAPAN
|
||||
_02327AF0: .word 0x00000A11
|
||||
#else
|
||||
_02327AF0: .word 0x00000CD1
|
||||
#endif
|
||||
arm_func_end DoMoveSkyAttack
|
||||
|
||||
arm_func_start DoMoveDamageFreeze15
|
||||
DoMoveDamageFreeze15: ; 0x02327AF4
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02327B4C
|
||||
ldr r1, _02327B58 ; =POWDER_SNOW_FREEZE_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02327B4C
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #0
|
||||
bl TryInflictFrozenStatus
|
||||
_02327B4C:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02327B58: .word POWDER_SNOW_FREEZE_CHANCE
|
||||
arm_func_end DoMoveDamageFreeze15
|
||||
|
||||
arm_func_start DoMoveMeteorMash
|
||||
DoMoveMeteorMash: ; 0x02327B5C
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
#ifdef EUROPE
|
||||
mov r5, r1
|
||||
#endif
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02327BCC
|
||||
ldr r1, _02327BD8 ; =METEOR_MASH_BOOST_ATTACK_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
#ifdef EUROPE
|
||||
mov r1, r5
|
||||
#else
|
||||
mov r1, r6
|
||||
#endif
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02327BCC
|
||||
ldr r0, _02327BDC ; =ATK_STAT_IDX
|
||||
ldr r5, [r6, #0xb4]
|
||||
ldr r2, [r0]
|
||||
mov r0, r6
|
||||
mov r1, r6
|
||||
mov r3, r4
|
||||
bl BoostOffensiveStat
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r5, #0x107]
|
||||
cmp r0, #1
|
||||
movlo r0, r4
|
||||
strlob r0, [r5, #0x107]
|
||||
#else
|
||||
ldrb r0, [r5, #0x108]
|
||||
cmp r0, #1
|
||||
movlo r0, r4
|
||||
strlob r0, [r5, #0x108]
|
||||
#endif
|
||||
_02327BCC:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02327BD8: .word METEOR_MASH_BOOST_ATTACK_CHANCE
|
||||
_02327BDC: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveMeteorMash
|
||||
|
||||
arm_func_start DoMoveEndure
|
||||
DoMoveEndure: ; 0x02327BE0
|
||||
stmdb sp!, {r3, lr}
|
||||
bl TryInflictEndureStatus
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end DoMoveEndure
|
||||
|
||||
arm_func_start DoMoveLowerSpeed1
|
||||
DoMoveLowerSpeed1: ; 0x02327BF0
|
||||
stmdb sp!, {r3, lr}
|
||||
mov r2, #1
|
||||
mov r3, r2
|
||||
bl LowerSpeed
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end DoMoveLowerSpeed1
|
||||
|
||||
arm_func_start DoMoveDamageConfuse10
|
||||
DoMoveDamageConfuse10: ; 0x02327C08
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02327C64
|
||||
ldr r1, _02327C70 ; =PSYBEAM_CONFUSE_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02327C64
|
||||
mov r2, #0
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r3, r2
|
||||
bl TryInflictConfusedStatus
|
||||
_02327C64:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02327C70: .word PSYBEAM_CONFUSE_CHANCE
|
||||
arm_func_end DoMoveDamageConfuse10
|
||||
|
||||
arm_func_start DoMovePsywave
|
||||
DoMovePsywave: ; 0x02327C74
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r0, #0x80
|
||||
mov r1, #0x180
|
||||
mov r5, r2
|
||||
mov r4, r3
|
||||
bl DungeonRandRange
|
||||
ldr r1, [r7, #0xb4]
|
||||
mov r2, r5
|
||||
ldrb r1, [r1, #0xa]
|
||||
mul r1, r0, r1
|
||||
movs r3, r1, asr #8
|
||||
movmi r3, #1
|
||||
cmp r3, #0xc7
|
||||
movgt r3, #0xc7
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
str r4, [sp]
|
||||
bl ov29_02332F18
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end DoMovePsywave
|
||||
|
||||
arm_func_start DoMoveDamageLowerDefensiveStatVariable
|
||||
DoMoveDamageLowerDefensiveStatVariable: ; 0x02327CD8
|
||||
stmdb sp!, {r0, r1, r2, r3}
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
sub sp, sp, #8
|
||||
ldr ip, [sp, #0x30]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
str ip, [sp]
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02327D4C
|
||||
ldrsh r2, [sp, #0x2c]
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02327D4C
|
||||
add r0, sp, #0x24
|
||||
mov ip, r4
|
||||
ldr r2, [r0]
|
||||
str ip, [sp]
|
||||
mov ip, #0
|
||||
ldrsh r3, [sp, #0x28]
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
str ip, [sp, #4]
|
||||
bl LowerDefensiveStat
|
||||
_02327D4C:
|
||||
mov r0, r4
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r4, r5, r6, lr}
|
||||
add sp, sp, #0x10
|
||||
bx lr
|
||||
arm_func_end DoMoveDamageLowerDefensiveStatVariable
|
||||
|
||||
arm_func_start DoMovePsychoBoost
|
||||
DoMovePsychoBoost: ; 0x02327D60
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
sub sp, sp, #8
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r5, r0
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02327DC0
|
||||
mov r1, r4
|
||||
mov r0, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserAction
|
||||
cmp r0, #0
|
||||
beq _02327DC0
|
||||
ldr r0, _02327DCC ; =SPATK_STAT_IDX
|
||||
mov ip, #0
|
||||
ldr r2, [r0]
|
||||
str ip, [sp]
|
||||
mov r0, r5
|
||||
mov r1, r5
|
||||
mov r3, #2
|
||||
str ip, [sp, #4]
|
||||
bl LowerOffensiveStat
|
||||
_02327DC0:
|
||||
mov r0, r4
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02327DCC: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMovePsychoBoost
|
||||
|
||||
arm_func_start DoMoveUproar
|
||||
DoMoveUproar: ; 0x02327DD0
|
||||
stmdb sp!, {r3, lr}
|
||||
bl TryInflictSleeplessStatus
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end DoMoveUproar
|
||||
|
||||
arm_func_start DoMoveWaterSpout
|
||||
DoMoveWaterSpout: ; 0x02327DE0
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
ldr ip, [r0, #0xb4]
|
||||
ldr r6, _02327E8C ; =0x000003E7
|
||||
ldrsh r5, [ip, #0x12]
|
||||
ldrsh r4, [ip, #0x16]
|
||||
ldrsh ip, [ip, #0x10]
|
||||
add lr, r5, r4
|
||||
cmp lr, r6
|
||||
movle r6, lr
|
||||
mov r4, r6, asr #1
|
||||
add r4, r6, r4, lsr #30
|
||||
cmp ip, r4, asr #2
|
||||
movle r5, #0
|
||||
ble _02327E64
|
||||
ldr r4, _02327E8C ; =0x000003E7
|
||||
cmp lr, r4
|
||||
movle r4, lr
|
||||
mov r5, r4, lsl #1
|
||||
mov r4, r5, asr #1
|
||||
add r4, r5, r4, lsr #30
|
||||
cmp ip, r4, asr #2
|
||||
movle r5, #1
|
||||
ble _02327E64
|
||||
ldr r4, _02327E8C ; =0x000003E7
|
||||
cmp lr, r4
|
||||
movgt lr, r4
|
||||
add r4, lr, lr, lsl #1
|
||||
mov lr, r4, asr #1
|
||||
add lr, r4, lr, lsr #30
|
||||
cmp ip, lr, asr #2
|
||||
movle r5, #2
|
||||
movgt r5, #3
|
||||
_02327E64:
|
||||
ldr r4, _02327E90 ; =WATER_SPOUT_DAMAGE_MULT_TABLE
|
||||
str r3, [sp]
|
||||
ldr r3, [r4, r5, lsl #2]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02327E8C: .word 0x000003E7
|
||||
_02327E90: .word WATER_SPOUT_DAMAGE_MULT_TABLE
|
||||
arm_func_end DoMoveWaterSpout
|
||||
|
||||
arm_func_start DoMovePsychUp
|
||||
DoMovePsychUp: ; 0x02327E94
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r6, r1
|
||||
mov r7, r0
|
||||
mov r0, r6
|
||||
ldr r5, [r7, #0xb4]
|
||||
ldr r4, [r6, #0xb4]
|
||||
bl ov29_022E5474
|
||||
mov r0, #0
|
||||
_02327EB4:
|
||||
add lr, r4, r0, lsl #1
|
||||
ldrsh r1, [lr, #0x24]
|
||||
add ip, r5, r0, lsl #1
|
||||
add r3, r4, r0, lsl #2
|
||||
strh r1, [ip, #0x24]
|
||||
ldrsh r1, [lr, #0x28]
|
||||
add r2, r5, r0, lsl #2
|
||||
add r0, r0, #1
|
||||
strh r1, [ip, #0x28]
|
||||
ldrsh r1, [lr, #0x2c]
|
||||
cmp r0, #2
|
||||
strh r1, [ip, #0x2c]
|
||||
ldr r1, [r3, #0x34]
|
||||
str r1, [r2, #0x34]
|
||||
ldr r1, [r3, #0x3c]
|
||||
str r1, [r2, #0x3c]
|
||||
blt _02327EB4
|
||||
mov r0, #0
|
||||
mov r1, r6
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r2, _02327F30 ; =0x00000D62
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r5, #0x107]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [r5, #0x107]
|
||||
#else
|
||||
ldrb r0, [r5, #0x108]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [r5, #0x108]
|
||||
#endif
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02327F30: .word 0x00000AA2
|
||||
#else
|
||||
_02327F30: .word 0x00000D62
|
||||
#endif
|
||||
arm_func_end DoMovePsychUp
|
||||
|
||||
arm_func_start DoMoveDamageWithRecoil
|
||||
DoMoveDamageWithRecoil: ; 0x02327F34
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, sp, #0x18
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r7, r0
|
||||
mov r6, r2
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02327FFC
|
||||
mov r0, r7
|
||||
bl EntityIsValidMoveEffects__0232800C
|
||||
cmp r0, #0
|
||||
beq _02327FFC
|
||||
ldr r1, [r7, #0xb4]
|
||||
ldr r0, _02328008 ; =0x000003E7
|
||||
ldrsh r2, [r1, #0x12]
|
||||
ldrsh r1, [r1, #0x16]
|
||||
mov r4, #1
|
||||
add r1, r2, r1
|
||||
cmp r1, r0
|
||||
movgt r1, r0
|
||||
mov r0, r1, asr #2
|
||||
add r0, r1, r0, lsr #29
|
||||
movs r5, r0, asr #3
|
||||
mov r0, r7
|
||||
mov r1, #7
|
||||
moveq r5, #1
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
bne _02327FFC
|
||||
mov r0, r7
|
||||
mov r1, #0
|
||||
bl DungeonRandOutcomeUserAction
|
||||
cmp r0, #0
|
||||
beq _02327FFC
|
||||
ldrh r1, [r6, #4]
|
||||
mov r2, #0
|
||||
mov r0, #0x23c
|
||||
stmia sp, {r1, r2}
|
||||
str r0, [sp, #8]
|
||||
mov r0, #0x14
|
||||
str r0, [sp, #0xc]
|
||||
mov r0, r4
|
||||
str r0, [sp, #0x10]
|
||||
mov r0, r7
|
||||
mov r1, r5
|
||||
mov r3, r2
|
||||
str r2, [sp, #0x14]
|
||||
bl CalcRecoilDamageFixed
|
||||
_02327FFC:
|
||||
mov r0, r4
|
||||
add sp, sp, #0x18
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_02328008: .word 0x000003E7
|
||||
arm_func_end DoMoveDamageWithRecoil
|
||||
10
include/overlay_29_02325FB4.h
Normal file
10
include/overlay_29_02325FB4.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_02325FB4_H
|
||||
#define PMDSKY_OVERLAY_29_02325FB4_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveVitalThrow(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_02326188.h
Normal file
10
include/overlay_29_02326188.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_02326188_H
|
||||
#define PMDSKY_OVERLAY_29_02326188_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveHealStatus(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_0232620C.h
Normal file
10
include/overlay_29_0232620C.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_0232620C_H
|
||||
#define PMDSKY_OVERLAY_29_0232620C_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveEncore(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_02326550.h
Normal file
10
include/overlay_29_02326550.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_02326550_H
|
||||
#define PMDSKY_OVERLAY_29_02326550_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveStringShot(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_023268BC.h
Normal file
10
include/overlay_29_023268BC.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_023268BC_H
|
||||
#define PMDSKY_OVERLAY_29_023268BC_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveFocusEnergy(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_02326CB4.h
Normal file
10
include/overlay_29_02326CB4.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_02326CB4_H
|
||||
#define PMDSKY_OVERLAY_29_02326CB4_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveCounter(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_02326E80.h
Normal file
10
include/overlay_29_02326E80.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_02326E80_H
|
||||
#define PMDSKY_OVERLAY_29_02326E80_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveParalyze__02326E80(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
11
include/overlay_29_02327744.h
Normal file
11
include/overlay_29_02327744.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_02327744_H
|
||||
#define PMDSKY_OVERLAY_29_02327744_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveShadowHold(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
bool8 DoMoveHaze(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_02327928.h
Normal file
10
include/overlay_29_02327928.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_02327928_H
|
||||
#define PMDSKY_OVERLAY_29_02327928_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveBoostSpeed1(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
18
main.lsf
18
main.lsf
@@ -997,6 +997,24 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_02324BE8.o
|
||||
Object src/overlay_29_02325620.o
|
||||
Object asm/overlay_29_02325644.o
|
||||
Object src/overlay_29_02325FB4.o
|
||||
Object asm/overlay_29_02325FC4.o
|
||||
Object src/overlay_29_02326188.o
|
||||
Object asm/overlay_29_023261A0.o
|
||||
Object src/overlay_29_0232620C.o
|
||||
Object asm/overlay_29_02326220.o
|
||||
Object src/overlay_29_02326550.o
|
||||
Object asm/overlay_29_02326568.o
|
||||
Object src/overlay_29_023268BC.o
|
||||
Object asm/overlay_29_023268CC.o
|
||||
Object src/overlay_29_02326CB4.o
|
||||
Object asm/overlay_29_02326CC8.o
|
||||
Object src/overlay_29_02326E80.o
|
||||
Object asm/overlay_29_02326E98.o
|
||||
Object src/overlay_29_02327744.o
|
||||
Object asm/overlay_29_0232776C.o
|
||||
Object src/overlay_29_02327928.o
|
||||
Object asm/overlay_29_02327940.o
|
||||
Object src/overlay_29_0232800C.o
|
||||
Object asm/overlay_29_02328030.o
|
||||
Object src/overlay_29_0232A3D8.o
|
||||
|
||||
10
src/overlay_29_02325FB4.c
Normal file
10
src/overlay_29_02325FB4.c
Normal file
@@ -0,0 +1,10 @@
|
||||
#include "overlay_29_02325FB4.h"
|
||||
|
||||
extern void TryInflictVitalThrowStatus(struct entity *user, struct entity *target);
|
||||
|
||||
bool8 DoMoveVitalThrow(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
TryInflictVitalThrowStatus(attacker, defender);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
10
src/overlay_29_02326188.c
Normal file
10
src/overlay_29_02326188.c
Normal file
@@ -0,0 +1,10 @@
|
||||
#include "overlay_29_02326188.h"
|
||||
|
||||
extern void EndNegativeStatusConditionWrapper(struct entity *user, struct entity *target, bool8 displayMessage, bool8 fromMove);
|
||||
|
||||
bool8 DoMoveHealStatus(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
EndNegativeStatusConditionWrapper(attacker, defender, TRUE, FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
10
src/overlay_29_0232620C.c
Normal file
10
src/overlay_29_0232620C.c
Normal file
@@ -0,0 +1,10 @@
|
||||
#include "overlay_29_0232620C.h"
|
||||
|
||||
extern void TryInflictEncoreStatus(struct entity *user, struct entity *target, bool8 onlyCheck);
|
||||
|
||||
bool8 DoMoveEncore(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
TryInflictEncoreStatus(attacker, defender, FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
9
src/overlay_29_02326550.c
Normal file
9
src/overlay_29_02326550.c
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "overlay_29_02326550.h"
|
||||
#include "move_orb_effects.h"
|
||||
|
||||
bool8 DoMoveStringShot(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
LowerSpeed(attacker, defender, 1, TRUE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
10
src/overlay_29_023268BC.c
Normal file
10
src/overlay_29_023268BC.c
Normal file
@@ -0,0 +1,10 @@
|
||||
#include "overlay_29_023268BC.h"
|
||||
|
||||
extern void TryInflictFocusEnergyStatus(struct entity *user, struct entity *target);
|
||||
|
||||
bool8 DoMoveFocusEnergy(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
TryInflictFocusEnergyStatus(attacker, defender);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
10
src/overlay_29_02326CB4.c
Normal file
10
src/overlay_29_02326CB4.c
Normal file
@@ -0,0 +1,10 @@
|
||||
#include "overlay_29_02326CB4.h"
|
||||
|
||||
extern void SetReflectStatus(struct entity *user, struct entity *target, s32 status);
|
||||
|
||||
bool8 DoMoveCounter(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
SetReflectStatus(attacker, defender, 4);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
9
src/overlay_29_02326E80.c
Normal file
9
src/overlay_29_02326E80.c
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "overlay_29_02326E80.h"
|
||||
#include "move_orb_effects.h"
|
||||
|
||||
bool8 DoMoveParalyze__02326E80(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
TryInflictParalysisStatus(attacker, defender, TRUE, FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
18
src/overlay_29_02327744.c
Normal file
18
src/overlay_29_02327744.c
Normal file
@@ -0,0 +1,18 @@
|
||||
#include "overlay_29_02327744.h"
|
||||
|
||||
extern void TryInflictShadowHoldStatus(struct entity *user, struct entity *target, bool8 onlyCheck);
|
||||
extern void TryResetStatChanges(struct entity *user, struct entity *target, bool8 displayMessage);
|
||||
|
||||
bool8 DoMoveShadowHold(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
TryInflictShadowHoldStatus(attacker, defender, FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 DoMoveHaze(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
TryResetStatChanges(attacker, defender, TRUE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
9
src/overlay_29_02327928.c
Normal file
9
src/overlay_29_02327928.c
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "overlay_29_02327928.h"
|
||||
#include "move_orb_effects.h"
|
||||
|
||||
bool8 DoMoveBoostSpeed1(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
BoostSpeedOneStage(attacker, defender, 0, TRUE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
Reference in New Issue
Block a user