Merge pull request #139 from AnonymousRandomPerson/main

More AI decomp
This commit is contained in:
AnonymousRandomPerson
2025-06-16 23:02:33 -05:00
committed by GitHub
41 changed files with 1789 additions and 1722 deletions

View File

@@ -81,7 +81,7 @@
.public SetMonsterActionFields
.public ShouldMonsterFollowLeader
.public ShouldMonsterHeadToStairs
.public ShouldMonsterRunAwayVariation
.public ShouldMonsterRunAwayAndShowEffect
.public sub_0201BD50
.public sub_0201BD80
.public sub_0202760C

View File

@@ -1,23 +1 @@
#pragma once
.public _022B99A8
.public _022B99D0
.public _022B99D4
.public _022B99D8
.public ArrayCopy16
.public EnableIrqFlag
.public GetTimer0Control
.public MemcpyFast
.public OS_GetLockID
.public SetIrqFlag
.public sub_01FF97CC
.public sub_02078900
.public sub_02078C3C
.public sub_02078CC8
.public sub_0207C164
.public sub_0207D9A4
.public sub_0207DAB0
.public sub_0207DAFC
.public sub_0207DB20
.public sub_02083434
.public SVC_WaitByLoop
.public WaitForever2

View File

@@ -0,0 +1,21 @@
#pragma once
.public ArrayCopy16
.public EnableIrqFlag
.public GetTimer0Control
.public MemcpyFast
.public OS_GetLockID
.public SetIrqFlag
.public WaitForever2
.public _022B99A8
.public _022B99D0
.public _022B99D4
.public _022B99D8
.public sub_01FF97CC
.public sub_02078C3C
.public sub_02078CC8
.public sub_0207C164
.public sub_0207D9A4
.public sub_0207DAB0
.public sub_0207DAFC
.public sub_0207DB20
.public sub_02083434

View File

@@ -177,7 +177,7 @@
.public SetLeaderActionFields
.public SetMonsterActionFields
.public ShouldMonsterRunAway
.public ShouldMonsterRunAwayVariation
.public ShouldMonsterRunAwayAndShowEffect
.public SpawnItem
.public sub_02001AB0
.public sub_02006B70

View File

@@ -37,6 +37,6 @@
.public RemoveGroundItem
.public RemoveUsedItem
.public ShouldDisplayEntityWrapper
.public ShouldMonsterRunAwayVariation
.public ShouldMonsterRunAwayAndShowEffect
.public SpawnItem
.public TryTriggerMonsterHouse

View File

@@ -1,3 +1,2 @@
#pragma once
.public CheckVariousStatuses
.public ShouldMonsterRunAway

View File

@@ -1,18 +1,10 @@
#pragma once
.public DIRECTIONS_XY
.public DUNGEON_PTR
.public DungeonRandInt
.public GetDirectionalMobilityType
.public GetMobilityTypeCheckSlipAndFloating
.public GetTile
.public GetTreatmentBetweenMonsters
.public IqSkillIsEnabled
.public IsCurrentTilesetBackground
.public IsTacticSet
.public ItemIsActive__022FF898
.public ov29_02352770
.public ov29_02352778
.public ov29_02352780
.public ov29_02352788
.public ov29_02352790
.public SECONDARY_TERRAIN_TYPES

View File

@@ -0,0 +1,16 @@
#pragma once
.public DIRECTIONS_XY
.public DUNGEON_PTR
.public DungeonRandInt
.public GetDirectionalMobilityType
.public GetMobilityTypeCheckSlipAndFloating
.public GetTile
.public GetTreatmentBetweenMonsters
.public IqSkillIsEnabled
.public IsCurrentTilesetBackground
.public IsTacticSet
.public ItemIsActive__022FF898
.public SECONDARY_TERRAIN_TYPES
.public ov29_02352770
.public ov29_02352778
.public ov29_02352780

View File

@@ -1,5 +1,4 @@
#pragma once
.public AbilityIsActive
.public ov29_022E62A8
.public ShouldMonsterRunAway
.public UpdateStateFlags
.public PlayEffectAnimation0x29

View File

@@ -33,7 +33,7 @@
.public ov29_02348DD8
.public ov29_02348ECC
.public RemoveGroundItem
.public ShouldMonsterRunAwayVariation
.public ShouldMonsterRunAwayAndShowEffect
.public sub_0200D8AC
.public SubstitutePlaceholderStringTags
.public UseThrowableItem

View File

@@ -1,31 +1,20 @@
#pragma once
.public _s32_div_f
.public abs
.public CountStickyItemsInBag
.public DetermineAllTilesWalkableNeighbors
.public DUNGEON_PTR
.public DetermineAllTilesWalkableNeighbors
.public DungeonRand16Bit
.public DungeonRandInt
.public DungeonRandRange
.public DungeonRngSetPrimary
.public DungeonRngSetSecondary
.public EntityIsValid__02344AF8
.public FIRST_DUNGEON_WITH_MONSTER_HOUSE_TRAPS
.public FIXED_ROOM_DATA_PTR
.public FIXED_ROOM_ENTITY_SPAWN_TABLE
.public FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE
.public FLOOR_GENERATION_STATUS
.public GenerateCleanItem
.public GenerateStandardItem
.public GetActiveTeamMember
.public GetDungeonMode
.public GetExclusiveItem
.public GenerateAndSpawnItem
.public GetExplorerMazeMonster
.public GetFloorType
.public GetItemCategoryVeneer
.public GetMissionEnemyMinionGroup
.public GetMissionTargetEnemy
.public GetMoneyCarried
.public GetMatchingMonsterId
.public GetMonsterIdFromSpawnEntry
.public GetMonsterLevelToSpawn
.public GetOutlawLeaderLevel
@@ -35,88 +24,59 @@
.public GetSpecialTargetItem
.public GetTile
.public GetTileSafe
.public HandleSir0Translation
.public HIDDEN_STAIRS_SPAWN_BLOCKED
.public HIDDEN_STAIRS_SPAWN_CHANCE_MULTIPLIER
.public InitializeTile
.public HandleSir0Translation
.public InitOtherMonsterData
.public InitStandardItem
.public IsBagFull
.public InitializeTile
.public IsCurrentMissionType
.public IsDestinationFloor
.public IsFullFloorFixedRoom
.public IsGoldenChamber
.public IsItemInBag
.public IsSecretBazaar
.public IsSecretRoom
.public IsTreasureBox
.public KECLEON_SHOP_BOOST_CHANCE_MULTIPLIER
.public LoadFileFromRom
.public LoadScriptVariableValue
.public LogMessageByIdWithPopupCheckUser
.public MONSTER_HOUSE_MAX_MONSTER_SPAWNS
.public MONSTER_HOUSE_MAX_NON_MONSTER_SPAWNS
.public MemAlloc
.public MemFree
.public MemZero
.public MONSTER_HOUSE_MAX_MONSTER_SPAWNS
.public MONSTER_HOUSE_MAX_NON_MONSTER_SPAWNS
.public MultiplyByFixedPoint
.public PointsToZero
.public PosIsOutOfBounds
.public SHOP_ITEM_CHANCES
.public SetMonsterLevelAndId
.public SetShouldBoostHiddenStairsSpawnChance
.public SetShouldBoostKecleonShopSpawnChance
.public ShouldBoostHiddenStairsSpawnChance
.public ShouldBoostKecleonShopSpawnChance
.public SpawnEnemyTrapAtPos
.public SpawnMonster
.public TREASURE_BOX_1_ITEM_IDS
.public UnloadFile
.public UpdateMinimap
.public UpdateTrapsVisibility
.public ZInit8
.public _s32_div_f
.public abs
.public ov10_022C4B34
.public ov10_022C6C74
.public ov10_022C6C75
.public ov10_022C6C76
.public ov10_022C6C77
.public ov10_022C6C78
.public ov10_022C6C79
.public ov29_022E6694
.public ov29_022E7BB8
.public ov29_022E7BD0
.public ov29_022EA370
.public ov29_022EFB20
.public ov29_022EFB84
.public ov29_022F05B4
.public ov29_022F05E4
.public ov29_022F0604
.public ov29_022F0618
.public ov29_022F062C
.public ov29_022F0654
.public ov29_022F067C
.public ov29_022F0780
.public ov29_022F07BC
.public ov29_022F07D8
.public ov29_022F0848
.public ov29_023365E8
.public ov29_02336694
.public ov29_02344B9C
.public ov29_02345004
.public ov29_023442B8
.public ov29_02348BE8
.public ov29_0234B09C
.public ov29_0234B1A4
.public ov29_0234C738
.public ov29_023502F0
.public ov29_023502F4
.public ov29_02353030
.public ov29_02353050
.public ov29_02353110
.public ov29_023534F0
.public ov29_02353798
.public ov29_0237CFC0
.public ov29_0237CFFC
.public PointsToZero
.public PosIsOutOfBounds
.public SetMonsterLevelAndId
.public SetShouldBoostHiddenStairsSpawnChance
.public SetShouldBoostKecleonShopSpawnChance
.public SHOP_ITEM_CHANCES
.public ShouldBoostHiddenStairsSpawnChance
.public ShouldBoostKecleonShopSpawnChance
.public SpawnEnemyTrapAtPos
.public SpawnItem
.public SpawnMonster
.public StartFadeDungeonWrapper
.public sub_02056880
.public SubstitutePlaceholderStringTags
.public TREASURE_BOX_1_ITEM_IDS
.public UnloadFile
.public UpdateMinimap
.public UpdateTrapsVisibility
.public ZInit8

View File

@@ -0,0 +1,47 @@
#pragma once
.public CountStickyItemsInBag
.public DUNGEON_PTR
.public DungeonRandInt
.public EntityIsValid__02344AF8
.public GenerateCleanItem
.public GenerateStandardItem
.public GetActiveTeamMember
.public GetDungeonMode
.public GetExclusiveItem
.public GetItemCategoryVeneer
.public GetMissionEnemyMinionGroup
.public GetMissionTargetEnemy
.public GetMoneyCarried
.public InitStandardItem
.public IsBagFull
.public IsItemInBag
.public IsSecretBazaar
.public IsSecretRoom
.public LoadScriptVariableValue
.public MemZero
.public SpawnItem
.public StartFadeDungeonWrapper
.public SubstitutePlaceholderStringTags
.public ov10_022C6C74
.public ov29_022E7BB8
.public ov29_022EFB20
.public ov29_022EFB84
.public ov29_022F05B4
.public ov29_022F05E4
.public ov29_022F0604
.public ov29_022F0618
.public ov29_022F062C
.public ov29_022F0654
.public ov29_022F067C
.public ov29_022F0780
.public ov29_022F07BC
.public ov29_022F07D8
.public ov29_022F0848
.public ov29_02344B9C
.public ov29_02345004
.public ov29_0234B09C
.public ov29_0234B1A4
.public ov29_0234C738
.public ov29_02353798
.public ov29_0237CFFC
.public sub_02056880

View File

@@ -44,7 +44,7 @@
.public RemoveEmptyItemsInBag
.public RemoveEquivItemNoHole
.public RemoveGroundItem
.public ShouldMonsterRunAwayVariation
.public ShouldMonsterRunAwayAndShowEffect
.public SpawnItemEntity
.public sub_0200D8AC
.public sub_02024FE8

View File

@@ -2792,12 +2792,12 @@ _01FFA37C:
_01FFA38C: .word ov29_02353530
arm_func_end sub_01FF9F80
arm_func_start ShouldMonsterRunAwayVariationOutlawCheck
ShouldMonsterRunAwayVariationOutlawCheck: ; 0x01FFA390
arm_func_start ShouldMonsterRunAwayAndShowEffectOutlawCheck
ShouldMonsterRunAwayAndShowEffectOutlawCheck: ; 0x01FFA390
stmdb sp!, {r3, r4, r5, lr}
mov r4, #0
mov r5, r0
bl ShouldMonsterRunAwayVariation
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
movne r4, #1
bne _01FFA3BC
@@ -2808,7 +2808,7 @@ ShouldMonsterRunAwayVariationOutlawCheck: ; 0x01FFA390
_01FFA3BC:
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ShouldMonsterRunAwayVariationOutlawCheck
arm_func_end ShouldMonsterRunAwayAndShowEffectOutlawCheck
arm_func_start AiMovement
AiMovement: ; 0x01FFA3C4
@@ -2894,7 +2894,7 @@ _01FFA494:
_01FFA4D4:
ldr r1, [sp]
mov r0, r4
bl ShouldMonsterRunAwayVariationOutlawCheck
bl ShouldMonsterRunAwayAndShowEffectOutlawCheck
cmp r0, #0
beq _01FFA9A8
ldr sb, [r4, #0xb4]
@@ -3775,7 +3775,7 @@ _01FFB16C:
movne sl, #5
mov r0, r4
moveq sl, #3
bl ShouldMonsterRunAwayVariationOutlawCheck
bl ShouldMonsterRunAwayAndShowEffectOutlawCheck
cmp r0, #0
ldreqb r0, [sb, #0x7f]
mov r8, #1
@@ -4169,7 +4169,7 @@ ChooseAiMove: ; 0x01FFB658
bne _01FFBD0C
mov r0, sl
mov r1, #1
bl ShouldMonsterRunAwayVariation
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
bne _01FFBD0C
ldr r0, [sl, #0xb4]

View File

@@ -3,308 +3,10 @@
.text
; https://decomp.me/scratch/5f50V
arm_func_start sub_0207B854
sub_0207B854: ; 0x0207B854
subs r0, r0, #4
bhs sub_0207B854
bx lr
arm_func_end sub_0207B854
arm_func_start sub_0207B860
sub_0207B860: ; 0x0207B860
stmdb sp!, {r3, lr}
mov r0, #1
blx SVC_WaitByLoop
mov r0, #1
mov r1, r0
bl sub_02078900
ldmia sp!, {r3, pc}
arm_func_end sub_0207B860
arm_func_start sub_0207B87C
sub_0207B87C: ; 0x0207B87C
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0207B8C8 ; =_022B99D0
ldrh r1, [r0, #2]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #1
strh r1, [r0, #2]
bl sub_0207D9A4
mov r5, #0xc
mov r4, #1
_0207B8A4:
mov r0, r5
mov r1, r4
bl sub_0207DAFC
cmp r0, #0
beq _0207B8A4
ldr r1, _0207B8CC ; =sub_0207B8D0
mov r0, #0xc
bl sub_0207DAB0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0207B8C8: .word _022B99D0
_0207B8CC: .word sub_0207B8D0
arm_func_end sub_0207B87C
arm_func_start sub_0207B8D0
sub_0207B8D0: ; 0x0207B8D0
stmdb sp!, {r3, lr}
and r0, r1, #0x7f00
mov r0, r0, lsl #8
mov r0, r0, lsr #0x10
cmp r0, #0x10
bne _0207B8F8
ldr r0, _0207B900 ; =_022B99D0
mov r1, #1
strh r1, [r0]
ldmia sp!, {r3, pc}
_0207B8F8:
bl WaitForever2
ldmia sp!, {r3, pc}
.align 2, 0
_0207B900: .word _022B99D0
arm_func_end sub_0207B8D0
arm_func_start sub_0207B904
sub_0207B904: ; 0x0207B904
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0, lsl #8
mov r5, #0xc
mov r4, #0
_0207B914:
mov r0, r5
mov r1, r6
mov r2, r4
bl sub_0207DB20
cmp r0, #0
bne _0207B914
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0207B904
arm_func_start sub_0207B930
sub_0207B930: ; 0x0207B930
stmdb sp!, {r4, lr}
ldr r1, _0207B9C0 ; =0x027FFC40
mov r4, r0
ldrh r0, [r1]
cmp r0, #2
moveq r0, #1
movne r0, #0
cmp r0, #0
beq _0207B958
bl WaitForever2
_0207B958:
bl OS_GetLockID
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02083434
ldr r0, _0207B9C4 ; =0x00000000
bl sub_0207C164
ldr r0, _0207B9C8 ; =0x00000001
bl sub_0207C164
ldr r0, _0207B9CC ; =0x00000002
bl sub_0207C164
ldr r0, _0207B9D0 ; =0x00000003
bl sub_0207C164
ldr r0, _0207B9D4 ; =0x00040000
bl sub_02078C3C
ldr r0, _0207B9D8 ; =0xFFFBFFFF
bl sub_02078CC8
ldr r1, _0207B9DC ; =0x027FFC20
ldr r0, _0207B9E0 ; =0x00000010
str r4, [r1]
bl sub_0207B904
ldr r0, _0207B9E4 ; =0x027E3F80
ldr r1, _0207B9E8 ; =0x00000800
sub r0, r0, r1
mov sp, r0
bl sub_01FF97CC
ldmia sp!, {r4, pc}
.align 2, 0
_0207B9C0: .word 0x027FFC40
_0207B9C4: .word 0x00000000
_0207B9C8: .word 0x00000001
_0207B9CC: .word 0x00000002
_0207B9D0: .word 0x00000003
_0207B9D4: .word 0x00040000
_0207B9D8: .word 0xFFFBFFFF
_0207B9DC: .word 0x027FFC20
_0207B9E0: .word 0x00000010
_0207B9E4: .word 0x027E3F80
_0207B9E8: .word 0x00000800
arm_func_end sub_0207B930
arm_func_start sub_0207B9EC
sub_0207B9EC: ; 0x0207B9EC
ldr ip, _0207BA00 ; =MemcpyFast
mov r1, r0
ldr r0, _0207BA04 ; =0x027FFCF4
mov r2, #6
bx ip
.align 2, 0
_0207BA00: .word MemcpyFast
_0207BA04: .word 0x027FFCF4
arm_func_end sub_0207B9EC
arm_func_start GetDsFirmwareUserSettings
GetDsFirmwareUserSettings: ; 0x0207BA08
stmdb sp!, {r4, lr}
ldr ip, _0207BA88 ; =0x027FFC80
mov r4, r0
ldrh r2, [ip, #0x64]
add r0, ip, #6
add r1, r4, #4
mov r2, r2, lsl #0x1d
mov r2, r2, lsr #0x1d
strb r2, [r4]
ldrb r3, [ip, #2]
mov r2, #0x14
mov r3, r3, lsl #0x1c
mov r3, r3, lsr #0x1c
strb r3, [r4, #1]
ldrb r3, [ip, #3]
strb r3, [r4, #2]
ldrb r3, [ip, #4]
strb r3, [r4, #3]
ldrb r3, [ip, #0x1a]
strh r3, [r4, #0x1a]
ldrb r3, [ip, #0x50]
strh r3, [r4, #0x52]
bl ArrayCopy16
ldr r0, _0207BA88 ; =0x027FFC80
add r1, r4, #0x1c
add r0, r0, #0x1c
mov r2, #0x34
bl ArrayCopy16
mov r0, #0
strh r0, [r4, #0x18]
strh r0, [r4, #0x50]
ldmia sp!, {r4, pc}
.align 2, 0
_0207BA88: .word 0x027FFC80
arm_func_end GetDsFirmwareUserSettings
arm_func_start CountLeadingZeros
CountLeadingZeros: ; 0x0207BA8C
clz r0, r0
bx lr
arm_func_end CountLeadingZeros
arm_func_start sub_0207BA94
sub_0207BA94: ; 0x0207BA94
ldr r0, _0207BAC0 ; =_022B99D4
mov r3, #0
str r3, [r0]
ldr r0, _0207BAC4 ; =_022B99D8
mov r2, r3
_0207BAA8:
mov r1, r3, lsl #1
add r3, r3, #1
strh r2, [r0, r1]
cmp r3, #9
blt _0207BAA8
bx lr
.align 2, 0
_0207BAC0: .word _022B99D4
_0207BAC4: .word _022B99D8
arm_func_end sub_0207BA94
arm_func_start sub_0207BAC8
sub_0207BAC8: ; 0x0207BAC8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r5, r0
mov sl, r1
bl EnableIrqFlag
ldr r4, _0207BB44 ; =_022B99D4
ldr r1, _0207BB48 ; =0x000001FF
ldr r2, [r4]
mov sb, r0
and r0, r5, r2
ldr r6, _0207BB4C ; =_022B99D8
and r8, r0, r1
mov r7, #1
mov r5, #0
_0207BAFC:
mov r0, r8
bl CountLeadingZeros
rsbs r2, r0, #0x1f
bmi _0207BB38
mov r1, r2, lsl #1
ldrh r0, [r6, r1]
mvn r2, r7, lsl r2
cmp sl, r0
and r8, r8, r2
bne _0207BAFC
ldr r0, [r4]
strh r5, [r6, r1]
and r0, r0, r2
str r0, [r4]
b _0207BAFC
_0207BB38:
mov r0, sb
bl SetIrqFlag
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0207BB44: .word _022B99D4
_0207BB48: .word 0x000001FF
_0207BB4C: .word _022B99D8
arm_func_end sub_0207BAC8
arm_func_start sub_0207BB50
sub_0207BB50: ; 0x0207BB50
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _0207BC10 ; =0x04000006
mov r5, r0
ldrh r6, [r1]
ldr r4, _0207BC14 ; =0x027FFC00
bl GetTimer0Control
orr r0, r0, r6, lsl #16
str r0, [r5]
ldr r1, _0207BC18 ; =_022B99A8
ldrh ip, [r4, #0xf8]
ldr r3, [r1]
ldr r2, [r1, #4]
mov r0, r4
eor r2, r3, ip, lsl #16
str r2, [r5, #4]
ldr r2, [r1]
ldr r3, [r0, #0x3c]
ldr r2, [r1, #4]
ldr r1, [r4, #0xf4]
ldr ip, _0207BC1C ; =0x04000600
eor r1, r2, r1
eor r2, r3, r1
str r2, [r5, #8]
ldr r1, [ip]
eor r1, r2, r1
str r1, [r5, #8]
ldr r2, [r0, #0x1e8]
add r1, r0, #0x300
str r2, [r5, #0xc]
ldr r3, [r0, #0x1ec]
sub r2, ip, #0x4d0
str r3, [r5, #0x10]
ldr r3, [r0, #0x390]
ldrh r4, [r1, #0x94]
add r0, r0, #0x3a8
eor r3, r3, r4, lsl #16
str r3, [r5, #0x14]
ldrh r4, [r1, #0xaa]
ldrh r3, [r1, #0xac]
orr r3, r3, r4, lsl #16
str r3, [r5, #0x18]
ldrh r2, [r2]
ldrh r0, [r0]
ldrh r1, [r1, #0x98]
orr r0, r2, r0
orr r0, r0, r1, lsl #16
str r0, [r5, #0x1c]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0207BC10: .word 0x04000006
_0207BC14: .word 0x027FFC00
_0207BC18: .word _022B99A8
_0207BC1C: .word 0x04000600
arm_func_end sub_0207BB50

292
asm/main_0207B87C.s Normal file
View File

@@ -0,0 +1,292 @@
.include "asm/macros.inc"
.include "main_0207B87C.inc"
.text
arm_func_start sub_0207B87C
sub_0207B87C: ; 0x0207B87C
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0207B8C8 ; =_022B99D0
ldrh r1, [r0, #2]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #1
strh r1, [r0, #2]
bl sub_0207D9A4
mov r5, #0xc
mov r4, #1
_0207B8A4:
mov r0, r5
mov r1, r4
bl sub_0207DAFC
cmp r0, #0
beq _0207B8A4
ldr r1, _0207B8CC ; =sub_0207B8D0
mov r0, #0xc
bl sub_0207DAB0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0207B8C8: .word _022B99D0
_0207B8CC: .word sub_0207B8D0
arm_func_end sub_0207B87C
arm_func_start sub_0207B8D0
sub_0207B8D0: ; 0x0207B8D0
stmdb sp!, {r3, lr}
and r0, r1, #0x7f00
mov r0, r0, lsl #8
mov r0, r0, lsr #0x10
cmp r0, #0x10
bne _0207B8F8
ldr r0, _0207B900 ; =_022B99D0
mov r1, #1
strh r1, [r0]
ldmia sp!, {r3, pc}
_0207B8F8:
bl WaitForever2
ldmia sp!, {r3, pc}
.align 2, 0
_0207B900: .word _022B99D0
arm_func_end sub_0207B8D0
arm_func_start sub_0207B904
sub_0207B904: ; 0x0207B904
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0, lsl #8
mov r5, #0xc
mov r4, #0
_0207B914:
mov r0, r5
mov r1, r6
mov r2, r4
bl sub_0207DB20
cmp r0, #0
bne _0207B914
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0207B904
arm_func_start sub_0207B930
sub_0207B930: ; 0x0207B930
stmdb sp!, {r4, lr}
ldr r1, _0207B9C0 ; =0x027FFC40
mov r4, r0
ldrh r0, [r1]
cmp r0, #2
moveq r0, #1
movne r0, #0
cmp r0, #0
beq _0207B958
bl WaitForever2
_0207B958:
bl OS_GetLockID
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02083434
ldr r0, _0207B9C4 ; =0x00000000
bl sub_0207C164
ldr r0, _0207B9C8 ; =0x00000001
bl sub_0207C164
ldr r0, _0207B9CC ; =0x00000002
bl sub_0207C164
ldr r0, _0207B9D0 ; =0x00000003
bl sub_0207C164
ldr r0, _0207B9D4 ; =0x00040000
bl sub_02078C3C
ldr r0, _0207B9D8 ; =0xFFFBFFFF
bl sub_02078CC8
ldr r1, _0207B9DC ; =0x027FFC20
ldr r0, _0207B9E0 ; =0x00000010
str r4, [r1]
bl sub_0207B904
ldr r0, _0207B9E4 ; =0x027E3F80
ldr r1, _0207B9E8 ; =0x00000800
sub r0, r0, r1
mov sp, r0
bl sub_01FF97CC
ldmia sp!, {r4, pc}
.align 2, 0
_0207B9C0: .word 0x027FFC40
_0207B9C4: .word 0x00000000
_0207B9C8: .word 0x00000001
_0207B9CC: .word 0x00000002
_0207B9D0: .word 0x00000003
_0207B9D4: .word 0x00040000
_0207B9D8: .word 0xFFFBFFFF
_0207B9DC: .word 0x027FFC20
_0207B9E0: .word 0x00000010
_0207B9E4: .word 0x027E3F80
_0207B9E8: .word 0x00000800
arm_func_end sub_0207B930
arm_func_start sub_0207B9EC
sub_0207B9EC: ; 0x0207B9EC
ldr ip, _0207BA00 ; =MemcpyFast
mov r1, r0
ldr r0, _0207BA04 ; =0x027FFCF4
mov r2, #6
bx ip
.align 2, 0
_0207BA00: .word MemcpyFast
_0207BA04: .word 0x027FFCF4
arm_func_end sub_0207B9EC
arm_func_start GetDsFirmwareUserSettings
GetDsFirmwareUserSettings: ; 0x0207BA08
stmdb sp!, {r4, lr}
ldr ip, _0207BA88 ; =0x027FFC80
mov r4, r0
ldrh r2, [ip, #0x64]
add r0, ip, #6
add r1, r4, #4
mov r2, r2, lsl #0x1d
mov r2, r2, lsr #0x1d
strb r2, [r4]
ldrb r3, [ip, #2]
mov r2, #0x14
mov r3, r3, lsl #0x1c
mov r3, r3, lsr #0x1c
strb r3, [r4, #1]
ldrb r3, [ip, #3]
strb r3, [r4, #2]
ldrb r3, [ip, #4]
strb r3, [r4, #3]
ldrb r3, [ip, #0x1a]
strh r3, [r4, #0x1a]
ldrb r3, [ip, #0x50]
strh r3, [r4, #0x52]
bl ArrayCopy16
ldr r0, _0207BA88 ; =0x027FFC80
add r1, r4, #0x1c
add r0, r0, #0x1c
mov r2, #0x34
bl ArrayCopy16
mov r0, #0
strh r0, [r4, #0x18]
strh r0, [r4, #0x50]
ldmia sp!, {r4, pc}
.align 2, 0
_0207BA88: .word 0x027FFC80
arm_func_end GetDsFirmwareUserSettings
arm_func_start CountLeadingZeros
CountLeadingZeros: ; 0x0207BA8C
clz r0, r0
bx lr
arm_func_end CountLeadingZeros
arm_func_start sub_0207BA94
sub_0207BA94: ; 0x0207BA94
ldr r0, _0207BAC0 ; =_022B99D4
mov r3, #0
str r3, [r0]
ldr r0, _0207BAC4 ; =_022B99D8
mov r2, r3
_0207BAA8:
mov r1, r3, lsl #1
add r3, r3, #1
strh r2, [r0, r1]
cmp r3, #9
blt _0207BAA8
bx lr
.align 2, 0
_0207BAC0: .word _022B99D4
_0207BAC4: .word _022B99D8
arm_func_end sub_0207BA94
arm_func_start sub_0207BAC8
sub_0207BAC8: ; 0x0207BAC8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r5, r0
mov sl, r1
bl EnableIrqFlag
ldr r4, _0207BB44 ; =_022B99D4
ldr r1, _0207BB48 ; =0x000001FF
ldr r2, [r4]
mov sb, r0
and r0, r5, r2
ldr r6, _0207BB4C ; =_022B99D8
and r8, r0, r1
mov r7, #1
mov r5, #0
_0207BAFC:
mov r0, r8
bl CountLeadingZeros
rsbs r2, r0, #0x1f
bmi _0207BB38
mov r1, r2, lsl #1
ldrh r0, [r6, r1]
mvn r2, r7, lsl r2
cmp sl, r0
and r8, r8, r2
bne _0207BAFC
ldr r0, [r4]
strh r5, [r6, r1]
and r0, r0, r2
str r0, [r4]
b _0207BAFC
_0207BB38:
mov r0, sb
bl SetIrqFlag
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0207BB44: .word _022B99D4
_0207BB48: .word 0x000001FF
_0207BB4C: .word _022B99D8
arm_func_end sub_0207BAC8
arm_func_start sub_0207BB50
sub_0207BB50: ; 0x0207BB50
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _0207BC10 ; =0x04000006
mov r5, r0
ldrh r6, [r1]
ldr r4, _0207BC14 ; =0x027FFC00
bl GetTimer0Control
orr r0, r0, r6, lsl #16
str r0, [r5]
ldr r1, _0207BC18 ; =_022B99A8
ldrh ip, [r4, #0xf8]
ldr r3, [r1]
ldr r2, [r1, #4]
mov r0, r4
eor r2, r3, ip, lsl #16
str r2, [r5, #4]
ldr r2, [r1]
ldr r3, [r0, #0x3c]
ldr r2, [r1, #4]
ldr r1, [r4, #0xf4]
ldr ip, _0207BC1C ; =0x04000600
eor r1, r2, r1
eor r2, r3, r1
str r2, [r5, #8]
ldr r1, [ip]
eor r1, r2, r1
str r1, [r5, #8]
ldr r2, [r0, #0x1e8]
add r1, r0, #0x300
str r2, [r5, #0xc]
ldr r3, [r0, #0x1ec]
sub r2, ip, #0x4d0
str r3, [r5, #0x10]
ldr r3, [r0, #0x390]
ldrh r4, [r1, #0x94]
add r0, r0, #0x3a8
eor r3, r3, r4, lsl #16
str r3, [r5, #0x14]
ldrh r4, [r1, #0xaa]
ldrh r3, [r1, #0xac]
orr r3, r3, r4, lsl #16
str r3, [r5, #0x18]
ldrh r2, [r2]
ldrh r0, [r0]
ldrh r1, [r1, #0x98]
orr r0, r2, r0
orr r0, r0, r1, lsl #16
str r0, [r5, #0x1c]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0207BC10: .word 0x04000006
_0207BC14: .word 0x027FFC00
_0207BC18: .word _022B99A8
_0207BC1C: .word 0x04000600
arm_func_end sub_0207BB50

View File

@@ -1043,8 +1043,6 @@ ov10_022C6C74:
.global ov10_022C6C75
ov10_022C6C75:
.byte 0x01
.global ov10_022C6C76
ov10_022C6C76:
.byte 0x01
.global ov10_022C6C77
ov10_022C6C77:

View File

@@ -3516,8 +3516,8 @@ ov29_022E6260: ; 0x022E6260
ldmia sp!, {r4, pc}
arm_func_end ov29_022E6260
arm_func_start ov29_022E62A8
ov29_022E62A8: ; 0x022E62A8
arm_func_start PlayEffectAnimation0x29
PlayEffectAnimation0x29: ; 0x022E62A8
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
@@ -3536,7 +3536,7 @@ ov29_022E62A8: ; 0x022E62A8
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E62A8
arm_func_end PlayEffectAnimation0x29
arm_func_start ov29_022E62F0
ov29_022E62F0: ; 0x022E62F0

View File

@@ -814,7 +814,7 @@ _022F0F58:
_022F0FAC:
bl GetLeader
mov r1, #1
bl ShouldMonsterRunAwayVariation
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
bne _022F1000
mov r0, #0xa
@@ -1545,7 +1545,7 @@ _022F19DC:
_022F1A64:
mov r0, r6
mov r1, #1
bl ShouldMonsterRunAwayVariation
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
beq _022F1AA0
ldr r1, _022F1DF4 ; =0x00000B9A
@@ -2648,7 +2648,7 @@ _022F2A00:
beq _022F2A70
bl GetLeader
mov r1, #1
bl ShouldMonsterRunAwayVariation
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
bne _022F2A70
mov r0, #4

View File

@@ -242,7 +242,7 @@ _022F5578:
_022F55B8:
mov r0, sb
mov r1, #1
bl ShouldMonsterRunAwayVariation
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
beq _022F55E8
ldr r1, _022F5984 ; =0x00000BBE

View File

@@ -66,51 +66,3 @@ ov29_02300DC0: ; 0x02300DC0
.align 2, 0
_02300DC8: .word ov29_02300D50
arm_func_end ov29_02300DC0
arm_func_start MonsterCannotAttack
MonsterCannotAttack: ; 0x02300DCC
stmdb sp!, {r3, lr}
cmp r1, #0
ldr r2, [r0, #0xb4]
bne _02300DF4
ldrb r1, [r2, #0xbd]
cmp r1, #2
cmpne r1, #4
cmpne r1, #0
movne r0, #1
ldmneia sp!, {r3, pc}
_02300DF4:
ldrb r1, [r2, #0xc4]
cmp r1, #1
moveq r0, #1
ldmeqia sp!, {r3, pc}
cmp r1, #3
moveq r0, #1
ldmeqia sp!, {r3, pc}
cmp r1, #4
moveq r0, #1
ldmeqia sp!, {r3, pc}
cmp r1, #6
moveq r0, #1
ldmeqia sp!, {r3, pc}
ldrb r1, [r2, #0xd0]
cmp r1, #1
moveq r0, #1
ldmeqia sp!, {r3, pc}
cmp r1, #3
moveq r0, #1
ldmeqia sp!, {r3, pc}
cmp r1, #7
moveq r0, #1
ldmeqia sp!, {r3, pc}
ldrb r1, [r2, #0xbf]
cmp r1, #4
moveq r0, #1
ldmeqia sp!, {r3, pc}
bl ShouldMonsterRunAway
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end MonsterCannotAttack

View File

@@ -133,481 +133,3 @@ _0230110C: .word DIRECTIONS_XY
_02301110: .word DIRECTIONS_XY + 2
_02301114: .word ov29_02352788
arm_func_end ov29_0230105C
arm_func_start IsMonsterCornered
IsMonsterCornered: ; 0x02301118
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, #0
b _02301148
_02301128:
mov r0, r5
mov r1, r4
bl ov29_02301158
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, r4, r5, pc}
add r0, r4, #1
and r4, r0, #0xff
_02301148:
cmp r4, #8
blo _02301128
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end IsMonsterCornered
arm_func_start ov29_02301158
ov29_02301158: ; 0x02301158
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r2, [r6, #0xb4]
mov r5, r1
ldrsh r1, [r2, #2]
bl GetMobilityTypeCheckSlipAndFloating
ldr r2, _02301228 ; =DIRECTIONS_XY
mov ip, r5, lsl #2
ldr r1, _0230122C ; =DIRECTIONS_XY + 2
ldrsh r3, [r2, ip]
ldrsh lr, [r6, #4]
mov r4, r0
ldrsh r2, [r6, #6]
ldrsh r1, [r1, ip]
add r0, lr, r3
add r1, r2, r1
bl GetTile
ldrh r1, [r0]
tst r1, #0x10
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
ldr r1, [r0, #0xc]
cmp r1, #0
beq _023011E0
ldr r0, [r1]
cmp r0, #1
bne _023011E0
mov r0, r6
mov r2, #1
mov r3, #0
bl GetTreatmentBetweenMonsters
cmp r0, #1
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
_023011E0:
#ifdef JAPAN
bl IsCurrentTilesetBackground
cmp r0, #0
bne _02302654
ldr r0, [r6, #0xb4]
ldrb r0, [r0, #0xef]
cmp r0, #3
moveq r4, #3
beq _02302654
mov r0, r6
mov r1, #0x10
bl ItemIsActive__022FF898
cmp r0, #0
movne r4, #3
bne _02302654
mov r0, r6
mov r1, #0xc
bl IqSkillIsEnabled
cmp r0, #0
movne r4, #2
bne _02302654
mov r0, r6
mov r1, #0xd
bl IqSkillIsEnabled
cmp r0, #0
beq _02302654
tst r5, #1
movne r4, #2
moveq r4, #3
_02302654:
#else
mov r0, r6
mov r1, r4
and r2, r5, #0xff
bl GetDirectionalMobilityType
mov r4, r0
#endif
ldrsh r0, [r6, #4]
ldrsh r1, [r6, #6]
bl GetTile
add r0, r0, r4
ldr r1, _02301230 ; =ov29_02352780
and r2, r5, #7
ldrb r1, [r1, r2]
ldrb r0, [r0, #8]
tst r1, r0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02301228: .word DIRECTIONS_XY
_0230122C: .word DIRECTIONS_XY + 2
_02301230: .word ov29_02352780
arm_func_end ov29_02301158
arm_func_start CanAttackInDirection
CanAttackInDirection: ; 0x02301234
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r2, [r6, #0xb4]
mov r5, r1
ldrsh r1, [r2, #2]
bl GetMobilityTypeCheckSlipAndFloating
mov r4, r0
ldr r1, _023012EC ; =DIRECTIONS_XY
mov ip, r5, lsl #2
cmp r4, #1
ldr r0, _023012F0 ; =DIRECTIONS_XY + 2
ldrsh r3, [r1, ip]
ldrsh lr, [r6, #4]
ldrsh r1, [r0, ip]
ldrsh r2, [r6, #6]
add r0, lr, r3
movls r4, #2
add r1, r2, r1
bl GetTile
ldrh r1, [r0]
tst r1, #0x10
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
ldr r0, [r0, #0xc]
cmp r0, #0
ldrne r0, [r0]
cmpne r0, #1
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
#ifdef JAPAN
bl IsCurrentTilesetBackground
cmp r0, #0
bne _02302778
ldr r0, [r6, #0xb4]
ldrb r0, [r0, #0xef]
cmp r0, #3
moveq r4, #3
beq _02302778
mov r0, r6
mov r1, #0x10
bl ItemIsActive__022FF898
cmp r0, #0
movne r4, #3
bne _02302778
mov r0, r6
mov r1, #0xc
bl IqSkillIsEnabled
cmp r0, #0
movne r4, #2
bne _02302778
mov r0, r6
mov r1, #0xd
bl IqSkillIsEnabled
cmp r0, #0
beq _02302778
tst r5, #1
movne r4, #2
moveq r4, #3
_02302778:
#else
mov r0, r6
mov r1, r4
and r2, r5, #0xff
bl GetDirectionalMobilityType
mov r4, r0
#endif
ldrsh r0, [r6, #4]
ldrsh r1, [r6, #6]
bl GetTile
add r0, r0, r4
ldr r1, _023012F4 ; =ov29_02352778
and r2, r5, #7
ldrb r1, [r1, r2]
ldrb r0, [r0, #8]
tst r1, r0
#ifdef JAPAN
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
#else
moveq r0, #0
movne r0, #1
#endif
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_023012EC: .word DIRECTIONS_XY
_023012F0: .word DIRECTIONS_XY + 2
_023012F4: .word ov29_02352778
arm_func_end CanAttackInDirection
arm_func_start CanAiMonsterMoveInDirection
CanAiMonsterMoveInDirection: ; 0x023012F8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldr r3, [r8, #0xb4]
mov r7, r1
ldrsh r1, [r3, #2]
mov r6, r2
bl GetMobilityTypeCheckSlipAndFloating
mov r1, #0
strb r1, [r6]
ldr r2, _02301484 ; =DIRECTIONS_XY
mov r4, r7, lsl #2
ldr r1, _02301488 ; =DIRECTIONS_XY + 2
ldrsh r3, [r2, r4]
ldrsh ip, [r8, #4]
mov r5, r0
ldrsh r2, [r8, #6]
ldrsh r1, [r1, r4]
add r0, ip, r3
add r1, r2, r1
bl GetTile
mov r4, r0
ldrh r0, [r4]
tst r0, #0x10
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
tst r0, #0x40
beq _02301390
ldr r0, _0230148C ; =DUNGEON_PTR
ldr r0, [r0]
ldrb r0, [r0, #0x793]
cmp r0, #0
bne _02301390
mov r0, r8
mov r1, #0xf
bl IqSkillIsEnabled
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
_02301390:
ldr r0, [r4, #0x10]
cmp r0, #0
beq _023013E4
mov r0, r8
mov r1, #0xe
bl IqSkillIsEnabled
cmp r0, #0
beq _023013E4
ldr r1, [r4, #0x10]
ldr r0, [r1]
cmp r0, #2
bne _023013E4
ldrb r0, [r1, #0x20]
cmp r0, #0
bne _023013DC
ldr r0, [r8, #0xb4]
ldrb r0, [r0, #0xf1]
cmp r0, #3
bne _023013E4
_023013DC:
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_023013E4:
ldrh r0, [r4]
and r0, r0, #3
cmp r0, #2
bne _0230142C
ldr r0, _0230148C ; =DUNGEON_PTR
ldr r1, _02301490 ; =SECONDARY_TERRAIN_TYPES
ldr r0, [r0]
add r0, r0, #0x4000
#ifdef JAPAN
ldrsh r0, [r0, #0x30]
#else
ldrsh r0, [r0, #0xd4]
#endif
ldrb r0, [r1, r0]
cmp r0, #1
bne _0230142C
mov r0, r8
mov r1, #0x14
bl IqSkillIsEnabled
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
_0230142C:
#ifdef JAPAN
bl IsCurrentTilesetBackground
cmp r0, #0
bne _0230295C
ldr r0, [r8, #0xb4]
ldrb r0, [r0, #0xef]
cmp r0, #3
moveq r5, #3
beq _0230295C
mov r0, r8
mov r1, #0x10
bl ItemIsActive__022FF898
cmp r0, #0
movne r5, #3
bne _0230295C
mov r0, r8
mov r1, #0xc
bl IqSkillIsEnabled
cmp r0, #0
movne r5, #2
bne _0230295C
mov r0, r8
mov r1, #0xd
bl IqSkillIsEnabled
cmp r0, #0
beq _0230295C
tst r7, #1
movne r5, #2
moveq r5, #3
_0230295C:
#else
mov r0, r8
mov r1, r5
and r2, r7, #0xff
bl GetDirectionalMobilityType
mov r5, r0
#endif
ldrsh r0, [r8, #4]
ldrsh r1, [r8, #6]
bl GetTile
add r0, r0, r5
ldr r1, _02301494 ; =ov29_02352770
and r2, r7, #7
ldrb r1, [r1, r2]
ldrb r0, [r0, #8]
tst r1, r0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
ldr r0, [r4, #0xc]
cmp r0, #0
mov r0, #1
strneb r0, [r6]
movne r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02301484: .word DIRECTIONS_XY
_02301488: .word DIRECTIONS_XY + 2
_0230148C: .word DUNGEON_PTR
_02301490: .word SECONDARY_TERRAIN_TYPES
_02301494: .word ov29_02352770
arm_func_end CanAiMonsterMoveInDirection
arm_func_start ov29_02301498
ov29_02301498: ; 0x02301498
#ifdef JAPAN
#define OV29_02301498_OFFSET -4
#else
#define OV29_02301498_OFFSET 0
#endif
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r1, [r5, #0xb4]
ldrsh r1, [r1, #2]
bl GetMobilityTypeCheckSlipAndFloating
#ifdef JAPAN
mov r4, r0
bl IsCurrentTilesetBackground
cmp r0, #0
bne _02302A30_JP
ldr r0, [r5, #0xb4]
ldrb r0, [r0, #0xef]
cmp r0, #3
moveq r4, #3
beq _02302A30_JP
mov r0, r5
mov r1, #0x10
bl ItemIsActive__022FF898
cmp r0, #0
movne r4, #3
bne _02302A30_JP
mov r0, r5
mov r1, #0xc
bl IqSkillIsEnabled
cmp r0, #0
movne r4, #2
bne _02302A30_JP
mov r0, r5
mov r1, #0xd
bl IqSkillIsEnabled
cmp r0, #0
movne r4, #3
_02302A30_JP:
#else
mov r1, r0
mov r0, r5
mov r2, #0xff
bl GetDirectionalMobilityType
mov r4, r0
#endif
cmp r4, #3
bne _023014FC
ldr r4, [r5, #0xb4]
mov r0, #0x64
bl DungeonRandInt
add r1, r4, #0x200
ldrsh r2, [r1, #0x12 + OV29_02301498_OFFSET]
add r0, r2, r0
strh r0, [r1, #0x12 + OV29_02301498_OFFSET]
ldrsh r0, [r1, #0x12 + OV29_02301498_OFFSET]
cmp r0, #0xc8
mov r0, #0
strgeh r0, [r1, #0x12 + OV29_02301498_OFFSET]
movge r0, #1
ldmia sp!, {r3, r4, r5, pc}
_023014FC:
ldr r0, _0230158C ; =DUNGEON_PTR
ldr r1, _02301590 ; =SECONDARY_TERRAIN_TYPES
ldr r0, [r0]
add r0, r0, #0x4000
#ifdef JAPAN
ldrsh r0, [r0, #0x30]
#else
ldrsh r0, [r0, #0xd4]
#endif
ldrb r0, [r1, r0]
cmp r0, #1
cmpeq r4, #1
bne _02301534
mov r0, r5
mov r1, #0x14
bl IqSkillIsEnabled
cmp r0, #0
movne r4, #0
_02301534:
ldrsh r0, [r5, #4]
ldrsh r1, [r5, #6]
bl GetTile
add r0, r0, r4
ldrb r0, [r0, #8]
cmp r0, #0x54
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
cmp r0, #0x51
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
cmp r0, #0x45
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
cmp r0, #0x15
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
cmp r0, #0x55
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0230158C: .word DUNGEON_PTR
_02301590: .word SECONDARY_TERRAIN_TYPES
arm_func_end ov29_02301498
arm_func_start ov29_02301594
ov29_02301594: ; 0x02301594
stmdb sp!, {r4, lr}
mov r4, r1
mov r1, #3
bl IsTacticSet
cmp r0, #0
cmpne r4, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r4, pc}
arm_func_end ov29_02301594

460
asm/overlay_29_02301158.s Normal file
View File

@@ -0,0 +1,460 @@
.include "asm/macros.inc"
.include "overlay_29_02301158.inc"
.text
arm_func_start ov29_02301158
ov29_02301158: ; 0x02301158
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r2, [r6, #0xb4]
mov r5, r1
ldrsh r1, [r2, #2]
bl GetMobilityTypeCheckSlipAndFloating
ldr r2, _02301228 ; =DIRECTIONS_XY
mov ip, r5, lsl #2
ldr r1, _0230122C ; =DIRECTIONS_XY + 2
ldrsh r3, [r2, ip]
ldrsh lr, [r6, #4]
mov r4, r0
ldrsh r2, [r6, #6]
ldrsh r1, [r1, ip]
add r0, lr, r3
add r1, r2, r1
bl GetTile
ldrh r1, [r0]
tst r1, #0x10
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
ldr r1, [r0, #0xc]
cmp r1, #0
beq _023011E0
ldr r0, [r1]
cmp r0, #1
bne _023011E0
mov r0, r6
mov r2, #1
mov r3, #0
bl GetTreatmentBetweenMonsters
cmp r0, #1
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
_023011E0:
#ifdef JAPAN
bl IsCurrentTilesetBackground
cmp r0, #0
bne _02302654
ldr r0, [r6, #0xb4]
ldrb r0, [r0, #0xef]
cmp r0, #3
moveq r4, #3
beq _02302654
mov r0, r6
mov r1, #0x10
bl ItemIsActive__022FF898
cmp r0, #0
movne r4, #3
bne _02302654
mov r0, r6
mov r1, #0xc
bl IqSkillIsEnabled
cmp r0, #0
movne r4, #2
bne _02302654
mov r0, r6
mov r1, #0xd
bl IqSkillIsEnabled
cmp r0, #0
beq _02302654
tst r5, #1
movne r4, #2
moveq r4, #3
_02302654:
#else
mov r0, r6
mov r1, r4
and r2, r5, #0xff
bl GetDirectionalMobilityType
mov r4, r0
#endif
ldrsh r0, [r6, #4]
ldrsh r1, [r6, #6]
bl GetTile
add r0, r0, r4
ldr r1, _02301230 ; =ov29_02352780
and r2, r5, #7
ldrb r1, [r1, r2]
ldrb r0, [r0, #8]
tst r1, r0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02301228: .word DIRECTIONS_XY
_0230122C: .word DIRECTIONS_XY + 2
_02301230: .word ov29_02352780
arm_func_end ov29_02301158
arm_func_start CanAttackInDirection
CanAttackInDirection: ; 0x02301234
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r2, [r6, #0xb4]
mov r5, r1
ldrsh r1, [r2, #2]
bl GetMobilityTypeCheckSlipAndFloating
mov r4, r0
ldr r1, _023012EC ; =DIRECTIONS_XY
mov ip, r5, lsl #2
cmp r4, #1
ldr r0, _023012F0 ; =DIRECTIONS_XY + 2
ldrsh r3, [r1, ip]
ldrsh lr, [r6, #4]
ldrsh r1, [r0, ip]
ldrsh r2, [r6, #6]
add r0, lr, r3
movls r4, #2
add r1, r2, r1
bl GetTile
ldrh r1, [r0]
tst r1, #0x10
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
ldr r0, [r0, #0xc]
cmp r0, #0
ldrne r0, [r0]
cmpne r0, #1
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
#ifdef JAPAN
bl IsCurrentTilesetBackground
cmp r0, #0
bne _02302778
ldr r0, [r6, #0xb4]
ldrb r0, [r0, #0xef]
cmp r0, #3
moveq r4, #3
beq _02302778
mov r0, r6
mov r1, #0x10
bl ItemIsActive__022FF898
cmp r0, #0
movne r4, #3
bne _02302778
mov r0, r6
mov r1, #0xc
bl IqSkillIsEnabled
cmp r0, #0
movne r4, #2
bne _02302778
mov r0, r6
mov r1, #0xd
bl IqSkillIsEnabled
cmp r0, #0
beq _02302778
tst r5, #1
movne r4, #2
moveq r4, #3
_02302778:
#else
mov r0, r6
mov r1, r4
and r2, r5, #0xff
bl GetDirectionalMobilityType
mov r4, r0
#endif
ldrsh r0, [r6, #4]
ldrsh r1, [r6, #6]
bl GetTile
add r0, r0, r4
ldr r1, _023012F4 ; =ov29_02352778
and r2, r5, #7
ldrb r1, [r1, r2]
ldrb r0, [r0, #8]
tst r1, r0
#ifdef JAPAN
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
#else
moveq r0, #0
movne r0, #1
#endif
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_023012EC: .word DIRECTIONS_XY
_023012F0: .word DIRECTIONS_XY + 2
_023012F4: .word ov29_02352778
arm_func_end CanAttackInDirection
arm_func_start CanAiMonsterMoveInDirection
CanAiMonsterMoveInDirection: ; 0x023012F8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldr r3, [r8, #0xb4]
mov r7, r1
ldrsh r1, [r3, #2]
mov r6, r2
bl GetMobilityTypeCheckSlipAndFloating
mov r1, #0
strb r1, [r6]
ldr r2, _02301484 ; =DIRECTIONS_XY
mov r4, r7, lsl #2
ldr r1, _02301488 ; =DIRECTIONS_XY + 2
ldrsh r3, [r2, r4]
ldrsh ip, [r8, #4]
mov r5, r0
ldrsh r2, [r8, #6]
ldrsh r1, [r1, r4]
add r0, ip, r3
add r1, r2, r1
bl GetTile
mov r4, r0
ldrh r0, [r4]
tst r0, #0x10
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
tst r0, #0x40
beq _02301390
ldr r0, _0230148C ; =DUNGEON_PTR
ldr r0, [r0]
ldrb r0, [r0, #0x793]
cmp r0, #0
bne _02301390
mov r0, r8
mov r1, #0xf
bl IqSkillIsEnabled
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
_02301390:
ldr r0, [r4, #0x10]
cmp r0, #0
beq _023013E4
mov r0, r8
mov r1, #0xe
bl IqSkillIsEnabled
cmp r0, #0
beq _023013E4
ldr r1, [r4, #0x10]
ldr r0, [r1]
cmp r0, #2
bne _023013E4
ldrb r0, [r1, #0x20]
cmp r0, #0
bne _023013DC
ldr r0, [r8, #0xb4]
ldrb r0, [r0, #0xf1]
cmp r0, #3
bne _023013E4
_023013DC:
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_023013E4:
ldrh r0, [r4]
and r0, r0, #3
cmp r0, #2
bne _0230142C
ldr r0, _0230148C ; =DUNGEON_PTR
ldr r1, _02301490 ; =SECONDARY_TERRAIN_TYPES
ldr r0, [r0]
add r0, r0, #0x4000
#ifdef JAPAN
ldrsh r0, [r0, #0x30]
#else
ldrsh r0, [r0, #0xd4]
#endif
ldrb r0, [r1, r0]
cmp r0, #1
bne _0230142C
mov r0, r8
mov r1, #0x14
bl IqSkillIsEnabled
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
_0230142C:
#ifdef JAPAN
bl IsCurrentTilesetBackground
cmp r0, #0
bne _0230295C
ldr r0, [r8, #0xb4]
ldrb r0, [r0, #0xef]
cmp r0, #3
moveq r5, #3
beq _0230295C
mov r0, r8
mov r1, #0x10
bl ItemIsActive__022FF898
cmp r0, #0
movne r5, #3
bne _0230295C
mov r0, r8
mov r1, #0xc
bl IqSkillIsEnabled
cmp r0, #0
movne r5, #2
bne _0230295C
mov r0, r8
mov r1, #0xd
bl IqSkillIsEnabled
cmp r0, #0
beq _0230295C
tst r7, #1
movne r5, #2
moveq r5, #3
_0230295C:
#else
mov r0, r8
mov r1, r5
and r2, r7, #0xff
bl GetDirectionalMobilityType
mov r5, r0
#endif
ldrsh r0, [r8, #4]
ldrsh r1, [r8, #6]
bl GetTile
add r0, r0, r5
ldr r1, _02301494 ; =ov29_02352770
and r2, r7, #7
ldrb r1, [r1, r2]
ldrb r0, [r0, #8]
tst r1, r0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
ldr r0, [r4, #0xc]
cmp r0, #0
mov r0, #1
strneb r0, [r6]
movne r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02301484: .word DIRECTIONS_XY
_02301488: .word DIRECTIONS_XY + 2
_0230148C: .word DUNGEON_PTR
_02301490: .word SECONDARY_TERRAIN_TYPES
_02301494: .word ov29_02352770
arm_func_end CanAiMonsterMoveInDirection
arm_func_start ov29_02301498
ov29_02301498: ; 0x02301498
#ifdef JAPAN
#define OV29_02301498_OFFSET -4
#else
#define OV29_02301498_OFFSET 0
#endif
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r1, [r5, #0xb4]
ldrsh r1, [r1, #2]
bl GetMobilityTypeCheckSlipAndFloating
#ifdef JAPAN
mov r4, r0
bl IsCurrentTilesetBackground
cmp r0, #0
bne _02302A30_JP
ldr r0, [r5, #0xb4]
ldrb r0, [r0, #0xef]
cmp r0, #3
moveq r4, #3
beq _02302A30_JP
mov r0, r5
mov r1, #0x10
bl ItemIsActive__022FF898
cmp r0, #0
movne r4, #3
bne _02302A30_JP
mov r0, r5
mov r1, #0xc
bl IqSkillIsEnabled
cmp r0, #0
movne r4, #2
bne _02302A30_JP
mov r0, r5
mov r1, #0xd
bl IqSkillIsEnabled
cmp r0, #0
movne r4, #3
_02302A30_JP:
#else
mov r1, r0
mov r0, r5
mov r2, #0xff
bl GetDirectionalMobilityType
mov r4, r0
#endif
cmp r4, #3
bne _023014FC
ldr r4, [r5, #0xb4]
mov r0, #0x64
bl DungeonRandInt
add r1, r4, #0x200
ldrsh r2, [r1, #0x12 + OV29_02301498_OFFSET]
add r0, r2, r0
strh r0, [r1, #0x12 + OV29_02301498_OFFSET]
ldrsh r0, [r1, #0x12 + OV29_02301498_OFFSET]
cmp r0, #0xc8
mov r0, #0
strgeh r0, [r1, #0x12 + OV29_02301498_OFFSET]
movge r0, #1
ldmia sp!, {r3, r4, r5, pc}
_023014FC:
ldr r0, _0230158C ; =DUNGEON_PTR
ldr r1, _02301590 ; =SECONDARY_TERRAIN_TYPES
ldr r0, [r0]
add r0, r0, #0x4000
#ifdef JAPAN
ldrsh r0, [r0, #0x30]
#else
ldrsh r0, [r0, #0xd4]
#endif
ldrb r0, [r1, r0]
cmp r0, #1
cmpeq r4, #1
bne _02301534
mov r0, r5
mov r1, #0x14
bl IqSkillIsEnabled
cmp r0, #0
movne r4, #0
_02301534:
ldrsh r0, [r5, #4]
ldrsh r1, [r5, #6]
bl GetTile
add r0, r0, r4
ldrb r0, [r0, #8]
cmp r0, #0x54
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
cmp r0, #0x51
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
cmp r0, #0x45
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
cmp r0, #0x15
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
cmp r0, #0x55
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0230158C: .word DUNGEON_PTR
_02301590: .word SECONDARY_TERRAIN_TYPES
arm_func_end ov29_02301498
arm_func_start ov29_02301594
ov29_02301594: ; 0x02301594
stmdb sp!, {r4, lr}
mov r4, r1
mov r1, #3
bl IsTacticSet
cmp r0, #0
cmpne r4, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r4, pc}
arm_func_end ov29_02301594

View File

@@ -1,26 +1,10 @@
.include "asm/macros.inc"
.include "overlay_29_023016A8.inc"
.include "overlay_29_023016D8.inc"
.text
arm_func_start ShouldMonsterRunAwayVariation
ShouldMonsterRunAwayVariation: ; 0x023016A8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl ShouldMonsterRunAway
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, r5
mov r1, r4
bl ov29_023016D8
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ShouldMonsterRunAwayVariation
arm_func_start ov29_023016D8
ov29_023016D8: ; 0x023016D8
arm_func_start DisplayRunAwayIfTriggered
DisplayRunAwayIfTriggered: ; 0x023016D8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r4, [r6, #0xb4]
@@ -51,8 +35,8 @@ ov29_023016D8: ; 0x023016D8
cmpne r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r6
bl ov29_022E62A8
bl PlayEffectAnimation0x29
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02301758: .word 0x000003E7
arm_func_end ov29_023016D8
arm_func_end DisplayRunAwayIfTriggered

View File

@@ -86,7 +86,7 @@ _0230F22C:
beq _0230F624
mov r0, r8
mov r1, #1
bl ShouldMonsterRunAwayVariation
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
beq _0230F274
mov r1, r4

View File

@@ -3892,747 +3892,3 @@ AreLateGameTrapsEnabled: ; 0x02344148
.align 2, 0
_0234415C: .word ov10_022C6C75
arm_func_end AreLateGameTrapsEnabled
arm_func_start AreMovesEnabled
AreMovesEnabled: ; 0x02344160
mov r1, #0xc
mul r1, r0, r1
ldr r0, _02344174 ; =ov10_022C6C76
ldrb r0, [r0, r1]
bx lr
.align 2, 0
_02344174: .word ov10_022C6C76
arm_func_end AreMovesEnabled
arm_func_start IsRoomIlluminated
IsRoomIlluminated: ; 0x02344178
mov r1, #0xc
mul r1, r0, r1
ldr r0, _0234418C ; =ov10_022C6C74
ldrb r0, [r0, r1]
bx lr
.align 2, 0
_0234418C: .word ov10_022C6C74
arm_func_end IsRoomIlluminated
arm_func_start GetMatchingMonsterId
GetMatchingMonsterId: ; 0x02344190
stmdb sp!, {r4, lr}
cmp r0, #0
ldrne r2, _023442A4 ; =0x00000483
mov r4, #0
cmpne r0, r2
beq _0234429C
add r1, r2, #1
cmp r0, r1
bne _023441C0
bl GetMissionTargetEnemy
mov r4, r0
b _0234429C
_023441C0:
add r1, r2, #2
cmp r0, r1
bne _023441DC
mov r0, r4
bl GetMissionEnemyMinionGroup
mov r4, r0
b _0234429C
_023441DC:
add r1, r2, #3
cmp r0, r1
bne _023441F4
bl GetMissionTargetEnemy
mov r4, r0
b _0234429C
_023441F4:
add r1, r2, #4
cmp r0, r1
bne _02344210
mov r0, r4
bl GetMissionEnemyMinionGroup
mov r4, r0
b _0234429C
_02344210:
add r1, r2, #5
cmp r0, r1
bne _0234422C
mov r0, #1
bl GetMissionEnemyMinionGroup
mov r4, r0
b _0234429C
_0234422C:
sub r1, r2, #0x274
cmp r0, r1
bne _02344254
mov r0, r4
mov r1, #0x5d
bl LoadScriptVariableValue
tst r0, #0xff
ldrne r4, _023442A8 ; =0x00000467
ldreq r4, _023442AC ; =0x0000020F
b _0234429C
_02344254:
rsb r1, r2, #0x690
cmp r0, r1
bne _02344298
ldr r0, _023442B0 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, #0x700
ldrsb r1, [r0, #0x98]
cmp r1, #0
bne _02344288
ldrsh r0, [r0, #0x4c]
bl GetDungeonMode
cmp r0, #1
moveq r4, #1
_02344288:
cmp r4, #0
movne r4, #0x228
ldreq r4, _023442B4 ; =0x0000020D
b _0234429C
_02344298:
mov r4, r0
_0234429C:
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_023442A4: .word 0x00000483
_023442A8: .word 0x00000467
_023442AC: .word 0x0000020F
_023442B0: .word DUNGEON_PTR
_023442B4: .word 0x0000020D
arm_func_end GetMatchingMonsterId
arm_func_start ov29_023442B8
ov29_023442B8: ; 0x023442B8
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r2, r4
mov r0, #0
b _023442DC
_023442CC:
add r0, r0, #1
mov r0, r0, lsl #0x10
add r2, r2, #2
mov r0, r0, asr #0x10
_023442DC:
ldrsh r1, [r2]
cmp r1, #0
bne _023442CC
bl DungeonRandInt
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
mov r0, r5, lsl #1
ldrsh r0, [r4, r0]
cmp r0, #0
moveq r0, #0x49
ldmeqia sp!, {r3, r4, r5, pc}
ldr r1, _023443B0 ; =0x00000579
cmp r0, r1
ldmltia sp!, {r3, r4, r5, pc}
add r1, r1, #3
cmp r0, r1
ldmgtia sp!, {r3, r4, r5, pc}
bl sub_02056880
bl GetActiveTeamMember
mov r1, r5, lsl #1
ldrsh r3, [r4, r1]
ldr r2, _023443B0 ; =0x00000579
mov r4, r0
cmp r3, r2
mov r1, #0
bne _02344354
ldrsh r0, [r4, #0xc]
bl GetExclusiveItem
mov r1, r0
b _02344390
_02344354:
add r0, r2, #1
cmp r3, r0
bne _02344374
ldrsh r0, [r4, #0xc]
mov r1, #1
bl GetExclusiveItem
mov r1, r0
b _02344390
_02344374:
add r0, r2, #2
cmp r3, r0
bne _02344390
ldrsh r0, [r4, #0xc]
mov r1, #2
bl GetExclusiveItem
mov r1, r0
_02344390:
cmp r1, #0
bne _023443A8
ldrsh r0, [r4, #0xc]
mov r1, #3
bl GetExclusiveItem
mov r1, r0
_023443A8:
mov r0, r1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_023443B0: .word 0x00000579
arm_func_end ov29_023442B8
arm_func_start GenerateItemExplicit
GenerateItemExplicit: ; 0x023443B4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r1
mov r7, r0
mov r0, r6
mov r5, r2
mov r4, r3
bl GetItemCategoryVeneer
cmp r0, #6
bne _02344400
cmp r5, #0
mov r0, r7
mov r1, r6
ble _023443F8
mov r2, #0
bl InitStandardItem
strh r5, [r7, #2]
b _02344420
_023443F8:
bl GenerateCleanItem
b _02344420
_02344400:
mov r0, r7
mov r1, r6
mov r2, #0
bl InitStandardItem
cmp r5, #0
strgth r5, [r7, #2]
movle r0, #0
strleh r0, [r7, #2]
_02344420:
ldrb r0, [r7]
orr r0, r0, r4
strb r0, [r7]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end GenerateItemExplicit
arm_func_start GenerateAndSpawnItem
GenerateAndSpawnItem: ; 0x02344430
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
ldrb ip, [sp, #0x1c]
mov r5, r0
mov r4, r3
strh r1, [sp]
strh r2, [sp, #2]
cmp ip, #0
beq _0234448C
bl IsItemInBag
cmp r0, #0
add r0, sp, #4
beq _02344478
ldr r3, [sp, #0x18]
mov r2, r4
mov r1, #0x49
bl GenerateItemExplicit
b _023444A0
_02344478:
ldr r3, [sp, #0x18]
mov r1, r5
mov r2, r4
bl GenerateItemExplicit
b _023444A0
_0234448C:
ldr r3, [sp, #0x18]
add r0, sp, #4
mov r1, r5
mov r2, r4
bl GenerateItemExplicit
_023444A0:
add r0, sp, #0
add r1, sp, #4
mov r2, #1
bl SpawnItem
ldr r0, _023444D0 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, #0x3f00
#ifdef JAPAN
ldrsh r1, [r0, #0x1e]
add r1, r1, #1
strh r1, [r0, #0x1e]
#else
ldrsh r1, [r0, #0xc2]
add r1, r1, #1
strh r1, [r0, #0xc2]
#endif
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
.align 2, 0
_023444D0: .word DUNGEON_PTR
arm_func_end GenerateAndSpawnItem
arm_func_start ov29_023444D4
ov29_023444D4: ; 0x023444D4
stmdb sp!, {r3, lr}
ldr r0, _02344508 ; =DUNGEON_PTR
mov r1, #1
ldr r0, [r0]
add r0, r0, #0x7e
add r0, r0, #0x700
bl MemZero
bl IsSecretBazaar
cmp r0, #0
ldmeqia sp!, {r3, pc}
mov r0, #0
bl ov29_022F07D8
ldmia sp!, {r3, pc}
.align 2, 0
_02344508: .word DUNGEON_PTR
arm_func_end ov29_023444D4
arm_func_start IsHiddenStairsFloor
IsHiddenStairsFloor: ; 0x0234450C
stmdb sp!, {r3, lr}
bl IsSecretBazaar
cmp r0, #0
bne _02344528
bl IsSecretRoom
cmp r0, #0
beq _02344530
_02344528:
mov r0, #1
ldmia sp!, {r3, pc}
_02344530:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsHiddenStairsFloor
arm_func_start IsSecretBazaarVeneer
IsSecretBazaarVeneer: ; 0x02344538
ldr ip, _02344540 ; =IsSecretBazaar
bx ip
.align 2, 0
_02344540: .word IsSecretBazaar
arm_func_end IsSecretBazaarVeneer
arm_func_start ov29_02344544
ov29_02344544: ; 0x02344544
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r5, r0
mov r4, r1
bl EntityIsValid__02344AF8
cmp r0, #0
beq _02344A58
mov r0, r4
bl EntityIsValid__02344AF8
cmp r0, #0
beq _02344A58
ldr r6, [r4, #0xb4]
mov r0, #1
bl ov29_022EFB20
mov r0, r5
mov r1, r4
mov r2, #1
bl ov29_022F05B4
ldrb r0, [r6, #0xbc]
sub r0, r0, #0x10
cmp r0, #4
addls pc, pc, r0, lsl #2
b _02344A34
_023445A0: ; jump table
b _023445B4 ; case 0
b _023445E0 ; case 1
b _0234471C ; case 2
b _0234485C ; case 3
b _02344950 ; case 4
_023445B4:
ldr r2, _02344A60 ; =ov29_0237CFFC
mov r3, #0
mov r0, r4
mov r1, r5
str r3, [r2]
bl ov29_022F0654
ldr r0, _02344A64 ; =0x00000F32
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023445E0:
ldr r2, _02344A60 ; =ov29_0237CFFC
mov r3, #1
mov r0, r4
mov r1, r5
str r3, [r2]
bl ov29_022F0654
ldr r0, _02344A68 ; =DUNGEON_PTR
ldr r0, [r0]
ldrb r0, [r0, #0x77e]
cmp r0, #0
beq _02344620
ldr r0, _02344A6C ; =0x00000F4C
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344620:
mov r0, #0
mov r1, #0x64
bl ov29_0234B09C
ldr r0, _02344A70 ; =0x00000F4A
mov r1, r4
mov r2, #0
bl ov29_022F0604
ldr r1, _02344A74 ; =ov29_02353798
ldr r0, _02344A78 ; =0x00000F4B
ldr r3, [r1, #4]
mov r1, r4
mov r2, #0
bl ov29_022F062C
cmp r0, #0
bne _02344670
ldr r0, _02344A7C ; =0x00000F4D
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344670:
bl GetMoneyCarried
cmp r0, #0x64
bge _02344690
ldr r0, _02344A80 ; =0x00000F4E
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344690:
mov r0, #0x64
bl ov29_022F07BC
ldr r0, _02344A84 ; =0x00000F4F
mov r1, r4
mov r2, #0
bl ov29_022F0604
bl ov29_022F05E4
mov r0, #4
mov r1, #0x4000
mov r2, #0
bl StartFadeDungeonWrapper
mov r0, #0
bl ov29_0234C738
mov r0, #4
mov r1, #0x4000
mov r2, #0
bl StartFadeDungeonWrapper
mov r0, #0
bl ov29_0234C738
mov r0, r4
mov r1, #0
ldr r2, _02344A88 ; =0x000001A7
bl ov29_022F067C
bl ov29_022F05E4
ldr r0, _02344A8C ; =0x00000F51
bl ov29_022F0780
mov r3, #1
ldr r1, _02344A68 ; =DUNGEON_PTR
#ifdef JAPAN
ldr r0, _02345E54 ; =0x000008C7
#else
mov r0, #0xf50
#endif
ldr r2, [r1]
mov r1, r4
strb r3, [r2, #0x77e]
mov r2, #0
bl ov29_022F0604
b _02344A34
_0234471C:
ldr r2, _02344A60 ; =ov29_0237CFFC
mov r3, #2
mov r0, r4
mov r1, r5
str r3, [r2]
bl ov29_022F0654
mov r0, #0
mov r1, #0x64
bl ov29_0234B09C
ldr r0, _02344A90 ; =0x00000F33
mov r1, r4
mov r2, #0
bl ov29_022F0604
ldr r0, _02344A94 ; =0x00000F34
mov r1, r4
mov r2, #0
ldr r3, _02344A74 ; =ov29_02353798
ldr r3, [r3, #8]
bl ov29_022F062C
cmp r0, #0
bne _02344784
ldr r0, _02344A98 ; =0x00000F35
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344784:
bl IsBagFull
cmp r0, #0
beq _023447A4
ldr r0, _02344A9C ; =0x00000F37
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023447A4:
bl GetMoneyCarried
cmp r0, #0x64
bge _023447C4
ldr r0, _02344AA0 ; =0x00000F36
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023447C4:
mov r0, #0x64
bl ov29_022F07BC
ldr r0, _02344AA4 ; =0x00000F38
mov r1, r4
mov r2, #0
bl ov29_022F0604
bl ov29_022F05E4
mov r0, #0x64
bl DungeonRandInt
cmp r0, #0x32
movlt r6, #0x46
blt _023447FC
bl ov29_022E7BB8
mov r6, r0
_023447FC:
mov r1, r5
mov r0, #1
mov r2, #0
bl SubstitutePlaceholderStringTags
mov r1, r6
mov r0, #0
bl ov29_02344B9C
add r0, sp, #0
mov r1, r6
mov r2, #2
bl GenerateStandardItem
add r0, sp, #0
bl ov29_02345004
ldr r0, _02344AA8 ; =0x00000F3A
bl ov29_022F0780
ldr r0, _02344AAC ; =0x00000F3B
bl ov29_022F0780
ldr r0, _02344AB0 ; =0x00000F3C
bl ov29_022F0780
#ifdef JAPAN
mov r0, #0x8b0
#else
ldr r0, _02344AB4 ; =0x00000F39
#endif
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_0234485C:
ldr r2, _02344A60 ; =ov29_0237CFFC
mov r3, #3
mov r0, r4
mov r1, r5
str r3, [r2]
bl ov29_022F0654
mov r0, #0
mov r1, #0x64
bl ov29_0234B09C
ldr r0, _02344AB8 ; =0x00000F54
mov r1, r4
mov r2, #0
bl ov29_022F0604
ldr r0, _02344ABC ; =0x00000F55
mov r1, r4
mov r2, #0
ldr r3, _02344A74 ; =ov29_02353798
ldr r3, [r3, #0xc]
bl ov29_022F062C
cmp r0, #0
bne _023448C4
ldr r0, _02344AC0 ; =0x00000F56
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023448C4:
bl CountStickyItemsInBag
cmp r0, #0
bne _023448E4
ldr r0, _02344AC4 ; =0x00000F58
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023448E4:
bl GetMoneyCarried
cmp r0, #0x64
bge _02344904
ldr r0, _02344AC8 ; =0x00000F57
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344904:
mov r0, #0x64
bl ov29_022F07BC
#ifdef JAPAN
mov r1, r4
mov r0, #0x8d0
#else
ldr r0, _02344ACC ; =0x00000F59
mov r1, r4
#endif
mov r2, #0
bl ov29_022F0604
bl ov29_022F05E4
ldr r2, _02344AD0 ; =0x000001A6
mov r0, r4
mov r1, r5
bl ov29_022F067C
bl ov29_022F05E4
ldr r0, _02344AD4 ; =0x00000F5D
bl ov29_022F0780
ldr r0, _02344AD8 ; =0x00000F5A
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344950:
ldr r2, _02344A60 ; =ov29_0237CFFC
mov r3, #4
mov r0, r4
mov r1, r5
str r3, [r2]
bl ov29_022F0654
mov r0, #0
mov r1, #0x64
bl ov29_0234B09C
ldr r0, _02344ADC ; =0x00000F3F
mov r1, r4
mov r2, #0
bl ov29_022F0604
#ifdef JAPAN
ldr r0, _02345EA0 ; =0x000008B7
#else
mov r0, #0xf40
#endif
mov r1, r4
mov r2, #0
ldr r3, _02344A74 ; =ov29_02353798
ldr r3, [r3, #0x10]
bl ov29_022F062C
cmp r0, #0
bne _023449B8
ldr r0, _02344AE0 ; =0x00000F41
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023449B8:
bl GetMoneyCarried
cmp r0, #0x64
mov r2, #0
bge _023449D8
ldr r0, _02344AE4 ; =0x00000F42
mov r1, r4
bl ov29_022F0604
b _02344A34
_023449D8:
ldr r1, _02344A74 ; =ov29_02353798
ldr r0, _02344AE8 ; =0x00000F43
ldr r3, [r1, #0x14]
mov r1, r4
bl ov29_022F0618
cmp r0, #0
bne _02344A08
ldr r0, _02344AEC ; =0x00000F44
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344A08:
mov r0, #0x64
bl ov29_022F07BC
ldr r0, _02344AF0 ; =0x00000F45
mov r1, r4
mov r2, #0
bl ov29_022F0604
bl ov29_022F05E4
ldr r2, _02344AF4 ; =0x000001A5
mov r0, r4
mov r1, r5
bl ov29_022F067C
_02344A34:
mov r0, #1
bl ov29_0234B1A4
mov r0, r5
mov r1, r4
mov r2, #0
bl ov29_022F05B4
mov r0, #0
bl ov29_022EFB84
bl ov29_022F0848
_02344A58:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
#ifdef JAPAN
#define OV29_02344544_OFFSET -0x689
#else
#define OV29_02344544_OFFSET 0
#endif
_02344A60: .word ov29_0237CFFC
_02344A64: .word 0x00000F32 + OV29_02344544_OFFSET
_02344A68: .word DUNGEON_PTR
_02344A6C: .word 0x00000F4C + OV29_02344544_OFFSET
_02344A70: .word 0x00000F4A + OV29_02344544_OFFSET
_02344A74: .word ov29_02353798
_02344A78: .word 0x00000F4B + OV29_02344544_OFFSET
_02344A7C: .word 0x00000F4D + OV29_02344544_OFFSET
_02344A80: .word 0x00000F4E + OV29_02344544_OFFSET
_02344A84: .word 0x00000F4F + OV29_02344544_OFFSET
_02344A88: .word 0x000001A7
_02344A8C: .word 0x00000F51 + OV29_02344544_OFFSET
#ifdef JAPAN
_02345E54: .word 0x000008C7
#endif
_02344A90: .word 0x00000F33 + OV29_02344544_OFFSET
_02344A94: .word 0x00000F34 + OV29_02344544_OFFSET
_02344A98: .word 0x00000F35 + OV29_02344544_OFFSET
_02344A9C: .word 0x00000F37 + OV29_02344544_OFFSET
_02344AA0: .word 0x00000F36 + OV29_02344544_OFFSET
_02344AA4: .word 0x00000F38 + OV29_02344544_OFFSET
_02344AA8: .word 0x00000F3A + OV29_02344544_OFFSET
_02344AAC: .word 0x00000F3B + OV29_02344544_OFFSET
_02344AB0: .word 0x00000F3C + OV29_02344544_OFFSET
#ifndef JAPAN
_02344AB4: .word 0x00000F39
#endif
_02344AB8: .word 0x00000F54 + OV29_02344544_OFFSET
_02344ABC: .word 0x00000F55 + OV29_02344544_OFFSET
_02344AC0: .word 0x00000F56 + OV29_02344544_OFFSET
_02344AC4: .word 0x00000F58 + OV29_02344544_OFFSET
_02344AC8: .word 0x00000F57 + OV29_02344544_OFFSET
#ifndef JAPAN
_02344ACC: .word 0x00000F59
#endif
_02344AD0: .word 0x000001A6
_02344AD4: .word 0x00000F5D + OV29_02344544_OFFSET
_02344AD8: .word 0x00000F5A + OV29_02344544_OFFSET
_02344ADC: .word 0x00000F3F + OV29_02344544_OFFSET
#ifdef JAPAN
_02345EA0: .word 0x000008B7
#endif
_02344AE0: .word 0x00000F41 + OV29_02344544_OFFSET
_02344AE4: .word 0x00000F42 + OV29_02344544_OFFSET
_02344AE8: .word 0x00000F43 + OV29_02344544_OFFSET
_02344AEC: .word 0x00000F44 + OV29_02344544_OFFSET
_02344AF0: .word 0x00000F45 + OV29_02344544_OFFSET
_02344AF4: .word 0x000001A5
arm_func_end ov29_02344544

737
asm/overlay_29_02344178.s Normal file
View File

@@ -0,0 +1,737 @@
.include "asm/macros.inc"
.include "overlay_29_02344178.inc"
.text
arm_func_start IsRoomIlluminated
IsRoomIlluminated: ; 0x02344178
mov r1, #0xc
mul r1, r0, r1
ldr r0, _0234418C ; =ov10_022C6C74
ldrb r0, [r0, r1]
bx lr
.align 2, 0
_0234418C: .word ov10_022C6C74
arm_func_end IsRoomIlluminated
arm_func_start GetMatchingMonsterId
GetMatchingMonsterId: ; 0x02344190
stmdb sp!, {r4, lr}
cmp r0, #0
ldrne r2, _023442A4 ; =0x00000483
mov r4, #0
cmpne r0, r2
beq _0234429C
add r1, r2, #1
cmp r0, r1
bne _023441C0
bl GetMissionTargetEnemy
mov r4, r0
b _0234429C
_023441C0:
add r1, r2, #2
cmp r0, r1
bne _023441DC
mov r0, r4
bl GetMissionEnemyMinionGroup
mov r4, r0
b _0234429C
_023441DC:
add r1, r2, #3
cmp r0, r1
bne _023441F4
bl GetMissionTargetEnemy
mov r4, r0
b _0234429C
_023441F4:
add r1, r2, #4
cmp r0, r1
bne _02344210
mov r0, r4
bl GetMissionEnemyMinionGroup
mov r4, r0
b _0234429C
_02344210:
add r1, r2, #5
cmp r0, r1
bne _0234422C
mov r0, #1
bl GetMissionEnemyMinionGroup
mov r4, r0
b _0234429C
_0234422C:
sub r1, r2, #0x274
cmp r0, r1
bne _02344254
mov r0, r4
mov r1, #0x5d
bl LoadScriptVariableValue
tst r0, #0xff
ldrne r4, _023442A8 ; =0x00000467
ldreq r4, _023442AC ; =0x0000020F
b _0234429C
_02344254:
rsb r1, r2, #0x690
cmp r0, r1
bne _02344298
ldr r0, _023442B0 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, #0x700
ldrsb r1, [r0, #0x98]
cmp r1, #0
bne _02344288
ldrsh r0, [r0, #0x4c]
bl GetDungeonMode
cmp r0, #1
moveq r4, #1
_02344288:
cmp r4, #0
movne r4, #0x228
ldreq r4, _023442B4 ; =0x0000020D
b _0234429C
_02344298:
mov r4, r0
_0234429C:
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_023442A4: .word 0x00000483
_023442A8: .word 0x00000467
_023442AC: .word 0x0000020F
_023442B0: .word DUNGEON_PTR
_023442B4: .word 0x0000020D
arm_func_end GetMatchingMonsterId
arm_func_start ov29_023442B8
ov29_023442B8: ; 0x023442B8
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r2, r4
mov r0, #0
b _023442DC
_023442CC:
add r0, r0, #1
mov r0, r0, lsl #0x10
add r2, r2, #2
mov r0, r0, asr #0x10
_023442DC:
ldrsh r1, [r2]
cmp r1, #0
bne _023442CC
bl DungeonRandInt
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
mov r0, r5, lsl #1
ldrsh r0, [r4, r0]
cmp r0, #0
moveq r0, #0x49
ldmeqia sp!, {r3, r4, r5, pc}
ldr r1, _023443B0 ; =0x00000579
cmp r0, r1
ldmltia sp!, {r3, r4, r5, pc}
add r1, r1, #3
cmp r0, r1
ldmgtia sp!, {r3, r4, r5, pc}
bl sub_02056880
bl GetActiveTeamMember
mov r1, r5, lsl #1
ldrsh r3, [r4, r1]
ldr r2, _023443B0 ; =0x00000579
mov r4, r0
cmp r3, r2
mov r1, #0
bne _02344354
ldrsh r0, [r4, #0xc]
bl GetExclusiveItem
mov r1, r0
b _02344390
_02344354:
add r0, r2, #1
cmp r3, r0
bne _02344374
ldrsh r0, [r4, #0xc]
mov r1, #1
bl GetExclusiveItem
mov r1, r0
b _02344390
_02344374:
add r0, r2, #2
cmp r3, r0
bne _02344390
ldrsh r0, [r4, #0xc]
mov r1, #2
bl GetExclusiveItem
mov r1, r0
_02344390:
cmp r1, #0
bne _023443A8
ldrsh r0, [r4, #0xc]
mov r1, #3
bl GetExclusiveItem
mov r1, r0
_023443A8:
mov r0, r1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_023443B0: .word 0x00000579
arm_func_end ov29_023442B8
arm_func_start GenerateItemExplicit
GenerateItemExplicit: ; 0x023443B4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r1
mov r7, r0
mov r0, r6
mov r5, r2
mov r4, r3
bl GetItemCategoryVeneer
cmp r0, #6
bne _02344400
cmp r5, #0
mov r0, r7
mov r1, r6
ble _023443F8
mov r2, #0
bl InitStandardItem
strh r5, [r7, #2]
b _02344420
_023443F8:
bl GenerateCleanItem
b _02344420
_02344400:
mov r0, r7
mov r1, r6
mov r2, #0
bl InitStandardItem
cmp r5, #0
strgth r5, [r7, #2]
movle r0, #0
strleh r0, [r7, #2]
_02344420:
ldrb r0, [r7]
orr r0, r0, r4
strb r0, [r7]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end GenerateItemExplicit
arm_func_start GenerateAndSpawnItem
GenerateAndSpawnItem: ; 0x02344430
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
ldrb ip, [sp, #0x1c]
mov r5, r0
mov r4, r3
strh r1, [sp]
strh r2, [sp, #2]
cmp ip, #0
beq _0234448C
bl IsItemInBag
cmp r0, #0
add r0, sp, #4
beq _02344478
ldr r3, [sp, #0x18]
mov r2, r4
mov r1, #0x49
bl GenerateItemExplicit
b _023444A0
_02344478:
ldr r3, [sp, #0x18]
mov r1, r5
mov r2, r4
bl GenerateItemExplicit
b _023444A0
_0234448C:
ldr r3, [sp, #0x18]
add r0, sp, #4
mov r1, r5
mov r2, r4
bl GenerateItemExplicit
_023444A0:
add r0, sp, #0
add r1, sp, #4
mov r2, #1
bl SpawnItem
ldr r0, _023444D0 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, #0x3f00
#ifdef JAPAN
ldrsh r1, [r0, #0x1e]
add r1, r1, #1
strh r1, [r0, #0x1e]
#else
ldrsh r1, [r0, #0xc2]
add r1, r1, #1
strh r1, [r0, #0xc2]
#endif
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
.align 2, 0
_023444D0: .word DUNGEON_PTR
arm_func_end GenerateAndSpawnItem
arm_func_start ov29_023444D4
ov29_023444D4: ; 0x023444D4
stmdb sp!, {r3, lr}
ldr r0, _02344508 ; =DUNGEON_PTR
mov r1, #1
ldr r0, [r0]
add r0, r0, #0x7e
add r0, r0, #0x700
bl MemZero
bl IsSecretBazaar
cmp r0, #0
ldmeqia sp!, {r3, pc}
mov r0, #0
bl ov29_022F07D8
ldmia sp!, {r3, pc}
.align 2, 0
_02344508: .word DUNGEON_PTR
arm_func_end ov29_023444D4
arm_func_start IsHiddenStairsFloor
IsHiddenStairsFloor: ; 0x0234450C
stmdb sp!, {r3, lr}
bl IsSecretBazaar
cmp r0, #0
bne _02344528
bl IsSecretRoom
cmp r0, #0
beq _02344530
_02344528:
mov r0, #1
ldmia sp!, {r3, pc}
_02344530:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsHiddenStairsFloor
arm_func_start IsSecretBazaarVeneer
IsSecretBazaarVeneer: ; 0x02344538
ldr ip, _02344540 ; =IsSecretBazaar
bx ip
.align 2, 0
_02344540: .word IsSecretBazaar
arm_func_end IsSecretBazaarVeneer
arm_func_start ov29_02344544
ov29_02344544: ; 0x02344544
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r5, r0
mov r4, r1
bl EntityIsValid__02344AF8
cmp r0, #0
beq _02344A58
mov r0, r4
bl EntityIsValid__02344AF8
cmp r0, #0
beq _02344A58
ldr r6, [r4, #0xb4]
mov r0, #1
bl ov29_022EFB20
mov r0, r5
mov r1, r4
mov r2, #1
bl ov29_022F05B4
ldrb r0, [r6, #0xbc]
sub r0, r0, #0x10
cmp r0, #4
addls pc, pc, r0, lsl #2
b _02344A34
_023445A0: ; jump table
b _023445B4 ; case 0
b _023445E0 ; case 1
b _0234471C ; case 2
b _0234485C ; case 3
b _02344950 ; case 4
_023445B4:
ldr r2, _02344A60 ; =ov29_0237CFFC
mov r3, #0
mov r0, r4
mov r1, r5
str r3, [r2]
bl ov29_022F0654
ldr r0, _02344A64 ; =0x00000F32
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023445E0:
ldr r2, _02344A60 ; =ov29_0237CFFC
mov r3, #1
mov r0, r4
mov r1, r5
str r3, [r2]
bl ov29_022F0654
ldr r0, _02344A68 ; =DUNGEON_PTR
ldr r0, [r0]
ldrb r0, [r0, #0x77e]
cmp r0, #0
beq _02344620
ldr r0, _02344A6C ; =0x00000F4C
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344620:
mov r0, #0
mov r1, #0x64
bl ov29_0234B09C
ldr r0, _02344A70 ; =0x00000F4A
mov r1, r4
mov r2, #0
bl ov29_022F0604
ldr r1, _02344A74 ; =ov29_02353798
ldr r0, _02344A78 ; =0x00000F4B
ldr r3, [r1, #4]
mov r1, r4
mov r2, #0
bl ov29_022F062C
cmp r0, #0
bne _02344670
ldr r0, _02344A7C ; =0x00000F4D
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344670:
bl GetMoneyCarried
cmp r0, #0x64
bge _02344690
ldr r0, _02344A80 ; =0x00000F4E
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344690:
mov r0, #0x64
bl ov29_022F07BC
ldr r0, _02344A84 ; =0x00000F4F
mov r1, r4
mov r2, #0
bl ov29_022F0604
bl ov29_022F05E4
mov r0, #4
mov r1, #0x4000
mov r2, #0
bl StartFadeDungeonWrapper
mov r0, #0
bl ov29_0234C738
mov r0, #4
mov r1, #0x4000
mov r2, #0
bl StartFadeDungeonWrapper
mov r0, #0
bl ov29_0234C738
mov r0, r4
mov r1, #0
ldr r2, _02344A88 ; =0x000001A7
bl ov29_022F067C
bl ov29_022F05E4
ldr r0, _02344A8C ; =0x00000F51
bl ov29_022F0780
mov r3, #1
ldr r1, _02344A68 ; =DUNGEON_PTR
#ifdef JAPAN
ldr r0, _02345E54 ; =0x000008C7
#else
mov r0, #0xf50
#endif
ldr r2, [r1]
mov r1, r4
strb r3, [r2, #0x77e]
mov r2, #0
bl ov29_022F0604
b _02344A34
_0234471C:
ldr r2, _02344A60 ; =ov29_0237CFFC
mov r3, #2
mov r0, r4
mov r1, r5
str r3, [r2]
bl ov29_022F0654
mov r0, #0
mov r1, #0x64
bl ov29_0234B09C
ldr r0, _02344A90 ; =0x00000F33
mov r1, r4
mov r2, #0
bl ov29_022F0604
ldr r0, _02344A94 ; =0x00000F34
mov r1, r4
mov r2, #0
ldr r3, _02344A74 ; =ov29_02353798
ldr r3, [r3, #8]
bl ov29_022F062C
cmp r0, #0
bne _02344784
ldr r0, _02344A98 ; =0x00000F35
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344784:
bl IsBagFull
cmp r0, #0
beq _023447A4
ldr r0, _02344A9C ; =0x00000F37
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023447A4:
bl GetMoneyCarried
cmp r0, #0x64
bge _023447C4
ldr r0, _02344AA0 ; =0x00000F36
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023447C4:
mov r0, #0x64
bl ov29_022F07BC
ldr r0, _02344AA4 ; =0x00000F38
mov r1, r4
mov r2, #0
bl ov29_022F0604
bl ov29_022F05E4
mov r0, #0x64
bl DungeonRandInt
cmp r0, #0x32
movlt r6, #0x46
blt _023447FC
bl ov29_022E7BB8
mov r6, r0
_023447FC:
mov r1, r5
mov r0, #1
mov r2, #0
bl SubstitutePlaceholderStringTags
mov r1, r6
mov r0, #0
bl ov29_02344B9C
add r0, sp, #0
mov r1, r6
mov r2, #2
bl GenerateStandardItem
add r0, sp, #0
bl ov29_02345004
ldr r0, _02344AA8 ; =0x00000F3A
bl ov29_022F0780
ldr r0, _02344AAC ; =0x00000F3B
bl ov29_022F0780
ldr r0, _02344AB0 ; =0x00000F3C
bl ov29_022F0780
#ifdef JAPAN
mov r0, #0x8b0
#else
ldr r0, _02344AB4 ; =0x00000F39
#endif
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_0234485C:
ldr r2, _02344A60 ; =ov29_0237CFFC
mov r3, #3
mov r0, r4
mov r1, r5
str r3, [r2]
bl ov29_022F0654
mov r0, #0
mov r1, #0x64
bl ov29_0234B09C
ldr r0, _02344AB8 ; =0x00000F54
mov r1, r4
mov r2, #0
bl ov29_022F0604
ldr r0, _02344ABC ; =0x00000F55
mov r1, r4
mov r2, #0
ldr r3, _02344A74 ; =ov29_02353798
ldr r3, [r3, #0xc]
bl ov29_022F062C
cmp r0, #0
bne _023448C4
ldr r0, _02344AC0 ; =0x00000F56
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023448C4:
bl CountStickyItemsInBag
cmp r0, #0
bne _023448E4
ldr r0, _02344AC4 ; =0x00000F58
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023448E4:
bl GetMoneyCarried
cmp r0, #0x64
bge _02344904
ldr r0, _02344AC8 ; =0x00000F57
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344904:
mov r0, #0x64
bl ov29_022F07BC
#ifdef JAPAN
mov r1, r4
mov r0, #0x8d0
#else
ldr r0, _02344ACC ; =0x00000F59
mov r1, r4
#endif
mov r2, #0
bl ov29_022F0604
bl ov29_022F05E4
ldr r2, _02344AD0 ; =0x000001A6
mov r0, r4
mov r1, r5
bl ov29_022F067C
bl ov29_022F05E4
ldr r0, _02344AD4 ; =0x00000F5D
bl ov29_022F0780
ldr r0, _02344AD8 ; =0x00000F5A
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344950:
ldr r2, _02344A60 ; =ov29_0237CFFC
mov r3, #4
mov r0, r4
mov r1, r5
str r3, [r2]
bl ov29_022F0654
mov r0, #0
mov r1, #0x64
bl ov29_0234B09C
ldr r0, _02344ADC ; =0x00000F3F
mov r1, r4
mov r2, #0
bl ov29_022F0604
#ifdef JAPAN
ldr r0, _02345EA0 ; =0x000008B7
#else
mov r0, #0xf40
#endif
mov r1, r4
mov r2, #0
ldr r3, _02344A74 ; =ov29_02353798
ldr r3, [r3, #0x10]
bl ov29_022F062C
cmp r0, #0
bne _023449B8
ldr r0, _02344AE0 ; =0x00000F41
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_023449B8:
bl GetMoneyCarried
cmp r0, #0x64
mov r2, #0
bge _023449D8
ldr r0, _02344AE4 ; =0x00000F42
mov r1, r4
bl ov29_022F0604
b _02344A34
_023449D8:
ldr r1, _02344A74 ; =ov29_02353798
ldr r0, _02344AE8 ; =0x00000F43
ldr r3, [r1, #0x14]
mov r1, r4
bl ov29_022F0618
cmp r0, #0
bne _02344A08
ldr r0, _02344AEC ; =0x00000F44
mov r1, r4
mov r2, #0
bl ov29_022F0604
b _02344A34
_02344A08:
mov r0, #0x64
bl ov29_022F07BC
ldr r0, _02344AF0 ; =0x00000F45
mov r1, r4
mov r2, #0
bl ov29_022F0604
bl ov29_022F05E4
ldr r2, _02344AF4 ; =0x000001A5
mov r0, r4
mov r1, r5
bl ov29_022F067C
_02344A34:
mov r0, #1
bl ov29_0234B1A4
mov r0, r5
mov r1, r4
mov r2, #0
bl ov29_022F05B4
mov r0, #0
bl ov29_022EFB84
bl ov29_022F0848
_02344A58:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
#ifdef JAPAN
#define OV29_02344544_OFFSET -0x689
#else
#define OV29_02344544_OFFSET 0
#endif
_02344A60: .word ov29_0237CFFC
_02344A64: .word 0x00000F32 + OV29_02344544_OFFSET
_02344A68: .word DUNGEON_PTR
_02344A6C: .word 0x00000F4C + OV29_02344544_OFFSET
_02344A70: .word 0x00000F4A + OV29_02344544_OFFSET
_02344A74: .word ov29_02353798
_02344A78: .word 0x00000F4B + OV29_02344544_OFFSET
_02344A7C: .word 0x00000F4D + OV29_02344544_OFFSET
_02344A80: .word 0x00000F4E + OV29_02344544_OFFSET
_02344A84: .word 0x00000F4F + OV29_02344544_OFFSET
_02344A88: .word 0x000001A7
_02344A8C: .word 0x00000F51 + OV29_02344544_OFFSET
#ifdef JAPAN
_02345E54: .word 0x000008C7
#endif
_02344A90: .word 0x00000F33 + OV29_02344544_OFFSET
_02344A94: .word 0x00000F34 + OV29_02344544_OFFSET
_02344A98: .word 0x00000F35 + OV29_02344544_OFFSET
_02344A9C: .word 0x00000F37 + OV29_02344544_OFFSET
_02344AA0: .word 0x00000F36 + OV29_02344544_OFFSET
_02344AA4: .word 0x00000F38 + OV29_02344544_OFFSET
_02344AA8: .word 0x00000F3A + OV29_02344544_OFFSET
_02344AAC: .word 0x00000F3B + OV29_02344544_OFFSET
_02344AB0: .word 0x00000F3C + OV29_02344544_OFFSET
#ifndef JAPAN
_02344AB4: .word 0x00000F39
#endif
_02344AB8: .word 0x00000F54 + OV29_02344544_OFFSET
_02344ABC: .word 0x00000F55 + OV29_02344544_OFFSET
_02344AC0: .word 0x00000F56 + OV29_02344544_OFFSET
_02344AC4: .word 0x00000F58 + OV29_02344544_OFFSET
_02344AC8: .word 0x00000F57 + OV29_02344544_OFFSET
#ifndef JAPAN
_02344ACC: .word 0x00000F59
#endif
_02344AD0: .word 0x000001A6
_02344AD4: .word 0x00000F5D + OV29_02344544_OFFSET
_02344AD8: .word 0x00000F5A + OV29_02344544_OFFSET
_02344ADC: .word 0x00000F3F + OV29_02344544_OFFSET
#ifdef JAPAN
_02345EA0: .word 0x000008B7
#endif
_02344AE0: .word 0x00000F41 + OV29_02344544_OFFSET
_02344AE4: .word 0x00000F42 + OV29_02344544_OFFSET
_02344AE8: .word 0x00000F43 + OV29_02344544_OFFSET
_02344AEC: .word 0x00000F44 + OV29_02344544_OFFSET
_02344AF0: .word 0x00000F45 + OV29_02344544_OFFSET
_02344AF4: .word 0x000001A5
arm_func_end ov29_02344544

View File

@@ -469,7 +469,7 @@ TryLeaderItemPickUp: ; 0x02345058
b _02345508
_02345108:
mov r1, #1
bl ShouldMonsterRunAwayVariation
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
beq _0234515C
cmp sb, #0

View File

@@ -6,5 +6,10 @@
// Checks if a monster should run away from other monsters
// return: True if the monster should run away, false otherwise
bool8 ShouldMonsterRunAway(struct entity *monster);
// Calls ShouldMonsterRunAway and returns its result. It also calls DisplayRunAwayIfTriggered if the result was true.
// monster: Entity pointer
// show_run_away_effect: Boolean value. If true, display a visual "poof" effect if the Run Away ability caused the monster to run away.
// return: Result of the call to ShouldMonsterRunAway
bool8 ShouldMonsterRunAwayAndShowEffect(struct entity *monster, bool8 show_run_away_effect);
#endif //PMDSKY_DUNGEON_AI_TARGETING_H

View File

@@ -3,6 +3,11 @@
#include "dungeon_mode.h"
// Returns false if the entity has any of these conditions: sleep, nightmare, napping, frozen, wrapped/wrapping, petrified, cringe, paused, infatuated, paralysis. Also returns false if ShouldMonsterRunAway returns true.
// pokemon: Entity pointer
// skip_sleep: If true, ignore sleep conditions (sleep, nightmare, napping) when checking if the entity cannot attack.
// return: bool
bool8 MonsterCannotAttack(struct entity *pokemon, bool8 skip_sleep);
// Checks if the given monster can move in the specified direction
// Returns false if any monster is standing on the target tile
bool8 CanMonsterMoveInDirection(struct entity *monster, u16 direction);

34
include/fixed_room_data.h Normal file
View File

@@ -0,0 +1,34 @@
#ifndef PMDSKY_FIXED_ROOM_DATA_H
#define PMDSKY_FIXED_ROOM_DATA_H
#include "dungeon_mode.h"
// Entry in the fixed room properties table
struct fixed_room_properties_entry {
// 0x0: If MUSIC_NONE_0x0, the music will be taken from the mappa file for the floor
u16 music;
u8 field_0x2;
u8 field_0x3;
bool8 illuminated; // 0x4: Floor will be fully illuminated (darkness level 0)
bool8 enable_lategame_traps; // 0x5: Allows Summon, Pitfall, and Pokémon traps to work
// 0x6: Monsters can use moves on this floor. Does not affect the regular attack.
// If false, NPCs won't use any moves at all (not even the regular attack)
bool8 moves_enabled;
bool8 orbs_allowed; // 0x7: Orbs can be used. Ignored for IDs past FIXED_SEALED_CHAMBER.
// 0x8: Warping, being blown away, and leaping are allowed on this floor.
// Ignored for IDs past FIXED_SEALED_CHAMBER.
bool8 tile_jumps_allowed;
// 0x9: Trawl Orbs work on this floor. Ignored for IDs past FIXED_SEALED_CHAMBER.
bool8 trawl_orbs_allowed;
// 0xA: This floor will be exited immediately after all enemies have been defeated.
// If false, the fixed room must have stairs placed somewhere to be considered valid.
bool8 exit_after_enemies_defeated;
u8 field_0xb;
};
extern struct fixed_room_properties_entry FIXED_ROOM_PROPERTIES_TABLE[];
// Checks if moves (excluding the regular attack) are usable in the given fixed room.
bool8 AreMovesEnabled(enum fixed_room_id fixed_room_id);
#endif //PMDSKY_FIXED_ROOM_DATA_H

6
include/main_0207B860.h Normal file
View File

@@ -0,0 +1,6 @@
#ifndef PMDSKY_MAIN_0207B860_H
#define PMDSKY_MAIN_0207B860_H
void sub_0207B860();
#endif //PMDSKY_MAIN_0207B860_H

View File

@@ -0,0 +1,9 @@
#ifndef PMDSKY_OVERLAY_29_02301118_H
#define PMDSKY_OVERLAY_29_02301118_H
#include "dungeon_mode.h"
// True if the given monster is cornered (it can't move in any direction)
bool8 IsMonsterCornered(struct entity *monster);
#endif //PMDSKY_OVERLAY_29_02301118_H

View File

@@ -64,6 +64,8 @@ Static main
Object asm/main_02075600.o
Object src/main_0207B848.o
Object asm/main_0207B854.o
Object src/main_0207B860.o
Object asm/main_0207B87C.o
Object src/main_0207BC20.o
Object asm/main_0207BC3C.o
Object src/main_0207F3E4.o
@@ -344,8 +346,10 @@ Overlay OVY_29
Object asm/overlay_29_02300D00.o
Object src/dungeon_logic_3.o
Object asm/overlay_29_02300FCC.o
Object src/overlay_29_02301118.o
Object asm/overlay_29_02301158.o
Object src/dungeon_ai_targeting.o
Object asm/overlay_29_023016A8.o
Object asm/overlay_29_023016D8.o
Object src/dungeon_ai_targeting_1.o
Object asm/overlay_29_rodata_023527C0.o
Object asm/overlay_29_023018AC.o
@@ -471,6 +475,8 @@ Overlay OVY_29
Object asm/overlay_29_0233861C.o
Object src/overlay_29_02340CAC.o
Object asm/overlay_29_02340CE4.o
Object src/fixed_room_data.o
Object asm/overlay_29_02344178.o
Object src/overlay_29_02344AF8.o
Object asm/overlay_29_02344B1C.o
Object src/overlay_29_02345698.o

View File

@@ -2,10 +2,14 @@
#include "dg_random.h"
#include "direction.h"
#include "dungeon_action.h"
#include "dungeon_ai_targeting.h"
#include "dungeon_logic_3.h"
#include "dungeon_parameters.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_pokemon_attributes_1.h"
#include "dungeon_util_static.h"
#include "fixed_room_data.h"
#include "overlay_29_02301118.h"
#define REGULAR_ATTACK_INDEX 4
@@ -13,17 +17,13 @@ const s16 AI_REGULAR_ATTACK_WEIGHTS[5] = { 100, 20, 30, 40, 50 };
extern struct dungeon *DUNGEON_PTR[];
extern bool8 AreMovesEnabled(enum fixed_room_id fixed_room_id);
extern bool8 MonsterCannotAttack(struct entity *pokemon, bool8 skip_sleep);
extern u32 ShouldMonsterRunAwayVariation(struct entity *monster, u32 param_2);
extern bool8 IsMonsterCornered(struct entity *monster);
extern bool8 IsChargingTwoTurnMove(struct entity *user, struct move *move);
extern void SetActionUseMoveAi(struct action_data *monster_action, s16 move_index, u8 direction);
extern void UpdateAiTargetPos(struct entity *monster);
extern void InitMove(struct move *move, enum move_id move_id);
extern u32 AiConsiderMove(struct ai_possible_move *ai_possible_move, struct entity *monster, struct move *move);
extern bool8 ov29_02338350(struct entity *monster);
extern bool8 TargetRegularAttack(struct entity *pokemon, u32 *target_dir, bool8 check_petrified);
extern bool8 TargetRegularAttack(struct entity *pokemon, u32 *target_dir, bool8 skip_petrified);
extern void SetActionRegularAttack(struct action_data *monster_action, u8 direction);
extern void SetActionStruggle(struct action_data *monster_action, u8 direction);
extern bool8 CanAiUseMove(struct entity *monster, u32 move_index, bool8 extra_checks);
@@ -38,7 +38,7 @@ void ChooseAiMove(struct entity *monster)
if (!AreMovesEnabled(DUNGEON_PTR[0]->gen_info.fixed_room_id) ||
MonsterCannotAttack(monster, FALSE) ||
ShouldMonsterRunAwayVariation(monster, TRUE) ||
ShouldMonsterRunAwayAndShowEffect(monster, TRUE) ||
GetEntInfo(monster)->monster_behavior == BEHAVIOR_FLEEING_OUTLAW && IsMonsterCornered(monster) ||
IsTacticSet(monster, TACTIC_KEEP_YOUR_DISTANCE) ||
(pokemon_info->cringe_class_status.cringe == STATUS_CRINGE_CONFUSED && DungeonRandOutcome__022EAB20(AI_CONFUSED_NO_ATTACK_CHANCE)))

View File

@@ -4,6 +4,8 @@
#include "dungeon_util_static.h"
#include "overlay_29_023000E4.h"
extern void DisplayRunAwayIfTriggered(struct entity *monster, bool8 show_run_away_effect);
bool8 ShouldMonsterRunAway(struct entity *monster)
{
if (!EntityIsValid__023000E4(monster))
@@ -42,3 +44,14 @@ bool8 ShouldMonsterRunAway(struct entity *monster)
}
return FALSE;
}
bool8 ShouldMonsterRunAwayAndShowEffect(struct entity *monster, bool8 show_run_away_effect)
{
if (ShouldMonsterRunAway(monster))
{
DisplayRunAwayIfTriggered(monster, show_run_away_effect);
return TRUE;
}
return FALSE;
}

View File

@@ -1,4 +1,5 @@
#include "dungeon_logic_3.h"
#include "dungeon_ai_targeting.h"
#include "dungeon_map_access.h"
#include "dungeon_mobility.h"
#include "dungeon_pokemon_attributes_1.h"
@@ -9,6 +10,48 @@
static const u8 DIRECTIONAL_BIT_MASKS[] = {0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80};
bool8 MonsterCannotAttack(struct entity *pokemon, bool8 skip_sleep)
{
struct monster *pokemon_info = GetEntInfo(pokemon);
if (!skip_sleep)
{
if (pokemon_info->sleep_class_status.sleep != STATUS_SLEEP_SLEEPLESS &&
pokemon_info->sleep_class_status.sleep != STATUS_SLEEP_YAWNING &&
pokemon_info->sleep_class_status.sleep != STATUS_SLEEP_NONE)
return TRUE;
}
if (pokemon_info->frozen_class_status.freeze == STATUS_FROZEN_FROZEN)
return TRUE;
if (pokemon_info->frozen_class_status.freeze == STATUS_FROZEN_WRAP)
return TRUE;
if (pokemon_info->frozen_class_status.freeze == STATUS_FROZEN_WRAPPED)
return TRUE;
if (pokemon_info->frozen_class_status.freeze == STATUS_FROZEN_PETRIFIED)
return TRUE;
if (pokemon_info->cringe_class_status.cringe == STATUS_CRINGE_CRINGE)
return TRUE;
if (pokemon_info->cringe_class_status.cringe == STATUS_CRINGE_PAUSED)
return TRUE;
if (pokemon_info->cringe_class_status.cringe == STATUS_CRINGE_INFATUATED)
return TRUE;
if (pokemon_info->burn_class_status.burn == STATUS_BURN_PARALYSIS)
return TRUE;
if (ShouldMonsterRunAway(pokemon))
return TRUE;
return FALSE;
}
bool8 CanMonsterMoveInDirection(struct entity *monster, u16 direction)
{
struct monster *monster_info = GetEntInfo(monster);

6
src/fixed_room_data.c Normal file
View File

@@ -0,0 +1,6 @@
#include "fixed_room_data.h"
bool8 AreMovesEnabled(enum fixed_room_id fixed_room_id)
{
return FIXED_ROOM_PROPERTIES_TABLE[fixed_room_id].moves_enabled;
}

10
src/main_0207B860.c Normal file
View File

@@ -0,0 +1,10 @@
#include "main_0207B860.h"
void SVC_WaitByLoop(s32);
void sub_02078900(s32, s32);
void sub_0207B860()
{
SVC_WaitByLoop(1);
sub_02078900(1, 1);
}

16
src/overlay_29_02301118.c Normal file
View File

@@ -0,0 +1,16 @@
#include "overlay_29_02301118.h"
#include "direction.h"
extern bool8 ov29_02301158(struct entity *monster, s32 direction);
bool8 IsMonsterCornered(struct entity *monster)
{
for (u8 i = 0; i < NUM_DIRECTIONS; i++)
{
if (ov29_02301158(monster, i))
{
return TRUE;
}
}
return FALSE;
}

View File

@@ -1,4 +1,5 @@
#include "overlay_31_02382820.h"
#include "dungeon_ai_targeting.h"
#include "number_util.h"
extern struct dungeon* DUNGEON_PTR[];
@@ -36,7 +37,6 @@ extern u8* AllocateTemp1024ByteBufferFromPool(void);
extern struct Window* GetWindow(struct Window*);
extern s32 sub_020265A8(u8*); // Measures the text's width in pixels
extern u32 ShouldMonsterRunAwayVariation(struct entity*, u32);
extern u32 Arm9LoadUnkFieldNa0x2029EC8(u32, u8*);
extern u8 CreateParentMenuFromStringIds(u32*, u32, struct struct_2*, u32*);
extern u8 CreateTextBox(u32*, void (*fun)(struct Window*));
@@ -44,7 +44,6 @@ extern u32 IsParentMenuActive(s8);
extern u32 sub_0202AB80(s8);
extern void Arm9StoreUnkFieldNa0x2029ED8(u32, u8);
extern u32 GetPressedButtons(u32, u16*);
extern u32 ShouldMonsterRunAwayVariation(struct entity*, u32);
extern void sub_0202AB94(s8, u32);
extern void sub_0202B030(s8);
extern void sub_0202F954(s8);
@@ -173,7 +172,7 @@ u32 ov31_02382B54(void)
OVERLAY31_UNKNOWN_POINTER__NA_238A260[0]->b[i] = 0;
}
leader = GetLeader();
if (ShouldMonsterRunAwayVariation(leader, 1)) {
if (ShouldMonsterRunAwayAndShowEffect(leader, 1)) {
OVERLAY31_UNKNOWN_POINTER__NA_238A260[0]->b[0] = 3;
OVERLAY31_UNKNOWN_POINTER__NA_238A260[0]->b[1] = 3;
OVERLAY31_UNKNOWN_POINTER__NA_238A260[0]->b[2] = 3;
@@ -201,7 +200,7 @@ u32 ov31_02382B54(void)
struct entity* leader = GetLeader();
if (ShouldMonsterRunAwayVariation(leader, 1))
if (ShouldMonsterRunAwayAndShowEffect(leader, 1))
break;
sub_0202AB94(OVERLAY31_UNKNOWN_POINTER__NA_238A260[0]->f[0], 0);