diff --git a/asm/include/overlay_29_0232B6B8.inc b/asm/include/overlay_29_0232B6B8.inc deleted file mode 100644 index 90640e69..00000000 --- a/asm/include/overlay_29_0232B6B8.inc +++ /dev/null @@ -1,68 +0,0 @@ -#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 diff --git a/asm/include/overlay_29_0232B6C8.inc b/asm/include/overlay_29_0232B6C8.inc new file mode 100644 index 00000000..58a0bd10 --- /dev/null +++ b/asm/include/overlay_29_0232B6C8.inc @@ -0,0 +1,10 @@ +#pragma once +.public AreLateGameTrapsEnabledWrapper +.public DUNGEON_PTR +.public LogMessageByIdWithPopupCheckUserTarget +.public TrySpawnTrap +.public UpdateTrapsVisibility +.public ov10_022C4924 +.public ov29_02332F18 +.public ov29_02352B1C +.public ov29_0237CA84 diff --git a/asm/include/overlay_29_0232B7E0.inc b/asm/include/overlay_29_0232B7E0.inc new file mode 100644 index 00000000..f2f1b59a --- /dev/null +++ b/asm/include/overlay_29_0232B7E0.inc @@ -0,0 +1,9 @@ +#pragma once +.public ATK_STAT_IDX +.public BoostDefensiveStat +.public DealDamage +.public DungeonRandOutcomeUserTargetInteraction +.public LowerOffensiveStat +.public MIST_BALL_LOWER_SPECIAL_ATTACK_CHANCE +.public SPATK_STAT_IDX +.public TryInflictDecoyStatus diff --git a/asm/include/overlay_29_0232B8B0.inc b/asm/include/overlay_29_0232B8B0.inc new file mode 100644 index 00000000..279327cf --- /dev/null +++ b/asm/include/overlay_29_0232B8B0.inc @@ -0,0 +1,2 @@ +#pragma once +.public DealDamage diff --git a/asm/include/overlay_29_0232B8E4.inc b/asm/include/overlay_29_0232B8E4.inc new file mode 100644 index 00000000..88d2544b --- /dev/null +++ b/asm/include/overlay_29_0232B8E4.inc @@ -0,0 +1,29 @@ +#pragma once +.public AbilityIsActiveVeneer +.public AnimationDelayOrSomething +.public ApplyDamageAndEffectsWrapper +.public BoostDefensiveStat +.public BoostOffensiveStat +.public CalcDamageFixedWrapper +.public DealDamage +.public DungeonRandOutcomeUserAction +.public DungeonRandOutcomeUserTargetInteraction +.public GendersNotEqualNotGenderless +.public GetDamageSourceWrapper +.public GetMoveCategory +.public GetMoveType +.public InitMove +.public IsMonsterSleeping +.public LogMessageByIdWithPopupCheckUserTarget +.public METAL_CLAW_BOOST_ATTACK_CHANCE +.public METRONOME_NEXT_INDEX +.public METRONOME_TABLE +.public SPATK_STAT_IDX +.public SubstitutePlaceholderStringTags +.public TryIncreaseHp +.public TryInflictInfatuatedStatus +.public TryInflictLeechSeedStatus +.public ov10_022C4C3C +.public ov10_022C4C3E +.public ov10_022C5DE0 +.public ov29_02324D60 diff --git a/asm/include/overlay_29_0232BE44.inc b/asm/include/overlay_29_0232BE44.inc new file mode 100644 index 00000000..d9cea758 --- /dev/null +++ b/asm/include/overlay_29_0232BE44.inc @@ -0,0 +1,5 @@ +#pragma once +.public BAG_ITEMS_PTR_MIRROR +.public DUNGEON_PTR +.public InitStandardItem +.public LogMessageByIdWithPopupCheckUserTarget diff --git a/asm/include/overlay_29_0232BF88.inc b/asm/include/overlay_29_0232BF88.inc new file mode 100644 index 00000000..e5732324 --- /dev/null +++ b/asm/include/overlay_29_0232BF88.inc @@ -0,0 +1,24 @@ +#pragma once +.public ATK_STAT_IDX +.public AnimationDelayOrSomething +.public BeginChargedMove +.public BoostOffensiveStat +.public BoostSpeedOneStage +.public CalcDamageFixedWrapper +.public DRAGON_RAGE_FIXED_DAMAGE +.public DealDamage +.public DungeonRandOutcomeUserAction +.public DungeonRandOutcomeUserTargetInteraction +.public EndTwoTurnMove +.public GetDamageSourceWrapper +.public GetMoveCategory +.public GetMoveType +.public IsChargingTwoTurnMove +.public LUSTER_PURGE_LOWER_SPECIAL_DEFENSE_CHANCE +.public LogMessageByIdWithPopupCheckUserTarget +.public LowerDefensiveStat +.public SKULL_BASH_DAMAGE_MULTIPLIER +.public SPATK_STAT_IDX +.public StringFromId +.public TrySmashWall +.public ov29_022F8FF8 diff --git a/asm/include/overlay_29_0232C310.inc b/asm/include/overlay_29_0232C310.inc new file mode 100644 index 00000000..a5c38ccd --- /dev/null +++ b/asm/include/overlay_29_0232C310.inc @@ -0,0 +1,12 @@ +#pragma once +.public AddHeldItemToBag +.public DealDamage +.public DefenderAbilityIsActiveMoveEffects__0232BDD0 +.public DungeonRandOutcomeUserTargetInteraction +.public EntityIsValidMoveEffects__0232C500 +.public IsBagFull +.public ItemZInit +.public LogMessageByIdWithPopupCheckUserTarget +.public RemoveEquivItem +.public SubstitutePlaceholderStringTags +.public ov29_022F9EA0 diff --git a/asm/include/overlay_29_0232C524.inc b/asm/include/overlay_29_0232C524.inc index bf36c854..50c61b3c 100644 --- a/asm/include/overlay_29_0232C524.inc +++ b/asm/include/overlay_29_0232C524.inc @@ -1,148 +1,16 @@ #pragma once -.public _s32_div_f -.public AbilityIsActiveVeneer -.public AreLateGameTrapsEnabledWrapper -.public ATK_STAT_IDX .public BAG_ITEMS_PTR_MIRROR -.public BeginChargedMove -.public BoostDefensiveStat -.public BoostOffensiveStat -.public BoostOrLowerSpeed .public CalcDamageFixedWrapper -.public CalcRecoilDamageFixed .public CalcStatusDuration -.public CHARGE_BEAM_BOOST_SPECIAL_ATTACK_CHANCE -.public CountMovesOutOfPp -.public DealDamage -.public DealDamageWithTypeAndPowerBoost -.public DetermineAllMonsterShadow -.public DetermineTileWalkableNeighbors -.public DIRECTIONS_XY .public DUNGEON_PTR -.public DungeonRandInt -.public DungeonRandOutcomeUserTargetInteraction -.public EndFrozenStatus -.public EndNegativeStatusConditionWrapper -.public EndProtectStatus -.public EndReflectClassStatus -.public EndTwoTurnMove .public EntityIsValidMoveEffects__0232C500 -.public EntityIsValidMoveEffects__0232E250 -.public FixedRoomIsSubstituteRoom -.public FLARE_BLITZ_BURN_CHANCE -.public GenerateStandardItem -.public GetApparentWeather -.public GetBodySize .public GetDamageSourceWrapper -.public GetEntityNaturalGiftInfo -.public GetItemIdToSpawn -.public GetMaxPp -.public GetMonsterIdToSpawn .public GetMoveCategory -.public GetMoveType -.public GetNameWithGender -.public GetSize -.public GetSize0x80Buffer -.public GetTileAtEntity -.public GetTileSafe -.public GetTrapInfo -.public GetTreatmentBetweenMonsters -.public GetVisibilityRange -.public HandleFaint -.public HasDropeyeStatus -.public HEAL_ORDER_HP_RESTORATION -.public HEALING_WISH_HP_RESTORATION -.public ICE_FANG_CRINGE_CHANCE -.public ICE_FANG_FREEZE_CHANCE -.public IsChargingTwoTurnMove -.public IsCurrentFixedRoomBossFight -.public IsFullFloorFixedRoom -.public IsMonsterLoneOutlaw -.public IsSecretBazaarNpc -.public LAST_RESORT_DAMAGE_MULT_TABLE -.public LogMessageByIdWithPopupCheckUser .public LogMessageByIdWithPopupCheckUserTarget -.public LowerDefensiveStat -.public LowerHitChanceStat -.public LowerSpeed -.public MakeFloorOneRoom -.public MewSpawnCheck -.public MistIsActive -.public ov10_022C456C -.public ov10_022C45BC -.public ov29_022E1AAC -.public ov29_022E1AD4 -.public ov29_022E1EF8 -.public ov29_022E34A8_EU -.public ov29_022E6770 -.public ov29_022E6784 +.public SLEEP_TURN_RANGE +.public SetReflectStatus +.public TryInflictSleepStatus +.public TrySwitchPlace +.public TryWarp .public ov29_022E8104 .public ov29_022E81F8 -.public ov29_022FD7A0 -.public ov29_02332F18 -.public ov29_02336694 -.public ov29_02352B38 -.public ov29_02352B3C -.public PrepareTrapperTrap -.public RevealEnemies -.public RevealItems -.public RevealStairs -.public RevealWholeFloor -.public ROOST_HP_RESTORATION_TABLE -.public SetDungeonEscapeFields -.public SetMessageLogPreprocessorArgsString -.public SetPreprocessorArgsIdVal -.public SetReflectStatus -.public SHADOW_FORCE_DAMAGE_MULTIPLIER -.public SLEEP_TURN_RANGE -.public SPATK_STAT_IDX -.public SpawnDroppedItemWrapper -.public StringFromId -.public SubstitutePlaceholderStringTags -.public SwapDefensiveMultipliers -.public SwapDefensiveStages -.public SwapHitChanceStages -.public SwapOffensiveMultipliers -.public SwapOffensiveStages -.public SwapUserAtkAndDefModifiers -.public THUNDER_FANG_CRINGE_CHANCE -.public THUNDER_FANG_PARALYZE_CHANCE -.public TransferNegativeStatusCondition -.public TryActivateGravity -.public TryActivateIdentifyCondition -.public TryActivateWeather -.public TryDecreaseBelly -.public TryDrought -.public TryEatItem -.public TryHurl -.public TryIncreaseHp -.public TryInflictAquaRingStatus -.public TryInflictBurnStatus -.public TryInflictCoweringStatus -.public TryInflictCringeStatus -.public TryInflictEmbargoStatus -.public TryInflictFrozenStatus -.public TryInflictGastroAcidStatus -.public TryInflictHealBlockStatus -.public TryInflictInvisibleStatus -.public TryInflictLongTossStatus -.public TryInflictLuckyChantStatus -.public TryInflictMagnetRiseStatus -.public TryInflictMobileStatus -.public TryInflictMuzzledStatus -.public TryInflictParalysisStatus -.public TryInflictPetrifiedStatus -.public TryInflictPierceStatus -.public TryInflictSleeplessStatus -.public TryInflictSleepStatus -.public TryPounce -.public TryRemoveTrap -.public TrySpawnTrap -.public TrySwitchPlace -.public TryTrawl -.public TryWarp -.public UpdateMinimap -.public UpdateTrapsVisibility -.public WaitUntilAlertBoxPauseIsOver -.public WEATHER_MOVE_TURN_COUNT -.public WRING_OUT_DAMAGE_MULT_TABLE diff --git a/asm/include/overlay_29_0232C83C.inc b/asm/include/overlay_29_0232C83C.inc new file mode 100644 index 00000000..b97aa626 --- /dev/null +++ b/asm/include/overlay_29_0232C83C.inc @@ -0,0 +1,138 @@ +#pragma once +.public ATK_STAT_IDX +.public AbilityIsActiveVeneer +.public AreLateGameTrapsEnabledWrapper +.public BeginChargedMove +.public BoostDefensiveStat +.public BoostOffensiveStat +.public BoostOrLowerSpeed +.public CHARGE_BEAM_BOOST_SPECIAL_ATTACK_CHANCE +.public CalcDamageFixedWrapper +.public CalcRecoilDamageFixed +.public CountMovesOutOfPp +.public DIRECTIONS_XY +.public DUNGEON_PTR +.public DealDamage +.public DealDamageWithTypeAndPowerBoost +.public DetermineAllMonsterShadow +.public DetermineTileWalkableNeighbors +.public DungeonRandInt +.public DungeonRandOutcomeUserTargetInteraction +.public EndFrozenStatus +.public EndNegativeStatusConditionWrapper +.public EndProtectStatus +.public EndReflectClassStatus +.public EndTwoTurnMove +.public EntityIsValidMoveEffects__0232C500 +.public EntityIsValidMoveEffects__0232E250 +.public FLARE_BLITZ_BURN_CHANCE +.public FixedRoomIsSubstituteRoom +.public GenerateStandardItem +.public GetApparentWeather +.public GetBodySize +.public GetDamageSourceWrapper +.public GetEntityNaturalGiftInfo +.public GetItemIdToSpawn +.public GetMaxPp +.public GetMonsterIdToSpawn +.public GetMoveCategory +.public GetMoveType +.public GetNameWithGender +.public GetSize +.public GetSize0x80Buffer +.public GetTileAtEntity +.public GetTileSafe +.public GetTrapInfo +.public GetTreatmentBetweenMonsters +.public GetVisibilityRange +.public HEALING_WISH_HP_RESTORATION +.public HEAL_ORDER_HP_RESTORATION +.public HandleFaint +.public HasDropeyeStatus +.public ICE_FANG_CRINGE_CHANCE +.public ICE_FANG_FREEZE_CHANCE +.public IsChargingTwoTurnMove +.public IsCurrentFixedRoomBossFight +.public IsFullFloorFixedRoom +.public IsMonsterLoneOutlaw +.public IsSecretBazaarNpc +.public LAST_RESORT_DAMAGE_MULT_TABLE +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public LowerDefensiveStat +.public LowerHitChanceStat +.public LowerSpeed +.public MakeFloorOneRoom +.public MewSpawnCheck +.public MistIsActive +.public PrepareTrapperTrap +.public ROOST_HP_RESTORATION_TABLE +.public RevealEnemies +.public RevealStairs +.public RevealWholeFloor +.public SHADOW_FORCE_DAMAGE_MULTIPLIER +.public SPATK_STAT_IDX +.public SetDungeonEscapeFields +.public SetMessageLogPreprocessorArgsString +.public SetPreprocessorArgsIdVal +.public SpawnDroppedItemWrapper +.public StringFromId +.public SubstitutePlaceholderStringTags +.public SwapDefensiveMultipliers +.public SwapDefensiveStages +.public SwapHitChanceStages +.public SwapOffensiveMultipliers +.public SwapOffensiveStages +.public SwapUserAtkAndDefModifiers +.public THUNDER_FANG_CRINGE_CHANCE +.public THUNDER_FANG_PARALYZE_CHANCE +.public TransferNegativeStatusCondition +.public TryActivateGravity +.public TryActivateIdentifyCondition +.public TryActivateWeather +.public TryDecreaseBelly +.public TryDrought +.public TryEatItem +.public TryHurl +.public TryIncreaseHp +.public TryInflictAquaRingStatus +.public TryInflictBurnStatus +.public TryInflictCoweringStatus +.public TryInflictCringeStatus +.public TryInflictEmbargoStatus +.public TryInflictFrozenStatus +.public TryInflictGastroAcidStatus +.public TryInflictHealBlockStatus +.public TryInflictInvisibleStatus +.public TryInflictLongTossStatus +.public TryInflictLuckyChantStatus +.public TryInflictMagnetRiseStatus +.public TryInflictMobileStatus +.public TryInflictParalysisStatus +.public TryInflictPetrifiedStatus +.public TryInflictPierceStatus +.public TryInflictSleeplessStatus +.public TryPounce +.public TryRemoveTrap +.public TrySpawnTrap +.public TryTrawl +.public TryWarp +.public UpdateMinimap +.public UpdateTrapsVisibility +.public WEATHER_MOVE_TURN_COUNT +.public WRING_OUT_DAMAGE_MULT_TABLE +.public WaitUntilAlertBoxPauseIsOver +.public _s32_div_f +.public ov10_022C456C +.public ov10_022C45BC +.public ov29_022E1AAC +.public ov29_022E1AD4 +.public ov29_022E1EF8 +.public ov29_022E34A8_EU +.public ov29_022E6770 +.public ov29_022E6784 +.public ov29_022FD7A0 +.public ov29_02332F18 +.public ov29_02336694 +.public ov29_02352B38 +.public ov29_02352B3C diff --git a/asm/overlay_29_0232B6B8.s b/asm/overlay_29_0232B6B8.s deleted file mode 100644 index 964c88d4..00000000 --- a/asm/overlay_29_0232B6B8.s +++ /dev/null @@ -1,1267 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_0232B6B8.inc" - - .text - - arm_func_start DoMoveWrap -DoMoveWrap: ; 0x0232B6B8 - stmdb sp!, {r3, lr} - bl TryInflictWrappedStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveWrap - - arm_func_start DoMoveSpikes -DoMoveSpikes: ; 0x0232B6C8 -#ifdef JAPAN - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #0xb4] - mov r5, r1 - ldrb r0, [r0, #6] - mov r4, #0 - mov r1, #0x13 - cmp r0, #0 - movne r2, #2 - moveq r2, #1 - add r0, r6, #4 -#else - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #0xb4] - mov r6, r1 - ldrb r0, [r0, #6] - mov r4, #0 - cmp r0, #0 - movne r5, #2 - moveq r5, #1 - bl AreLateGameTrapsEnabledWrapper - cmp r0, #0 - beq _0232B718 - mov r2, r5 - add r0, r7, #4 - mov r1, #0x13 -#endif - mov r3, #1 - bl TrySpawnTrap - cmp r0, #0 - movne r4, #1 - bne _0232B728 -_0232B718: - ldr r2, _0232B734 ; =0x00000EEF -#ifdef JAPAN - mov r0, r6 - mov r1, r5 -#else - mov r0, r7 - mov r1, r6 -#endif - bl LogMessageByIdWithPopupCheckUserTarget -_0232B728: - bl UpdateTrapsVisibility - mov r0, r4 -#ifdef JAPAN - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0232B734: .word 0x00000C31 -#else - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232B734: .word 0x00000EEF -#endif - arm_func_end DoMoveSpikes - - arm_func_start DoMoveMagnitude -DoMoveMagnitude: ; 0x0232B738 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r4, _0232B7B0 ; =ov29_0237CA84 - ldr r5, _0232B7B4 ; =DUNGEON_PTR - ldr ip, [r4] - ldr r6, _0232B7B8 ; =ov29_02352B1C - ldr r4, [r5] - ldr r6, [r6, ip, lsl #2] - ldr lr, [r1, #0xb4] - add r4, r4, #0x1a000 -#ifdef JAPAN - str r6, [r4, #0x190] -#else - str r6, [r4, #0x234] -#endif - ldr r4, [r5] - mov r5, #0 - add r4, r4, #0x1a000 -#ifdef JAPAN - str r5, [r4, #0x194] -#else - str r5, [r4, #0x238] -#endif - ldrb r4, [lr, #0xd2] - ldr r5, _0232B7BC ; =ov10_022C4924 - mov ip, ip, lsl #1 - cmp r4, #0xa - ldrsh r4, [r5, ip] - str r3, [sp] - moveq r4, r4, lsl #1 - mov r3, r4 - bl ov29_02332F18 - 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 -_0232B7B0: .word ov29_0237CA84 -_0232B7B4: .word DUNGEON_PTR -_0232B7B8: .word ov29_02352B1C -_0232B7BC: .word ov10_022C4924 - arm_func_end DoMoveMagnitude - - arm_func_start DoMoveMagicCoat -DoMoveMagicCoat: ; 0x0232B7C0 - stmdb sp!, {r3, lr} - bl TryInflictMagicCoatStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveMagicCoat - - arm_func_start DoMoveProtect -DoMoveProtect: ; 0x0232B7D0 - stmdb sp!, {r3, lr} - bl TryInflictProtectStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveProtect - - arm_func_start DoMoveDefenseCurl -DoMoveDefenseCurl: ; 0x0232B7E0 - stmdb sp!, {r3, lr} - ldr r2, _0232B7FC ; =ATK_STAT_IDX - mov r3, #1 - ldr r2, [r2] - bl BoostDefensiveStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232B7FC: .word ATK_STAT_IDX - arm_func_end DoMoveDefenseCurl - - arm_func_start DoMoveDecoy -DoMoveDecoy: ; 0x0232B800 - stmdb sp!, {r3, lr} - mov r2, #1 - mov ip, #0 - mov r3, r2 - str ip, [sp] - bl TryInflictDecoyStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveDecoy - - arm_func_start DoMoveMistBall -DoMoveMistBall: ; 0x0232B820 - 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 _0232B88C - ldr r1, _0232B898 ; =MIST_BALL_LOWER_SPECIAL_ATTACK_CHANCE - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232B88C - ldr r0, _0232B89C ; =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 LowerOffensiveStat -_0232B88C: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0232B898: .word MIST_BALL_LOWER_SPECIAL_ATTACK_CHANCE -_0232B89C: .word SPATK_STAT_IDX - arm_func_end DoMoveMistBall - - arm_func_start DoMoveDestinyBond -DoMoveDestinyBond: ; 0x0232B8A0 - stmdb sp!, {r3, lr} - bl TryInflictDestinyBondStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveDestinyBond - - arm_func_start DoMoveDamage__0232B8B0 -DoMoveDamage__0232B8B0: ; 0x0232B8B0 - 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__0232B8B0 - - arm_func_start DoMoveMirrorCoat -DoMoveMirrorCoat: ; 0x0232B8D4 - stmdb sp!, {r3, lr} - bl TryInflictMirrorCoatStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveMirrorCoat - - arm_func_start DoMoveCalmMind -DoMoveCalmMind: ; 0x0232B8E4 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0232B924 ; =SPATK_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 -_0232B924: .word SPATK_STAT_IDX - arm_func_end DoMoveCalmMind - - arm_func_start DoMoveHiddenPower -DoMoveHiddenPower: ; 0x0232B928 - stmdb sp!, {r3, lr} - str r3, [sp] - mov r3, #0x100 - bl DealDamage - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveHiddenPower - - arm_func_start DoMoveMetalClaw -DoMoveMetalClaw: ; 0x0232B940 - 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 -#ifdef EUROPE - mov r5, r1 -#endif - str ip, [sp] - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232B9B8 - ldr r1, _0232B9CC ; =METAL_CLAW_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 _0232B9B8 - add r0, sp, #0x24 - ldr r2, [r0] - ldr r5, [r6, #0xb4] - 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 -_0232B9B8: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_0232B9CC: .word METAL_CLAW_BOOST_ATTACK_CHANCE - arm_func_end DoMoveMetalClaw - - arm_func_start DoMoveAttract -DoMoveAttract: ; 0x0232B9D0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - ldr r0, [r6, #0xb4] - ldr r1, [r5, #0xb4] - ldrsh r0, [r0, #2] - ldrsh r1, [r1, #2] - mov r4, #0 - bl GendersNotEqualNotGenderless - cmp r0, #0 - beq _0232BA14 - mov r4, #1 - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0 - bl TryInflictInfatuatedStatus -_0232BA14: - cmp r4, #0 - bne _0232BA3C - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags -#ifdef JAPAN - ldr r2, _0232CE90 ; =0x00000C52 - mov r0, r6 - mov r1, r5 -#else - mov r0, r6 - mov r1, r5 - mov r2, #0xf10 -#endif - bl LogMessageByIdWithPopupCheckUserTarget -_0232BA3C: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -#ifdef JAPAN -_0232CE90: .word 0x00000C52 -#endif - arm_func_end DoMoveAttract - - arm_func_start DoMoveCopycat -DoMoveCopycat: ; 0x0232BA44 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov r0, r1 - ldr r0, [r0, #0xb4] - mov r7, #0 -#ifdef JAPAN - add r4, r0, #0x120 -#else - add r4, r0, #0x124 -#endif - ldr r0, _0232BB44 ; =0x0000020D - ldr sb, [sl, #0xb4] - str r1, [sp] - mov r6, r7 - mov r5, r7 - sub fp, r0, #0xc6 -_0232BA74: - ldrb r0, [r4, r5, lsl #3] - add r8, r4, r5, lsl #3 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0232BAE0 - ldrh r1, [r8, #4] - mov r0, sl - bl ov29_02324D60 - cmp r0, #0 - bne _0232BAE0 - ldrh r1, [r8, #4] - cmp r1, fp - cmpne r1, #0xe5 - cmpne r1, #0x8a - cmpne r1, #0x28 - cmpne r1, #0x11 - ldrne r0, _0232BB44 ; =0x0000020D - cmpne r1, r0 - beq _0232BAE0 - ldrb r0, [r8] - tst r0, #0x10 - addne r0, sb, r6, lsl #1 - addne r0, r0, #0x100 -#ifdef JAPAN - strneh r1, [r0, #0x90] -#else - strneh r1, [r0, #0x94] -#endif - addne r6, r6, #1 -_0232BAE0: - add r5, r5, #1 - cmp r5, #4 - blt _0232BA74 - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r6, #0 - beq _0232BB2C -#ifdef JAPAN - ldrb r0, [sb, #0x107] - ldr r2, _0232CF98 ; =0x00000C32 - ldr r1, [sp] - cmp r0, #1 - movlo r0, #1 - strlob r0, [sb, #0x107] -#else - ldrb r0, [sb, #0x108] - ldr r1, [sp] - mov r2, #0xef0 - cmp r0, #1 - movlo r0, #1 - strlob r0, [sb, #0x108] -#endif - mov r0, sl - bl LogMessageByIdWithPopupCheckUserTarget - mov r7, #1 - b _0232BB3C -_0232BB2C: - ldr r2, _0232BB48 ; =0x00000EF1 - ldr r1, [sp] - mov r0, sl - bl LogMessageByIdWithPopupCheckUserTarget -_0232BB3C: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232BB44: .word 0x0000020D -#ifdef JAPAN -_0232CF98: .word 0x00000C32 -_0232BB48: .word 0x00000C33 -#else -_0232BB48: .word 0x00000EF1 -#endif - arm_func_end DoMoveCopycat - - arm_func_start DoMoveFrustration -DoMoveFrustration: ; 0x0232BB4C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x20 - mov r7, #0 - mov r6, r0 - strb r7, [sp, #0x1c] - mov sl, r3 - mov r5, r1 - mov r4, r2 - ldr ip, [r6, #0xb4] - mov sb, #1 - ldr r3, _0232BC28 ; =ov10_022C4C3C - ldr r0, _0232BC2C ; =0x000003E7 - b _0232BBA8 -_0232BB80: - mov r8, r7, lsl #2 - ldrsh r2, [r3, r8] - cmp r2, #0 - blt _0232BBB0 - ldrsh r1, [ip, #0xe] - cmp r1, r2 - ldrlt r0, _0232BC30 ; =ov10_022C4C3E - ldrltsh sb, [r0, r8] - blt _0232BBB0 - add r7, r7, #1 -_0232BBA8: - cmp r7, r0 - blt _0232BB80 -_0232BBB0: - mov r0, r4 - bl GetMoveType - mov r8, r0 - ldrh r0, [r4, #4] - bl GetMoveCategory - mov r7, r0 - mov r1, sl - mov r0, r4 - bl GetDamageSourceWrapper - add r3, sp, #0x1c - stmia sp, {r3, r8} - str r7, [sp, #8] - str r0, [sp, #0xc] - mov r4, #0 - str r4, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - mov r1, r5 - mov r2, sb - mov r0, r6 - str r4, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, r4 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0232BC28: .word ov10_022C4C3C -_0232BC2C: .word 0x000003E7 -_0232BC30: .word ov10_022C4C3E - arm_func_end DoMoveFrustration - - arm_func_start DoMoveLeechSeed -DoMoveLeechSeed: ; 0x0232BC34 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r2, #1 - mov r3, #0 - bl TryInflictLeechSeedStatus - ldr r1, [r4, #0xb4] -#ifdef JAPAN - ldrb r0, [r1, #0x107] - cmp r0, #1 - movlo r0, #1 - strlob r0, [r1, #0x107] -#else - ldrb r0, [r1, #0x108] - cmp r0, #1 - movlo r0, #1 - strlob r0, [r1, #0x108] -#endif - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end DoMoveLeechSeed - - arm_func_start DoMoveMetronome -DoMoveMetronome: ; 0x0232BC64 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r2, _0232BCB8 ; =METRONOME_NEXT_INDEX - mov r5, r0 - ldr r6, [r2] - ldr r0, _0232BCBC ; =METRONOME_TABLE - mov r2, r6, lsl #3 - mov r4, r1 - ldrh r1, [r0, r2] - add r0, sp, #0 - mov r7, r3 - bl InitMove - ldr r0, _0232BCC0 ; =ov10_022C5DE0 - add r2, sp, #0 - ldr ip, [r0, r6, lsl #3] - mov r0, r5 - mov r1, r4 - mov r3, r7 - blx ip - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232BCB8: .word METRONOME_NEXT_INDEX -_0232BCBC: .word METRONOME_TABLE -_0232BCC0: .word ov10_022C5DE0 - arm_func_end DoMoveMetronome - - arm_func_start DoMoveDreamEater -DoMoveDreamEater: ; 0x0232BCC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r2 -#ifdef JAPAN - mov sb, r1 - mov r2, #0x3a - mov r7, r0 - mov r6, r3 -#else - mov r6, r3 - mov sb, r1 - mov r2, #0x3a - mov r3, #1 - mov r7, r0 -#endif - mov r4, #0 - bl DefenderAbilityIsActiveMoveEffects__0232BDD0 - mov r5, r0 - mov r0, sb - bl IsMonsterSleeping - cmp r0, #0 - beq _0232BDB4 - mov r0, #1 - bl AnimationDelayOrSomething - mov r0, r7 - mov r1, sb - mov r2, r8 - mov r3, #0x100 - str r6, [sp] - bl DealDamage - cmp r0, #0 - beq _0232BDC4 - add r0, r0, r0, lsr #31 - mov r6, r0, asr #1 - mov r4, #1 - cmp r6, #1 - mov r0, r7 - mov r1, #0 - movlt r6, r4 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _0232BDC4 - ldr r1, [r7, #0xb4] -#ifdef JAPAN - ldrb r0, [r1, #0x107] - cmp r0, #1 - movlo r0, #1 - strlob r0, [r1, #0x107] -#else - ldrb r0, [r1, #0x108] - cmp r0, #1 - movlo r0, #1 - strlob r0, [r1, #0x108] -#endif - mov r0, r7 - mov r1, #0 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _0232BDC4 - cmp r5, #0 - beq _0232BD94 - mov r2, #0xd - mov r0, r7 - mov r1, r6 - add r3, r2, #0x22c - bl ApplyDamageAndEffectsWrapper - b _0232BDC4 -_0232BD94: - mov r5, #1 - mov r0, r7 - mov r1, r7 - mov r2, r6 - mov r3, #0 - str r5, [sp] - bl TryIncreaseHp - b _0232BDC4 -_0232BDB4: - ldr r2, _0232BDCC ; =0x00000EF2 - mov r0, r7 - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0232BDC4: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -#ifdef JAPAN -_0232BDCC: .word 0x00000C34 -#else -_0232BDCC: .word 0x00000EF2 -#endif - arm_func_end DoMoveDreamEater - - arm_func_start DefenderAbilityIsActiveMoveEffects__0232BDD0 -DefenderAbilityIsActiveMoveEffects__0232BDD0: ; 0x0232BDD0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r4, r2 - cmp r0, r5 - beq _0232BE24 - cmp r0, #0 - moveq r1, #0 - beq _0232BE04 - ldr r1, [r0] - cmp r1, #1 - moveq r1, #1 - movne r1, #0 - and r1, r1, #0xff -_0232BE04: - cmp r1, #0 -#ifndef JAPAN - cmpne r3, #0 -#endif - beq _0232BE24 - mov r1, #0x53 - bl AbilityIsActiveVeneer - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_0232BE24: - mov r0, r5 - mov r1, r4 - bl AbilityIsActiveVeneer - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DefenderAbilityIsActiveMoveEffects__0232BDD0 - - arm_func_start DoMoveSnatch -DoMoveSnatch: ; 0x0232BE34 - stmdb sp!, {r3, lr} - bl TryInflictSnatchStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveSnatch - - arm_func_start DoMoveRecycle -DoMoveRecycle: ; 0x0232BE44 -#ifdef JAPAN -#define DO_MOVE_RECYCLE_OFFSET 4 -#else -#define DO_MOVE_RECYCLE_OFFSET 0 -#endif - - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r5, r1 - ldr r1, [r5, #0xb4] - mov r6, r0 - ldrb r0, [r1, #6] - mov sb, #0 - cmp r0, #0 - bne _0232BF34 - ldr r7, _0232BF68 ; =DUNGEON_PTR - ldr r8, _0232BF6C ; =BAG_ITEMS_PTR_MIRROR - mov sl, sb - mov fp, #6 -_0232BE74: - mul r4, sl, fp - ldr r0, [r8] - ldr r0, [r0, #0x384] - ldrb r1, [r0, r4] - add r2, r0, r4 - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - beq _0232BF28 - ldrb r1, [r2] - tst r1, #2 - ldreqsh r1, [r2, #4] - cmpeq r1, #0xbb - bne _0232BF28 - ldrh r1, [r2, #2] - add r1, r1, #0xbc - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - cmp r1, #0xfe - beq _0232BF28 - add r0, r0, r4 - mov r2, #0 - ldrb sb, [r0, #1] - bl InitStandardItem - ldr r0, [r8] - cmp sb, #0 - ldr r0, [r0, #0x384] - add r0, r0, r4 - strb sb, [r0, #1] - beq _0232BF24 -#ifdef JAPAN - ldr r2, [r7] - mov r0, #0x23c - ldr r1, [r8] - mla r0, sb, r0, r2 - ldr r1, [r1, #0x384] - add r0, r0, #0x600 - add r2, r1, r4 - ldrh r1, [r1, r4] -#else - ldr r1, [r8] - ldr r2, [r7] - add r0, sb, sb, lsl #3 - add r0, r2, r0, lsl #6 - ldr r2, [r1, #0x384] - add r0, r0, #0x600 - ldrh r1, [r2, r4] - add r2, r2, r4 -#endif - strh r1, [r0, #0x16 + DO_MOVE_RECYCLE_OFFSET] - ldrh r1, [r2, #2] - strh r1, [r0, #0x18 + DO_MOVE_RECYCLE_OFFSET] - ldrh r1, [r2, #4] - strh r1, [r0, #0x1a + DO_MOVE_RECYCLE_OFFSET] -_0232BF24: - mov sb, #1 -_0232BF28: - add sl, sl, #1 - cmp sl, #0x32 - blt _0232BE74 -_0232BF34: - cmp sb, #0 - beq _0232BF50 - ldr r2, _0232BF70 ; =0x00000EF3 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232BF60 -_0232BF50: - ldr r2, _0232BF74 ; =0x00000EF4 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0232BF60: - mov r0, sb - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232BF68: .word DUNGEON_PTR -_0232BF6C: .word BAG_ITEMS_PTR_MIRROR -#ifdef JAPAN -_0232BF70: .word 0x00000C35 -_0232BF74: .word 0x00000C36 -#else -_0232BF70: .word 0x00000EF3 -_0232BF74: .word 0x00000EF4 -#endif - arm_func_end DoMoveRecycle - - arm_func_start DoMoveReflect -DoMoveReflect: ; 0x0232BF78 - stmdb sp!, {r3, lr} - bl TryInflictReflectStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveReflect - - arm_func_start DoMoveDragonRage -DoMoveDragonRage: ; 0x0232BF88 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x20 - mov r5, #0 - strb r5, [sp, #0x1c] - mov r7, r2 - mov r4, r0 - mov r0, r7 - mov r8, r1 - mov r5, r3 - bl GetMoveType - mov r6, r0 - ldrh r0, [r7, #4] - bl GetMoveCategory - mov r1, r5 - mov r5, r0 - mov r0, r7 - bl GetDamageSourceWrapper - add r3, sp, #0x1c - stmia sp, {r3, r6} - str r5, [sp, #8] - str r0, [sp, #0xc] - mov r2, #0 - str r2, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - str r2, [sp, #0x18] - ldr r2, _0232C024 ; =DRAGON_RAGE_FIXED_DAMAGE - mov r1, r8 - ldrsh r2, [r2] - mov r0, r4 - 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 -_0232C024: .word DRAGON_RAGE_FIXED_DAMAGE - arm_func_end DoMoveDragonRage - - arm_func_start DoMoveDragonDance -DoMoveDragonDance: ; 0x0232C028 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0232C060 ; =ATK_STAT_IDX - mov r5, r0 - ldr r2, [r2] - mov r4, r1 - mov r3, #1 - bl BoostOffensiveStat - mov r0, r5 - mov r1, r4 - mov r2, #0 - mov r3, #1 - bl BoostSpeedOneStage - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232C060: .word ATK_STAT_IDX - arm_func_end DoMoveDragonDance - - arm_func_start DoMoveSkullBash -DoMoveSkullBash: ; 0x0232C064 - 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 _0232C0C0 - ldr r1, _0232C0EC ; =SKULL_BASH_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 _0232C0E4 -_0232C0C0: - ldr r0, _0232C0F0 ; =0x00000CEB - bl StringFromId - str r0, [sp] - mov r0, r7 - mov r1, r6 - mov r3, r5 - mov r2, #6 - bl BeginChargedMove - mov r4, #1 -_0232C0E4: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232C0EC: .word SKULL_BASH_DAMAGE_MULTIPLIER -#ifdef JAPAN -_0232C0F0: .word 0x00000A2B -#else -_0232C0F0: .word 0x00000CEB -#endif - arm_func_end DoMoveSkullBash - - arm_func_start DoMoveDamageLowerSpecialDefense50 -DoMoveDamageLowerSpecialDefense50: ; 0x0232C0F4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r8, r2 - ldrh ip, [r8, #4] - ldr r2, _0232C198 ; =0x0000014F - mov r5, r0 - mov r4, r1 - mov r7, r3 - cmp ip, r2 - mov r6, #0 - bne _0232C128 - mov r0, #1 - bl AnimationDelayOrSomething -_0232C128: - mov r0, r5 - mov r1, r4 - mov r2, r8 - mov r3, #0x100 - str r7, [sp] - bl DealDamage - cmp r0, #0 - beq _0232C18C - ldr r1, _0232C19C ; =LUSTER_PURGE_LOWER_SPECIAL_DEFENSE_CHANCE - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - mov r6, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232C18C - ldr r0, _0232C1A0 ; =SPATK_STAT_IDX - mov r3, r6 - ldr r2, [r0] - mov r1, r4 - mov r0, r5 - str r3, [sp] - mov r4, #0 - str r4, [sp, #4] - bl LowerDefensiveStat -_0232C18C: - mov r0, r6 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0232C198: .word 0x0000014F -_0232C19C: .word LUSTER_PURGE_LOWER_SPECIAL_DEFENSE_CHANCE -_0232C1A0: .word SPATK_STAT_IDX - arm_func_end DoMoveDamageLowerSpecialDefense50 - - arm_func_start DoMoveStruggle -DoMoveStruggle: ; 0x0232C1A4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x1c - str r3, [sp] - mov r3, #0x100 - mov r7, r0 - mov r6, r2 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232C26C - mov r1, r4 - mov r0, r7 - mov r4, #1 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _0232C26C - ldr r1, [r7, #0xb4] - ldr r0, _0232C278 ; =0x000003E7 - ldrsh r2, [r1, #0x12] - ldrsh r1, [r1, #0x16] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - mov r0, r1, asr #1 - add r0, r1, r0, lsr #30 - mov r5, r0, asr #2 - ldr r0, [r7, #0xb4] - cmp r5, #1 - ldrsh r0, [r0, #0x10] - movlt r5, #1 - cmp r0, #0 - moveq r0, #1 - beq _0232C270 - ldrh r0, [r6, #4] - bl GetMoveCategory - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - str r0, [sp, #8] - mov r0, #0x23c - str r0, [sp, #0xc] - mov r0, #4 - str r0, [sp, #0x10] - mov r0, #1 - str r0, [sp, #0x14] - mov r0, r7 - mov r1, r7 - mov r2, r5 - str r3, [sp, #0x18] - bl CalcDamageFixedWrapper -_0232C26C: - mov r0, r4 -_0232C270: - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0232C278: .word 0x000003E7 - arm_func_end DoMoveStruggle - - arm_func_start DoMoveRockSmash -DoMoveRockSmash: ; 0x0232C27C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - add r0, sp, #0 - mov r5, r1 - mov r4, #0 - bl ov29_022F8FF8 - cmp r0, #0 - beq _0232C2B4 - ldr r2, _0232C2F4 ; =0x00000EF5 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232C2E8 -_0232C2B4: - add r0, sp, #0 - bl TrySmashWall - movs r4, r0 - beq _0232C2D8 - ldr r2, _0232C2F8 ; =0x00000EF6 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232C2E8 -_0232C2D8: - ldr r2, _0232C2FC ; =0x00000EF7 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0232C2E8: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -#ifdef JAPAN -_0232C2F4: .word 0x00000C37 -_0232C2F8: .word 0x00000C38 -_0232C2FC: .word 0x00000C39 -#else -_0232C2F4: .word 0x00000EF5 -_0232C2F8: .word 0x00000EF6 -_0232C2FC: .word 0x00000EF7 -#endif - arm_func_end DoMoveRockSmash - - arm_func_start DoMoveSeeTrap -DoMoveSeeTrap: ; 0x0232C300 - stmdb sp!, {r3, lr} - bl RevealTrapsNearby - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveSeeTrap - - arm_func_start DoMoveTakeaway -DoMoveTakeaway: ; 0x0232C310 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r8, r0 - mov r7, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232C4DC - mov r2, r4 - mov r0, r8 - mov r1, r7 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232C4BC - mov r0, #0 - mov r1, r8 - mov r2, r0 - ldr r5, [r8, #0xb4] - ldr r6, [r7, #0xb4] - bl SubstitutePlaceholderStringTags - mov r1, r7 - mov r0, r4 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r8 - mov r1, r7 - mov r2, #0x2c -#ifndef JAPAN - mov r3, r4 -#endif - bl DefenderAbilityIsActiveMoveEffects__0232BDD0 - cmp r0, #0 - beq _0232C3B0 -#ifdef JAPAN - mov r0, r8 - mov r1, r7 - mov r2, #0xc40 -#else - ldr r2, _0232C4E8 ; =0x00000EFE - mov r0, r8 - mov r1, r7 -#endif - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r4 - b _0232C4E0 -_0232C3B0: - ldrb r0, [r5, #0x62] - tst r0, #1 - movne r0, r4 - moveq r0, #0 - tst r0, #0xff - beq _0232C3E0 - ldr r2, _0232C4EC ; =0x00000EFA - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - b _0232C4E0 -_0232C3E0: - ldrb r0, [r6, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _0232C410 - ldr r2, _0232C4F0 ; =0x00000EFB - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - b _0232C4E0 -_0232C410: - ldrb r0, [r5, #6] - cmp r0, #0 - bne _0232C440 - bl IsBagFull - cmp r0, #0 - beq _0232C440 - ldr r2, _0232C4F4 ; =0x00000EFC - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - b _0232C4E0 -_0232C440: - ldrh r0, [r6, #0x62] - strh r0, [r5, #0x62] - ldrh r0, [r6, #0x64] - strh r0, [r5, #0x64] - ldrh r0, [r6, #0x66] - strh r0, [r5, #0x66] - ldrb r0, [r5, #6] - cmp r0, #0 - bne _0232C46C - mov r0, r5 - bl AddHeldItemToBag -_0232C46C: - ldrb r0, [r6, #6] - cmp r0, #0 - bne _0232C480 - add r0, r6, #0x62 - bl RemoveEquivItem -_0232C480: - add r0, r6, #0x62 - bl ItemZInit - mov r0, r8 - bl ov29_022F9EA0 - mov r0, r7 - bl ov29_022F9EA0 -#ifdef JAPAN - ldrb r0, [r5, #0x107] -#else - ldrb r0, [r5, #0x108] -#endif - ldr r2, _0232C4F8 ; =0x00000EF9 - mov r1, r7 - cmp r0, #1 - movlo r0, #1 -#ifdef JAPAN - strlob r0, [r5, #0x107] -#else - strlob r0, [r5, #0x108] -#endif - mov r0, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232C4DC -_0232C4BC: - mov r0, r7 - bl EntityIsValidMoveEffects__0232C500 - cmp r0, #0 - beq _0232C4DC - ldr r2, _0232C4FC ; =0x00000EFD - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_0232C4DC: - mov r0, r4 -_0232C4E0: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -#ifdef JAPAN -#define DO_MOVE_TAKEAWAY_OFFSET -0x2BE -#else -#define DO_MOVE_TAKEAWAY_OFFSET 0 -#endif -#ifndef JAPAN -_0232C4E8: .word 0x00000EFE -#endif -_0232C4EC: .word 0x00000EFA + DO_MOVE_TAKEAWAY_OFFSET -_0232C4F0: .word 0x00000EFB + DO_MOVE_TAKEAWAY_OFFSET -_0232C4F4: .word 0x00000EFC + DO_MOVE_TAKEAWAY_OFFSET -_0232C4F8: .word 0x00000EF9 + DO_MOVE_TAKEAWAY_OFFSET -_0232C4FC: .word 0x00000EFD + DO_MOVE_TAKEAWAY_OFFSET - arm_func_end DoMoveTakeaway diff --git a/asm/overlay_29_0232B6C8.s b/asm/overlay_29_0232B6C8.s new file mode 100644 index 00000000..fd73f2e8 --- /dev/null +++ b/asm/overlay_29_0232B6C8.s @@ -0,0 +1,111 @@ + .include "asm/macros.inc" + .include "overlay_29_0232B6C8.inc" + + .text + + arm_func_start DoMoveSpikes +DoMoveSpikes: ; 0x0232B6C8 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #0xb4] + mov r5, r1 + ldrb r0, [r0, #6] + mov r4, #0 + mov r1, #0x13 + cmp r0, #0 + movne r2, #2 + moveq r2, #1 + add r0, r6, #4 +#else + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7, #0xb4] + mov r6, r1 + ldrb r0, [r0, #6] + mov r4, #0 + cmp r0, #0 + movne r5, #2 + moveq r5, #1 + bl AreLateGameTrapsEnabledWrapper + cmp r0, #0 + beq _0232B718 + mov r2, r5 + add r0, r7, #4 + mov r1, #0x13 +#endif + mov r3, #1 + bl TrySpawnTrap + cmp r0, #0 + movne r4, #1 + bne _0232B728 +_0232B718: + ldr r2, _0232B734 ; =0x00000EEF +#ifdef JAPAN + mov r0, r6 + mov r1, r5 +#else + mov r0, r7 + mov r1, r6 +#endif + bl LogMessageByIdWithPopupCheckUserTarget +_0232B728: + bl UpdateTrapsVisibility + mov r0, r4 +#ifdef JAPAN + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232B734: .word 0x00000C31 +#else + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232B734: .word 0x00000EEF +#endif + arm_func_end DoMoveSpikes + + arm_func_start DoMoveMagnitude +DoMoveMagnitude: ; 0x0232B738 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r4, _0232B7B0 ; =ov29_0237CA84 + ldr r5, _0232B7B4 ; =DUNGEON_PTR + ldr ip, [r4] + ldr r6, _0232B7B8 ; =ov29_02352B1C + ldr r4, [r5] + ldr r6, [r6, ip, lsl #2] + ldr lr, [r1, #0xb4] + add r4, r4, #0x1a000 +#ifdef JAPAN + str r6, [r4, #0x190] +#else + str r6, [r4, #0x234] +#endif + ldr r4, [r5] + mov r5, #0 + add r4, r4, #0x1a000 +#ifdef JAPAN + str r5, [r4, #0x194] +#else + str r5, [r4, #0x238] +#endif + ldrb r4, [lr, #0xd2] + ldr r5, _0232B7BC ; =ov10_022C4924 + mov ip, ip, lsl #1 + cmp r4, #0xa + ldrsh r4, [r5, ip] + str r3, [sp] + moveq r4, r4, lsl #1 + mov r3, r4 + bl ov29_02332F18 + 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 +_0232B7B0: .word ov29_0237CA84 +_0232B7B4: .word DUNGEON_PTR +_0232B7B8: .word ov29_02352B1C +_0232B7BC: .word ov10_022C4924 + arm_func_end DoMoveMagnitude diff --git a/asm/overlay_29_0232B7E0.s b/asm/overlay_29_0232B7E0.s new file mode 100644 index 00000000..ab4115ef --- /dev/null +++ b/asm/overlay_29_0232B7E0.s @@ -0,0 +1,67 @@ + .include "asm/macros.inc" + .include "overlay_29_0232B7E0.inc" + + .text + + arm_func_start DoMoveDefenseCurl +DoMoveDefenseCurl: ; 0x0232B7E0 + stmdb sp!, {r3, lr} + ldr r2, _0232B7FC ; =ATK_STAT_IDX + mov r3, #1 + ldr r2, [r2] + bl BoostDefensiveStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232B7FC: .word ATK_STAT_IDX + arm_func_end DoMoveDefenseCurl + + arm_func_start DoMoveDecoy +DoMoveDecoy: ; 0x0232B800 + stmdb sp!, {r3, lr} + mov r2, #1 + mov ip, #0 + mov r3, r2 + str ip, [sp] + bl TryInflictDecoyStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveDecoy + + arm_func_start DoMoveMistBall +DoMoveMistBall: ; 0x0232B820 + 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 _0232B88C + ldr r1, _0232B898 ; =MIST_BALL_LOWER_SPECIAL_ATTACK_CHANCE + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232B88C + ldr r0, _0232B89C ; =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 LowerOffensiveStat +_0232B88C: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232B898: .word MIST_BALL_LOWER_SPECIAL_ATTACK_CHANCE +_0232B89C: .word SPATK_STAT_IDX + arm_func_end DoMoveMistBall diff --git a/asm/overlay_29_0232B8B0.s b/asm/overlay_29_0232B8B0.s new file mode 100644 index 00000000..bb8a0de6 --- /dev/null +++ b/asm/overlay_29_0232B8B0.s @@ -0,0 +1,17 @@ + .include "asm/macros.inc" + .include "overlay_29_0232B8B0.inc" + + .text + + arm_func_start DoMoveDamage__0232B8B0 +DoMoveDamage__0232B8B0: ; 0x0232B8B0 + 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__0232B8B0 diff --git a/asm/overlay_29_0232B8E4.s b/asm/overlay_29_0232B8E4.s new file mode 100644 index 00000000..8226c95f --- /dev/null +++ b/asm/overlay_29_0232B8E4.s @@ -0,0 +1,478 @@ + .include "asm/macros.inc" + .include "overlay_29_0232B8E4.inc" + + .text + + arm_func_start DoMoveCalmMind +DoMoveCalmMind: ; 0x0232B8E4 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _0232B924 ; =SPATK_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 +_0232B924: .word SPATK_STAT_IDX + arm_func_end DoMoveCalmMind + + arm_func_start DoMoveHiddenPower +DoMoveHiddenPower: ; 0x0232B928 + stmdb sp!, {r3, lr} + str r3, [sp] + mov r3, #0x100 + bl DealDamage + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveHiddenPower + + arm_func_start DoMoveMetalClaw +DoMoveMetalClaw: ; 0x0232B940 + 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 +#ifdef EUROPE + mov r5, r1 +#endif + str ip, [sp] + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232B9B8 + ldr r1, _0232B9CC ; =METAL_CLAW_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 _0232B9B8 + add r0, sp, #0x24 + ldr r2, [r0] + ldr r5, [r6, #0xb4] + 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 +_0232B9B8: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_0232B9CC: .word METAL_CLAW_BOOST_ATTACK_CHANCE + arm_func_end DoMoveMetalClaw + + arm_func_start DoMoveAttract +DoMoveAttract: ; 0x0232B9D0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + ldr r0, [r6, #0xb4] + ldr r1, [r5, #0xb4] + ldrsh r0, [r0, #2] + ldrsh r1, [r1, #2] + mov r4, #0 + bl GendersNotEqualNotGenderless + cmp r0, #0 + beq _0232BA14 + mov r4, #1 + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0 + bl TryInflictInfatuatedStatus +_0232BA14: + cmp r4, #0 + bne _0232BA3C + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags +#ifdef JAPAN + ldr r2, _0232CE90 ; =0x00000C52 + mov r0, r6 + mov r1, r5 +#else + mov r0, r6 + mov r1, r5 + mov r2, #0xf10 +#endif + bl LogMessageByIdWithPopupCheckUserTarget +_0232BA3C: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +#ifdef JAPAN +_0232CE90: .word 0x00000C52 +#endif + arm_func_end DoMoveAttract + + arm_func_start DoMoveCopycat +DoMoveCopycat: ; 0x0232BA44 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + mov r0, r1 + ldr r0, [r0, #0xb4] + mov r7, #0 +#ifdef JAPAN + add r4, r0, #0x120 +#else + add r4, r0, #0x124 +#endif + ldr r0, _0232BB44 ; =0x0000020D + ldr sb, [sl, #0xb4] + str r1, [sp] + mov r6, r7 + mov r5, r7 + sub fp, r0, #0xc6 +_0232BA74: + ldrb r0, [r4, r5, lsl #3] + add r8, r4, r5, lsl #3 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0232BAE0 + ldrh r1, [r8, #4] + mov r0, sl + bl ov29_02324D60 + cmp r0, #0 + bne _0232BAE0 + ldrh r1, [r8, #4] + cmp r1, fp + cmpne r1, #0xe5 + cmpne r1, #0x8a + cmpne r1, #0x28 + cmpne r1, #0x11 + ldrne r0, _0232BB44 ; =0x0000020D + cmpne r1, r0 + beq _0232BAE0 + ldrb r0, [r8] + tst r0, #0x10 + addne r0, sb, r6, lsl #1 + addne r0, r0, #0x100 +#ifdef JAPAN + strneh r1, [r0, #0x90] +#else + strneh r1, [r0, #0x94] +#endif + addne r6, r6, #1 +_0232BAE0: + add r5, r5, #1 + cmp r5, #4 + blt _0232BA74 + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r6, #0 + beq _0232BB2C +#ifdef JAPAN + ldrb r0, [sb, #0x107] + ldr r2, _0232CF98 ; =0x00000C32 + ldr r1, [sp] + cmp r0, #1 + movlo r0, #1 + strlob r0, [sb, #0x107] +#else + ldrb r0, [sb, #0x108] + ldr r1, [sp] + mov r2, #0xef0 + cmp r0, #1 + movlo r0, #1 + strlob r0, [sb, #0x108] +#endif + mov r0, sl + bl LogMessageByIdWithPopupCheckUserTarget + mov r7, #1 + b _0232BB3C +_0232BB2C: + ldr r2, _0232BB48 ; =0x00000EF1 + ldr r1, [sp] + mov r0, sl + bl LogMessageByIdWithPopupCheckUserTarget +_0232BB3C: + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232BB44: .word 0x0000020D +#ifdef JAPAN +_0232CF98: .word 0x00000C32 +_0232BB48: .word 0x00000C33 +#else +_0232BB48: .word 0x00000EF1 +#endif + arm_func_end DoMoveCopycat + + arm_func_start DoMoveFrustration +DoMoveFrustration: ; 0x0232BB4C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x20 + mov r7, #0 + mov r6, r0 + strb r7, [sp, #0x1c] + mov sl, r3 + mov r5, r1 + mov r4, r2 + ldr ip, [r6, #0xb4] + mov sb, #1 + ldr r3, _0232BC28 ; =ov10_022C4C3C + ldr r0, _0232BC2C ; =0x000003E7 + b _0232BBA8 +_0232BB80: + mov r8, r7, lsl #2 + ldrsh r2, [r3, r8] + cmp r2, #0 + blt _0232BBB0 + ldrsh r1, [ip, #0xe] + cmp r1, r2 + ldrlt r0, _0232BC30 ; =ov10_022C4C3E + ldrltsh sb, [r0, r8] + blt _0232BBB0 + add r7, r7, #1 +_0232BBA8: + cmp r7, r0 + blt _0232BB80 +_0232BBB0: + mov r0, r4 + bl GetMoveType + mov r8, r0 + ldrh r0, [r4, #4] + bl GetMoveCategory + mov r7, r0 + mov r1, sl + mov r0, r4 + bl GetDamageSourceWrapper + add r3, sp, #0x1c + stmia sp, {r3, r8} + str r7, [sp, #8] + str r0, [sp, #0xc] + mov r4, #0 + str r4, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + mov r1, r5 + mov r2, sb + mov r0, r6 + str r4, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, r4 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0232BC28: .word ov10_022C4C3C +_0232BC2C: .word 0x000003E7 +_0232BC30: .word ov10_022C4C3E + arm_func_end DoMoveFrustration + + arm_func_start DoMoveLeechSeed +DoMoveLeechSeed: ; 0x0232BC34 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r2, #1 + mov r3, #0 + bl TryInflictLeechSeedStatus + ldr r1, [r4, #0xb4] +#ifdef JAPAN + ldrb r0, [r1, #0x107] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r1, #0x107] +#else + ldrb r0, [r1, #0x108] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r1, #0x108] +#endif + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end DoMoveLeechSeed + + arm_func_start DoMoveMetronome +DoMoveMetronome: ; 0x0232BC64 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + ldr r2, _0232BCB8 ; =METRONOME_NEXT_INDEX + mov r5, r0 + ldr r6, [r2] + ldr r0, _0232BCBC ; =METRONOME_TABLE + mov r2, r6, lsl #3 + mov r4, r1 + ldrh r1, [r0, r2] + add r0, sp, #0 + mov r7, r3 + bl InitMove + ldr r0, _0232BCC0 ; =ov10_022C5DE0 + add r2, sp, #0 + ldr ip, [r0, r6, lsl #3] + mov r0, r5 + mov r1, r4 + mov r3, r7 + blx ip + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232BCB8: .word METRONOME_NEXT_INDEX +_0232BCBC: .word METRONOME_TABLE +_0232BCC0: .word ov10_022C5DE0 + arm_func_end DoMoveMetronome + + arm_func_start DoMoveDreamEater +DoMoveDreamEater: ; 0x0232BCC4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r2 +#ifdef JAPAN + mov sb, r1 + mov r2, #0x3a + mov r7, r0 + mov r6, r3 +#else + mov r6, r3 + mov sb, r1 + mov r2, #0x3a + mov r3, #1 + mov r7, r0 +#endif + mov r4, #0 + bl DefenderAbilityIsActiveMoveEffects__0232BDD0 + mov r5, r0 + mov r0, sb + bl IsMonsterSleeping + cmp r0, #0 + beq _0232BDB4 + mov r0, #1 + bl AnimationDelayOrSomething + mov r0, r7 + mov r1, sb + mov r2, r8 + mov r3, #0x100 + str r6, [sp] + bl DealDamage + cmp r0, #0 + beq _0232BDC4 + add r0, r0, r0, lsr #31 + mov r6, r0, asr #1 + mov r4, #1 + cmp r6, #1 + mov r0, r7 + mov r1, #0 + movlt r6, r4 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _0232BDC4 + ldr r1, [r7, #0xb4] +#ifdef JAPAN + ldrb r0, [r1, #0x107] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r1, #0x107] +#else + ldrb r0, [r1, #0x108] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r1, #0x108] +#endif + mov r0, r7 + mov r1, #0 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _0232BDC4 + cmp r5, #0 + beq _0232BD94 + mov r2, #0xd + mov r0, r7 + mov r1, r6 + add r3, r2, #0x22c + bl ApplyDamageAndEffectsWrapper + b _0232BDC4 +_0232BD94: + mov r5, #1 + mov r0, r7 + mov r1, r7 + mov r2, r6 + mov r3, #0 + str r5, [sp] + bl TryIncreaseHp + b _0232BDC4 +_0232BDB4: + ldr r2, _0232BDCC ; =0x00000EF2 + mov r0, r7 + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0232BDC4: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +#ifdef JAPAN +_0232BDCC: .word 0x00000C34 +#else +_0232BDCC: .word 0x00000EF2 +#endif + arm_func_end DoMoveDreamEater + + arm_func_start DefenderAbilityIsActiveMoveEffects__0232BDD0 +DefenderAbilityIsActiveMoveEffects__0232BDD0: ; 0x0232BDD0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r4, r2 + cmp r0, r5 + beq _0232BE24 + cmp r0, #0 + moveq r1, #0 + beq _0232BE04 + ldr r1, [r0] + cmp r1, #1 + moveq r1, #1 + movne r1, #0 + and r1, r1, #0xff +_0232BE04: + cmp r1, #0 +#ifndef JAPAN + cmpne r3, #0 +#endif + beq _0232BE24 + mov r1, #0x53 + bl AbilityIsActiveVeneer + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_0232BE24: + mov r0, r5 + mov r1, r4 + bl AbilityIsActiveVeneer + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DefenderAbilityIsActiveMoveEffects__0232BDD0 diff --git a/asm/overlay_29_0232BE44.s b/asm/overlay_29_0232BE44.s new file mode 100644 index 00000000..0c3ce68a --- /dev/null +++ b/asm/overlay_29_0232BE44.s @@ -0,0 +1,114 @@ + .include "asm/macros.inc" + .include "overlay_29_0232BE44.inc" + + .text + + arm_func_start DoMoveRecycle +DoMoveRecycle: ; 0x0232BE44 +#ifdef JAPAN +#define DO_MOVE_RECYCLE_OFFSET 4 +#else +#define DO_MOVE_RECYCLE_OFFSET 0 +#endif + + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r5, r1 + ldr r1, [r5, #0xb4] + mov r6, r0 + ldrb r0, [r1, #6] + mov sb, #0 + cmp r0, #0 + bne _0232BF34 + ldr r7, _0232BF68 ; =DUNGEON_PTR + ldr r8, _0232BF6C ; =BAG_ITEMS_PTR_MIRROR + mov sl, sb + mov fp, #6 +_0232BE74: + mul r4, sl, fp + ldr r0, [r8] + ldr r0, [r0, #0x384] + ldrb r1, [r0, r4] + add r2, r0, r4 + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + beq _0232BF28 + ldrb r1, [r2] + tst r1, #2 + ldreqsh r1, [r2, #4] + cmpeq r1, #0xbb + bne _0232BF28 + ldrh r1, [r2, #2] + add r1, r1, #0xbc + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + cmp r1, #0xfe + beq _0232BF28 + add r0, r0, r4 + mov r2, #0 + ldrb sb, [r0, #1] + bl InitStandardItem + ldr r0, [r8] + cmp sb, #0 + ldr r0, [r0, #0x384] + add r0, r0, r4 + strb sb, [r0, #1] + beq _0232BF24 +#ifdef JAPAN + ldr r2, [r7] + mov r0, #0x23c + ldr r1, [r8] + mla r0, sb, r0, r2 + ldr r1, [r1, #0x384] + add r0, r0, #0x600 + add r2, r1, r4 + ldrh r1, [r1, r4] +#else + ldr r1, [r8] + ldr r2, [r7] + add r0, sb, sb, lsl #3 + add r0, r2, r0, lsl #6 + ldr r2, [r1, #0x384] + add r0, r0, #0x600 + ldrh r1, [r2, r4] + add r2, r2, r4 +#endif + strh r1, [r0, #0x16 + DO_MOVE_RECYCLE_OFFSET] + ldrh r1, [r2, #2] + strh r1, [r0, #0x18 + DO_MOVE_RECYCLE_OFFSET] + ldrh r1, [r2, #4] + strh r1, [r0, #0x1a + DO_MOVE_RECYCLE_OFFSET] +_0232BF24: + mov sb, #1 +_0232BF28: + add sl, sl, #1 + cmp sl, #0x32 + blt _0232BE74 +_0232BF34: + cmp sb, #0 + beq _0232BF50 + ldr r2, _0232BF70 ; =0x00000EF3 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232BF60 +_0232BF50: + ldr r2, _0232BF74 ; =0x00000EF4 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0232BF60: + mov r0, sb + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232BF68: .word DUNGEON_PTR +_0232BF6C: .word BAG_ITEMS_PTR_MIRROR +#ifdef JAPAN +_0232BF70: .word 0x00000C35 +_0232BF74: .word 0x00000C36 +#else +_0232BF70: .word 0x00000EF3 +_0232BF74: .word 0x00000EF4 +#endif + arm_func_end DoMoveRecycle diff --git a/asm/overlay_29_0232BF88.s b/asm/overlay_29_0232BF88.s new file mode 100644 index 00000000..e8bf96f3 --- /dev/null +++ b/asm/overlay_29_0232BF88.s @@ -0,0 +1,275 @@ + .include "asm/macros.inc" + .include "overlay_29_0232BF88.inc" + + .text + + arm_func_start DoMoveDragonRage +DoMoveDragonRage: ; 0x0232BF88 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r5, #0 + strb r5, [sp, #0x1c] + mov r7, r2 + mov r4, r0 + mov r0, r7 + mov r8, r1 + mov r5, r3 + bl GetMoveType + mov r6, r0 + ldrh r0, [r7, #4] + bl GetMoveCategory + mov r1, r5 + mov r5, r0 + mov r0, r7 + bl GetDamageSourceWrapper + add r3, sp, #0x1c + stmia sp, {r3, r6} + str r5, [sp, #8] + str r0, [sp, #0xc] + mov r2, #0 + str r2, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, _0232C024 ; =DRAGON_RAGE_FIXED_DAMAGE + mov r1, r8 + ldrsh r2, [r2] + mov r0, r4 + 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 +_0232C024: .word DRAGON_RAGE_FIXED_DAMAGE + arm_func_end DoMoveDragonRage + + arm_func_start DoMoveDragonDance +DoMoveDragonDance: ; 0x0232C028 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _0232C060 ; =ATK_STAT_IDX + mov r5, r0 + ldr r2, [r2] + mov r4, r1 + mov r3, #1 + bl BoostOffensiveStat + mov r0, r5 + mov r1, r4 + mov r2, #0 + mov r3, #1 + bl BoostSpeedOneStage + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232C060: .word ATK_STAT_IDX + arm_func_end DoMoveDragonDance + + arm_func_start DoMoveSkullBash +DoMoveSkullBash: ; 0x0232C064 + 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 _0232C0C0 + ldr r1, _0232C0EC ; =SKULL_BASH_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 _0232C0E4 +_0232C0C0: + ldr r0, _0232C0F0 ; =0x00000CEB + bl StringFromId + str r0, [sp] + mov r0, r7 + mov r1, r6 + mov r3, r5 + mov r2, #6 + bl BeginChargedMove + mov r4, #1 +_0232C0E4: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232C0EC: .word SKULL_BASH_DAMAGE_MULTIPLIER +#ifdef JAPAN +_0232C0F0: .word 0x00000A2B +#else +_0232C0F0: .word 0x00000CEB +#endif + arm_func_end DoMoveSkullBash + + arm_func_start DoMoveDamageLowerSpecialDefense50 +DoMoveDamageLowerSpecialDefense50: ; 0x0232C0F4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r8, r2 + ldrh ip, [r8, #4] + ldr r2, _0232C198 ; =0x0000014F + mov r5, r0 + mov r4, r1 + mov r7, r3 + cmp ip, r2 + mov r6, #0 + bne _0232C128 + mov r0, #1 + bl AnimationDelayOrSomething +_0232C128: + mov r0, r5 + mov r1, r4 + mov r2, r8 + mov r3, #0x100 + str r7, [sp] + bl DealDamage + cmp r0, #0 + beq _0232C18C + ldr r1, _0232C19C ; =LUSTER_PURGE_LOWER_SPECIAL_DEFENSE_CHANCE + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + mov r6, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232C18C + ldr r0, _0232C1A0 ; =SPATK_STAT_IDX + mov r3, r6 + ldr r2, [r0] + mov r1, r4 + mov r0, r5 + str r3, [sp] + mov r4, #0 + str r4, [sp, #4] + bl LowerDefensiveStat +_0232C18C: + mov r0, r6 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0232C198: .word 0x0000014F +_0232C19C: .word LUSTER_PURGE_LOWER_SPECIAL_DEFENSE_CHANCE +_0232C1A0: .word SPATK_STAT_IDX + arm_func_end DoMoveDamageLowerSpecialDefense50 + + arm_func_start DoMoveStruggle +DoMoveStruggle: ; 0x0232C1A4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + str r3, [sp] + mov r3, #0x100 + mov r7, r0 + mov r6, r2 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232C26C + mov r1, r4 + mov r0, r7 + mov r4, #1 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _0232C26C + ldr r1, [r7, #0xb4] + ldr r0, _0232C278 ; =0x000003E7 + ldrsh r2, [r1, #0x12] + ldrsh r1, [r1, #0x16] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + mov r0, r1, asr #1 + add r0, r1, r0, lsr #30 + mov r5, r0, asr #2 + ldr r0, [r7, #0xb4] + cmp r5, #1 + ldrsh r0, [r0, #0x10] + movlt r5, #1 + cmp r0, #0 + moveq r0, #1 + beq _0232C270 + ldrh r0, [r6, #4] + bl GetMoveCategory + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x23c + str r0, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, r7 + mov r1, r7 + mov r2, r5 + str r3, [sp, #0x18] + bl CalcDamageFixedWrapper +_0232C26C: + mov r0, r4 +_0232C270: + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0232C278: .word 0x000003E7 + arm_func_end DoMoveStruggle + + arm_func_start DoMoveRockSmash +DoMoveRockSmash: ; 0x0232C27C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + add r0, sp, #0 + mov r5, r1 + mov r4, #0 + bl ov29_022F8FF8 + cmp r0, #0 + beq _0232C2B4 + ldr r2, _0232C2F4 ; =0x00000EF5 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232C2E8 +_0232C2B4: + add r0, sp, #0 + bl TrySmashWall + movs r4, r0 + beq _0232C2D8 + ldr r2, _0232C2F8 ; =0x00000EF6 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232C2E8 +_0232C2D8: + ldr r2, _0232C2FC ; =0x00000EF7 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0232C2E8: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +#ifdef JAPAN +_0232C2F4: .word 0x00000C37 +_0232C2F8: .word 0x00000C38 +_0232C2FC: .word 0x00000C39 +#else +_0232C2F4: .word 0x00000EF5 +_0232C2F8: .word 0x00000EF6 +_0232C2FC: .word 0x00000EF7 +#endif + arm_func_end DoMoveRockSmash diff --git a/asm/overlay_29_0232C310.s b/asm/overlay_29_0232C310.s new file mode 100644 index 00000000..99e695d4 --- /dev/null +++ b/asm/overlay_29_0232C310.s @@ -0,0 +1,165 @@ + .include "asm/macros.inc" + .include "overlay_29_0232C310.inc" + + .text + + arm_func_start DoMoveTakeaway +DoMoveTakeaway: ; 0x0232C310 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r8, r0 + mov r7, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232C4DC + mov r2, r4 + mov r0, r8 + mov r1, r7 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232C4BC + mov r0, #0 + mov r1, r8 + mov r2, r0 + ldr r5, [r8, #0xb4] + ldr r6, [r7, #0xb4] + bl SubstitutePlaceholderStringTags + mov r1, r7 + mov r0, r4 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r8 + mov r1, r7 + mov r2, #0x2c +#ifndef JAPAN + mov r3, r4 +#endif + bl DefenderAbilityIsActiveMoveEffects__0232BDD0 + cmp r0, #0 + beq _0232C3B0 +#ifdef JAPAN + mov r0, r8 + mov r1, r7 + mov r2, #0xc40 +#else + ldr r2, _0232C4E8 ; =0x00000EFE + mov r0, r8 + mov r1, r7 +#endif + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r4 + b _0232C4E0 +_0232C3B0: + ldrb r0, [r5, #0x62] + tst r0, #1 + movne r0, r4 + moveq r0, #0 + tst r0, #0xff + beq _0232C3E0 + ldr r2, _0232C4EC ; =0x00000EFA + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + b _0232C4E0 +_0232C3E0: + ldrb r0, [r6, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _0232C410 + ldr r2, _0232C4F0 ; =0x00000EFB + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + b _0232C4E0 +_0232C410: + ldrb r0, [r5, #6] + cmp r0, #0 + bne _0232C440 + bl IsBagFull + cmp r0, #0 + beq _0232C440 + ldr r2, _0232C4F4 ; =0x00000EFC + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + b _0232C4E0 +_0232C440: + ldrh r0, [r6, #0x62] + strh r0, [r5, #0x62] + ldrh r0, [r6, #0x64] + strh r0, [r5, #0x64] + ldrh r0, [r6, #0x66] + strh r0, [r5, #0x66] + ldrb r0, [r5, #6] + cmp r0, #0 + bne _0232C46C + mov r0, r5 + bl AddHeldItemToBag +_0232C46C: + ldrb r0, [r6, #6] + cmp r0, #0 + bne _0232C480 + add r0, r6, #0x62 + bl RemoveEquivItem +_0232C480: + add r0, r6, #0x62 + bl ItemZInit + mov r0, r8 + bl ov29_022F9EA0 + mov r0, r7 + bl ov29_022F9EA0 +#ifdef JAPAN + ldrb r0, [r5, #0x107] +#else + ldrb r0, [r5, #0x108] +#endif + ldr r2, _0232C4F8 ; =0x00000EF9 + mov r1, r7 + cmp r0, #1 + movlo r0, #1 +#ifdef JAPAN + strlob r0, [r5, #0x107] +#else + strlob r0, [r5, #0x108] +#endif + mov r0, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232C4DC +_0232C4BC: + mov r0, r7 + bl EntityIsValidMoveEffects__0232C500 + cmp r0, #0 + beq _0232C4DC + ldr r2, _0232C4FC ; =0x00000EFD + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_0232C4DC: + mov r0, r4 +_0232C4E0: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +#ifdef JAPAN +#define DO_MOVE_TAKEAWAY_OFFSET -0x2BE +#else +#define DO_MOVE_TAKEAWAY_OFFSET 0 +#endif +#ifndef JAPAN +_0232C4E8: .word 0x00000EFE +#endif +_0232C4EC: .word 0x00000EFA + DO_MOVE_TAKEAWAY_OFFSET +_0232C4F0: .word 0x00000EFB + DO_MOVE_TAKEAWAY_OFFSET +_0232C4F4: .word 0x00000EFC + DO_MOVE_TAKEAWAY_OFFSET +_0232C4F8: .word 0x00000EF9 + DO_MOVE_TAKEAWAY_OFFSET +_0232C4FC: .word 0x00000EFD + DO_MOVE_TAKEAWAY_OFFSET + arm_func_end DoMoveTakeaway diff --git a/asm/overlay_29_0232C524.s b/asm/overlay_29_0232C524.s index ec0dc48c..de000114 100644 --- a/asm/overlay_29_0232C524.s +++ b/asm/overlay_29_0232C524.s @@ -249,2257 +249,3 @@ _0232C80C: add sp, sp, #0x20 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} arm_func_end DoMoveTwoEdge - - arm_func_start DoMoveNoMove -DoMoveNoMove: ; 0x0232C818 - stmdb sp!, {r3, lr} - mov r2, #0 - bl TryInflictMuzzledStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveNoMove - - arm_func_start DoMoveScan -DoMoveScan: ; 0x0232C82C - stmdb sp!, {r3, lr} - bl RevealItems - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveScan - - arm_func_start DoMovePowerEars -DoMovePowerEars: ; 0x0232C83C - stmdb sp!, {r3, lr} - bl RevealEnemies - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMovePowerEars - - arm_func_start DoMoveTransfer -DoMoveTransfer: ; 0x0232C84C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r0 - mov r8, r1 - mov fp, #0 - bl FixedRoomIsSubstituteRoom - cmp r0, #0 - beq _0232C890 - mov r0, fp - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, fp - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0232C890: - ldr r7, [r8, #0xb4] - ldrb r0, [r7, #6] - cmp r0, #0 - beq _0232C9E4 - ldrsh r4, [r7, #2] - mov r0, fp - mov r1, r8 - mov r2, r0 - mov r5, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r7, #0xbc] - cmp r0, #6 - bls _0232C8DC - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, fp - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0232C8DC: - mov r6, fp - b _0232C970 -_0232C8E4: - mov r0, #0 - bl GetMonsterIdToSpawn - mov r1, #0 - mov r4, r0 - bl MewSpawnCheck - cmp r0, #0 - beq _0232C96C - mov r0, r7 - bl IsMonsterLoneOutlaw - cmp r0, #0 - bne _0232C96C - ldrb r0, [r7, #6] - cmp r0, #0 - cmpne r5, r4 - beq _0232C96C - mov r0, r4 - bl GetBodySize - mov sl, r0 - mov r0, r5 - bl GetBodySize - cmp sl, r0 - bne _0232C96C - ldrb r1, [r8, #0xaa] - mov r0, r4 - bl ov29_022E1AAC - str r0, [sp] - mov r0, r8 - bl ov29_022E1AD4 - mov sl, r0 - bl ov29_022E1EF8 - add r1, sl, r0 - ldr r0, [sp] - cmp r1, r0 - bge _0232C978 -_0232C96C: - add r6, r6, #1 -_0232C970: - cmp r6, #0x1e - blt _0232C8E4 -_0232C978: - cmp r6, #0x1e - ldrnesh r0, [r7, #2] - cmpne r0, r4 - bne _0232C99C - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232CA04 -_0232C99C: - mov r0, #1 - bl GetSize0x80Buffer - mov r5, r0 - mov r1, r4 - mov r2, #0x4e - bl GetNameWithGender - mov r1, r5 - mov r0, #1 - bl SetMessageLogPreprocessorArgsString - ldr r2, _0232CA10 ; =0x00000F01 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - mov r1, r4 - bl ov29_022FD7A0 - mov fp, #1 - b _0232CA04 -_0232C9E4: - mov r0, fp - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget -_0232CA04: - mov r0, fp - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -#ifdef JAPAN -_0232CA0C: .word 0x00000C44 -_0232CA10: .word 0x00000C43 -#else -_0232CA0C: .word 0x00000F02 -_0232CA10: .word 0x00000F01 -#endif - arm_func_end DoMoveTransfer - - arm_func_start DoMoveSlowDown -DoMoveSlowDown: ; 0x0232CA14 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, r2 - bl LowerSpeed - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveSlowDown - - arm_func_start DoMoveSearchlight -DoMoveSearchlight: ; 0x0232CA2C - stmdb sp!, {r3, lr} - bl RevealWholeFloor - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveSearchlight - - arm_func_start DoMovePetrify -DoMovePetrify: ; 0x0232CA3C - stmdb sp!, {r3, lr} - bl TryInflictPetrifiedStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMovePetrify - - arm_func_start DoMovePounce -DoMovePounce: ; 0x0232CA4C - stmdb sp!, {r3, lr} - mov r2, #8 - bl TryPounce - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMovePounce - - arm_func_start DoMoveTrawl -DoMoveTrawl: ; 0x0232CA60 - stmdb sp!, {r3, lr} - bl TryTrawl - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveTrawl - - arm_func_start DoMoveEscape -DoMoveEscape: ; 0x0232CA70 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #0 - mov r4, r1 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r0, _0232CAFC ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r0, [r0, #0x790] - cmp r0, #0 - beq _0232CAB4 - ldr r2, _0232CB00 ; =0x00000F04 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232CAF4 -_0232CAB4: - mov r0, r5 - bl IsSecretBazaarNpc - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - tst r0, #0xff - beq _0232CAE8 - ldr r2, _0232CB04 ; =0x00000F03 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0xa - bl WaitUntilAlertBoxPauseIsOver -_0232CAE8: - mov r0, #1 - mov r1, r0 - bl SetDungeonEscapeFields -_0232CAF4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232CAFC: .word DUNGEON_PTR -#ifdef JAPAN -_0232CB00: .word 0x00000C46 -_0232CB04: .word 0x00000C45 -#else -_0232CB00: .word 0x00000F04 -_0232CB04: .word 0x00000F03 -#endif - arm_func_end DoMoveEscape - - arm_func_start DoMoveDrought -DoMoveDrought: ; 0x0232CB08 - stmdb sp!, {r3, lr} - bl TryDrought - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveDrought - - arm_func_start DoMoveTrapBuster -DoMoveTrapBuster: ; 0x0232CB18 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r7, #0 - bl GetTileAtEntity - mov r4, r0 - bl IsFullFloorFixedRoom - cmp r0, #0 - beq _0232CB58 - ldr r1, _0232CCB0 ; =0x00000F07 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - mov r0, r7 - b _0232CCA8 -_0232CB58: - ldrb r0, [r4, #7] - cmp r0, #0xff - beq _0232CB74 - mov r0, sb - bl HasDropeyeStatus - cmp r0, #0 - beq _0232CB94 -_0232CB74: - bl GetVisibilityRange - ldrsh r2, [sb, #4] - ldrsh r1, [sb, #6] - sub r8, r2, r0 - sub fp, r1, r0 - add r4, r2, r0 - add r5, r1, r0 - b _0232CBD0 -_0232CB94: - ldr r0, _0232CCB4 ; =DUNGEON_PTR - ldrb r2, [r4, #7] - ldr r0, [r0] - mov r1, #0x1c -#ifdef JAPAN - add r0, r0, #0x244 -#else - add r0, r0, #0x2e8 -#endif - add r0, r0, #0xec00 - mla r0, r2, r1, r0 - ldrsh r3, [r0, #2] - ldrsh r2, [r0, #4] - ldrsh r1, [r0, #6] - ldrsh r0, [r0, #8] - sub r8, r3, #1 - sub fp, r2, #1 - add r4, r1, #1 - add r5, r0, #1 -_0232CBD0: - ldr r0, _0232CCB8 ; =ov29_02352B38 - ldrh r1, [r0] - ldrh r0, [r0, #2] - strh r1, [sp, #4] - strh r0, [sp, #6] - b _0232CC68 -_0232CBE8: - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - mov r6, fp - str r0, [sp] - b _0232CC5C -_0232CBFC: - mov r0, r8 - mov r1, r6 - bl GetTileSafe - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _0232CC58 - ldr r1, [r0] - cmp r1, #2 - bne _0232CC58 - bl GetTrapInfo - ldrb r1, [r0, #2] - tst r1, #1 - bne _0232CC58 - ldrb r0, [r0] - cmp r0, #0x11 - beq _0232CC58 - ldr r2, [sp] - add r0, sp, #8 - mov r1, #0 - strh r2, [sp, #8] - strh r6, [sp, #0xa] - bl TryRemoveTrap - mov r7, #1 -_0232CC58: - add r6, r6, #1 -_0232CC5C: - cmp r6, r5 - ble _0232CBFC - add r8, r8, #1 -_0232CC68: - cmp r8, r4 - ble _0232CBE8 - cmp r7, #0 - beq _0232CC94 - ldr r2, _0232CCBC ; =0x00000F05 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - bl UpdateMinimap - bl UpdateTrapsVisibility - b _0232CCA4 -_0232CC94: - ldr r2, _0232CCC0 ; =0x00000F06 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0232CCA4: - mov r0, r7 -_0232CCA8: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -#ifdef JAPAN -#define DO_MOVE_TRAP_BUSTER_OFFSET -0x2Be -#else -#define DO_MOVE_TRAP_BUSTER_OFFSET 0 -#endif -_0232CCB0: .word 0x00000F07 + DO_MOVE_TRAP_BUSTER_OFFSET -_0232CCB4: .word DUNGEON_PTR -_0232CCB8: .word ov29_02352B38 -_0232CCBC: .word 0x00000F05 + DO_MOVE_TRAP_BUSTER_OFFSET -_0232CCC0: .word 0x00000F06 + DO_MOVE_TRAP_BUSTER_OFFSET - arm_func_end DoMoveTrapBuster - - arm_func_start DoMoveWildCall -DoMoveWildCall: ; 0x0232CCC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldr r0, [sl, #0xb4] - mov sb, r1 - ldrb r0, [r0, #6] - mov r6, #0 - mov r4, #0 - cmp r0, #0 - ldrne r0, _0232CD88 ; =DUNGEON_PTR - movne r5, #0x10 - ldrne r0, [r0] - moveq r5, #4 -#ifdef JAPAN - addne r0, r0, #0x294 -#else - addne r0, r0, #0x338 -#endif - ldreq r0, _0232CD88 ; =DUNGEON_PTR - mov fp, #1 - ldreq r0, [r0] -#ifdef JAPAN - addeq r0, r0, #0x284 -#else - addeq r0, r0, #0x328 -#endif - add r7, r0, #0x12800 - b _0232CD60 -_0232CD10: - ldr r8, [r7, r4, lsl #2] - mov r0, r8 - bl EntityIsValidMoveEffects__0232C500 - cmp r0, #0 - cmpne sl, r8 - beq _0232CD5C - mov r0, sl - mov r1, r8 - mov r2, fp - mov r3, #0 - bl GetTreatmentBetweenMonsters - cmp r0, #0 - bne _0232CD5C - mov r0, sl - mov r1, r8 - mov r2, #2 - add r3, sl, #4 - bl TryWarp - mov r6, #1 -_0232CD5C: - add r4, r4, #1 -_0232CD60: - cmp r4, r5 - blt _0232CD10 - cmp r6, #0 - bne _0232CD80 - ldr r2, _0232CD8C ; =0x00000F08 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0232CD80: - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232CD88: .word DUNGEON_PTR -#ifdef JAPAN -_0232CD8C: .word 0x00000C4A -#else -_0232CD8C: .word 0x00000F08 -#endif - arm_func_end DoMoveWildCall - - arm_func_start DoMoveInvisify -DoMoveInvisify: ; 0x0232CD90 - stmdb sp!, {r3, lr} - mov r1, r0 - bl TryInflictInvisibleStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveInvisify - - arm_func_start DoMoveOneShot -DoMoveOneShot: ; 0x0232CDA4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x20 - mov r5, #0 - strb r5, [sp, #0x1c] - mov r7, r2 - mov r4, r0 - mov r0, r7 - mov r8, r1 - mov r5, r3 - bl GetMoveType - mov r6, r0 - ldrh r0, [r7, #4] - bl GetMoveCategory - mov r1, r5 - mov r5, r0 - mov r0, r7 - bl GetDamageSourceWrapper - add r3, sp, #0x1c - stmia sp, {r3, r6} - str r5, [sp, #8] - str r0, [sp, #0xc] - mov r2, #0 - str r2, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - str r2, [sp, #0x18] - ldr r2, _0232CE3C ; =0x0000270F - mov r1, r8 - mov r0, r4 - 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 -_0232CE3C: .word 0x0000270F - arm_func_end DoMoveOneShot - - arm_func_start DoMoveHpGauge -DoMoveHpGauge: ; 0x0232CE40 - stmdb sp!, {r3, lr} - bl TryActivateIdentifyCondition - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveHpGauge - - arm_func_start DoMoveVacuumCut -DoMoveVacuumCut: ; 0x0232CE50 - stmdb sp!, {r3, lr} - ldr ip, _0232CE78 ; =ov10_022C456C - str r3, [sp] - ldrsh r3, [ip] - bl ov29_02332F18 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_0232CE78: .word ov10_022C456C - arm_func_end DoMoveVacuumCut - - arm_func_start DoMoveReviver -DoMoveReviver: ; 0x0232CE7C - stmdb sp!, {r3, lr} - ldr r2, _0232CE90 ; =0x00000F09 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -#ifdef JAPAN -_0232CE90: .word 0x00000C4B -#else -_0232CE90: .word 0x00000F09 -#endif - arm_func_end DoMoveReviver - - arm_func_start DoMoveShocker -DoMoveShocker: ; 0x0232CE94 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryInflictCoweringStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveShocker - - arm_func_start DoMoveEcho -DoMoveEcho: ; 0x0232CEAC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x20 - mov r5, #0 - strb r5, [sp, #0x1c] - mov r4, r1 - ldr r1, [r4, #0xb4] - mov r5, r0 - ldrsh r0, [r1, #4] - mov sb, r2 - mov r6, r3 - bl GetSize - mov r8, r0 - mov r0, sb - bl GetMoveType - mov r7, r0 - ldrh r0, [sb, #4] - bl GetMoveCategory - mov r1, r6 - mov r6, r0 - mov r0, sb - bl GetDamageSourceWrapper - add r3, sp, #0x1c - stmia sp, {r3, r7} - str r6, [sp, #8] - mov r1, r4 - str r0, [sp, #0xc] - mov r4, #0 - str r4, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - mov r2, r8 - mov r0, r5 - str r4, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, r4 - 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 DoMoveEcho - - arm_func_start DoMoveFamish -DoMoveFamish: ; 0x0232CF54 - stmdb sp!, {r3, lr} - ldr r2, _0232CF70 ; =ov10_022C45BC - mov r3, #0 - ldrsh r2, [r2] - bl TryDecreaseBelly - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232CF70: .word ov10_022C45BC - arm_func_end DoMoveFamish - - arm_func_start DoMoveOneRoom -DoMoveOneRoom: ; 0x0232CF74 - stmdb sp!, {r3, lr} - bl MakeFloorOneRoom - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveOneRoom - - arm_func_start DoMoveFillIn -DoMoveFillIn: ; 0x0232CF84 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, r1 - mov r7, r0 - ldr r5, [r6, #0xb4] - mov r4, #0 - bl IsCurrentFixedRoomBossFight - cmp r0, #0 - beq _0232CFB8 - ldr r1, _0232D0E0 ; =0x00000F0B - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0232CFB8: - ldrb r1, [r5, #0x4c] - ldr r0, _0232D0E4 ; =DIRECTIONS_XY - ldrsh r3, [r6, #4] - mov r1, r1, lsl #2 - ldrsh r2, [r0, r1] - ldr r1, _0232D0E8 ; =DIRECTIONS_XY + 2 - add r0, sp, #0 - add r2, r3, r2 - strh r2, [sp] - ldrb r2, [r5, #0x4c] - ldrsh r3, [r6, #6] - mov r2, r2, lsl #2 - ldrsh r1, [r1, r2] - add r1, r3, r1 - strh r1, [sp, #2] - bl ov29_022E6770 - ldrsh r0, [sp] - ldrsh r1, [sp, #2] - bl GetTileSafe - ldrh r1, [r0] - and r1, r1, #3 - cmp r1, #2 - bne _0232D06C - ldrh r1, [r0] - mvn r4, #0 - mov r5, r4 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] -_0232D034: - mov r8, r5 -_0232D038: - ldrsh r0, [sp] - ldrsh r1, [sp, #2] - add r0, r0, r8 - add r1, r1, r4 - bl ov29_02336694 - add r8, r8, #1 - cmp r8, #1 - ble _0232D038 - add r4, r4, #1 - cmp r4, #1 - ble _0232D034 - mov r4, #1 - bl DetermineAllMonsterShadow -_0232D06C: - mov r8, #0 - mov r5, r8 -_0232D074: - mov sb, r5 -_0232D078: - mov r0, sb - mov r1, r8 - bl DetermineTileWalkableNeighbors - add sb, sb, #1 - cmp sb, #0x38 - blt _0232D078 - add r8, r8, #1 - cmp r8, #0x20 - blt _0232D074 - cmp r4, #0 - beq _0232D0C0 - add r0, sp, #0 - bl ov29_022E6784 - ldr r2, _0232D0EC ; =0x00000F0A - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232D0D0 -_0232D0C0: - ldr r2, _0232D0E0 ; =0x00000F0B - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_0232D0D0: - bl UpdateMinimap - bl UpdateTrapsVisibility - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -#ifdef JAPAN -_0232D0E0: .word 0x00000C4D -_0232D0E4: .word DIRECTIONS_XY -_0232D0E8: .word DIRECTIONS_XY + 2 -_0232D0EC: .word 0x00000C4C -#else -_0232D0E0: .word 0x00000F0B -_0232D0E4: .word DIRECTIONS_XY -_0232D0E8: .word DIRECTIONS_XY + 2 -_0232D0EC: .word 0x00000F0A -#endif - arm_func_end DoMoveFillIn - - arm_func_start DoMoveTrapper -DoMoveTrapper: ; 0x0232D0F0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl AreLateGameTrapsEnabledWrapper - cmp r0, #0 - bne _0232D11C -#ifdef JAPAN - mov r0, r5 - mov r1, #0xbc0 -#else - ldr r1, _0232D144 ; =0x00000E7E - mov r0, r5 -#endif - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0232D11C: - ldr r0, [r4, #0xb4] - mov r1, #0x19 - ldrb r0, [r0, #6] - cmp r0, #0 - movne r2, #2 - moveq r2, #1 - add r0, r4, #4 - bl PrepareTrapperTrap - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -#ifndef JAPAN -_0232D144: .word 0x00000E7E -#endif - arm_func_end DoMoveTrapper - - arm_func_start DoMoveItemize -DoMoveItemize: ; 0x0232D148 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r4, r1 - ldrh r2, [r4, #4] - mov r5, r0 - strh r2, [sp, #6] - ldrh r2, [r4, #6] - strh r2, [sp, #8] - ldr r2, [r4, #0xb4] - ldrb r2, [r2, #0xbc] - cmp r2, #6 - bls _0232D188 - ldr r2, _0232D1D4 ; =0x00000F0C - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - b _0232D1CC -_0232D188: - mov r0, #0 - strb r0, [r4, #0x20] - bl GetItemIdToSpawn - mov r1, r0 - add r0, sp, #0 - mov r2, #0 - bl GenerateStandardItem - add r1, sp, #6 - add r2, sp, #0 - mov r0, r5 - mov r3, #0 - bl SpawnDroppedItemWrapper - ldr r1, _0232D1D8 ; =0x00000257 - mov r0, r4 - mov r2, r5 - bl HandleFaint - mov r0, #1 -_0232D1CC: - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -#ifdef JAPAN -_0232D1D4: .word 0x00000C4E -#else -_0232D1D4: .word 0x00000F0C -#endif -_0232D1D8: .word 0x00000257 - arm_func_end DoMoveItemize - - arm_func_start DoMoveHurl -DoMoveHurl: ; 0x0232D1DC - stmdb sp!, {r3, lr} - bl TryHurl - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveHurl - - arm_func_start DoMoveMobile -DoMoveMobile: ; 0x0232D1EC - stmdb sp!, {r3, lr} - bl TryInflictMobileStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveMobile - - arm_func_start DoMoveSeeStairs -DoMoveSeeStairs: ; 0x0232D1FC - stmdb sp!, {r3, lr} - bl RevealStairs - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveSeeStairs - - arm_func_start DoMoveLongToss -DoMoveLongToss: ; 0x0232D20C - stmdb sp!, {r3, lr} - bl TryInflictLongTossStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveLongToss - - arm_func_start DoMovePierce -DoMovePierce: ; 0x0232D21C - stmdb sp!, {r3, lr} - bl TryInflictPierceStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMovePierce - - arm_func_start DoMoveHammerArm -DoMoveHammerArm: ; 0x0232D22C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r4, r0 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - beq _0232D268 - mov r2, #1 - mov r0, r4 - mov r1, r4 - mov r3, r2 - bl LowerSpeed - mov r0, #1 -_0232D268: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end DoMoveHammerArm - - arm_func_start DoMoveAquaRing -DoMoveAquaRing: ; 0x0232D270 - stmdb sp!, {r3, lr} - bl TryInflictAquaRingStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveAquaRing - - arm_func_start DoMoveGastroAcid -DoMoveGastroAcid: ; 0x0232D280 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryInflictGastroAcidStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveGastroAcid - - arm_func_start DoMoveHealingWish -DoMoveHealingWish: ; 0x0232D298 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - cmp r5, r4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, _0232D2E4 ; =HEALING_WISH_HP_RESTORATION - mov ip, #1 - ldrsh r2, [r2] - mov r3, #0 - str ip, [sp] - bl TryIncreaseHp - mov r2, #1 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl EndNegativeStatusConditionWrapper - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D2E4: .word HEALING_WISH_HP_RESTORATION - arm_func_end DoMoveHealingWish - - arm_func_start DoMoveCloseCombat -DoMoveCloseCombat: ; 0x0232D2E8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - str r3, [sp] - mov r3, #0x100 - mov r4, r0 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - beq _0232D358 - ldr r0, _0232D360 ; =ATK_STAT_IDX - mov r3, #1 - ldr r2, [r0] - mov r0, r4 - mov r1, r4 - str r3, [sp] - mov ip, #0 - str ip, [sp, #4] - bl LowerDefensiveStat - ldr r0, _0232D364 ; =SPATK_STAT_IDX - mov r3, #1 - ldr r2, [r0] - mov r0, r4 - mov r1, r4 - str r3, [sp] - mov ip, #0 - str ip, [sp, #4] - bl LowerDefensiveStat - mov r0, #1 -_0232D358: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_0232D360: .word ATK_STAT_IDX -_0232D364: .word SPATK_STAT_IDX - arm_func_end DoMoveCloseCombat - - arm_func_start DoMoveLuckyChant -DoMoveLuckyChant: ; 0x0232D368 - stmdb sp!, {r3, lr} - bl TryInflictLuckyChantStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveLuckyChant - - arm_func_start DoMoveGuardSwap -DoMoveGuardSwap: ; 0x0232D378 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r2, #0 - bl SwapDefensiveStages - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl SwapDefensiveMultipliers - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r5 - mov r1, r4 - ldr r2, _0232D3D4 ; =0x00000F2E - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -#ifdef JAPAN -_0232D3D4: .word 0x00002495 -#else -_0232D3D4: .word 0x00000F2E -#endif - arm_func_end DoMoveGuardSwap - - arm_func_start DoMoveHealOrder -DoMoveHealOrder: ; 0x0232D3D8 - stmdb sp!, {r3, lr} - ldr r2, _0232D3FC ; =HEAL_ORDER_HP_RESTORATION - mov ip, #1 - ldrsh r2, [r2] - mov r3, #0 - str ip, [sp] - bl TryIncreaseHp - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232D3FC: .word HEAL_ORDER_HP_RESTORATION - arm_func_end DoMoveHealOrder - - arm_func_start DoMoveHealBlock -DoMoveHealBlock: ; 0x0232D400 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryInflictHealBlockStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveHealBlock - - arm_func_start DoMoveThunderFang -DoMoveThunderFang: ; 0x0232D418 - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, r1 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _0232D4A4 ; =THUNDER_FANG_PARALYZE_CHANCE - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232D46C - mov r2, #0 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl TryInflictParalysisStatus -_0232D46C: - ldr r1, _0232D4A8 ; =THUNDER_FANG_CRINGE_CHANCE - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232D49C - mov r2, #0 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl TryInflictCringeStatus -_0232D49C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D4A4: .word THUNDER_FANG_PARALYZE_CHANCE -_0232D4A8: .word THUNDER_FANG_CRINGE_CHANCE - arm_func_end DoMoveThunderFang - - arm_func_start DoMoveDefog -DoMoveDefog: ; 0x0232D4AC - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - ldr r4, [r5, #0xb4] - bl MistIsActive - cmp r0, #0 - bne _0232D4E0 - ldrb r0, [r4, #0xd5] - add r0, r0, #0xff - and r0, r0, #0xff - cmp r0, #2 - bhi _0232D4FC -_0232D4E0: - ldr r2, _0232D550 ; =0x00000ED2 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - mov r1, r5 - bl EndReflectClassStatus -_0232D4FC: - ldr r1, _0232D554 ; =SPATK_STAT_IDX - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - mov r3, #0 - bl LowerHitChanceStat - mov r0, r6 - bl GetApparentWeather - cmp r0, #6 - bne _0232D548 - ldr r1, _0232D558 ; =WEATHER_MOVE_TURN_COUNT - ldr r0, _0232D55C ; =DUNGEON_PTR - ldrsh r3, [r1] - ldr r1, [r0] - mov r0, #1 -#ifdef JAPAN - add r2, r1, #0xcc00 - mov r1, #0 - strh r3, [r2, #0x96] -#else - add r2, r1, #0xcd00 - mov r1, #0 - strh r3, [r2, #0x3a] -#endif - bl TryActivateWeather -_0232D548: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -#ifdef JAPAN -_0232D550: .word 0x00000C14 -#else -_0232D550: .word 0x00000ED2 -#endif -_0232D554: .word SPATK_STAT_IDX -_0232D558: .word WEATHER_MOVE_TURN_COUNT -_0232D55C: .word DUNGEON_PTR - arm_func_end DoMoveDefog - - arm_func_start DoMoveTrumpCard -DoMoveTrumpCard: ; 0x0232D560 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r6, r2 - ldrb r4, [r6, #6] - mov r8, r0 - mov r0, r6 - mov r7, r1 - mov r5, r3 - bl GetMaxPp - movs r1, r0 - mov r0, #0x64 - mul r0, r4, r0 - moveq r1, #1 - bl _s32_div_f - cmp r0, #0x19 - bgt _0232D5BC - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x140 - str r5, [sp] - bl DealDamage - b _0232D614 -_0232D5BC: - cmp r0, #0x32 - bgt _0232D5E0 - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x100 - str r5, [sp] - bl DealDamage - b _0232D614 -_0232D5E0: - cmp r0, #0x4b - mov r0, r8 - mov r1, r7 - bgt _0232D604 - mov r2, r6 - mov r3, #0xc0 - str r5, [sp] - bl DealDamage - b _0232D614 -_0232D604: - mov r2, r6 - mov r3, #0x80 - str r5, [sp] - bl DealDamage -_0232D614: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end DoMoveTrumpCard - - arm_func_start DoMoveIceFang -DoMoveIceFang: ; 0x0232D620 - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, r1 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _0232D6A8 ; =ICE_FANG_FREEZE_CHANCE - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232D670 - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl TryInflictFrozenStatus -_0232D670: - ldr r1, _0232D6AC ; =ICE_FANG_CRINGE_CHANCE - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232D6A0 - mov r2, #0 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl TryInflictCringeStatus -_0232D6A0: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D6A8: .word ICE_FANG_FREEZE_CHANCE -_0232D6AC: .word ICE_FANG_CRINGE_CHANCE - arm_func_end DoMoveIceFang - - arm_func_start DoMovePsychoShift -DoMovePsychoShift: ; 0x0232D6B0 - stmdb sp!, {r3, lr} - cmp r0, r1 - beq _0232D6C8 - mov r2, #0 - mov r3, r2 - bl TransferNegativeStatusCondition -_0232D6C8: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMovePsychoShift - - arm_func_start DoMoveEmbargo -DoMoveEmbargo: ; 0x0232D6D0 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryInflictEmbargoStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveEmbargo - - arm_func_start DoMoveBrine -DoMoveBrine: ; 0x0232D6E8 - stmdb sp!, {r3, r4, r5, lr} - ldr r5, [r1, #0xb4] - ldr ip, _0232D734 ; =0x000003E7 - ldrsh r4, [r5, #0x12] - ldrsh lr, [r5, #0x16] - add r4, r4, lr - cmp r4, ip - movgt r4, ip - ldrsh ip, [r5, #0x10] - cmp r4, ip, lsl #1 - movge r4, #2 - movlt r4, #1 - str r3, [sp] - mov r3, r4, lsl #8 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D734: .word 0x000003E7 - arm_func_end DoMoveBrine - - arm_func_start DoMoveNaturalGift -DoMoveNaturalGift: ; 0x0232D738 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - mov r7, r0 - ldr r0, [r7, #0xb4] - mov r6, r1 - ldrsh r0, [r0, #0x66] - mov r5, r2 - mov r4, r3 - cmp r0, #0 - beq _0232D7C8 - add r2, sp, #0xc - mov r3, r5 - mov r1, #4 -_0232D76C: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _0232D76C - mov r0, r7 - bl GetEntityNaturalGiftInfo - cmp r0, #0 - beq _0232D7C8 - str r4, [sp] - ldrb r3, [r0, #2] - add r2, sp, #0xc - mov r1, r6 - str r3, [sp, #4] - ldrsh r4, [r0, #4] - mov r0, r7 - mov r3, #0x100 - str r4, [sp, #8] - bl DealDamageWithTypeAndPowerBoost - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - b _0232D7F0 -_0232D7C8: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, #0x100 - str r4, [sp] - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_0232D7F0: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end DoMoveNaturalGift - - arm_func_start DoMoveGyroBall -DoMoveGyroBall: ; 0x0232D7F8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - ldr ip, [r8, #0xb4] - mov r7, r1 -#ifdef JAPAN - ldr ip, [ip, #0x10c] -#else - ldr ip, [ip, #0x110] -#endif - mov r6, r2 - cmp ip, #0 - mov r5, r3 - movne r4, #1 - bne _0232D830 - ldr r2, _0232D85C ; =0x00000F0D - mov r4, #2 - bl LogMessageByIdWithPopupCheckUserTarget -_0232D830: - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, r4, lsl #8 - str r5, [sp] - bl DealDamage - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -#ifdef JAPAN -_0232D85C: .word 0x00000C4F -#else -_0232D85C: .word 0x00000F0D -#endif - arm_func_end DoMoveGyroBall - - arm_func_start DoMoveShadowForce -DoMoveShadowForce: ; 0x0232D860 - 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 _0232D8CC - ldr r1, _0232D8F4 ; =SHADOW_FORCE_DAMAGE_MULTIPLIER - mov r0, r7 - ldr r3, [r1] - mov r1, r6 - mov r2, r5 - str r4, [sp] - bl DealDamage - cmp r0, #0 - movne r4, #1 - moveq r4, #0 - mov r0, r7 - bl EndTwoTurnMove - tst r4, #0xff - beq _0232D8EC - mov r0, r7 - mov r1, r6 - bl EndProtectStatus - b _0232D8EC -_0232D8CC: - ldr r0, _0232D8F8 ; =0x00000CD7 - bl StringFromId - str r0, [sp] - mov r0, r7 - mov r1, r6 - mov r3, r5 - mov r2, #0xd - bl BeginChargedMove -_0232D8EC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232D8F4: .word SHADOW_FORCE_DAMAGE_MULTIPLIER -#ifdef JAPAN -_0232D8F8: .word 0x00000A17 -#else -_0232D8F8: .word 0x00000CD7 -#endif - arm_func_end DoMoveShadowForce - - arm_func_start DoMoveGravity -DoMoveGravity: ; 0x0232D8FC - stmdb sp!, {r3, lr} - bl TryActivateGravity - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveGravity - - arm_func_start DoMoveStealthRock -DoMoveStealthRock: ; 0x0232D90C -#ifdef JAPAN - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #0xb4] - mov r5, r1 - ldrb r0, [r0, #6] - mov r4, #0 - mov r1, #0x14 - cmp r0, #0 - movne r2, #2 - moveq r2, #1 - add r0, r6, #4 -#else - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #0xb4] - mov r6, r1 - ldrb r0, [r0, #6] - mov r4, #0 - cmp r0, #0 - movne r5, #2 - moveq r5, #1 - bl AreLateGameTrapsEnabledWrapper - cmp r0, #0 - beq _0232D95C - mov r2, r5 - add r0, r7, #4 - mov r1, #0x14 -#endif - mov r3, #0 - bl TrySpawnTrap - cmp r0, #0 - movne r4, #1 - bne _0232D96C -_0232D95C: - ldr r2, _0232D978 ; =0x00000EEF -#ifdef JAPAN - mov r0, r6 - mov r1, r5 -#else - mov r0, r7 - mov r1, r6 -#endif - bl LogMessageByIdWithPopupCheckUserTarget -_0232D96C: - bl UpdateTrapsVisibility - mov r0, r4 -#ifdef JAPAN - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0232D978: .word 0x00000C31 -#else - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232D978: .word 0x00000EEF -#endif - arm_func_end DoMoveStealthRock - - arm_func_start DoMoveChargeBeam -DoMoveChargeBeam: ; 0x0232D97C - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, r1 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _0232D9DC ; =CHARGE_BEAM_BOOST_SPECIAL_ATTACK_CHANCE - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232D9D4 - ldr r1, _0232D9E0 ; =SPATK_STAT_IDX - mov r0, r5 - ldr r2, [r1] - mov r1, r5 - mov r3, #1 - bl BoostOffensiveStat -_0232D9D4: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D9DC: .word CHARGE_BEAM_BOOST_SPECIAL_ATTACK_CHANCE -_0232D9E0: .word SPATK_STAT_IDX - arm_func_end DoMoveChargeBeam - - arm_func_start DoMoveDamageEatItem -DoMoveDamageEatItem: ; 0x0232D9E4 - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, r1 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -#ifdef EUROPE - mov r0, r5 - bl ov29_022E34A8_EU -#else -#ifndef JAPAN - ldr r0, _0232DACC ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r0, [r0, #8] - cmp r0, #0 - bne _0232DAC4 -#endif - cmp r5, #0 - moveq r0, #0 - beq _0232DA3C - ldr r0, [r5] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_0232DA3C: -#endif - cmp r0, #0 - beq _0232DAC4 - cmp r5, r4 - beq _0232DA8C - cmp r5, #0 - moveq r0, #0 - beq _0232DA6C - ldr r0, [r5] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff -_0232DA6C: - cmp r0, #0 - beq _0232DA8C - mov r0, r5 - mov r1, #0x53 - bl AbilityIsActiveVeneer - cmp r0, #0 - movne r0, #0 - bne _0232DA98 -_0232DA8C: - mov r0, r4 - mov r1, #0x2c - bl AbilityIsActiveVeneer -_0232DA98: - cmp r0, #0 - bne _0232DAC4 - ldr r1, [r5, #0xb4] - ldrb r0, [r1, #0xd8] - cmp r0, #6 - ldrneb r0, [r1, #0xf3] - cmpne r0, #1 - beq _0232DAC4 - mov r0, r5 - mov r1, r4 - bl TryEatItem -_0232DAC4: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -#if defined(NORTH_AMERICA) -_0232DACC: .word DUNGEON_PTR -#endif - arm_func_end DoMoveDamageEatItem - - arm_func_start DoMoveAcupressure -DoMoveAcupressure: ; 0x0232DAD0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r4, r1 - ldr ip, [r4, #0xb4] - ldr r1, _0232DC44 ; =ov29_02352B3C - mov r5, r0 - add lr, sp, #0 - ldmia r1, {r0, r1, r2, r3} - stmia lr, {r0, r1, r2, r3} - ldrsh r1, [ip, #0x24] - mov r0, #0 - cmp r1, #0x14 - strlt r0, [sp] - ldrsh r1, [ip, #0x26] - addlt r0, r0, #1 - cmp r1, #0x14 - addlt r1, sp, #0 - movlt r2, #1 - strlt r2, [r1, r0, lsl #2] - ldrsh r1, [ip, #0x28] - addlt r0, r0, #1 - cmp r1, #0x14 - addlt r1, sp, #0 - movlt r2, #2 - strlt r2, [r1, r0, lsl #2] - ldrsh r1, [ip, #0x2a] - addlt r0, r0, #1 - cmp r1, #0x14 - addlt r1, sp, #0 - movlt r2, #3 - strlt r2, [r1, r0, lsl #2] - addlt r0, r0, #1 - cmp r0, #0 - bne _0232DB7C - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags -#ifdef JAPAN - mov r0, r5 - mov r1, r4 - mov r2, #0xc50 -#else - ldr r2, _0232DC48 ; =0x00000F0E - mov r0, r5 - mov r1, r4 -#endif - bl LogMessageByIdWithPopupCheckUserTarget - b _0232DC38 -_0232DB7C: - bl DungeonRandInt - add r1, sp, #0 - ldr r0, [r1, r0, lsl #2] - cmp r0, #0 - bne _0232DBAC - ldr r1, _0232DC4C ; =ATK_STAT_IDX - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #2 - bl BoostOffensiveStat - b _0232DC38 -_0232DBAC: - cmp r0, #2 - bne _0232DBD0 - ldr r1, _0232DC4C ; =ATK_STAT_IDX - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #2 - bl BoostDefensiveStat - b _0232DC38 -_0232DBD0: - cmp r0, #1 - bne _0232DBF4 - ldr r1, _0232DC50 ; =SPATK_STAT_IDX - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #2 - bl BoostOffensiveStat - b _0232DC38 -_0232DBF4: - cmp r0, #3 - bne _0232DC18 - ldr r1, _0232DC50 ; =SPATK_STAT_IDX - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #2 - bl BoostDefensiveStat - b _0232DC38 -_0232DC18: - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags -#ifdef JAPAN - mov r0, r5 - mov r1, r4 - mov r2, #0xc50 -#else - ldr r2, _0232DC48 ; =0x00000F0E - mov r0, r5 - mov r1, r4 -#endif - bl LogMessageByIdWithPopupCheckUserTarget -_0232DC38: - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232DC44: .word ov29_02352B3C -#ifndef JAPAN -_0232DC48: .word 0x00000F0E -#endif -_0232DC4C: .word ATK_STAT_IDX -_0232DC50: .word SPATK_STAT_IDX - arm_func_end DoMoveAcupressure - - arm_func_start DoMoveMagnetRise -DoMoveMagnetRise: ; 0x0232DC54 - stmdb sp!, {r3, lr} - bl TryInflictMagnetRiseStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveMagnetRise - - arm_func_start DoMoveToxicSpikes -DoMoveToxicSpikes: ; 0x0232DC64 -#ifdef JAPAN - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #0xb4] - mov r5, r1 - ldrb r0, [r0, #6] - mov r4, #0 - mov r1, #0x15 - cmp r0, #0 - movne r2, #2 - moveq r2, #1 - add r0, r6, #4 -#else - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #0xb4] - mov r6, r1 - ldrb r0, [r0, #6] - mov r4, #0 - cmp r0, #0 - movne r5, #2 - moveq r5, #1 - bl AreLateGameTrapsEnabledWrapper - cmp r0, #0 - beq _0232DCB4 - mov r2, r5 - add r0, r7, #4 - mov r1, #0x15 -#endif - mov r3, #1 - bl TrySpawnTrap - cmp r0, #0 - movne r4, #1 - bne _0232DCC4 -_0232DCB4: - ldr r2, _0232DCD0 ; =0x00000EEF -#ifdef JAPAN - mov r0, r6 - mov r1, r5 -#else - mov r0, r7 - mov r1, r6 -#endif - bl LogMessageByIdWithPopupCheckUserTarget -_0232DCC4: - bl UpdateTrapsVisibility - mov r0, r4 -#ifdef JAPAN - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0232DCD0: .word 0x00000C31 -#else - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232DCD0: .word 0x00000EEF -#endif - arm_func_end DoMoveToxicSpikes - - arm_func_start DoMoveLastResort -DoMoveLastResort: ; 0x0232DCD4 - 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 CountMovesOutOfPp - cmp r0, #0 - ble _0232DD10 - ldrb r1, [r6, #6] - cmp r1, #0 - subeq r0, r0, #1 - moveq r0, r0, lsl #0x10 - moveq r0, r0, asr #0x10 -_0232DD10: - cmp r0, #0 - ble _0232DD44 - ldr r1, _0232DD70 ; =LAST_RESORT_DAMAGE_MULT_TABLE - sub r0, r0, #1 - ldr r3, [r1, r0, lsl #2] - mov r0, r8 - mov r1, r7 - mov r2, r6 - str r5, [sp] - bl DealDamage - cmp r0, #0 -#ifdef JAPAN - moveq r4, #1 -#else - movgt r4, #1 -#endif - b _0232DD64 -_0232DD44: - mov r1, r7 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232DD74 ; =0x00000EBC - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_0232DD64: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0232DD70: .word LAST_RESORT_DAMAGE_MULT_TABLE -#ifdef JAPAN -_0232DD74: .word 0x00000BFE -#else -_0232DD74: .word 0x00000EBC -#endif - arm_func_end DoMoveLastResort - - arm_func_start DoMoveTrickRoom -DoMoveTrickRoom: ; 0x0232DD78 - stmdb sp!, {r3, lr} - bl BoostOrLowerSpeed - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveTrickRoom - - arm_func_start DoMoveDamage__0232DD88 -DoMoveDamage__0232DD88: ; 0x0232DD88 - 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__0232DD88 - - arm_func_start DoMoveWorrySeed -DoMoveWorrySeed: ; 0x0232DDAC - stmdb sp!, {r4, r5, r6, lr} -#ifndef JAPAN - mov r4, #1 - mov r3, r4 -#endif - mov r2, #0x2a - mov r6, r0 - mov r5, r1 -#ifdef JAPAN - mov r4, #1 -#endif - bl DefenderAbilityIsActiveMoveEffects__0232DE20 - cmp r0, #0 - beq _0232DE00 - mov r4, #0 - mov r0, r4 - mov r1, r5 - mov r2, r4 - bl SubstitutePlaceholderStringTags - mov r0, #1 - mov r1, #0x2a - bl SetPreprocessorArgsIdVal - ldr r2, _0232DE1C ; =0x00000F13 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0232DE00: - cmp r4, #0 - beq _0232DE14 - mov r0, r6 - mov r1, r5 - bl TryInflictSleeplessStatus -_0232DE14: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -#ifdef JAPAN -_0232DE1C: .word 0x00000C55 -#else -_0232DE1C: .word 0x00000F13 -#endif - arm_func_end DoMoveWorrySeed - - arm_func_start DefenderAbilityIsActiveMoveEffects__0232DE20 -DefenderAbilityIsActiveMoveEffects__0232DE20: ; 0x0232DE20 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r4, r2 - cmp r0, r5 - beq _0232DE74 - cmp r0, #0 - moveq r1, #0 - beq _0232DE54 - ldr r1, [r0] - cmp r1, #1 - moveq r1, #1 - movne r1, #0 - and r1, r1, #0xff -_0232DE54: - cmp r1, #0 -#ifndef JAPAN - cmpne r3, #0 -#endif - beq _0232DE74 - mov r1, #0x53 - bl AbilityIsActiveVeneer - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_0232DE74: - mov r0, r5 - mov r1, r4 - bl AbilityIsActiveVeneer - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DefenderAbilityIsActiveMoveEffects__0232DE20 - - arm_func_start DoMoveDamageHpDependent -DoMoveDamageHpDependent: ; 0x0232DE84 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr ip, [r1, #0xb4] - ldr r6, _0232DF30 ; =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 _0232DF08 - ldr r4, _0232DF30 ; =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 _0232DF08 - ldr r4, _0232DF30 ; =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 -_0232DF08: - ldr r4, _0232DF34 ; =WRING_OUT_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 -_0232DF30: .word 0x000003E7 -_0232DF34: .word WRING_OUT_DAMAGE_MULT_TABLE - arm_func_end DoMoveDamageHpDependent - - arm_func_start DoMoveHeartSwap -DoMoveHeartSwap: ; 0x0232DF38 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r2, #0 - bl SwapOffensiveStages - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl SwapOffensiveMultipliers - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl SwapDefensiveStages - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl SwapDefensiveMultipliers - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl SwapHitChanceStages - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, #1 - mov r1, r4 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r5 - mov r1, r4 - ldr r2, _0232DFC4 ; =0x00000F2F - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -#ifdef JAPAN -_0232DFC4: .word 0x00002496 -#else -_0232DFC4: .word 0x00000F2F -#endif - arm_func_end DoMoveHeartSwap - - arm_func_start DoMoveRoost -DoMoveRoost: ; 0x0232DFC8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r0 - mov r6, r1 - ldr r4, [r5, #0xb4] - bl GetApparentWeather - mov r3, #1 - str r3, [sp] - ldr r1, _0232E07C ; =ROOST_HP_RESTORATION_TABLE - mov r0, r0, lsl #1 - ldrsh r2, [r1, r0] - mov r0, r5 - mov r1, r6 - mov r3, #0 - bl TryIncreaseHp - ldrb r0, [r4, #0x5e] - mov ip, #0 - mov r1, ip - strb r0, [r4, #0xaa] - ldrb r0, [r4, #0x5f] - strb r0, [r4, #0xab] - mov r0, #1 -_0232E020: - add r3, r4, ip - ldrb r2, [r3, #0x5e] - add ip, ip, #1 - cmp r2, #0xa - streqb r1, [r3, #0x5e] - streqb r0, [r4, #0xa9] - cmp ip, #2 - blt _0232E020 - ldrb r0, [r4, #0xa9] - cmp r0, #0 - mov r0, #0 - streqb r0, [r4, #0xaa] - streqb r0, [r4, #0xab] - beq _0232E070 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0232E080 ; =0x00000CC9 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser -_0232E070: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232E07C: .word ROOST_HP_RESTORATION_TABLE -#ifdef JAPAN -_0232E080: .word 0x00000A09 -#else -_0232E080: .word 0x00000CC9 -#endif - arm_func_end DoMoveRoost - - arm_func_start DoMovePowerSwap -DoMovePowerSwap: ; 0x0232E084 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r2, #0 - bl SwapOffensiveStages - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl SwapOffensiveMultipliers - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r5 - mov r1, r4 - ldr r2, _0232E0E0 ; =0x00000F2B - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -#ifdef JAPAN -_0232E0E0: .word 0x00002492 -#else -_0232E0E0: .word 0x00000F2B -#endif - arm_func_end DoMovePowerSwap - - arm_func_start DoMovePowerTrick -DoMovePowerTrick: ; 0x0232E0E4 - stmdb sp!, {r3, lr} - mov r2, #1 - bl SwapUserAtkAndDefModifiers - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMovePowerTrick - - arm_func_start DoMoveFeint -DoMoveFeint: ; 0x0232E0F8 - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, r1 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl EndProtectStatus - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DoMoveFeint - - arm_func_start DoMoveFlareBlitz -DoMoveFlareBlitz: ; 0x0232E130 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x18 - mov r5, r0 - mov r7, r1 - mov r4, r2 - mov r6, r3 - bl EndFrozenStatus - mov r0, r5 - mov r1, r7 - mov r2, r4 - mov r3, #0x100 - str r6, [sp] - bl DealDamage - cmp r0, #0 - moveq r0, #0 - beq _0232E240 - mov r0, r5 - bl EntityIsValidMoveEffects__0232E250 - cmp r0, #0 - beq _0232E1B4 - ldr r1, _0232E248 ; =FLARE_BLITZ_BURN_CHANCE - mov r0, r5 - ldrsh r2, [r1] - mov r1, r7 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232E1B4 - mov r2, #0 - mov r0, r5 - mov r1, r7 - mov r3, r2 - str r2, [sp] - bl TryInflictBurnStatus -_0232E1B4: - mov r0, r5 - bl EntityIsValidMoveEffects__0232E250 - cmp r0, #0 - beq _0232E23C - mov r0, r5 - mov r1, #7 - bl AbilityIsActiveVeneer - cmp r0, #0 - bne _0232E23C - ldr r1, [r5, #0xb4] - ldr r0, _0232E24C ; =0x000003E7 - ldrsh r2, [r1, #0x12] - ldrsh r1, [r1, #0x16] - ldrh r3, [r4, #4] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - mov r0, r1, asr #2 - add r0, r1, r0, lsr #29 - movs r1, r0, asr #3 - mov r2, #0 - str r3, [sp] - mov r0, #0x23c - str r2, [sp, #4] - str r0, [sp, #8] - mov r0, #0x14 - str r0, [sp, #0xc] - mov r0, #1 - str r0, [sp, #0x10] - moveq r1, #1 - mov r0, r5 - mov r3, r2 - str r2, [sp, #0x14] - bl CalcRecoilDamageFixed -_0232E23C: - mov r0, #1 -_0232E240: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232E248: .word FLARE_BLITZ_BURN_CHANCE -_0232E24C: .word 0x000003E7 - arm_func_end DoMoveFlareBlitz diff --git a/asm/overlay_29_0232C83C.s b/asm/overlay_29_0232C83C.s new file mode 100644 index 00000000..988ce922 --- /dev/null +++ b/asm/overlay_29_0232C83C.s @@ -0,0 +1,2241 @@ + .include "asm/macros.inc" + .include "overlay_29_0232C83C.inc" + + .text + + arm_func_start DoMovePowerEars +DoMovePowerEars: ; 0x0232C83C + stmdb sp!, {r3, lr} + bl RevealEnemies + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMovePowerEars + + arm_func_start DoMoveTransfer +DoMoveTransfer: ; 0x0232C84C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r0 + mov r8, r1 + mov fp, #0 + bl FixedRoomIsSubstituteRoom + cmp r0, #0 + beq _0232C890 + mov r0, fp + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, fp + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0232C890: + ldr r7, [r8, #0xb4] + ldrb r0, [r7, #6] + cmp r0, #0 + beq _0232C9E4 + ldrsh r4, [r7, #2] + mov r0, fp + mov r1, r8 + mov r2, r0 + mov r5, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r7, #0xbc] + cmp r0, #6 + bls _0232C8DC + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, fp + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0232C8DC: + mov r6, fp + b _0232C970 +_0232C8E4: + mov r0, #0 + bl GetMonsterIdToSpawn + mov r1, #0 + mov r4, r0 + bl MewSpawnCheck + cmp r0, #0 + beq _0232C96C + mov r0, r7 + bl IsMonsterLoneOutlaw + cmp r0, #0 + bne _0232C96C + ldrb r0, [r7, #6] + cmp r0, #0 + cmpne r5, r4 + beq _0232C96C + mov r0, r4 + bl GetBodySize + mov sl, r0 + mov r0, r5 + bl GetBodySize + cmp sl, r0 + bne _0232C96C + ldrb r1, [r8, #0xaa] + mov r0, r4 + bl ov29_022E1AAC + str r0, [sp] + mov r0, r8 + bl ov29_022E1AD4 + mov sl, r0 + bl ov29_022E1EF8 + add r1, sl, r0 + ldr r0, [sp] + cmp r1, r0 + bge _0232C978 +_0232C96C: + add r6, r6, #1 +_0232C970: + cmp r6, #0x1e + blt _0232C8E4 +_0232C978: + cmp r6, #0x1e + ldrnesh r0, [r7, #2] + cmpne r0, r4 + bne _0232C99C + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232CA04 +_0232C99C: + mov r0, #1 + bl GetSize0x80Buffer + mov r5, r0 + mov r1, r4 + mov r2, #0x4e + bl GetNameWithGender + mov r1, r5 + mov r0, #1 + bl SetMessageLogPreprocessorArgsString + ldr r2, _0232CA10 ; =0x00000F01 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + mov r1, r4 + bl ov29_022FD7A0 + mov fp, #1 + b _0232CA04 +_0232C9E4: + mov r0, fp + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget +_0232CA04: + mov r0, fp + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +#ifdef JAPAN +_0232CA0C: .word 0x00000C44 +_0232CA10: .word 0x00000C43 +#else +_0232CA0C: .word 0x00000F02 +_0232CA10: .word 0x00000F01 +#endif + arm_func_end DoMoveTransfer + + arm_func_start DoMoveSlowDown +DoMoveSlowDown: ; 0x0232CA14 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, r2 + bl LowerSpeed + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveSlowDown + + arm_func_start DoMoveSearchlight +DoMoveSearchlight: ; 0x0232CA2C + stmdb sp!, {r3, lr} + bl RevealWholeFloor + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveSearchlight + + arm_func_start DoMovePetrify +DoMovePetrify: ; 0x0232CA3C + stmdb sp!, {r3, lr} + bl TryInflictPetrifiedStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMovePetrify + + arm_func_start DoMovePounce +DoMovePounce: ; 0x0232CA4C + stmdb sp!, {r3, lr} + mov r2, #8 + bl TryPounce + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMovePounce + + arm_func_start DoMoveTrawl +DoMoveTrawl: ; 0x0232CA60 + stmdb sp!, {r3, lr} + bl TryTrawl + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveTrawl + + arm_func_start DoMoveEscape +DoMoveEscape: ; 0x0232CA70 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #0 + mov r4, r1 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r0, _0232CAFC ; =DUNGEON_PTR + ldr r0, [r0] + ldrb r0, [r0, #0x790] + cmp r0, #0 + beq _0232CAB4 + ldr r2, _0232CB00 ; =0x00000F04 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232CAF4 +_0232CAB4: + mov r0, r5 + bl IsSecretBazaarNpc + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + tst r0, #0xff + beq _0232CAE8 + ldr r2, _0232CB04 ; =0x00000F03 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0xa + bl WaitUntilAlertBoxPauseIsOver +_0232CAE8: + mov r0, #1 + mov r1, r0 + bl SetDungeonEscapeFields +_0232CAF4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232CAFC: .word DUNGEON_PTR +#ifdef JAPAN +_0232CB00: .word 0x00000C46 +_0232CB04: .word 0x00000C45 +#else +_0232CB00: .word 0x00000F04 +_0232CB04: .word 0x00000F03 +#endif + arm_func_end DoMoveEscape + + arm_func_start DoMoveDrought +DoMoveDrought: ; 0x0232CB08 + stmdb sp!, {r3, lr} + bl TryDrought + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveDrought + + arm_func_start DoMoveTrapBuster +DoMoveTrapBuster: ; 0x0232CB18 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r7, #0 + bl GetTileAtEntity + mov r4, r0 + bl IsFullFloorFixedRoom + cmp r0, #0 + beq _0232CB58 + ldr r1, _0232CCB0 ; =0x00000F07 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + mov r0, r7 + b _0232CCA8 +_0232CB58: + ldrb r0, [r4, #7] + cmp r0, #0xff + beq _0232CB74 + mov r0, sb + bl HasDropeyeStatus + cmp r0, #0 + beq _0232CB94 +_0232CB74: + bl GetVisibilityRange + ldrsh r2, [sb, #4] + ldrsh r1, [sb, #6] + sub r8, r2, r0 + sub fp, r1, r0 + add r4, r2, r0 + add r5, r1, r0 + b _0232CBD0 +_0232CB94: + ldr r0, _0232CCB4 ; =DUNGEON_PTR + ldrb r2, [r4, #7] + ldr r0, [r0] + mov r1, #0x1c +#ifdef JAPAN + add r0, r0, #0x244 +#else + add r0, r0, #0x2e8 +#endif + add r0, r0, #0xec00 + mla r0, r2, r1, r0 + ldrsh r3, [r0, #2] + ldrsh r2, [r0, #4] + ldrsh r1, [r0, #6] + ldrsh r0, [r0, #8] + sub r8, r3, #1 + sub fp, r2, #1 + add r4, r1, #1 + add r5, r0, #1 +_0232CBD0: + ldr r0, _0232CCB8 ; =ov29_02352B38 + ldrh r1, [r0] + ldrh r0, [r0, #2] + strh r1, [sp, #4] + strh r0, [sp, #6] + b _0232CC68 +_0232CBE8: + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + mov r6, fp + str r0, [sp] + b _0232CC5C +_0232CBFC: + mov r0, r8 + mov r1, r6 + bl GetTileSafe + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _0232CC58 + ldr r1, [r0] + cmp r1, #2 + bne _0232CC58 + bl GetTrapInfo + ldrb r1, [r0, #2] + tst r1, #1 + bne _0232CC58 + ldrb r0, [r0] + cmp r0, #0x11 + beq _0232CC58 + ldr r2, [sp] + add r0, sp, #8 + mov r1, #0 + strh r2, [sp, #8] + strh r6, [sp, #0xa] + bl TryRemoveTrap + mov r7, #1 +_0232CC58: + add r6, r6, #1 +_0232CC5C: + cmp r6, r5 + ble _0232CBFC + add r8, r8, #1 +_0232CC68: + cmp r8, r4 + ble _0232CBE8 + cmp r7, #0 + beq _0232CC94 + ldr r2, _0232CCBC ; =0x00000F05 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + bl UpdateMinimap + bl UpdateTrapsVisibility + b _0232CCA4 +_0232CC94: + ldr r2, _0232CCC0 ; =0x00000F06 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0232CCA4: + mov r0, r7 +_0232CCA8: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +#ifdef JAPAN +#define DO_MOVE_TRAP_BUSTER_OFFSET -0x2Be +#else +#define DO_MOVE_TRAP_BUSTER_OFFSET 0 +#endif +_0232CCB0: .word 0x00000F07 + DO_MOVE_TRAP_BUSTER_OFFSET +_0232CCB4: .word DUNGEON_PTR +_0232CCB8: .word ov29_02352B38 +_0232CCBC: .word 0x00000F05 + DO_MOVE_TRAP_BUSTER_OFFSET +_0232CCC0: .word 0x00000F06 + DO_MOVE_TRAP_BUSTER_OFFSET + arm_func_end DoMoveTrapBuster + + arm_func_start DoMoveWildCall +DoMoveWildCall: ; 0x0232CCC4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + ldr r0, [sl, #0xb4] + mov sb, r1 + ldrb r0, [r0, #6] + mov r6, #0 + mov r4, #0 + cmp r0, #0 + ldrne r0, _0232CD88 ; =DUNGEON_PTR + movne r5, #0x10 + ldrne r0, [r0] + moveq r5, #4 +#ifdef JAPAN + addne r0, r0, #0x294 +#else + addne r0, r0, #0x338 +#endif + ldreq r0, _0232CD88 ; =DUNGEON_PTR + mov fp, #1 + ldreq r0, [r0] +#ifdef JAPAN + addeq r0, r0, #0x284 +#else + addeq r0, r0, #0x328 +#endif + add r7, r0, #0x12800 + b _0232CD60 +_0232CD10: + ldr r8, [r7, r4, lsl #2] + mov r0, r8 + bl EntityIsValidMoveEffects__0232C500 + cmp r0, #0 + cmpne sl, r8 + beq _0232CD5C + mov r0, sl + mov r1, r8 + mov r2, fp + mov r3, #0 + bl GetTreatmentBetweenMonsters + cmp r0, #0 + bne _0232CD5C + mov r0, sl + mov r1, r8 + mov r2, #2 + add r3, sl, #4 + bl TryWarp + mov r6, #1 +_0232CD5C: + add r4, r4, #1 +_0232CD60: + cmp r4, r5 + blt _0232CD10 + cmp r6, #0 + bne _0232CD80 + ldr r2, _0232CD8C ; =0x00000F08 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0232CD80: + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232CD88: .word DUNGEON_PTR +#ifdef JAPAN +_0232CD8C: .word 0x00000C4A +#else +_0232CD8C: .word 0x00000F08 +#endif + arm_func_end DoMoveWildCall + + arm_func_start DoMoveInvisify +DoMoveInvisify: ; 0x0232CD90 + stmdb sp!, {r3, lr} + mov r1, r0 + bl TryInflictInvisibleStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveInvisify + + arm_func_start DoMoveOneShot +DoMoveOneShot: ; 0x0232CDA4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r5, #0 + strb r5, [sp, #0x1c] + mov r7, r2 + mov r4, r0 + mov r0, r7 + mov r8, r1 + mov r5, r3 + bl GetMoveType + mov r6, r0 + ldrh r0, [r7, #4] + bl GetMoveCategory + mov r1, r5 + mov r5, r0 + mov r0, r7 + bl GetDamageSourceWrapper + add r3, sp, #0x1c + stmia sp, {r3, r6} + str r5, [sp, #8] + str r0, [sp, #0xc] + mov r2, #0 + str r2, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, _0232CE3C ; =0x0000270F + mov r1, r8 + mov r0, r4 + 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 +_0232CE3C: .word 0x0000270F + arm_func_end DoMoveOneShot + + arm_func_start DoMoveHpGauge +DoMoveHpGauge: ; 0x0232CE40 + stmdb sp!, {r3, lr} + bl TryActivateIdentifyCondition + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveHpGauge + + arm_func_start DoMoveVacuumCut +DoMoveVacuumCut: ; 0x0232CE50 + stmdb sp!, {r3, lr} + ldr ip, _0232CE78 ; =ov10_022C456C + str r3, [sp] + ldrsh r3, [ip] + bl ov29_02332F18 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + .align 2, 0 +_0232CE78: .word ov10_022C456C + arm_func_end DoMoveVacuumCut + + arm_func_start DoMoveReviver +DoMoveReviver: ; 0x0232CE7C + stmdb sp!, {r3, lr} + ldr r2, _0232CE90 ; =0x00000F09 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +#ifdef JAPAN +_0232CE90: .word 0x00000C4B +#else +_0232CE90: .word 0x00000F09 +#endif + arm_func_end DoMoveReviver + + arm_func_start DoMoveShocker +DoMoveShocker: ; 0x0232CE94 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryInflictCoweringStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveShocker + + arm_func_start DoMoveEcho +DoMoveEcho: ; 0x0232CEAC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x20 + mov r5, #0 + strb r5, [sp, #0x1c] + mov r4, r1 + ldr r1, [r4, #0xb4] + mov r5, r0 + ldrsh r0, [r1, #4] + mov sb, r2 + mov r6, r3 + bl GetSize + mov r8, r0 + mov r0, sb + bl GetMoveType + mov r7, r0 + ldrh r0, [sb, #4] + bl GetMoveCategory + mov r1, r6 + mov r6, r0 + mov r0, sb + bl GetDamageSourceWrapper + add r3, sp, #0x1c + stmia sp, {r3, r7} + str r6, [sp, #8] + mov r1, r4 + str r0, [sp, #0xc] + mov r4, #0 + str r4, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + mov r2, r8 + mov r0, r5 + str r4, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, r4 + 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 DoMoveEcho + + arm_func_start DoMoveFamish +DoMoveFamish: ; 0x0232CF54 + stmdb sp!, {r3, lr} + ldr r2, _0232CF70 ; =ov10_022C45BC + mov r3, #0 + ldrsh r2, [r2] + bl TryDecreaseBelly + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232CF70: .word ov10_022C45BC + arm_func_end DoMoveFamish + + arm_func_start DoMoveOneRoom +DoMoveOneRoom: ; 0x0232CF74 + stmdb sp!, {r3, lr} + bl MakeFloorOneRoom + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveOneRoom + + arm_func_start DoMoveFillIn +DoMoveFillIn: ; 0x0232CF84 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r6, r1 + mov r7, r0 + ldr r5, [r6, #0xb4] + mov r4, #0 + bl IsCurrentFixedRoomBossFight + cmp r0, #0 + beq _0232CFB8 + ldr r1, _0232D0E0 ; =0x00000F0B + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0232CFB8: + ldrb r1, [r5, #0x4c] + ldr r0, _0232D0E4 ; =DIRECTIONS_XY + ldrsh r3, [r6, #4] + mov r1, r1, lsl #2 + ldrsh r2, [r0, r1] + ldr r1, _0232D0E8 ; =DIRECTIONS_XY + 2 + add r0, sp, #0 + add r2, r3, r2 + strh r2, [sp] + ldrb r2, [r5, #0x4c] + ldrsh r3, [r6, #6] + mov r2, r2, lsl #2 + ldrsh r1, [r1, r2] + add r1, r3, r1 + strh r1, [sp, #2] + bl ov29_022E6770 + ldrsh r0, [sp] + ldrsh r1, [sp, #2] + bl GetTileSafe + ldrh r1, [r0] + and r1, r1, #3 + cmp r1, #2 + bne _0232D06C + ldrh r1, [r0] + mvn r4, #0 + mov r5, r4 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] +_0232D034: + mov r8, r5 +_0232D038: + ldrsh r0, [sp] + ldrsh r1, [sp, #2] + add r0, r0, r8 + add r1, r1, r4 + bl ov29_02336694 + add r8, r8, #1 + cmp r8, #1 + ble _0232D038 + add r4, r4, #1 + cmp r4, #1 + ble _0232D034 + mov r4, #1 + bl DetermineAllMonsterShadow +_0232D06C: + mov r8, #0 + mov r5, r8 +_0232D074: + mov sb, r5 +_0232D078: + mov r0, sb + mov r1, r8 + bl DetermineTileWalkableNeighbors + add sb, sb, #1 + cmp sb, #0x38 + blt _0232D078 + add r8, r8, #1 + cmp r8, #0x20 + blt _0232D074 + cmp r4, #0 + beq _0232D0C0 + add r0, sp, #0 + bl ov29_022E6784 + ldr r2, _0232D0EC ; =0x00000F0A + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232D0D0 +_0232D0C0: + ldr r2, _0232D0E0 ; =0x00000F0B + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_0232D0D0: + bl UpdateMinimap + bl UpdateTrapsVisibility + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +#ifdef JAPAN +_0232D0E0: .word 0x00000C4D +_0232D0E4: .word DIRECTIONS_XY +_0232D0E8: .word DIRECTIONS_XY + 2 +_0232D0EC: .word 0x00000C4C +#else +_0232D0E0: .word 0x00000F0B +_0232D0E4: .word DIRECTIONS_XY +_0232D0E8: .word DIRECTIONS_XY + 2 +_0232D0EC: .word 0x00000F0A +#endif + arm_func_end DoMoveFillIn + + arm_func_start DoMoveTrapper +DoMoveTrapper: ; 0x0232D0F0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl AreLateGameTrapsEnabledWrapper + cmp r0, #0 + bne _0232D11C +#ifdef JAPAN + mov r0, r5 + mov r1, #0xbc0 +#else + ldr r1, _0232D144 ; =0x00000E7E + mov r0, r5 +#endif + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0232D11C: + ldr r0, [r4, #0xb4] + mov r1, #0x19 + ldrb r0, [r0, #6] + cmp r0, #0 + movne r2, #2 + moveq r2, #1 + add r0, r4, #4 + bl PrepareTrapperTrap + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +#ifndef JAPAN +_0232D144: .word 0x00000E7E +#endif + arm_func_end DoMoveTrapper + + arm_func_start DoMoveItemize +DoMoveItemize: ; 0x0232D148 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r4, r1 + ldrh r2, [r4, #4] + mov r5, r0 + strh r2, [sp, #6] + ldrh r2, [r4, #6] + strh r2, [sp, #8] + ldr r2, [r4, #0xb4] + ldrb r2, [r2, #0xbc] + cmp r2, #6 + bls _0232D188 + ldr r2, _0232D1D4 ; =0x00000F0C + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + b _0232D1CC +_0232D188: + mov r0, #0 + strb r0, [r4, #0x20] + bl GetItemIdToSpawn + mov r1, r0 + add r0, sp, #0 + mov r2, #0 + bl GenerateStandardItem + add r1, sp, #6 + add r2, sp, #0 + mov r0, r5 + mov r3, #0 + bl SpawnDroppedItemWrapper + ldr r1, _0232D1D8 ; =0x00000257 + mov r0, r4 + mov r2, r5 + bl HandleFaint + mov r0, #1 +_0232D1CC: + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +#ifdef JAPAN +_0232D1D4: .word 0x00000C4E +#else +_0232D1D4: .word 0x00000F0C +#endif +_0232D1D8: .word 0x00000257 + arm_func_end DoMoveItemize + + arm_func_start DoMoveHurl +DoMoveHurl: ; 0x0232D1DC + stmdb sp!, {r3, lr} + bl TryHurl + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveHurl + + arm_func_start DoMoveMobile +DoMoveMobile: ; 0x0232D1EC + stmdb sp!, {r3, lr} + bl TryInflictMobileStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveMobile + + arm_func_start DoMoveSeeStairs +DoMoveSeeStairs: ; 0x0232D1FC + stmdb sp!, {r3, lr} + bl RevealStairs + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveSeeStairs + + arm_func_start DoMoveLongToss +DoMoveLongToss: ; 0x0232D20C + stmdb sp!, {r3, lr} + bl TryInflictLongTossStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveLongToss + + arm_func_start DoMovePierce +DoMovePierce: ; 0x0232D21C + stmdb sp!, {r3, lr} + bl TryInflictPierceStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMovePierce + + arm_func_start DoMoveHammerArm +DoMoveHammerArm: ; 0x0232D22C + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r4, r0 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + beq _0232D268 + mov r2, #1 + mov r0, r4 + mov r1, r4 + mov r3, r2 + bl LowerSpeed + mov r0, #1 +_0232D268: + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end DoMoveHammerArm + + arm_func_start DoMoveAquaRing +DoMoveAquaRing: ; 0x0232D270 + stmdb sp!, {r3, lr} + bl TryInflictAquaRingStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveAquaRing + + arm_func_start DoMoveGastroAcid +DoMoveGastroAcid: ; 0x0232D280 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryInflictGastroAcidStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveGastroAcid + + arm_func_start DoMoveHealingWish +DoMoveHealingWish: ; 0x0232D298 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + cmp r5, r4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, _0232D2E4 ; =HEALING_WISH_HP_RESTORATION + mov ip, #1 + ldrsh r2, [r2] + mov r3, #0 + str ip, [sp] + bl TryIncreaseHp + mov r2, #1 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl EndNegativeStatusConditionWrapper + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D2E4: .word HEALING_WISH_HP_RESTORATION + arm_func_end DoMoveHealingWish + + arm_func_start DoMoveCloseCombat +DoMoveCloseCombat: ; 0x0232D2E8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + str r3, [sp] + mov r3, #0x100 + mov r4, r0 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + beq _0232D358 + ldr r0, _0232D360 ; =ATK_STAT_IDX + mov r3, #1 + ldr r2, [r0] + mov r0, r4 + mov r1, r4 + str r3, [sp] + mov ip, #0 + str ip, [sp, #4] + bl LowerDefensiveStat + ldr r0, _0232D364 ; =SPATK_STAT_IDX + mov r3, #1 + ldr r2, [r0] + mov r0, r4 + mov r1, r4 + str r3, [sp] + mov ip, #0 + str ip, [sp, #4] + bl LowerDefensiveStat + mov r0, #1 +_0232D358: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0232D360: .word ATK_STAT_IDX +_0232D364: .word SPATK_STAT_IDX + arm_func_end DoMoveCloseCombat + + arm_func_start DoMoveLuckyChant +DoMoveLuckyChant: ; 0x0232D368 + stmdb sp!, {r3, lr} + bl TryInflictLuckyChantStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveLuckyChant + + arm_func_start DoMoveGuardSwap +DoMoveGuardSwap: ; 0x0232D378 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + mov r2, #0 + bl SwapDefensiveStages + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl SwapDefensiveMultipliers + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r5 + mov r1, r4 + ldr r2, _0232D3D4 ; =0x00000F2E + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +#ifdef JAPAN +_0232D3D4: .word 0x00002495 +#else +_0232D3D4: .word 0x00000F2E +#endif + arm_func_end DoMoveGuardSwap + + arm_func_start DoMoveHealOrder +DoMoveHealOrder: ; 0x0232D3D8 + stmdb sp!, {r3, lr} + ldr r2, _0232D3FC ; =HEAL_ORDER_HP_RESTORATION + mov ip, #1 + ldrsh r2, [r2] + mov r3, #0 + str ip, [sp] + bl TryIncreaseHp + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232D3FC: .word HEAL_ORDER_HP_RESTORATION + arm_func_end DoMoveHealOrder + + arm_func_start DoMoveHealBlock +DoMoveHealBlock: ; 0x0232D400 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryInflictHealBlockStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveHealBlock + + arm_func_start DoMoveThunderFang +DoMoveThunderFang: ; 0x0232D418 + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, r1 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _0232D4A4 ; =THUNDER_FANG_PARALYZE_CHANCE + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232D46C + mov r2, #0 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl TryInflictParalysisStatus +_0232D46C: + ldr r1, _0232D4A8 ; =THUNDER_FANG_CRINGE_CHANCE + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232D49C + mov r2, #0 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl TryInflictCringeStatus +_0232D49C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D4A4: .word THUNDER_FANG_PARALYZE_CHANCE +_0232D4A8: .word THUNDER_FANG_CRINGE_CHANCE + arm_func_end DoMoveThunderFang + + arm_func_start DoMoveDefog +DoMoveDefog: ; 0x0232D4AC + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + ldr r4, [r5, #0xb4] + bl MistIsActive + cmp r0, #0 + bne _0232D4E0 + ldrb r0, [r4, #0xd5] + add r0, r0, #0xff + and r0, r0, #0xff + cmp r0, #2 + bhi _0232D4FC +_0232D4E0: + ldr r2, _0232D550 ; =0x00000ED2 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + mov r1, r5 + bl EndReflectClassStatus +_0232D4FC: + ldr r1, _0232D554 ; =SPATK_STAT_IDX + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + mov r3, #0 + bl LowerHitChanceStat + mov r0, r6 + bl GetApparentWeather + cmp r0, #6 + bne _0232D548 + ldr r1, _0232D558 ; =WEATHER_MOVE_TURN_COUNT + ldr r0, _0232D55C ; =DUNGEON_PTR + ldrsh r3, [r1] + ldr r1, [r0] + mov r0, #1 +#ifdef JAPAN + add r2, r1, #0xcc00 + mov r1, #0 + strh r3, [r2, #0x96] +#else + add r2, r1, #0xcd00 + mov r1, #0 + strh r3, [r2, #0x3a] +#endif + bl TryActivateWeather +_0232D548: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +#ifdef JAPAN +_0232D550: .word 0x00000C14 +#else +_0232D550: .word 0x00000ED2 +#endif +_0232D554: .word SPATK_STAT_IDX +_0232D558: .word WEATHER_MOVE_TURN_COUNT +_0232D55C: .word DUNGEON_PTR + arm_func_end DoMoveDefog + + arm_func_start DoMoveTrumpCard +DoMoveTrumpCard: ; 0x0232D560 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r6, r2 + ldrb r4, [r6, #6] + mov r8, r0 + mov r0, r6 + mov r7, r1 + mov r5, r3 + bl GetMaxPp + movs r1, r0 + mov r0, #0x64 + mul r0, r4, r0 + moveq r1, #1 + bl _s32_div_f + cmp r0, #0x19 + bgt _0232D5BC + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x140 + str r5, [sp] + bl DealDamage + b _0232D614 +_0232D5BC: + cmp r0, #0x32 + bgt _0232D5E0 + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x100 + str r5, [sp] + bl DealDamage + b _0232D614 +_0232D5E0: + cmp r0, #0x4b + mov r0, r8 + mov r1, r7 + bgt _0232D604 + mov r2, r6 + mov r3, #0xc0 + str r5, [sp] + bl DealDamage + b _0232D614 +_0232D604: + mov r2, r6 + mov r3, #0x80 + str r5, [sp] + bl DealDamage +_0232D614: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end DoMoveTrumpCard + + arm_func_start DoMoveIceFang +DoMoveIceFang: ; 0x0232D620 + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, r1 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _0232D6A8 ; =ICE_FANG_FREEZE_CHANCE + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232D670 + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl TryInflictFrozenStatus +_0232D670: + ldr r1, _0232D6AC ; =ICE_FANG_CRINGE_CHANCE + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232D6A0 + mov r2, #0 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl TryInflictCringeStatus +_0232D6A0: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D6A8: .word ICE_FANG_FREEZE_CHANCE +_0232D6AC: .word ICE_FANG_CRINGE_CHANCE + arm_func_end DoMoveIceFang + + arm_func_start DoMovePsychoShift +DoMovePsychoShift: ; 0x0232D6B0 + stmdb sp!, {r3, lr} + cmp r0, r1 + beq _0232D6C8 + mov r2, #0 + mov r3, r2 + bl TransferNegativeStatusCondition +_0232D6C8: + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMovePsychoShift + + arm_func_start DoMoveEmbargo +DoMoveEmbargo: ; 0x0232D6D0 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryInflictEmbargoStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveEmbargo + + arm_func_start DoMoveBrine +DoMoveBrine: ; 0x0232D6E8 + stmdb sp!, {r3, r4, r5, lr} + ldr r5, [r1, #0xb4] + ldr ip, _0232D734 ; =0x000003E7 + ldrsh r4, [r5, #0x12] + ldrsh lr, [r5, #0x16] + add r4, r4, lr + cmp r4, ip + movgt r4, ip + ldrsh ip, [r5, #0x10] + cmp r4, ip, lsl #1 + movge r4, #2 + movlt r4, #1 + str r3, [sp] + mov r3, r4, lsl #8 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D734: .word 0x000003E7 + arm_func_end DoMoveBrine + + arm_func_start DoMoveNaturalGift +DoMoveNaturalGift: ; 0x0232D738 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r7, r0 + ldr r0, [r7, #0xb4] + mov r6, r1 + ldrsh r0, [r0, #0x66] + mov r5, r2 + mov r4, r3 + cmp r0, #0 + beq _0232D7C8 + add r2, sp, #0xc + mov r3, r5 + mov r1, #4 +_0232D76C: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _0232D76C + mov r0, r7 + bl GetEntityNaturalGiftInfo + cmp r0, #0 + beq _0232D7C8 + str r4, [sp] + ldrb r3, [r0, #2] + add r2, sp, #0xc + mov r1, r6 + str r3, [sp, #4] + ldrsh r4, [r0, #4] + mov r0, r7 + mov r3, #0x100 + str r4, [sp, #8] + bl DealDamageWithTypeAndPowerBoost + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + b _0232D7F0 +_0232D7C8: + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, #0x100 + str r4, [sp] + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_0232D7F0: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end DoMoveNaturalGift + + arm_func_start DoMoveGyroBall +DoMoveGyroBall: ; 0x0232D7F8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + ldr ip, [r8, #0xb4] + mov r7, r1 +#ifdef JAPAN + ldr ip, [ip, #0x10c] +#else + ldr ip, [ip, #0x110] +#endif + mov r6, r2 + cmp ip, #0 + mov r5, r3 + movne r4, #1 + bne _0232D830 + ldr r2, _0232D85C ; =0x00000F0D + mov r4, #2 + bl LogMessageByIdWithPopupCheckUserTarget +_0232D830: + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, r4, lsl #8 + str r5, [sp] + bl DealDamage + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +#ifdef JAPAN +_0232D85C: .word 0x00000C4F +#else +_0232D85C: .word 0x00000F0D +#endif + arm_func_end DoMoveGyroBall + + arm_func_start DoMoveShadowForce +DoMoveShadowForce: ; 0x0232D860 + 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 _0232D8CC + ldr r1, _0232D8F4 ; =SHADOW_FORCE_DAMAGE_MULTIPLIER + mov r0, r7 + ldr r3, [r1] + mov r1, r6 + mov r2, r5 + str r4, [sp] + bl DealDamage + cmp r0, #0 + movne r4, #1 + moveq r4, #0 + mov r0, r7 + bl EndTwoTurnMove + tst r4, #0xff + beq _0232D8EC + mov r0, r7 + mov r1, r6 + bl EndProtectStatus + b _0232D8EC +_0232D8CC: + ldr r0, _0232D8F8 ; =0x00000CD7 + bl StringFromId + str r0, [sp] + mov r0, r7 + mov r1, r6 + mov r3, r5 + mov r2, #0xd + bl BeginChargedMove +_0232D8EC: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232D8F4: .word SHADOW_FORCE_DAMAGE_MULTIPLIER +#ifdef JAPAN +_0232D8F8: .word 0x00000A17 +#else +_0232D8F8: .word 0x00000CD7 +#endif + arm_func_end DoMoveShadowForce + + arm_func_start DoMoveGravity +DoMoveGravity: ; 0x0232D8FC + stmdb sp!, {r3, lr} + bl TryActivateGravity + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveGravity + + arm_func_start DoMoveStealthRock +DoMoveStealthRock: ; 0x0232D90C +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #0xb4] + mov r5, r1 + ldrb r0, [r0, #6] + mov r4, #0 + mov r1, #0x14 + cmp r0, #0 + movne r2, #2 + moveq r2, #1 + add r0, r6, #4 +#else + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7, #0xb4] + mov r6, r1 + ldrb r0, [r0, #6] + mov r4, #0 + cmp r0, #0 + movne r5, #2 + moveq r5, #1 + bl AreLateGameTrapsEnabledWrapper + cmp r0, #0 + beq _0232D95C + mov r2, r5 + add r0, r7, #4 + mov r1, #0x14 +#endif + mov r3, #0 + bl TrySpawnTrap + cmp r0, #0 + movne r4, #1 + bne _0232D96C +_0232D95C: + ldr r2, _0232D978 ; =0x00000EEF +#ifdef JAPAN + mov r0, r6 + mov r1, r5 +#else + mov r0, r7 + mov r1, r6 +#endif + bl LogMessageByIdWithPopupCheckUserTarget +_0232D96C: + bl UpdateTrapsVisibility + mov r0, r4 +#ifdef JAPAN + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232D978: .word 0x00000C31 +#else + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232D978: .word 0x00000EEF +#endif + arm_func_end DoMoveStealthRock + + arm_func_start DoMoveChargeBeam +DoMoveChargeBeam: ; 0x0232D97C + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, r1 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _0232D9DC ; =CHARGE_BEAM_BOOST_SPECIAL_ATTACK_CHANCE + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232D9D4 + ldr r1, _0232D9E0 ; =SPATK_STAT_IDX + mov r0, r5 + ldr r2, [r1] + mov r1, r5 + mov r3, #1 + bl BoostOffensiveStat +_0232D9D4: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D9DC: .word CHARGE_BEAM_BOOST_SPECIAL_ATTACK_CHANCE +_0232D9E0: .word SPATK_STAT_IDX + arm_func_end DoMoveChargeBeam + + arm_func_start DoMoveDamageEatItem +DoMoveDamageEatItem: ; 0x0232D9E4 + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, r1 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +#ifdef EUROPE + mov r0, r5 + bl ov29_022E34A8_EU +#else +#ifndef JAPAN + ldr r0, _0232DACC ; =DUNGEON_PTR + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _0232DAC4 +#endif + cmp r5, #0 + moveq r0, #0 + beq _0232DA3C + ldr r0, [r5] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_0232DA3C: +#endif + cmp r0, #0 + beq _0232DAC4 + cmp r5, r4 + beq _0232DA8C + cmp r5, #0 + moveq r0, #0 + beq _0232DA6C + ldr r0, [r5] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff +_0232DA6C: + cmp r0, #0 + beq _0232DA8C + mov r0, r5 + mov r1, #0x53 + bl AbilityIsActiveVeneer + cmp r0, #0 + movne r0, #0 + bne _0232DA98 +_0232DA8C: + mov r0, r4 + mov r1, #0x2c + bl AbilityIsActiveVeneer +_0232DA98: + cmp r0, #0 + bne _0232DAC4 + ldr r1, [r5, #0xb4] + ldrb r0, [r1, #0xd8] + cmp r0, #6 + ldrneb r0, [r1, #0xf3] + cmpne r0, #1 + beq _0232DAC4 + mov r0, r5 + mov r1, r4 + bl TryEatItem +_0232DAC4: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +#if defined(NORTH_AMERICA) +_0232DACC: .word DUNGEON_PTR +#endif + arm_func_end DoMoveDamageEatItem + + arm_func_start DoMoveAcupressure +DoMoveAcupressure: ; 0x0232DAD0 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r4, r1 + ldr ip, [r4, #0xb4] + ldr r1, _0232DC44 ; =ov29_02352B3C + mov r5, r0 + add lr, sp, #0 + ldmia r1, {r0, r1, r2, r3} + stmia lr, {r0, r1, r2, r3} + ldrsh r1, [ip, #0x24] + mov r0, #0 + cmp r1, #0x14 + strlt r0, [sp] + ldrsh r1, [ip, #0x26] + addlt r0, r0, #1 + cmp r1, #0x14 + addlt r1, sp, #0 + movlt r2, #1 + strlt r2, [r1, r0, lsl #2] + ldrsh r1, [ip, #0x28] + addlt r0, r0, #1 + cmp r1, #0x14 + addlt r1, sp, #0 + movlt r2, #2 + strlt r2, [r1, r0, lsl #2] + ldrsh r1, [ip, #0x2a] + addlt r0, r0, #1 + cmp r1, #0x14 + addlt r1, sp, #0 + movlt r2, #3 + strlt r2, [r1, r0, lsl #2] + addlt r0, r0, #1 + cmp r0, #0 + bne _0232DB7C + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags +#ifdef JAPAN + mov r0, r5 + mov r1, r4 + mov r2, #0xc50 +#else + ldr r2, _0232DC48 ; =0x00000F0E + mov r0, r5 + mov r1, r4 +#endif + bl LogMessageByIdWithPopupCheckUserTarget + b _0232DC38 +_0232DB7C: + bl DungeonRandInt + add r1, sp, #0 + ldr r0, [r1, r0, lsl #2] + cmp r0, #0 + bne _0232DBAC + ldr r1, _0232DC4C ; =ATK_STAT_IDX + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #2 + bl BoostOffensiveStat + b _0232DC38 +_0232DBAC: + cmp r0, #2 + bne _0232DBD0 + ldr r1, _0232DC4C ; =ATK_STAT_IDX + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #2 + bl BoostDefensiveStat + b _0232DC38 +_0232DBD0: + cmp r0, #1 + bne _0232DBF4 + ldr r1, _0232DC50 ; =SPATK_STAT_IDX + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #2 + bl BoostOffensiveStat + b _0232DC38 +_0232DBF4: + cmp r0, #3 + bne _0232DC18 + ldr r1, _0232DC50 ; =SPATK_STAT_IDX + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #2 + bl BoostDefensiveStat + b _0232DC38 +_0232DC18: + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags +#ifdef JAPAN + mov r0, r5 + mov r1, r4 + mov r2, #0xc50 +#else + ldr r2, _0232DC48 ; =0x00000F0E + mov r0, r5 + mov r1, r4 +#endif + bl LogMessageByIdWithPopupCheckUserTarget +_0232DC38: + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232DC44: .word ov29_02352B3C +#ifndef JAPAN +_0232DC48: .word 0x00000F0E +#endif +_0232DC4C: .word ATK_STAT_IDX +_0232DC50: .word SPATK_STAT_IDX + arm_func_end DoMoveAcupressure + + arm_func_start DoMoveMagnetRise +DoMoveMagnetRise: ; 0x0232DC54 + stmdb sp!, {r3, lr} + bl TryInflictMagnetRiseStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveMagnetRise + + arm_func_start DoMoveToxicSpikes +DoMoveToxicSpikes: ; 0x0232DC64 +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #0xb4] + mov r5, r1 + ldrb r0, [r0, #6] + mov r4, #0 + mov r1, #0x15 + cmp r0, #0 + movne r2, #2 + moveq r2, #1 + add r0, r6, #4 +#else + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7, #0xb4] + mov r6, r1 + ldrb r0, [r0, #6] + mov r4, #0 + cmp r0, #0 + movne r5, #2 + moveq r5, #1 + bl AreLateGameTrapsEnabledWrapper + cmp r0, #0 + beq _0232DCB4 + mov r2, r5 + add r0, r7, #4 + mov r1, #0x15 +#endif + mov r3, #1 + bl TrySpawnTrap + cmp r0, #0 + movne r4, #1 + bne _0232DCC4 +_0232DCB4: + ldr r2, _0232DCD0 ; =0x00000EEF +#ifdef JAPAN + mov r0, r6 + mov r1, r5 +#else + mov r0, r7 + mov r1, r6 +#endif + bl LogMessageByIdWithPopupCheckUserTarget +_0232DCC4: + bl UpdateTrapsVisibility + mov r0, r4 +#ifdef JAPAN + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232DCD0: .word 0x00000C31 +#else + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232DCD0: .word 0x00000EEF +#endif + arm_func_end DoMoveToxicSpikes + + arm_func_start DoMoveLastResort +DoMoveLastResort: ; 0x0232DCD4 + 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 CountMovesOutOfPp + cmp r0, #0 + ble _0232DD10 + ldrb r1, [r6, #6] + cmp r1, #0 + subeq r0, r0, #1 + moveq r0, r0, lsl #0x10 + moveq r0, r0, asr #0x10 +_0232DD10: + cmp r0, #0 + ble _0232DD44 + ldr r1, _0232DD70 ; =LAST_RESORT_DAMAGE_MULT_TABLE + sub r0, r0, #1 + ldr r3, [r1, r0, lsl #2] + mov r0, r8 + mov r1, r7 + mov r2, r6 + str r5, [sp] + bl DealDamage + cmp r0, #0 +#ifdef JAPAN + moveq r4, #1 +#else + movgt r4, #1 +#endif + b _0232DD64 +_0232DD44: + mov r1, r7 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232DD74 ; =0x00000EBC + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_0232DD64: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0232DD70: .word LAST_RESORT_DAMAGE_MULT_TABLE +#ifdef JAPAN +_0232DD74: .word 0x00000BFE +#else +_0232DD74: .word 0x00000EBC +#endif + arm_func_end DoMoveLastResort + + arm_func_start DoMoveTrickRoom +DoMoveTrickRoom: ; 0x0232DD78 + stmdb sp!, {r3, lr} + bl BoostOrLowerSpeed + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveTrickRoom + + arm_func_start DoMoveDamage__0232DD88 +DoMoveDamage__0232DD88: ; 0x0232DD88 + 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__0232DD88 + + arm_func_start DoMoveWorrySeed +DoMoveWorrySeed: ; 0x0232DDAC + stmdb sp!, {r4, r5, r6, lr} +#ifndef JAPAN + mov r4, #1 + mov r3, r4 +#endif + mov r2, #0x2a + mov r6, r0 + mov r5, r1 +#ifdef JAPAN + mov r4, #1 +#endif + bl DefenderAbilityIsActiveMoveEffects__0232DE20 + cmp r0, #0 + beq _0232DE00 + mov r4, #0 + mov r0, r4 + mov r1, r5 + mov r2, r4 + bl SubstitutePlaceholderStringTags + mov r0, #1 + mov r1, #0x2a + bl SetPreprocessorArgsIdVal + ldr r2, _0232DE1C ; =0x00000F13 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0232DE00: + cmp r4, #0 + beq _0232DE14 + mov r0, r6 + mov r1, r5 + bl TryInflictSleeplessStatus +_0232DE14: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +#ifdef JAPAN +_0232DE1C: .word 0x00000C55 +#else +_0232DE1C: .word 0x00000F13 +#endif + arm_func_end DoMoveWorrySeed + + arm_func_start DefenderAbilityIsActiveMoveEffects__0232DE20 +DefenderAbilityIsActiveMoveEffects__0232DE20: ; 0x0232DE20 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r4, r2 + cmp r0, r5 + beq _0232DE74 + cmp r0, #0 + moveq r1, #0 + beq _0232DE54 + ldr r1, [r0] + cmp r1, #1 + moveq r1, #1 + movne r1, #0 + and r1, r1, #0xff +_0232DE54: + cmp r1, #0 +#ifndef JAPAN + cmpne r3, #0 +#endif + beq _0232DE74 + mov r1, #0x53 + bl AbilityIsActiveVeneer + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_0232DE74: + mov r0, r5 + mov r1, r4 + bl AbilityIsActiveVeneer + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DefenderAbilityIsActiveMoveEffects__0232DE20 + + arm_func_start DoMoveDamageHpDependent +DoMoveDamageHpDependent: ; 0x0232DE84 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr ip, [r1, #0xb4] + ldr r6, _0232DF30 ; =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 _0232DF08 + ldr r4, _0232DF30 ; =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 _0232DF08 + ldr r4, _0232DF30 ; =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 +_0232DF08: + ldr r4, _0232DF34 ; =WRING_OUT_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 +_0232DF30: .word 0x000003E7 +_0232DF34: .word WRING_OUT_DAMAGE_MULT_TABLE + arm_func_end DoMoveDamageHpDependent + + arm_func_start DoMoveHeartSwap +DoMoveHeartSwap: ; 0x0232DF38 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + mov r2, #0 + bl SwapOffensiveStages + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl SwapOffensiveMultipliers + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl SwapDefensiveStages + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl SwapDefensiveMultipliers + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl SwapHitChanceStages + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, #1 + mov r1, r4 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r5 + mov r1, r4 + ldr r2, _0232DFC4 ; =0x00000F2F + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +#ifdef JAPAN +_0232DFC4: .word 0x00002496 +#else +_0232DFC4: .word 0x00000F2F +#endif + arm_func_end DoMoveHeartSwap + + arm_func_start DoMoveRoost +DoMoveRoost: ; 0x0232DFC8 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r5, r0 + mov r6, r1 + ldr r4, [r5, #0xb4] + bl GetApparentWeather + mov r3, #1 + str r3, [sp] + ldr r1, _0232E07C ; =ROOST_HP_RESTORATION_TABLE + mov r0, r0, lsl #1 + ldrsh r2, [r1, r0] + mov r0, r5 + mov r1, r6 + mov r3, #0 + bl TryIncreaseHp + ldrb r0, [r4, #0x5e] + mov ip, #0 + mov r1, ip + strb r0, [r4, #0xaa] + ldrb r0, [r4, #0x5f] + strb r0, [r4, #0xab] + mov r0, #1 +_0232E020: + add r3, r4, ip + ldrb r2, [r3, #0x5e] + add ip, ip, #1 + cmp r2, #0xa + streqb r1, [r3, #0x5e] + streqb r0, [r4, #0xa9] + cmp ip, #2 + blt _0232E020 + ldrb r0, [r4, #0xa9] + cmp r0, #0 + mov r0, #0 + streqb r0, [r4, #0xaa] + streqb r0, [r4, #0xab] + beq _0232E070 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0232E080 ; =0x00000CC9 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser +_0232E070: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232E07C: .word ROOST_HP_RESTORATION_TABLE +#ifdef JAPAN +_0232E080: .word 0x00000A09 +#else +_0232E080: .word 0x00000CC9 +#endif + arm_func_end DoMoveRoost + + arm_func_start DoMovePowerSwap +DoMovePowerSwap: ; 0x0232E084 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + mov r2, #0 + bl SwapOffensiveStages + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl SwapOffensiveMultipliers + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r5 + mov r1, r4 + ldr r2, _0232E0E0 ; =0x00000F2B + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +#ifdef JAPAN +_0232E0E0: .word 0x00002492 +#else +_0232E0E0: .word 0x00000F2B +#endif + arm_func_end DoMovePowerSwap + + arm_func_start DoMovePowerTrick +DoMovePowerTrick: ; 0x0232E0E4 + stmdb sp!, {r3, lr} + mov r2, #1 + bl SwapUserAtkAndDefModifiers + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMovePowerTrick + + arm_func_start DoMoveFeint +DoMoveFeint: ; 0x0232E0F8 + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, r1 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl EndProtectStatus + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DoMoveFeint + + arm_func_start DoMoveFlareBlitz +DoMoveFlareBlitz: ; 0x0232E130 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x18 + mov r5, r0 + mov r7, r1 + mov r4, r2 + mov r6, r3 + bl EndFrozenStatus + mov r0, r5 + mov r1, r7 + mov r2, r4 + mov r3, #0x100 + str r6, [sp] + bl DealDamage + cmp r0, #0 + moveq r0, #0 + beq _0232E240 + mov r0, r5 + bl EntityIsValidMoveEffects__0232E250 + cmp r0, #0 + beq _0232E1B4 + ldr r1, _0232E248 ; =FLARE_BLITZ_BURN_CHANCE + mov r0, r5 + ldrsh r2, [r1] + mov r1, r7 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232E1B4 + mov r2, #0 + mov r0, r5 + mov r1, r7 + mov r3, r2 + str r2, [sp] + bl TryInflictBurnStatus +_0232E1B4: + mov r0, r5 + bl EntityIsValidMoveEffects__0232E250 + cmp r0, #0 + beq _0232E23C + mov r0, r5 + mov r1, #7 + bl AbilityIsActiveVeneer + cmp r0, #0 + bne _0232E23C + ldr r1, [r5, #0xb4] + ldr r0, _0232E24C ; =0x000003E7 + ldrsh r2, [r1, #0x12] + ldrsh r1, [r1, #0x16] + ldrh r3, [r4, #4] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + mov r0, r1, asr #2 + add r0, r1, r0, lsr #29 + movs r1, r0, asr #3 + mov r2, #0 + str r3, [sp] + mov r0, #0x23c + str r2, [sp, #4] + str r0, [sp, #8] + mov r0, #0x14 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + moveq r1, #1 + mov r0, r5 + mov r3, r2 + str r2, [sp, #0x14] + bl CalcRecoilDamageFixed +_0232E23C: + mov r0, #1 +_0232E240: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232E248: .word FLARE_BLITZ_BURN_CHANCE +_0232E24C: .word 0x000003E7 + arm_func_end DoMoveFlareBlitz diff --git a/include/overlay_29_0232B6A4.h b/include/overlay_29_0232B6A4.h index a7346dd6..cfe2fdba 100644 --- a/include/overlay_29_0232B6A4.h +++ b/include/overlay_29_0232B6A4.h @@ -6,5 +6,6 @@ #include "move.h" bool8 DoMovePerishSong(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); +bool8 DoMoveWrap(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); #endif diff --git a/include/overlay_29_0232B7C0.h b/include/overlay_29_0232B7C0.h new file mode 100644 index 00000000..0f898b31 --- /dev/null +++ b/include/overlay_29_0232B7C0.h @@ -0,0 +1,11 @@ +#ifndef PMDSKY_OVERLAY_29_0232B7C0_H +#define PMDSKY_OVERLAY_29_0232B7C0_H + +#include "dungeon_mode.h" +#include "item.h" +#include "move.h" + +bool8 DoMoveMagicCoat(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); +bool8 DoMoveProtect(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); + +#endif diff --git a/include/overlay_29_0232B8A0.h b/include/overlay_29_0232B8A0.h new file mode 100644 index 00000000..c1290f3d --- /dev/null +++ b/include/overlay_29_0232B8A0.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_OVERLAY_29_0232B8A0_H +#define PMDSKY_OVERLAY_29_0232B8A0_H + +#include "dungeon_mode.h" +#include "item.h" +#include "move.h" + +bool8 DoMoveDestinyBond(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); + +#endif diff --git a/include/overlay_29_0232B8D4.h b/include/overlay_29_0232B8D4.h new file mode 100644 index 00000000..8acf2934 --- /dev/null +++ b/include/overlay_29_0232B8D4.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_OVERLAY_29_0232B8D4_H +#define PMDSKY_OVERLAY_29_0232B8D4_H + +#include "dungeon_mode.h" +#include "item.h" +#include "move.h" + +bool8 DoMoveMirrorCoat(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); + +#endif diff --git a/include/overlay_29_0232BE34.h b/include/overlay_29_0232BE34.h new file mode 100644 index 00000000..6df71990 --- /dev/null +++ b/include/overlay_29_0232BE34.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_OVERLAY_29_0232BE34_H +#define PMDSKY_OVERLAY_29_0232BE34_H + +#include "dungeon_mode.h" +#include "item.h" +#include "move.h" + +bool8 DoMoveSnatch(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); + +#endif diff --git a/include/overlay_29_0232BF78.h b/include/overlay_29_0232BF78.h new file mode 100644 index 00000000..1cfecd30 --- /dev/null +++ b/include/overlay_29_0232BF78.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_OVERLAY_29_0232BF78_H +#define PMDSKY_OVERLAY_29_0232BF78_H + +#include "dungeon_mode.h" +#include "item.h" +#include "move.h" + +bool8 DoMoveReflect(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); + +#endif diff --git a/include/overlay_29_0232C300.h b/include/overlay_29_0232C300.h new file mode 100644 index 00000000..df056d05 --- /dev/null +++ b/include/overlay_29_0232C300.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_OVERLAY_29_0232C300_H +#define PMDSKY_OVERLAY_29_0232C300_H + +#include "dungeon_mode.h" +#include "item.h" +#include "move.h" + +bool8 DoMoveSeeTrap(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); + +#endif diff --git a/include/overlay_29_0232C82C.h b/include/overlay_29_0232C82C.h new file mode 100644 index 00000000..05e941a9 --- /dev/null +++ b/include/overlay_29_0232C82C.h @@ -0,0 +1,11 @@ +#ifndef PMDSKY_OVERLAY_29_0232C82C_H +#define PMDSKY_OVERLAY_29_0232C82C_H + +#include "dungeon_mode.h" +#include "item.h" +#include "move.h" + +bool8 DoMoveNoMove(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); +bool8 DoMoveScan(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); + +#endif diff --git a/main.lsf b/main.lsf index bfa9923b..c97f267b 100644 --- a/main.lsf +++ b/main.lsf @@ -1050,9 +1050,23 @@ Overlay OVY_29 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 asm/overlay_29_0232B6C8.o + Object src/overlay_29_0232B7C0.o + Object asm/overlay_29_0232B7E0.o + Object src/overlay_29_0232B8A0.o + Object asm/overlay_29_0232B8B0.o + Object src/overlay_29_0232B8D4.o + Object asm/overlay_29_0232B8E4.o + Object src/overlay_29_0232BE34.o + Object asm/overlay_29_0232BE44.o + Object src/overlay_29_0232BF78.o + Object asm/overlay_29_0232BF88.o + Object src/overlay_29_0232C300.o + Object asm/overlay_29_0232C310.o Object src/overlay_29_0232C500.o Object asm/overlay_29_0232C524.o + Object src/overlay_29_0232C82C.o + Object asm/overlay_29_0232C83C.o Object src/overlay_29_0232E250.o Object asm/overlay_29_0232E2B8.o Object src/overlay_29_0232E840.o diff --git a/src/overlay_29_0232B6A4.c b/src/overlay_29_0232B6A4.c index 545ab6a9..0735532f 100644 --- a/src/overlay_29_0232B6A4.c +++ b/src/overlay_29_0232B6A4.c @@ -1,5 +1,7 @@ #include "overlay_29_0232B6A4.h" +extern void TryInflictWrappedStatus(struct entity *user, struct entity *target); + 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) @@ -8,3 +10,10 @@ bool8 DoMovePerishSong(struct entity* attacker, struct entity* defender, struct return TRUE; } + +bool8 DoMoveWrap(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryInflictWrappedStatus(attacker, defender); + + return TRUE; +} diff --git a/src/overlay_29_0232B7C0.c b/src/overlay_29_0232B7C0.c new file mode 100644 index 00000000..9af64fc2 --- /dev/null +++ b/src/overlay_29_0232B7C0.c @@ -0,0 +1,18 @@ +#include "overlay_29_0232B7C0.h" + +extern void TryInflictMagicCoatStatus(struct entity *user, struct entity *target); +extern void TryInflictProtectStatus(struct entity *user, struct entity *target); + +bool8 DoMoveMagicCoat(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryInflictMagicCoatStatus(attacker, defender); + + return TRUE; +} + +bool8 DoMoveProtect(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryInflictProtectStatus(attacker, defender); + + return TRUE; +} diff --git a/src/overlay_29_0232B8A0.c b/src/overlay_29_0232B8A0.c new file mode 100644 index 00000000..44979fb5 --- /dev/null +++ b/src/overlay_29_0232B8A0.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232B8A0.h" + +extern void TryInflictDestinyBondStatus(struct entity *user, struct entity *target); + +bool8 DoMoveDestinyBond(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryInflictDestinyBondStatus(attacker, defender); + + return TRUE; +} diff --git a/src/overlay_29_0232B8D4.c b/src/overlay_29_0232B8D4.c new file mode 100644 index 00000000..ffe2bc71 --- /dev/null +++ b/src/overlay_29_0232B8D4.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232B8D4.h" + +extern void TryInflictMirrorCoatStatus(struct entity *user, struct entity *target); + +bool8 DoMoveMirrorCoat(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryInflictMirrorCoatStatus(attacker, defender); + + return TRUE; +} diff --git a/src/overlay_29_0232BE34.c b/src/overlay_29_0232BE34.c new file mode 100644 index 00000000..8b863914 --- /dev/null +++ b/src/overlay_29_0232BE34.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232BE34.h" + +extern void TryInflictSnatchStatus(struct entity *user, struct entity *target); + +bool8 DoMoveSnatch(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryInflictSnatchStatus(attacker, defender); + + return TRUE; +} diff --git a/src/overlay_29_0232BF78.c b/src/overlay_29_0232BF78.c new file mode 100644 index 00000000..b56c9f32 --- /dev/null +++ b/src/overlay_29_0232BF78.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232BF78.h" + +extern void TryInflictReflectStatus(struct entity *user, struct entity *target); + +bool8 DoMoveReflect(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryInflictReflectStatus(attacker, defender); + + return TRUE; +} diff --git a/src/overlay_29_0232C300.c b/src/overlay_29_0232C300.c new file mode 100644 index 00000000..5696a695 --- /dev/null +++ b/src/overlay_29_0232C300.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232C300.h" + +extern void RevealTrapsNearby(struct entity *user, struct entity *target); + +bool8 DoMoveSeeTrap(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + RevealTrapsNearby(attacker, defender); + + return TRUE; +} diff --git a/src/overlay_29_0232C82C.c b/src/overlay_29_0232C82C.c new file mode 100644 index 00000000..032e5814 --- /dev/null +++ b/src/overlay_29_0232C82C.c @@ -0,0 +1,18 @@ +#include "overlay_29_0232C82C.h" + +extern void RevealItems(struct entity *user, struct entity *target); +extern void TryInflictMuzzledStatus(struct entity *user, struct entity *target, bool8 onlyCheck); + +bool8 DoMoveNoMove(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryInflictMuzzledStatus(attacker, defender, FALSE); + + return TRUE; +} + +bool8 DoMoveScan(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + RevealItems(attacker, defender); + + return TRUE; +}