mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 07:28:17 -05:00
sub_804B534
This commit is contained in:
parent
6d4e2c2a07
commit
7ae74721b9
|
|
@ -5,788 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_804AFAC
|
||||
sub_804AFAC:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x44
|
||||
movs r0, 0
|
||||
mov r10, r0
|
||||
ldr r4, _0804B0E8
|
||||
ldr r0, [r4]
|
||||
ldr r1, _0804B0EC
|
||||
adds r1, r0
|
||||
mov r8, r1
|
||||
ldr r0, _0804B0F0
|
||||
ldr r1, _0804B0F4
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
ldr r2, [r4]
|
||||
ldr r3, _0804B0F8
|
||||
adds r1, r2, r3
|
||||
str r0, [r1]
|
||||
ldr r0, _0804B0FC
|
||||
mov r6, r10
|
||||
strb r6, [r0]
|
||||
ldr r0, _0804B100
|
||||
strb r6, [r0]
|
||||
ldr r0, _0804B104
|
||||
strb r6, [r0]
|
||||
ldr r5, _0804B108
|
||||
movs r3, 0
|
||||
ldr r1, _0804B10C
|
||||
ldr r0, _0804B110
|
||||
adds r2, r0
|
||||
movs r6, 0
|
||||
ldrsh r0, [r2, r6]
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x2
|
||||
bne _0804AFFC
|
||||
movs r3, 0x1
|
||||
_0804AFFC:
|
||||
strb r3, [r5]
|
||||
ldr r1, _0804B114
|
||||
movs r0, 0xFF
|
||||
strb r0, [r1]
|
||||
ldr r0, _0804B118
|
||||
mov r1, r10
|
||||
strb r1, [r0]
|
||||
ldr r1, _0804B11C
|
||||
mov r2, r8
|
||||
ldrb r0, [r2, 0x7]
|
||||
strh r0, [r1]
|
||||
ldr r1, _0804B120
|
||||
ldrb r0, [r2, 0x8]
|
||||
strh r0, [r1]
|
||||
ldr r1, _0804B124
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r1, _0804B128
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
str r0, [r1]
|
||||
str r0, [r1, 0x8]
|
||||
str r0, [r1, 0x4]
|
||||
str r0, [r1, 0xC]
|
||||
bl sub_804FD30
|
||||
ldr r3, [r4]
|
||||
mov r6, r8
|
||||
ldrb r2, [r6, 0x6]
|
||||
ldr r1, _0804B12C
|
||||
adds r0, r3, r1
|
||||
movs r1, 0
|
||||
strh r2, [r0]
|
||||
ldr r2, _0804B130
|
||||
adds r0, r3, r2
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
ldr r3, _0804B134
|
||||
adds r0, r3
|
||||
strb r1, [r0]
|
||||
ldr r1, _0804B138
|
||||
mov r6, r8
|
||||
ldrb r0, [r6, 0xC]
|
||||
str r0, [r1]
|
||||
movs r0, 0
|
||||
str r0, [sp, 0x40]
|
||||
_0804B058:
|
||||
ldr r0, _0804B0E8
|
||||
ldr r2, [r0]
|
||||
ldr r3, _0804B13C
|
||||
adds r1, r2, r3
|
||||
ldr r0, _0804B140
|
||||
strh r0, [r1]
|
||||
ldr r6, _0804B144
|
||||
adds r1, r2, r6
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
strh r0, [r1]
|
||||
ldr r0, _0804B148
|
||||
adds r1, r2, r0
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
strh r0, [r1]
|
||||
ldr r1, _0804B14C
|
||||
adds r2, r1
|
||||
strh r0, [r2]
|
||||
movs r2, 0
|
||||
mov r9, r2
|
||||
_0804B082:
|
||||
ldr r4, _0804B0E8
|
||||
ldr r0, [r4]
|
||||
ldr r3, _0804B150
|
||||
adds r0, r3
|
||||
movs r5, 0
|
||||
movs r1, 0
|
||||
mov r6, r9
|
||||
strh r6, [r0]
|
||||
mov r0, r9
|
||||
cmp r0, 0
|
||||
ble _0804B09C
|
||||
ldr r0, _0804B138
|
||||
str r1, [r0]
|
||||
_0804B09C:
|
||||
ldr r0, _0804B154
|
||||
strb r5, [r0]
|
||||
ldr r1, _0804B158
|
||||
ldr r0, _0804B140
|
||||
strh r0, [r1]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
strh r0, [r1, 0x2]
|
||||
bl sub_804FD30
|
||||
ldr r1, [r4]
|
||||
ldr r3, _0804B13C
|
||||
adds r2, r1, r3
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
strh r0, [r2]
|
||||
ldr r6, _0804B144
|
||||
adds r2, r1, r6
|
||||
strh r0, [r2]
|
||||
ldr r0, _0804B15C
|
||||
adds r1, r0
|
||||
strb r5, [r1]
|
||||
ldr r0, [r4]
|
||||
ldr r2, _0804B160
|
||||
adds r1, r0, r2
|
||||
movs r3, 0
|
||||
ldrsh r0, [r1, r3]
|
||||
cmp r0, 0
|
||||
beq _0804B164
|
||||
mov r1, r8
|
||||
bl sub_804C70C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0804B0E4
|
||||
b _0804B376
|
||||
_0804B0E4:
|
||||
b _0804B2F6
|
||||
.align 2, 0
|
||||
_0804B0E8: .4byte gDungeon
|
||||
_0804B0EC: .4byte 0x0001c574
|
||||
_0804B0F0: .4byte gUnknown_80F6DCC
|
||||
_0804B0F4: .4byte gDungeonFileArchive
|
||||
_0804B0F8: .4byte 0x00013568
|
||||
_0804B0FC: .4byte gUnknown_202F1AA
|
||||
_0804B100: .4byte gUnknown_202F1AB
|
||||
_0804B104: .4byte gUnknown_202F1AC
|
||||
_0804B108: .4byte gUnknown_202F1A8
|
||||
_0804B10C: .4byte gDungeonWaterType
|
||||
_0804B110: .4byte 0x00003a0e
|
||||
_0804B114: .4byte gUnknown_202F1B4
|
||||
_0804B118: .4byte gUnknown_202F1AE
|
||||
_0804B11C: .4byte gUnknown_202F1B0
|
||||
_0804B120: .4byte gUnknown_202F1B2
|
||||
_0804B124: .4byte gUnknown_202F1AD
|
||||
_0804B128: .4byte gUnknown_202F1B8
|
||||
_0804B12C: .4byte 0x00000664
|
||||
_0804B130: .4byte 0x00003a09
|
||||
_0804B134: .4byte 0x00003a0a
|
||||
_0804B138: .4byte gUnknown_202F1C8
|
||||
_0804B13C: .4byte 0x0000e218
|
||||
_0804B140: .4byte 0x0000ffff
|
||||
_0804B144: .4byte 0x0000e21a
|
||||
_0804B148: .4byte 0x0000e21c
|
||||
_0804B14C: .4byte 0x0000e21e
|
||||
_0804B150: .4byte 0x00003a16
|
||||
_0804B154: .4byte gUnknown_202F1A9
|
||||
_0804B158: .4byte gUnknown_202F1D8
|
||||
_0804B15C: .4byte 0x00003a08
|
||||
_0804B160: .4byte 0x00003a14
|
||||
_0804B164:
|
||||
mov r0, r8
|
||||
ldrb r7, [r0]
|
||||
movs r6, 0x20
|
||||
_0804B16A:
|
||||
cmp r7, 0x8
|
||||
beq _0804B17E
|
||||
movs r0, 0x2
|
||||
movs r1, 0x9
|
||||
bl DungeonRandRange
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x2
|
||||
movs r1, 0x8
|
||||
b _0804B18C
|
||||
_0804B17E:
|
||||
movs r0, 0x2
|
||||
movs r1, 0x5
|
||||
bl DungeonRandRange
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x2
|
||||
movs r1, 0x4
|
||||
_0804B18C:
|
||||
bl DungeonRandRange
|
||||
adds r4, r0, 0
|
||||
cmp r5, 0x6
|
||||
bgt _0804B19A
|
||||
cmp r4, 0x4
|
||||
ble _0804B1A4
|
||||
_0804B19A:
|
||||
subs r6, 0x1
|
||||
cmp r6, 0
|
||||
bne _0804B16A
|
||||
movs r5, 0x4
|
||||
movs r4, 0x4
|
||||
_0804B1A4:
|
||||
movs r0, 0x38
|
||||
adds r1, r5, 0
|
||||
bl __divsi3
|
||||
cmp r0, 0x7
|
||||
bgt _0804B1B2
|
||||
movs r5, 0x1
|
||||
_0804B1B2:
|
||||
movs r0, 0x20
|
||||
adds r1, r4, 0
|
||||
bl __divsi3
|
||||
cmp r0, 0x7
|
||||
bgt _0804B1C0
|
||||
movs r4, 0x1
|
||||
_0804B1C0:
|
||||
ldr r2, _0804B1EC
|
||||
ldr r0, [r2]
|
||||
ldr r1, _0804B1F0
|
||||
adds r0, r1
|
||||
movs r1, 0
|
||||
strb r1, [r0]
|
||||
ldr r0, [r2]
|
||||
ldr r2, _0804B1F4
|
||||
adds r0, r2
|
||||
movs r1, 0xFF
|
||||
strb r1, [r0]
|
||||
ldr r0, _0804B1F8
|
||||
str r7, [r0]
|
||||
movs r0, 0xF
|
||||
ands r0, r7
|
||||
cmp r0, 0xB
|
||||
bhi _0804B274
|
||||
lsls r0, 2
|
||||
ldr r1, _0804B1FC
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0804B1EC: .4byte gDungeon
|
||||
_0804B1F0: .4byte 0x00003a08
|
||||
_0804B1F4: .4byte 0x00003a0c
|
||||
_0804B1F8: .4byte gUnknown_202F1D0
|
||||
_0804B1FC: .4byte _0804B200
|
||||
.align 2, 0
|
||||
_0804B200:
|
||||
.4byte _0804B274
|
||||
.4byte _0804B230
|
||||
.4byte _0804B280
|
||||
.4byte _0804B298
|
||||
.4byte _0804B2A4
|
||||
.4byte _0804B2B0
|
||||
.4byte _0804B2CC
|
||||
.4byte _0804B2D8
|
||||
.4byte _0804B274
|
||||
.4byte _0804B2E0
|
||||
.4byte _0804B2E8
|
||||
.4byte _0804B250
|
||||
_0804B230:
|
||||
movs r0, 0x2
|
||||
bl DungeonRandInt
|
||||
adds r4, r0, 0x2
|
||||
ldr r1, _0804B24C
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
movs r0, 0x4
|
||||
adds r1, r4, 0
|
||||
mov r2, r8
|
||||
bl sub_804B634
|
||||
b _0804B2AA
|
||||
.align 2, 0
|
||||
_0804B24C: .4byte gUnknown_202F1AE
|
||||
_0804B250:
|
||||
movs r0, 0x2
|
||||
bl DungeonRandInt
|
||||
adds r4, r0, 0x2
|
||||
ldr r1, _0804B270
|
||||
movs r0, 0x2
|
||||
strb r0, [r1]
|
||||
movs r0, 0x4
|
||||
adds r1, r4, 0
|
||||
mov r2, r8
|
||||
bl sub_804B634
|
||||
movs r6, 0x1
|
||||
mov r10, r6
|
||||
b _0804B2F6
|
||||
.align 2, 0
|
||||
_0804B270: .4byte gUnknown_202F1AE
|
||||
_0804B274:
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
mov r2, r8
|
||||
bl sub_804B634
|
||||
b _0804B2D2
|
||||
_0804B280:
|
||||
bl sub_804C918
|
||||
ldr r0, _0804B290
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0804B294
|
||||
adds r0, r1
|
||||
b _0804B2BC
|
||||
.align 2, 0
|
||||
_0804B290: .4byte gDungeon
|
||||
_0804B294: .4byte 0x00003a08
|
||||
_0804B298:
|
||||
mov r0, r8
|
||||
bl sub_804B72C
|
||||
movs r2, 0x1
|
||||
mov r10, r2
|
||||
b _0804B2F6
|
||||
_0804B2A4:
|
||||
mov r0, r8
|
||||
bl sub_804BC80
|
||||
_0804B2AA:
|
||||
movs r3, 0x1
|
||||
mov r10, r3
|
||||
b _0804B2F6
|
||||
_0804B2B0:
|
||||
bl sub_804C9D0
|
||||
ldr r0, _0804B2C4
|
||||
ldr r0, [r0]
|
||||
ldr r6, _0804B2C8
|
||||
adds r0, r6
|
||||
_0804B2BC:
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
b _0804B2F6
|
||||
.align 2, 0
|
||||
_0804B2C4: .4byte gDungeon
|
||||
_0804B2C8: .4byte 0x00003a08
|
||||
_0804B2CC:
|
||||
mov r0, r8
|
||||
bl sub_804C0A8
|
||||
_0804B2D2:
|
||||
movs r0, 0x1
|
||||
mov r10, r0
|
||||
b _0804B2F6
|
||||
_0804B2D8:
|
||||
mov r0, r8
|
||||
bl sub_804C190
|
||||
b _0804B2F6
|
||||
_0804B2E0:
|
||||
mov r0, r8
|
||||
bl sub_804C2F4
|
||||
b _0804B2F6
|
||||
_0804B2E8:
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
mov r2, r8
|
||||
bl sub_804C53C
|
||||
movs r1, 0x1
|
||||
mov r10, r1
|
||||
_0804B2F6:
|
||||
bl sub_80518F0
|
||||
bl sub_804FCCC
|
||||
ldr r0, _0804B4B4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0804B36A
|
||||
movs r7, 0
|
||||
movs r1, 0
|
||||
mov r0, sp
|
||||
adds r0, 0x3F
|
||||
_0804B30E:
|
||||
strb r1, [r0]
|
||||
subs r0, 0x1
|
||||
cmp r0, sp
|
||||
bge _0804B30E
|
||||
movs r5, 0
|
||||
_0804B318:
|
||||
movs r4, 0
|
||||
adds r6, r5, 0x1
|
||||
_0804B31C:
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl GetTile
|
||||
adds r1, r0, 0
|
||||
ldrh r0, [r1]
|
||||
movs r2, 0x3
|
||||
ands r2, r0
|
||||
cmp r2, 0x1
|
||||
bne _0804B340
|
||||
ldrb r0, [r1, 0x9]
|
||||
cmp r0, 0xF0
|
||||
bhi _0804B340
|
||||
adds r7, 0x1
|
||||
cmp r0, 0x3F
|
||||
bhi _0804B340
|
||||
add r0, sp
|
||||
strb r2, [r0]
|
||||
_0804B340:
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x1F
|
||||
ble _0804B31C
|
||||
adds r5, r6, 0
|
||||
cmp r5, 0x37
|
||||
ble _0804B318
|
||||
movs r1, 0
|
||||
movs r4, 0
|
||||
_0804B350:
|
||||
mov r2, sp
|
||||
adds r0, r2, r4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0804B35C
|
||||
adds r1, 0x1
|
||||
_0804B35C:
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x3F
|
||||
ble _0804B350
|
||||
cmp r7, 0x1D
|
||||
ble _0804B36A
|
||||
cmp r1, 0x1
|
||||
bgt _0804B376
|
||||
_0804B36A:
|
||||
movs r3, 0x1
|
||||
add r9, r3
|
||||
mov r6, r9
|
||||
cmp r6, 0x9
|
||||
bgt _0804B376
|
||||
b _0804B082
|
||||
_0804B376:
|
||||
mov r0, r9
|
||||
cmp r0, 0xA
|
||||
bne _0804B398
|
||||
ldr r1, _0804B4B8
|
||||
ldr r0, _0804B4BC
|
||||
strh r0, [r1]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
strh r0, [r1, 0x2]
|
||||
bl sub_804C918
|
||||
ldr r0, _0804B4C0
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0804B4C4
|
||||
adds r0, r1
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
_0804B398:
|
||||
bl sub_804E9DC
|
||||
mov r2, r10
|
||||
cmp r2, 0
|
||||
beq _0804B3AA
|
||||
movs r0, 0x1
|
||||
mov r1, r8
|
||||
bl sub_80506F0
|
||||
_0804B3AA:
|
||||
movs r0, 0x64
|
||||
bl DungeonRandInt
|
||||
movs r4, 0
|
||||
mov r3, r8
|
||||
ldrb r3, [r3, 0x19]
|
||||
cmp r0, r3
|
||||
bge _0804B3BC
|
||||
movs r4, 0x1
|
||||
_0804B3BC:
|
||||
mov r0, r8
|
||||
adds r1, r4, 0
|
||||
bl sub_804FF08
|
||||
mov r0, r8
|
||||
adds r1, r4, 0
|
||||
bl sub_8050438
|
||||
bl sub_804FBE8
|
||||
ldr r5, _0804B4C0
|
||||
ldr r1, [r5]
|
||||
ldr r6, _0804B4C8
|
||||
adds r0, r1, r6
|
||||
movs r2, 0
|
||||
ldrsh r0, [r0, r2]
|
||||
movs r4, 0x1
|
||||
negs r4, r4
|
||||
cmp r0, r4
|
||||
beq _0804B42A
|
||||
ldr r3, _0804B4CC
|
||||
adds r0, r1, r3
|
||||
movs r6, 0
|
||||
ldrsh r0, [r0, r6]
|
||||
cmp r0, r4
|
||||
beq _0804B42A
|
||||
bl sub_8043D10
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
beq _0804B436
|
||||
ldr r1, [r5]
|
||||
ldr r0, _0804B4D0
|
||||
adds r2, r1, r0
|
||||
movs r3, 0
|
||||
ldrsh r0, [r2, r3]
|
||||
cmp r0, r4
|
||||
beq _0804B42A
|
||||
ldr r6, _0804B4D4
|
||||
adds r1, r6
|
||||
movs r3, 0
|
||||
ldrsh r0, [r1, r3]
|
||||
cmp r0, r4
|
||||
beq _0804B42A
|
||||
movs r6, 0
|
||||
ldrsh r0, [r2, r6]
|
||||
movs r2, 0
|
||||
ldrsh r1, [r1, r2]
|
||||
movs r2, 0
|
||||
bl sub_8050C30
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0804B436
|
||||
_0804B42A:
|
||||
ldr r3, [sp, 0x40]
|
||||
adds r3, 0x1
|
||||
str r3, [sp, 0x40]
|
||||
cmp r3, 0x9
|
||||
bgt _0804B436
|
||||
b _0804B058
|
||||
_0804B436:
|
||||
ldr r6, [sp, 0x40]
|
||||
cmp r6, 0xA
|
||||
bne _0804B474
|
||||
ldr r1, _0804B4B8
|
||||
ldr r0, _0804B4BC
|
||||
strh r0, [r1]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
strh r0, [r1, 0x2]
|
||||
bl sub_804FD30
|
||||
bl sub_804C918
|
||||
ldr r0, _0804B4C0
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0804B4C4
|
||||
adds r0, r1
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
bl sub_804E9DC
|
||||
mov r0, r8
|
||||
movs r1, 0
|
||||
bl sub_804FF08
|
||||
mov r0, r8
|
||||
movs r1, 0
|
||||
bl sub_8050438
|
||||
bl sub_804FBE8
|
||||
_0804B474:
|
||||
ldr r1, _0804B4B8
|
||||
movs r2, 0
|
||||
ldrsh r0, [r1, r2]
|
||||
cmp r0, 0
|
||||
blt _0804B498
|
||||
movs r3, 0x2
|
||||
ldrsh r0, [r1, r3]
|
||||
cmp r0, 0
|
||||
blt _0804B498
|
||||
movs r6, 0
|
||||
ldrsh r0, [r1, r6]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r1, r2]
|
||||
movs r2, 0xBE
|
||||
lsls r2, 1
|
||||
movs r3, 0
|
||||
bl sub_806C330
|
||||
_0804B498:
|
||||
ldr r0, _0804B4D8
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
blt _0804B4E0
|
||||
mov r0, r8
|
||||
bl sub_8051654
|
||||
ldr r0, _0804B4C0
|
||||
ldr r0, [r0]
|
||||
ldr r3, _0804B4DC
|
||||
adds r0, r3
|
||||
movs r1, 0x1
|
||||
b _0804B4EA
|
||||
.align 2, 0
|
||||
_0804B4B4: .4byte gUnknown_202F1A9
|
||||
_0804B4B8: .4byte gUnknown_202F1D8
|
||||
_0804B4BC: .4byte 0x0000ffff
|
||||
_0804B4C0: .4byte gDungeon
|
||||
_0804B4C4: .4byte 0x00003a08
|
||||
_0804B4C8: .4byte 0x0000e218
|
||||
_0804B4CC: .4byte 0x0000e21a
|
||||
_0804B4D0: .4byte 0x0000e21c
|
||||
_0804B4D4: .4byte 0x0000e21e
|
||||
_0804B4D8: .4byte gUnknown_202F1B8
|
||||
_0804B4DC: .4byte 0x00003a0a
|
||||
_0804B4E0:
|
||||
ldr r0, _0804B524
|
||||
ldr r0, [r0]
|
||||
ldr r6, _0804B528
|
||||
adds r0, r6
|
||||
movs r1, 0
|
||||
_0804B4EA:
|
||||
strb r1, [r0]
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
movs r2, 0x38
|
||||
movs r3, 0x20
|
||||
bl sub_804B534
|
||||
ldr r0, _0804B52C
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0804B504
|
||||
bl sub_804FC74
|
||||
_0804B504:
|
||||
ldr r0, _0804B524
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0804B530
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
bl CloseFile
|
||||
add sp, 0x44
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0804B524: .4byte gDungeon
|
||||
_0804B528: .4byte 0x00003a0a
|
||||
_0804B52C: .4byte gUnknown_202F1A8
|
||||
_0804B530: .4byte 0x00013568
|
||||
thumb_func_end sub_804AFAC
|
||||
|
||||
thumb_func_start sub_804B534
|
||||
sub_804B534:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x10
|
||||
str r1, [sp]
|
||||
str r2, [sp, 0x4]
|
||||
mov r10, r3
|
||||
adds r5, r0, 0
|
||||
cmp r5, r2
|
||||
bge _0804B620
|
||||
_0804B54C:
|
||||
ldr r4, [sp]
|
||||
adds r0, r5, 0x1
|
||||
mov r9, r0
|
||||
cmp r4, r10
|
||||
bge _0804B618
|
||||
movs r6, 0x3
|
||||
mov r8, r6
|
||||
_0804B55A:
|
||||
movs r3, 0
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
str r3, [sp, 0xC]
|
||||
bl GetTileSafe
|
||||
adds r2, r0, 0
|
||||
ldrh r0, [r2]
|
||||
ldr r6, _0804B630
|
||||
adds r1, r6, 0
|
||||
ands r1, r0
|
||||
strh r1, [r2]
|
||||
ldrb r0, [r2, 0x9]
|
||||
adds r6, r4, 0x1
|
||||
ldr r3, [sp, 0xC]
|
||||
cmp r0, 0xFF
|
||||
bne _0804B612
|
||||
movs r7, 0x3
|
||||
adds r0, r1, 0
|
||||
ands r0, r7
|
||||
cmp r0, 0x1
|
||||
bne _0804B612
|
||||
cmp r5, 0
|
||||
ble _0804B5A4
|
||||
subs r0, r5, 0x1
|
||||
adds r1, r4, 0
|
||||
str r2, [sp, 0x8]
|
||||
bl GetTile
|
||||
ldrh r1, [r0]
|
||||
adds r0, r7, 0
|
||||
ands r0, r1
|
||||
ldr r2, [sp, 0x8]
|
||||
ldr r3, [sp, 0xC]
|
||||
cmp r0, 0x1
|
||||
bne _0804B5A4
|
||||
movs r3, 0x1
|
||||
_0804B5A4:
|
||||
cmp r4, 0
|
||||
ble _0804B5C4
|
||||
subs r1, r4, 0x1
|
||||
adds r0, r5, 0
|
||||
str r2, [sp, 0x8]
|
||||
str r3, [sp, 0xC]
|
||||
bl GetTile
|
||||
ldrh r1, [r0]
|
||||
mov r0, r8
|
||||
ands r0, r1
|
||||
ldr r2, [sp, 0x8]
|
||||
ldr r3, [sp, 0xC]
|
||||
cmp r0, 0x1
|
||||
bne _0804B5C4
|
||||
adds r3, 0x1
|
||||
_0804B5C4:
|
||||
cmp r5, 0x35
|
||||
bgt _0804B5E4
|
||||
mov r0, r9
|
||||
adds r1, r4, 0
|
||||
str r2, [sp, 0x8]
|
||||
str r3, [sp, 0xC]
|
||||
bl GetTile
|
||||
ldrh r1, [r0]
|
||||
mov r0, r8
|
||||
ands r0, r1
|
||||
ldr r2, [sp, 0x8]
|
||||
ldr r3, [sp, 0xC]
|
||||
cmp r0, 0x1
|
||||
bne _0804B5E4
|
||||
adds r3, 0x1
|
||||
_0804B5E4:
|
||||
adds r6, r4, 0x1
|
||||
cmp r5, 0x1D
|
||||
bgt _0804B606
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
str r2, [sp, 0x8]
|
||||
str r3, [sp, 0xC]
|
||||
bl GetTile
|
||||
ldrh r1, [r0]
|
||||
mov r0, r8
|
||||
ands r0, r1
|
||||
ldr r2, [sp, 0x8]
|
||||
ldr r3, [sp, 0xC]
|
||||
cmp r0, 0x1
|
||||
bne _0804B606
|
||||
adds r3, 0x1
|
||||
_0804B606:
|
||||
cmp r3, 0x2
|
||||
ble _0804B612
|
||||
ldrh r1, [r2]
|
||||
movs r0, 0x8
|
||||
orrs r0, r1
|
||||
strh r0, [r2]
|
||||
_0804B612:
|
||||
adds r4, r6, 0
|
||||
cmp r4, r10
|
||||
blt _0804B55A
|
||||
_0804B618:
|
||||
mov r5, r9
|
||||
ldr r0, [sp, 0x4]
|
||||
cmp r5, r0
|
||||
blt _0804B54C
|
||||
_0804B620:
|
||||
add sp, 0x10
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0804B630: .4byte 0x0000fffb
|
||||
thumb_func_end sub_804B534
|
||||
|
||||
thumb_func_start sub_804B634
|
||||
sub_804B634:
|
||||
|
|
|
|||
|
|
@ -372,7 +372,8 @@ typedef struct Dungeon
|
|||
u16 unk12BEC[9];
|
||||
u16 unk12BFE[19];
|
||||
u8 unk12C24[0x930];
|
||||
u16 unk13554[12];
|
||||
u16 unk13554[10];
|
||||
OpenedFile *unk13568;
|
||||
u8 unk1356C;
|
||||
u8 fill1356D[0x13570 - 0x1356D];
|
||||
/* 0x13570 */ u8 unk13570;
|
||||
|
|
|
|||
|
|
@ -228,7 +228,8 @@ SECTIONS {
|
|||
src/dungeon_ai_item_weight.o(.text);
|
||||
src/dungeon_map_access.o(.text);
|
||||
src/tile_types.o(.text);
|
||||
asm/code_804AFAC.o(.text);
|
||||
src/code_804AFAC_1.o(.text);
|
||||
asm/code_804AFAC.o(.text);
|
||||
src/code_804AFAC.o(.text);
|
||||
asm/code_804FD30.o(.text);
|
||||
src/dungeon_message.o(.text);
|
||||
|
|
|
|||
971
src/code_804AFAC_1.c
Normal file
971
src/code_804AFAC_1.c
Normal file
|
|
@ -0,0 +1,971 @@
|
|||
#include "global.h"
|
||||
#include "file_system.h"
|
||||
#include "tile_types.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "structs/str_dungeon.h"
|
||||
#include "structs/map.h"
|
||||
|
||||
extern const u8 gUnknown_80F6DCC[];
|
||||
extern struct FileArchive gDungeonFileArchive;
|
||||
|
||||
extern u8 gUnknown_202F1AA;
|
||||
extern u8 gUnknown_202F1AB;
|
||||
extern u8 gUnknown_202F1AC;
|
||||
extern u8 gUnknown_202F1A8;
|
||||
extern u8 gUnknown_202F1B4;
|
||||
extern u8 gUnknown_202F1AE;
|
||||
extern u8 gUnknown_202F1AD;
|
||||
extern u8 gUnknown_202F1A9;
|
||||
extern u16 gUnknown_202F1B0;
|
||||
extern s32 gUnknown_202F1C8;
|
||||
extern s32 gUnknown_202F1D0;
|
||||
extern Position gUnknown_202F1D8;
|
||||
|
||||
struct UnkStruct_202F1B8
|
||||
{
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
};
|
||||
|
||||
extern struct UnkStruct_202F1B8 gUnknown_202F1B8;
|
||||
|
||||
extern void sub_804FD30(void);
|
||||
extern void sub_804FD30(void);
|
||||
extern void sub_80518F0(void);
|
||||
extern void sub_804FCCC(void);
|
||||
extern void sub_804C918(void);
|
||||
extern void sub_804FBE8(void);
|
||||
extern void sub_804FC74(void);
|
||||
extern void sub_804E9DC(void);
|
||||
extern void sub_804C9D0(void);
|
||||
extern u8 sub_8043D10();
|
||||
extern bool8 sub_8050C30(s32 a0, s32 a1, u8 a2);
|
||||
extern void sub_806C330(s32 a0, s32 a1, s16 a2, u8 a3);
|
||||
extern void sub_804B534(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
|
||||
bool8 sub_804C70C(s32, UnkDungeonGlobal_unk1C574 *);
|
||||
void sub_804B634(s32 a0, s32 a1, UnkDungeonGlobal_unk1C574 *a2);
|
||||
void sub_804B72C(UnkDungeonGlobal_unk1C574 *a0);
|
||||
void sub_804BC80(UnkDungeonGlobal_unk1C574 *a0);
|
||||
void sub_804C0A8(UnkDungeonGlobal_unk1C574 *a0);
|
||||
void sub_804C190(UnkDungeonGlobal_unk1C574 *a0);
|
||||
void sub_804C2F4(UnkDungeonGlobal_unk1C574 *a0);
|
||||
void sub_8051654(UnkDungeonGlobal_unk1C574 *a0);
|
||||
void sub_80506F0(s32 a0, UnkDungeonGlobal_unk1C574 *a1);
|
||||
void sub_804FF08(UnkDungeonGlobal_unk1C574 *a0, bool8 a1);
|
||||
void sub_8050438(UnkDungeonGlobal_unk1C574 *a0, bool8 a1);
|
||||
|
||||
// Some weird-ass regswap prevents the function from being matched - https://decomp.me/scratch/9SUV3
|
||||
#ifdef NONMATCHING
|
||||
void sub_804AFAC(void)
|
||||
{
|
||||
s32 x, y;
|
||||
s32 i, j, k;
|
||||
bool8 r10 = FALSE;
|
||||
UnkDungeonGlobal_unk1C574 *unkPtr = &gDungeon->unk1C574;
|
||||
|
||||
gDungeon->unk13568 = OpenFileAndGetFileDataPtr(gUnknown_80F6DCC, &gDungeonFileArchive);
|
||||
gUnknown_202F1AA = 0;
|
||||
gUnknown_202F1AB = 0;
|
||||
gUnknown_202F1AC = 0;
|
||||
gUnknown_202F1A8 = (gDungeonWaterType[gDungeon->tileset] == DUNGEON_WATER_TYPE_WATER);
|
||||
gUnknown_202F1B4 = 0xFF;
|
||||
gUnknown_202F1AE = 0;
|
||||
gUnknown_202F1B0 = unkPtr->unk7;
|
||||
gUnknown_202F1B2 = unkPtr->unk8;
|
||||
gUnknown_202F1AD = 1;
|
||||
gUnknown_202F1B8.unk0 = -1;
|
||||
gUnknown_202F1B8.unk8 = -1;
|
||||
gUnknown_202F1B8.unk4 = -1;
|
||||
gUnknown_202F1B8.unkC = -1;
|
||||
|
||||
sub_804FD30();
|
||||
|
||||
gDungeon->unk664 = unkPtr->unk6;
|
||||
|
||||
gDungeon->unk3A09 = 0;
|
||||
gDungeon->unk3A0A = 0;
|
||||
|
||||
gUnknown_202F1C8 = unkPtr->unkC;
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
bool32 r4 = 0;
|
||||
|
||||
gDungeon->unkE218.x = -1;
|
||||
gDungeon->unkE218.y = -1;
|
||||
gDungeon->unkE21C.x = -1;
|
||||
gDungeon->unkE21C.y = -1;
|
||||
for (j = 0; j < 10; j++) {
|
||||
gDungeon->unk3A16 = j;
|
||||
if (j > 0) {
|
||||
gUnknown_202F1C8 = 0;
|
||||
}
|
||||
gUnknown_202F1A9 = 0;
|
||||
gUnknown_202F1D8.x = -1;
|
||||
gUnknown_202F1D8.y = -1;
|
||||
sub_804FD30();
|
||||
gDungeon->unkE218.x = -1;
|
||||
gDungeon->unkE218.y = -1;
|
||||
gDungeon->unk3A08 = 0;
|
||||
if (gDungeon->bossBattleIndex != 0) {
|
||||
if (sub_804C70C(gDungeon->bossBattleIndex, unkPtr)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
u8 r7 = unkPtr->unk0;
|
||||
|
||||
k = 32;
|
||||
while (1) {
|
||||
if (r7 != 8) {
|
||||
x = DungeonRandRange(2, 9);
|
||||
y = DungeonRandRange(2, 8);
|
||||
}
|
||||
else {
|
||||
x = DungeonRandRange(2, 5);
|
||||
y = DungeonRandRange(2, 4);
|
||||
}
|
||||
|
||||
if (x <= 6 && y <= 4) {
|
||||
break;
|
||||
}
|
||||
if (--k == 0) {
|
||||
x = 4;
|
||||
y = 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (DUNGEON_MAX_SIZE_X / x < 8) {
|
||||
x = 1;
|
||||
}
|
||||
if (DUNGEON_MAX_SIZE_Y / y < 8) {
|
||||
y = 1;
|
||||
}
|
||||
|
||||
gDungeon->unk3A08 = 0;
|
||||
gDungeon->unk3A0C = 0xFF;
|
||||
gUnknown_202F1D0 = r7;
|
||||
switch (r7 & 0xF) {
|
||||
case 1:
|
||||
y = DungeonRandInt(2) + 2;
|
||||
gUnknown_202F1AE = 1;
|
||||
sub_804B634(4, y, unkPtr);
|
||||
r10 = TRUE;
|
||||
break;
|
||||
case 11:
|
||||
y = DungeonRandInt(2) + 2;
|
||||
gUnknown_202F1AE = 2;
|
||||
sub_804B634(4, y, unkPtr);
|
||||
r10 = TRUE;
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
sub_804B634(x, y, unkPtr);
|
||||
r10 = TRUE;
|
||||
break;
|
||||
case 2:
|
||||
sub_804C918();
|
||||
gDungeon->unk3A08 = 1;
|
||||
break;
|
||||
case 3:
|
||||
sub_804B72C(unkPtr);
|
||||
r10 = TRUE;
|
||||
break;
|
||||
case 4:
|
||||
sub_804BC80(unkPtr);
|
||||
r10 = TRUE;
|
||||
break;
|
||||
case 5:
|
||||
sub_804C9D0();
|
||||
gDungeon->unk3A08 = 1;
|
||||
break;
|
||||
case 6:
|
||||
sub_804C0A8(unkPtr);
|
||||
r10 = TRUE;
|
||||
break;
|
||||
case 7:
|
||||
sub_804C190(unkPtr);
|
||||
break;
|
||||
case 9:
|
||||
sub_804C2F4(unkPtr);
|
||||
break;
|
||||
case 10:
|
||||
sub_804B634(x, y, unkPtr);
|
||||
r10 = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sub_80518F0();
|
||||
sub_804FCCC();
|
||||
if (gUnknown_202F1A9 == 0) {
|
||||
s32 countSp = 0;
|
||||
u8 spArray[64];
|
||||
s32 countRooms = 0;
|
||||
|
||||
for (k = 0; k < 64; k++) {
|
||||
spArray[k] = 0;
|
||||
}
|
||||
|
||||
for (x = 0; x < DUNGEON_MAX_SIZE_X; x++) {
|
||||
for (y = 0; y < DUNGEON_MAX_SIZE_Y; y++) {
|
||||
Tile *tile = GetTile(x, y);
|
||||
if ((tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) == TERRAIN_TYPE_NORMAL && tile->room <= 240) {
|
||||
countRooms++;
|
||||
if (tile->room < 64) {
|
||||
spArray[tile->room] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
countSp = 0;
|
||||
// In order to match, 'y' had to be re-used as an iterator var
|
||||
for (y = 0; y < 64; y++) {
|
||||
if (spArray[y]) {
|
||||
countSp++;
|
||||
}
|
||||
}
|
||||
|
||||
if (countRooms >= 30 && countSp > 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (j == 10) {
|
||||
gUnknown_202F1D8.x = -1;
|
||||
gUnknown_202F1D8.y = -1;
|
||||
sub_804C918();
|
||||
gDungeon->unk3A08 = 1;
|
||||
}
|
||||
sub_804E9DC();
|
||||
if (r10) {
|
||||
sub_80506F0(1, unkPtr);
|
||||
}
|
||||
r4 = (DungeonRandInt(100) < unkPtr->unk19);
|
||||
sub_804FF08(unkPtr, r4);
|
||||
sub_8050438(unkPtr, r4);
|
||||
sub_804FBE8();
|
||||
if (gDungeon->unkE218.x != -1 && gDungeon->unkE218.y != -1)
|
||||
{
|
||||
if (sub_8043D10() == 1)
|
||||
break;
|
||||
if (gDungeon->unkE21C.x != -1 && gDungeon->unkE21C.y != -1 && sub_8050C30(gDungeon->unkE21C.x, gDungeon->unkE21C.y, 0))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i == 10) {
|
||||
gUnknown_202F1D8.x = -1;
|
||||
gUnknown_202F1D8.y = -1;
|
||||
sub_804FD30();
|
||||
sub_804C918();
|
||||
gDungeon->unk3A08 = 1;
|
||||
sub_804E9DC();
|
||||
sub_804FF08(unkPtr, FALSE);
|
||||
sub_8050438(unkPtr, FALSE);
|
||||
sub_804FBE8();
|
||||
}
|
||||
|
||||
if (gUnknown_202F1D8.x >= 0 && gUnknown_202F1D8.y >= 0) {
|
||||
sub_806C330(gUnknown_202F1D8.x, gUnknown_202F1D8.y, 380, 0);
|
||||
}
|
||||
|
||||
if (gUnknown_202F1B8.unk0 >= 0) {
|
||||
sub_8051654(unkPtr);
|
||||
gDungeon->unk3A0A = 1;
|
||||
}
|
||||
else {
|
||||
gDungeon->unk3A0A = 0;
|
||||
}
|
||||
|
||||
sub_804B534(0, 0, DUNGEON_MAX_SIZE_X, DUNGEON_MAX_SIZE_Y);
|
||||
if (gUnknown_202F1A8 != 0) {
|
||||
sub_804FC74();
|
||||
}
|
||||
|
||||
CloseFile(gDungeon->unk13568);
|
||||
}
|
||||
#else
|
||||
void NAKED sub_804AFAC(void)
|
||||
{
|
||||
asm_unified(" push {r4-r7,lr}\n"
|
||||
" mov r7, r10\n"
|
||||
" mov r6, r9\n"
|
||||
" mov r5, r8\n"
|
||||
" push {r5-r7}\n"
|
||||
" sub sp, 0x44\n"
|
||||
" movs r0, 0\n"
|
||||
" mov r10, r0\n"
|
||||
" ldr r4, _0804B0E8\n"
|
||||
" ldr r0, [r4]\n"
|
||||
" ldr r1, _0804B0EC\n"
|
||||
" adds r1, r0\n"
|
||||
" mov r8, r1\n"
|
||||
" ldr r0, _0804B0F0\n"
|
||||
" ldr r1, _0804B0F4\n"
|
||||
" bl OpenFileAndGetFileDataPtr\n"
|
||||
" ldr r2, [r4]\n"
|
||||
" ldr r3, _0804B0F8\n"
|
||||
" adds r1, r2, r3\n"
|
||||
" str r0, [r1]\n"
|
||||
" ldr r0, _0804B0FC\n"
|
||||
" mov r6, r10\n"
|
||||
" strb r6, [r0]\n"
|
||||
" ldr r0, _0804B100\n"
|
||||
" strb r6, [r0]\n"
|
||||
" ldr r0, _0804B104\n"
|
||||
" strb r6, [r0]\n"
|
||||
" ldr r5, _0804B108\n"
|
||||
" movs r3, 0\n"
|
||||
" ldr r1, _0804B10C\n"
|
||||
" ldr r0, _0804B110\n"
|
||||
" adds r2, r0\n"
|
||||
" movs r6, 0\n"
|
||||
" ldrsh r0, [r2, r6]\n"
|
||||
" adds r0, r1\n"
|
||||
" ldrb r0, [r0]\n"
|
||||
" cmp r0, 0x2\n"
|
||||
" bne _0804AFFC\n"
|
||||
" movs r3, 0x1\n"
|
||||
"_0804AFFC:\n"
|
||||
" strb r3, [r5]\n"
|
||||
" ldr r1, _0804B114\n"
|
||||
" movs r0, 0xFF\n"
|
||||
" strb r0, [r1]\n"
|
||||
" ldr r0, _0804B118\n"
|
||||
" mov r1, r10\n"
|
||||
" strb r1, [r0]\n"
|
||||
" ldr r1, _0804B11C\n"
|
||||
" mov r2, r8\n"
|
||||
" ldrb r0, [r2, 0x7]\n"
|
||||
" strh r0, [r1]\n"
|
||||
" ldr r1, _0804B120\n"
|
||||
" ldrb r0, [r2, 0x8]\n"
|
||||
" strh r0, [r1]\n"
|
||||
" ldr r1, _0804B124\n"
|
||||
" movs r0, 0x1\n"
|
||||
" strb r0, [r1]\n"
|
||||
" ldr r1, _0804B128\n"
|
||||
" movs r0, 0x1\n"
|
||||
" negs r0, r0\n"
|
||||
" str r0, [r1]\n"
|
||||
" str r0, [r1, 0x8]\n"
|
||||
" str r0, [r1, 0x4]\n"
|
||||
" str r0, [r1, 0xC]\n"
|
||||
" bl sub_804FD30\n"
|
||||
" ldr r3, [r4]\n"
|
||||
" mov r6, r8\n"
|
||||
" ldrb r2, [r6, 0x6]\n"
|
||||
" ldr r1, _0804B12C\n"
|
||||
" adds r0, r3, r1\n"
|
||||
" movs r1, 0\n"
|
||||
" strh r2, [r0]\n"
|
||||
" ldr r2, _0804B130\n"
|
||||
" adds r0, r3, r2\n"
|
||||
" strb r1, [r0]\n"
|
||||
" ldr r0, [r4]\n"
|
||||
" ldr r3, _0804B134\n"
|
||||
" adds r0, r3\n"
|
||||
" strb r1, [r0]\n"
|
||||
" ldr r1, _0804B138\n"
|
||||
" mov r6, r8\n"
|
||||
" ldrb r0, [r6, 0xC]\n"
|
||||
" str r0, [r1]\n"
|
||||
" movs r0, 0\n"
|
||||
" str r0, [sp, 0x40]\n"
|
||||
"_0804B058:\n"
|
||||
" ldr r0, _0804B0E8\n"
|
||||
" ldr r2, [r0]\n"
|
||||
" ldr r3, _0804B13C\n"
|
||||
" adds r1, r2, r3\n"
|
||||
" ldr r0, _0804B140\n"
|
||||
" strh r0, [r1]\n"
|
||||
" ldr r6, _0804B144\n"
|
||||
" adds r1, r2, r6\n"
|
||||
" movs r0, 0x1\n"
|
||||
" negs r0, r0\n"
|
||||
" strh r0, [r1]\n"
|
||||
" ldr r0, _0804B148\n"
|
||||
" adds r1, r2, r0\n"
|
||||
" movs r0, 0x1\n"
|
||||
" negs r0, r0\n"
|
||||
" strh r0, [r1]\n"
|
||||
" ldr r1, _0804B14C\n"
|
||||
" adds r2, r1\n"
|
||||
" strh r0, [r2]\n"
|
||||
" movs r2, 0\n"
|
||||
" mov r9, r2\n"
|
||||
"_0804B082:\n"
|
||||
" ldr r4, _0804B0E8\n"
|
||||
" ldr r0, [r4]\n"
|
||||
" ldr r3, _0804B150\n"
|
||||
" adds r0, r3\n"
|
||||
" movs r5, 0\n"
|
||||
" movs r1, 0\n"
|
||||
" mov r6, r9\n"
|
||||
" strh r6, [r0]\n"
|
||||
" mov r0, r9\n"
|
||||
" cmp r0, 0\n"
|
||||
" ble _0804B09C\n"
|
||||
" ldr r0, _0804B138\n"
|
||||
" str r1, [r0]\n"
|
||||
"_0804B09C:\n"
|
||||
" ldr r0, _0804B154\n"
|
||||
" strb r5, [r0]\n"
|
||||
" ldr r1, _0804B158\n"
|
||||
" ldr r0, _0804B140\n"
|
||||
" strh r0, [r1]\n"
|
||||
" movs r0, 0x1\n"
|
||||
" negs r0, r0\n"
|
||||
" strh r0, [r1, 0x2]\n"
|
||||
" bl sub_804FD30\n"
|
||||
" ldr r1, [r4]\n"
|
||||
" ldr r3, _0804B13C\n"
|
||||
" adds r2, r1, r3\n"
|
||||
" movs r0, 0x1\n"
|
||||
" negs r0, r0\n"
|
||||
" strh r0, [r2]\n"
|
||||
" ldr r6, _0804B144\n"
|
||||
" adds r2, r1, r6\n"
|
||||
" strh r0, [r2]\n"
|
||||
" ldr r0, _0804B15C\n"
|
||||
" adds r1, r0\n"
|
||||
" strb r5, [r1]\n"
|
||||
" ldr r0, [r4]\n"
|
||||
" ldr r2, _0804B160\n"
|
||||
" adds r1, r0, r2\n"
|
||||
" movs r3, 0\n"
|
||||
" ldrsh r0, [r1, r3]\n"
|
||||
" cmp r0, 0\n"
|
||||
" beq _0804B164\n"
|
||||
" mov r1, r8\n"
|
||||
" bl sub_804C70C\n"
|
||||
" lsls r0, 24\n"
|
||||
" cmp r0, 0\n"
|
||||
" beq _0804B0E4\n"
|
||||
" b _0804B376\n"
|
||||
"_0804B0E4:\n"
|
||||
" b _0804B2F6\n"
|
||||
" .align 2, 0\n"
|
||||
"_0804B0E8: .4byte gDungeon\n"
|
||||
"_0804B0EC: .4byte 0x0001c574\n"
|
||||
"_0804B0F0: .4byte gUnknown_80F6DCC\n"
|
||||
"_0804B0F4: .4byte gDungeonFileArchive\n"
|
||||
"_0804B0F8: .4byte 0x00013568\n"
|
||||
"_0804B0FC: .4byte gUnknown_202F1AA\n"
|
||||
"_0804B100: .4byte gUnknown_202F1AB\n"
|
||||
"_0804B104: .4byte gUnknown_202F1AC\n"
|
||||
"_0804B108: .4byte gUnknown_202F1A8\n"
|
||||
"_0804B10C: .4byte gDungeonWaterType\n"
|
||||
"_0804B110: .4byte 0x00003a0e\n"
|
||||
"_0804B114: .4byte gUnknown_202F1B4\n"
|
||||
"_0804B118: .4byte gUnknown_202F1AE\n"
|
||||
"_0804B11C: .4byte gUnknown_202F1B0\n"
|
||||
"_0804B120: .4byte gUnknown_202F1B2\n"
|
||||
"_0804B124: .4byte gUnknown_202F1AD\n"
|
||||
"_0804B128: .4byte gUnknown_202F1B8\n"
|
||||
"_0804B12C: .4byte 0x00000664\n"
|
||||
"_0804B130: .4byte 0x00003a09\n"
|
||||
"_0804B134: .4byte 0x00003a0a\n"
|
||||
"_0804B138: .4byte gUnknown_202F1C8\n"
|
||||
"_0804B13C: .4byte 0x0000e218\n"
|
||||
"_0804B140: .4byte 0x0000ffff\n"
|
||||
"_0804B144: .4byte 0x0000e21a\n"
|
||||
"_0804B148: .4byte 0x0000e21c\n"
|
||||
"_0804B14C: .4byte 0x0000e21e\n"
|
||||
"_0804B150: .4byte 0x00003a16\n"
|
||||
"_0804B154: .4byte gUnknown_202F1A9\n"
|
||||
"_0804B158: .4byte gUnknown_202F1D8\n"
|
||||
"_0804B15C: .4byte 0x00003a08\n"
|
||||
"_0804B160: .4byte 0x00003a14\n"
|
||||
"_0804B164:\n"
|
||||
" mov r0, r8\n"
|
||||
" ldrb r7, [r0]\n"
|
||||
" movs r6, 0x20\n"
|
||||
"_0804B16A:\n"
|
||||
" cmp r7, 0x8\n"
|
||||
" beq _0804B17E\n"
|
||||
" movs r0, 0x2\n"
|
||||
" movs r1, 0x9\n"
|
||||
" bl DungeonRandRange\n"
|
||||
" adds r5, r0, 0\n"
|
||||
" movs r0, 0x2\n"
|
||||
" movs r1, 0x8\n"
|
||||
" b _0804B18C\n"
|
||||
"_0804B17E:\n"
|
||||
" movs r0, 0x2\n"
|
||||
" movs r1, 0x5\n"
|
||||
" bl DungeonRandRange\n"
|
||||
" adds r5, r0, 0\n"
|
||||
" movs r0, 0x2\n"
|
||||
" movs r1, 0x4\n"
|
||||
"_0804B18C:\n"
|
||||
" bl DungeonRandRange\n"
|
||||
" adds r4, r0, 0\n"
|
||||
" cmp r5, 0x6\n"
|
||||
" bgt _0804B19A\n"
|
||||
" cmp r4, 0x4\n"
|
||||
" ble _0804B1A4\n"
|
||||
"_0804B19A:\n"
|
||||
" subs r6, 0x1\n"
|
||||
" cmp r6, 0\n"
|
||||
" bne _0804B16A\n"
|
||||
" movs r5, 0x4\n"
|
||||
" movs r4, 0x4\n"
|
||||
"_0804B1A4:\n"
|
||||
" movs r0, 0x38\n"
|
||||
" adds r1, r5, 0\n"
|
||||
" bl __divsi3\n"
|
||||
" cmp r0, 0x7\n"
|
||||
" bgt _0804B1B2\n"
|
||||
" movs r5, 0x1\n"
|
||||
"_0804B1B2:\n"
|
||||
" movs r0, 0x20\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" bl __divsi3\n"
|
||||
" cmp r0, 0x7\n"
|
||||
" bgt _0804B1C0\n"
|
||||
" movs r4, 0x1\n"
|
||||
"_0804B1C0:\n"
|
||||
" ldr r2, _0804B1EC\n"
|
||||
" ldr r0, [r2]\n"
|
||||
" ldr r1, _0804B1F0\n"
|
||||
" adds r0, r1\n"
|
||||
" movs r1, 0\n"
|
||||
" strb r1, [r0]\n"
|
||||
" ldr r0, [r2]\n"
|
||||
" ldr r2, _0804B1F4\n"
|
||||
" adds r0, r2\n"
|
||||
" movs r1, 0xFF\n"
|
||||
" strb r1, [r0]\n"
|
||||
" ldr r0, _0804B1F8\n"
|
||||
" str r7, [r0]\n"
|
||||
" movs r0, 0xF\n"
|
||||
" ands r0, r7\n"
|
||||
" cmp r0, 0xB\n"
|
||||
" bhi _0804B274\n"
|
||||
" lsls r0, 2\n"
|
||||
" ldr r1, _0804B1FC\n"
|
||||
" adds r0, r1\n"
|
||||
" ldr r0, [r0]\n"
|
||||
" mov pc, r0\n"
|
||||
" .align 2, 0\n"
|
||||
"_0804B1EC: .4byte gDungeon\n"
|
||||
"_0804B1F0: .4byte 0x00003a08\n"
|
||||
"_0804B1F4: .4byte 0x00003a0c\n"
|
||||
"_0804B1F8: .4byte gUnknown_202F1D0\n"
|
||||
"_0804B1FC: .4byte _0804B200\n"
|
||||
" .align 2, 0\n"
|
||||
"_0804B200:\n"
|
||||
" .4byte _0804B274\n"
|
||||
" .4byte _0804B230\n"
|
||||
" .4byte _0804B280\n"
|
||||
" .4byte _0804B298\n"
|
||||
" .4byte _0804B2A4\n"
|
||||
" .4byte _0804B2B0\n"
|
||||
" .4byte _0804B2CC\n"
|
||||
" .4byte _0804B2D8\n"
|
||||
" .4byte _0804B274\n"
|
||||
" .4byte _0804B2E0\n"
|
||||
" .4byte _0804B2E8\n"
|
||||
" .4byte _0804B250\n"
|
||||
"_0804B230:\n"
|
||||
" movs r0, 0x2\n"
|
||||
" bl DungeonRandInt\n"
|
||||
" adds r4, r0, 0x2\n"
|
||||
" ldr r1, _0804B24C\n"
|
||||
" movs r0, 0x1\n"
|
||||
" strb r0, [r1]\n"
|
||||
" movs r0, 0x4\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" mov r2, r8\n"
|
||||
" bl sub_804B634\n"
|
||||
" b _0804B2AA\n"
|
||||
" .align 2, 0\n"
|
||||
"_0804B24C: .4byte gUnknown_202F1AE\n"
|
||||
"_0804B250:\n"
|
||||
" movs r0, 0x2\n"
|
||||
" bl DungeonRandInt\n"
|
||||
" adds r4, r0, 0x2\n"
|
||||
" ldr r1, _0804B270\n"
|
||||
" movs r0, 0x2\n"
|
||||
" strb r0, [r1]\n"
|
||||
" movs r0, 0x4\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" mov r2, r8\n"
|
||||
" bl sub_804B634\n"
|
||||
" movs r6, 0x1\n"
|
||||
" mov r10, r6\n"
|
||||
" b _0804B2F6\n"
|
||||
" .align 2, 0\n"
|
||||
"_0804B270: .4byte gUnknown_202F1AE\n"
|
||||
"_0804B274:\n"
|
||||
" adds r0, r5, 0\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" mov r2, r8\n"
|
||||
" bl sub_804B634\n"
|
||||
" b _0804B2D2\n"
|
||||
"_0804B280:\n"
|
||||
" bl sub_804C918\n"
|
||||
" ldr r0, _0804B290\n"
|
||||
" ldr r0, [r0]\n"
|
||||
" ldr r1, _0804B294\n"
|
||||
" adds r0, r1\n"
|
||||
" b _0804B2BC\n"
|
||||
" .align 2, 0\n"
|
||||
"_0804B290: .4byte gDungeon\n"
|
||||
"_0804B294: .4byte 0x00003a08\n"
|
||||
"_0804B298:\n"
|
||||
" mov r0, r8\n"
|
||||
" bl sub_804B72C\n"
|
||||
" movs r2, 0x1\n"
|
||||
" mov r10, r2\n"
|
||||
" b _0804B2F6\n"
|
||||
"_0804B2A4:\n"
|
||||
" mov r0, r8\n"
|
||||
" bl sub_804BC80\n"
|
||||
"_0804B2AA:\n"
|
||||
" movs r3, 0x1\n"
|
||||
" mov r10, r3\n"
|
||||
" b _0804B2F6\n"
|
||||
"_0804B2B0:\n"
|
||||
" bl sub_804C9D0\n"
|
||||
" ldr r0, _0804B2C4\n"
|
||||
" ldr r0, [r0]\n"
|
||||
" ldr r6, _0804B2C8\n"
|
||||
" adds r0, r6\n"
|
||||
"_0804B2BC:\n"
|
||||
" movs r1, 0x1\n"
|
||||
" strb r1, [r0]\n"
|
||||
" b _0804B2F6\n"
|
||||
" .align 2, 0\n"
|
||||
"_0804B2C4: .4byte gDungeon\n"
|
||||
"_0804B2C8: .4byte 0x00003a08\n"
|
||||
"_0804B2CC:\n"
|
||||
" mov r0, r8\n"
|
||||
" bl sub_804C0A8\n"
|
||||
"_0804B2D2:\n"
|
||||
" movs r0, 0x1\n"
|
||||
" mov r10, r0\n"
|
||||
" b _0804B2F6\n"
|
||||
"_0804B2D8:\n"
|
||||
" mov r0, r8\n"
|
||||
" bl sub_804C190\n"
|
||||
" b _0804B2F6\n"
|
||||
"_0804B2E0:\n"
|
||||
" mov r0, r8\n"
|
||||
" bl sub_804C2F4\n"
|
||||
" b _0804B2F6\n"
|
||||
"_0804B2E8:\n"
|
||||
" adds r0, r5, 0\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" mov r2, r8\n"
|
||||
" bl sub_804C53C\n"
|
||||
" movs r1, 0x1\n"
|
||||
" mov r10, r1\n"
|
||||
"_0804B2F6:\n"
|
||||
" bl sub_80518F0\n"
|
||||
" bl sub_804FCCC\n"
|
||||
" ldr r0, _0804B4B4\n"
|
||||
" ldrb r0, [r0]\n"
|
||||
" cmp r0, 0\n"
|
||||
" bne _0804B36A\n"
|
||||
" movs r7, 0\n"
|
||||
" movs r1, 0\n"
|
||||
" mov r0, sp\n"
|
||||
" adds r0, 0x3F\n"
|
||||
"_0804B30E:\n"
|
||||
" strb r1, [r0]\n"
|
||||
" subs r0, 0x1\n"
|
||||
" cmp r0, sp\n"
|
||||
" bge _0804B30E\n"
|
||||
" movs r5, 0\n"
|
||||
"_0804B318:\n"
|
||||
" movs r4, 0\n"
|
||||
" adds r6, r5, 0x1\n"
|
||||
"_0804B31C:\n"
|
||||
" adds r0, r5, 0\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" bl GetTile\n"
|
||||
" adds r1, r0, 0\n"
|
||||
" ldrh r0, [r1]\n"
|
||||
" movs r2, 0x3\n"
|
||||
" ands r2, r0\n"
|
||||
" cmp r2, 0x1\n"
|
||||
" bne _0804B340\n"
|
||||
" ldrb r0, [r1, 0x9]\n"
|
||||
" cmp r0, 0xF0\n"
|
||||
" bhi _0804B340\n"
|
||||
" adds r7, 0x1\n"
|
||||
" cmp r0, 0x3F\n"
|
||||
" bhi _0804B340\n"
|
||||
" add r0, sp\n"
|
||||
" strb r2, [r0]\n"
|
||||
"_0804B340:\n"
|
||||
" adds r4, 0x1\n"
|
||||
" cmp r4, 0x1F\n"
|
||||
" ble _0804B31C\n"
|
||||
" adds r5, r6, 0\n"
|
||||
" cmp r5, 0x37\n"
|
||||
" ble _0804B318\n"
|
||||
" movs r1, 0\n"
|
||||
" movs r4, 0\n"
|
||||
"_0804B350:\n"
|
||||
" mov r2, sp\n"
|
||||
" adds r0, r2, r4\n"
|
||||
" ldrb r0, [r0]\n"
|
||||
" cmp r0, 0\n"
|
||||
" beq _0804B35C\n"
|
||||
" adds r1, 0x1\n"
|
||||
"_0804B35C:\n"
|
||||
" adds r4, 0x1\n"
|
||||
" cmp r4, 0x3F\n"
|
||||
" ble _0804B350\n"
|
||||
" cmp r7, 0x1D\n"
|
||||
" ble _0804B36A\n"
|
||||
" cmp r1, 0x1\n"
|
||||
" bgt _0804B376\n"
|
||||
"_0804B36A:\n"
|
||||
" movs r3, 0x1\n"
|
||||
" add r9, r3\n"
|
||||
" mov r6, r9\n"
|
||||
" cmp r6, 0x9\n"
|
||||
" bgt _0804B376\n"
|
||||
" b _0804B082\n"
|
||||
"_0804B376:\n"
|
||||
" mov r0, r9\n"
|
||||
" cmp r0, 0xA\n"
|
||||
" bne _0804B398\n"
|
||||
" ldr r1, _0804B4B8\n"
|
||||
" ldr r0, _0804B4BC\n"
|
||||
" strh r0, [r1]\n"
|
||||
" movs r0, 0x1\n"
|
||||
" negs r0, r0\n"
|
||||
" strh r0, [r1, 0x2]\n"
|
||||
" bl sub_804C918\n"
|
||||
" ldr r0, _0804B4C0\n"
|
||||
" ldr r0, [r0]\n"
|
||||
" ldr r1, _0804B4C4\n"
|
||||
" adds r0, r1\n"
|
||||
" movs r1, 0x1\n"
|
||||
" strb r1, [r0]\n"
|
||||
"_0804B398:\n"
|
||||
" bl sub_804E9DC\n"
|
||||
" mov r2, r10\n"
|
||||
" cmp r2, 0\n"
|
||||
" beq _0804B3AA\n"
|
||||
" movs r0, 0x1\n"
|
||||
" mov r1, r8\n"
|
||||
" bl sub_80506F0\n"
|
||||
"_0804B3AA:\n"
|
||||
" movs r0, 0x64\n"
|
||||
" bl DungeonRandInt\n"
|
||||
" movs r4, 0\n"
|
||||
" mov r3, r8\n"
|
||||
" ldrb r3, [r3, 0x19]\n"
|
||||
" cmp r0, r3\n"
|
||||
" bge _0804B3BC\n"
|
||||
" movs r4, 0x1\n"
|
||||
"_0804B3BC:\n"
|
||||
" mov r0, r8\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" bl sub_804FF08\n"
|
||||
" mov r0, r8\n"
|
||||
" adds r1, r4, 0\n"
|
||||
" bl sub_8050438\n"
|
||||
" bl sub_804FBE8\n"
|
||||
" ldr r5, _0804B4C0\n"
|
||||
" ldr r1, [r5]\n"
|
||||
" ldr r6, _0804B4C8\n"
|
||||
" adds r0, r1, r6\n"
|
||||
" movs r2, 0\n"
|
||||
" ldrsh r0, [r0, r2]\n"
|
||||
" movs r4, 0x1\n"
|
||||
" negs r4, r4\n"
|
||||
" cmp r0, r4\n"
|
||||
" beq _0804B42A\n"
|
||||
" ldr r3, _0804B4CC\n"
|
||||
" adds r0, r1, r3\n"
|
||||
" movs r6, 0\n"
|
||||
" ldrsh r0, [r0, r6]\n"
|
||||
" cmp r0, r4\n"
|
||||
" beq _0804B42A\n"
|
||||
" bl sub_8043D10\n"
|
||||
" lsls r0, 24\n"
|
||||
" lsrs r0, 24\n"
|
||||
" cmp r0, 0x1\n"
|
||||
" beq _0804B436\n"
|
||||
" ldr r1, [r5]\n"
|
||||
" ldr r0, _0804B4D0\n"
|
||||
" adds r2, r1, r0\n"
|
||||
" movs r3, 0\n"
|
||||
" ldrsh r0, [r2, r3]\n"
|
||||
" cmp r0, r4\n"
|
||||
" beq _0804B42A\n"
|
||||
" ldr r6, _0804B4D4\n"
|
||||
" adds r1, r6\n"
|
||||
" movs r3, 0\n"
|
||||
" ldrsh r0, [r1, r3]\n"
|
||||
" cmp r0, r4\n"
|
||||
" beq _0804B42A\n"
|
||||
" movs r6, 0\n"
|
||||
" ldrsh r0, [r2, r6]\n"
|
||||
" movs r2, 0\n"
|
||||
" ldrsh r1, [r1, r2]\n"
|
||||
" movs r2, 0\n"
|
||||
" bl sub_8050C30\n"
|
||||
" lsls r0, 24\n"
|
||||
" cmp r0, 0\n"
|
||||
" bne _0804B436\n"
|
||||
"_0804B42A:\n"
|
||||
" ldr r3, [sp, 0x40]\n"
|
||||
" adds r3, 0x1\n"
|
||||
" str r3, [sp, 0x40]\n"
|
||||
" cmp r3, 0x9\n"
|
||||
" bgt _0804B436\n"
|
||||
" b _0804B058\n"
|
||||
"_0804B436:\n"
|
||||
" ldr r6, [sp, 0x40]\n"
|
||||
" cmp r6, 0xA\n"
|
||||
" bne _0804B474\n"
|
||||
" ldr r1, _0804B4B8\n"
|
||||
" ldr r0, _0804B4BC\n"
|
||||
" strh r0, [r1]\n"
|
||||
" movs r0, 0x1\n"
|
||||
" negs r0, r0\n"
|
||||
" strh r0, [r1, 0x2]\n"
|
||||
" bl sub_804FD30\n"
|
||||
" bl sub_804C918\n"
|
||||
" ldr r0, _0804B4C0\n"
|
||||
" ldr r0, [r0]\n"
|
||||
" ldr r1, _0804B4C4\n"
|
||||
" adds r0, r1\n"
|
||||
" movs r1, 0x1\n"
|
||||
" strb r1, [r0]\n"
|
||||
" bl sub_804E9DC\n"
|
||||
" mov r0, r8\n"
|
||||
" movs r1, 0\n"
|
||||
" bl sub_804FF08\n"
|
||||
" mov r0, r8\n"
|
||||
" movs r1, 0\n"
|
||||
" bl sub_8050438\n"
|
||||
" bl sub_804FBE8\n"
|
||||
"_0804B474:\n"
|
||||
" ldr r1, _0804B4B8\n"
|
||||
" movs r2, 0\n"
|
||||
" ldrsh r0, [r1, r2]\n"
|
||||
" cmp r0, 0\n"
|
||||
" blt _0804B498\n"
|
||||
" movs r3, 0x2\n"
|
||||
" ldrsh r0, [r1, r3]\n"
|
||||
" cmp r0, 0\n"
|
||||
" blt _0804B498\n"
|
||||
" movs r6, 0\n"
|
||||
" ldrsh r0, [r1, r6]\n"
|
||||
" movs r2, 0x2\n"
|
||||
" ldrsh r1, [r1, r2]\n"
|
||||
" movs r2, 0xBE\n"
|
||||
" lsls r2, 1\n"
|
||||
" movs r3, 0\n"
|
||||
" bl sub_806C330\n"
|
||||
"_0804B498:\n"
|
||||
" ldr r0, _0804B4D8\n"
|
||||
" ldr r0, [r0]\n"
|
||||
" cmp r0, 0\n"
|
||||
" blt _0804B4E0\n"
|
||||
" mov r0, r8\n"
|
||||
" bl sub_8051654\n"
|
||||
" ldr r0, _0804B4C0\n"
|
||||
" ldr r0, [r0]\n"
|
||||
" ldr r3, _0804B4DC\n"
|
||||
" adds r0, r3\n"
|
||||
" movs r1, 0x1\n"
|
||||
" b _0804B4EA\n"
|
||||
" .align 2, 0\n"
|
||||
"_0804B4B4: .4byte gUnknown_202F1A9\n"
|
||||
"_0804B4B8: .4byte gUnknown_202F1D8\n"
|
||||
"_0804B4BC: .4byte 0x0000ffff\n"
|
||||
"_0804B4C0: .4byte gDungeon\n"
|
||||
"_0804B4C4: .4byte 0x00003a08\n"
|
||||
"_0804B4C8: .4byte 0x0000e218\n"
|
||||
"_0804B4CC: .4byte 0x0000e21a\n"
|
||||
"_0804B4D0: .4byte 0x0000e21c\n"
|
||||
"_0804B4D4: .4byte 0x0000e21e\n"
|
||||
"_0804B4D8: .4byte gUnknown_202F1B8\n"
|
||||
"_0804B4DC: .4byte 0x00003a0a\n"
|
||||
"_0804B4E0:\n"
|
||||
" ldr r0, _0804B524\n"
|
||||
" ldr r0, [r0]\n"
|
||||
" ldr r6, _0804B528\n"
|
||||
" adds r0, r6\n"
|
||||
" movs r1, 0\n"
|
||||
"_0804B4EA:\n"
|
||||
" strb r1, [r0]\n"
|
||||
" movs r0, 0\n"
|
||||
" movs r1, 0\n"
|
||||
" movs r2, 0x38\n"
|
||||
" movs r3, 0x20\n"
|
||||
" bl sub_804B534\n"
|
||||
" ldr r0, _0804B52C\n"
|
||||
" ldrb r0, [r0]\n"
|
||||
" cmp r0, 0\n"
|
||||
" beq _0804B504\n"
|
||||
" bl sub_804FC74\n"
|
||||
"_0804B504:\n"
|
||||
" ldr r0, _0804B524\n"
|
||||
" ldr r0, [r0]\n"
|
||||
" ldr r1, _0804B530\n"
|
||||
" adds r0, r1\n"
|
||||
" ldr r0, [r0]\n"
|
||||
" bl CloseFile\n"
|
||||
" add sp, 0x44\n"
|
||||
" pop {r3-r5}\n"
|
||||
" mov r8, r3\n"
|
||||
" mov r9, r4\n"
|
||||
" mov r10, r5\n"
|
||||
" pop {r4-r7}\n"
|
||||
" pop {r0}\n"
|
||||
" bx r0\n"
|
||||
" .align 2, 0\n"
|
||||
"_0804B524: .4byte gDungeon\n"
|
||||
"_0804B528: .4byte 0x00003a0a\n"
|
||||
"_0804B52C: .4byte gUnknown_202F1A8\n"
|
||||
"_0804B530: .4byte 0x00013568\n");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
void sub_804B534(s32 xStart, s32 yStart, s32 maxX, s32 maxY)
|
||||
{
|
||||
s32 x, y;
|
||||
for (x = xStart; x < maxX; x++) {
|
||||
for (y = yStart; y < maxY; y++) {
|
||||
s32 unkCount = 0;
|
||||
Tile *tile = GetTileSafe(x, y);
|
||||
|
||||
tile->terrainType &= ~(TERRAIN_TYPE_UNK_2);
|
||||
if (tile->room == CORRIDOR_ROOM && ((tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) == TERRAIN_TYPE_NORMAL)) {
|
||||
if (x > 0 && ((GetTile(x - 1, y)->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) == TERRAIN_TYPE_NORMAL))
|
||||
unkCount++;
|
||||
if (y > 0 && ((GetTile(x, y - 1)->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) == TERRAIN_TYPE_NORMAL))
|
||||
unkCount++;
|
||||
if (x < DUNGEON_MAX_SIZE_X - 2 && ((GetTile(x + 1, y)->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) == TERRAIN_TYPE_NORMAL))
|
||||
unkCount++;
|
||||
// BUG: It should check for y and not x. Not sure if it has any effect, because this function is called only once with maxY equal to DUNGEON_MAX_SIZE_Y
|
||||
if (x < DUNGEON_MAX_SIZE_Y - 2 && ((GetTile(x, y + 1)->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) == TERRAIN_TYPE_NORMAL))
|
||||
unkCount++;
|
||||
|
||||
if (unkCount > 2) {
|
||||
tile->terrainType |= TERRAIN_TYPE_NATURAL_JUNCTION;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
Loading…
Reference in New Issue
Block a user