.include "asm/macros.inc" .include "overlay_29_0231CBEC.inc" .text arm_func_start ApplyCheriBerryEffect ApplyCheriBerryEffect: ; 0x0231CBEC stmdb sp!, {r3, lr} ldr r2, [r1, #0xb4] ldrb r2, [r2, #0xbf] cmp r2, #4 bne _0231CC08 bl EndBurnClassStatus ldmia sp!, {r3, pc} _0231CC08: ldr r2, _0231CC14 ; =0x00000BE9 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, pc} .align 2, 0 #ifdef JAPAN _0231CC14: .word 0x00000928 #else _0231CC14: .word 0x00000BE9 #endif arm_func_end ApplyCheriBerryEffect arm_func_start ApplyPechaBerryEffect ApplyPechaBerryEffect: ; 0x0231CC18 stmdb sp!, {r3, lr} ldr r2, [r1, #0xb4] ldrb r2, [r2, #0xbf] add r2, r2, #0xfe and r2, r2, #0xff cmp r2, #1 bhi _0231CC3C bl EndBurnClassStatus ldmia sp!, {r3, pc} _0231CC3C: ldr r2, _0231CC48 ; =0x00000BE9 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, pc} .align 2, 0 #ifdef JAPAN _0231CC48: .word 0x00000928 #else _0231CC48: .word 0x00000BE9 #endif arm_func_end ApplyPechaBerryEffect arm_func_start ApplyRawstBerryEffect ApplyRawstBerryEffect: ; 0x0231CC4C stmdb sp!, {r3, r4, r5, lr} mov r4, r1 ldr r2, [r4, #0xb4] mov r5, r0 ldrb r2, [r2, #0xbf] cmp r2, #1 bne _0231CC70 bl EndBurnClassStatus ldmia sp!, {r3, r4, r5, pc} _0231CC70: mov r0, #0 mov r2, r0 bl SubstitutePlaceholderStringTags ldr r2, _0231CC90 ; =0x00000BEA mov r0, r5 mov r1, r4 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, pc} .align 2, 0 #ifdef JAPAN _0231CC90: .word 0x00000929 #else _0231CC90: .word 0x00000BEA #endif arm_func_end ApplyRawstBerryEffect arm_func_start ApplyHungerSeedEffect ApplyHungerSeedEffect: ; 0x0231CC94 #ifdef JAPAN #define APPLY_HUNGER_SEED_EFFECT_OFFSET -4 #else #define APPLY_HUNGER_SEED_EFFECT_OFFSET 0 #endif stmdb sp!, {r3, r4, r5, r6, lr} sub sp, sp, #4 mov r5, r1 ldr r4, [r5, #0xb4] mov r6, r0 ldrb r2, [r4, #7] cmp r2, #0 beq _0231CCC4 mov r2, #0 mov r3, #5 bl TryDecreaseBelly b _0231CD6C _0231CCC4: mov r0, #0 mov r2, r0 bl SubstitutePlaceholderStringTags mov r0, r5 mov r1, #0x12 bl IqSkillIsEnabled cmp r0, #0 beq _0231CCF8 ldr r2, _0231CD74 ; =0x00000BEB mov r0, r6 mov r1, r5 bl LogMessageByIdWithPopupCheckUserTarget b _0231CD6C _0231CCF8: add r0, r4, #0x100 ldrh r1, [r0, #0x46 + APPLY_HUNGER_SEED_EFFECT_OFFSET] sub r2, sp, #4 strh r1, [r2] ldrh r0, [r0, #0x48 + APPLY_HUNGER_SEED_EFFECT_OFFSET] strh r0, [r2, #2] ldr r0, [r2] bl CeilFixedPoint cmp r0, #0 beq _0231CD5C mov r0, #0 bl sub_02050FF8 strh r0, [sp] mov r0, r0, lsr #0x10 strh r0, [sp, #2] ldrh r0, [sp] add r3, r4, #0x100 ldrh r4, [sp, #2] strh r0, [r3, #0x46 + APPLY_HUNGER_SEED_EFFECT_OFFSET] ldr r2, _0231CD78 ; =0x00000BEC mov r0, r6 mov r1, r5 strh r4, [r3, #0x48 + APPLY_HUNGER_SEED_EFFECT_OFFSET] bl LogMessageByIdWithPopupCheckUserTarget b _0231CD6C _0231CD5C: ldr r2, _0231CD7C ; =0x00000BED mov r0, r6 mov r1, r5 bl LogMessageByIdWithPopupCheckUserTarget _0231CD6C: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 #ifdef JAPAN _0231CD74: .word 0x0000092A _0231CD78: .word 0x0000092B _0231CD7C: .word 0x0000092C #else _0231CD74: .word 0x00000BEB _0231CD78: .word 0x00000BEC _0231CD7C: .word 0x00000BED #endif arm_func_end ApplyHungerSeedEffect arm_func_start ApplyVileSeedEffect ApplyVileSeedEffect: ; 0x0231CD80 stmdb sp!, {r4, r5, lr} sub sp, sp, #0xc mov r4, r1 ldr r1, _0231CE10 ; =ov29_023529AC ldr ip, [r4, #0xb4] ldrh r3, [r1] ldrh r2, [r1, #2] ldrsh r1, [ip, #0x28] mov r5, r0 ldrsh r0, [ip, #0x2a] mov ip, #1 strh r3, [sp, #8] cmp r1, #0 strgth r1, [sp, #8] str ip, [sp] strh r2, [sp, #0xa] cmp r0, #0 strgth r0, [sp, #0xa] ldr r0, _0231CE14 ; =ATK_STAT_IDX ldrsh r3, [sp, #8] ldr r2, [r0] mov r0, r5 mov r1, r4 str ip, [sp, #4] bl LowerDefensiveStat ldr r0, _0231CE18 ; =SPATK_STAT_IDX mov ip, #1 ldr r2, [r0] str ip, [sp] ldrsh r3, [sp, #0xa] mov r0, r5 mov r1, r4 str ip, [sp, #4] bl LowerDefensiveStat add sp, sp, #0xc ldmia sp!, {r4, r5, pc} .align 2, 0 _0231CE10: .word ov29_023529AC _0231CE14: .word ATK_STAT_IDX _0231CE18: .word SPATK_STAT_IDX arm_func_end ApplyVileSeedEffect arm_func_start ApplyViolentSeedEffect ApplyViolentSeedEffect: ; 0x0231CE1C stmdb sp!, {r4, r5, r6, lr} mov r5, r1 ldr r4, [r5, #0xb4] ldr r2, _0231CE60 ; =ATK_STAT_IDX ldrsh r3, [r4, #0x24] ldr r2, [r2] mov r6, r0 #ifdef JAPAN bl BoostOffensiveStat ldr r0, _0231CE64 ; =SPATK_STAT_IDX ldrsh r3, [r4, #0x26] ldr r2, [r0] mov r0, r6 mov r1, r5 #else rsb r3, r3, #0x14 bl BoostOffensiveStat ldrsh r3, [r4, #0x26] ldr r1, _0231CE64 ; =SPATK_STAT_IDX mov r0, r6 ldr r2, [r1] mov r1, r5 rsb r3, r3, #0x14 #endif bl BoostOffensiveStat ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _0231CE60: .word ATK_STAT_IDX _0231CE64: .word SPATK_STAT_IDX arm_func_end ApplyViolentSeedEffect arm_func_start ApplyGinsengEffect ApplyGinsengEffect: ; 0x0231CE68 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} mov sb, r0 mov r8, r1 mov r0, #0x64 ldr r6, [r8, #0xb4] mov r4, #0 mov r5, #1 bl DungeonRandInt ldr r1, _0231CF78 ; =GINSENG_CHANCE_3 mov ip, #0 ldrsh r1, [r1] #ifdef JAPAN add r3, r6, #0x120 #else add r3, r6, #0x124 #endif cmp r0, r1 movlt r5, #3 mov r0, ip mov r1, #1 b _0231CF10 _0231CEAC: ldrb r2, [r3, ip, lsl #3] add r7, r3, ip, lsl #3 tst r2, #1 movne r2, r1 moveq r2, r0 tst r2, #0xff beq _0231CF0C mov r0, r7 bl GetMoveBasePower cmp r0, #0 beq _0231CF18 mov r0, r7 ldrb r6, [r7, #7] bl GetMoveMaxGinsengBoost ldrb r1, [r7, #7] add r2, r1, r5 and r1, r2, #0xff strb r2, [r7, #7] cmp r1, r0 strgeb r0, [r7, #7] ldrb r0, [r7, #7] cmp r6, r0 movne r4, #1 b _0231CF18 _0231CF0C: add ip, ip, #1 _0231CF10: cmp ip, #4 blt _0231CEAC _0231CF18: cmp r4, #0 beq _0231CF64 ldrh r1, [r7, #4] mov r0, #0 bl SetPreprocessorArgsIdVal #ifdef JAPAN ldr r2, _0231E440 ; =0x0000092F mov r0, sb mov r1, r8 #else mov r0, sb mov r1, r8 mov r2, #0xbf0 #endif bl LogMessageByIdWithPopupCheckUserTarget cmp r5, #1 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} mov r0, #0xa mov r1, #0x40 bl ov29_022EA370 ldr r2, _0231CF7C ; =0x00000BEF mov r0, sb mov r1, r8 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} _0231CF64: ldr r2, _0231CF80 ; =0x00000BEE mov r0, sb mov r1, r8 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} .align 2, 0 _0231CF78: .word GINSENG_CHANCE_3 #ifdef JAPAN _0231E440: .word 0x0000092F _0231CF7C: .word 0x0000092E _0231CF80: .word 0x0000092D #else _0231CF7C: .word 0x00000BEF _0231CF80: .word 0x00000BEE #endif arm_func_end ApplyGinsengEffect arm_func_start ApplyBlastSeedEffect ApplyBlastSeedEffect: ; 0x0231CF84 stmdb sp!, {r4, r5, r6, r7, lr} sub sp, sp, #0x1c mov r6, r0 mov r5, r1 cmp r2, #0 beq _0231D00C ldr r7, [r5, #0xb4] bl IsCurrentFixedRoomBossFight cmp r0, #0 ldrne r0, _0231D0A8 ; =ov10_022C45D8 ldreq r0, _0231D0AC ; =ov10_022C45D4 ldrsh r4, [r0] ldrb r0, [r7, #0xc4] cmp r0, #1 bne _0231CFD0 mov r0, r6 mov r1, r5 mov r2, #1 bl EndFrozenClassStatus _0231CFD0: add r0, sp, #0x18 str r0, [sp] mov ip, #0 ldr r0, _0231D0B0 ; =0x00000255 str ip, [sp, #4] str r0, [sp, #8] str ip, [sp, #0xc] str ip, [sp, #0x10] mov r0, r6 mov r1, r5 mov r2, r4 mov r3, #1 str ip, [sp, #0x14] bl CalcDamageFixedNoCategory b _0231D0A0 _0231D00C: bl ov29_022E5BD8 mov r0, r6 bl ov29_022F8830 movs r4, r0 bne _0231D034 ldr r2, _0231D0B4 ; =0x00000BF2 mov r0, r6 mov r1, r5 bl LogMessageByIdWithPopupCheckUserTarget b _0231D0A0 _0231D034: ldr r7, [r4, #0xb4] bl IsCurrentFixedRoomBossFight cmp r0, #0 ldrne r0, _0231D0B8 ; =ov10_022C45DC ldreq r0, _0231D0BC ; =ov10_022C44E8 ldrsh r5, [r0] ldrb r0, [r7, #0xc4] cmp r0, #1 bne _0231D068 mov r0, r6 mov r1, r4 mov r2, #1 bl EndFrozenClassStatus _0231D068: add r0, sp, #0x18 str r0, [sp] mov ip, #0 ldr r0, _0231D0B0 ; =0x00000255 str ip, [sp, #4] str r0, [sp, #8] str ip, [sp, #0xc] str ip, [sp, #0x10] mov r0, r6 mov r1, r4 mov r2, r5 mov r3, #1 str ip, [sp, #0x14] bl CalcDamageFixedNoCategory _0231D0A0: add sp, sp, #0x1c ldmia sp!, {r4, r5, r6, r7, pc} .align 2, 0 _0231D0A8: .word ov10_022C45D8 _0231D0AC: .word ov10_022C45D4 _0231D0B0: .word 0x00000255 #ifdef JAPAN _0231D0B4: .word 0x00000931 #else _0231D0B4: .word 0x00000BF2 #endif _0231D0B8: .word ov10_022C45DC _0231D0BC: .word ov10_022C44E8 arm_func_end ApplyBlastSeedEffect arm_func_start ApplyGummiBoostsDungeonMode ApplyGummiBoostsDungeonMode: ; 0x0231D0C0 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #8 mov r4, #0 mov sb, r1 mov sl, r0 mov r8, r3 mov r3, r4 mov r5, r4 cmp r2, #0xff ldr r7, [sb, #0xb4] bne _0231D108 ldr r1, _0231D468 ; =WONDER_GUMMI_IQ_GAIN ldr r0, _0231D46C ; =_020A1894 ldrsh r1, [r1] ldrsh r0, [r0] add fp, r4, r1 add r3, r4, r0 b _0231D164 _0231D108: ldrb r1, [r7, #0x5e] ldrb r6, [r7, #0x5f] mov r0, #0x24 smulbb r1, r1, r0 ldr fp, _0231D470 ; =IQ_GUMMI_GAIN_TABLE smulbb r6, r6, r0 add ip, fp, r1 mov r0, r2, lsl #1 add fp, fp, r6 ldrsh ip, [r0, ip] ldrsh r0, [r0, fp] cmp ip, r0 addgt fp, r4, ip addle fp, r4, r0 ldr ip, _0231D474 ; =GUMMI_BELLY_RESTORE_TABLE mov r0, r2, lsl #1 add r2, ip, r1 add r1, ip, r6 ldrsh r2, [r0, r2] ldrsh r0, [r0, r1] cmp r2, r0 addgt r3, r3, r2 addle r3, r3, r0 _0231D164: mov r6, #1 mov r0, sl mov r1, sb mov r2, r3 str r6, [sp] mov r3, #0 bl TryIncreaseBelly ldrb r0, [r7, #6] cmp r0, #0 bne _0231D284 mov r0, r7 bl IsExperienceLocked cmp r0, #0 bne _0231D284 ldrsh r6, [r7, #0xe] add r2, r6, fp strh r2, [r7, #0xe] ldrsh r0, [r7, #0xe] cmp r0, #1 movlt r0, #1 strlth r0, [r7, #0xe] ldrsh r1, [r7, #0xe] ldr r0, _0231D478 ; =0x000003E7 cmp r1, r0 strgth r0, [r7, #0xe] ldrsh r1, [r7, #0xe] cmp r6, r1 bne _0231D1EC ldr r2, _0231D47C ; =0x00000BF3 mov r0, sl mov r1, sb bl LogMessageByIdWithPopupCheckUserTarget mov r4, #1 b _0231D284 _0231D1EC: sub r0, r2, r6 cmp r0, #9 movge r5, #0 bge _0231D214 cmp r0, #5 movge r5, #1 bge _0231D214 cmp r0, #3 movge r5, #2 movlt r5, #3 _0231D214: sub r0, r1, r6 cmp r0, #9 movge fp, #0 bge _0231D23C cmp r0, #5 movge fp, #1 bge _0231D23C cmp r0, #3 movge fp, #2 movlt fp, #3 _0231D23C: ldr r0, _0231D480 ; =GUMMI_LIKE_STRING_IDS mov r1, r5, lsl #1 ldrh r2, [r0, r1] mov r0, sl mov r1, sb bl LogMessageByIdWithPopupCheckUserTarget ldr r0, _0231D484 ; =GUMMI_IQ_STRING_IDS mov r1, fp, lsl #1 ldrh r2, [r0, r1] mov r0, sl mov r1, sb bl LogMessageByIdWithPopupCheckUserTarget mov r0, r7 mov r1, r6 mov r2, #0 bl ov29_022FA02C mov r0, sb bl ov29_023021F0 _0231D284: cmp r5, #3 beq _0231D460 ldr r0, _0231D488 ; =ov10_022C44CC ldrsh r0, [r0] bl DungeonRandOutcome__022EAB20 cmp r0, #0 beq _0231D460 ldr r5, [sb, #0xb4] ldr r0, _0231D48C ; =ov10_022C45E4 ldrb r1, [r5, #0x1a] ldrsh r0, [r0] str r1, [sp, #4] ldrb fp, [r5, #0x1b] ldrb r6, [r5, #0x1c] ldrb r7, [r5, #0x1d] bl DungeonRandInt mov r0, r0, lsl #0x10 mov r0, r0, lsr #0x10 cmp r4, #0 cmpeq r0, #0xa moveq r0, #0xf beq _0231D2F4 mov r0, #4 bl DungeonRandInt mov r0, r0, lsl #0x10 ldr r1, _0231D490 ; =ov29_023529B0 mov r0, r0, lsr #0xf ldrh r0, [r1, r0] _0231D2F4: tst r0, #1 beq _0231D328 ldrb r1, [r5, #0x1a] cmp r1, #0xff bge _0231D320 add r1, r1, r8 mov r1, r1, lsl #0x10 mov r1, r1, asr #0x10 cmp r1, #0xff movgt r1, #0xff b _0231D324 _0231D320: bic r0, r0, #1 _0231D324: strb r1, [r5, #0x1a] _0231D328: tst r0, #2 beq _0231D35C ldrb r1, [r5, #0x1b] cmp r1, #0xff bge _0231D354 add r1, r1, r8 mov r1, r1, lsl #0x10 mov r1, r1, asr #0x10 cmp r1, #0xff movgt r1, #0xff b _0231D358 _0231D354: bic r0, r0, #2 _0231D358: strb r1, [r5, #0x1b] _0231D35C: tst r0, #4 beq _0231D390 ldrb r1, [r5, #0x1c] cmp r1, #0xff bge _0231D388 add r1, r1, r8 mov r1, r1, lsl #0x10 mov r1, r1, asr #0x10 cmp r1, #0xff movgt r1, #0xff b _0231D38C _0231D388: bic r0, r0, #4 _0231D38C: strb r1, [r5, #0x1c] _0231D390: tst r0, #8 beq _0231D3BC ldrb r0, [r5, #0x1d] cmp r0, #0xff bge _0231D3B8 add r0, r0, r8 mov r0, r0, lsl #0x10 mov r0, r0, asr #0x10 cmp r0, #0xff movgt r0, #0xff _0231D3B8: strb r0, [r5, #0x1d] _0231D3BC: ldrb r1, [r5, #0x1a] ldr r0, [sp, #4] cmp r1, r0 ble _0231D3E8 sub r1, r1, r0 mov r0, #0 bl SetMessageLogPreprocessorArgsNumberVal ldr r2, _0231D494 ; =0x00000BF7 mov r0, sl mov r1, sb bl LogMessageByIdWithPopupCheckUserTarget _0231D3E8: ldrb r0, [r5, #0x1b] cmp r0, fp ble _0231D410 sub r1, r0, fp mov r0, #0 bl SetMessageLogPreprocessorArgsNumberVal ldr r2, _0231D498 ; =0x00000BF8 mov r0, sl mov r1, sb bl LogMessageByIdWithPopupCheckUserTarget _0231D410: ldrb r0, [r5, #0x1c] cmp r0, r6 ble _0231D438 sub r1, r0, r6 mov r0, #0 bl SetMessageLogPreprocessorArgsNumberVal ldr r2, _0231D49C ; =0x00000BF9 mov r0, sl mov r1, sb bl LogMessageByIdWithPopupCheckUserTarget _0231D438: ldrb r0, [r5, #0x1d] cmp r0, r7 ble _0231D460 sub r1, r0, r7 mov r0, #0 bl SetMessageLogPreprocessorArgsNumberVal ldr r2, _0231D4A0 ; =0x00000BFA mov r0, sl mov r1, sb bl LogMessageByIdWithPopupCheckUserTarget _0231D460: add sp, sp, #8 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 #ifdef JAPAN #define APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET -0x2C1 #else #define APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET 0 #endif _0231D468: .word WONDER_GUMMI_IQ_GAIN _0231D46C: .word _020A1894 _0231D470: .word IQ_GUMMI_GAIN_TABLE _0231D474: .word GUMMI_BELLY_RESTORE_TABLE _0231D478: .word 0x000003E7 _0231D47C: .word 0x00000BF3 + APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET _0231D480: .word GUMMI_LIKE_STRING_IDS _0231D484: .word GUMMI_IQ_STRING_IDS _0231D488: .word ov10_022C44CC _0231D48C: .word ov10_022C45E4 _0231D490: .word ov29_023529B0 _0231D494: .word 0x00000BF7 + APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET _0231D498: .word 0x00000BF8 + APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET _0231D49C: .word 0x00000BF9 + APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET _0231D4A0: .word 0x00000BFA + APPLY_GUMMI_BOOSTS_DUNGEON_MODE_OFFSET arm_func_end ApplyGummiBoostsDungeonMode arm_func_start CanMonsterUseItem CanMonsterUseItem: ; 0x0231D4A4 stmdb sp!, {r4, lr} ldrb r2, [r1] mov r4, r0 ldr r0, [r4, #0xb4] tst r2, #8 movne r2, #1 moveq r2, #0 tst r2, #0xff beq _0231D4E4 mov r0, #0 bl PrepareItemForPrinting__02345728 ldr r1, _0231D52C ; =0x00000BE7 mov r0, r4 bl LogMessageByIdWithPopupCheckUser mov r0, #0 ldmia sp!, {r4, pc} _0231D4E4: ldrb r0, [r0, #0xf3] cmp r0, #1 bne _0231D524 ldrsh r0, [r1, #4] bl IsEdible cmp r0, #0 beq _0231D524 mov r0, #0 mov r1, r4 mov r2, r0 bl SubstitutePlaceholderStringTags ldr r1, _0231D530 ; =0x00000BF6 mov r0, r4 bl LogMessageByIdWithPopupCheckUser mov r0, #0 ldmia sp!, {r4, pc} _0231D524: mov r0, #1 ldmia sp!, {r4, pc} .align 2, 0 #ifdef JAPAN _0231D52C: .word 0x00000926 _0231D530: .word 0x00000935 #else _0231D52C: .word 0x00000BE7 _0231D530: .word 0x00000BF6 #endif arm_func_end CanMonsterUseItem arm_func_start ApplyGrimyFoodEffect ApplyGrimyFoodEffect: ; 0x0231D534 stmdb sp!, {r3, r4, r5, lr} sub sp, sp, #8 mov ip, #1 mov r4, r1 mov r2, #0x1e mov r3, #0 mov r5, r0 str ip, [sp] bl TryIncreaseBelly mov r0, r4 mov r1, #0x25 bl IqSkillIsEnabled cmp r0, #0 bne _0231D580 mov r0, r4 mov r1, #0x59 bl AbilityIsActiveVeneer cmp r0, #0 beq _0231D598 _0231D580: mov r0, #0x64 bl DungeonRandInt ldr r1, _0231D674 ; =ov10_022C4680 ldrsh r1, [r1] cmp r0, r1 blt _0231D66C _0231D598: mov r0, #5 bl DungeonRandInt cmp r0, #4 addls pc, pc, r0, lsl #2 b _0231D66C _0231D5AC: ; jump table b _0231D5C0 ; case 0 b _0231D5D8 ; case 1 b _0231D5EC ; case 2 b _0231D60C ; case 3 b _0231D624 ; case 4 _0231D5C0: mov r0, r5 mov r1, r4 mov r2, #1 mov r3, #0 bl TryInflictPoisonedStatus b _0231D66C _0231D5D8: mov r0, r5 mov r1, r4 mov r2, #0 bl TryInflictShadowHoldStatus b _0231D66C _0231D5EC: mov r2, #1 mov ip, #0 mov r0, r5 mov r1, r4 mov r3, r2 str ip, [sp] bl TryInflictBurnStatus b _0231D66C _0231D60C: mov r0, r5 mov r1, r4 mov r2, #1 mov r3, #0 bl TryInflictParalysisStatus b _0231D66C _0231D624: ldr r0, _0231D678 ; =ATK_STAT_IDX mov ip, #1 ldr r2, [r0] str ip, [sp] mov r0, r5 mov r1, r4 mov r3, #3 str ip, [sp, #4] bl LowerOffensiveStat ldr r0, _0231D67C ; =SPATK_STAT_IDX mov ip, #1 str ip, [sp] ldr r2, [r0] mov r0, r5 mov r1, r4 mov r3, #3 str ip, [sp, #4] bl LowerOffensiveStat _0231D66C: add sp, sp, #8 ldmia sp!, {r3, r4, r5, pc} .align 2, 0 _0231D674: .word ov10_022C4680 _0231D678: .word ATK_STAT_IDX _0231D67C: .word SPATK_STAT_IDX arm_func_end ApplyGrimyFoodEffect arm_func_start ApplyMixElixirEffect ApplyMixElixirEffect: ; 0x0231D680 stmdb sp!, {r4, r5, r6, lr} mov r5, r1 ldr r2, [r5, #0xb4] mov r6, r0 ldrsh r4, [r2, #2] mov r0, #0 mov r2, r0 bl SubstitutePlaceholderStringTags cmp r4, #0x124 cmpne r4, #0x37c bne _0231D6C4 ldr r2, _0231D6D8 ; =0x000003E7 mov r0, r6 mov r1, r5 mov r3, #0 bl RestoreAllMovePP ldmia sp!, {r4, r5, r6, pc} _0231D6C4: ldr r2, _0231D6DC ; =0x00000C64 mov r0, r6 mov r1, r5 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r4, r5, r6, pc} .align 2, 0 _0231D6D8: .word 0x000003E7 #ifdef JAPAN _0231D6DC: .word 0x000009A3 #else _0231D6DC: .word 0x00000C64 #endif arm_func_end ApplyMixElixirEffect arm_func_start ApplyDoughSeedEffect ApplyDoughSeedEffect: ; 0x0231D6E0 stmdb sp!, {r3, r4, r5, lr} mov r5, r0 mov r0, #0 mov r4, r1 mov r2, r0 bl SubstitutePlaceholderStringTags ldr r0, [r4, #0xb4] ldrb r0, [r0, #6] cmp r0, #0 bne _0231D730 bl GetDoughSeedFlag cmp r0, #0 bne _0231D730 mov r0, #1 bl SetDoughSeedFlag ldr r2, _0231D744 ; =0x00000C6E mov r0, r5 mov r1, r4 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, pc} _0231D730: ldr r2, _0231D748 ; =0x00000C6F mov r0, r5 mov r1, r4 bl LogMessageByIdWithPopupCheckUserTarget ldmia sp!, {r3, r4, r5, pc} .align 2, 0 #ifdef JAPAN _0231D744: .word 0x000009AD _0231D748: .word 0x000009AE #else _0231D744: .word 0x00000C6E _0231D748: .word 0x00000C6F #endif arm_func_end ApplyDoughSeedEffect arm_func_start ApplyViaSeedEffect ApplyViaSeedEffect: ; 0x0231D74C stmdb sp!, {r3, r4, r5, lr} mov r5, r0 mov r0, #0 mov r4, r1 mov r2, r0 bl SubstitutePlaceholderStringTags mov r0, r4 bl ShouldDisplayEntityWrapper cmp r0, #0 beq _0231D788 ldr r1, _0231D7B8 ; =0x00000C68 mov r0, #0 mov r2, #1 bl DisplayMessage2 b _0231D7A0 _0231D788: ldr r2, _0231D7BC ; =0x00000C69 mov r0, r5 mov r1, r4 bl LogMessageByIdWithPopupCheckUserTarget mov r0, #0xa bl ov29_0234BA54 _0231D7A0: mov r2, #0 mov r0, r5 mov r1, r4 mov r3, r2 bl TryWarp ldmia sp!, {r3, r4, r5, pc} .align 2, 0 #ifdef JAPAN _0231D7B8: .word 0x000009A7 _0231D7BC: .word 0x000009A8 #else _0231D7B8: .word 0x00000C68 _0231D7BC: .word 0x00000C69 #endif arm_func_end ApplyViaSeedEffect arm_func_start ApplyGravelyrockEffect ApplyGravelyrockEffect: ; 0x0231D7C0 stmdb sp!, {r3, r4, r5, r6, lr} sub sp, sp, #4 mov r5, r1 ldr r1, [r5, #0xb4] mov r6, r0 ldrsh r0, [r1, #2] bl FemaleToMaleForm mov r1, #1 mov r4, r0 str r1, [sp] ldr r0, _0231D830 ; =ov10_022C47E0 mov r1, r5 ldrsh r2, [r0] ldrsh r3, [r0, #2] mov r0, r6 bl TryIncreaseBelly cmp r4, #0x1e0 cmpne r4, #0xb9 bne _0231D828 ldr r1, _0231D834 ; =ov10_022C47F0 mov r0, r5 ldr r1, [r1] mov r2, #0 mov r1, r1, lsl #0x10 mov r1, r1, asr #0x10 bl BoostIQ _0231D828: add sp, sp, #4 ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 _0231D830: .word ov10_022C47E0 _0231D834: .word ov10_022C47F0 arm_func_end ApplyGravelyrockEffect arm_func_start ApplyGonePebbleEffect ApplyGonePebbleEffect: ; 0x0231D838 stmdb sp!, {r3, r4, r5, r6, lr} sub sp, sp, #0xc mov r5, r1 mov r6, r0 mov r0, r5 bl ShouldDisplayEntityWrapper cmp r0, #0 beq _0231D978 mov r0, #1 bl ov29_022EFB20 bl ov29_022EAF20 mov r4, r0 mov r0, #3 bl ov29_022EAF34 ldr r1, _0231D9B0 ; =0x000003FF mov r0, #4 add r2, sp, #4 mov r3, #0 bl DirectoryFileMngr_OpenDirectoryFile ldr r1, [sp, #4] add r0, sp, #0 bl HandleSir0Translation mov r0, r5 bl ov29_022F04F0 ldrb r0, [r5, #0xaa] mov r1, #1 bl ov29_022DE47C mov r0, #0 bl ov29_022DD828 ldr r0, [sp] mov r1, #6 bl ov29_022F085C ldr r0, _0231D9B4 ; =0x00000C65 bl ov29_022F0780 bl ov29_022F05E4 mov r0, #0 bl ov29_022EFB84 mov r0, #0 mov r1, r5 mov r2, r0 bl SubstitutePlaceholderStringTags ldr r2, _0231D9B8 ; =0x00000C66 mov r0, r6 mov r1, r5 bl LogMessageByIdWithPopupCheckUserTarget mov r0, #0xa bl ov29_0234BA54 mov r0, r6 mov r1, r5 bl TryInflictEndureStatus ldr r0, _0231D9BC ; =DUNGEON_PTR ldr r0, [r0] add r0, r0, #0x4000 #ifdef JAPAN ldrsh r0, [r0, #0x32] #else ldrsh r0, [r0, #0xd6] #endif bl MusicTableIdxToMusicId bl ChangeDungeonMusic mov r0, r4 bl ov29_022EAF34 #ifndef JAPAN bl UpdateMinimap mov r0, #1 bl ov29_02339FF4 #endif mov r0, #0 bl GetApparentWeather bl GetWeatherColorTable mov r1, #6 bl ov29_022F085C mov r0, r5 bl ov29_022F0518 add r0, sp, #4 bl UnloadFile ldrb r0, [r5, #0xaa] mov r1, #0 bl ov29_022DE47C bl ov29_022DE608 mov r0, #1 bl ov29_022DD828 mov r0, #0xa mov r1, r0 bl ov29_022EA370 b _0231D9A8 _0231D978: mov r0, #0 mov r1, r5 mov r2, r0 bl SubstitutePlaceholderStringTags ldr r1, _0231D9B8 ; =0x00000C66 mov r0, r5 bl LogMessageByIdWithPopup mov r0, #0xa bl ov29_0234BA54 mov r0, r6 mov r1, r5 bl TryInflictEndureStatus _0231D9A8: add sp, sp, #0xc ldmia sp!, {r3, r4, r5, r6, pc} .align 2, 0 #ifdef JAPAN _0231D9B0: .word 0x000003F3 _0231D9B4: .word 0x000009A4 _0231D9B8: .word 0x000009A5 #else _0231D9B0: .word 0x000003FF _0231D9B4: .word 0x00000C65 _0231D9B8: .word 0x00000C66 #endif _0231D9BC: .word DUNGEON_PTR arm_func_end ApplyGonePebbleEffect arm_func_start ApplyGracideaEffect ApplyGracideaEffect: ; 0x0231D9C0 stmdb sp!, {r3, r4, r5, lr} mov r0, #0x1a mov r5, r1 bl GetResolvedPerformanceProgressFlag cmp r0, #0 beq _0231DA50 mov r0, r5 mov r1, #1 bl ChangeShayminForme mov r4, r0 mov r0, #0 mov r1, r5 mov r2, r0 bl SubstitutePlaceholderStringTags cmp r4, #3 bne _0231DA10 #ifdef JAPAN mov r0, r5 mov r1, #0x9b0 #else ldr r1, _0231DA70 ; =0x00000C71 mov r0, r5 #endif bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, pc} _0231DA10: cmp r4, #1 bne _0231DA28 ldr r1, _0231DA74 ; =0x00000C72 mov r0, r5 bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, pc} _0231DA28: cmp r4, #2 bne _0231DA40 ldr r1, _0231DA78 ; =0x00000C74 mov r0, r5 bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, pc} _0231DA40: ldr r1, _0231DA7C ; =0x00000C73 mov r0, r5 bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, pc} _0231DA50: mov r0, #0 mov r1, r5 mov r2, r0 bl SubstitutePlaceholderStringTags ldr r1, _0231DA7C ; =0x00000C73 mov r0, r5 bl LogMessageByIdWithPopupCheckUser ldmia sp!, {r3, r4, r5, pc} .align 2, 0 #ifdef JAPAN _0231DA74: .word 0x000009B1 _0231DA78: .word 0x000009B3 _0231DA7C: .word 0x000009B2 #else _0231DA70: .word 0x00000C71 _0231DA74: .word 0x00000C72 _0231DA78: .word 0x00000C74 _0231DA7C: .word 0x00000C73 #endif arm_func_end ApplyGracideaEffect arm_func_start ov29_0231DA80 ov29_0231DA80: ; 0x0231DA80 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov sb, r1 mov sl, r0 ldrsh r0, [sb, #4] bl GetItemMoveId16 ldrb r1, [sb] mov r5, r0 tst r1, #8 movne r0, #1 moveq r0, #0 tst r0, #0xff beq _0231DAC8 ldr r1, _0231DBE0 ; =0x00000BE7 mov r0, #0 mov r2, #1 bl DisplayMessage2 mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} _0231DAC8: ldrsh r0, [sb, #4] bl IsHM cmp r0, #0 beq _0231DAF0 ldr r1, _0231DBE4 ; =0x00000BF4 mov r0, #0 mov r2, #1 bl DisplayMessage2 mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} _0231DAF0: ldr fp, _0231DBE8 ; =DUNGEON_PTR mov r4, #0 _0231DAF8: ldr r0, [fp] add r0, r0, r4, lsl #2 add r0, r0, #0x12000 #ifdef JAPAN ldr r7, [r0, #0xa84] #else ldr r7, [r0, #0xb28] #endif mov r0, r7 bl EntityIsValid__0231CBC8 cmp r0, #0 beq _0231DB70 ldr r8, [r7, #0xb4] mov r0, r5 ldrsh r1, [r8, #2] bl sub_02053D1C mov r6, r0 mov r0, r7 mov r1, r5 bl ov29_022FBA54 cmp r0, #0 mov r0, r7 movne r6, #0 bl ov29_023009A0 cmp r0, #0 ldrb r0, [r8, #0xbc] movne r6, #0 cmp r0, #7 mov r0, r8 moveq r6, #0 bl IsExperienceLocked cmp r0, #0 movne r6, #0 #ifdef JAPAN strb r6, [r8, #0x15d] #else strb r6, [r8, #0x161] #endif _0231DB70: add r4, r4, #1 cmp r4, #4 blt _0231DAF8 mov r0, #0 mov r2, r0 #ifndef JAPAN mov r3, r0 #endif mov r1, #1 bl ov31_023877EC mov r4, r0 bl EntityIsValid__0231CBC8 cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} mov r0, r4 mov r1, sb bl ov29_022E5AE4 mov r0, r4 mov r1, r5 bl DungeonTmLearnMove cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} ldr r2, _0231DBEC ; =0x00000141 mov r0, sl mov r1, #0 bl ov29_022EB668 mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 #ifdef JAPAN _0231DBE0: .word 0x00000926 _0231DBE4: .word 0x00000933 #else _0231DBE0: .word 0x00000BE7 _0231DBE4: .word 0x00000BF4 #endif _0231DBE8: .word DUNGEON_PTR _0231DBEC: .word 0x00000141 arm_func_end ov29_0231DA80 arm_func_start ov29_0231DBF0 ov29_0231DBF0: ; 0x0231DBF0 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} mov sb, r1 ldrb r1, [sb] mov sl, r0 tst r1, #8 movne r0, #1 moveq r0, #0 tst r0, #0xff beq _0231DC2C ldr r1, _0231DD50 ; =0x00000BE7 mov r0, #0 mov r2, #1 bl DisplayMessage2 mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} _0231DC2C: ldr r4, _0231DD54 ; =DUNGEON_PTR ldr r0, [r4] ldrb r0, [r0, #0x75c] cmp r0, #0 bne _0231DC58 ldr r1, _0231DD58 ; =0x00000BA4 mov r0, #0 mov r2, #1 bl DisplayMessage2 mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} _0231DC58: mov r5, #0 mov fp, #1 _0231DC60: ldr r0, [r4] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 #ifdef JAPAN ldr r7, [r0, #0xa84] #else ldr r7, [r0, #0xb28] #endif mov r0, r7 bl EntityIsValid__0231CBC8 cmp r0, #0 beq _0231DCEC ldr r8, [r7, #0xb4] mov r6, fp ldrsh r0, [r8, #0xc] cmp r0, #4 movge r6, #0 bge _0231DCAC bl GetActiveTeamMember ldrsh r0, [r0, #8] bl ov29_022F9C34 cmp r0, #0 movne r6, #0 _0231DCAC: mov r0, r7 mov r1, #0 bl CheckVariousStatuses2__02301244 cmp r0, #0 ldrb r0, [r8, #0xbc] movne r6, #0 cmp r0, #7 mov r0, r8 moveq r6, #0 bl IsExperienceLocked cmp r0, #0 ldrb r0, [r8, #7] movne r6, #0 cmp r0, #0 movne r6, #0 #ifdef JAPAN strb r6, [r8, #0x15d] #else strb r6, [r8, #0x161] #endif _0231DCEC: add r5, r5, #1 cmp r5, #4 blt _0231DC60 mov r0, #0 #ifdef JAPAN mov r2, r0 mov r1, #1 #else mov r1, #1 mov r2, r0 mov r3, r1 #endif bl ov31_023877EC mov r4, r0 bl EntityIsValid__0231CBC8 cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} mov r0, sl mov r1, sb bl ov29_022E5AE4 ldr r0, _0231DD54 ; =DUNGEON_PTR ldr r2, _0231DD5C ; =0x00000142 ldr r3, [r0] mov r0, sl mov r1, #0 str r4, [r3, #0xc8] bl ov29_022EB668 mov r0, #1 ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 #ifdef JAPAN _0231DD50: .word 0x00000926 _0231DD54: .word DUNGEON_PTR _0231DD58: .word 0x000008E3 #else _0231DD50: .word 0x00000BE7 _0231DD54: .word DUNGEON_PTR _0231DD58: .word 0x00000BA4 #endif _0231DD5C: .word 0x00000142 arm_func_end ov29_0231DBF0 arm_func_start ov29_0231DD60 ov29_0231DD60: ; 0x0231DD60 stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} sub sp, sp, #0x1c mov sb, r1 ldrb r1, [sb] mov sl, r0 mov r6, #0 tst r1, #8 movne r0, #1 moveq r0, r6 ldr r4, [sl, #0xb4] tst r0, #0xff beq _0231DDA8 ldr r1, _0231E04C ; =0x00000BE7 mov r0, #0 mov r2, #1 bl DisplayMessage2 mov r0, #0 b _0231E044 _0231DDA8: ldr fp, _0231E050 ; =DUNGEON_PTR mov r5, #0 _0231DDB0: ldr r0, [fp] add r0, r0, r5, lsl #2 add r0, r0, #0x12000 #ifdef JAPAN ldr r7, [r0, #0xa84] #else ldr r7, [r0, #0xb28] #endif mov r0, r7 bl EntityIsValid__0231CBC8 cmp r0, #0 beq _0231DE0C ldr r8, [r7, #0xb4] mov r0, r7 mov r1, #0 mov r7, #1 bl CheckVariousStatuses2__02301308 cmp r0, #0 ldrb r0, [r8, #0xbc] movne r7, #0 cmp r0, #7 mov r0, r8 moveq r7, #0 bl IsExperienceLocked cmp r0, #0 movne r7, #0 #ifdef JAPAN strb r7, [r8, #0x15d] #else strb r7, [r8, #0x161] #endif _0231DE0C: add r5, r5, #1 cmp r5, #4 blt _0231DDB0 mov r0, #0 mov r2, r0 #ifndef JAPAN mov r3, r0 #endif mov r1, #1 bl ov31_023877EC str r0, [sp, #4] bl EntityIsValid__0231CBC8 cmp r0, #0 moveq r0, #0 beq _0231E044 add r2, sp, #8 add r3, r4, #0x4a mov r1, #0xa _0231DE4C: ldrh r0, [r3], #2 subs r1, r1, #1 strh r0, [r2], #2 bne _0231DE4C mov fp, #1 ldr r5, _0231E054 ; =0x0000016A add r7, sp, #4 mov r8, fp _0231DE6C: add r0, r4, #0x4a bl ClearMonsterActionFields ldrsh r0, [sb, #4] mov r2, #0 cmp r0, r5 beq _0231DE9C mov r0, r7 mov r1, r8 mov r3, r2 str r8, [sp] bl HandleMovesMenuWrapper0 b _0231DEB0 _0231DE9C: mov r0, r7 mov r1, fp mov r3, r2 str fp, [sp] bl HandleMovesMenuWrapper1 _0231DEB0: cmp r0, #0 beq _0231DF1C cmp r6, #0 beq _0231DFF4 ldrsh r0, [sb, #4] ldr r1, _0231E058 ; =0x00000BF5 cmp r0, r5 bne _0231DF00 mov r0, #1 str r0, [sp] mov r0, #0 mov r2, #1 mov r3, r0 bl YesNoMenu cmp r0, #1 bne _0231DF1C mov r0, #0 mov r1, r0 bl ov29_022EA428 b _0231DFF4 _0231DF00: mov r0, #0 mov r2, r0 mov r3, r0 str r0, [sp] bl YesNoMenu cmp r0, #1 beq _0231DFF4 _0231DF1C: ldrh r0, [r4, #0x4a] cmp r0, #0x1d bne _0231DF34 add r0, r4, #0x4a bl ov31_02385FE0 b _0231DE6C _0231DF34: cmp r0, #0x20 bne _0231DF60 mov r0, #0xb mov r1, #0 bl ov29_022EA428 add r0, r4, #0x4a bl ov31_02386204 mov r0, #1 bl ResetLeaderActionFields mov r6, #1 b _0231DE6C _0231DF60: cmp r0, #0x21 bne _0231DF8C mov r0, #0xb mov r1, #0 bl ov29_022EA428 add r0, r4, #0x4a mov r1, #0 bl ov31_02386308 mov r0, #1 bl ResetLeaderActionFields b _0231DE6C _0231DF8C: cmp r0, #0x1e bne _0231DFB0 mov r0, #0xb mov r1, #0 bl ov29_022EA428 add r0, r4, #0x4a mov r1, #0 bl ov31_023860A4 b _0231DE6C _0231DFB0: cmp r0, #0x33 bne _0231DFD4 mov r0, #0xb mov r1, #0 bl ov29_022EA428 add r0, r4, #0x4a mov r1, #0 bl ov31_023860A4 b _0231DE6C _0231DFD4: cmp r0, #0x1f bne _0231DE6C mov r0, #0xb mov r1, #0 bl ov29_022EA428 add r0, r4, #0x4a bl ov31_0238619C b _0231DE6C _0231DFF4: cmp r6, #0 beq _0231E038 add r3, sp, #8 add r2, r4, #0x4a mov r1, #0xa _0231E008: ldrh r0, [r3], #2 subs r1, r1, #1 strh r0, [r2], #2 bne _0231E008 mov r0, sl mov r1, #0 mov r2, #0x6e bl RemoveUsedItem add r0, r4, #0x4a mov r1, #0x2c bl SetMonsterActionFields b _0231E040 _0231E038: mov r0, #1 bl ResetLeaderActionFields _0231E040: mov r0, r6 _0231E044: add sp, sp, #0x1c ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} .align 2, 0 #ifdef JAPAN _0231E04C: .word 0x00000926 #else _0231E04C: .word 0x00000BE7 #endif _0231E050: .word DUNGEON_PTR _0231E054: .word 0x0000016A #ifdef JAPAN _0231E058: .word 0x00000934 #else _0231E058: .word 0x00000BF5 #endif arm_func_end ov29_0231DD60