mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 07:28:17 -05:00
sub_804C9D0
This commit is contained in:
parent
5701369a9a
commit
2510f03439
|
|
@ -6,855 +6,6 @@
|
|||
.text
|
||||
|
||||
|
||||
|
||||
thumb_func_start sub_804C53C
|
||||
sub_804C53C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
ldr r4, _0804C6F8
|
||||
add sp, r4
|
||||
mov r10, r2
|
||||
adds r7, r0, 0
|
||||
adds r6, r1, 0
|
||||
ldr r0, _0804C6FC
|
||||
add r0, sp
|
||||
ldr r1, _0804C700
|
||||
add r1, sp
|
||||
adds r2, r7, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_804D024
|
||||
add r0, sp, 0x8
|
||||
adds r1, r7, 0
|
||||
adds r2, r6, 0
|
||||
bl sub_804D084
|
||||
movs r2, 0
|
||||
cmp r2, r7
|
||||
bge _0804C594
|
||||
_0804C570:
|
||||
adds r3, r2, 0x1
|
||||
cmp r6, 0
|
||||
ble _0804C58E
|
||||
lsls r0, r2, 4
|
||||
subs r0, r2
|
||||
movs r2, 0x1
|
||||
lsls r0, 5
|
||||
add r0, sp
|
||||
adds r0, 0x8
|
||||
adds r1, r6, 0
|
||||
_0804C584:
|
||||
strb r2, [r0, 0xA]
|
||||
adds r0, 0x20
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bne _0804C584
|
||||
_0804C58E:
|
||||
adds r2, r3, 0
|
||||
cmp r2, r7
|
||||
blt _0804C570
|
||||
_0804C594:
|
||||
movs r2, 0x1
|
||||
subs r0, r7, 0x1
|
||||
mov r8, r0
|
||||
subs r1, r6, 0x1
|
||||
mov r9, r1
|
||||
mov r0, r10
|
||||
ldrb r0, [r0, 0xD]
|
||||
mov r12, r0
|
||||
cmp r2, r8
|
||||
bge _0804C5D2
|
||||
mov r4, r9
|
||||
mov r5, r8
|
||||
_0804C5AC:
|
||||
adds r3, r2, 0x1
|
||||
cmp r4, 0x1
|
||||
ble _0804C5CC
|
||||
lsls r0, r2, 4
|
||||
subs r0, r2
|
||||
movs r2, 0x1
|
||||
lsls r0, 5
|
||||
add r0, sp
|
||||
adds r0, 0x8
|
||||
adds r0, 0x20
|
||||
subs r1, r4, 0x1
|
||||
_0804C5C2:
|
||||
strb r2, [r0, 0x8]
|
||||
adds r0, 0x20
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bne _0804C5C2
|
||||
_0804C5CC:
|
||||
adds r2, r3, 0
|
||||
cmp r2, r5
|
||||
blt _0804C5AC
|
||||
_0804C5D2:
|
||||
ldr r3, _0804C6FC
|
||||
add r3, sp
|
||||
ldr r0, _0804C700
|
||||
add r0, sp
|
||||
str r0, [sp]
|
||||
mov r1, r12
|
||||
str r1, [sp, 0x4]
|
||||
add r0, sp, 0x8
|
||||
adds r1, r7, 0
|
||||
adds r2, r6, 0
|
||||
bl sub_804D2D0
|
||||
movs r2, 0
|
||||
cmp r2, r8
|
||||
bge _0804C636
|
||||
movs r4, 0x1
|
||||
mov r0, r9
|
||||
lsls r5, r0, 5
|
||||
subs r1, r7, 0x2
|
||||
mov r12, r1
|
||||
_0804C5FA:
|
||||
cmp r2, 0
|
||||
beq _0804C614
|
||||
lsls r0, r2, 4
|
||||
subs r0, r2
|
||||
lsls r0, 5
|
||||
mov r1, sp
|
||||
adds r1, r0
|
||||
adds r1, 0x8
|
||||
strb r4, [r1, 0x16]
|
||||
adds r0, r5, r0
|
||||
add r0, sp
|
||||
adds r0, 0x8
|
||||
strb r4, [r0, 0x16]
|
||||
_0804C614:
|
||||
adds r3, r2, 0x1
|
||||
cmp r2, r12
|
||||
bge _0804C630
|
||||
lsls r0, r3, 4
|
||||
subs r0, r3
|
||||
lsls r0, 5
|
||||
mov r1, sp
|
||||
adds r1, r0
|
||||
adds r1, 0x8
|
||||
strb r4, [r1, 0x15]
|
||||
adds r0, r5, r0
|
||||
add r0, sp
|
||||
adds r0, 0x8
|
||||
strb r4, [r0, 0x15]
|
||||
_0804C630:
|
||||
adds r2, r3, 0
|
||||
cmp r2, r8
|
||||
blt _0804C5FA
|
||||
_0804C636:
|
||||
movs r1, 0
|
||||
cmp r1, r9
|
||||
bge _0804C66A
|
||||
movs r3, 0x1
|
||||
mov r2, r8
|
||||
lsls r0, r2, 4
|
||||
subs r0, r2
|
||||
lsls r0, 5
|
||||
add r0, sp
|
||||
adds r0, 0x8
|
||||
add r2, sp, 0x8
|
||||
subs r5, r6, 0x2
|
||||
mov r4, r9
|
||||
_0804C650:
|
||||
cmp r1, 0
|
||||
beq _0804C658
|
||||
strb r3, [r2, 0x13]
|
||||
strb r3, [r0, 0x13]
|
||||
_0804C658:
|
||||
cmp r1, r5
|
||||
bge _0804C660
|
||||
strb r3, [r2, 0x14]
|
||||
strb r3, [r0, 0x14]
|
||||
_0804C660:
|
||||
adds r0, 0x20
|
||||
adds r2, 0x20
|
||||
adds r1, 0x1
|
||||
cmp r1, r4
|
||||
blt _0804C650
|
||||
_0804C66A:
|
||||
ldr r5, _0804C6FC
|
||||
add r5, sp
|
||||
ldr r4, _0804C700
|
||||
add r4, sp
|
||||
str r4, [sp]
|
||||
movs r0, 0
|
||||
str r0, [sp, 0x4]
|
||||
add r0, sp, 0x8
|
||||
adds r1, r7, 0
|
||||
adds r2, r6, 0
|
||||
adds r3, r5, 0
|
||||
bl sub_804D8C8
|
||||
str r4, [sp]
|
||||
add r0, sp, 0x8
|
||||
adds r1, r7, 0
|
||||
adds r2, r6, 0
|
||||
adds r3, r5, 0
|
||||
bl sub_804E590
|
||||
mov r0, r10
|
||||
ldrb r3, [r0, 0x9]
|
||||
add r0, sp, 0x8
|
||||
adds r1, r7, 0
|
||||
adds r2, r6, 0
|
||||
bl sub_804F0D0
|
||||
ldr r0, _0804C704
|
||||
movs r1, 0
|
||||
ldrsh r3, [r0, r1]
|
||||
add r0, sp, 0x8
|
||||
adds r1, r7, 0
|
||||
adds r2, r6, 0
|
||||
bl sub_804EBC8
|
||||
ldr r0, _0804C708
|
||||
movs r2, 0
|
||||
ldrsh r3, [r0, r2]
|
||||
add r0, sp, 0x8
|
||||
adds r1, r7, 0
|
||||
adds r2, r6, 0
|
||||
bl sub_804EEE4
|
||||
mov r0, r10
|
||||
ldrb r3, [r0, 0x13]
|
||||
add r0, sp, 0x8
|
||||
adds r1, r7, 0
|
||||
adds r2, r6, 0
|
||||
bl sub_804CBEC
|
||||
add r0, sp, 0x8
|
||||
adds r1, r7, 0
|
||||
adds r2, r6, 0
|
||||
bl sub_804E03C
|
||||
add r0, sp, 0x8
|
||||
adds r1, r7, 0
|
||||
adds r2, r6, 0
|
||||
bl sub_804D534
|
||||
movs r3, 0xE5
|
||||
lsls r3, 5
|
||||
add sp, r3
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0804C6F8: .4byte 0xffffe360
|
||||
_0804C6FC: .4byte 0x00001c28
|
||||
_0804C700: .4byte 0x00001c64
|
||||
_0804C704: .4byte gUnknown_202F1B0
|
||||
_0804C708: .4byte gUnknown_202F1B2
|
||||
thumb_func_end sub_804C53C
|
||||
|
||||
thumb_func_start sub_804C70C
|
||||
sub_804C70C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x8
|
||||
adds r7, r0, 0
|
||||
mov r8, r1
|
||||
ldr r0, _0804C73C
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0804C740
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
ldr r1, [r0, 0x4]
|
||||
lsls r0, r7, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
ldrb r5, [r0]
|
||||
ldrb r6, [r0, 0x1]
|
||||
cmp r5, 0
|
||||
beq _0804C736
|
||||
cmp r6, 0
|
||||
bne _0804C744
|
||||
_0804C736:
|
||||
bl sub_804C918
|
||||
b _0804C782
|
||||
.align 2, 0
|
||||
_0804C73C: .4byte gDungeon
|
||||
_0804C740: .4byte 0x00013568
|
||||
_0804C744:
|
||||
cmp r7, 0x31
|
||||
bgt _0804C752
|
||||
adds r0, r7, 0
|
||||
bl sub_8051288
|
||||
movs r0, 0x1
|
||||
b _0804C784
|
||||
_0804C752:
|
||||
adds r1, r5, 0x4
|
||||
movs r0, 0x38
|
||||
bl __divsi3
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0x1
|
||||
bgt _0804C762
|
||||
movs r4, 0x1
|
||||
_0804C762:
|
||||
adds r1, r6, 0x4
|
||||
movs r0, 0x20
|
||||
bl __divsi3
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0x1
|
||||
bgt _0804C772
|
||||
movs r1, 0x1
|
||||
_0804C772:
|
||||
str r7, [sp]
|
||||
mov r0, r8
|
||||
str r0, [sp, 0x4]
|
||||
adds r0, r4, 0
|
||||
adds r2, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_804C790
|
||||
_0804C782:
|
||||
movs r0, 0
|
||||
_0804C784:
|
||||
add sp, 0x8
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_804C70C
|
||||
|
||||
thumb_func_start sub_804C790
|
||||
sub_804C790:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
ldr r4, _0804C81C
|
||||
add sp, r4
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldr r0, _0804C820
|
||||
add r0, sp
|
||||
str r2, [r0]
|
||||
ldr r1, _0804C824
|
||||
add r1, sp
|
||||
str r3, [r1]
|
||||
movs r2, 0
|
||||
mov r10, r2
|
||||
mov r8, r2
|
||||
ldr r0, _0804C828
|
||||
add r0, sp
|
||||
ldr r1, _0804C82C
|
||||
add r1, sp
|
||||
adds r2, r5, 0
|
||||
adds r3, r4, 0
|
||||
bl sub_804D024
|
||||
add r0, sp, 0x10
|
||||
adds r1, r5, 0
|
||||
adds r2, r4, 0
|
||||
bl sub_804D084
|
||||
ldr r0, _0804C830
|
||||
add r0, sp
|
||||
ldr r0, [r0]
|
||||
movs r3, 0x1
|
||||
ldrsb r3, [r0, r3]
|
||||
add r0, sp, 0x10
|
||||
adds r1, r5, 0
|
||||
adds r2, r4, 0
|
||||
bl sub_804D154
|
||||
mov r6, r8
|
||||
cmp r8, r5
|
||||
bge _0804C818
|
||||
_0804C7E8:
|
||||
movs r1, 0
|
||||
mov r8, r1
|
||||
adds r2, r6, 0x1
|
||||
cmp r8, r4
|
||||
bge _0804C812
|
||||
lsls r0, r6, 4
|
||||
subs r0, r6
|
||||
movs r1, 0x1
|
||||
lsls r0, 5
|
||||
add r0, sp
|
||||
adds r0, 0x10
|
||||
mov r8, r4
|
||||
_0804C800:
|
||||
strb r1, [r0, 0x1B]
|
||||
adds r0, 0x20
|
||||
movs r3, 0x1
|
||||
negs r3, r3
|
||||
add r8, r3
|
||||
mov r3, r8
|
||||
cmp r3, 0
|
||||
bne _0804C800
|
||||
mov r8, r4
|
||||
_0804C812:
|
||||
adds r6, r2, 0
|
||||
cmp r6, r5
|
||||
blt _0804C7E8
|
||||
_0804C818:
|
||||
movs r7, 0
|
||||
b _0804C836
|
||||
.align 2, 0
|
||||
_0804C81C: .4byte 0xffffe350
|
||||
_0804C820: .4byte 0x00001ca8
|
||||
_0804C824: .4byte 0x00001cac
|
||||
_0804C828: .4byte 0x00001c30
|
||||
_0804C82C: .4byte 0x00001c6c
|
||||
_0804C830: .4byte 0x00001cd4
|
||||
_0804C834:
|
||||
adds r7, 0x1
|
||||
_0804C836:
|
||||
cmp r7, 0x3F
|
||||
bgt _0804C864
|
||||
adds r0, r5, 0
|
||||
bl DungeonRandInt
|
||||
adds r6, r0, 0
|
||||
adds r0, r4, 0
|
||||
bl DungeonRandInt
|
||||
mov r8, r0
|
||||
mov r0, r8
|
||||
muls r0, r5
|
||||
adds r0, r6
|
||||
mov r10, r0
|
||||
lsls r0, r6, 4
|
||||
subs r0, r6
|
||||
add r0, r8
|
||||
lsls r0, 5
|
||||
add r0, sp
|
||||
adds r0, 0x10
|
||||
ldrb r0, [r0, 0xA]
|
||||
cmp r0, 0
|
||||
beq _0804C834
|
||||
_0804C864:
|
||||
ldr r0, _0804C8FC
|
||||
add r0, sp
|
||||
mov r9, r0
|
||||
ldr r7, _0804C900
|
||||
add r7, sp
|
||||
str r7, [sp]
|
||||
mov r1, r10
|
||||
str r1, [sp, 0x4]
|
||||
ldr r2, _0804C904
|
||||
add r2, sp
|
||||
ldr r2, [r2]
|
||||
str r2, [sp, 0x8]
|
||||
ldr r3, _0804C908
|
||||
add r3, sp
|
||||
ldr r3, [r3]
|
||||
str r3, [sp, 0xC]
|
||||
add r0, sp, 0x10
|
||||
adds r1, r5, 0
|
||||
adds r2, r4, 0
|
||||
mov r3, r9
|
||||
bl sub_8050F90
|
||||
cmp r5, 0x1
|
||||
bne _0804C898
|
||||
cmp r4, 0x1
|
||||
beq _0804C8D0
|
||||
_0804C898:
|
||||
mov r0, r8
|
||||
str r0, [sp]
|
||||
ldr r1, _0804C90C
|
||||
add r1, sp
|
||||
ldr r1, [r1]
|
||||
str r1, [sp, 0x4]
|
||||
add r0, sp, 0x10
|
||||
adds r1, r5, 0
|
||||
adds r2, r4, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_804D5F0
|
||||
str r7, [sp]
|
||||
movs r0, 0x1
|
||||
str r0, [sp, 0x4]
|
||||
add r0, sp, 0x10
|
||||
adds r1, r5, 0
|
||||
adds r2, r4, 0
|
||||
mov r3, r9
|
||||
bl sub_804D8C8
|
||||
str r7, [sp]
|
||||
add r0, sp, 0x10
|
||||
adds r1, r5, 0
|
||||
adds r2, r4, 0
|
||||
mov r3, r9
|
||||
bl sub_804E590
|
||||
_0804C8D0:
|
||||
lsls r0, r6, 4
|
||||
subs r0, r6
|
||||
lsls r0, 5
|
||||
add r0, sp
|
||||
adds r0, 0x10
|
||||
mov r2, r8
|
||||
lsls r1, r2, 5
|
||||
adds r0, r1
|
||||
ldr r3, _0804C910
|
||||
add r3, sp
|
||||
ldr r1, [r3]
|
||||
bl sub_8051438
|
||||
ldr r3, _0804C914
|
||||
add sp, r3
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0804C8FC: .4byte 0x00001c30
|
||||
_0804C900: .4byte 0x00001c6c
|
||||
_0804C904: .4byte 0x00001ca8
|
||||
_0804C908: .4byte 0x00001cac
|
||||
_0804C90C: .4byte 0x00001cd4
|
||||
_0804C910: .4byte 0x00001cd0
|
||||
_0804C914: .4byte 0x00001cb0
|
||||
thumb_func_end sub_804C790
|
||||
|
||||
thumb_func_start sub_804C918
|
||||
sub_804C918:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
ldr r4, _0804C9C4
|
||||
add sp, r4
|
||||
mov r0, sp
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_804D084
|
||||
mov r0, sp
|
||||
movs r3, 0
|
||||
movs r2, 0x2
|
||||
strh r2, [r0]
|
||||
mov r1, sp
|
||||
movs r0, 0x36
|
||||
strh r0, [r1, 0x4]
|
||||
mov r0, sp
|
||||
strh r2, [r0, 0x2]
|
||||
movs r0, 0x1E
|
||||
strh r0, [r1, 0x6]
|
||||
mov r0, sp
|
||||
movs r1, 0x1
|
||||
strb r1, [r0, 0xA]
|
||||
strb r1, [r0, 0xB]
|
||||
strb r3, [r0, 0x8]
|
||||
movs r1, 0
|
||||
ldrsh r5, [r0, r1]
|
||||
movs r2, 0x4
|
||||
ldrsh r0, [r0, r2]
|
||||
cmp r5, r0
|
||||
bge _0804C9A6
|
||||
mov r6, sp
|
||||
_0804C95C:
|
||||
movs r0, 0x2
|
||||
ldrsh r4, [r6, r0]
|
||||
movs r1, 0x6
|
||||
ldrsh r0, [r6, r1]
|
||||
adds r7, r5, 0x1
|
||||
cmp r4, r0
|
||||
bge _0804C99C
|
||||
movs r2, 0
|
||||
mov r9, r2
|
||||
ldr r0, _0804C9C8
|
||||
mov r8, r0
|
||||
_0804C972:
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl GetTileSafe
|
||||
ldrh r1, [r0]
|
||||
mov r2, r8
|
||||
ands r1, r2
|
||||
movs r2, 0x1
|
||||
orrs r1, r2
|
||||
strh r1, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl GetTileSafe
|
||||
mov r1, r9
|
||||
strb r1, [r0, 0x9]
|
||||
adds r4, 0x1
|
||||
movs r2, 0x6
|
||||
ldrsh r0, [r6, r2]
|
||||
cmp r4, r0
|
||||
blt _0804C972
|
||||
_0804C99C:
|
||||
adds r5, r7, 0
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r6, r1]
|
||||
cmp r5, r0
|
||||
blt _0804C95C
|
||||
_0804C9A6:
|
||||
ldr r3, _0804C9CC
|
||||
mov r0, sp
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_804EEE4
|
||||
movs r3, 0xE1
|
||||
lsls r3, 5
|
||||
add sp, r3
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0804C9C4: .4byte 0xffffe3e0
|
||||
_0804C9C8: .4byte 0x0000fffc
|
||||
_0804C9CC: .4byte 0x000003e7
|
||||
thumb_func_end sub_804C918
|
||||
|
||||
thumb_func_start sub_804C9D0
|
||||
sub_804C9D0:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
ldr r4, _0804CBB4
|
||||
add sp, r4
|
||||
movs r0, 0
|
||||
movs r1, 0xE5
|
||||
lsls r1, 5
|
||||
add r1, sp
|
||||
str r0, [r1]
|
||||
ldr r1, _0804CBB8
|
||||
add r1, sp
|
||||
movs r2, 0x2
|
||||
str r2, [r1]
|
||||
movs r0, 0x1C
|
||||
str r0, [r1, 0x4]
|
||||
movs r0, 0x36
|
||||
str r0, [r1, 0x8]
|
||||
ldr r1, _0804CBBC
|
||||
add r1, sp
|
||||
str r2, [r1]
|
||||
movs r0, 0x1E
|
||||
str r0, [r1, 0x4]
|
||||
add r0, sp, 0x8
|
||||
movs r1, 0x2
|
||||
movs r2, 0x1
|
||||
bl sub_804D084
|
||||
movs r0, 0
|
||||
ldr r2, _0804CBB8
|
||||
add r2, sp
|
||||
ldr r3, _0804CBC0
|
||||
add r3, sp
|
||||
str r2, [r3]
|
||||
ldr r4, _0804CBBC
|
||||
add r4, sp
|
||||
ldr r1, _0804CBC4
|
||||
add r1, sp
|
||||
str r4, [r1]
|
||||
_0804CA22:
|
||||
movs r7, 0
|
||||
lsls r2, r0, 2
|
||||
ldr r3, _0804CBC8
|
||||
add r3, sp
|
||||
str r2, [r3]
|
||||
adds r4, r0, 0x1
|
||||
ldr r1, _0804CBCC
|
||||
add r1, sp
|
||||
str r4, [r1]
|
||||
lsls r0, 5
|
||||
ldr r2, _0804CBD0
|
||||
add r2, sp
|
||||
str r0, [r2]
|
||||
_0804CA3C:
|
||||
lsls r0, r7, 2
|
||||
ldr r3, _0804CBC0
|
||||
add r3, sp
|
||||
ldr r3, [r3]
|
||||
adds r0, r3, r0
|
||||
ldr r1, [r0]
|
||||
adds r4, r1, 0x1
|
||||
mov r10, r4
|
||||
ldr r2, _0804CBC4
|
||||
add r2, sp
|
||||
ldr r2, [r2]
|
||||
ldr r3, _0804CBC8
|
||||
add r3, sp
|
||||
ldr r3, [r3]
|
||||
adds r0, r2, r3
|
||||
ldr r2, [r0]
|
||||
adds r4, r2, 0x1
|
||||
ldr r0, _0804CBD4
|
||||
add r0, sp
|
||||
str r4, [r0]
|
||||
adds r3, r7, 0x1
|
||||
mov r9, r3
|
||||
lsls r0, r3, 2
|
||||
ldr r4, _0804CBC0
|
||||
add r4, sp
|
||||
ldr r4, [r4]
|
||||
adds r0, r4, r0
|
||||
ldr r4, [r0]
|
||||
subs r4, r1
|
||||
subs r4, 0x3
|
||||
ldr r1, _0804CBCC
|
||||
add r1, sp
|
||||
ldr r1, [r1]
|
||||
lsls r0, r1, 2
|
||||
ldr r3, _0804CBC4
|
||||
add r3, sp
|
||||
ldr r3, [r3]
|
||||
adds r0, r3, r0
|
||||
ldr r5, [r0]
|
||||
subs r5, r2
|
||||
subs r5, 0x3
|
||||
movs r0, 0xA
|
||||
adds r1, r4, 0
|
||||
bl DungeonRandRange
|
||||
mov r8, r0
|
||||
movs r0, 0x10
|
||||
adds r1, r5, 0
|
||||
bl DungeonRandRange
|
||||
adds r6, r0, 0
|
||||
mov r0, r8
|
||||
subs r4, r0
|
||||
adds r0, r4, 0
|
||||
bl DungeonRandInt
|
||||
adds r4, r0, 0
|
||||
add r4, r10
|
||||
subs r5, r6
|
||||
adds r0, r5, 0
|
||||
bl DungeonRandInt
|
||||
ldr r2, _0804CBD4
|
||||
add r2, sp
|
||||
ldr r1, [r2]
|
||||
adds r1, r0
|
||||
mov r10, r1
|
||||
mov r0, r8
|
||||
adds r3, r4, r0
|
||||
add r6, r10
|
||||
lsls r0, r7, 4
|
||||
subs r0, r7
|
||||
lsls r0, 5
|
||||
ldr r1, _0804CBD0
|
||||
add r1, sp
|
||||
ldr r1, [r1]
|
||||
adds r0, r1, r0
|
||||
add r0, sp
|
||||
adds r0, 0x8
|
||||
movs r1, 0x1
|
||||
strb r1, [r0, 0xA]
|
||||
strh r4, [r0]
|
||||
strh r3, [r0, 0x4]
|
||||
mov r2, r10
|
||||
strh r2, [r0, 0x2]
|
||||
strh r6, [r0, 0x6]
|
||||
mov r0, r9
|
||||
ldr r1, _0804CBD8
|
||||
add r1, sp
|
||||
str r0, [r1]
|
||||
movs r0, 0xE5
|
||||
lsls r0, 5
|
||||
add r0, sp
|
||||
ldr r2, [r0]
|
||||
adds r2, 0x1
|
||||
mov r9, r2
|
||||
cmp r4, r3
|
||||
bge _0804CB4E
|
||||
_0804CB00:
|
||||
mov r5, r10
|
||||
adds r7, r4, 0x1
|
||||
cmp r5, r6
|
||||
bge _0804CB48
|
||||
ldr r1, _0804CBDC
|
||||
mov r8, r1
|
||||
_0804CB0C:
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0xE6
|
||||
lsls r2, 5
|
||||
add r2, sp
|
||||
str r3, [r2]
|
||||
bl GetTileSafe
|
||||
ldrh r1, [r0]
|
||||
mov r2, r8
|
||||
ands r1, r2
|
||||
movs r2, 0x1
|
||||
orrs r1, r2
|
||||
strh r1, [r0]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl GetTileSafe
|
||||
movs r1, 0xE5
|
||||
lsls r1, 5
|
||||
add r1, sp
|
||||
ldrb r1, [r1]
|
||||
strb r1, [r0, 0x9]
|
||||
adds r5, 0x1
|
||||
movs r2, 0xE6
|
||||
lsls r2, 5
|
||||
add r2, sp
|
||||
ldr r3, [r2]
|
||||
cmp r5, r6
|
||||
blt _0804CB0C
|
||||
_0804CB48:
|
||||
adds r4, r7, 0
|
||||
cmp r4, r3
|
||||
blt _0804CB00
|
||||
_0804CB4E:
|
||||
mov r3, r9
|
||||
movs r4, 0xE5
|
||||
lsls r4, 5
|
||||
add r4, sp
|
||||
str r3, [r4]
|
||||
ldr r0, _0804CBD8
|
||||
add r0, sp
|
||||
ldr r7, [r0]
|
||||
cmp r7, 0x1
|
||||
bgt _0804CB64
|
||||
b _0804CA3C
|
||||
_0804CB64:
|
||||
ldr r1, _0804CBCC
|
||||
add r1, sp
|
||||
ldr r0, [r1]
|
||||
cmp r0, 0
|
||||
bgt _0804CB70
|
||||
b _0804CA22
|
||||
_0804CB70:
|
||||
add r0, sp, 0x8
|
||||
movs r2, 0
|
||||
movs r1, 0x1
|
||||
strb r1, [r0, 0x16]
|
||||
ldr r0, _0804CBE0
|
||||
add r0, sp
|
||||
strb r1, [r0]
|
||||
ldr r3, _0804CBB8
|
||||
add r3, sp
|
||||
ldr r0, _0804CBBC
|
||||
add r0, sp
|
||||
str r0, [sp]
|
||||
str r2, [sp, 0x4]
|
||||
add r0, sp, 0x8
|
||||
movs r1, 0x2
|
||||
movs r2, 0x1
|
||||
bl sub_804D8C8
|
||||
ldr r3, _0804CBE4
|
||||
add r0, sp, 0x8
|
||||
movs r1, 0x2
|
||||
movs r2, 0x1
|
||||
bl sub_804EEE4
|
||||
ldr r3, _0804CBE8
|
||||
add sp, r3
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0804CBB4: .4byte 0xffffe33c
|
||||
_0804CBB8: .4byte 0x00001c28
|
||||
_0804CBBC: .4byte 0x00001c64
|
||||
_0804CBC0: .4byte 0x00001ca4
|
||||
_0804CBC4: .4byte 0x00001cac
|
||||
_0804CBC8: .4byte 0x00001cb0
|
||||
_0804CBCC: .4byte 0x00001cbc
|
||||
_0804CBD0: .4byte 0x00001cb4
|
||||
_0804CBD4: .4byte 0x00001ca8
|
||||
_0804CBD8: .4byte 0x00001cb8
|
||||
_0804CBDC: .4byte 0x0000fffc
|
||||
_0804CBE0: .4byte 0x000001fd
|
||||
_0804CBE4: .4byte 0x000003e7
|
||||
_0804CBE8: .4byte 0x00001cc4
|
||||
thumb_func_end sub_804C9D0
|
||||
|
||||
thumb_func_start sub_804CBEC
|
||||
sub_804CBEC:
|
||||
push {r4-r7,lr}
|
||||
|
|
|
|||
|
|
@ -59,6 +59,12 @@ void sub_80506F0(s32 a0, UnkDungeonGlobal_unk1C574 *a1);
|
|||
void sub_804FF08(UnkDungeonGlobal_unk1C574 *a0, bool8 a1);
|
||||
void sub_8050438(UnkDungeonGlobal_unk1C574 *a0, bool8 a1);
|
||||
|
||||
struct FileFixedmapPosStruct
|
||||
{
|
||||
u8 x;
|
||||
u8 y;
|
||||
};
|
||||
|
||||
// Some weird-ass regswap prevents the function from being matched - https://decomp.me/scratch/9SUV3
|
||||
#ifdef NONMATCHING
|
||||
void sub_804AFAC(void)
|
||||
|
|
@ -969,12 +975,7 @@ void sub_804B534(s32 xStart, s32 yStart, s32 maxX, s32 maxY)
|
|||
}
|
||||
}
|
||||
|
||||
// Note: 15 seems to determine the array size, give it a better name and a define.
|
||||
|
||||
|
||||
// Size 480 = 32 * 15
|
||||
|
||||
struct UnkHugeSpStructSubUnk0
|
||||
struct GridCell
|
||||
{
|
||||
Position unk0;
|
||||
Position unk4;
|
||||
|
|
@ -1004,46 +1005,42 @@ struct UnkHugeSpStructSubUnk0
|
|||
u8 unk31;
|
||||
};
|
||||
|
||||
// Size 7200, however this struct is usually put at sp+8, so 8 needs to be added to these fields(in decimal)
|
||||
struct UnkHugeSpStruct
|
||||
{
|
||||
struct UnkHugeSpStructSubUnk0 unk0[15][15];
|
||||
};
|
||||
#define GRID_CELL_LEN 15
|
||||
|
||||
void sub_804D024(s32 *a0, s32 *a1, s32 x, s32 y);
|
||||
void sub_804D084(struct UnkHugeSpStruct *a0, s32 x, s32 y);
|
||||
void sub_804E03C(struct UnkHugeSpStruct *a0, s32 x, s32 y);
|
||||
void sub_804D534(struct UnkHugeSpStruct *a0, s32 x, s32 y);
|
||||
void sub_804D154(struct UnkHugeSpStruct *a0, s32 x, s32 y, s32 a3);
|
||||
void sub_804D2D0(struct UnkHugeSpStruct *a0, s32 x, s32 y, s32 *a3, s32 *a4, s32 a5);
|
||||
void sub_804D8C8(struct UnkHugeSpStruct *a0, s32 x, s32 y, s32 *a3, s32 *a4, s32 a5);
|
||||
void sub_804E590(struct UnkHugeSpStruct *a0, s32 x, s32 y, s32 *a3, s32 *a4);
|
||||
void sub_804D5B0(struct UnkHugeSpStruct *a0, s32 x, s32 y, UnkDungeonGlobal_unk1C574 *unkPtr);
|
||||
void sub_804F0D0(struct UnkHugeSpStruct *a0, s32 x, s32 y, s32 a3);
|
||||
void sub_804EBC8(struct UnkHugeSpStruct *a0, s32 x, s32 y, s32 a3);
|
||||
void sub_804EEE4(struct UnkHugeSpStruct *a0, s32 x, s32 y, s32 a3);
|
||||
void sub_804CBEC(struct UnkHugeSpStruct *a0, s32 x, s32 y, s32 a3);
|
||||
void sub_804C43C(s32 a0, s32 a1, s32 a2, struct UnkHugeSpStructSubUnk0 sp[15][15]);
|
||||
void sub_804D084(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y);
|
||||
void sub_804E03C(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y);
|
||||
void sub_804D534(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y);
|
||||
void sub_804D154(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y, s32 a3);
|
||||
void sub_804D2D0(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y, s32 *a3, s32 *a4, s32 a5);
|
||||
void sub_804D8C8(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y, s32 *a3, s32 *a4, s32 a5);
|
||||
void sub_804E590(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y, s32 *a3, s32 *a4);
|
||||
void sub_804D5B0(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y, UnkDungeonGlobal_unk1C574 *unkPtr);
|
||||
void sub_804F0D0(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y, s32 a3);
|
||||
void sub_804EBC8(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y, s32 a3);
|
||||
void sub_804EEE4(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y, s32 a3);
|
||||
void sub_804CBEC(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y, s32 a3);
|
||||
void sub_804C43C(s32 a0, s32 a1, s32 a2, struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN]);
|
||||
|
||||
void sub_804B634(s32 x, s32 y, UnkDungeonGlobal_unk1C574 *unkPtr)
|
||||
{
|
||||
struct UnkHugeSpStruct sp;
|
||||
s32 unk7200[15];
|
||||
s32 unk7260[15];
|
||||
struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN];
|
||||
s32 unk7200[GRID_CELL_LEN];
|
||||
s32 unk7260[GRID_CELL_LEN];
|
||||
|
||||
sub_804D024(unk7200, unk7260, x, y);
|
||||
sub_804D084(&sp, x, y);
|
||||
sub_804D154(&sp, x, y, unkPtr->unk1);
|
||||
sub_804D2D0(&sp, x, y, unk7200, unk7260, unkPtr->unkD);
|
||||
sub_804D5B0(&sp, x, y, unkPtr);
|
||||
sub_804D8C8(&sp, x, y, unk7200, unk7260, 0);
|
||||
sub_804E590(&sp, x, y, unk7200, unk7260);
|
||||
sub_804F0D0(&sp, x, y, unkPtr->unk9);
|
||||
sub_804EBC8(&sp, x, y, gUnknown_202F1B0);
|
||||
sub_804EEE4(&sp, x, y, gUnknown_202F1B2);
|
||||
sub_804CBEC(&sp, x, y, unkPtr->unk13);
|
||||
sub_804E03C(&sp, x, y);
|
||||
sub_804D534(&sp, x, y);
|
||||
sub_804D084(grid, x, y);
|
||||
sub_804D154(grid, x, y, unkPtr->unk1);
|
||||
sub_804D2D0(grid, x, y, unk7200, unk7260, unkPtr->unkD);
|
||||
sub_804D5B0(grid, x, y, unkPtr);
|
||||
sub_804D8C8(grid, x, y, unk7200, unk7260, 0);
|
||||
sub_804E590(grid, x, y, unk7200, unk7260);
|
||||
sub_804F0D0(grid, x, y, unkPtr->unk9);
|
||||
sub_804EBC8(grid, x, y, gUnknown_202F1B0);
|
||||
sub_804EEE4(grid, x, y, gUnknown_202F1B2);
|
||||
sub_804CBEC(grid, x, y, unkPtr->unk13);
|
||||
sub_804E03C(grid, x, y);
|
||||
sub_804D534(grid, x, y);
|
||||
}
|
||||
|
||||
// Decompile once data structure is better understood
|
||||
|
|
@ -1051,7 +1048,7 @@ void sub_804B634(s32 x, s32 y, UnkDungeonGlobal_unk1C574 *unkPtr)
|
|||
#ifdef NONMATCHING
|
||||
void sub_804B72C(UnkDungeonGlobal_unk1C574 *unkPtr)
|
||||
{
|
||||
struct UnkHugeSpStruct sp;
|
||||
struct GridCell grid[15][15];
|
||||
|
||||
sp.unk7200[0] = 0;
|
||||
sp.unk7200[1] = 5;
|
||||
|
|
@ -1067,7 +1064,7 @@ void sub_804B72C(UnkDungeonGlobal_unk1C574 *unkPtr)
|
|||
sp.unk7260[3] = 25;
|
||||
sp.unk7260[4] = 30;
|
||||
|
||||
sub_804D084(&sp, 6, 4);
|
||||
sub_804D084(grid, 6, 4);
|
||||
}
|
||||
#else
|
||||
NAKED void sub_804B72C(UnkDungeonGlobal_unk1C574 *unkPtr)
|
||||
|
|
@ -2235,9 +2232,9 @@ NAKED void sub_804BC80(UnkDungeonGlobal_unk1C574 *a0)
|
|||
|
||||
void sub_804C0A8(UnkDungeonGlobal_unk1C574 *unkPtr)
|
||||
{
|
||||
struct UnkHugeSpStruct sp;
|
||||
s32 unk7200[15];
|
||||
s32 unk7260[15];
|
||||
struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN];
|
||||
s32 unk7200[GRID_CELL_LEN];
|
||||
s32 unk7260[GRID_CELL_LEN];
|
||||
s32 x, y, unk;
|
||||
|
||||
unk7200[0] = 0;
|
||||
|
|
@ -2252,23 +2249,23 @@ void sub_804C0A8(UnkDungeonGlobal_unk1C574 *unkPtr)
|
|||
|
||||
unk = 1;
|
||||
x = 5, y = 1;
|
||||
sub_804D084(&sp, x, y);
|
||||
sub_804D154(&sp, x, y, unkPtr->unk1);
|
||||
sub_804D2D0(&sp, x, y, unk7200, unk7260, unkPtr->unkD);
|
||||
sub_804D5B0(&sp, x, y, unkPtr);
|
||||
sub_804D8C8(&sp, x, y, unk7200, unk7260, unk);
|
||||
sub_804E590(&sp, x, y, unk7200, unk7260);
|
||||
sub_804EBC8(&sp, x, y, gUnknown_202F1B0);
|
||||
sub_804EEE4(&sp, x, y, gUnknown_202F1B2);
|
||||
sub_804CBEC(&sp, x, y, unkPtr->unk13);
|
||||
sub_804E03C(&sp, x, y);
|
||||
sub_804D084(grid, x, y);
|
||||
sub_804D154(grid, x, y, unkPtr->unk1);
|
||||
sub_804D2D0(grid, x, y, unk7200, unk7260, unkPtr->unkD);
|
||||
sub_804D5B0(grid, x, y, unkPtr);
|
||||
sub_804D8C8(grid, x, y, unk7200, unk7260, unk);
|
||||
sub_804E590(grid, x, y, unk7200, unk7260);
|
||||
sub_804EBC8(grid, x, y, gUnknown_202F1B0);
|
||||
sub_804EEE4(grid, x, y, gUnknown_202F1B2);
|
||||
sub_804CBEC(grid, x, y, unkPtr->unk13);
|
||||
sub_804E03C(grid, x, y);
|
||||
}
|
||||
|
||||
void sub_804C190(UnkDungeonGlobal_unk1C574 *unkPtr)
|
||||
{
|
||||
struct UnkHugeSpStruct sp;
|
||||
s32 unk7200[15];
|
||||
s32 unk7260[15];
|
||||
struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN];
|
||||
s32 unk7200[GRID_CELL_LEN];
|
||||
s32 unk7260[GRID_CELL_LEN];
|
||||
s32 i, j, x, y;
|
||||
|
||||
unk7200[0] = 11;
|
||||
|
|
@ -2282,40 +2279,40 @@ void sub_804C190(UnkDungeonGlobal_unk1C574 *unkPtr)
|
|||
unk7260[3] = 30;
|
||||
|
||||
x = 3, y = 3;
|
||||
sub_804D084(&sp, x, y);
|
||||
sub_804D084(grid, x, y);
|
||||
for (i = 0; i < x; i++) {
|
||||
for (j = 0; j < y; j++) {
|
||||
sp.unk0[i][j].unk10 = 1;
|
||||
grid[i][j].unk10 = 1;
|
||||
}
|
||||
}
|
||||
sp.unk0[0][0].unk8 = 1;
|
||||
sp.unk0[2][0].unk8 = 1;
|
||||
sp.unk0[0][2].unk8 = 1;
|
||||
sp.unk0[2][2].unk8 = 1;
|
||||
grid[0][0].unk8 = 1;
|
||||
grid[2][0].unk8 = 1;
|
||||
grid[0][2].unk8 = 1;
|
||||
grid[2][2].unk8 = 1;
|
||||
|
||||
sub_804D2D0(&sp, x, y, unk7200, unk7260, unkPtr->unkD);
|
||||
sub_804D2D0(grid, x, y, unk7200, unk7260, unkPtr->unkD);
|
||||
|
||||
sp.unk0[0][1].unk22 = 1;
|
||||
sp.unk0[1][1].unk21 = 1;
|
||||
sp.unk0[1][1].unk22 = 1;
|
||||
sp.unk0[2][1].unk21 = 1;
|
||||
sp.unk0[1][0].unk20 = 1;
|
||||
sp.unk0[1][1].unk19 = 1;
|
||||
sp.unk0[1][1].unk20 = 1;
|
||||
sp.unk0[1][2].unk19 = 1;
|
||||
sub_804D8C8(&sp, x, y, unk7200, unk7260, 1);
|
||||
sub_804E590(&sp, x, y, unk7200, unk7260);
|
||||
sub_804EBC8(&sp, x, y, gUnknown_202F1B0);
|
||||
sub_804EEE4(&sp, x, y, gUnknown_202F1B2);
|
||||
sub_804CBEC(&sp, x, y, unkPtr->unk13);
|
||||
sub_804E03C(&sp, x, y);
|
||||
grid[0][1].unk22 = 1;
|
||||
grid[1][1].unk21 = 1;
|
||||
grid[1][1].unk22 = 1;
|
||||
grid[2][1].unk21 = 1;
|
||||
grid[1][0].unk20 = 1;
|
||||
grid[1][1].unk19 = 1;
|
||||
grid[1][1].unk20 = 1;
|
||||
grid[1][2].unk19 = 1;
|
||||
sub_804D8C8(grid, x, y, unk7200, unk7260, 1);
|
||||
sub_804E590(grid, x, y, unk7200, unk7260);
|
||||
sub_804EBC8(grid, x, y, gUnknown_202F1B0);
|
||||
sub_804EEE4(grid, x, y, gUnknown_202F1B2);
|
||||
sub_804CBEC(grid, x, y, unkPtr->unk13);
|
||||
sub_804E03C(grid, x, y);
|
||||
}
|
||||
|
||||
void sub_804C2F4(UnkDungeonGlobal_unk1C574 *unkPtr)
|
||||
{
|
||||
struct UnkHugeSpStruct sp;
|
||||
s32 unk7200[15];
|
||||
s32 unk7260[15];
|
||||
struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN];
|
||||
s32 unk7200[GRID_CELL_LEN];
|
||||
s32 unk7260[GRID_CELL_LEN];
|
||||
s32 i, j, x, y;
|
||||
|
||||
unk7200[0] = 5;
|
||||
|
|
@ -2329,38 +2326,38 @@ void sub_804C2F4(UnkDungeonGlobal_unk1C574 *unkPtr)
|
|||
unk7260[3] = 30;
|
||||
|
||||
x = 3, y = 3;
|
||||
sub_804D084(&sp, x, y);
|
||||
sub_804D084(grid, x, y);
|
||||
for (i = 0; i < x; i++) {
|
||||
for (j = 0; j < y; j++) {
|
||||
sp.unk0[i][j].unk10 = 1;
|
||||
grid[i][j].unk10 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
sub_804D2D0(&sp, x, y, unk7200, unk7260, unkPtr->unkD);
|
||||
sub_804D2D0(grid, x, y, unk7200, unk7260, unkPtr->unkD);
|
||||
for (j = 0; j < 3; j++) {
|
||||
sp.unk0[0][j].unk22 = 1;
|
||||
sp.unk0[1][j].unk21 = 1;
|
||||
sp.unk0[1][j].unk22 = 1;
|
||||
sp.unk0[2][j].unk21 = 1;
|
||||
grid[0][j].unk22 = 1;
|
||||
grid[1][j].unk21 = 1;
|
||||
grid[1][j].unk22 = 1;
|
||||
grid[2][j].unk21 = 1;
|
||||
}
|
||||
sub_804D8C8(&sp, x, y, unk7200, unk7260, 1);
|
||||
sub_804C43C(1, 0, 1, sp.unk0);
|
||||
sub_804C43C(1, 0, 2, sp.unk0);
|
||||
sub_804E590(&sp, x, y, unk7200, unk7260);
|
||||
sub_804EBC8(&sp, x, y, gUnknown_202F1B0);
|
||||
sub_804EEE4(&sp, x, y, gUnknown_202F1B2);
|
||||
sub_804CBEC(&sp, x, y, unkPtr->unk13);
|
||||
sub_804E03C(&sp, x, y);
|
||||
sub_804D8C8(grid, x, y, unk7200, unk7260, 1);
|
||||
sub_804C43C(1, 0, 1, grid);
|
||||
sub_804C43C(1, 0, 2, grid);
|
||||
sub_804E590(grid, x, y, unk7200, unk7260);
|
||||
sub_804EBC8(grid, x, y, gUnknown_202F1B0);
|
||||
sub_804EEE4(grid, x, y, gUnknown_202F1B2);
|
||||
sub_804CBEC(grid, x, y, unkPtr->unk13);
|
||||
sub_804E03C(grid, x, y);
|
||||
}
|
||||
|
||||
void sub_804C43C(s32 a0, s32 a1, s32 a2, struct UnkHugeSpStructSubUnk0 sp[15][15])
|
||||
void sub_804C43C(s32 a0, s32 a1, s32 a2, struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN])
|
||||
{
|
||||
s32 x, y;
|
||||
s32 xStart = (sp[a0][a1].unk0.x < sp[a0][a1+a2].unk0.x) ? sp[a0][a1].unk0.x : sp[a0][a1+a2].unk0.x;
|
||||
s32 yStart = sp[a0][a1].unk0.y;
|
||||
s32 xMax = (sp[a0][a1].unk4.x > sp[a0][a1+a2].unk4.x) ? sp[a0][a1].unk4.x : sp[a0][a1+a2].unk4.x;
|
||||
s32 yMax = sp[a0][a1 + a2].unk4.y;
|
||||
u8 room = GetTile(sp[a0][a1].unk0.x, sp[a0][a1].unk0.y)->room;
|
||||
s32 xStart = (grid[a0][a1].unk0.x < grid[a0][a1+a2].unk0.x) ? grid[a0][a1].unk0.x : grid[a0][a1+a2].unk0.x;
|
||||
s32 yStart = grid[a0][a1].unk0.y;
|
||||
s32 xMax = (grid[a0][a1].unk4.x > grid[a0][a1+a2].unk4.x) ? grid[a0][a1].unk4.x : grid[a0][a1+a2].unk4.x;
|
||||
s32 yMax = grid[a0][a1 + a2].unk4.y;
|
||||
u8 room = GetTile(grid[a0][a1].unk0.x, grid[a0][a1].unk0.y)->room;
|
||||
|
||||
for (x = xStart; x < xMax; x++) {
|
||||
for (y = yStart; y < yMax; y++) {
|
||||
|
|
@ -2371,14 +2368,217 @@ void sub_804C43C(s32 a0, s32 a1, s32 a2, struct UnkHugeSpStructSubUnk0 sp[15][15
|
|||
}
|
||||
}
|
||||
|
||||
sp[a0][a1].unk0.x = xStart;
|
||||
sp[a0][a1].unk4.x = xMax;
|
||||
sp[a0][a1].unk0.y = yStart;
|
||||
sp[a0][a1].unk4.y = yMax;
|
||||
sp[a0][a1 + a2].unk18 = 1;
|
||||
sp[a0][a1].unk18 = 1;
|
||||
sp[a0][a1 + a2].unk11 = 0;
|
||||
sp[a0][a1 + a2].unk17 = 1;
|
||||
grid[a0][a1].unk0.x = xStart;
|
||||
grid[a0][a1].unk4.x = xMax;
|
||||
grid[a0][a1].unk0.y = yStart;
|
||||
grid[a0][a1].unk4.y = yMax;
|
||||
grid[a0][a1 + a2].unk18 = 1;
|
||||
grid[a0][a1].unk18 = 1;
|
||||
grid[a0][a1 + a2].unk11 = 0;
|
||||
grid[a0][a1 + a2].unk17 = 1;
|
||||
}
|
||||
|
||||
void sub_804C53C(s32 x_, s32 y_, UnkDungeonGlobal_unk1C574 *unkPtr)
|
||||
{
|
||||
struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN];
|
||||
s32 unk7200[GRID_CELL_LEN];
|
||||
s32 unk7260[GRID_CELL_LEN];
|
||||
s32 i, j;
|
||||
s32 x = x_;
|
||||
s32 y = y_;
|
||||
|
||||
sub_804D024(unk7200, unk7260, x, y);
|
||||
sub_804D084(grid, x, y);
|
||||
for (i = 0; i < x; i++) {
|
||||
for (j = 0; j < y; j++) {
|
||||
grid[i][j].unk10 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 1; i < x - 1; i++) {
|
||||
for (j = 1; j < y - 1; j++) {
|
||||
grid[i][j].unk8 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
sub_804D2D0(grid, x, y, unk7200, unk7260, unkPtr->unkD);
|
||||
for (i = 0; i < x - 1; i++) {
|
||||
if (i != 0) {
|
||||
grid[i][0].unk22 = 1;
|
||||
grid[i][y-1].unk22 = 1;
|
||||
}
|
||||
if (i < x - 2) {
|
||||
grid[i+1][0].unk21 = 1;
|
||||
grid[i+1][y-1].unk21 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
for (j = 0; j < y - 1; j++) {
|
||||
if (j != 0) {
|
||||
grid[0][j].unk19 = 1;
|
||||
grid[x-1][j].unk19 = 1;
|
||||
}
|
||||
if (j < y - 2) {
|
||||
grid[0][j].unk20 = 1;
|
||||
grid[x-1][j].unk20 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
sub_804D8C8(grid, x, y, unk7200, unk7260, 0);
|
||||
sub_804E590(grid, x, y, unk7200, unk7260);
|
||||
sub_804F0D0(grid, x, y, unkPtr->unk9);
|
||||
sub_804EBC8(grid, x, y, gUnknown_202F1B0);
|
||||
sub_804EEE4(grid, x, y, gUnknown_202F1B2);
|
||||
sub_804CBEC(grid, x, y, unkPtr->unk13);
|
||||
sub_804E03C(grid, x, y);
|
||||
sub_804D534(grid, x, y);
|
||||
}
|
||||
|
||||
void sub_804C790(s32 x1, s32 y1, s32 x2, s32 y2, s32 a4, UnkDungeonGlobal_unk1C574 *unkPtr);
|
||||
extern void sub_8051288(s32 a0);
|
||||
|
||||
bool8 sub_804C70C(s32 a0, UnkDungeonGlobal_unk1C574 *unkPtr)
|
||||
{
|
||||
struct FileFixedmapPosStruct **fileData = (void *) gDungeon->unk13568->data;
|
||||
s32 x1 = fileData[a0]->x;
|
||||
s32 y1 = fileData[a0]->y;
|
||||
s32 x2, y2;
|
||||
|
||||
if (x1 == 0 || y1 == 0) {
|
||||
sub_804C918();
|
||||
return FALSE;
|
||||
}
|
||||
else if (a0 < 50) {
|
||||
sub_8051288(a0);
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
x2 = DUNGEON_MAX_SIZE_X / (x1 + 4);
|
||||
if (x2 <= 1)
|
||||
x2 = 1;
|
||||
y2 = DUNGEON_MAX_SIZE_Y / (y1 + 4);
|
||||
if (y2 <= 1)
|
||||
y2 = 1;
|
||||
sub_804C790(x2, y2, x1, y1, a0, unkPtr);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8050F90(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x1, s32 y1, s32 *a3, s32 *a4, s32 a5, s32 x2, s32 y2);
|
||||
void sub_804D5F0(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 x, s32 y, s32 x2, s32 y2, UnkDungeonGlobal_unk1C574 *unkPtr);
|
||||
void sub_8051438(struct GridCell *cell, s32 a1);
|
||||
|
||||
void sub_804C790(s32 x1, s32 y1, s32 x2, s32 y2, s32 a4, UnkDungeonGlobal_unk1C574 *unkPtr)
|
||||
{
|
||||
s32 tries;
|
||||
struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN];
|
||||
s32 unk7200[GRID_CELL_LEN];
|
||||
s32 unk7260[GRID_CELL_LEN];
|
||||
s32 r10 = 0;
|
||||
s32 x3 = 0, y3 = 0;
|
||||
|
||||
sub_804D024(unk7200, unk7260, x1, y1);
|
||||
sub_804D084(grid, x1, y1);
|
||||
sub_804D154(grid, x1, y1, unkPtr->unk1);
|
||||
for (x3 = 0; x3 < x1; x3++) {
|
||||
for (y3 = 0; y3 < y1; y3++) {
|
||||
grid[x3][y3].unk27 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
for (tries = 0; tries < 64; tries++) {
|
||||
x3 = DungeonRandInt(x1);
|
||||
y3 = DungeonRandInt(y1);
|
||||
r10 = y3 * x1 + x3;
|
||||
if (grid[x3][y3].unk10)
|
||||
break;
|
||||
}
|
||||
sub_8050F90(grid, x1, y1, unk7200, unk7260, r10, x2, y2);
|
||||
if (x1 != 1 || y1 != 1) {
|
||||
sub_804D5F0(grid, x1, y1, x3, y3, unkPtr);
|
||||
sub_804D8C8(grid, x1, y1, unk7200, unk7260, 1);
|
||||
sub_804E590(grid, x1, y1, unk7200, unk7260);
|
||||
}
|
||||
sub_8051438(&grid[x3][y3], a4);
|
||||
}
|
||||
|
||||
void sub_804C918(void)
|
||||
{
|
||||
s32 i, j;
|
||||
struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN];
|
||||
|
||||
sub_804D084(grid, 1, 1);
|
||||
grid[0][0].unk0.x = 2;
|
||||
grid[0][0].unk4.x = DUNGEON_MAX_SIZE_X - 2;
|
||||
grid[0][0].unk0.y = 2;
|
||||
grid[0][0].unk4.y = DUNGEON_MAX_SIZE_Y - 2;
|
||||
grid[0][0].unk10 = 1;
|
||||
grid[0][0].unk11 = 1;
|
||||
grid[0][0].unk8 = 0;
|
||||
for (i = grid[0][0].unk0.x; i < grid[0][0].unk4.x; i++) {
|
||||
for (j = grid[0][0].unk0.y; j < grid[0][0].unk4.y; j++) {
|
||||
Tile *tile = GetTileSafe(i, j);
|
||||
tile->terrainType &= ~(TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
tile->terrainType |= TERRAIN_TYPE_NORMAL;
|
||||
// Unnecessary call again
|
||||
GetTileSafe(i, j)->room = 0;
|
||||
}
|
||||
}
|
||||
sub_804EEE4(grid, 1, 1, 999);
|
||||
}
|
||||
|
||||
void sub_804C9D0(void)
|
||||
{
|
||||
struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN];
|
||||
s32 listX[GRID_CELL_LEN];
|
||||
s32 listY[GRID_CELL_LEN];
|
||||
s32 currRoomId = 0;
|
||||
s32 x, y;
|
||||
|
||||
listX[0] = 2;
|
||||
listX[1] = 28;
|
||||
listX[2] = 54;
|
||||
listY[0] = 2;
|
||||
listY[1] = 30;
|
||||
sub_804D084(grid, 2, 1);
|
||||
|
||||
for (y = 0; y < 1; y++) {
|
||||
for (x = 0; x < 2; x++) {
|
||||
s32 currX, currY;
|
||||
s32 minX = listX[x] + 1;
|
||||
s32 minY = listY[y] + 1;
|
||||
s32 rangeX = listX[x + 1] - listX[x] - 3;
|
||||
s32 rangeY = listY[y + 1] - listY[y] - 3;
|
||||
s32 roomSizeX = DungeonRandRange(10, rangeX);
|
||||
s32 roomSizeY = DungeonRandRange(16, rangeY);
|
||||
s32 startX = DungeonRandInt(rangeX - roomSizeX) + minX;
|
||||
s32 startY = DungeonRandInt(rangeY - roomSizeY) + minY;
|
||||
s32 endX = startX + roomSizeX;
|
||||
s32 endY = startY + roomSizeY;
|
||||
|
||||
grid[x][y].unk10 = 1;
|
||||
grid[x][y].unk0.x = startX;
|
||||
grid[x][y].unk4.x = endX;
|
||||
grid[x][y].unk0.y = startY;
|
||||
grid[x][y].unk4.y = endY;
|
||||
|
||||
for (currX = startX; currX < endX; currX++) {
|
||||
for (currY = startY; currY < endY; currY++) {
|
||||
Tile *tile = GetTileSafe(currX, currY);
|
||||
tile->terrainType &= ~(TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
tile->terrainType |= TERRAIN_TYPE_NORMAL;
|
||||
// Unnecessary call again
|
||||
GetTileSafe(currX, currY)->room = currRoomId;
|
||||
}
|
||||
}
|
||||
currRoomId++;
|
||||
}
|
||||
}
|
||||
|
||||
grid[0][0].unk22 = 1;
|
||||
grid[1][0].unk21 = 1;
|
||||
sub_804D8C8(grid, 2, 1, listX, listY, 0);
|
||||
sub_804EEE4(grid, 2, 1, 999);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user