Decomp ten more move-effect wrappers in overlay_29

DoMoveLowerSpeed1, DoMoveParalyze__02328230, DoMoveParalyze__0232B434,
DoMoveConfuse, DoMovePoison, DoMoveToxic, DoMoveCurse, DoMoveWarp,
DoMoveLightScreen and DoMovePerishSong -- the same shape as the previous two
batches.

Three forward to helpers already declared in move_orb_effects.h (LowerSpeed and
TryInflictParalysisStatus), which fixes their argument meanings. The rest take
provisional externs written from the call site; TryWarp's third and fourth
parameters are left unnamed because nothing establishes what they are.

DoMoveParalyze__02328230 and DoMoveParalyze__0232B434 join
DoMoveParalyze__02326E80 from an earlier batch: three separate wrappers around
TryInflictParalysisStatus with identical arguments.

Authored by Claude (Opus 5) under human direction. All ten matched on the first
candidate. Confirmed by a matching build: build/pmdsky.us/pmdsky.us.nds: OK.
None carries a region conditional, so US alone is sufficient.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
cecilarmitais
2026-08-19 15:45:54 -07:00
parent 14f8c5116c
commit 7c02eea61b
45 changed files with 3168 additions and 3045 deletions

View File

@@ -5,7 +5,6 @@
.public DungeonRandRange
.public LowerDefensiveStat
.public LowerOffensiveStat
.public LowerSpeed
.public PSYBEAM_CONFUSE_CHANCE
.public SPATK_STAT_IDX
.public TryInflictConfusedStatus

View File

@@ -1,6 +1,4 @@
#pragma once
.public BeginChargedMove
.public BoostDefensiveStat
.public DUNGEON_PTR
.public DealDamage
.public DungeonRandOutcomeUserTargetInteraction
@@ -8,12 +6,7 @@
.public GetMoveType
.public InitMove
.public LICK_PARALYZE_CHANCE
.public LowerDefensiveStat
.public NATURE_POWER_TABLE
.public SHADOW_BALL_LOWER_SPECIAL_DEFENSE_CHANCE
.public SPATK_STAT_IDX
.public StringFromId
.public THUNDERBOLT_PARALYZE_CHANCE
.public TryExplosion
.public TryIncreaseHp
.public TryInflictParalysisStatus

View File

@@ -0,0 +1,11 @@
#pragma once
.public BeginChargedMove
.public BoostDefensiveStat
.public DealDamage
.public DungeonRandOutcomeUserTargetInteraction
.public LowerDefensiveStat
.public SHADOW_BALL_LOWER_SPECIAL_DEFENSE_CHANCE
.public SPATK_STAT_IDX
.public StringFromId
.public THUNDERBOLT_PARALYZE_CHANCE
.public TryInflictParalysisStatus

View File

@@ -52,7 +52,6 @@
.public TryExplosion
.public TryIncreaseHp
.public TryInflictBurnStatus
.public TryInflictConfusedStatus
.public TryInflictCringeStatus
.public TryInflictPoisonedStatus
.public TryInflictStockpileStatus

View File

@@ -1,15 +1,6 @@
#pragma once
.public ATK_STAT_IDX
.public ActivateMotorDrive
.public BoostDefensiveStat
.public BoostOffensiveStat
.public DealDamage
.public DefenderAbilityIsActiveMoveEffects__02328634
.public DungeonRandOutcomeUserTargetInteraction
.public GetMoveType
.public GetMoveTypeForMonster
.public LogMessageByIdWithPopupCheckUserTarget
.public SPATK_STAT_IDX
.public THUNDERSHOCK_PARALYZE_CHANCE
.public TryInflictParalysisStatus
.public TryWarp

View File

@@ -0,0 +1,9 @@
#pragma once
.public ActivateMotorDrive
.public DealDamage
.public DefenderAbilityIsActiveMoveEffects__02328634
.public DungeonRandOutcomeUserTargetInteraction
.public GetMoveType
.public GetMoveTypeForMonster
.public THUNDERSHOCK_PARALYZE_CHANCE
.public TryInflictParalysisStatus

View File

@@ -1,40 +1,4 @@
#pragma once
.public ATK_STAT_IDX
.public AbilityIsActiveVeneer
.public AdvanceFrame
.public BoostDefensiveStat
.public CalcDamageFixedWrapper
.public ChangeMonsterAnimation
.public DIRECTIONS_XY
.public DealDamage
.public DefenderAbilityIsActiveMoveEffects__02329F14
.public DungeonRandInt
.public DungeonRandOutcomeUserTargetInteraction
.public EntityIsValidMoveEffects__0232A3D8
.public GetDamageSourceWrapper
.public GetTileSafe
.public IncrementEntityPixelPosXY
.public InitMove
.public IsFloorOver
.public ItemZInit
.public LogMessageByIdWithPopupCheckUserTarget
.public LowerDefensiveStat
.public LowerOffensiveStat
.public MoveMonsterToPos
.public RemoveEquivItem
.public STEEL_WING_BOOST_DEFENSE_CHANCE
.public SetEntityPixelPosXY
.public SpawnDroppedItem
.public SubstitutePlaceholderStringTags
.public TryIncreaseHp
.public TryInflictConfusedStatus
.public TryInflictCurseStatus
.public TwoTurnMoveForcedMiss
.public UpdateEntityPixelPos
.public _s32_div_f
.public ov10_022C44B4
.public ov10_022C49D4
.public ov29_022E2CA0
.public ov29_022FFB90
.public ov29_02321164
.public ov29_02321260

View File

@@ -0,0 +1,37 @@
#pragma once
.public ATK_STAT_IDX
.public AbilityIsActiveVeneer
.public AdvanceFrame
.public BoostDefensiveStat
.public CalcDamageFixedWrapper
.public ChangeMonsterAnimation
.public DIRECTIONS_XY
.public DealDamage
.public DefenderAbilityIsActiveMoveEffects__02329F14
.public DungeonRandInt
.public DungeonRandOutcomeUserTargetInteraction
.public EntityIsValidMoveEffects__0232A3D8
.public GetDamageSourceWrapper
.public GetTileSafe
.public IncrementEntityPixelPosXY
.public InitMove
.public IsFloorOver
.public ItemZInit
.public LogMessageByIdWithPopupCheckUserTarget
.public LowerDefensiveStat
.public LowerOffensiveStat
.public MoveMonsterToPos
.public RemoveEquivItem
.public STEEL_WING_BOOST_DEFENSE_CHANCE
.public SetEntityPixelPosXY
.public SpawnDroppedItem
.public SubstitutePlaceholderStringTags
.public TryInflictConfusedStatus
.public TwoTurnMoveForcedMiss
.public UpdateEntityPixelPos
.public _s32_div_f
.public ov10_022C44B4
.public ov29_022E2CA0
.public ov29_022FFB90
.public ov29_02321164
.public ov29_02321260

View File

@@ -1,106 +1,7 @@
#pragma once
.public ATK_STAT_IDX
.public AbilityIsActiveVeneer
.public AddHeldItemToBag
.public AllocateTemp1024ByteBufferFromPool
.public AnimationDelayOrSomething
.public ApplyDamageAndEffectsWrapper
.public AreLateGameTrapsEnabledWrapper
.public BAG_ITEMS_PTR_MIRROR
.public BLAZE_KICK_BURN_CHANCE
.public BeginChargedMove
.public BoostDefensiveStat
.public BoostOffensiveStat
.public BoostSpeedOneStage
.public CRUSH_CLAW_LOWER_DEFENSE_CHANCE
.public CalcDamageFixedWrapper
.public CalcStatusDuration
.public CeilFixedPoint
.public DIZZY_PUNCH_CONFUSE_CHANCE
.public DRAGON_RAGE_FIXED_DAMAGE
.public DUNGEON_PTR
.public DealDamage
.public DungeonRandInt
.public DungeonRandOutcomeUserAction
.public DungeonRandOutcomeUserTargetInteraction
.public ERUPTION_DAMAGE_MULT_TABLE
.public EndFrozenStatus
.public EndTwoTurnMove
.public EntityIsValidMoveEffects__0232A3D8
.public EntityIsValidMoveEffects__0232C500
.public GendersNotEqualNotGenderless
.public GetDamageSourceWrapper
.public GetMoveCategory
.public GetMoveType
.public GetTreatmentBetweenMonsters
.public IMPRISON_TURN_RANGE
.public InitMove
.public InitStandardItem
.public IsBagFull
.public IsChargingTwoTurnMove
.public IsExperienceLocked
.public IsFullFloorFixedRoom
.public IsMonsterSleeping
.public ItemZInit
.public LUSTER_PURGE_LOWER_SPECIAL_DEFENSE_CHANCE
.public LogMessageByIdWithPopupCheckUserTarget
.public LowerDefensiveStat
.public LowerHitChanceStat
.public LowerOffensiveStat
.public LowerSpeed
.public METAL_CLAW_BOOST_ATTACK_CHANCE
.public METRONOME_NEXT_INDEX
.public METRONOME_TABLE
.public MIST_BALL_LOWER_SPECIAL_ATTACK_CHANCE
.public POISON_TAIL_POISON_CHANCE
.public RemoveEquivItem
.public RevealTrapsNearby
.public SECRET_POWER_EFFECT_CHANCE
.public SKULL_BASH_DAMAGE_MULTIPLIER
.public SLEEP_TURN_RANGE
.public SPATK_STAT_IDX
.public SetPreprocessorArgsIdVal
.public StringFromId
.public SubstitutePlaceholderStringTags
.public TryBlowAway
.public TryIncreaseHp
.public TryInflictBurnStatus
.public TryInflictConfusedStatus
.public TryInflictConstrictionStatus
.public TryInflictCringeStatus
.public TryInflictDecoyStatus
.public TryInflictDestinyBondStatus
.public TryInflictFrozenStatus
.public TryInflictInfatuatedStatus
.public TryInflictLeechSeedStatus
.public TryInflictLightScreenStatus
.public TryInflictMagicCoatStatus
.public TryInflictMirrorCoatStatus
.public TryInflictParalysisStatus
.public TryInflictPausedStatus
.public TryInflictPerishSongStatus
.public TryInflictPoisonedStatus
.public TryInflictProtectStatus
.public TryInflictReflectStatus
.public TryInflictSleepStatus
.public TryInflictSnatchStatus
.public TryInflictWrappedStatus
.public TrySmashWall
.public TrySpawnTrap
.public TryTransform
.public TryWarp
.public UpdateTrapsVisibility
.public WHIRLPOOL_CONSTRICTION_CHANCE
.public ov10_022C4924
.public ov10_022C4C3C
.public ov10_022C4C3E
.public ov10_022C5DE0
.public ov10_022C6321
.public ov10_022C6322
.public ov29_022F8FF8
.public ov29_022F9EA0
.public ov29_02324D60
.public ov29_02332F18
.public ov29_02352B1C
.public ov29_0237CA84
.public sub_02050FF8

View File

@@ -0,0 +1,37 @@
#pragma once
.public ATK_STAT_IDX
.public BLAZE_KICK_BURN_CHANCE
.public BoostDefensiveStat
.public BoostOffensiveStat
.public CRUSH_CLAW_LOWER_DEFENSE_CHANCE
.public CalcStatusDuration
.public DIZZY_PUNCH_CONFUSE_CHANCE
.public DUNGEON_PTR
.public DealDamage
.public DungeonRandInt
.public DungeonRandOutcomeUserTargetInteraction
.public ERUPTION_DAMAGE_MULT_TABLE
.public EndFrozenStatus
.public EntityIsValidMoveEffects__0232A3D8
.public GetTreatmentBetweenMonsters
.public IMPRISON_TURN_RANGE
.public IsExperienceLocked
.public LogMessageByIdWithPopupCheckUserTarget
.public LowerDefensiveStat
.public LowerHitChanceStat
.public LowerOffensiveStat
.public LowerSpeed
.public SECRET_POWER_EFFECT_CHANCE
.public SLEEP_TURN_RANGE
.public TryIncreaseHp
.public TryInflictBurnStatus
.public TryInflictConfusedStatus
.public TryInflictCringeStatus
.public TryInflictFrozenStatus
.public TryInflictParalysisStatus
.public TryInflictPausedStatus
.public TryInflictPoisonedStatus
.public TryInflictSleepStatus
.public TryWarp
.public ov10_022C6321
.public ov29_02332F18

View File

@@ -0,0 +1,20 @@
#pragma once
.public AbilityIsActiveVeneer
.public AllocateTemp1024ByteBufferFromPool
.public BoostOffensiveStat
.public DUNGEON_PTR
.public DealDamage
.public DungeonRandOutcomeUserTargetInteraction
.public EndFrozenStatus
.public IsFullFloorFixedRoom
.public LogMessageByIdWithPopupCheckUserTarget
.public POISON_TAIL_POISON_CHANCE
.public SPATK_STAT_IDX
.public SetPreprocessorArgsIdVal
.public SubstitutePlaceholderStringTags
.public TryBlowAway
.public TryInflictConstrictionStatus
.public TryInflictPoisonedStatus
.public TryTransform
.public WHIRLPOOL_CONSTRICTION_CHANCE
.public ov10_022C6322

View File

@@ -0,0 +1,68 @@
#pragma once
.public ATK_STAT_IDX
.public AbilityIsActiveVeneer
.public AddHeldItemToBag
.public AnimationDelayOrSomething
.public ApplyDamageAndEffectsWrapper
.public AreLateGameTrapsEnabledWrapper
.public BAG_ITEMS_PTR_MIRROR
.public BeginChargedMove
.public BoostDefensiveStat
.public BoostOffensiveStat
.public BoostSpeedOneStage
.public CalcDamageFixedWrapper
.public DRAGON_RAGE_FIXED_DAMAGE
.public DUNGEON_PTR
.public DealDamage
.public DungeonRandOutcomeUserAction
.public DungeonRandOutcomeUserTargetInteraction
.public EndTwoTurnMove
.public EntityIsValidMoveEffects__0232C500
.public GendersNotEqualNotGenderless
.public GetDamageSourceWrapper
.public GetMoveCategory
.public GetMoveType
.public InitMove
.public InitStandardItem
.public IsBagFull
.public IsChargingTwoTurnMove
.public IsMonsterSleeping
.public ItemZInit
.public LUSTER_PURGE_LOWER_SPECIAL_DEFENSE_CHANCE
.public LogMessageByIdWithPopupCheckUserTarget
.public LowerDefensiveStat
.public LowerOffensiveStat
.public METAL_CLAW_BOOST_ATTACK_CHANCE
.public METRONOME_NEXT_INDEX
.public METRONOME_TABLE
.public MIST_BALL_LOWER_SPECIAL_ATTACK_CHANCE
.public RemoveEquivItem
.public RevealTrapsNearby
.public SKULL_BASH_DAMAGE_MULTIPLIER
.public SPATK_STAT_IDX
.public StringFromId
.public SubstitutePlaceholderStringTags
.public TryIncreaseHp
.public TryInflictDecoyStatus
.public TryInflictDestinyBondStatus
.public TryInflictInfatuatedStatus
.public TryInflictLeechSeedStatus
.public TryInflictMagicCoatStatus
.public TryInflictMirrorCoatStatus
.public TryInflictProtectStatus
.public TryInflictReflectStatus
.public TryInflictSnatchStatus
.public TryInflictWrappedStatus
.public TrySmashWall
.public TrySpawnTrap
.public UpdateTrapsVisibility
.public ov10_022C4924
.public ov10_022C4C3C
.public ov10_022C4C3E
.public ov10_022C5DE0
.public ov29_022F8FF8
.public ov29_022F9EA0
.public ov29_02324D60
.public ov29_02332F18
.public ov29_02352B1C
.public ov29_0237CA84

View File

@@ -1,18 +1,8 @@
.include "asm/macros.inc"
.include "overlay_29_02327BF0.inc"
.include "overlay_29_02327C08.inc"
.text
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}

View File

@@ -172,117 +172,3 @@ DoMoveSelfdestruct: ; 0x023281D8
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end DoMoveSelfdestruct
arm_func_start DoMoveParalyze__02328230
DoMoveParalyze__02328230: ; 0x02328230
stmdb sp!, {r3, lr}
mov r2, #1
mov r3, #0
bl TryInflictParalysisStatus
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end DoMoveParalyze__02328230
arm_func_start DoMoveShadowBall
DoMoveShadowBall: ; 0x02328248
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 _023282B4
ldr r1, _023282C0 ; =SHADOW_BALL_LOWER_SPECIAL_DEFENSE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _023282B4
ldr r0, _023282C4 ; =SPATK_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
_023282B4:
mov r0, r4
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_023282C0: .word SHADOW_BALL_LOWER_SPECIAL_DEFENSE_CHANCE
_023282C4: .word SPATK_STAT_IDX
arm_func_end DoMoveShadowBall
arm_func_start DoMoveCharge
DoMoveCharge: ; 0x023282C8
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r6, r0
ldr r0, _02328320 ; =0x00000CD9
mov r5, r1
mov r4, r2
bl StringFromId
str r0, [sp]
mov r0, r6
mov r1, r5
mov r3, r4
mov r2, #0xb
bl BeginChargedMove
ldr r2, _02328324 ; =SPATK_STAT_IDX
mov r0, r6
mov r1, r5
ldr r2, [r2]
mov r3, #1
bl BoostDefensiveStat
mov r0, #1
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
#ifdef JAPAN
_02328320: .word 0x00000A19
#else
_02328320: .word 0x00000CD9
#endif
_02328324: .word SPATK_STAT_IDX
arm_func_end DoMoveCharge
arm_func_start DoMoveThunderbolt
DoMoveThunderbolt: ; 0x02328328
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 _02328384
ldr r1, _02328390 ; =THUNDERBOLT_PARALYZE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02328384
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictParalysisStatus
_02328384:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02328390: .word THUNDERBOLT_PARALYZE_CHANCE
arm_func_end DoMoveThunderbolt

108
asm/overlay_29_02328248.s Normal file
View File

@@ -0,0 +1,108 @@
.include "asm/macros.inc"
.include "overlay_29_02328248.inc"
.text
arm_func_start DoMoveShadowBall
DoMoveShadowBall: ; 0x02328248
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 _023282B4
ldr r1, _023282C0 ; =SHADOW_BALL_LOWER_SPECIAL_DEFENSE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _023282B4
ldr r0, _023282C4 ; =SPATK_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
_023282B4:
mov r0, r4
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_023282C0: .word SHADOW_BALL_LOWER_SPECIAL_DEFENSE_CHANCE
_023282C4: .word SPATK_STAT_IDX
arm_func_end DoMoveShadowBall
arm_func_start DoMoveCharge
DoMoveCharge: ; 0x023282C8
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r6, r0
ldr r0, _02328320 ; =0x00000CD9
mov r5, r1
mov r4, r2
bl StringFromId
str r0, [sp]
mov r0, r6
mov r1, r5
mov r3, r4
mov r2, #0xb
bl BeginChargedMove
ldr r2, _02328324 ; =SPATK_STAT_IDX
mov r0, r6
mov r1, r5
ldr r2, [r2]
mov r3, #1
bl BoostDefensiveStat
mov r0, #1
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
#ifdef JAPAN
_02328320: .word 0x00000A19
#else
_02328320: .word 0x00000CD9
#endif
_02328324: .word SPATK_STAT_IDX
arm_func_end DoMoveCharge
arm_func_start DoMoveThunderbolt
DoMoveThunderbolt: ; 0x02328328
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 _02328384
ldr r1, _02328390 ; =THUNDERBOLT_PARALYZE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02328384
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictParalysisStatus
_02328384:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02328390: .word THUNDERBOLT_PARALYZE_CHANCE
arm_func_end DoMoveThunderbolt

View File

@@ -1173,13 +1173,3 @@ _02329350:
.align 2, 0
_023293C8: .word 0x00000221
arm_func_end DoMoveSeismicToss
arm_func_start DoMoveConfuse
DoMoveConfuse: ; 0x023293CC
stmdb sp!, {r3, lr}
mov r2, #1
mov r3, #0
bl TryInflictConfusedStatus
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end DoMoveConfuse

View File

@@ -51,112 +51,3 @@ DoMoveBoostDefense2: ; 0x023296D8
.align 2, 0
_023296F4: .word ATK_STAT_IDX
arm_func_end DoMoveBoostDefense2
arm_func_start DoMoveWarp
DoMoveWarp: ; 0x023296F8
stmdb sp!, {r3, lr}
mov r2, #0
mov r3, r2
bl TryWarp
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end DoMoveWarp
arm_func_start DoMoveThundershock
DoMoveThundershock: ; 0x02329710
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 _0232976C
ldr r1, _02329778 ; =THUNDERSHOCK_PARALYZE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232976C
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictParalysisStatus
_0232976C:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02329778: .word THUNDERSHOCK_PARALYZE_CHANCE
arm_func_end DoMoveThundershock
arm_func_start DoMoveThunderWave
DoMoveThunderWave: ; 0x0232977C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r2
mov r6, r1
mov r1, r5
mov r7, r0
bl GetMoveTypeForMonster
mov r4, r0
mov r0, r5
bl GetMoveType
cmp r4, r0
bne _023297D4
mov r0, r7
mov r1, r6
mov r2, #0x66
#ifndef JAPAN
mov r3, #1
#endif
bl DefenderAbilityIsActiveMoveEffects__02328634
cmp r0, #0
beq _023297D4
mov r0, r6
bl ActivateMotorDrive
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_023297D4:
mov r0, r7
mov r1, r6
mov r2, #1
mov r3, #0
bl TryInflictParalysisStatus
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end DoMoveThunderWave
arm_func_start DoMoveZapCannon
DoMoveZapCannon: ; 0x023297F0
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 _02329848
mov r2, r4
mov r0, r6
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02329848
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictParalysisStatus
_02329848:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end DoMoveZapCannon

103
asm/overlay_29_02329710.s Normal file
View File

@@ -0,0 +1,103 @@
.include "asm/macros.inc"
.include "overlay_29_02329710.inc"
.text
arm_func_start DoMoveThundershock
DoMoveThundershock: ; 0x02329710
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 _0232976C
ldr r1, _02329778 ; =THUNDERSHOCK_PARALYZE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232976C
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictParalysisStatus
_0232976C:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02329778: .word THUNDERSHOCK_PARALYZE_CHANCE
arm_func_end DoMoveThundershock
arm_func_start DoMoveThunderWave
DoMoveThunderWave: ; 0x0232977C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r2
mov r6, r1
mov r1, r5
mov r7, r0
bl GetMoveTypeForMonster
mov r4, r0
mov r0, r5
bl GetMoveType
cmp r4, r0
bne _023297D4
mov r0, r7
mov r1, r6
mov r2, #0x66
#ifndef JAPAN
mov r3, #1
#endif
bl DefenderAbilityIsActiveMoveEffects__02328634
cmp r0, #0
beq _023297D4
mov r0, r6
bl ActivateMotorDrive
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_023297D4:
mov r0, r7
mov r1, r6
mov r2, #1
mov r3, #0
bl TryInflictParalysisStatus
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end DoMoveThunderWave
arm_func_start DoMoveZapCannon
DoMoveZapCannon: ; 0x023297F0
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 _02329848
mov r2, r4
mov r0, r6
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02329848
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictParalysisStatus
_02329848:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end DoMoveZapCannon

View File

@@ -1,28 +1,8 @@
.include "asm/macros.inc"
.include "overlay_29_02329868.inc"
.include "overlay_29_02329898.inc"
.text
arm_func_start DoMovePoison
DoMovePoison: ; 0x02329868
stmdb sp!, {r3, lr}
mov r2, #1
mov r3, #0
bl TryInflictPoisonedStatus
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end DoMovePoison
arm_func_start DoMoveToxic
DoMoveToxic: ; 0x02329880
stmdb sp!, {r3, lr}
mov r2, #1
mov r3, #0
bl TryInflictBadlyPoisonedStatus
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end DoMoveToxic
arm_func_start DoMovePoisonFang
DoMovePoisonFang: ; 0x02329898
stmdb sp!, {r3, r4, r5, r6, lr}

View File

@@ -43,580 +43,3 @@ _0232A4E4: .word 0x00000C26
_0232A4E4: .word 0x00000EE4
#endif
arm_func_end DoMoveSwallow
arm_func_start DoMoveCurse
DoMoveCurse: ; 0x0232A4E8
stmdb sp!, {r3, lr}
mov r2, #1
mov r3, #0
bl TryInflictCurseStatus
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end DoMoveCurse
arm_func_start DoMoveDamage__0232A500
DoMoveDamage__0232A500: ; 0x0232A500
stmdb sp!, {r3, lr}
str r3, [sp]
mov r3, #0x100
bl DealDamage
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end DoMoveDamage__0232A500
arm_func_start DoMoveSuperpower
DoMoveSuperpower: ; 0x0232A524
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
str r3, [sp]
mov r3, #0x100
mov r4, #0
mov r5, r0
bl DealDamage
cmp r0, #0
movne r4, #1
cmp r4, #0
beq _0232A59C
ldr r0, _0232A5A8 ; =ATK_STAT_IDX
mov ip, #0
ldr r2, [r0]
str ip, [sp]
mov r0, r5
mov r1, r5
mov r3, #1
str r2, [sp, #8]
str ip, [sp, #4]
bl LowerOffensiveStat
add r0, sp, #8
mov ip, #0
ldr r2, [r0]
str ip, [sp]
mov r0, r5
mov r1, r5
mov r3, #1
str ip, [sp, #4]
bl LowerDefensiveStat
_0232A59C:
mov r0, r4
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
.align 2, 0
_0232A5A8: .word ATK_STAT_IDX
arm_func_end DoMoveSuperpower
arm_func_start DoMoveSteelWing
DoMoveSteelWing: ; 0x0232A5AC
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr ip, [sp, #0x28]
mov r3, #0x100
mov r6, r0
#ifndef JAPAN
mov r5, r1
#endif
str ip, [sp]
mov r4, #0
bl DealDamage
cmp r0, #0
beq _0232A628
ldr r1, _0232A63C ; =STEEL_WING_BOOST_DEFENSE_CHANCE
mov r0, r6
ldrsh r2, [r1]
#ifdef JAPAN
mov r1, r6
#else
mov r1, r5
#endif
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232A628
add r0, sp, #0x24
ldr r2, [r0]
ldr r5, [r6, #0xb4]
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
_0232A628:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_0232A63C: .word STEEL_WING_BOOST_DEFENSE_CHANCE
arm_func_end DoMoveSteelWing
arm_func_start DoMoveSpitUp
DoMoveSpitUp: ; 0x0232A640
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r4, [r0, #0xb4]
#ifdef JAPAN
ldrb ip, [r4, #0x11a]
#else
ldrb ip, [r4, #0x11e]
#endif
cmp ip, #0
beq _0232A670
str r3, [sp]
mov r3, ip, lsl #8
bl DealDamage
mov r0, #0
#ifdef JAPAN
strb r0, [r4, #0x11a]
#else
strb r0, [r4, #0x11e]
#endif
b _0232A678
_0232A670:
ldr r2, _0232A684 ; =0x00000EE5
bl LogMessageByIdWithPopupCheckUserTarget
_0232A678:
mov r0, #1
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
#ifdef JAPAN
_0232A684: .word 0x00000C27
#else
_0232A684: .word 0x00000EE5
#endif
arm_func_end DoMoveSpitUp
arm_func_start DoMoveDynamicPunch
DoMoveDynamicPunch: ; 0x0232A688
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 _0232A6E0
mov r2, r4
mov r0, r6
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232A6E0
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictConfusedStatus
_0232A6E0:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end DoMoveDynamicPunch
arm_func_start DoMoveKnockOff
DoMoveKnockOff: ; 0x0232A6EC
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
mov r7, r0
mov r6, r1
mov r0, #0
mov r1, r7
mov r2, r0
ldr r4, [r7, #0xb4]
ldr r5, [r6, #0xb4]
bl SubstitutePlaceholderStringTags
mov r1, r6
mov r0, #1
mov r2, #0
bl SubstitutePlaceholderStringTags
mov r0, r7
mov r1, r6
mov r2, #0x2c
#ifndef JAPAN
mov r3, #1
#endif
bl DefenderAbilityIsActiveMoveEffects__02329F14
cmp r0, #0
beq _0232A758
ldr r2, _0232A820 ; =0x00000EE6
mov r0, r7
mov r1, r6
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, #0
b _0232A818
_0232A758:
ldrh r0, [r5, #0x62]
strh r0, [sp, #4]
ldrh r1, [r5, #0x64]
ldrb r0, [sp, #4]
strh r1, [sp, #6]
ldrh r1, [r5, #0x66]
tst r0, #1
movne r0, #1
moveq r0, #0
strh r1, [sp, #8]
tst r0, #0xff
bne _0232A7A0
ldr r2, _0232A824 ; =0x00000EE8
mov r0, r7
mov r1, r6
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, #0
b _0232A818
_0232A7A0:
ldrb r0, [r5, #6]
cmp r0, #0
bne _0232A7B4
add r0, r5, #0x62
bl RemoveEquivItem
_0232A7B4:
add r0, r5, #0x62
bl ItemZInit
ldr r2, _0232A828 ; =0x00000EE7
mov r0, r7
mov r1, r6
bl LogMessageByIdWithPopupCheckUserTarget
ldrb r1, [r4, #0x4c]
ldr r0, _0232A82C ; =DIRECTIONS_XY
ldr r5, _0232A830 ; =DIRECTIONS_XY + 2
mov r1, r1, lsl #2
ldrsh r1, [r0, r1]
add r2, sp, #4
mov r0, r7
strh r1, [sp]
ldrb r4, [r4, #0x4c]
mov r1, r6
add r3, sp, #0
mov r4, r4, lsl #2
ldrsh r4, [r5, r4]
strh r4, [sp, #2]
bl ov29_0232A834
mov r0, r7
mov r1, r6
bl ov29_02321164
mov r0, #1
_0232A818:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
#ifdef JAPAN
_0232A820: .word 0x00000C28
_0232A824: .word 0x00000C2A
_0232A828: .word 0x00000C29
#else
_0232A820: .word 0x00000EE6
_0232A824: .word 0x00000EE8
_0232A828: .word 0x00000EE7
#endif
_0232A82C: .word DIRECTIONS_XY
_0232A830: .word DIRECTIONS_XY + 2
arm_func_end DoMoveKnockOff
arm_func_start ov29_0232A834
ov29_0232A834: ; 0x0232A834
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0xc0
mov r5, #0
mov r4, r2
mov ip, #3
mov r2, #1
strb r2, [sp, #0x28]
str ip, [sp, #8]
strb r5, [sp, #0x2c]
strb r5, [sp, #0x2a]
str r4, [sp, #0xbc]
ldrsh lr, [r1, #4]
ldrsh ip, [r3]
mov r5, r0
mov r2, #0x18
add r0, lr, ip
strh r0, [sp, #0xc]
ldrsh ip, [r1, #6]
ldrsh r3, [r3, #2]
add r0, sp, #8
add r3, ip, r3
strh r3, [sp, #0xe]
ldrsh r3, [r1, #4]
ldrsh r1, [r1, #6]
smulbb r3, r3, r2
smulbb r1, r1, r2
add r2, r1, #4
add r3, r3, #4
mov r1, r3, lsl #8
mov r2, r2, lsl #8
bl SetEntityPixelPosXY
mov r0, #0
add r1, sp, #8
mov r2, r0
strh r0, [sp, #0x2e]
bl SubstitutePlaceholderStringTags
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
mov r0, r5
mov r2, r4
add r1, sp, #8
mov r3, #1
bl SpawnDroppedItem
add sp, sp, #0xc0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov29_0232A834
arm_func_start DoMoveSplash
DoMoveSplash: ; 0x0232A8EC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x28
mov sb, r1
ldrh r1, [sb, #4]
mov sl, r0
mov r8, r2
strh r1, [sp, #0x24]
ldrh r4, [sb, #6]
mov r0, sb
mov r1, #0xa
mov r2, #8
mov r7, r3
strh r4, [sp, #0x26]
bl ChangeMonsterAnimation
mov r4, #3
mov r5, #0
mov fp, r4
b _0232A990
_0232A934:
mov r0, r4
bl DungeonRandInt
mov r6, r0
mov r0, fp
bl DungeonRandInt
subs r1, r6, #1
bne _0232A958
subs r1, r0, #1
beq _0232A98C
_0232A958:
ldrsh r3, [sb, #4]
sub r1, r6, #1
sub r2, r0, #1
add r0, r3, r1
strh r0, [sp, #0x24]
ldrsh r3, [sb, #6]
mov r0, sb
add r1, sp, #0x24
add r2, r3, r2
strh r2, [sp, #0x26]
bl ov29_022FFB90
cmp r0, #0
beq _0232A998
_0232A98C:
add r5, r5, #1
_0232A990:
cmp r5, #0x28
blt _0232A934
_0232A998:
cmp r5, #0x28
bne _0232A9B8
ldr r2, _0232AC38 ; =0x00000EEA
mov r0, sl
mov r1, sb
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, #0
b _0232AC30
_0232A9B8:
ldrsh r2, [sp, #0x24]
mov r0, #0x18
ldr r1, [sb, #0xc]
smulbb r0, r2, r0
add r0, r0, #0xc
rsb r0, r1, r0, lsl #8
mov r1, #0xc
bl _s32_div_f
ldrsh r3, [sp, #0x26]
mov r1, #0x18
ldr r2, [sb, #0x10]
smulbb r1, r3, r1
add r1, r1, #0x10
mov r5, r0
rsb r0, r2, r1, lsl #8
mov r1, #0xc
bl _s32_div_f
mov r4, r0
add r0, sb, #4
bl ov29_022E2CA0
cmp r0, #0
bne _0232AA20
add r0, sp, #0x24
bl ov29_022E2CA0
cmp r0, #0
beq _0232AA4C
_0232AA20:
mov r6, #0
mov fp, #0x2c
_0232AA28:
mov r0, sb
mov r1, r5
mov r2, r4
bl IncrementEntityPixelPosXY
mov r0, fp
bl AdvanceFrame
add r6, r6, #1
cmp r6, #0xc
blt _0232AA28
_0232AA4C:
ldrsh r0, [sp, #0x24]
ldrsh r1, [sp, #0x26]
bl GetTileSafe
ldr r6, [r0, #0xc]
cmp r6, #0
beq _0232ABC8
ldr r0, [r6]
cmp r0, #1
bne _0232AB5C
ldr r1, _0232AC3C ; =0x00000163
add r0, sp, #0x1c
bl InitMove
add r1, sp, #0x1c
mov r0, r6
bl TwoTurnMoveForcedMiss
cmp r0, #0
bne _0232AAD8
mov r0, r8
mov r1, r7
bl GetDamageSourceWrapper
mov r3, #0
str r3, [sp]
ldr r1, _0232AC40 ; =ov10_022C44B4
str r3, [sp, #4]
mov r2, #3
str r2, [sp, #8]
str r0, [sp, #0xc]
ldrsh r2, [r1]
str r3, [sp, #0x10]
mov r0, #1
str r0, [sp, #0x14]
mov r0, sl
mov r1, r6
str r3, [sp, #0x18]
bl CalcDamageFixedWrapper
_0232AAD8:
bl IsFloorOver
cmp r0, #0
movne r0, #1
bne _0232AC30
mov r0, sl
bl EntityIsValidMoveEffects__0232A3D8
cmp r0, #0
moveq r0, #1
beq _0232AC30
mov r3, #0
str r3, [sp]
ldr r0, _0232AC40 ; =ov10_022C44B4
mov r1, #3
str r3, [sp, #4]
str r1, [sp, #8]
rsb r1, r1, #0x240
str r1, [sp, #0xc]
ldrsh r2, [r0]
str r3, [sp, #0x10]
str r3, [sp, #0x14]
mov r0, sl
mov r1, sl
str r3, [sp, #0x18]
bl CalcDamageFixedWrapper
bl IsFloorOver
cmp r0, #0
movne r0, #1
bne _0232AC30
mov r0, sl
bl EntityIsValidMoveEffects__0232A3D8
cmp r0, #0
moveq r0, #1
beq _0232AC30
_0232AB5C:
mov r0, sb
bl EntityIsValidMoveEffects__0232A3D8
cmp r0, #0
moveq r0, #1
beq _0232AC30
add r0, sb, #4
bl ov29_022E2CA0
cmp r0, #0
bne _0232AB90
add r0, sp, #0x24
bl ov29_022E2CA0
cmp r0, #0
beq _0232ABDC
_0232AB90:
rsb r6, r4, #0
rsb r5, r5, #0
mov r7, #0
mov r4, #0x2c
_0232ABA0:
mov r0, sb
mov r1, r5
mov r2, r6
bl IncrementEntityPixelPosXY
mov r0, r4
bl AdvanceFrame
add r7, r7, #1
cmp r7, #0xc
blt _0232ABA0
b _0232ABDC
_0232ABC8:
ldrsh r1, [sp, #0x24]
ldrsh r2, [sp, #0x26]
mov r0, sb
mov r3, #0
bl MoveMonsterToPos
_0232ABDC:
mov r0, sb
bl EntityIsValidMoveEffects__0232A3D8
cmp r0, #0
moveq r0, #1
beq _0232AC30
mov r0, sb
mov r1, #0
bl UpdateEntityPixelPos
mov r0, sb
mov r1, #0xe
bl AbilityIsActiveVeneer
cmp r0, #0
bne _0232AC24
#ifndef JAPAN
mov r0, sb
bl ov29_02321260
#endif
mov r0, sl
mov r1, sb
bl ov29_02321164
_0232AC24:
mov r0, sb
bl ov29_02321260
mov r0, #1
_0232AC30:
add sp, sp, #0x28
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
#ifdef JAPAN
_0232AC38: .word 0x00000C2C
#else
_0232AC38: .word 0x00000EEA
#endif
_0232AC3C: .word 0x00000163
_0232AC40: .word ov10_022C44B4
arm_func_end DoMoveSplash

571
asm/overlay_29_0232A500.s Normal file
View File

@@ -0,0 +1,571 @@
.include "asm/macros.inc"
.include "overlay_29_0232A500.inc"
.text
arm_func_start DoMoveDamage__0232A500
DoMoveDamage__0232A500: ; 0x0232A500
stmdb sp!, {r3, lr}
str r3, [sp]
mov r3, #0x100
bl DealDamage
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end DoMoveDamage__0232A500
arm_func_start DoMoveSuperpower
DoMoveSuperpower: ; 0x0232A524
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
str r3, [sp]
mov r3, #0x100
mov r4, #0
mov r5, r0
bl DealDamage
cmp r0, #0
movne r4, #1
cmp r4, #0
beq _0232A59C
ldr r0, _0232A5A8 ; =ATK_STAT_IDX
mov ip, #0
ldr r2, [r0]
str ip, [sp]
mov r0, r5
mov r1, r5
mov r3, #1
str r2, [sp, #8]
str ip, [sp, #4]
bl LowerOffensiveStat
add r0, sp, #8
mov ip, #0
ldr r2, [r0]
str ip, [sp]
mov r0, r5
mov r1, r5
mov r3, #1
str ip, [sp, #4]
bl LowerDefensiveStat
_0232A59C:
mov r0, r4
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
.align 2, 0
_0232A5A8: .word ATK_STAT_IDX
arm_func_end DoMoveSuperpower
arm_func_start DoMoveSteelWing
DoMoveSteelWing: ; 0x0232A5AC
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr ip, [sp, #0x28]
mov r3, #0x100
mov r6, r0
#ifndef JAPAN
mov r5, r1
#endif
str ip, [sp]
mov r4, #0
bl DealDamage
cmp r0, #0
beq _0232A628
ldr r1, _0232A63C ; =STEEL_WING_BOOST_DEFENSE_CHANCE
mov r0, r6
ldrsh r2, [r1]
#ifdef JAPAN
mov r1, r6
#else
mov r1, r5
#endif
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232A628
add r0, sp, #0x24
ldr r2, [r0]
ldr r5, [r6, #0xb4]
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
_0232A628:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_0232A63C: .word STEEL_WING_BOOST_DEFENSE_CHANCE
arm_func_end DoMoveSteelWing
arm_func_start DoMoveSpitUp
DoMoveSpitUp: ; 0x0232A640
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r4, [r0, #0xb4]
#ifdef JAPAN
ldrb ip, [r4, #0x11a]
#else
ldrb ip, [r4, #0x11e]
#endif
cmp ip, #0
beq _0232A670
str r3, [sp]
mov r3, ip, lsl #8
bl DealDamage
mov r0, #0
#ifdef JAPAN
strb r0, [r4, #0x11a]
#else
strb r0, [r4, #0x11e]
#endif
b _0232A678
_0232A670:
ldr r2, _0232A684 ; =0x00000EE5
bl LogMessageByIdWithPopupCheckUserTarget
_0232A678:
mov r0, #1
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
#ifdef JAPAN
_0232A684: .word 0x00000C27
#else
_0232A684: .word 0x00000EE5
#endif
arm_func_end DoMoveSpitUp
arm_func_start DoMoveDynamicPunch
DoMoveDynamicPunch: ; 0x0232A688
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 _0232A6E0
mov r2, r4
mov r0, r6
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232A6E0
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictConfusedStatus
_0232A6E0:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end DoMoveDynamicPunch
arm_func_start DoMoveKnockOff
DoMoveKnockOff: ; 0x0232A6EC
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
mov r7, r0
mov r6, r1
mov r0, #0
mov r1, r7
mov r2, r0
ldr r4, [r7, #0xb4]
ldr r5, [r6, #0xb4]
bl SubstitutePlaceholderStringTags
mov r1, r6
mov r0, #1
mov r2, #0
bl SubstitutePlaceholderStringTags
mov r0, r7
mov r1, r6
mov r2, #0x2c
#ifndef JAPAN
mov r3, #1
#endif
bl DefenderAbilityIsActiveMoveEffects__02329F14
cmp r0, #0
beq _0232A758
ldr r2, _0232A820 ; =0x00000EE6
mov r0, r7
mov r1, r6
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, #0
b _0232A818
_0232A758:
ldrh r0, [r5, #0x62]
strh r0, [sp, #4]
ldrh r1, [r5, #0x64]
ldrb r0, [sp, #4]
strh r1, [sp, #6]
ldrh r1, [r5, #0x66]
tst r0, #1
movne r0, #1
moveq r0, #0
strh r1, [sp, #8]
tst r0, #0xff
bne _0232A7A0
ldr r2, _0232A824 ; =0x00000EE8
mov r0, r7
mov r1, r6
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, #0
b _0232A818
_0232A7A0:
ldrb r0, [r5, #6]
cmp r0, #0
bne _0232A7B4
add r0, r5, #0x62
bl RemoveEquivItem
_0232A7B4:
add r0, r5, #0x62
bl ItemZInit
ldr r2, _0232A828 ; =0x00000EE7
mov r0, r7
mov r1, r6
bl LogMessageByIdWithPopupCheckUserTarget
ldrb r1, [r4, #0x4c]
ldr r0, _0232A82C ; =DIRECTIONS_XY
ldr r5, _0232A830 ; =DIRECTIONS_XY + 2
mov r1, r1, lsl #2
ldrsh r1, [r0, r1]
add r2, sp, #4
mov r0, r7
strh r1, [sp]
ldrb r4, [r4, #0x4c]
mov r1, r6
add r3, sp, #0
mov r4, r4, lsl #2
ldrsh r4, [r5, r4]
strh r4, [sp, #2]
bl ov29_0232A834
mov r0, r7
mov r1, r6
bl ov29_02321164
mov r0, #1
_0232A818:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
#ifdef JAPAN
_0232A820: .word 0x00000C28
_0232A824: .word 0x00000C2A
_0232A828: .word 0x00000C29
#else
_0232A820: .word 0x00000EE6
_0232A824: .word 0x00000EE8
_0232A828: .word 0x00000EE7
#endif
_0232A82C: .word DIRECTIONS_XY
_0232A830: .word DIRECTIONS_XY + 2
arm_func_end DoMoveKnockOff
arm_func_start ov29_0232A834
ov29_0232A834: ; 0x0232A834
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0xc0
mov r5, #0
mov r4, r2
mov ip, #3
mov r2, #1
strb r2, [sp, #0x28]
str ip, [sp, #8]
strb r5, [sp, #0x2c]
strb r5, [sp, #0x2a]
str r4, [sp, #0xbc]
ldrsh lr, [r1, #4]
ldrsh ip, [r3]
mov r5, r0
mov r2, #0x18
add r0, lr, ip
strh r0, [sp, #0xc]
ldrsh ip, [r1, #6]
ldrsh r3, [r3, #2]
add r0, sp, #8
add r3, ip, r3
strh r3, [sp, #0xe]
ldrsh r3, [r1, #4]
ldrsh r1, [r1, #6]
smulbb r3, r3, r2
smulbb r1, r1, r2
add r2, r1, #4
add r3, r3, #4
mov r1, r3, lsl #8
mov r2, r2, lsl #8
bl SetEntityPixelPosXY
mov r0, #0
add r1, sp, #8
mov r2, r0
strh r0, [sp, #0x2e]
bl SubstitutePlaceholderStringTags
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
mov r0, r5
mov r2, r4
add r1, sp, #8
mov r3, #1
bl SpawnDroppedItem
add sp, sp, #0xc0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov29_0232A834
arm_func_start DoMoveSplash
DoMoveSplash: ; 0x0232A8EC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x28
mov sb, r1
ldrh r1, [sb, #4]
mov sl, r0
mov r8, r2
strh r1, [sp, #0x24]
ldrh r4, [sb, #6]
mov r0, sb
mov r1, #0xa
mov r2, #8
mov r7, r3
strh r4, [sp, #0x26]
bl ChangeMonsterAnimation
mov r4, #3
mov r5, #0
mov fp, r4
b _0232A990
_0232A934:
mov r0, r4
bl DungeonRandInt
mov r6, r0
mov r0, fp
bl DungeonRandInt
subs r1, r6, #1
bne _0232A958
subs r1, r0, #1
beq _0232A98C
_0232A958:
ldrsh r3, [sb, #4]
sub r1, r6, #1
sub r2, r0, #1
add r0, r3, r1
strh r0, [sp, #0x24]
ldrsh r3, [sb, #6]
mov r0, sb
add r1, sp, #0x24
add r2, r3, r2
strh r2, [sp, #0x26]
bl ov29_022FFB90
cmp r0, #0
beq _0232A998
_0232A98C:
add r5, r5, #1
_0232A990:
cmp r5, #0x28
blt _0232A934
_0232A998:
cmp r5, #0x28
bne _0232A9B8
ldr r2, _0232AC38 ; =0x00000EEA
mov r0, sl
mov r1, sb
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, #0
b _0232AC30
_0232A9B8:
ldrsh r2, [sp, #0x24]
mov r0, #0x18
ldr r1, [sb, #0xc]
smulbb r0, r2, r0
add r0, r0, #0xc
rsb r0, r1, r0, lsl #8
mov r1, #0xc
bl _s32_div_f
ldrsh r3, [sp, #0x26]
mov r1, #0x18
ldr r2, [sb, #0x10]
smulbb r1, r3, r1
add r1, r1, #0x10
mov r5, r0
rsb r0, r2, r1, lsl #8
mov r1, #0xc
bl _s32_div_f
mov r4, r0
add r0, sb, #4
bl ov29_022E2CA0
cmp r0, #0
bne _0232AA20
add r0, sp, #0x24
bl ov29_022E2CA0
cmp r0, #0
beq _0232AA4C
_0232AA20:
mov r6, #0
mov fp, #0x2c
_0232AA28:
mov r0, sb
mov r1, r5
mov r2, r4
bl IncrementEntityPixelPosXY
mov r0, fp
bl AdvanceFrame
add r6, r6, #1
cmp r6, #0xc
blt _0232AA28
_0232AA4C:
ldrsh r0, [sp, #0x24]
ldrsh r1, [sp, #0x26]
bl GetTileSafe
ldr r6, [r0, #0xc]
cmp r6, #0
beq _0232ABC8
ldr r0, [r6]
cmp r0, #1
bne _0232AB5C
ldr r1, _0232AC3C ; =0x00000163
add r0, sp, #0x1c
bl InitMove
add r1, sp, #0x1c
mov r0, r6
bl TwoTurnMoveForcedMiss
cmp r0, #0
bne _0232AAD8
mov r0, r8
mov r1, r7
bl GetDamageSourceWrapper
mov r3, #0
str r3, [sp]
ldr r1, _0232AC40 ; =ov10_022C44B4
str r3, [sp, #4]
mov r2, #3
str r2, [sp, #8]
str r0, [sp, #0xc]
ldrsh r2, [r1]
str r3, [sp, #0x10]
mov r0, #1
str r0, [sp, #0x14]
mov r0, sl
mov r1, r6
str r3, [sp, #0x18]
bl CalcDamageFixedWrapper
_0232AAD8:
bl IsFloorOver
cmp r0, #0
movne r0, #1
bne _0232AC30
mov r0, sl
bl EntityIsValidMoveEffects__0232A3D8
cmp r0, #0
moveq r0, #1
beq _0232AC30
mov r3, #0
str r3, [sp]
ldr r0, _0232AC40 ; =ov10_022C44B4
mov r1, #3
str r3, [sp, #4]
str r1, [sp, #8]
rsb r1, r1, #0x240
str r1, [sp, #0xc]
ldrsh r2, [r0]
str r3, [sp, #0x10]
str r3, [sp, #0x14]
mov r0, sl
mov r1, sl
str r3, [sp, #0x18]
bl CalcDamageFixedWrapper
bl IsFloorOver
cmp r0, #0
movne r0, #1
bne _0232AC30
mov r0, sl
bl EntityIsValidMoveEffects__0232A3D8
cmp r0, #0
moveq r0, #1
beq _0232AC30
_0232AB5C:
mov r0, sb
bl EntityIsValidMoveEffects__0232A3D8
cmp r0, #0
moveq r0, #1
beq _0232AC30
add r0, sb, #4
bl ov29_022E2CA0
cmp r0, #0
bne _0232AB90
add r0, sp, #0x24
bl ov29_022E2CA0
cmp r0, #0
beq _0232ABDC
_0232AB90:
rsb r6, r4, #0
rsb r5, r5, #0
mov r7, #0
mov r4, #0x2c
_0232ABA0:
mov r0, sb
mov r1, r5
mov r2, r6
bl IncrementEntityPixelPosXY
mov r0, r4
bl AdvanceFrame
add r7, r7, #1
cmp r7, #0xc
blt _0232ABA0
b _0232ABDC
_0232ABC8:
ldrsh r1, [sp, #0x24]
ldrsh r2, [sp, #0x26]
mov r0, sb
mov r3, #0
bl MoveMonsterToPos
_0232ABDC:
mov r0, sb
bl EntityIsValidMoveEffects__0232A3D8
cmp r0, #0
moveq r0, #1
beq _0232AC30
mov r0, sb
mov r1, #0
bl UpdateEntityPixelPos
mov r0, sb
mov r1, #0xe
bl AbilityIsActiveVeneer
cmp r0, #0
bne _0232AC24
#ifndef JAPAN
mov r0, sb
bl ov29_02321260
#endif
mov r0, sl
mov r1, sb
bl ov29_02321164
_0232AC24:
mov r0, sb
bl ov29_02321260
mov r0, #1
_0232AC30:
add sp, sp, #0x28
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
#ifdef JAPAN
_0232AC38: .word 0x00000C2C
#else
_0232AC38: .word 0x00000EEA
#endif
_0232AC3C: .word 0x00000163
_0232AC40: .word ov10_022C44B4
arm_func_end DoMoveSplash

File diff suppressed because it is too large Load Diff

559
asm/overlay_29_0232AD18.s Normal file
View File

@@ -0,0 +1,559 @@
.include "asm/macros.inc"
.include "overlay_29_0232AD18.inc"
.text
arm_func_start DoMoveSecretPower
DoMoveSecretPower: ; 0x0232AD18
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 _0232AED0
ldr r1, _0232AEDC ; =SECRET_POWER_EFFECT_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232AED0
ldr r0, _0232AEE0 ; =DUNGEON_PTR
mov r1, #0xc
ldr r0, [r0]
ldr r2, _0232AEE4 ; =ov10_022C6321
add r0, r0, #0x4000
#ifdef JAPAN
ldrsh r0, [r0, #0x30]
#else
ldrsh r0, [r0, #0xd4]
#endif
smulbb r0, r0, r1
ldrb r0, [r2, r0]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _0232AEBC
_0232AD8C: ; jump table
b _0232ADB4 ; case 0
b _0232ADCC ; case 1
b _0232ADF4 ; case 2
b _0232AE0C ; case 3
b _0232AE34 ; case 4
b _0232AE5C ; case 5
b _0232AE78 ; case 6
b _0232AE90 ; case 7
b _0232AEA8 ; case 8
b _0232AEBC ; case 9
_0232ADB4:
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictPoisonedStatus
b _0232AED0
_0232ADCC:
ldr r1, _0232AEE8 ; =SLEEP_TURN_RANGE
mov r0, r5
mov r2, r4
bl CalcStatusDuration
mov r2, r0
mov r0, r6
mov r1, r5
mov r3, #0
bl TryInflictSleepStatus
b _0232AED0
_0232ADF4:
mov r0, r6
mov r1, r5
mov r2, r4
mov r3, #0
bl LowerSpeed
b _0232AED0
_0232AE0C:
ldr r0, _0232AEEC ; =ATK_STAT_IDX
mov r3, r4
ldr r2, [r0]
mov r1, r5
mov r0, r6
str r3, [sp]
mov r5, #0
str r5, [sp, #4]
bl LowerOffensiveStat
b _0232AED0
_0232AE34:
ldr r0, _0232AEEC ; =ATK_STAT_IDX
mov r3, r4
ldr r2, [r0]
mov r1, r5
mov r0, r6
str r3, [sp]
mov r5, #0
str r5, [sp, #4]
bl LowerDefensiveStat
b _0232AED0
_0232AE5C:
ldr r1, _0232AEEC ; =ATK_STAT_IDX
mov r0, r6
ldr r2, [r1]
mov r1, r5
mov r3, #0
bl LowerHitChanceStat
b _0232AED0
_0232AE78:
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictConfusedStatus
b _0232AED0
_0232AE90:
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictCringeStatus
b _0232AED0
_0232AEA8:
mov r0, r6
mov r1, r5
mov r2, #0
bl TryInflictFrozenStatus
b _0232AED0
_0232AEBC:
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictParalysisStatus
_0232AED0:
mov r0, r4
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0232AEDC: .word SECRET_POWER_EFFECT_CHANCE
_0232AEE0: .word DUNGEON_PTR
_0232AEE4: .word ov10_022C6321
_0232AEE8: .word SLEEP_TURN_RANGE
_0232AEEC: .word ATK_STAT_IDX
arm_func_end DoMoveSecretPower
arm_func_start DoMoveDamageConfuse30
DoMoveDamageConfuse30: ; 0x0232AEF0
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 _0232AF4C
ldr r1, _0232AF58 ; =DIZZY_PUNCH_CONFUSE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232AF4C
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictConfusedStatus
_0232AF4C:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_0232AF58: .word DIZZY_PUNCH_CONFUSE_CHANCE
arm_func_end DoMoveDamageConfuse30
arm_func_start DoMoveBulkUp
DoMoveBulkUp: ; 0x0232AF5C
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _0232AF9C ; =ATK_STAT_IDX
mov r3, #1
ldr r2, [r2]
mov r5, r0
mov r4, r1
str r2, [sp]
bl BoostOffensiveStat
add r1, sp, #0
ldr r2, [r1]
mov r0, r5
mov r1, r4
mov r3, #1
bl BoostDefensiveStat
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0232AF9C: .word ATK_STAT_IDX
arm_func_end DoMoveBulkUp
arm_func_start DoMovePause
DoMovePause: ; 0x0232AFA0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r4, r1
mov r5, r0
ldr r1, _0232AFEC ; =IMPRISON_TURN_RANGE
mov r0, r4
mov r2, #1
bl CalcStatusDuration
mov r2, #1
mov r3, r0
mov r0, r5
mov r1, r4
str r2, [sp]
mov ip, #0
str ip, [sp, #4]
bl TryInflictPausedStatus
mov r0, #1
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0232AFEC: .word IMPRISON_TURN_RANGE
arm_func_end DoMovePause
arm_func_start DoMoveFeatherDance
DoMoveFeatherDance: ; 0x0232AFF0
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldr r2, _0232B020 ; =ATK_STAT_IDX
mov ip, #1
ldr r2, [r2]
str ip, [sp]
mov r3, #2
str ip, [sp, #4]
bl LowerOffensiveStat
mov r0, #1
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_0232B020: .word ATK_STAT_IDX
arm_func_end DoMoveFeatherDance
arm_func_start DoMoveBeatUp
DoMoveBeatUp: ; 0x0232B024
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
ldr r8, [sl, #0xb4]
mov fp, r1
ldrb r0, [r8, #6]
mov r4, #0
mov r5, #0
cmp r0, #0
ldrne r0, _0232B110 ; =DUNGEON_PTR
movne r6, #0x10
ldrne r0, [r0]
moveq r6, #4
#ifdef JAPAN
addne r0, r0, #0x294
ldreq r0, _0232B110 ; =DUNGEON_PTR
ldreq r0, [r0]
addeq r0, r0, #0x284
#else
addne r0, r0, #0x338
ldreq r0, _0232B110 ; =DUNGEON_PTR
ldreq r0, [r0]
addeq r0, r0, #0x328
#endif
add r7, r0, #0x12800
b _0232B0E8
_0232B06C:
ldr sb, [r7, r5, lsl #2]
mov r0, sb
bl EntityIsValidMoveEffects__0232A3D8
cmp r0, #0
cmpne sl, sb
beq _0232B0E4
mov r2, #0
mov r0, sl
mov r1, sb
mov r3, r2
bl GetTreatmentBetweenMonsters
cmp r0, #0
bne _0232B0E4
ldr r0, [sb, #0xb4]
ldrb r1, [r0, #0xbc]
cmp r1, #7
beq _0232B0E4
bl IsExperienceLocked
cmp r0, #0
bne _0232B0E4
mov r0, sl
mov r1, sb
mov r2, #2
add r3, fp, #4
bl TryWarp
#ifdef JAPAN
ldrb r0, [r8, #0x107]
#else
ldrb r0, [r8, #0x108]
#endif
mov r4, #1
cmp r0, #1
movlo r0, r4
#ifdef JAPAN
strlob r0, [r8, #0x107]
#else
strlob r0, [r8, #0x108]
#endif
_0232B0E4:
add r5, r5, #1
_0232B0E8:
cmp r5, r6
blt _0232B06C
cmp r4, #0
bne _0232B108
ldr r2, _0232B114 ; =0x00000EEC
mov r0, sl
mov r1, fp
bl LogMessageByIdWithPopupCheckUserTarget
_0232B108:
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0232B110: .word DUNGEON_PTR
#ifdef JAPAN
_0232B114: .word 0x00000C2E
#else
_0232B114: .word 0x00000EEC
#endif
arm_func_end DoMoveBeatUp
arm_func_start DoMoveBlastBurn
DoMoveBlastBurn: ; 0x0232B118
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, #0x200
str r5, [sp]
bl DealDamage
cmp r0, #0
movne r4, #1
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
arm_func_end DoMoveBlastBurn
arm_func_start DoMoveCrushClaw
DoMoveCrushClaw: ; 0x0232B164
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 _0232B1D0
ldr r1, _0232B1DC ; =CRUSH_CLAW_LOWER_DEFENSE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232B1D0
ldr r0, _0232B1E0 ; =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
_0232B1D0:
mov r0, r4
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0232B1DC: .word CRUSH_CLAW_LOWER_DEFENSE_CHANCE
_0232B1E0: .word ATK_STAT_IDX
arm_func_end DoMoveCrushClaw
arm_func_start DoMoveBlazeKick
DoMoveBlazeKick: ; 0x0232B1E4
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 _0232B25C
ldr r1, _0232B268 ; =BLAZE_KICK_BURN_CHANCE
mov r0, r8
ldrsh r2, [r1]
mov r1, r7
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232B25C
mov r2, #0
mov r0, r8
mov r1, r7
mov r3, r2
str r2, [sp]
bl TryInflictBurnStatus
_0232B25C:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_0232B268: .word BLAZE_KICK_BURN_CHANCE
arm_func_end DoMoveBlazeKick
arm_func_start DoMovePresent
DoMovePresent: ; 0x0232B26C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r0
mov r0, #0x64
mov r4, r1
mov r7, r2
mov r6, r3
bl DungeonRandInt
cmp r0, #0xa
bge _0232B2BC
mov r0, r5
mov r1, r4
mov r2, r7
mov r3, #0x4b
str r6, [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}
_0232B2BC:
cmp r0, #0x1e
bge _0232B30C
ldr r1, [r4, #0xb4]
ldr r0, _0232B364 ; =0x000003E7
ldrsh r2, [r1, #0x12]
ldrsh r1, [r1, #0x16]
mov ip, #1
mov r3, #0
add r1, r2, r1
cmp r1, r0
movgt r1, r0
mov r0, r1, asr #1
add r2, r1, r0, lsr #30
mov r0, r5
mov r1, r4
mov r2, r2, asr #2
str ip, [sp]
bl TryIncreaseHp
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_0232B30C:
cmp r0, #0x3c
mov r0, r5
mov r1, r4
bge _0232B340
mov r2, r7
mov r3, #0x32
str r6, [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}
_0232B340:
mov r2, r7
mov r3, #0x19
str r6, [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}
.align 2, 0
_0232B364: .word 0x000003E7
arm_func_end DoMovePresent
arm_func_start DoMoveEruption
DoMoveEruption: ; 0x0232B368
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl EndFrozenStatus
ldr r2, [r7, #0xb4]
ldr r3, _0232B42C ; =0x000003E7
ldrsh r1, [r2, #0x12]
ldrsh r0, [r2, #0x16]
add r1, r1, r0
cmp r1, r3
movle r3, r1
ldrsh r0, [r2, #0x10]
mov r2, r3, asr #1
add r2, r3, r2, lsr #30
cmp r0, r2, asr #2
movle r2, #0
ble _0232B3FC
ldr r2, _0232B42C ; =0x000003E7
cmp r1, r2
movle r2, r1
mov r3, r2, lsl #1
mov r2, r3, asr #1
add r2, r3, r2, lsr #30
cmp r0, r2, asr #2
movle r2, #1
ble _0232B3FC
ldr r2, _0232B42C ; =0x000003E7
cmp r1, r2
movgt r1, r2
add r2, r1, r1, lsl #1
mov r1, r2, asr #1
add r1, r2, r1, lsr #30
cmp r0, r1, asr #2
movle r2, #2
movgt r2, #3
_0232B3FC:
ldr r1, _0232B430 ; =ERUPTION_DAMAGE_MULT_TABLE
mov r0, r7
ldr r3, [r1, r2, lsl #2]
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}
.align 2, 0
_0232B42C: .word 0x000003E7
_0232B430: .word ERUPTION_DAMAGE_MULT_TABLE
arm_func_end DoMoveEruption

207
asm/overlay_29_0232B44C.s Normal file
View File

@@ -0,0 +1,207 @@
.include "asm/macros.inc"
.include "overlay_29_0232B44C.inc"
.text
arm_func_start DoMoveTransform
DoMoveTransform: ; 0x0232B44C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl IsFullFloorFixedRoom
cmp r0, #0
beq _0232B47C
ldr r2, _0232B490 ; =0x00000EED
mov r0, r5
mov r1, r4
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_0232B47C:
mov r0, r5
mov r1, r4
bl TryTransform
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
#ifdef JAPAN
_0232B490: .word 0x00000C2F
#else
_0232B490: .word 0x00000EED
#endif
arm_func_end DoMoveTransform
arm_func_start DoMovePoisonTail
DoMovePoisonTail: ; 0x0232B494
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 _0232B4F0
ldr r1, _0232B4FC ; =POISON_TAIL_POISON_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232B4F0
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
bl TryInflictPoisonedStatus
_0232B4F0:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_0232B4FC: .word POISON_TAIL_POISON_CHANCE
arm_func_end DoMovePoisonTail
arm_func_start DoMoveBlowback
DoMoveBlowback: ; 0x0232B500
stmdb sp!, {r3, lr}
ldr r2, [r0, #0xb4]
ldrb r2, [r2, #0x4c]
bl TryBlowAway
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end DoMoveBlowback
arm_func_start DoMoveCamouflage
DoMoveCamouflage: ; 0x0232B518
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r0
mov r4, r1
bl AllocateTemp1024ByteBufferFromPool
ldr r0, _0232B5B8 ; =DUNGEON_PTR
mov r2, #0xc
ldr r0, [r0]
ldr r3, _0232B5BC ; =ov10_022C6322
add r0, r0, #0x4000
#ifdef JAPAN
ldrsh ip, [r0, #0x30]
#else
ldrsh ip, [r0, #0xd4]
#endif
mov r0, r4
mov r1, #0x25
smulbb r2, ip, r2
ldr r7, [r4, #0xb4]
ldrb r6, [r3, r2]
bl AbilityIsActiveVeneer
cmp r0, #0
beq _0232B578
ldr r2, _0232B5C0 ; =0x00000DC3
mov r0, r5
mov r1, r4
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_0232B578:
strb r6, [r7, #0x5e]
mov r2, #0
mov r1, r4
strb r2, [r7, #0x5f]
mov r0, #1
strb r0, [r7, #0xff]
bl SubstitutePlaceholderStringTags
mov r1, r6
mov r0, #0
bl SetPreprocessorArgsIdVal
#ifdef JAPAN
mov r0, r5
mov r1, r4
mov r2, #0xc30
#else
ldr r2, _0232B5C4 ; =0x00000EEE
mov r0, r5
mov r1, r4
#endif
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0232B5B8: .word DUNGEON_PTR
_0232B5BC: .word ov10_022C6322
#ifdef JAPAN
_0232B5C0: .word 0x00000B03
#else
_0232B5C0: .word 0x00000DC3
_0232B5C4: .word 0x00000EEE
#endif
arm_func_end DoMoveCamouflage
arm_func_start DoMoveTailGlow
DoMoveTailGlow: ; 0x0232B5C8
stmdb sp!, {r3, lr}
ldr r2, _0232B5E4 ; =SPATK_STAT_IDX
mov r3, #2
ldr r2, [r2]
bl BoostOffensiveStat
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0232B5E4: .word SPATK_STAT_IDX
arm_func_end DoMoveTailGlow
arm_func_start DoMoveDamageConstrict10
DoMoveDamageConstrict10: ; 0x0232B5E8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r5, r2
ldrh ip, [r5, #4]
ldr r2, _0232B69C ; =0x00000123
mov r7, r0
cmp ip, r2
mov r6, r1
mov r4, r3
mov r8, #0
cmpne ip, #0x20c
bne _0232B628
mov r0, r7
mov r1, r6
bl EndFrozenStatus
mov sb, #0x13c
b _0232B640
_0232B628:
cmp ip, #0x45
moveq sb, #0x75
beq _0232B640
cmp ip, #0x7d
moveq sb, #0x7e
movne sb, #0xf1
_0232B640:
mov r0, r7
mov r1, r6
mov r2, r5
mov r3, #0x100
str r4, [sp]
bl DealDamage
cmp r0, #0
beq _0232B694
ldr r1, _0232B6A0 ; =WHIRLPOOL_CONSTRICTION_CHANCE
mov r0, r7
ldrsh r2, [r1]
mov r1, r6
mov r8, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232B694
mov r0, r7
mov r1, r6
mov r2, sb
mov r3, #0
bl TryInflictConstrictionStatus
_0232B694:
mov r0, r8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0232B69C: .word 0x00000123
_0232B6A0: .word WHIRLPOOL_CONSTRICTION_CHANCE
arm_func_end DoMoveDamageConstrict10

1267
asm/overlay_29_0232B6B8.s Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -6,5 +6,6 @@
#include "move.h"
bool8 DoMoveEndure(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
bool8 DoMoveLowerSpeed1(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_02328230_H
#define PMDSKY_OVERLAY_29_02328230_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
bool8 DoMoveParalyze__02328230(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
#endif

View File

@@ -5,6 +5,7 @@
#include "item.h"
#include "move.h"
bool8 DoMoveConfuse(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
bool8 DoMoveTaunt(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_023296F8_H
#define PMDSKY_OVERLAY_29_023296F8_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
bool8 DoMoveWarp(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
#endif

View File

@@ -6,5 +6,7 @@
#include "move.h"
bool8 DoMoveBlock(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
bool8 DoMovePoison(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
bool8 DoMoveToxic(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_0232A4E8_H
#define PMDSKY_OVERLAY_29_0232A4E8_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
bool8 DoMoveCurse(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_0232AD08_H
#define PMDSKY_OVERLAY_29_0232AD08_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
bool8 DoMoveLightScreen(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_0232B434_H
#define PMDSKY_OVERLAY_29_0232B434_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
bool8 DoMoveParalyze__0232B434(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_0232B6A4_H
#define PMDSKY_OVERLAY_29_0232B6A4_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
bool8 DoMovePerishSong(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
#endif

View File

@@ -1016,11 +1016,13 @@ Overlay OVY_29
Object src/overlay_29_02327928.o
Object asm/overlay_29_02327940.o
Object src/overlay_29_02327BE0.o
Object asm/overlay_29_02327BF0.o
Object asm/overlay_29_02327C08.o
Object src/overlay_29_02327DD0.o
Object asm/overlay_29_02327DE0.o
Object src/overlay_29_0232800C.o
Object asm/overlay_29_02328030.o
Object src/overlay_29_02328230.o
Object asm/overlay_29_02328248.o
Object src/overlay_29_02328394.o
Object asm/overlay_29_023283A4.o
Object src/overlay_29_02328528.o
@@ -1029,16 +1031,26 @@ Overlay OVY_29
Object asm/overlay_29_023293F8.o
Object src/overlay_29_02329664.o
Object asm/overlay_29_02329674.o
Object src/overlay_29_023296F8.o
Object asm/overlay_29_02329710.o
Object src/overlay_29_02329854.o
Object asm/overlay_29_02329868.o
Object asm/overlay_29_02329898.o
Object src/overlay_29_0232A2AC.o
Object asm/overlay_29_0232A2BC.o
Object src/overlay_29_0232A3D8.o
Object asm/overlay_29_0232A3FC.o
Object src/overlay_29_0232A480.o
Object asm/overlay_29_0232A490.o
Object src/overlay_29_0232A4E8.o
Object asm/overlay_29_0232A500.o
Object src/overlay_29_0232AC44.o
Object asm/overlay_29_0232AC54.o
Object src/overlay_29_0232AD08.o
Object asm/overlay_29_0232AD18.o
Object src/overlay_29_0232B434.o
Object asm/overlay_29_0232B44C.o
Object src/overlay_29_0232B6A4.o
Object asm/overlay_29_0232B6B8.o
Object src/overlay_29_0232C500.o
Object asm/overlay_29_0232C524.o
Object src/overlay_29_0232E250.o

View File

@@ -1,4 +1,5 @@
#include "overlay_29_02327BE0.h"
#include "move_orb_effects.h"
extern void TryInflictEndureStatus(struct entity *user, struct entity *target);
@@ -8,3 +9,10 @@ bool8 DoMoveEndure(struct entity* attacker, struct entity* defender, struct move
return TRUE;
}
bool8 DoMoveLowerSpeed1(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
{
LowerSpeed(attacker, defender, 1, TRUE);
return TRUE;
}

View File

@@ -0,0 +1,9 @@
#include "overlay_29_02328230.h"
#include "move_orb_effects.h"
bool8 DoMoveParalyze__02328230(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
{
TryInflictParalysisStatus(attacker, defender, TRUE, FALSE);
return TRUE;
}

View File

@@ -1,5 +1,14 @@
#include "overlay_29_023293E4.h"
extern void TryInflictConfusedStatus(struct entity *user, struct entity *target, bool8 displayMessage, bool8 onlyCheck);
bool8 DoMoveConfuse(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
{
TryInflictConfusedStatus(attacker, defender, TRUE, FALSE);
return TRUE;
}
extern void TryInflictTauntStatus(struct entity *user, struct entity *target, bool8 onlyCheck);
bool8 DoMoveTaunt(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)

10
src/overlay_29_023296F8.c Normal file
View File

@@ -0,0 +1,10 @@
#include "overlay_29_023296F8.h"
extern void TryWarp(struct entity *user, struct entity *target, s32, s32);
bool8 DoMoveWarp(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
{
TryWarp(attacker, defender, 0, 0);
return TRUE;
}

View File

@@ -1,6 +1,8 @@
#include "overlay_29_02329854.h"
extern void TryInflictShadowHoldStatus(struct entity *user, struct entity *target, bool8 onlyCheck);
extern void TryInflictPoisonedStatus(struct entity *user, struct entity *target, bool8 displayMessage, bool8 onlyCheck);
extern void TryInflictBadlyPoisonedStatus(struct entity *user, struct entity *target, bool8 displayMessage, bool8 onlyCheck);
bool8 DoMoveBlock(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
{
@@ -8,3 +10,17 @@ bool8 DoMoveBlock(struct entity* attacker, struct entity* defender, struct move*
return TRUE;
}
bool8 DoMovePoison(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
{
TryInflictPoisonedStatus(attacker, defender, TRUE, FALSE);
return TRUE;
}
bool8 DoMoveToxic(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
{
TryInflictBadlyPoisonedStatus(attacker, defender, TRUE, FALSE);
return TRUE;
}

10
src/overlay_29_0232A4E8.c Normal file
View File

@@ -0,0 +1,10 @@
#include "overlay_29_0232A4E8.h"
extern void TryInflictCurseStatus(struct entity *user, struct entity *target, bool8 displayMessage, bool8 onlyCheck);
bool8 DoMoveCurse(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
{
TryInflictCurseStatus(attacker, defender, TRUE, FALSE);
return TRUE;
}

10
src/overlay_29_0232AD08.c Normal file
View File

@@ -0,0 +1,10 @@
#include "overlay_29_0232AD08.h"
extern void TryInflictLightScreenStatus(struct entity *user, struct entity *target);
bool8 DoMoveLightScreen(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
{
TryInflictLightScreenStatus(attacker, defender);
return TRUE;
}

View File

@@ -0,0 +1,9 @@
#include "overlay_29_0232B434.h"
#include "move_orb_effects.h"
bool8 DoMoveParalyze__0232B434(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
{
TryInflictParalysisStatus(attacker, defender, TRUE, FALSE);
return TRUE;
}

10
src/overlay_29_0232B6A4.c Normal file
View File

@@ -0,0 +1,10 @@
#include "overlay_29_0232B6A4.h"
extern void TryInflictPerishSongStatus(struct entity *user, struct entity *target, bool8 onlyCheck);
bool8 DoMovePerishSong(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
{
TryInflictPerishSongStatus(attacker, defender, FALSE);
return TRUE;
}