Decomped AreMovesEnabled

This commit is contained in:
AnonymousRandomPerson
2025-06-16 19:17:24 -05:00
parent 118f3c51f1
commit 7c2e5f5f0b
9 changed files with 852 additions and 812 deletions

View File

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

View File

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

View File

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

View File

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

737
asm/overlay_29_02344178.s Normal file
View File

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

34
include/fixed_room_data.h Normal file
View File

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

View File

@@ -473,6 +473,8 @@ Overlay OVY_29
Object asm/overlay_29_0233861C.o
Object src/overlay_29_02340CAC.o
Object asm/overlay_29_02340CE4.o
Object src/fixed_room_data.o
Object asm/overlay_29_02344178.o
Object src/overlay_29_02344AF8.o
Object asm/overlay_29_02344B1C.o
Object src/overlay_29_02345698.o

View File

@@ -6,6 +6,7 @@
#include "dungeon_pokemon_attributes.h"
#include "dungeon_pokemon_attributes_1.h"
#include "dungeon_util_static.h"
#include "fixed_room_data.h"
#define REGULAR_ATTACK_INDEX 4
@@ -13,7 +14,6 @@ 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);

6
src/fixed_room_data.c Normal file
View File

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