mirror of
https://github.com/pret/pmd-sky.git
synced 2026-04-24 14:59:13 -05:00
Decomp IsOutlaw
This commit is contained in:
parent
3dcfe927f9
commit
3302e441f3
|
|
@ -1,14 +1,4 @@
|
|||
#pragma once
|
||||
.public BoostIQ
|
||||
.public DUNGEON_PTR
|
||||
.public EntityIsValid__022F0590
|
||||
.public ov29_022DE5F0
|
||||
.public ov29_022EA370
|
||||
.public ov29_0234B1A4
|
||||
.public ov29_0234BA54
|
||||
.public ov29_0234D630
|
||||
.public ov29_0234D8A0
|
||||
.public ov29_023535A4
|
||||
.public ov29_0237C9A0
|
||||
.public sub_0201D198
|
||||
.public TeamMemberHasItemActive
|
||||
|
|
|
|||
12
asm/include/overlay_29_022EFB04.inc
Normal file
12
asm/include/overlay_29_022EFB04.inc
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#pragma once
|
||||
.public DUNGEON_PTR
|
||||
.public EntityIsValid__022F0590
|
||||
.public ov29_022DE5F0
|
||||
.public ov29_022EA370
|
||||
.public ov29_0234B1A4
|
||||
.public ov29_0234BA54
|
||||
.public ov29_0234D630
|
||||
.public ov29_0234D8A0
|
||||
.public ov29_023535A4
|
||||
.public ov29_0237C9A0
|
||||
.public sub_0201D198
|
||||
|
|
@ -49,7 +49,7 @@
|
|||
.public ov29_022EA370
|
||||
.public ov29_022ECDE4
|
||||
.public ov29_022EF7C4
|
||||
.public ov29_022EFAE8
|
||||
.public IsLoneOutlaw
|
||||
.public ov29_022F9B8C
|
||||
.public ov29_022FE048
|
||||
.public ov29_022FFB90
|
||||
|
|
|
|||
|
|
@ -1,50 +1,11 @@
|
|||
#pragma once
|
||||
.public _s32_div_f
|
||||
.public CopySpawnEntriesMaster
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRngSetPrimary
|
||||
.public DungeonRngSetSecondary
|
||||
.public EnableAllLearnableIqSkills
|
||||
.public EntityIsValid__022F7364
|
||||
.public EntityIsValid__022FC99C
|
||||
.public FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE
|
||||
.public GetActiveTeamMember
|
||||
.public GetBodySize
|
||||
.public GetDefensiveStatAtLevel
|
||||
.public GetExp
|
||||
.public GetExplorerMazeMonster
|
||||
.public GetIdleAnimationId
|
||||
.public GetMaxHpAtLevel
|
||||
.public GetMonsterIdFromSpawnEntry
|
||||
.public GetMonsterLevelFromSpawnEntry
|
||||
.public GetMonsterMoves
|
||||
.public GetOffensiveStatAtLevel
|
||||
.public GetOutlawSpawnData
|
||||
.public GetTile
|
||||
.public GetTileSafe
|
||||
.public GetTurnLimit
|
||||
.public GroundToDungeonMoveset
|
||||
.public InitAnimationControlWithSet__0201C0CC
|
||||
.public InitMoveCheckId
|
||||
.public InitTeamMember
|
||||
.public IQ_SKILLS
|
||||
.public IsCurrentMissionType
|
||||
.public IsDestinationFloorWithFixedRoom
|
||||
.public IsDestinationFloorWithMonster
|
||||
.public IsFullFloorFixedRoom
|
||||
.public IsInvalidSpawnTile
|
||||
.public IsMonster__022F9720
|
||||
.public IsSecretBazaarNpcBehavior
|
||||
.public JoinedAtRangeCheck2Veneer
|
||||
.public LoadWazaP2
|
||||
.public ov29_022DDA54
|
||||
.public ov29_022EFAE8
|
||||
.public ov29_022FB83C
|
||||
.public ov29_022FCD04
|
||||
.public ov29_023021F0
|
||||
.public ov29_02304830
|
||||
.public ov29_02351E28
|
||||
.public SetMonsterLevelAndId
|
||||
.public SetSpriteIdForAnimationControl
|
||||
.public sub_0200F9B4
|
||||
.public UnloadCurrentWazaP
|
||||
.public ov29_022DDA54
|
||||
.public ov29_02304830
|
||||
|
|
|
|||
40
asm/include/overlay_29_022FBDF0.inc
Normal file
40
asm/include/overlay_29_022FBDF0.inc
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
#pragma once
|
||||
.public CopySpawnEntriesMaster
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRngSetPrimary
|
||||
.public DungeonRngSetSecondary
|
||||
.public EnableAllLearnableIqSkills
|
||||
.public EntityIsValid__022FC99C
|
||||
.public FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE
|
||||
.public GetActiveTeamMember
|
||||
.public GetDefensiveStatAtLevel
|
||||
.public GetExp
|
||||
.public GetExplorerMazeMonster
|
||||
.public GetMaxHpAtLevel
|
||||
.public GetMonsterIdFromSpawnEntry
|
||||
.public GetMonsterLevelFromSpawnEntry
|
||||
.public GetMonsterMoves
|
||||
.public GetOffensiveStatAtLevel
|
||||
.public GetOutlawSpawnData
|
||||
.public GetTile
|
||||
.public GetTurnLimit
|
||||
.public GroundToDungeonMoveset
|
||||
.public IQ_SKILLS
|
||||
.public InitMoveCheckId
|
||||
.public InitTeamMember
|
||||
.public IsCurrentMissionType
|
||||
.public IsDestinationFloorWithFixedRoom
|
||||
.public IsDestinationFloorWithMonster
|
||||
.public IsFullFloorFixedRoom
|
||||
.public IsInvalidSpawnTile
|
||||
.public IsSecretBazaarNpcBehavior
|
||||
.public JoinedAtRangeCheck2Veneer
|
||||
.public LoadWazaP2
|
||||
.public SetMonsterLevelAndId
|
||||
.public UnloadCurrentWazaP
|
||||
.public _s32_div_f
|
||||
.public ov29_022FB83C
|
||||
.public ov29_022FCD04
|
||||
.public ov29_023021F0
|
||||
.public ov29_02351E28
|
||||
.public sub_0200F9B4
|
||||
|
|
@ -75,7 +75,7 @@
|
|||
.public ov29_022E2018
|
||||
.public ov29_022E2DFC
|
||||
.public ov29_022E6644
|
||||
.public ov29_022EFAE8
|
||||
.public IsLoneOutlaw
|
||||
.public ov29_022F9EA0
|
||||
.public ov29_022FA1D8
|
||||
.public ov29_022FB83C
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@
|
|||
.public IqSkillFlagTest
|
||||
.public MIN_IQ_EXCLUSIVE_MOVE_USER
|
||||
.public MIN_IQ_ITEM_MASTER
|
||||
.public ov29_022FBDE0
|
||||
.public IsLoneOutlawVeneer
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@
|
|||
.public ov29_022F9AF4
|
||||
.public ov29_022FB98C
|
||||
.public ov29_022FBD24
|
||||
.public ov29_022FBDE0
|
||||
.public IsLoneOutlawVeneer
|
||||
.public ov29_02303E0C
|
||||
.public ov29_02304830
|
||||
.public ov29_02304A48
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@
|
|||
.public ov29_022E6784
|
||||
.public ov29_022E8104
|
||||
.public ov29_022E81F8
|
||||
.public ov29_022FBDE0
|
||||
.public IsLoneOutlawVeneer
|
||||
.public ov29_022FBDF0
|
||||
.public ov29_022FD7A0
|
||||
.public ov29_0230D874
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
.public ov29_022E3580
|
||||
.public ov29_022E7F7C
|
||||
.public ov29_022EA408
|
||||
.public ov29_022EFAE8
|
||||
.public IsLoneOutlaw
|
||||
.public ov29_0234217C
|
||||
.public ov29_02342594
|
||||
.public ov29_023427E4
|
||||
|
|
|
|||
|
|
@ -49,777 +49,3 @@ _022EFAE4: .word 0x0002862C
|
|||
_022EFAE4: .word 0x000286D0
|
||||
#endif
|
||||
arm_func_end TryActivateIqBooster
|
||||
|
||||
arm_func_start ov29_022EFAE8
|
||||
ov29_022EFAE8: ; 0x022EFAE8
|
||||
add r0, r0, #0xff
|
||||
and r0, r0, #0xff
|
||||
cmp r0, #3
|
||||
movls r0, #1
|
||||
movhi r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
arm_func_end ov29_022EFAE8
|
||||
|
||||
arm_func_start IsSecretBazaarNpcBehavior
|
||||
IsSecretBazaarNpcBehavior: ; 0x022EFB04
|
||||
add r0, r0, #0xf0
|
||||
and r0, r0, #0xff
|
||||
cmp r0, #4
|
||||
movls r0, #1
|
||||
movhi r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
arm_func_end IsSecretBazaarNpcBehavior
|
||||
|
||||
arm_func_start ov29_022EFB20
|
||||
ov29_022EFB20: ; 0x022EFB20
|
||||
stmdb sp!, {r3, lr}
|
||||
cmp r0, #0
|
||||
beq _022EFB48
|
||||
mov r0, #0xa
|
||||
bl ov29_0234BA54
|
||||
mov r0, #0
|
||||
bl ov29_0234B1A4
|
||||
mov r0, #0xa
|
||||
mov r1, #0x62
|
||||
bl ov29_022EA370
|
||||
_022EFB48:
|
||||
bl ov29_0234D630
|
||||
ldr r1, _022EFB7C ; =ov29_023535A4
|
||||
mvn r2, #1
|
||||
mov r0, #1
|
||||
strb r2, [r1]
|
||||
bl ov29_022DE5F0
|
||||
ldr r1, _022EFB80 ; =ov29_0237C9A0
|
||||
strh r0, [r1, #2]
|
||||
mov r0, #0
|
||||
bl ov29_022DE5F0
|
||||
ldr r1, _022EFB80 ; =ov29_0237C9A0
|
||||
strh r0, [r1]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022EFB7C: .word ov29_023535A4
|
||||
_022EFB80: .word ov29_0237C9A0
|
||||
arm_func_end ov29_022EFB20
|
||||
|
||||
arm_func_start ov29_022EFB84
|
||||
ov29_022EFB84: ; 0x022EFB84
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
mov r0, #0
|
||||
bl ov29_0234D8A0
|
||||
cmp r4, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
mov r0, #0xa
|
||||
mov r1, #0x62
|
||||
bl ov29_022EA370
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end ov29_022EFB84
|
||||
|
||||
arm_func_start ov29_022EFBAC
|
||||
ov29_022EFBAC: ; 0x022EFBAC
|
||||
ldr r1, _022F04E4 ; =0x000001FE
|
||||
cmp r0, r1
|
||||
bgt _022F0314
|
||||
bge _022F04C4
|
||||
cmp r0, #0x1d4
|
||||
bgt _022F024C
|
||||
bge _022F04C4
|
||||
sub r2, r1, #0x53
|
||||
cmp r0, r2
|
||||
bgt _022F01E4
|
||||
sub r1, r1, #0xe9
|
||||
subs r1, r0, r1
|
||||
addpl pc, pc, r1, lsl #2
|
||||
b _022EFE40
|
||||
_022EFBE4: ; jump table
|
||||
b _022F04C4 ; case 0
|
||||
b _022F04C4 ; case 1
|
||||
b _022F04C4 ; case 2
|
||||
b _022F04CC ; case 3
|
||||
b _022F04DC ; case 4
|
||||
b _022F04DC ; case 5
|
||||
b _022F04DC ; case 6
|
||||
b _022F04DC ; case 7
|
||||
b _022F04DC ; case 8
|
||||
b _022F04DC ; case 9
|
||||
b _022F04DC ; case 10
|
||||
b _022F04DC ; case 11
|
||||
b _022F04CC ; case 12
|
||||
b _022F04CC ; case 13
|
||||
b _022F04DC ; case 14
|
||||
b _022F04DC ; case 15
|
||||
b _022F04DC ; case 16
|
||||
b _022F04DC ; case 17
|
||||
b _022F04C4 ; case 18
|
||||
b _022F04DC ; case 19
|
||||
b _022F04C4 ; case 20
|
||||
b _022F04DC ; case 21
|
||||
b _022F04DC ; case 22
|
||||
b _022F04DC ; case 23
|
||||
b _022F04DC ; case 24
|
||||
b _022F04DC ; case 25
|
||||
b _022F04DC ; case 26
|
||||
b _022F04DC ; case 27
|
||||
b _022F04DC ; case 28
|
||||
b _022F04C4 ; case 29
|
||||
b _022F04C4 ; case 30
|
||||
b _022F04DC ; case 31
|
||||
b _022F04DC ; case 32
|
||||
b _022F04DC ; case 33
|
||||
b _022F04DC ; case 34
|
||||
b _022F04C4 ; case 35
|
||||
b _022F04DC ; case 36
|
||||
b _022F04DC ; case 37
|
||||
b _022F04DC ; case 38
|
||||
b _022F04DC ; case 39
|
||||
b _022F04DC ; case 40
|
||||
b _022F04DC ; case 41
|
||||
b _022F04C4 ; case 42
|
||||
b _022F04C4 ; case 43
|
||||
b _022F04DC ; case 44
|
||||
b _022F04DC ; case 45
|
||||
b _022F04DC ; case 46
|
||||
b _022F04DC ; case 47
|
||||
b _022F04DC ; case 48
|
||||
b _022F04DC ; case 49
|
||||
b _022F04DC ; case 50
|
||||
b _022F04DC ; case 51
|
||||
b _022F04CC ; case 52
|
||||
b _022F04DC ; case 53
|
||||
b _022F04DC ; case 54
|
||||
b _022F04DC ; case 55
|
||||
b _022F04DC ; case 56
|
||||
b _022F04DC ; case 57
|
||||
b _022F04C4 ; case 58
|
||||
b _022F04DC ; case 59
|
||||
b _022F04DC ; case 60
|
||||
b _022F04DC ; case 61
|
||||
b _022F04DC ; case 62
|
||||
b _022F04DC ; case 63
|
||||
b _022F04CC ; case 64
|
||||
b _022F04CC ; case 65
|
||||
b _022F04DC ; case 66
|
||||
b _022F04DC ; case 67
|
||||
b _022F04DC ; case 68
|
||||
b _022F04C4 ; case 69
|
||||
b _022F04C4 ; case 70
|
||||
b _022F04C4 ; case 71
|
||||
b _022F04C4 ; case 72
|
||||
b _022F04DC ; case 73
|
||||
b _022F04DC ; case 74
|
||||
b _022F04DC ; case 75
|
||||
b _022F04C4 ; case 76
|
||||
b _022F04DC ; case 77
|
||||
b _022F04DC ; case 78
|
||||
b _022F04DC ; case 79
|
||||
b _022F04CC ; case 80
|
||||
b _022F04C4 ; case 81
|
||||
b _022F04DC ; case 82
|
||||
b _022F04DC ; case 83
|
||||
b _022F04C4 ; case 84
|
||||
b _022F04CC ; case 85
|
||||
b _022F04CC ; case 86
|
||||
b _022F04DC ; case 87
|
||||
b _022F04C4 ; case 88
|
||||
b _022F04C4 ; case 89
|
||||
b _022F04C4 ; case 90
|
||||
b _022F04C4 ; case 91
|
||||
b _022F04DC ; case 92
|
||||
b _022F04DC ; case 93
|
||||
b _022F04C4 ; case 94
|
||||
b _022F04C4 ; case 95
|
||||
b _022F04DC ; case 96
|
||||
b _022F04DC ; case 97
|
||||
b _022F04DC ; case 98
|
||||
b _022F04DC ; case 99
|
||||
b _022F04C4 ; case 100
|
||||
b _022F04DC ; case 101
|
||||
b _022F04C4 ; case 102
|
||||
b _022F04C4 ; case 103
|
||||
b _022F04C4 ; case 104
|
||||
b _022F04C4 ; case 105
|
||||
b _022F04DC ; case 106
|
||||
b _022F04DC ; case 107
|
||||
b _022F04C4 ; case 108
|
||||
b _022F04DC ; case 109
|
||||
b _022F04C4 ; case 110
|
||||
b _022F04DC ; case 111
|
||||
b _022F04DC ; case 112
|
||||
b _022F04DC ; case 113
|
||||
b _022F04DC ; case 114
|
||||
b _022F04DC ; case 115
|
||||
b _022F04DC ; case 116
|
||||
b _022F04C4 ; case 117
|
||||
b _022F04CC ; case 118
|
||||
b _022F04DC ; case 119
|
||||
b _022F04DC ; case 120
|
||||
b _022F04CC ; case 121
|
||||
b _022F04C4 ; case 122
|
||||
b _022F04C4 ; case 123
|
||||
b _022F04C4 ; case 124
|
||||
b _022F04C4 ; case 125
|
||||
b _022F04DC ; case 126
|
||||
b _022F04DC ; case 127
|
||||
b _022F04CC ; case 128
|
||||
b _022F04C4 ; case 129
|
||||
b _022F04C4 ; case 130
|
||||
b _022F04DC ; case 131
|
||||
b _022F04DC ; case 132
|
||||
b _022F04C4 ; case 133
|
||||
b _022F04DC ; case 134
|
||||
b _022F04C4 ; case 135
|
||||
b _022F04C4 ; case 136
|
||||
b _022F04C4 ; case 137
|
||||
b _022F04DC ; case 138
|
||||
b _022F04C4 ; case 139
|
||||
b _022F04C4 ; case 140
|
||||
b _022F04C4 ; case 141
|
||||
b _022F04C4 ; case 142
|
||||
b _022F04C4 ; case 143
|
||||
b _022F04C4 ; case 144
|
||||
b _022F04DC ; case 145
|
||||
b _022F04DC ; case 146
|
||||
b _022F04DC ; case 147
|
||||
b _022F04CC ; case 148
|
||||
b _022F04CC ; case 149
|
||||
b _022F04CC ; case 150
|
||||
_022EFE40:
|
||||
cmp r0, #0xee
|
||||
bgt _022F0194
|
||||
subs r1, r0, #0x29
|
||||
addpl pc, pc, r1, lsl #2
|
||||
b _022F016C
|
||||
_022EFE54: ; jump table
|
||||
b _022F04C4 ; case 0
|
||||
b _022F04C4 ; case 1
|
||||
b _022F04DC ; case 2
|
||||
b _022F04DC ; case 3
|
||||
b _022F04DC ; case 4
|
||||
b _022F04DC ; case 5
|
||||
b _022F04DC ; case 6
|
||||
b _022F04DC ; case 7
|
||||
b _022F04C4 ; case 8
|
||||
b _022F04CC ; case 9
|
||||
b _022F04CC ; case 10
|
||||
b _022F04DC ; case 11
|
||||
b _022F04CC ; case 12
|
||||
b _022F04DC ; case 13
|
||||
b _022F04DC ; case 14
|
||||
b _022F04DC ; case 15
|
||||
b _022F04DC ; case 16
|
||||
b _022F04CC ; case 17
|
||||
b _022F04CC ; case 18
|
||||
b _022F04DC ; case 19
|
||||
b _022F04DC ; case 20
|
||||
b _022F04DC ; case 21
|
||||
b _022F04DC ; case 22
|
||||
b _022F04DC ; case 23
|
||||
b _022F04D4 ; case 24
|
||||
b _022F04DC ; case 25
|
||||
b _022F04DC ; case 26
|
||||
b _022F04DC ; case 27
|
||||
b _022F04DC ; case 28
|
||||
b _022F04DC ; case 29
|
||||
b _022F04DC ; case 30
|
||||
b _022F04C4 ; case 31
|
||||
b _022F04C4 ; case 32
|
||||
b _022F04C4 ; case 33
|
||||
b _022F04DC ; case 34
|
||||
b _022F04DC ; case 35
|
||||
b _022F04DC ; case 36
|
||||
b _022F04DC ; case 37
|
||||
b _022F04DC ; case 38
|
||||
b _022F04DC ; case 39
|
||||
b _022F04C4 ; case 40
|
||||
b _022F04C4 ; case 41
|
||||
b _022F04DC ; case 42
|
||||
b _022F04DC ; case 43
|
||||
b _022F04DC ; case 44
|
||||
b _022F04DC ; case 45
|
||||
b _022F04DC ; case 46
|
||||
b _022F04DC ; case 47
|
||||
b _022F04DC ; case 48
|
||||
b _022F04DC ; case 49
|
||||
b _022F04C4 ; case 50
|
||||
b _022F04C4 ; case 51
|
||||
b _022F04C4 ; case 52
|
||||
b _022F04DC ; case 53
|
||||
b _022F04DC ; case 54
|
||||
b _022F04DC ; case 55
|
||||
b _022F04DC ; case 56
|
||||
b _022F04CC ; case 57
|
||||
b _022F04CC ; case 58
|
||||
b _022F04DC ; case 59
|
||||
b _022F04DC ; case 60
|
||||
b _022F04DC ; case 61
|
||||
b _022F04DC ; case 62
|
||||
b _022F04DC ; case 63
|
||||
b _022F04DC ; case 64
|
||||
b _022F04DC ; case 65
|
||||
b _022F04DC ; case 66
|
||||
b _022F04DC ; case 67
|
||||
b _022F04C4 ; case 68
|
||||
b _022F04C4 ; case 69
|
||||
b _022F04DC ; case 70
|
||||
b _022F04DC ; case 71
|
||||
b _022F04DC ; case 72
|
||||
b _022F04DC ; case 73
|
||||
b _022F04DC ; case 74
|
||||
b _022F04C4 ; case 75
|
||||
b _022F04C4 ; case 76
|
||||
b _022F04C4 ; case 77
|
||||
b _022F04C4 ; case 78
|
||||
b _022F04DC ; case 79
|
||||
b _022F04DC ; case 80
|
||||
b _022F04DC ; case 81
|
||||
b _022F04DC ; case 82
|
||||
b _022F04DC ; case 83
|
||||
b _022F04DC ; case 84
|
||||
b _022F04DC ; case 85
|
||||
b _022F04DC ; case 86
|
||||
b _022F04DC ; case 87
|
||||
b _022F04C4 ; case 88
|
||||
b _022F04C4 ; case 89
|
||||
b _022F04DC ; case 90
|
||||
b _022F04CC ; case 91
|
||||
b _022F04C4 ; case 92
|
||||
b _022F04CC ; case 93
|
||||
b _022F04CC ; case 94
|
||||
b _022F04DC ; case 95
|
||||
b _022F04C4 ; case 96
|
||||
b _022F04DC ; case 97
|
||||
b _022F04DC ; case 98
|
||||
b _022F04DC ; case 99
|
||||
b _022F04DC ; case 100
|
||||
b _022F04C4 ; case 101
|
||||
b _022F04DC ; case 102
|
||||
b _022F04C4 ; case 103
|
||||
b _022F04C4 ; case 104
|
||||
b _022F04C4 ; case 105
|
||||
b _022F04DC ; case 106
|
||||
b _022F04DC ; case 107
|
||||
b _022F04DC ; case 108
|
||||
b _022F04C4 ; case 109
|
||||
b _022F04C4 ; case 110
|
||||
b _022F04DC ; case 111
|
||||
b _022F04DC ; case 112
|
||||
b _022F04DC ; case 113
|
||||
b _022F04DC ; case 114
|
||||
b _022F04DC ; case 115
|
||||
b _022F04DC ; case 116
|
||||
b _022F04DC ; case 117
|
||||
b _022F04DC ; case 118
|
||||
b _022F04DC ; case 119
|
||||
b _022F04CC ; case 120
|
||||
b _022F04CC ; case 121
|
||||
b _022F04CC ; case 122
|
||||
b _022F04CC ; case 123
|
||||
b _022F04C4 ; case 124
|
||||
b _022F04C4 ; case 125
|
||||
b _022F04DC ; case 126
|
||||
b _022F04DC ; case 127
|
||||
b _022F04C4 ; case 128
|
||||
b _022F04C4 ; case 129
|
||||
b _022F04C4 ; case 130
|
||||
b _022F04DC ; case 131
|
||||
b _022F04DC ; case 132
|
||||
b _022F04DC ; case 133
|
||||
b _022F04DC ; case 134
|
||||
b _022F04DC ; case 135
|
||||
b _022F04DC ; case 136
|
||||
b _022F04DC ; case 137
|
||||
b _022F04DC ; case 138
|
||||
b _022F04DC ; case 139
|
||||
b _022F04DC ; case 140
|
||||
b _022F04DC ; case 141
|
||||
b _022F04DC ; case 142
|
||||
b _022F04DC ; case 143
|
||||
b _022F04DC ; case 144
|
||||
b _022F04DC ; case 145
|
||||
b _022F04C4 ; case 146
|
||||
b _022F04C4 ; case 147
|
||||
b _022F04C4 ; case 148
|
||||
b _022F04C4 ; case 149
|
||||
b _022F04C4 ; case 150
|
||||
b _022F04DC ; case 151
|
||||
b _022F04C4 ; case 152
|
||||
b _022F04DC ; case 153
|
||||
b _022F04DC ; case 154
|
||||
b _022F04DC ; case 155
|
||||
b _022F04DC ; case 156
|
||||
b _022F04CC ; case 157
|
||||
b _022F04DC ; case 158
|
||||
b _022F04C4 ; case 159
|
||||
b _022F04C4 ; case 160
|
||||
b _022F04C4 ; case 161
|
||||
b _022F04C4 ; case 162
|
||||
b _022F04C4 ; case 163
|
||||
b _022F04C4 ; case 164
|
||||
b _022F04C4 ; case 165
|
||||
b _022F04C4 ; case 166
|
||||
b _022F04C4 ; case 167
|
||||
b _022F04C4 ; case 168
|
||||
b _022F04C4 ; case 169
|
||||
b _022F04C4 ; case 170
|
||||
b _022F04C4 ; case 171
|
||||
b _022F04C4 ; case 172
|
||||
b _022F04C4 ; case 173
|
||||
b _022F04C4 ; case 174
|
||||
b _022F04C4 ; case 175
|
||||
b _022F04C4 ; case 176
|
||||
b _022F04C4 ; case 177
|
||||
b _022F04C4 ; case 178
|
||||
b _022F04C4 ; case 179
|
||||
b _022F04C4 ; case 180
|
||||
b _022F04C4 ; case 181
|
||||
b _022F04C4 ; case 182
|
||||
b _022F04C4 ; case 183
|
||||
b _022F04C4 ; case 184
|
||||
b _022F04C4 ; case 185
|
||||
b _022F04C4 ; case 186
|
||||
b _022F04C4 ; case 187
|
||||
b _022F04DC ; case 188
|
||||
b _022F04DC ; case 189
|
||||
b _022F04DC ; case 190
|
||||
b _022F04C4 ; case 191
|
||||
b _022F04DC ; case 192
|
||||
b _022F04C4 ; case 193
|
||||
b _022F04DC ; case 194
|
||||
b _022F04DC ; case 195
|
||||
b _022F04DC ; case 196
|
||||
b _022F04C4 ; case 197
|
||||
_022F016C:
|
||||
cmp r0, #0xf
|
||||
bgt _022F0188
|
||||
cmp r0, #0xc
|
||||
blt _022F04DC
|
||||
cmpne r0, #0xf
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0188:
|
||||
cmp r0, #0x16
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0194:
|
||||
cmp r0, #0x104
|
||||
bgt _022F01D4
|
||||
subs r1, r0, #0xfa
|
||||
addpl pc, pc, r1, lsl #2
|
||||
b _022F04DC
|
||||
_022F01A8: ; jump table
|
||||
b _022F04C4 ; case 0
|
||||
b _022F04DC ; case 1
|
||||
b _022F04DC ; case 2
|
||||
b _022F04C4 ; case 3
|
||||
b _022F04CC ; case 4
|
||||
b _022F04DC ; case 5
|
||||
b _022F04DC ; case 6
|
||||
b _022F04C4 ; case 7
|
||||
b _022F04DC ; case 8
|
||||
b _022F04DC ; case 9
|
||||
b _022F04C4 ; case 10
|
||||
_022F01D4:
|
||||
ldr r1, _022F04E8 ; =0x00000112
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F01E4:
|
||||
sub r2, r1, #0x37
|
||||
cmp r0, r2
|
||||
bgt _022F0220
|
||||
bge _022F04C4
|
||||
sub r2, r1, #0x39
|
||||
cmp r0, r2
|
||||
bgt _022F0210
|
||||
sub r1, r1, #0x39
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0210:
|
||||
sub r1, r1, #0x38
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0220:
|
||||
sub r2, r1, #0x2c
|
||||
cmp r0, r2
|
||||
bgt _022F023C
|
||||
sub r1, r1, #0x2c
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F023C:
|
||||
sub r1, r1, #0x2b
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F024C:
|
||||
sub r2, r1, #0x14
|
||||
cmp r0, r2
|
||||
bgt _022F02BC
|
||||
bge _022F04CC
|
||||
sub r2, r1, #0x20
|
||||
cmp r0, r2
|
||||
bgt _022F0294
|
||||
bge _022F04C4
|
||||
sub r2, r1, #0x27
|
||||
cmp r0, r2
|
||||
bgt _022F0288
|
||||
sub r1, r1, #0x27
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0288:
|
||||
cmp r0, #0x1d8
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F0294:
|
||||
sub r2, r1, #0x1f
|
||||
cmp r0, r2
|
||||
bgt _022F02B0
|
||||
sub r1, r1, #0x1f
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F02B0:
|
||||
cmp r0, #0x1e4
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F02BC:
|
||||
sub r2, r1, #0xb
|
||||
cmp r0, r2
|
||||
bgt _022F02F8
|
||||
bge _022F04C4
|
||||
sub r2, r1, #0xd
|
||||
cmp r0, r2
|
||||
bgt _022F02E8
|
||||
sub r1, r1, #0xd
|
||||
cmp r0, r1
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F02E8:
|
||||
sub r1, r1, #0xc
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F02F8:
|
||||
cmp r0, #0x1f4
|
||||
bgt _022F0308
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0308:
|
||||
cmp r0, #0x1f8
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0314:
|
||||
add r2, r1, #0x9b
|
||||
cmp r0, r2
|
||||
bgt _022F03FC
|
||||
bge _022F04D4
|
||||
add r2, r1, #0x10
|
||||
cmp r0, r2
|
||||
bgt _022F0398
|
||||
bge _022F04CC
|
||||
cmp r0, #0x204
|
||||
bgt _022F036C
|
||||
bge _022F04C4
|
||||
add r2, r1, #1
|
||||
cmp r0, r2
|
||||
bgt _022F035C
|
||||
add r1, r1, #1
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F035C:
|
||||
add r1, r1, #4
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F036C:
|
||||
add r2, r1, #0xb
|
||||
cmp r0, r2
|
||||
bgt _022F0388
|
||||
add r1, r1, #0xb
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0388:
|
||||
add r1, r1, #0xf
|
||||
cmp r0, r1
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F0398:
|
||||
add r2, r1, #0x17
|
||||
cmp r0, r2
|
||||
bgt _022F03D0
|
||||
bge _022F04C4
|
||||
add r2, r1, #0x15
|
||||
cmp r0, r2
|
||||
bgt _022F03C4
|
||||
add r1, r1, #0x15
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F03C4:
|
||||
cmp r0, #0x214
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F03D0:
|
||||
add r2, r1, #0x37
|
||||
cmp r0, r2
|
||||
bgt _022F03EC
|
||||
add r1, r1, #0x37
|
||||
cmp r0, r1
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F03EC:
|
||||
add r1, r1, #0x38
|
||||
cmp r0, r1
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F03FC:
|
||||
ldr r2, _022F04EC ; =0x0000037F
|
||||
cmp r0, r2
|
||||
bgt _022F0464
|
||||
bge _022F04C4
|
||||
sub r1, r2, #0x82
|
||||
cmp r0, r1
|
||||
bgt _022F0440
|
||||
bge _022F04C4
|
||||
sub r1, r2, #0xa6
|
||||
cmp r0, r1
|
||||
bgt _022F0430
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0430:
|
||||
sub r1, r2, #0xa5
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0440:
|
||||
sub r1, r2, #0x81
|
||||
cmp r0, r1
|
||||
bgt _022F0454
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0454:
|
||||
sub r1, r2, #0x61
|
||||
cmp r0, r1
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F0464:
|
||||
add r1, r2, #0x9f
|
||||
cmp r0, r1
|
||||
bgt _022F0498
|
||||
bge _022F04C4
|
||||
add r1, r2, #0x5a
|
||||
cmp r0, r1
|
||||
bgt _022F0488
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0488:
|
||||
add r1, r2, #0x6a
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0498:
|
||||
add r1, r2, #0xcb
|
||||
cmp r0, r1
|
||||
bgt _022F04B8
|
||||
bge _022F04C4
|
||||
add r1, r2, #0xab
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F04B8:
|
||||
add r1, r2, #0xcc
|
||||
cmp r0, r1
|
||||
bne _022F04DC
|
||||
_022F04C4:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
_022F04CC:
|
||||
mov r0, #1
|
||||
bx lr
|
||||
_022F04D4:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
_022F04DC:
|
||||
mov r0, #1
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022F04E4: .word 0x000001FE
|
||||
_022F04E8: .word 0x00000112
|
||||
_022F04EC: .word 0x0000037F
|
||||
arm_func_end ov29_022EFBAC
|
||||
|
||||
arm_func_start ov29_022F04F0
|
||||
ov29_022F04F0: ; 0x022F04F0
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
ldr r4, [r5, #0xb4]
|
||||
ldrsh r0, [r4, #4]
|
||||
bl ov29_022EFBAC
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
strneb r0, [r5, #0xb3]
|
||||
#ifdef JAPAN
|
||||
strneb r0, [r4, #0x16d]
|
||||
#else
|
||||
strneb r0, [r4, #0x171]
|
||||
#endif
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end ov29_022F04F0
|
||||
|
||||
arm_func_start ov29_022F0518
|
||||
ov29_022F0518: ; 0x022F0518
|
||||
ldr r2, [r0, #0xb4]
|
||||
mov r1, #0
|
||||
ldr ip, _022F0530 ; =sub_0201D198
|
||||
add r0, r0, #0x2c
|
||||
#ifdef JAPAN
|
||||
strb r1, [r2, #0x16d]
|
||||
#else
|
||||
strb r1, [r2, #0x171]
|
||||
#endif
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_022F0530: .word sub_0201D198
|
||||
arm_func_end ov29_022F0518
|
||||
|
||||
arm_func_start ov29_022F0534
|
||||
ov29_022F0534: ; 0x022F0534
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
ldr r4, _022F058C ; =DUNGEON_PTR
|
||||
mov r7, r0
|
||||
mov r5, #0
|
||||
_022F0544:
|
||||
ldr r0, [r4]
|
||||
add r0, r0, r5, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr r6, [r0, #0xad4]
|
||||
#else
|
||||
ldr r6, [r0, #0xb78]
|
||||
#endif
|
||||
mov r0, r6
|
||||
bl EntityIsValid__022F0590
|
||||
cmp r0, #0
|
||||
beq _022F057C
|
||||
cmp r7, #0
|
||||
mov r0, r6
|
||||
bne _022F0578
|
||||
bl ov29_022F0518
|
||||
b _022F057C
|
||||
_022F0578:
|
||||
bl ov29_022F04F0
|
||||
_022F057C:
|
||||
add r5, r5, #1
|
||||
cmp r5, #0x14
|
||||
blt _022F0544
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_022F058C: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022F0534
|
||||
|
|
|
|||
767
asm/overlay_29_022EFB04.s
Normal file
767
asm/overlay_29_022EFB04.s
Normal file
|
|
@ -0,0 +1,767 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022EFB04.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start IsSecretBazaarNpcBehavior
|
||||
IsSecretBazaarNpcBehavior: ; 0x022EFB04
|
||||
add r0, r0, #0xf0
|
||||
and r0, r0, #0xff
|
||||
cmp r0, #4
|
||||
movls r0, #1
|
||||
movhi r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
arm_func_end IsSecretBazaarNpcBehavior
|
||||
|
||||
arm_func_start ov29_022EFB20
|
||||
ov29_022EFB20: ; 0x022EFB20
|
||||
stmdb sp!, {r3, lr}
|
||||
cmp r0, #0
|
||||
beq _022EFB48
|
||||
mov r0, #0xa
|
||||
bl ov29_0234BA54
|
||||
mov r0, #0
|
||||
bl ov29_0234B1A4
|
||||
mov r0, #0xa
|
||||
mov r1, #0x62
|
||||
bl ov29_022EA370
|
||||
_022EFB48:
|
||||
bl ov29_0234D630
|
||||
ldr r1, _022EFB7C ; =ov29_023535A4
|
||||
mvn r2, #1
|
||||
mov r0, #1
|
||||
strb r2, [r1]
|
||||
bl ov29_022DE5F0
|
||||
ldr r1, _022EFB80 ; =ov29_0237C9A0
|
||||
strh r0, [r1, #2]
|
||||
mov r0, #0
|
||||
bl ov29_022DE5F0
|
||||
ldr r1, _022EFB80 ; =ov29_0237C9A0
|
||||
strh r0, [r1]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022EFB7C: .word ov29_023535A4
|
||||
_022EFB80: .word ov29_0237C9A0
|
||||
arm_func_end ov29_022EFB20
|
||||
|
||||
arm_func_start ov29_022EFB84
|
||||
ov29_022EFB84: ; 0x022EFB84
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
mov r0, #0
|
||||
bl ov29_0234D8A0
|
||||
cmp r4, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
mov r0, #0xa
|
||||
mov r1, #0x62
|
||||
bl ov29_022EA370
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end ov29_022EFB84
|
||||
|
||||
arm_func_start ov29_022EFBAC
|
||||
ov29_022EFBAC: ; 0x022EFBAC
|
||||
ldr r1, _022F04E4 ; =0x000001FE
|
||||
cmp r0, r1
|
||||
bgt _022F0314
|
||||
bge _022F04C4
|
||||
cmp r0, #0x1d4
|
||||
bgt _022F024C
|
||||
bge _022F04C4
|
||||
sub r2, r1, #0x53
|
||||
cmp r0, r2
|
||||
bgt _022F01E4
|
||||
sub r1, r1, #0xe9
|
||||
subs r1, r0, r1
|
||||
addpl pc, pc, r1, lsl #2
|
||||
b _022EFE40
|
||||
_022EFBE4: ; jump table
|
||||
b _022F04C4 ; case 0
|
||||
b _022F04C4 ; case 1
|
||||
b _022F04C4 ; case 2
|
||||
b _022F04CC ; case 3
|
||||
b _022F04DC ; case 4
|
||||
b _022F04DC ; case 5
|
||||
b _022F04DC ; case 6
|
||||
b _022F04DC ; case 7
|
||||
b _022F04DC ; case 8
|
||||
b _022F04DC ; case 9
|
||||
b _022F04DC ; case 10
|
||||
b _022F04DC ; case 11
|
||||
b _022F04CC ; case 12
|
||||
b _022F04CC ; case 13
|
||||
b _022F04DC ; case 14
|
||||
b _022F04DC ; case 15
|
||||
b _022F04DC ; case 16
|
||||
b _022F04DC ; case 17
|
||||
b _022F04C4 ; case 18
|
||||
b _022F04DC ; case 19
|
||||
b _022F04C4 ; case 20
|
||||
b _022F04DC ; case 21
|
||||
b _022F04DC ; case 22
|
||||
b _022F04DC ; case 23
|
||||
b _022F04DC ; case 24
|
||||
b _022F04DC ; case 25
|
||||
b _022F04DC ; case 26
|
||||
b _022F04DC ; case 27
|
||||
b _022F04DC ; case 28
|
||||
b _022F04C4 ; case 29
|
||||
b _022F04C4 ; case 30
|
||||
b _022F04DC ; case 31
|
||||
b _022F04DC ; case 32
|
||||
b _022F04DC ; case 33
|
||||
b _022F04DC ; case 34
|
||||
b _022F04C4 ; case 35
|
||||
b _022F04DC ; case 36
|
||||
b _022F04DC ; case 37
|
||||
b _022F04DC ; case 38
|
||||
b _022F04DC ; case 39
|
||||
b _022F04DC ; case 40
|
||||
b _022F04DC ; case 41
|
||||
b _022F04C4 ; case 42
|
||||
b _022F04C4 ; case 43
|
||||
b _022F04DC ; case 44
|
||||
b _022F04DC ; case 45
|
||||
b _022F04DC ; case 46
|
||||
b _022F04DC ; case 47
|
||||
b _022F04DC ; case 48
|
||||
b _022F04DC ; case 49
|
||||
b _022F04DC ; case 50
|
||||
b _022F04DC ; case 51
|
||||
b _022F04CC ; case 52
|
||||
b _022F04DC ; case 53
|
||||
b _022F04DC ; case 54
|
||||
b _022F04DC ; case 55
|
||||
b _022F04DC ; case 56
|
||||
b _022F04DC ; case 57
|
||||
b _022F04C4 ; case 58
|
||||
b _022F04DC ; case 59
|
||||
b _022F04DC ; case 60
|
||||
b _022F04DC ; case 61
|
||||
b _022F04DC ; case 62
|
||||
b _022F04DC ; case 63
|
||||
b _022F04CC ; case 64
|
||||
b _022F04CC ; case 65
|
||||
b _022F04DC ; case 66
|
||||
b _022F04DC ; case 67
|
||||
b _022F04DC ; case 68
|
||||
b _022F04C4 ; case 69
|
||||
b _022F04C4 ; case 70
|
||||
b _022F04C4 ; case 71
|
||||
b _022F04C4 ; case 72
|
||||
b _022F04DC ; case 73
|
||||
b _022F04DC ; case 74
|
||||
b _022F04DC ; case 75
|
||||
b _022F04C4 ; case 76
|
||||
b _022F04DC ; case 77
|
||||
b _022F04DC ; case 78
|
||||
b _022F04DC ; case 79
|
||||
b _022F04CC ; case 80
|
||||
b _022F04C4 ; case 81
|
||||
b _022F04DC ; case 82
|
||||
b _022F04DC ; case 83
|
||||
b _022F04C4 ; case 84
|
||||
b _022F04CC ; case 85
|
||||
b _022F04CC ; case 86
|
||||
b _022F04DC ; case 87
|
||||
b _022F04C4 ; case 88
|
||||
b _022F04C4 ; case 89
|
||||
b _022F04C4 ; case 90
|
||||
b _022F04C4 ; case 91
|
||||
b _022F04DC ; case 92
|
||||
b _022F04DC ; case 93
|
||||
b _022F04C4 ; case 94
|
||||
b _022F04C4 ; case 95
|
||||
b _022F04DC ; case 96
|
||||
b _022F04DC ; case 97
|
||||
b _022F04DC ; case 98
|
||||
b _022F04DC ; case 99
|
||||
b _022F04C4 ; case 100
|
||||
b _022F04DC ; case 101
|
||||
b _022F04C4 ; case 102
|
||||
b _022F04C4 ; case 103
|
||||
b _022F04C4 ; case 104
|
||||
b _022F04C4 ; case 105
|
||||
b _022F04DC ; case 106
|
||||
b _022F04DC ; case 107
|
||||
b _022F04C4 ; case 108
|
||||
b _022F04DC ; case 109
|
||||
b _022F04C4 ; case 110
|
||||
b _022F04DC ; case 111
|
||||
b _022F04DC ; case 112
|
||||
b _022F04DC ; case 113
|
||||
b _022F04DC ; case 114
|
||||
b _022F04DC ; case 115
|
||||
b _022F04DC ; case 116
|
||||
b _022F04C4 ; case 117
|
||||
b _022F04CC ; case 118
|
||||
b _022F04DC ; case 119
|
||||
b _022F04DC ; case 120
|
||||
b _022F04CC ; case 121
|
||||
b _022F04C4 ; case 122
|
||||
b _022F04C4 ; case 123
|
||||
b _022F04C4 ; case 124
|
||||
b _022F04C4 ; case 125
|
||||
b _022F04DC ; case 126
|
||||
b _022F04DC ; case 127
|
||||
b _022F04CC ; case 128
|
||||
b _022F04C4 ; case 129
|
||||
b _022F04C4 ; case 130
|
||||
b _022F04DC ; case 131
|
||||
b _022F04DC ; case 132
|
||||
b _022F04C4 ; case 133
|
||||
b _022F04DC ; case 134
|
||||
b _022F04C4 ; case 135
|
||||
b _022F04C4 ; case 136
|
||||
b _022F04C4 ; case 137
|
||||
b _022F04DC ; case 138
|
||||
b _022F04C4 ; case 139
|
||||
b _022F04C4 ; case 140
|
||||
b _022F04C4 ; case 141
|
||||
b _022F04C4 ; case 142
|
||||
b _022F04C4 ; case 143
|
||||
b _022F04C4 ; case 144
|
||||
b _022F04DC ; case 145
|
||||
b _022F04DC ; case 146
|
||||
b _022F04DC ; case 147
|
||||
b _022F04CC ; case 148
|
||||
b _022F04CC ; case 149
|
||||
b _022F04CC ; case 150
|
||||
_022EFE40:
|
||||
cmp r0, #0xee
|
||||
bgt _022F0194
|
||||
subs r1, r0, #0x29
|
||||
addpl pc, pc, r1, lsl #2
|
||||
b _022F016C
|
||||
_022EFE54: ; jump table
|
||||
b _022F04C4 ; case 0
|
||||
b _022F04C4 ; case 1
|
||||
b _022F04DC ; case 2
|
||||
b _022F04DC ; case 3
|
||||
b _022F04DC ; case 4
|
||||
b _022F04DC ; case 5
|
||||
b _022F04DC ; case 6
|
||||
b _022F04DC ; case 7
|
||||
b _022F04C4 ; case 8
|
||||
b _022F04CC ; case 9
|
||||
b _022F04CC ; case 10
|
||||
b _022F04DC ; case 11
|
||||
b _022F04CC ; case 12
|
||||
b _022F04DC ; case 13
|
||||
b _022F04DC ; case 14
|
||||
b _022F04DC ; case 15
|
||||
b _022F04DC ; case 16
|
||||
b _022F04CC ; case 17
|
||||
b _022F04CC ; case 18
|
||||
b _022F04DC ; case 19
|
||||
b _022F04DC ; case 20
|
||||
b _022F04DC ; case 21
|
||||
b _022F04DC ; case 22
|
||||
b _022F04DC ; case 23
|
||||
b _022F04D4 ; case 24
|
||||
b _022F04DC ; case 25
|
||||
b _022F04DC ; case 26
|
||||
b _022F04DC ; case 27
|
||||
b _022F04DC ; case 28
|
||||
b _022F04DC ; case 29
|
||||
b _022F04DC ; case 30
|
||||
b _022F04C4 ; case 31
|
||||
b _022F04C4 ; case 32
|
||||
b _022F04C4 ; case 33
|
||||
b _022F04DC ; case 34
|
||||
b _022F04DC ; case 35
|
||||
b _022F04DC ; case 36
|
||||
b _022F04DC ; case 37
|
||||
b _022F04DC ; case 38
|
||||
b _022F04DC ; case 39
|
||||
b _022F04C4 ; case 40
|
||||
b _022F04C4 ; case 41
|
||||
b _022F04DC ; case 42
|
||||
b _022F04DC ; case 43
|
||||
b _022F04DC ; case 44
|
||||
b _022F04DC ; case 45
|
||||
b _022F04DC ; case 46
|
||||
b _022F04DC ; case 47
|
||||
b _022F04DC ; case 48
|
||||
b _022F04DC ; case 49
|
||||
b _022F04C4 ; case 50
|
||||
b _022F04C4 ; case 51
|
||||
b _022F04C4 ; case 52
|
||||
b _022F04DC ; case 53
|
||||
b _022F04DC ; case 54
|
||||
b _022F04DC ; case 55
|
||||
b _022F04DC ; case 56
|
||||
b _022F04CC ; case 57
|
||||
b _022F04CC ; case 58
|
||||
b _022F04DC ; case 59
|
||||
b _022F04DC ; case 60
|
||||
b _022F04DC ; case 61
|
||||
b _022F04DC ; case 62
|
||||
b _022F04DC ; case 63
|
||||
b _022F04DC ; case 64
|
||||
b _022F04DC ; case 65
|
||||
b _022F04DC ; case 66
|
||||
b _022F04DC ; case 67
|
||||
b _022F04C4 ; case 68
|
||||
b _022F04C4 ; case 69
|
||||
b _022F04DC ; case 70
|
||||
b _022F04DC ; case 71
|
||||
b _022F04DC ; case 72
|
||||
b _022F04DC ; case 73
|
||||
b _022F04DC ; case 74
|
||||
b _022F04C4 ; case 75
|
||||
b _022F04C4 ; case 76
|
||||
b _022F04C4 ; case 77
|
||||
b _022F04C4 ; case 78
|
||||
b _022F04DC ; case 79
|
||||
b _022F04DC ; case 80
|
||||
b _022F04DC ; case 81
|
||||
b _022F04DC ; case 82
|
||||
b _022F04DC ; case 83
|
||||
b _022F04DC ; case 84
|
||||
b _022F04DC ; case 85
|
||||
b _022F04DC ; case 86
|
||||
b _022F04DC ; case 87
|
||||
b _022F04C4 ; case 88
|
||||
b _022F04C4 ; case 89
|
||||
b _022F04DC ; case 90
|
||||
b _022F04CC ; case 91
|
||||
b _022F04C4 ; case 92
|
||||
b _022F04CC ; case 93
|
||||
b _022F04CC ; case 94
|
||||
b _022F04DC ; case 95
|
||||
b _022F04C4 ; case 96
|
||||
b _022F04DC ; case 97
|
||||
b _022F04DC ; case 98
|
||||
b _022F04DC ; case 99
|
||||
b _022F04DC ; case 100
|
||||
b _022F04C4 ; case 101
|
||||
b _022F04DC ; case 102
|
||||
b _022F04C4 ; case 103
|
||||
b _022F04C4 ; case 104
|
||||
b _022F04C4 ; case 105
|
||||
b _022F04DC ; case 106
|
||||
b _022F04DC ; case 107
|
||||
b _022F04DC ; case 108
|
||||
b _022F04C4 ; case 109
|
||||
b _022F04C4 ; case 110
|
||||
b _022F04DC ; case 111
|
||||
b _022F04DC ; case 112
|
||||
b _022F04DC ; case 113
|
||||
b _022F04DC ; case 114
|
||||
b _022F04DC ; case 115
|
||||
b _022F04DC ; case 116
|
||||
b _022F04DC ; case 117
|
||||
b _022F04DC ; case 118
|
||||
b _022F04DC ; case 119
|
||||
b _022F04CC ; case 120
|
||||
b _022F04CC ; case 121
|
||||
b _022F04CC ; case 122
|
||||
b _022F04CC ; case 123
|
||||
b _022F04C4 ; case 124
|
||||
b _022F04C4 ; case 125
|
||||
b _022F04DC ; case 126
|
||||
b _022F04DC ; case 127
|
||||
b _022F04C4 ; case 128
|
||||
b _022F04C4 ; case 129
|
||||
b _022F04C4 ; case 130
|
||||
b _022F04DC ; case 131
|
||||
b _022F04DC ; case 132
|
||||
b _022F04DC ; case 133
|
||||
b _022F04DC ; case 134
|
||||
b _022F04DC ; case 135
|
||||
b _022F04DC ; case 136
|
||||
b _022F04DC ; case 137
|
||||
b _022F04DC ; case 138
|
||||
b _022F04DC ; case 139
|
||||
b _022F04DC ; case 140
|
||||
b _022F04DC ; case 141
|
||||
b _022F04DC ; case 142
|
||||
b _022F04DC ; case 143
|
||||
b _022F04DC ; case 144
|
||||
b _022F04DC ; case 145
|
||||
b _022F04C4 ; case 146
|
||||
b _022F04C4 ; case 147
|
||||
b _022F04C4 ; case 148
|
||||
b _022F04C4 ; case 149
|
||||
b _022F04C4 ; case 150
|
||||
b _022F04DC ; case 151
|
||||
b _022F04C4 ; case 152
|
||||
b _022F04DC ; case 153
|
||||
b _022F04DC ; case 154
|
||||
b _022F04DC ; case 155
|
||||
b _022F04DC ; case 156
|
||||
b _022F04CC ; case 157
|
||||
b _022F04DC ; case 158
|
||||
b _022F04C4 ; case 159
|
||||
b _022F04C4 ; case 160
|
||||
b _022F04C4 ; case 161
|
||||
b _022F04C4 ; case 162
|
||||
b _022F04C4 ; case 163
|
||||
b _022F04C4 ; case 164
|
||||
b _022F04C4 ; case 165
|
||||
b _022F04C4 ; case 166
|
||||
b _022F04C4 ; case 167
|
||||
b _022F04C4 ; case 168
|
||||
b _022F04C4 ; case 169
|
||||
b _022F04C4 ; case 170
|
||||
b _022F04C4 ; case 171
|
||||
b _022F04C4 ; case 172
|
||||
b _022F04C4 ; case 173
|
||||
b _022F04C4 ; case 174
|
||||
b _022F04C4 ; case 175
|
||||
b _022F04C4 ; case 176
|
||||
b _022F04C4 ; case 177
|
||||
b _022F04C4 ; case 178
|
||||
b _022F04C4 ; case 179
|
||||
b _022F04C4 ; case 180
|
||||
b _022F04C4 ; case 181
|
||||
b _022F04C4 ; case 182
|
||||
b _022F04C4 ; case 183
|
||||
b _022F04C4 ; case 184
|
||||
b _022F04C4 ; case 185
|
||||
b _022F04C4 ; case 186
|
||||
b _022F04C4 ; case 187
|
||||
b _022F04DC ; case 188
|
||||
b _022F04DC ; case 189
|
||||
b _022F04DC ; case 190
|
||||
b _022F04C4 ; case 191
|
||||
b _022F04DC ; case 192
|
||||
b _022F04C4 ; case 193
|
||||
b _022F04DC ; case 194
|
||||
b _022F04DC ; case 195
|
||||
b _022F04DC ; case 196
|
||||
b _022F04C4 ; case 197
|
||||
_022F016C:
|
||||
cmp r0, #0xf
|
||||
bgt _022F0188
|
||||
cmp r0, #0xc
|
||||
blt _022F04DC
|
||||
cmpne r0, #0xf
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0188:
|
||||
cmp r0, #0x16
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0194:
|
||||
cmp r0, #0x104
|
||||
bgt _022F01D4
|
||||
subs r1, r0, #0xfa
|
||||
addpl pc, pc, r1, lsl #2
|
||||
b _022F04DC
|
||||
_022F01A8: ; jump table
|
||||
b _022F04C4 ; case 0
|
||||
b _022F04DC ; case 1
|
||||
b _022F04DC ; case 2
|
||||
b _022F04C4 ; case 3
|
||||
b _022F04CC ; case 4
|
||||
b _022F04DC ; case 5
|
||||
b _022F04DC ; case 6
|
||||
b _022F04C4 ; case 7
|
||||
b _022F04DC ; case 8
|
||||
b _022F04DC ; case 9
|
||||
b _022F04C4 ; case 10
|
||||
_022F01D4:
|
||||
ldr r1, _022F04E8 ; =0x00000112
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F01E4:
|
||||
sub r2, r1, #0x37
|
||||
cmp r0, r2
|
||||
bgt _022F0220
|
||||
bge _022F04C4
|
||||
sub r2, r1, #0x39
|
||||
cmp r0, r2
|
||||
bgt _022F0210
|
||||
sub r1, r1, #0x39
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0210:
|
||||
sub r1, r1, #0x38
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0220:
|
||||
sub r2, r1, #0x2c
|
||||
cmp r0, r2
|
||||
bgt _022F023C
|
||||
sub r1, r1, #0x2c
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F023C:
|
||||
sub r1, r1, #0x2b
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F024C:
|
||||
sub r2, r1, #0x14
|
||||
cmp r0, r2
|
||||
bgt _022F02BC
|
||||
bge _022F04CC
|
||||
sub r2, r1, #0x20
|
||||
cmp r0, r2
|
||||
bgt _022F0294
|
||||
bge _022F04C4
|
||||
sub r2, r1, #0x27
|
||||
cmp r0, r2
|
||||
bgt _022F0288
|
||||
sub r1, r1, #0x27
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0288:
|
||||
cmp r0, #0x1d8
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F0294:
|
||||
sub r2, r1, #0x1f
|
||||
cmp r0, r2
|
||||
bgt _022F02B0
|
||||
sub r1, r1, #0x1f
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F02B0:
|
||||
cmp r0, #0x1e4
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F02BC:
|
||||
sub r2, r1, #0xb
|
||||
cmp r0, r2
|
||||
bgt _022F02F8
|
||||
bge _022F04C4
|
||||
sub r2, r1, #0xd
|
||||
cmp r0, r2
|
||||
bgt _022F02E8
|
||||
sub r1, r1, #0xd
|
||||
cmp r0, r1
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F02E8:
|
||||
sub r1, r1, #0xc
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F02F8:
|
||||
cmp r0, #0x1f4
|
||||
bgt _022F0308
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0308:
|
||||
cmp r0, #0x1f8
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0314:
|
||||
add r2, r1, #0x9b
|
||||
cmp r0, r2
|
||||
bgt _022F03FC
|
||||
bge _022F04D4
|
||||
add r2, r1, #0x10
|
||||
cmp r0, r2
|
||||
bgt _022F0398
|
||||
bge _022F04CC
|
||||
cmp r0, #0x204
|
||||
bgt _022F036C
|
||||
bge _022F04C4
|
||||
add r2, r1, #1
|
||||
cmp r0, r2
|
||||
bgt _022F035C
|
||||
add r1, r1, #1
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F035C:
|
||||
add r1, r1, #4
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F036C:
|
||||
add r2, r1, #0xb
|
||||
cmp r0, r2
|
||||
bgt _022F0388
|
||||
add r1, r1, #0xb
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0388:
|
||||
add r1, r1, #0xf
|
||||
cmp r0, r1
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F0398:
|
||||
add r2, r1, #0x17
|
||||
cmp r0, r2
|
||||
bgt _022F03D0
|
||||
bge _022F04C4
|
||||
add r2, r1, #0x15
|
||||
cmp r0, r2
|
||||
bgt _022F03C4
|
||||
add r1, r1, #0x15
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F03C4:
|
||||
cmp r0, #0x214
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F03D0:
|
||||
add r2, r1, #0x37
|
||||
cmp r0, r2
|
||||
bgt _022F03EC
|
||||
add r1, r1, #0x37
|
||||
cmp r0, r1
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F03EC:
|
||||
add r1, r1, #0x38
|
||||
cmp r0, r1
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F03FC:
|
||||
ldr r2, _022F04EC ; =0x0000037F
|
||||
cmp r0, r2
|
||||
bgt _022F0464
|
||||
bge _022F04C4
|
||||
sub r1, r2, #0x82
|
||||
cmp r0, r1
|
||||
bgt _022F0440
|
||||
bge _022F04C4
|
||||
sub r1, r2, #0xa6
|
||||
cmp r0, r1
|
||||
bgt _022F0430
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0430:
|
||||
sub r1, r2, #0xa5
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0440:
|
||||
sub r1, r2, #0x81
|
||||
cmp r0, r1
|
||||
bgt _022F0454
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0454:
|
||||
sub r1, r2, #0x61
|
||||
cmp r0, r1
|
||||
beq _022F04CC
|
||||
b _022F04DC
|
||||
_022F0464:
|
||||
add r1, r2, #0x9f
|
||||
cmp r0, r1
|
||||
bgt _022F0498
|
||||
bge _022F04C4
|
||||
add r1, r2, #0x5a
|
||||
cmp r0, r1
|
||||
bgt _022F0488
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0488:
|
||||
add r1, r2, #0x6a
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F0498:
|
||||
add r1, r2, #0xcb
|
||||
cmp r0, r1
|
||||
bgt _022F04B8
|
||||
bge _022F04C4
|
||||
add r1, r2, #0xab
|
||||
cmp r0, r1
|
||||
beq _022F04C4
|
||||
b _022F04DC
|
||||
_022F04B8:
|
||||
add r1, r2, #0xcc
|
||||
cmp r0, r1
|
||||
bne _022F04DC
|
||||
_022F04C4:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
_022F04CC:
|
||||
mov r0, #1
|
||||
bx lr
|
||||
_022F04D4:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
_022F04DC:
|
||||
mov r0, #1
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022F04E4: .word 0x000001FE
|
||||
_022F04E8: .word 0x00000112
|
||||
_022F04EC: .word 0x0000037F
|
||||
arm_func_end ov29_022EFBAC
|
||||
|
||||
arm_func_start ov29_022F04F0
|
||||
ov29_022F04F0: ; 0x022F04F0
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
ldr r4, [r5, #0xb4]
|
||||
ldrsh r0, [r4, #4]
|
||||
bl ov29_022EFBAC
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
strneb r0, [r5, #0xb3]
|
||||
#ifdef JAPAN
|
||||
strneb r0, [r4, #0x16d]
|
||||
#else
|
||||
strneb r0, [r4, #0x171]
|
||||
#endif
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end ov29_022F04F0
|
||||
|
||||
arm_func_start ov29_022F0518
|
||||
ov29_022F0518: ; 0x022F0518
|
||||
ldr r2, [r0, #0xb4]
|
||||
mov r1, #0
|
||||
ldr ip, _022F0530 ; =sub_0201D198
|
||||
add r0, r0, #0x2c
|
||||
#ifdef JAPAN
|
||||
strb r1, [r2, #0x16d]
|
||||
#else
|
||||
strb r1, [r2, #0x171]
|
||||
#endif
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_022F0530: .word sub_0201D198
|
||||
arm_func_end ov29_022F0518
|
||||
|
||||
arm_func_start ov29_022F0534
|
||||
ov29_022F0534: ; 0x022F0534
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
ldr r4, _022F058C ; =DUNGEON_PTR
|
||||
mov r7, r0
|
||||
mov r5, #0
|
||||
_022F0544:
|
||||
ldr r0, [r4]
|
||||
add r0, r0, r5, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
#ifdef JAPAN
|
||||
ldr r6, [r0, #0xad4]
|
||||
#else
|
||||
ldr r6, [r0, #0xb78]
|
||||
#endif
|
||||
mov r0, r6
|
||||
bl EntityIsValid__022F0590
|
||||
cmp r0, #0
|
||||
beq _022F057C
|
||||
cmp r7, #0
|
||||
mov r0, r6
|
||||
bne _022F0578
|
||||
bl ov29_022F0518
|
||||
b _022F057C
|
||||
_022F0578:
|
||||
bl ov29_022F04F0
|
||||
_022F057C:
|
||||
add r5, r5, #1
|
||||
cmp r5, #0x14
|
||||
blt _022F0544
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_022F058C: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022F0534
|
||||
|
|
@ -1115,7 +1115,7 @@ _022F83B4:
|
|||
cmpne sb, r0
|
||||
beq _022F83F4
|
||||
ldrb r0, [r7, #0xbc]
|
||||
bl ov29_022EFAE8
|
||||
bl IsLoneOutlaw
|
||||
cmp r0, #0
|
||||
beq _022F83F4
|
||||
mov r0, #1
|
||||
|
|
|
|||
|
|
@ -264,926 +264,3 @@ _022FBDD4:
|
|||
_022FBDDC: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBD80
|
||||
#endif
|
||||
|
||||
arm_func_start ov29_022FBDE0
|
||||
ov29_022FBDE0: ; 0x022FBDE0
|
||||
ldr ip, _022FBDEC ; =ov29_022EFAE8
|
||||
ldrb r0, [r0, #0xbc]
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_022FBDEC: .word ov29_022EFAE8
|
||||
arm_func_end ov29_022FBDE0
|
||||
|
||||
arm_func_start ov29_022FBDF0
|
||||
ov29_022FBDF0: ; 0x022FBDF0
|
||||
ldr r0, [r0, #0xb4]
|
||||
ldr ip, _022FBE00 ; =IsSecretBazaarNpcBehavior
|
||||
ldrb r0, [r0, #0xbc]
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_022FBE00: .word IsSecretBazaarNpcBehavior
|
||||
arm_func_end ov29_022FBDF0
|
||||
|
||||
arm_func_start ov29_022FBE04
|
||||
ov29_022FBE04: ; 0x022FBE04
|
||||
stmdb sp!, {r3, lr}
|
||||
ldrb r0, [r0, #6]
|
||||
cmp r0, #0
|
||||
bne _022FBE4C
|
||||
ldr r0, _022FBE54 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #0x748]
|
||||
bl GetTurnLimit
|
||||
ldr r1, _022FBE54 ; =DUNGEON_PTR
|
||||
ldr r1, [r1]
|
||||
add r1, r1, #0x700
|
||||
ldrsh r1, [r1, #0x84]
|
||||
cmp r1, r0
|
||||
bne _022FBE4C
|
||||
bl IsFullFloorFixedRoom
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
ldmneia sp!, {r3, pc}
|
||||
_022FBE4C:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022FBE54: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBE04
|
||||
|
||||
arm_func_start InitOtherMonsterData
|
||||
InitOtherMonsterData: ; 0x022FBE58
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r4, r0
|
||||
ldr ip, [r4, #0xb4]
|
||||
mov r6, #1
|
||||
strb r6, [ip, #0x100]
|
||||
ldrsh r5, [ip, #0x12]
|
||||
ldrsh r3, [ip, #0x16]
|
||||
ldr r7, _022FBF04 ; =FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE
|
||||
mov r0, #0xc
|
||||
add r5, r5, r3
|
||||
smlabb r3, r1, r0, r7
|
||||
rsb lr, r6, #0x3e8
|
||||
cmp r5, lr
|
||||
movgt r5, lr
|
||||
strh r5, [ip, #0x14]
|
||||
mov r0, #0
|
||||
strh r0, [ip, #0x16]
|
||||
strh r0, [ip, #0x18]
|
||||
ldrsh r5, [r3, #2]
|
||||
add lr, ip, #0x100
|
||||
add r0, ip, #0x90
|
||||
strh r5, [ip, #0x12]
|
||||
ldrsh r5, [r3, #2]
|
||||
strh r5, [ip, #0x10]
|
||||
ldrb r5, [r3, #6]
|
||||
strb r5, [ip, #0x1a]
|
||||
ldrb r5, [r3, #7]
|
||||
strb r5, [ip, #0x1b]
|
||||
ldrb r5, [r3, #8]
|
||||
strb r5, [ip, #0x1c]
|
||||
ldrb r3, [r3, #9]
|
||||
strb r3, [ip, #0x1d]
|
||||
#ifdef JAPAN
|
||||
strh r1, [lr, #0x64]
|
||||
strb r2, [ip, #0x166]
|
||||
#else
|
||||
strh r1, [lr, #0x68]
|
||||
strb r2, [ip, #0x16a]
|
||||
#endif
|
||||
ldrsh r1, [ip, #2]
|
||||
ldrsh r2, [ip, #0xe]
|
||||
bl EnableAllLearnableIqSkills
|
||||
mov r0, r4
|
||||
bl ov29_023021F0
|
||||
mov r0, r4
|
||||
mov r1, #1
|
||||
bl ov29_022FB83C
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_022FBF04: .word FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE
|
||||
arm_func_end InitOtherMonsterData
|
||||
|
||||
arm_func_start ov29_022FBF08
|
||||
ov29_022FBF08: ; 0x022FBF08
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r0, _022FBF2C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, #0x7cc]
|
||||
sub r0, r0, #1
|
||||
cmp r0, #1
|
||||
ldmhiia sp!, {r3, pc}
|
||||
bl LoadWazaP2
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022FBF2C: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBF08
|
||||
|
||||
arm_func_start ov29_022FBF30
|
||||
ov29_022FBF30: ; 0x022FBF30
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r0, _022FBF54 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, #0x7cc]
|
||||
sub r0, r0, #1
|
||||
cmp r0, #1
|
||||
ldmhiia sp!, {r3, pc}
|
||||
bl UnloadCurrentWazaP
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022FBF54: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBF30
|
||||
|
||||
arm_func_start InitEnemySpawnStats
|
||||
InitEnemySpawnStats: ; 0x022FBF58
|
||||
#ifdef JAPAN
|
||||
#define INIT_ENEMY_SPAWN_STATS_OFFSET -0x50
|
||||
#else
|
||||
#define INIT_ENEMY_SPAWN_STATS_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x218
|
||||
ldr r1, _022FC230 ; =DUNGEON_PTR
|
||||
mov r0, #0
|
||||
ldr r1, [r1]
|
||||
add r1, r1, #0xf4 + INIT_ENEMY_SPAWN_STATS_OFFSET
|
||||
add r5, r1, #0x3400
|
||||
bl DungeonRngSetSecondary
|
||||
bl ov29_022FBF08
|
||||
add r0, sp, #0x16
|
||||
mov r1, #0
|
||||
bl CopySpawnEntriesMaster
|
||||
mov r4, r0
|
||||
mov r6, #0
|
||||
b _022FC028
|
||||
_022FBF94:
|
||||
add r0, sp, #0x16
|
||||
add r7, r0, r6, lsl #3
|
||||
mov r0, r7
|
||||
bl GetMonsterIdFromSpawnEntry
|
||||
strh r0, [r5]
|
||||
mov r0, r7
|
||||
bl GetMonsterLevelFromSpawnEntry
|
||||
strh r0, [r5, #2]
|
||||
ldrsh r1, [r5]
|
||||
ldrsh r2, [r5, #2]
|
||||
add r0, r5, #4
|
||||
bl GetMonsterMoves
|
||||
ldrh r0, [r5, #4]
|
||||
cmp r0, #0
|
||||
moveq r0, #0x170
|
||||
streqh r0, [r5, #4]
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
bl GetMaxHpAtLevel
|
||||
strh r0, [r5, #0xc]
|
||||
mov r7, #0
|
||||
_022FBFE8:
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
mov r2, r7
|
||||
add r8, r5, r7
|
||||
bl GetOffensiveStatAtLevel
|
||||
strb r0, [r8, #0xe]
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
mov r2, r7
|
||||
bl GetDefensiveStatAtLevel
|
||||
add r7, r7, #1
|
||||
strb r0, [r8, #0x10]
|
||||
cmp r7, #2
|
||||
blt _022FBFE8
|
||||
add r5, r5, #0x12
|
||||
add r6, r6, #1
|
||||
_022FC028:
|
||||
cmp r6, r4
|
||||
blt _022FBF94
|
||||
mov r0, #0
|
||||
b _022FC040
|
||||
_022FC038:
|
||||
strh r0, [r5], #0x12
|
||||
add r6, r6, #1
|
||||
_022FC040:
|
||||
cmp r6, #0x40
|
||||
blt _022FC038
|
||||
cmp r4, #0x40
|
||||
bge _022FC0A8
|
||||
bl IsDestinationFloorWithFixedRoom
|
||||
cmp r0, #0
|
||||
bne _022FC0A8
|
||||
bl IsDestinationFloorWithMonster
|
||||
cmp r0, #0
|
||||
beq _022FC0A8
|
||||
mov r0, #0xa
|
||||
bl IsCurrentMissionType
|
||||
cmp r0, #0
|
||||
bne _022FC088
|
||||
mov r0, #9
|
||||
bl IsCurrentMissionType
|
||||
cmp r0, #0
|
||||
beq _022FC0A8
|
||||
_022FC088:
|
||||
add r0, sp, #8
|
||||
bl GetOutlawSpawnData
|
||||
add r0, sp, #0x16
|
||||
ldrsh r1, [sp, #0xc]
|
||||
ldrsh r2, [sp, #8]
|
||||
add r0, r0, r4, lsl #3
|
||||
bl SetMonsterLevelAndId
|
||||
add r4, r4, #1
|
||||
_022FC0A8:
|
||||
cmp r4, #0x40
|
||||
bge _022FC0E0
|
||||
ldr r0, _022FC230 ; =DUNGEON_PTR
|
||||
ldr r2, [r0]
|
||||
add r0, r2, #0x700
|
||||
ldrsh r1, [r0, #0xa8]
|
||||
cmp r1, #0
|
||||
beq _022FC0E0
|
||||
ldrb r1, [r2, #0x7aa]
|
||||
ldrsh r2, [r0, #0xa8]
|
||||
add r3, sp, #0x16
|
||||
add r0, r3, r4, lsl #3
|
||||
bl SetMonsterLevelAndId
|
||||
add r4, r4, #1
|
||||
_022FC0E0:
|
||||
mov r2, #0
|
||||
ldr r1, _022FC230 ; =DUNGEON_PTR
|
||||
mov sl, r2
|
||||
_022FC0EC:
|
||||
ldr r0, [r1]
|
||||
add r0, r0, r2
|
||||
add r0, r0, #0x3000
|
||||
add r2, r2, #1
|
||||
strb sl, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
cmp r2, #0x258
|
||||
blt _022FC0EC
|
||||
mvn r0, #0
|
||||
mov r5, #1
|
||||
str r0, [sp]
|
||||
b _022FC1E8
|
||||
_022FC118:
|
||||
ldr r6, [sp]
|
||||
mov r8, #0
|
||||
mov r7, r6
|
||||
b _022FC194
|
||||
_022FC128:
|
||||
add r0, sp, #0x16
|
||||
add sb, r0, r8, lsl #3
|
||||
mov r0, sb
|
||||
bl GetMonsterIdFromSpawnEntry
|
||||
mov fp, r0
|
||||
mov r0, sb
|
||||
bl GetMonsterLevelFromSpawnEntry
|
||||
str r0, [sp, #4]
|
||||
mov r0, fp
|
||||
mov r1, #0x258
|
||||
bl _s32_div_f
|
||||
ldr r0, _022FC230 ; =DUNGEON_PTR
|
||||
mov r1, r1, lsl #0x10
|
||||
ldr r0, [r0]
|
||||
mov sb, r1, asr #0x10
|
||||
add r0, r0, r1, asr #16
|
||||
add r0, r0, #0x3000
|
||||
ldrb r0, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
cmp r0, #0
|
||||
bne _022FC190
|
||||
ldr r1, [sp, #4]
|
||||
mov r0, sb
|
||||
bl GetExp
|
||||
cmp r7, r0
|
||||
movlt r7, r0
|
||||
movlt r6, sb
|
||||
_022FC190:
|
||||
add r8, r8, #1
|
||||
_022FC194:
|
||||
cmp r8, r4
|
||||
blt _022FC128
|
||||
cmp r6, #0
|
||||
blt _022FC1F0
|
||||
cmp r5, #0x100
|
||||
ble _022FC1C8
|
||||
ldr r0, _022FC230 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, r6
|
||||
add r1, r0, #0x3000
|
||||
mov r0, #1
|
||||
strb r0, [r1, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
b _022FC1E4
|
||||
_022FC1C8:
|
||||
ldr r0, _022FC230 ; =DUNGEON_PTR
|
||||
rsb r1, r5, #0x100
|
||||
ldr r0, [r0]
|
||||
add r5, r5, #2
|
||||
add r0, r0, r6
|
||||
add r0, r0, #0x3000
|
||||
strb r1, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
_022FC1E4:
|
||||
add sl, sl, #1
|
||||
_022FC1E8:
|
||||
cmp sl, r4
|
||||
blt _022FC118
|
||||
_022FC1F0:
|
||||
ldr r1, _022FC230 ; =DUNGEON_PTR
|
||||
mov r4, #0
|
||||
mov r2, #1
|
||||
_022FC1FC:
|
||||
ldr r0, [r1]
|
||||
add r0, r0, r4
|
||||
add r0, r0, #0x3000
|
||||
ldrb r3, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
add r4, r4, #1
|
||||
cmp r3, #0
|
||||
streqb r2, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
cmp r4, #0x258
|
||||
blt _022FC1FC
|
||||
bl ov29_022FBF30
|
||||
bl DungeonRngSetPrimary
|
||||
add sp, sp, #0x218
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_022FC230: .word DUNGEON_PTR
|
||||
arm_func_end InitEnemySpawnStats
|
||||
|
||||
arm_func_start InitEnemyStatsAndMoves
|
||||
InitEnemyStatsAndMoves: ; 0x022FC234
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #8
|
||||
mov sl, r0
|
||||
ldrsh r0, [sp, #0x30]
|
||||
mov sb, r1
|
||||
mov r1, #0x258
|
||||
mov r8, r2
|
||||
mov r7, r3
|
||||
ldr r6, [sp, #0x34]
|
||||
bl _s32_div_f
|
||||
mov r0, r1, lsl #0x10
|
||||
ldr r2, _022FC464 ; =DUNGEON_PTR
|
||||
mov r4, r0, asr #0x10
|
||||
ldr r1, [r2]
|
||||
mov fp, #0
|
||||
#ifdef JAPAN
|
||||
add r0, r1, #0xa4
|
||||
#else
|
||||
add r0, r1, #0xf4
|
||||
#endif
|
||||
add r5, r0, #0x3400
|
||||
mov r3, r5
|
||||
mov r0, #0x12
|
||||
b _022FC314
|
||||
_022FC284:
|
||||
mul r2, fp, r0
|
||||
ldrsh r1, [r3, r2]
|
||||
add r5, r3, r2
|
||||
cmp r1, #0
|
||||
beq _022FC31C
|
||||
cmp r1, r4
|
||||
ldreqsh r1, [r5, #2]
|
||||
cmpeq r1, r6
|
||||
bne _022FC310
|
||||
mov r1, r4
|
||||
mov r2, r6
|
||||
add r0, r5, #4
|
||||
bl GetMonsterMoves
|
||||
mov r4, #0
|
||||
_022FC2BC:
|
||||
add r0, r5, r4, lsl #1
|
||||
ldrh r1, [r0, #4]
|
||||
add r0, sl, r4, lsl #3
|
||||
bl InitMoveCheckId
|
||||
add r4, r4, #1
|
||||
cmp r4, #4
|
||||
blt _022FC2BC
|
||||
ldrsh r0, [r5, #0xc]
|
||||
mov r2, #0
|
||||
strh r0, [sb]
|
||||
_022FC2E4:
|
||||
add r1, r5, r2
|
||||
ldrb r0, [r1, #0xe]
|
||||
strb r0, [r8, r2]
|
||||
ldrb r0, [r1, #0x10]
|
||||
strb r0, [r7, r2]
|
||||
add r2, r2, #1
|
||||
cmp r2, #2
|
||||
blt _022FC2E4
|
||||
mov r0, #0
|
||||
strb r0, [sl, #0x20]
|
||||
b _022FC45C
|
||||
_022FC310:
|
||||
add fp, fp, #1
|
||||
_022FC314:
|
||||
cmp fp, #0x40
|
||||
blt _022FC284
|
||||
_022FC31C:
|
||||
cmp fp, #0x40
|
||||
bne _022FC3A4
|
||||
add r0, sp, #0
|
||||
mov r1, r4
|
||||
mov r2, r6
|
||||
bl GetMonsterMoves
|
||||
mov r5, #0
|
||||
add fp, sp, #0
|
||||
_022FC33C:
|
||||
mov r0, r5, lsl #1
|
||||
ldrh r1, [fp, r0]
|
||||
add r0, sl, r5, lsl #3
|
||||
bl InitMoveCheckId
|
||||
add r5, r5, #1
|
||||
cmp r5, #4
|
||||
blt _022FC33C
|
||||
mov r0, r4
|
||||
mov r1, r6
|
||||
bl GetMaxHpAtLevel
|
||||
strh r0, [sb]
|
||||
mov r5, #0
|
||||
_022FC36C:
|
||||
mov r0, r4
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl GetOffensiveStatAtLevel
|
||||
strb r0, [r8, r5]
|
||||
mov r0, r4
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl GetDefensiveStatAtLevel
|
||||
strb r0, [r7, r5]
|
||||
add r5, r5, #1
|
||||
cmp r5, #2
|
||||
blt _022FC36C
|
||||
b _022FC454
|
||||
_022FC3A4:
|
||||
strh r4, [r5]
|
||||
mov r1, r4
|
||||
mov r2, r6
|
||||
strh r6, [r5, #2]
|
||||
add r0, r5, #4
|
||||
bl GetMonsterMoves
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
bl GetMaxHpAtLevel
|
||||
strh r0, [r5, #0xc]
|
||||
mov r6, #0
|
||||
_022FC3D0:
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
mov r2, r6
|
||||
add r4, r5, r6
|
||||
bl GetOffensiveStatAtLevel
|
||||
strb r0, [r4, #0xe]
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
mov r2, r6
|
||||
bl GetDefensiveStatAtLevel
|
||||
add r6, r6, #1
|
||||
strb r0, [r4, #0x10]
|
||||
cmp r6, #2
|
||||
blt _022FC3D0
|
||||
mov r4, #0
|
||||
_022FC40C:
|
||||
add r0, r5, r4, lsl #1
|
||||
ldrh r1, [r0, #4]
|
||||
add r0, sl, r4, lsl #3
|
||||
bl InitMoveCheckId
|
||||
add r4, r4, #1
|
||||
cmp r4, #4
|
||||
blt _022FC40C
|
||||
ldrsh r0, [r5, #0xc]
|
||||
mov r2, #0
|
||||
strh r0, [sb]
|
||||
_022FC434:
|
||||
add r1, r5, r2
|
||||
ldrb r0, [r1, #0xe]
|
||||
strb r0, [r8, r2]
|
||||
ldrb r0, [r1, #0x10]
|
||||
strb r0, [r7, r2]
|
||||
add r2, r2, #1
|
||||
cmp r2, #2
|
||||
blt _022FC434
|
||||
_022FC454:
|
||||
mov r0, #0
|
||||
strb r0, [sl, #0x20]
|
||||
_022FC45C:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_022FC464: .word DUNGEON_PTR
|
||||
arm_func_end InitEnemyStatsAndMoves
|
||||
|
||||
arm_func_start ov29_022FC468
|
||||
ov29_022FC468: ; 0x022FC468
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
ldr r4, [sp, #0x24]
|
||||
mov sb, r0
|
||||
cmp r4, #0xb
|
||||
mov r0, #0
|
||||
cmp r4, #0xc
|
||||
moveq r0, #1
|
||||
cmp r4, #0xd
|
||||
moveq r0, #2
|
||||
cmp r4, #0xe
|
||||
moveq r0, #3
|
||||
mov r8, r1
|
||||
mov r7, r2
|
||||
mov r6, r3
|
||||
ldr r5, [sp, #0x20]
|
||||
bl GetExplorerMazeMonster
|
||||
mov r4, r0
|
||||
mov r0, sb
|
||||
add r1, r4, #0x22
|
||||
bl GroundToDungeonMoveset
|
||||
ldrsh r0, [r4, #0xa]
|
||||
mov r2, #0
|
||||
strh r0, [r8]
|
||||
_022FC4C4:
|
||||
add r1, r4, r2
|
||||
ldrb r0, [r1, #0xc]
|
||||
strb r0, [r7, r2]
|
||||
ldrb r0, [r1, #0xe]
|
||||
strb r0, [r6, r2]
|
||||
add r2, r2, #1
|
||||
cmp r2, #2
|
||||
blt _022FC4C4
|
||||
ldrsh r1, [r4, #8]
|
||||
ldr r0, _022FC508 ; =IQ_SKILLS
|
||||
ldr r0, [r0, #0x20]
|
||||
strh r1, [r5]
|
||||
cmp r1, r0
|
||||
strlth r0, [r5]
|
||||
mov r0, #0
|
||||
strb r0, [sb, #0x20]
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_022FC508: .word IQ_SKILLS
|
||||
arm_func_end ov29_022FC468
|
||||
|
||||
arm_func_start SpawnTeam
|
||||
SpawnTeam: ; 0x022FC50C
|
||||
#ifdef JAPAN
|
||||
#define SPAWN_TEAM_OFFSET -0xA4
|
||||
#else
|
||||
#define SPAWN_TEAM_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x44
|
||||
mov sl, r0
|
||||
mov r0, #0
|
||||
bl DungeonRngSetSecondary
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r1, r0, #0xcc00
|
||||
ldrsh r0, [r1, #0xe0 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r1, [r1, #0xe2 + SPAWN_TEAM_OFFSET]
|
||||
bl GetTile
|
||||
ldrb fp, [r0, #7]
|
||||
mov r4, #0
|
||||
_022FC540:
|
||||
mov r0, r4
|
||||
bl GetActiveTeamMember
|
||||
add r1, r4, #1
|
||||
mov r1, r1, lsl #0x10
|
||||
strh r4, [r0, #0xa]
|
||||
mov r4, r1, asr #0x10
|
||||
cmp r4, #4
|
||||
blt _022FC540
|
||||
mov r7, #0
|
||||
mov r6, #1
|
||||
mov r8, r7
|
||||
mov r5, r7
|
||||
mov sb, r6
|
||||
add r4, sp, #0x34
|
||||
_022FC578:
|
||||
mov r0, r8
|
||||
bl GetActiveTeamMember
|
||||
ldrb r1, [r0]
|
||||
tst r1, #1
|
||||
movne r2, r6
|
||||
moveq r2, r5
|
||||
tst r2, #0xff
|
||||
beq _022FC5B0
|
||||
tst r1, #2
|
||||
movne r1, sb
|
||||
moveq r1, #0
|
||||
tst r1, #0xff
|
||||
strne r0, [r4, r7, lsl #2]
|
||||
addne r7, r7, #1
|
||||
_022FC5B0:
|
||||
add r0, r8, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r8, r0, asr #0x10
|
||||
cmp r8, #4
|
||||
blt _022FC578
|
||||
mov r1, #0
|
||||
add r0, sp, #0x34
|
||||
b _022FC5D8
|
||||
_022FC5D0:
|
||||
str r1, [r0, r7, lsl #2]
|
||||
add r7, r7, #1
|
||||
_022FC5D8:
|
||||
cmp r7, #4
|
||||
blt _022FC5D0
|
||||
mov r8, #0
|
||||
mov r7, r8
|
||||
mov r3, r8
|
||||
mov r4, #1
|
||||
mov r2, r8
|
||||
add r5, sp, #0x34
|
||||
add r1, sp, #0x24
|
||||
_022FC5FC:
|
||||
ldr r6, [r5, r7, lsl #2]
|
||||
cmp r6, #0
|
||||
beq _022FC628
|
||||
ldrb r0, [r6, #1]
|
||||
cmp r0, #0
|
||||
movne r0, r4
|
||||
moveq r0, r3
|
||||
tst r0, #0xff
|
||||
strne r6, [r1, r8, lsl #2]
|
||||
strne r2, [r5, r7, lsl #2]
|
||||
addne r8, r8, #1
|
||||
_022FC628:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
cmp r7, #4
|
||||
blt _022FC5FC
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #0x75c]
|
||||
cmp r0, #0
|
||||
bne _022FC698
|
||||
mov r7, #0
|
||||
mov r4, r7
|
||||
add r5, sp, #0x34
|
||||
add sb, sp, #0x24
|
||||
_022FC660:
|
||||
ldr r6, [r5, r7, lsl #2]
|
||||
cmp r6, #0
|
||||
beq _022FC684
|
||||
ldrb r0, [r6, #3]
|
||||
bl JoinedAtRangeCheck2Veneer
|
||||
cmp r0, #0
|
||||
strne r6, [sb, r8, lsl #2]
|
||||
strne r4, [r5, r7, lsl #2]
|
||||
addne r8, r8, #1
|
||||
_022FC684:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
cmp r7, #4
|
||||
blt _022FC660
|
||||
_022FC698:
|
||||
mov r4, #0
|
||||
mov r2, r4
|
||||
add r1, sp, #0x24
|
||||
add r3, sp, #0x34
|
||||
_022FC6A8:
|
||||
ldr r0, [r3, r4, lsl #2]
|
||||
cmp r0, #0
|
||||
strne r0, [r1, r8, lsl #2]
|
||||
add r0, r4, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
strne r2, [r3, r4, lsl #2]
|
||||
mov r4, r0, asr #0x10
|
||||
addne r8, r8, #1
|
||||
cmp r4, #4
|
||||
blt _022FC6A8
|
||||
mov r1, #0
|
||||
add r0, sp, #0x24
|
||||
b _022FC6E4
|
||||
_022FC6DC:
|
||||
str r1, [r0, r8, lsl #2]
|
||||
add r8, r8, #1
|
||||
_022FC6E4:
|
||||
cmp r8, #4
|
||||
blt _022FC6DC
|
||||
mov sb, #0
|
||||
_022FC6F0:
|
||||
add r0, sp, #0x24
|
||||
ldr r5, [r0, sb, lsl #2]
|
||||
mov r6, #0
|
||||
cmp r5, #0
|
||||
beq _022FC8BC
|
||||
ldrsh r1, [r5, #0xc]
|
||||
sub r0, r1, #0x17c
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
cmp r0, #2
|
||||
ldrls r0, _022FC990 ; =0x0000017B
|
||||
strlsh r0, [r5, #0xc]
|
||||
bls _022FC74C
|
||||
sub r0, r1, #0x3d4
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
cmp r0, #2
|
||||
ldrls r0, _022FC994 ; =0x000003D3
|
||||
strlsh r0, [r5, #0xc]
|
||||
_022FC74C:
|
||||
mov r4, #0
|
||||
_022FC750:
|
||||
ldr r0, _022FC998 ; =ov29_02351E28
|
||||
mov r1, r4, lsl #2
|
||||
ldrh r1, [r0, r1]
|
||||
add r0, r0, r4, lsl #2
|
||||
ldrh r0, [r0, #2]
|
||||
strh r1, [sp, #0x1e]
|
||||
ldrsh r8, [sp, #0x1e]
|
||||
strh r0, [sp, #0x20]
|
||||
cmp r8, #0x63
|
||||
beq _022FC808
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
ldrsh r7, [sp, #0x20]
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0xcc00
|
||||
ldrsh r1, [r0, #0xe2 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r2, [r0, #0xe0 + SPAWN_TEAM_OFFSET]
|
||||
add r1, r7, r1
|
||||
add r0, r8, r2
|
||||
bl GetTile
|
||||
mov r1, r0
|
||||
ldrb r0, [r1, #7]
|
||||
cmp r0, fp
|
||||
bne _022FC800
|
||||
ldrsh r0, [r5, #0xc]
|
||||
bl IsInvalidSpawnTile
|
||||
cmp r0, #0
|
||||
bne _022FC800
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
mov r1, #0
|
||||
ldr r2, [r0]
|
||||
mov r0, #1
|
||||
str r1, [sp]
|
||||
stmib sp, {r0, r1, sl}
|
||||
str r1, [sp, #0x10]
|
||||
add r0, r2, #0xcc00
|
||||
ldrsh r1, [r0, #0xe0 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r2, [r0, #0xe2 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r0, [r5, #0xc]
|
||||
mov r3, r5
|
||||
add r1, r8, r1
|
||||
add r2, r7, r2
|
||||
bl InitTeamMember
|
||||
mov r6, #1
|
||||
b _022FC808
|
||||
_022FC800:
|
||||
add r4, r4, #1
|
||||
b _022FC750
|
||||
_022FC808:
|
||||
cmp r6, #0
|
||||
bne _022FC8BC
|
||||
ldr r8, _022FC998 ; =ov29_02351E28
|
||||
mov r7, #0
|
||||
_022FC818:
|
||||
mov r0, r7, lsl #2
|
||||
ldrh r1, [r8, r0]
|
||||
add r0, r8, r7, lsl #2
|
||||
ldrh r0, [r0, #2]
|
||||
strh r1, [sp, #0x14]
|
||||
ldrsh r6, [sp, #0x14]
|
||||
strh r0, [sp, #0x16]
|
||||
cmp r6, #0x63
|
||||
beq _022FC8BC
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
ldrsh r4, [sp, #0x16]
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0xcc00
|
||||
ldrsh r1, [r0, #0xe2 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r2, [r0, #0xe0 + SPAWN_TEAM_OFFSET]
|
||||
add r1, r4, r1
|
||||
add r0, r6, r2
|
||||
bl GetTile
|
||||
mov r1, r0
|
||||
ldrsh r0, [r5, #0xc]
|
||||
bl IsInvalidSpawnTile
|
||||
cmp r0, #0
|
||||
bne _022FC8B4
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
mov r1, #0
|
||||
ldr r2, [r0]
|
||||
mov r0, #1
|
||||
str r1, [sp]
|
||||
stmib sp, {r0, r1, sl}
|
||||
str r1, [sp, #0x10]
|
||||
add r0, r2, #0xcc00
|
||||
ldrsh r1, [r0, #0xe0 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r2, [r0, #0xe2 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r0, [r5, #0xc]
|
||||
mov r3, r5
|
||||
add r1, r6, r1
|
||||
add r2, r4, r2
|
||||
bl InitTeamMember
|
||||
b _022FC8BC
|
||||
_022FC8B4:
|
||||
add r7, r7, #1
|
||||
b _022FC818
|
||||
_022FC8BC:
|
||||
add r0, sb, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov sb, r0, asr #0x10
|
||||
cmp sb, #4
|
||||
blt _022FC6F0
|
||||
bl ov29_022FCD04
|
||||
mov r2, #0
|
||||
#ifdef JAPAN
|
||||
mov sb, r2
|
||||
#else
|
||||
mov r8, r2
|
||||
#endif
|
||||
add r1, sp, #0x18
|
||||
_022FC8E0:
|
||||
add r0, r2, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
#ifdef JAPAN
|
||||
strb sb, [r1, r2]
|
||||
#else
|
||||
strb r8, [r1, r2]
|
||||
#endif
|
||||
mov r2, r0, asr #0x10
|
||||
cmp r2, #5
|
||||
blt _022FC8E0
|
||||
#ifdef JAPAN
|
||||
ldr r5, _022FC98C ; =DUNGEON_PTR
|
||||
mov r7, #0
|
||||
mov r8, #1
|
||||
add r6, sp, #0x18
|
||||
mov r4, #0x23c
|
||||
_022FC908:
|
||||
ldr r0, [r5]
|
||||
add r0, r0, sb, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
ldr r0, [r0, #0xa84]
|
||||
#else
|
||||
ldr r4, _022FC98C ; =DUNGEON_PTR
|
||||
mov r6, #0
|
||||
mov r7, #1
|
||||
add r5, sp, #0x18
|
||||
_022FC908:
|
||||
ldr r0, [r4]
|
||||
add r0, r0, r8, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
ldr r0, [r0, #0xb28]
|
||||
#endif
|
||||
bl EntityIsValid__022FC99C
|
||||
cmp r0, #0
|
||||
beq _022FC964
|
||||
#ifdef JAPAN
|
||||
mul r1, sb, r4
|
||||
ldr r0, [r5]
|
||||
add r0, r0, #0x56
|
||||
add r2, r0, #0x800
|
||||
ldrb r0, [r2, r1]
|
||||
add r2, r2, r1
|
||||
tst r0, #1
|
||||
movne r0, r8
|
||||
moveq r0, r7
|
||||
#else
|
||||
ldr r0, [r4]
|
||||
add r1, r8, r8, lsl #3
|
||||
add r0, r0, #0x56
|
||||
add r2, r0, #0x800
|
||||
ldrb r0, [r2, r1, lsl #6]
|
||||
add r2, r2, r1, lsl #6
|
||||
tst r0, #1
|
||||
movne r0, r7
|
||||
moveq r0, r6
|
||||
#endif
|
||||
tst r0, #0xff
|
||||
ldrneb r1, [r2, #1]
|
||||
cmpne r1, #0
|
||||
#ifdef JAPAN
|
||||
addne r0, sb, #1
|
||||
andne r0, r0, #0xff
|
||||
strneb r0, [r6, r1]
|
||||
strneb r0, [r2, #1]
|
||||
_022FC964:
|
||||
add r0, sb, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov sb, r0, asr #0x10
|
||||
cmp sb, #4
|
||||
#else
|
||||
addne r0, r8, #1
|
||||
andne r0, r0, #0xff
|
||||
strneb r0, [r5, r1]
|
||||
strneb r0, [r2, #1]
|
||||
_022FC964:
|
||||
add r0, r8, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r8, r0, asr #0x10
|
||||
cmp r8, #4
|
||||
#endif
|
||||
blt _022FC908
|
||||
add r0, sp, #0x18
|
||||
bl sub_0200F9B4
|
||||
bl DungeonRngSetPrimary
|
||||
add sp, sp, #0x44
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_022FC98C: .word DUNGEON_PTR
|
||||
_022FC990: .word 0x0000017B
|
||||
_022FC994: .word 0x000003D3
|
||||
_022FC998: .word ov29_02351E28
|
||||
arm_func_end SpawnTeam
|
||||
|
|
|
|||
918
asm/overlay_29_022FBDF0.s
Normal file
918
asm/overlay_29_022FBDF0.s
Normal file
|
|
@ -0,0 +1,918 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022FBDF0.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_022FBDF0
|
||||
ov29_022FBDF0: ; 0x022FBDF0
|
||||
ldr r0, [r0, #0xb4]
|
||||
ldr ip, _022FBE00 ; =IsSecretBazaarNpcBehavior
|
||||
ldrb r0, [r0, #0xbc]
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_022FBE00: .word IsSecretBazaarNpcBehavior
|
||||
arm_func_end ov29_022FBDF0
|
||||
|
||||
arm_func_start ov29_022FBE04
|
||||
ov29_022FBE04: ; 0x022FBE04
|
||||
stmdb sp!, {r3, lr}
|
||||
ldrb r0, [r0, #6]
|
||||
cmp r0, #0
|
||||
bne _022FBE4C
|
||||
ldr r0, _022FBE54 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #0x748]
|
||||
bl GetTurnLimit
|
||||
ldr r1, _022FBE54 ; =DUNGEON_PTR
|
||||
ldr r1, [r1]
|
||||
add r1, r1, #0x700
|
||||
ldrsh r1, [r1, #0x84]
|
||||
cmp r1, r0
|
||||
bne _022FBE4C
|
||||
bl IsFullFloorFixedRoom
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
ldmneia sp!, {r3, pc}
|
||||
_022FBE4C:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022FBE54: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBE04
|
||||
|
||||
arm_func_start InitOtherMonsterData
|
||||
InitOtherMonsterData: ; 0x022FBE58
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r4, r0
|
||||
ldr ip, [r4, #0xb4]
|
||||
mov r6, #1
|
||||
strb r6, [ip, #0x100]
|
||||
ldrsh r5, [ip, #0x12]
|
||||
ldrsh r3, [ip, #0x16]
|
||||
ldr r7, _022FBF04 ; =FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE
|
||||
mov r0, #0xc
|
||||
add r5, r5, r3
|
||||
smlabb r3, r1, r0, r7
|
||||
rsb lr, r6, #0x3e8
|
||||
cmp r5, lr
|
||||
movgt r5, lr
|
||||
strh r5, [ip, #0x14]
|
||||
mov r0, #0
|
||||
strh r0, [ip, #0x16]
|
||||
strh r0, [ip, #0x18]
|
||||
ldrsh r5, [r3, #2]
|
||||
add lr, ip, #0x100
|
||||
add r0, ip, #0x90
|
||||
strh r5, [ip, #0x12]
|
||||
ldrsh r5, [r3, #2]
|
||||
strh r5, [ip, #0x10]
|
||||
ldrb r5, [r3, #6]
|
||||
strb r5, [ip, #0x1a]
|
||||
ldrb r5, [r3, #7]
|
||||
strb r5, [ip, #0x1b]
|
||||
ldrb r5, [r3, #8]
|
||||
strb r5, [ip, #0x1c]
|
||||
ldrb r3, [r3, #9]
|
||||
strb r3, [ip, #0x1d]
|
||||
#ifdef JAPAN
|
||||
strh r1, [lr, #0x64]
|
||||
strb r2, [ip, #0x166]
|
||||
#else
|
||||
strh r1, [lr, #0x68]
|
||||
strb r2, [ip, #0x16a]
|
||||
#endif
|
||||
ldrsh r1, [ip, #2]
|
||||
ldrsh r2, [ip, #0xe]
|
||||
bl EnableAllLearnableIqSkills
|
||||
mov r0, r4
|
||||
bl ov29_023021F0
|
||||
mov r0, r4
|
||||
mov r1, #1
|
||||
bl ov29_022FB83C
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_022FBF04: .word FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE
|
||||
arm_func_end InitOtherMonsterData
|
||||
|
||||
arm_func_start ov29_022FBF08
|
||||
ov29_022FBF08: ; 0x022FBF08
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r0, _022FBF2C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, #0x7cc]
|
||||
sub r0, r0, #1
|
||||
cmp r0, #1
|
||||
ldmhiia sp!, {r3, pc}
|
||||
bl LoadWazaP2
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022FBF2C: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBF08
|
||||
|
||||
arm_func_start ov29_022FBF30
|
||||
ov29_022FBF30: ; 0x022FBF30
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r0, _022FBF54 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, #0x7cc]
|
||||
sub r0, r0, #1
|
||||
cmp r0, #1
|
||||
ldmhiia sp!, {r3, pc}
|
||||
bl UnloadCurrentWazaP
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022FBF54: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022FBF30
|
||||
|
||||
arm_func_start InitEnemySpawnStats
|
||||
InitEnemySpawnStats: ; 0x022FBF58
|
||||
#ifdef JAPAN
|
||||
#define INIT_ENEMY_SPAWN_STATS_OFFSET -0x50
|
||||
#else
|
||||
#define INIT_ENEMY_SPAWN_STATS_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x218
|
||||
ldr r1, _022FC230 ; =DUNGEON_PTR
|
||||
mov r0, #0
|
||||
ldr r1, [r1]
|
||||
add r1, r1, #0xf4 + INIT_ENEMY_SPAWN_STATS_OFFSET
|
||||
add r5, r1, #0x3400
|
||||
bl DungeonRngSetSecondary
|
||||
bl ov29_022FBF08
|
||||
add r0, sp, #0x16
|
||||
mov r1, #0
|
||||
bl CopySpawnEntriesMaster
|
||||
mov r4, r0
|
||||
mov r6, #0
|
||||
b _022FC028
|
||||
_022FBF94:
|
||||
add r0, sp, #0x16
|
||||
add r7, r0, r6, lsl #3
|
||||
mov r0, r7
|
||||
bl GetMonsterIdFromSpawnEntry
|
||||
strh r0, [r5]
|
||||
mov r0, r7
|
||||
bl GetMonsterLevelFromSpawnEntry
|
||||
strh r0, [r5, #2]
|
||||
ldrsh r1, [r5]
|
||||
ldrsh r2, [r5, #2]
|
||||
add r0, r5, #4
|
||||
bl GetMonsterMoves
|
||||
ldrh r0, [r5, #4]
|
||||
cmp r0, #0
|
||||
moveq r0, #0x170
|
||||
streqh r0, [r5, #4]
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
bl GetMaxHpAtLevel
|
||||
strh r0, [r5, #0xc]
|
||||
mov r7, #0
|
||||
_022FBFE8:
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
mov r2, r7
|
||||
add r8, r5, r7
|
||||
bl GetOffensiveStatAtLevel
|
||||
strb r0, [r8, #0xe]
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
mov r2, r7
|
||||
bl GetDefensiveStatAtLevel
|
||||
add r7, r7, #1
|
||||
strb r0, [r8, #0x10]
|
||||
cmp r7, #2
|
||||
blt _022FBFE8
|
||||
add r5, r5, #0x12
|
||||
add r6, r6, #1
|
||||
_022FC028:
|
||||
cmp r6, r4
|
||||
blt _022FBF94
|
||||
mov r0, #0
|
||||
b _022FC040
|
||||
_022FC038:
|
||||
strh r0, [r5], #0x12
|
||||
add r6, r6, #1
|
||||
_022FC040:
|
||||
cmp r6, #0x40
|
||||
blt _022FC038
|
||||
cmp r4, #0x40
|
||||
bge _022FC0A8
|
||||
bl IsDestinationFloorWithFixedRoom
|
||||
cmp r0, #0
|
||||
bne _022FC0A8
|
||||
bl IsDestinationFloorWithMonster
|
||||
cmp r0, #0
|
||||
beq _022FC0A8
|
||||
mov r0, #0xa
|
||||
bl IsCurrentMissionType
|
||||
cmp r0, #0
|
||||
bne _022FC088
|
||||
mov r0, #9
|
||||
bl IsCurrentMissionType
|
||||
cmp r0, #0
|
||||
beq _022FC0A8
|
||||
_022FC088:
|
||||
add r0, sp, #8
|
||||
bl GetOutlawSpawnData
|
||||
add r0, sp, #0x16
|
||||
ldrsh r1, [sp, #0xc]
|
||||
ldrsh r2, [sp, #8]
|
||||
add r0, r0, r4, lsl #3
|
||||
bl SetMonsterLevelAndId
|
||||
add r4, r4, #1
|
||||
_022FC0A8:
|
||||
cmp r4, #0x40
|
||||
bge _022FC0E0
|
||||
ldr r0, _022FC230 ; =DUNGEON_PTR
|
||||
ldr r2, [r0]
|
||||
add r0, r2, #0x700
|
||||
ldrsh r1, [r0, #0xa8]
|
||||
cmp r1, #0
|
||||
beq _022FC0E0
|
||||
ldrb r1, [r2, #0x7aa]
|
||||
ldrsh r2, [r0, #0xa8]
|
||||
add r3, sp, #0x16
|
||||
add r0, r3, r4, lsl #3
|
||||
bl SetMonsterLevelAndId
|
||||
add r4, r4, #1
|
||||
_022FC0E0:
|
||||
mov r2, #0
|
||||
ldr r1, _022FC230 ; =DUNGEON_PTR
|
||||
mov sl, r2
|
||||
_022FC0EC:
|
||||
ldr r0, [r1]
|
||||
add r0, r0, r2
|
||||
add r0, r0, #0x3000
|
||||
add r2, r2, #1
|
||||
strb sl, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
cmp r2, #0x258
|
||||
blt _022FC0EC
|
||||
mvn r0, #0
|
||||
mov r5, #1
|
||||
str r0, [sp]
|
||||
b _022FC1E8
|
||||
_022FC118:
|
||||
ldr r6, [sp]
|
||||
mov r8, #0
|
||||
mov r7, r6
|
||||
b _022FC194
|
||||
_022FC128:
|
||||
add r0, sp, #0x16
|
||||
add sb, r0, r8, lsl #3
|
||||
mov r0, sb
|
||||
bl GetMonsterIdFromSpawnEntry
|
||||
mov fp, r0
|
||||
mov r0, sb
|
||||
bl GetMonsterLevelFromSpawnEntry
|
||||
str r0, [sp, #4]
|
||||
mov r0, fp
|
||||
mov r1, #0x258
|
||||
bl _s32_div_f
|
||||
ldr r0, _022FC230 ; =DUNGEON_PTR
|
||||
mov r1, r1, lsl #0x10
|
||||
ldr r0, [r0]
|
||||
mov sb, r1, asr #0x10
|
||||
add r0, r0, r1, asr #16
|
||||
add r0, r0, #0x3000
|
||||
ldrb r0, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
cmp r0, #0
|
||||
bne _022FC190
|
||||
ldr r1, [sp, #4]
|
||||
mov r0, sb
|
||||
bl GetExp
|
||||
cmp r7, r0
|
||||
movlt r7, r0
|
||||
movlt r6, sb
|
||||
_022FC190:
|
||||
add r8, r8, #1
|
||||
_022FC194:
|
||||
cmp r8, r4
|
||||
blt _022FC128
|
||||
cmp r6, #0
|
||||
blt _022FC1F0
|
||||
cmp r5, #0x100
|
||||
ble _022FC1C8
|
||||
ldr r0, _022FC230 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, r6
|
||||
add r1, r0, #0x3000
|
||||
mov r0, #1
|
||||
strb r0, [r1, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
b _022FC1E4
|
||||
_022FC1C8:
|
||||
ldr r0, _022FC230 ; =DUNGEON_PTR
|
||||
rsb r1, r5, #0x100
|
||||
ldr r0, [r0]
|
||||
add r5, r5, #2
|
||||
add r0, r0, r6
|
||||
add r0, r0, #0x3000
|
||||
strb r1, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
_022FC1E4:
|
||||
add sl, sl, #1
|
||||
_022FC1E8:
|
||||
cmp sl, r4
|
||||
blt _022FC118
|
||||
_022FC1F0:
|
||||
ldr r1, _022FC230 ; =DUNGEON_PTR
|
||||
mov r4, #0
|
||||
mov r2, #1
|
||||
_022FC1FC:
|
||||
ldr r0, [r1]
|
||||
add r0, r0, r4
|
||||
add r0, r0, #0x3000
|
||||
ldrb r3, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
add r4, r4, #1
|
||||
cmp r3, #0
|
||||
streqb r2, [r0, #0xb74 + INIT_ENEMY_SPAWN_STATS_OFFSET]
|
||||
cmp r4, #0x258
|
||||
blt _022FC1FC
|
||||
bl ov29_022FBF30
|
||||
bl DungeonRngSetPrimary
|
||||
add sp, sp, #0x218
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_022FC230: .word DUNGEON_PTR
|
||||
arm_func_end InitEnemySpawnStats
|
||||
|
||||
arm_func_start InitEnemyStatsAndMoves
|
||||
InitEnemyStatsAndMoves: ; 0x022FC234
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #8
|
||||
mov sl, r0
|
||||
ldrsh r0, [sp, #0x30]
|
||||
mov sb, r1
|
||||
mov r1, #0x258
|
||||
mov r8, r2
|
||||
mov r7, r3
|
||||
ldr r6, [sp, #0x34]
|
||||
bl _s32_div_f
|
||||
mov r0, r1, lsl #0x10
|
||||
ldr r2, _022FC464 ; =DUNGEON_PTR
|
||||
mov r4, r0, asr #0x10
|
||||
ldr r1, [r2]
|
||||
mov fp, #0
|
||||
#ifdef JAPAN
|
||||
add r0, r1, #0xa4
|
||||
#else
|
||||
add r0, r1, #0xf4
|
||||
#endif
|
||||
add r5, r0, #0x3400
|
||||
mov r3, r5
|
||||
mov r0, #0x12
|
||||
b _022FC314
|
||||
_022FC284:
|
||||
mul r2, fp, r0
|
||||
ldrsh r1, [r3, r2]
|
||||
add r5, r3, r2
|
||||
cmp r1, #0
|
||||
beq _022FC31C
|
||||
cmp r1, r4
|
||||
ldreqsh r1, [r5, #2]
|
||||
cmpeq r1, r6
|
||||
bne _022FC310
|
||||
mov r1, r4
|
||||
mov r2, r6
|
||||
add r0, r5, #4
|
||||
bl GetMonsterMoves
|
||||
mov r4, #0
|
||||
_022FC2BC:
|
||||
add r0, r5, r4, lsl #1
|
||||
ldrh r1, [r0, #4]
|
||||
add r0, sl, r4, lsl #3
|
||||
bl InitMoveCheckId
|
||||
add r4, r4, #1
|
||||
cmp r4, #4
|
||||
blt _022FC2BC
|
||||
ldrsh r0, [r5, #0xc]
|
||||
mov r2, #0
|
||||
strh r0, [sb]
|
||||
_022FC2E4:
|
||||
add r1, r5, r2
|
||||
ldrb r0, [r1, #0xe]
|
||||
strb r0, [r8, r2]
|
||||
ldrb r0, [r1, #0x10]
|
||||
strb r0, [r7, r2]
|
||||
add r2, r2, #1
|
||||
cmp r2, #2
|
||||
blt _022FC2E4
|
||||
mov r0, #0
|
||||
strb r0, [sl, #0x20]
|
||||
b _022FC45C
|
||||
_022FC310:
|
||||
add fp, fp, #1
|
||||
_022FC314:
|
||||
cmp fp, #0x40
|
||||
blt _022FC284
|
||||
_022FC31C:
|
||||
cmp fp, #0x40
|
||||
bne _022FC3A4
|
||||
add r0, sp, #0
|
||||
mov r1, r4
|
||||
mov r2, r6
|
||||
bl GetMonsterMoves
|
||||
mov r5, #0
|
||||
add fp, sp, #0
|
||||
_022FC33C:
|
||||
mov r0, r5, lsl #1
|
||||
ldrh r1, [fp, r0]
|
||||
add r0, sl, r5, lsl #3
|
||||
bl InitMoveCheckId
|
||||
add r5, r5, #1
|
||||
cmp r5, #4
|
||||
blt _022FC33C
|
||||
mov r0, r4
|
||||
mov r1, r6
|
||||
bl GetMaxHpAtLevel
|
||||
strh r0, [sb]
|
||||
mov r5, #0
|
||||
_022FC36C:
|
||||
mov r0, r4
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl GetOffensiveStatAtLevel
|
||||
strb r0, [r8, r5]
|
||||
mov r0, r4
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl GetDefensiveStatAtLevel
|
||||
strb r0, [r7, r5]
|
||||
add r5, r5, #1
|
||||
cmp r5, #2
|
||||
blt _022FC36C
|
||||
b _022FC454
|
||||
_022FC3A4:
|
||||
strh r4, [r5]
|
||||
mov r1, r4
|
||||
mov r2, r6
|
||||
strh r6, [r5, #2]
|
||||
add r0, r5, #4
|
||||
bl GetMonsterMoves
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
bl GetMaxHpAtLevel
|
||||
strh r0, [r5, #0xc]
|
||||
mov r6, #0
|
||||
_022FC3D0:
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
mov r2, r6
|
||||
add r4, r5, r6
|
||||
bl GetOffensiveStatAtLevel
|
||||
strb r0, [r4, #0xe]
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
mov r2, r6
|
||||
bl GetDefensiveStatAtLevel
|
||||
add r6, r6, #1
|
||||
strb r0, [r4, #0x10]
|
||||
cmp r6, #2
|
||||
blt _022FC3D0
|
||||
mov r4, #0
|
||||
_022FC40C:
|
||||
add r0, r5, r4, lsl #1
|
||||
ldrh r1, [r0, #4]
|
||||
add r0, sl, r4, lsl #3
|
||||
bl InitMoveCheckId
|
||||
add r4, r4, #1
|
||||
cmp r4, #4
|
||||
blt _022FC40C
|
||||
ldrsh r0, [r5, #0xc]
|
||||
mov r2, #0
|
||||
strh r0, [sb]
|
||||
_022FC434:
|
||||
add r1, r5, r2
|
||||
ldrb r0, [r1, #0xe]
|
||||
strb r0, [r8, r2]
|
||||
ldrb r0, [r1, #0x10]
|
||||
strb r0, [r7, r2]
|
||||
add r2, r2, #1
|
||||
cmp r2, #2
|
||||
blt _022FC434
|
||||
_022FC454:
|
||||
mov r0, #0
|
||||
strb r0, [sl, #0x20]
|
||||
_022FC45C:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_022FC464: .word DUNGEON_PTR
|
||||
arm_func_end InitEnemyStatsAndMoves
|
||||
|
||||
arm_func_start ov29_022FC468
|
||||
ov29_022FC468: ; 0x022FC468
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
ldr r4, [sp, #0x24]
|
||||
mov sb, r0
|
||||
cmp r4, #0xb
|
||||
mov r0, #0
|
||||
cmp r4, #0xc
|
||||
moveq r0, #1
|
||||
cmp r4, #0xd
|
||||
moveq r0, #2
|
||||
cmp r4, #0xe
|
||||
moveq r0, #3
|
||||
mov r8, r1
|
||||
mov r7, r2
|
||||
mov r6, r3
|
||||
ldr r5, [sp, #0x20]
|
||||
bl GetExplorerMazeMonster
|
||||
mov r4, r0
|
||||
mov r0, sb
|
||||
add r1, r4, #0x22
|
||||
bl GroundToDungeonMoveset
|
||||
ldrsh r0, [r4, #0xa]
|
||||
mov r2, #0
|
||||
strh r0, [r8]
|
||||
_022FC4C4:
|
||||
add r1, r4, r2
|
||||
ldrb r0, [r1, #0xc]
|
||||
strb r0, [r7, r2]
|
||||
ldrb r0, [r1, #0xe]
|
||||
strb r0, [r6, r2]
|
||||
add r2, r2, #1
|
||||
cmp r2, #2
|
||||
blt _022FC4C4
|
||||
ldrsh r1, [r4, #8]
|
||||
ldr r0, _022FC508 ; =IQ_SKILLS
|
||||
ldr r0, [r0, #0x20]
|
||||
strh r1, [r5]
|
||||
cmp r1, r0
|
||||
strlth r0, [r5]
|
||||
mov r0, #0
|
||||
strb r0, [sb, #0x20]
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_022FC508: .word IQ_SKILLS
|
||||
arm_func_end ov29_022FC468
|
||||
|
||||
arm_func_start SpawnTeam
|
||||
SpawnTeam: ; 0x022FC50C
|
||||
#ifdef JAPAN
|
||||
#define SPAWN_TEAM_OFFSET -0xA4
|
||||
#else
|
||||
#define SPAWN_TEAM_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x44
|
||||
mov sl, r0
|
||||
mov r0, #0
|
||||
bl DungeonRngSetSecondary
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r1, r0, #0xcc00
|
||||
ldrsh r0, [r1, #0xe0 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r1, [r1, #0xe2 + SPAWN_TEAM_OFFSET]
|
||||
bl GetTile
|
||||
ldrb fp, [r0, #7]
|
||||
mov r4, #0
|
||||
_022FC540:
|
||||
mov r0, r4
|
||||
bl GetActiveTeamMember
|
||||
add r1, r4, #1
|
||||
mov r1, r1, lsl #0x10
|
||||
strh r4, [r0, #0xa]
|
||||
mov r4, r1, asr #0x10
|
||||
cmp r4, #4
|
||||
blt _022FC540
|
||||
mov r7, #0
|
||||
mov r6, #1
|
||||
mov r8, r7
|
||||
mov r5, r7
|
||||
mov sb, r6
|
||||
add r4, sp, #0x34
|
||||
_022FC578:
|
||||
mov r0, r8
|
||||
bl GetActiveTeamMember
|
||||
ldrb r1, [r0]
|
||||
tst r1, #1
|
||||
movne r2, r6
|
||||
moveq r2, r5
|
||||
tst r2, #0xff
|
||||
beq _022FC5B0
|
||||
tst r1, #2
|
||||
movne r1, sb
|
||||
moveq r1, #0
|
||||
tst r1, #0xff
|
||||
strne r0, [r4, r7, lsl #2]
|
||||
addne r7, r7, #1
|
||||
_022FC5B0:
|
||||
add r0, r8, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r8, r0, asr #0x10
|
||||
cmp r8, #4
|
||||
blt _022FC578
|
||||
mov r1, #0
|
||||
add r0, sp, #0x34
|
||||
b _022FC5D8
|
||||
_022FC5D0:
|
||||
str r1, [r0, r7, lsl #2]
|
||||
add r7, r7, #1
|
||||
_022FC5D8:
|
||||
cmp r7, #4
|
||||
blt _022FC5D0
|
||||
mov r8, #0
|
||||
mov r7, r8
|
||||
mov r3, r8
|
||||
mov r4, #1
|
||||
mov r2, r8
|
||||
add r5, sp, #0x34
|
||||
add r1, sp, #0x24
|
||||
_022FC5FC:
|
||||
ldr r6, [r5, r7, lsl #2]
|
||||
cmp r6, #0
|
||||
beq _022FC628
|
||||
ldrb r0, [r6, #1]
|
||||
cmp r0, #0
|
||||
movne r0, r4
|
||||
moveq r0, r3
|
||||
tst r0, #0xff
|
||||
strne r6, [r1, r8, lsl #2]
|
||||
strne r2, [r5, r7, lsl #2]
|
||||
addne r8, r8, #1
|
||||
_022FC628:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
cmp r7, #4
|
||||
blt _022FC5FC
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #0x75c]
|
||||
cmp r0, #0
|
||||
bne _022FC698
|
||||
mov r7, #0
|
||||
mov r4, r7
|
||||
add r5, sp, #0x34
|
||||
add sb, sp, #0x24
|
||||
_022FC660:
|
||||
ldr r6, [r5, r7, lsl #2]
|
||||
cmp r6, #0
|
||||
beq _022FC684
|
||||
ldrb r0, [r6, #3]
|
||||
bl JoinedAtRangeCheck2Veneer
|
||||
cmp r0, #0
|
||||
strne r6, [sb, r8, lsl #2]
|
||||
strne r4, [r5, r7, lsl #2]
|
||||
addne r8, r8, #1
|
||||
_022FC684:
|
||||
add r0, r7, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, asr #0x10
|
||||
cmp r7, #4
|
||||
blt _022FC660
|
||||
_022FC698:
|
||||
mov r4, #0
|
||||
mov r2, r4
|
||||
add r1, sp, #0x24
|
||||
add r3, sp, #0x34
|
||||
_022FC6A8:
|
||||
ldr r0, [r3, r4, lsl #2]
|
||||
cmp r0, #0
|
||||
strne r0, [r1, r8, lsl #2]
|
||||
add r0, r4, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
strne r2, [r3, r4, lsl #2]
|
||||
mov r4, r0, asr #0x10
|
||||
addne r8, r8, #1
|
||||
cmp r4, #4
|
||||
blt _022FC6A8
|
||||
mov r1, #0
|
||||
add r0, sp, #0x24
|
||||
b _022FC6E4
|
||||
_022FC6DC:
|
||||
str r1, [r0, r8, lsl #2]
|
||||
add r8, r8, #1
|
||||
_022FC6E4:
|
||||
cmp r8, #4
|
||||
blt _022FC6DC
|
||||
mov sb, #0
|
||||
_022FC6F0:
|
||||
add r0, sp, #0x24
|
||||
ldr r5, [r0, sb, lsl #2]
|
||||
mov r6, #0
|
||||
cmp r5, #0
|
||||
beq _022FC8BC
|
||||
ldrsh r1, [r5, #0xc]
|
||||
sub r0, r1, #0x17c
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
cmp r0, #2
|
||||
ldrls r0, _022FC990 ; =0x0000017B
|
||||
strlsh r0, [r5, #0xc]
|
||||
bls _022FC74C
|
||||
sub r0, r1, #0x3d4
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
cmp r0, #2
|
||||
ldrls r0, _022FC994 ; =0x000003D3
|
||||
strlsh r0, [r5, #0xc]
|
||||
_022FC74C:
|
||||
mov r4, #0
|
||||
_022FC750:
|
||||
ldr r0, _022FC998 ; =ov29_02351E28
|
||||
mov r1, r4, lsl #2
|
||||
ldrh r1, [r0, r1]
|
||||
add r0, r0, r4, lsl #2
|
||||
ldrh r0, [r0, #2]
|
||||
strh r1, [sp, #0x1e]
|
||||
ldrsh r8, [sp, #0x1e]
|
||||
strh r0, [sp, #0x20]
|
||||
cmp r8, #0x63
|
||||
beq _022FC808
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
ldrsh r7, [sp, #0x20]
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0xcc00
|
||||
ldrsh r1, [r0, #0xe2 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r2, [r0, #0xe0 + SPAWN_TEAM_OFFSET]
|
||||
add r1, r7, r1
|
||||
add r0, r8, r2
|
||||
bl GetTile
|
||||
mov r1, r0
|
||||
ldrb r0, [r1, #7]
|
||||
cmp r0, fp
|
||||
bne _022FC800
|
||||
ldrsh r0, [r5, #0xc]
|
||||
bl IsInvalidSpawnTile
|
||||
cmp r0, #0
|
||||
bne _022FC800
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
mov r1, #0
|
||||
ldr r2, [r0]
|
||||
mov r0, #1
|
||||
str r1, [sp]
|
||||
stmib sp, {r0, r1, sl}
|
||||
str r1, [sp, #0x10]
|
||||
add r0, r2, #0xcc00
|
||||
ldrsh r1, [r0, #0xe0 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r2, [r0, #0xe2 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r0, [r5, #0xc]
|
||||
mov r3, r5
|
||||
add r1, r8, r1
|
||||
add r2, r7, r2
|
||||
bl InitTeamMember
|
||||
mov r6, #1
|
||||
b _022FC808
|
||||
_022FC800:
|
||||
add r4, r4, #1
|
||||
b _022FC750
|
||||
_022FC808:
|
||||
cmp r6, #0
|
||||
bne _022FC8BC
|
||||
ldr r8, _022FC998 ; =ov29_02351E28
|
||||
mov r7, #0
|
||||
_022FC818:
|
||||
mov r0, r7, lsl #2
|
||||
ldrh r1, [r8, r0]
|
||||
add r0, r8, r7, lsl #2
|
||||
ldrh r0, [r0, #2]
|
||||
strh r1, [sp, #0x14]
|
||||
ldrsh r6, [sp, #0x14]
|
||||
strh r0, [sp, #0x16]
|
||||
cmp r6, #0x63
|
||||
beq _022FC8BC
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
ldrsh r4, [sp, #0x16]
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0xcc00
|
||||
ldrsh r1, [r0, #0xe2 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r2, [r0, #0xe0 + SPAWN_TEAM_OFFSET]
|
||||
add r1, r4, r1
|
||||
add r0, r6, r2
|
||||
bl GetTile
|
||||
mov r1, r0
|
||||
ldrsh r0, [r5, #0xc]
|
||||
bl IsInvalidSpawnTile
|
||||
cmp r0, #0
|
||||
bne _022FC8B4
|
||||
ldr r0, _022FC98C ; =DUNGEON_PTR
|
||||
mov r1, #0
|
||||
ldr r2, [r0]
|
||||
mov r0, #1
|
||||
str r1, [sp]
|
||||
stmib sp, {r0, r1, sl}
|
||||
str r1, [sp, #0x10]
|
||||
add r0, r2, #0xcc00
|
||||
ldrsh r1, [r0, #0xe0 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r2, [r0, #0xe2 + SPAWN_TEAM_OFFSET]
|
||||
ldrsh r0, [r5, #0xc]
|
||||
mov r3, r5
|
||||
add r1, r6, r1
|
||||
add r2, r4, r2
|
||||
bl InitTeamMember
|
||||
b _022FC8BC
|
||||
_022FC8B4:
|
||||
add r7, r7, #1
|
||||
b _022FC818
|
||||
_022FC8BC:
|
||||
add r0, sb, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov sb, r0, asr #0x10
|
||||
cmp sb, #4
|
||||
blt _022FC6F0
|
||||
bl ov29_022FCD04
|
||||
mov r2, #0
|
||||
#ifdef JAPAN
|
||||
mov sb, r2
|
||||
#else
|
||||
mov r8, r2
|
||||
#endif
|
||||
add r1, sp, #0x18
|
||||
_022FC8E0:
|
||||
add r0, r2, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
#ifdef JAPAN
|
||||
strb sb, [r1, r2]
|
||||
#else
|
||||
strb r8, [r1, r2]
|
||||
#endif
|
||||
mov r2, r0, asr #0x10
|
||||
cmp r2, #5
|
||||
blt _022FC8E0
|
||||
#ifdef JAPAN
|
||||
ldr r5, _022FC98C ; =DUNGEON_PTR
|
||||
mov r7, #0
|
||||
mov r8, #1
|
||||
add r6, sp, #0x18
|
||||
mov r4, #0x23c
|
||||
_022FC908:
|
||||
ldr r0, [r5]
|
||||
add r0, r0, sb, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
ldr r0, [r0, #0xa84]
|
||||
#else
|
||||
ldr r4, _022FC98C ; =DUNGEON_PTR
|
||||
mov r6, #0
|
||||
mov r7, #1
|
||||
add r5, sp, #0x18
|
||||
_022FC908:
|
||||
ldr r0, [r4]
|
||||
add r0, r0, r8, lsl #2
|
||||
add r0, r0, #0x12000
|
||||
ldr r0, [r0, #0xb28]
|
||||
#endif
|
||||
bl EntityIsValid__022FC99C
|
||||
cmp r0, #0
|
||||
beq _022FC964
|
||||
#ifdef JAPAN
|
||||
mul r1, sb, r4
|
||||
ldr r0, [r5]
|
||||
add r0, r0, #0x56
|
||||
add r2, r0, #0x800
|
||||
ldrb r0, [r2, r1]
|
||||
add r2, r2, r1
|
||||
tst r0, #1
|
||||
movne r0, r8
|
||||
moveq r0, r7
|
||||
#else
|
||||
ldr r0, [r4]
|
||||
add r1, r8, r8, lsl #3
|
||||
add r0, r0, #0x56
|
||||
add r2, r0, #0x800
|
||||
ldrb r0, [r2, r1, lsl #6]
|
||||
add r2, r2, r1, lsl #6
|
||||
tst r0, #1
|
||||
movne r0, r7
|
||||
moveq r0, r6
|
||||
#endif
|
||||
tst r0, #0xff
|
||||
ldrneb r1, [r2, #1]
|
||||
cmpne r1, #0
|
||||
#ifdef JAPAN
|
||||
addne r0, sb, #1
|
||||
andne r0, r0, #0xff
|
||||
strneb r0, [r6, r1]
|
||||
strneb r0, [r2, #1]
|
||||
_022FC964:
|
||||
add r0, sb, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov sb, r0, asr #0x10
|
||||
cmp sb, #4
|
||||
#else
|
||||
addne r0, r8, #1
|
||||
andne r0, r0, #0xff
|
||||
strneb r0, [r5, r1]
|
||||
strneb r0, [r2, #1]
|
||||
_022FC964:
|
||||
add r0, r8, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r8, r0, asr #0x10
|
||||
cmp r8, #4
|
||||
#endif
|
||||
blt _022FC908
|
||||
add r0, sp, #0x18
|
||||
bl sub_0200F9B4
|
||||
bl DungeonRngSetPrimary
|
||||
add sp, sp, #0x44
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_022FC98C: .word DUNGEON_PTR
|
||||
_022FC990: .word 0x0000017B
|
||||
_022FC994: .word 0x000003D3
|
||||
_022FC998: .word ov29_02351E28
|
||||
arm_func_end SpawnTeam
|
||||
|
|
@ -553,7 +553,7 @@ SpawnMonster: ; 0x022FD084
|
|||
strh r1, [r5, #0xe]
|
||||
bl ov29_023021F0
|
||||
ldrb r0, [r7, #2]
|
||||
bl ov29_022EFAE8
|
||||
bl IsLoneOutlaw
|
||||
cmp r0, #0
|
||||
beq _022FD154
|
||||
mov r0, #9
|
||||
|
|
@ -616,7 +616,7 @@ _022FD1E8:
|
|||
strb r0, [r5, #8]
|
||||
_022FD1F0:
|
||||
ldrb r0, [r7, #2]
|
||||
bl ov29_022EFAE8
|
||||
bl IsLoneOutlaw
|
||||
cmp r0, #0
|
||||
beq _022FD224
|
||||
ldr r0, _022FD30C ; =ov10_022C45A4
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ _02302034:
|
|||
bl DisableIqSkill
|
||||
_02302068:
|
||||
mov r0, r4
|
||||
bl ov29_022FBDE0
|
||||
bl IsLoneOutlawVeneer
|
||||
cmp r0, #0
|
||||
bne _0230208C
|
||||
ldr r0, _023021EC ; =MIN_IQ_ITEM_MASTER
|
||||
|
|
|
|||
|
|
@ -2679,7 +2679,7 @@ _0230B04C:
|
|||
cmp r0, #0
|
||||
beq _0230B0B4
|
||||
mov r0, r7
|
||||
bl ov29_022FBDE0
|
||||
bl IsLoneOutlawVeneer
|
||||
cmp r0, #0
|
||||
beq _0230B0B4
|
||||
ldrb r0, [r7, #0x62]
|
||||
|
|
@ -3283,7 +3283,7 @@ _0230A5E0:
|
|||
cmp r0, #0
|
||||
beq _0230A648
|
||||
mov r0, r4
|
||||
bl ov29_022FBDE0
|
||||
bl IsLoneOutlawVeneer
|
||||
cmp r0, #0
|
||||
beq _0230A648
|
||||
ldrb r0, [r4, #0x62]
|
||||
|
|
|
|||
|
|
@ -326,7 +326,7 @@ _0232C8E4:
|
|||
cmp r0, #0
|
||||
beq _0232C96C
|
||||
mov r0, r7
|
||||
bl ov29_022FBDE0
|
||||
bl IsLoneOutlawVeneer
|
||||
cmp r0, #0
|
||||
bne _0232C96C
|
||||
ldrb r0, [r7, #6]
|
||||
|
|
|
|||
|
|
@ -1185,7 +1185,7 @@ _023393DC:
|
|||
cmp r0, #2
|
||||
moveq r0, r5
|
||||
beq _02339410
|
||||
bl ov29_022EFAE8
|
||||
bl IsLoneOutlaw
|
||||
_02339410:
|
||||
cmp r0, #0
|
||||
movne r5, #0xc
|
||||
|
|
|
|||
9
include/dungeon_logic_6.h
Normal file
9
include/dungeon_logic_6.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef PMDSKY_DUNGEON_LOGIC_6_H
|
||||
#define PMDSKY_DUNGEON_LOGIC_6_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "util.h"
|
||||
|
||||
bool8 IsLoneOutlaw(enum monster_behavior behavior);
|
||||
|
||||
#endif //PMDSKY_DUNGEON_LOGIC_6_H
|
||||
9
include/dungeon_logic_7.h
Normal file
9
include/dungeon_logic_7.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef PMDSKY_DUNGEON_LOGIC_7_H
|
||||
#define PMDSKY_DUNGEON_LOGIC_7_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "util.h"
|
||||
|
||||
bool8 IsLoneOutlawVeneer(struct monster* monster_info);
|
||||
|
||||
#endif //PMDSKY_DUNGEON_LOGIC_7_H
|
||||
4
main.lsf
4
main.lsf
|
|
@ -394,6 +394,8 @@ Overlay OVY_29
|
|||
Object src/dungeon_util.o
|
||||
Object asm/overlay_29_rodata_0235173C.o
|
||||
Object asm/overlay_29_022EFA6C.o
|
||||
Object src/dungeon_logic_6.o
|
||||
Object asm/overlay_29_022EFB04.o
|
||||
Object src/overlay_29_022F0590.o
|
||||
Object asm/overlay_29_022F05B4.o
|
||||
Object src/overlay_29_022F528C.o
|
||||
|
|
@ -419,6 +421,8 @@ Overlay OVY_29
|
|||
Object asm/overlay_29_022FB678.o
|
||||
Object src/joined_at_checks.o
|
||||
Object asm/overlay_29_022FBB1C.o
|
||||
Object src/dungeon_logic_7.o
|
||||
Object asm/overlay_29_022FBDF0.o
|
||||
Object src/overlay_29_022FC99C.o
|
||||
Object asm/overlay_29_022FC9C0.o
|
||||
Object src/overlay_29_022FEEB8_eu.o
|
||||
|
|
|
|||
17
src/dungeon_logic_6.c
Normal file
17
src/dungeon_logic_6.c
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#include "dungeon_logic_6.h"
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "util.h"
|
||||
|
||||
bool8 IsLoneOutlaw(enum monster_behavior behavior)
|
||||
{
|
||||
bool8 result;
|
||||
|
||||
// If behavior is 1, 2 or 3
|
||||
if ((u32) (u8) (behavior + 0xFF) <= BEHAVIOR_FLEEING_OUTLAW) {
|
||||
result = TRUE;
|
||||
} else {
|
||||
result = FALSE;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
10
src/dungeon_logic_7.c
Normal file
10
src/dungeon_logic_7.c
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
#include "dungeon_logic_7.h"
|
||||
|
||||
#include "dungeon_logic_6.h"
|
||||
#include "dungeon_mode.h"
|
||||
#include "util.h"
|
||||
|
||||
bool8 IsLoneOutlawVeneer(struct monster* monster_info)
|
||||
{
|
||||
return IsLoneOutlaw(monster_info->monster_behavior);
|
||||
}
|
||||
|
|
@ -9,13 +9,13 @@
|
|||
#include "dg_random.h"
|
||||
#include "main_0205283C.h" // GetRecruitRate1 and GetRecruitRate2
|
||||
#include "overlay_29_0230E578.h" // ItemIsActive__0230E578
|
||||
#include "dungeon_logic_7.h"
|
||||
|
||||
extern bool8 IsRecruitingAllowed(u8 dungeon_id);
|
||||
extern bool8 IsFullFloorFixedRoom(void);
|
||||
extern bool8 IsLegendaryChallengeFloor(void);
|
||||
extern bool8 IsCurrentMissionTypeExact(u32 mission_type, u32 mission_subtype);
|
||||
extern bool8 IsMonsterOnTeam(s16 monsterId, s32 checkType);
|
||||
extern bool8 ov29_022FBDE0(struct monster* stats);
|
||||
extern void ov29_022E1B28(s32);
|
||||
extern void ov29_022E81F8(void);
|
||||
extern bool8 HasPlayedOldGame(void);
|
||||
|
|
@ -122,7 +122,7 @@ bool8 RecruitCheck(struct entity* leader, struct entity* target)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
if (ov29_022FBDE0(target_monster_info))
|
||||
if (IsLoneOutlawVeneer(target_monster_info))
|
||||
return FALSE;
|
||||
|
||||
if (!SpecificRecruitCheck(target_monster_info->id))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user