mirror of
https://github.com/pret/pmd-sky.git
synced 2026-10-02 07:08:09 -05:00
@@ -81,7 +81,7 @@
|
||||
.public SetMonsterActionFields
|
||||
.public ShouldMonsterFollowLeader
|
||||
.public ShouldMonsterHeadToStairs
|
||||
.public ShouldMonsterRunAwayVariation
|
||||
.public ShouldMonsterRunAwayAndShowEffect
|
||||
.public sub_0201BD50
|
||||
.public sub_0201BD80
|
||||
.public sub_0202760C
|
||||
|
||||
@@ -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
|
||||
|
||||
21
asm/include/main_0207B87C.inc
Normal file
21
asm/include/main_0207B87C.inc
Normal 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
|
||||
@@ -177,7 +177,7 @@
|
||||
.public SetLeaderActionFields
|
||||
.public SetMonsterActionFields
|
||||
.public ShouldMonsterRunAway
|
||||
.public ShouldMonsterRunAwayVariation
|
||||
.public ShouldMonsterRunAwayAndShowEffect
|
||||
.public SpawnItem
|
||||
.public sub_02001AB0
|
||||
.public sub_02006B70
|
||||
|
||||
@@ -37,6 +37,6 @@
|
||||
.public RemoveGroundItem
|
||||
.public RemoveUsedItem
|
||||
.public ShouldDisplayEntityWrapper
|
||||
.public ShouldMonsterRunAwayVariation
|
||||
.public ShouldMonsterRunAwayAndShowEffect
|
||||
.public SpawnItem
|
||||
.public TryTriggerMonsterHouse
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
#pragma once
|
||||
.public CheckVariousStatuses
|
||||
.public ShouldMonsterRunAway
|
||||
|
||||
@@ -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
|
||||
|
||||
16
asm/include/overlay_29_02301158.inc
Normal file
16
asm/include/overlay_29_02301158.inc
Normal 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
|
||||
@@ -1,5 +1,4 @@
|
||||
#pragma once
|
||||
.public AbilityIsActive
|
||||
.public ov29_022E62A8
|
||||
.public ShouldMonsterRunAway
|
||||
.public UpdateStateFlags
|
||||
.public PlayEffectAnimation0x29
|
||||
@@ -33,7 +33,7 @@
|
||||
.public ov29_02348DD8
|
||||
.public ov29_02348ECC
|
||||
.public RemoveGroundItem
|
||||
.public ShouldMonsterRunAwayVariation
|
||||
.public ShouldMonsterRunAwayAndShowEffect
|
||||
.public sub_0200D8AC
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public UseThrowableItem
|
||||
|
||||
@@ -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
|
||||
|
||||
47
asm/include/overlay_29_02344178.inc
Normal file
47
asm/include/overlay_29_02344178.inc
Normal 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
|
||||
@@ -44,7 +44,7 @@
|
||||
.public RemoveEmptyItemsInBag
|
||||
.public RemoveEquivItemNoHole
|
||||
.public RemoveGroundItem
|
||||
.public ShouldMonsterRunAwayVariation
|
||||
.public ShouldMonsterRunAwayAndShowEffect
|
||||
.public SpawnItemEntity
|
||||
.public sub_0200D8AC
|
||||
.public sub_02024FE8
|
||||
|
||||
14
asm/itcm.s
14
asm/itcm.s
@@ -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]
|
||||
|
||||
@@ -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
292
asm/main_0207B87C.s
Normal 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
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
460
asm/overlay_29_02301158.s
Normal 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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
737
asm/overlay_29_02344178.s
Normal 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
|
||||
@@ -469,7 +469,7 @@ TryLeaderItemPickUp: ; 0x02345058
|
||||
b _02345508
|
||||
_02345108:
|
||||
mov r1, #1
|
||||
bl ShouldMonsterRunAwayVariation
|
||||
bl ShouldMonsterRunAwayAndShowEffect
|
||||
cmp r0, #0
|
||||
beq _0234515C
|
||||
cmp sb, #0
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
34
include/fixed_room_data.h
Normal 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
6
include/main_0207B860.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef PMDSKY_MAIN_0207B860_H
|
||||
#define PMDSKY_MAIN_0207B860_H
|
||||
|
||||
void sub_0207B860();
|
||||
|
||||
#endif //PMDSKY_MAIN_0207B860_H
|
||||
9
include/overlay_29_02301118.h
Normal file
9
include/overlay_29_02301118.h
Normal 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
|
||||
8
main.lsf
8
main.lsf
@@ -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
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
6
src/fixed_room_data.c
Normal 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
10
src/main_0207B860.c
Normal 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
16
src/overlay_29_02301118.c
Normal 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;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user