mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 15:46:18 -05:00
Match sub_80A2FBC
This commit is contained in:
parent
9ed5403720
commit
ba550a1b9d
|
|
@ -8,576 +8,6 @@
|
|||
|
||||
|
||||
|
||||
thumb_func_start sub_80A2FBC
|
||||
sub_80A2FBC:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x2C
|
||||
mov r9, r0
|
||||
lsls r1, 16
|
||||
asrs r4, r1, 16
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r4, r0
|
||||
bne _080A2FDE
|
||||
mov r0, r9
|
||||
bl sub_80A2E64
|
||||
b _080A3428
|
||||
_080A2FDE:
|
||||
mov r0, r9
|
||||
bl sub_80A2DD4
|
||||
ldr r0, _080A3284
|
||||
add r0, r9
|
||||
strh r4, [r0]
|
||||
lsls r0, r4, 3
|
||||
subs r0, r4
|
||||
lsls r0, 2
|
||||
ldr r1, _080A3288
|
||||
adds r0, r1
|
||||
str r0, [sp, 0xC]
|
||||
ldr r0, [r0]
|
||||
ldr r4, _080A328C
|
||||
adds r1, r4, 0
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
movs r6, 0x86
|
||||
lsls r6, 3
|
||||
add r6, r9
|
||||
str r0, [r6]
|
||||
ldr r1, [sp, 0xC]
|
||||
ldr r0, [r1, 0x4]
|
||||
adds r1, r4, 0
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
ldr r5, _080A3290
|
||||
add r5, r9
|
||||
str r0, [r5]
|
||||
ldr r2, [sp, 0xC]
|
||||
ldr r0, [r2, 0x8]
|
||||
adds r1, r4, 0
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
movs r1, 0x87
|
||||
lsls r1, 3
|
||||
add r1, r9
|
||||
str r0, [r1]
|
||||
ldr r1, [r6]
|
||||
ldr r1, [r1, 0x4]
|
||||
str r1, [sp, 0x18]
|
||||
ldr r1, [r5]
|
||||
ldr r1, [r1, 0x4]
|
||||
mov r8, r1
|
||||
ldr r6, [r0, 0x4]
|
||||
ldr r3, _080A3294
|
||||
add r3, r9
|
||||
str r3, [sp, 0x10]
|
||||
ldr r4, _080A3298
|
||||
add r4, r9
|
||||
str r4, [sp, 0x14]
|
||||
movs r5, 0x89
|
||||
lsls r5, 3
|
||||
add r5, r9
|
||||
mov r10, r5
|
||||
ldr r7, [sp, 0x18]
|
||||
ldrb r0, [r7]
|
||||
strh r0, [r3]
|
||||
adds r0, r7, 0
|
||||
adds r0, 0x2
|
||||
str r0, [sp, 0x18]
|
||||
ldrb r0, [r0]
|
||||
strh r0, [r3, 0x2]
|
||||
ldr r1, [sp, 0x18]
|
||||
adds r1, 0x2
|
||||
str r1, [sp, 0x18]
|
||||
mov r2, r8
|
||||
ldrh r0, [r2]
|
||||
strh r0, [r4]
|
||||
movs r3, 0x2
|
||||
add r8, r3
|
||||
mov r4, r8
|
||||
ldrh r0, [r4]
|
||||
ldr r5, [sp, 0x14]
|
||||
strh r0, [r5, 0x2]
|
||||
add r8, r3
|
||||
mov r7, r8
|
||||
ldrh r0, [r7]
|
||||
strh r0, [r5, 0x4]
|
||||
add r8, r3
|
||||
add r3, sp, 0x8
|
||||
ldr r0, _080A329C
|
||||
add r0, r9
|
||||
str r0, [sp, 0x1C]
|
||||
adds r1, r0, 0
|
||||
movs r2, 0x3
|
||||
_080A308A:
|
||||
mov r4, r8
|
||||
ldrh r0, [r4]
|
||||
strh r0, [r1]
|
||||
movs r5, 0x2
|
||||
add r8, r5
|
||||
adds r1, 0x2
|
||||
subs r2, 0x1
|
||||
cmp r2, 0
|
||||
bge _080A308A
|
||||
mov r7, r8
|
||||
ldrh r0, [r7]
|
||||
movs r2, 0
|
||||
movs r1, 0
|
||||
ldr r4, [sp, 0x14]
|
||||
strh r0, [r4, 0xE]
|
||||
add r8, r5
|
||||
ldrb r0, [r6]
|
||||
mov r5, r10
|
||||
strb r0, [r5]
|
||||
adds r6, 0x1
|
||||
ldrb r0, [r6]
|
||||
strb r0, [r5, 0x1]
|
||||
adds r6, 0x1
|
||||
ldrb r0, [r6]
|
||||
strb r0, [r5, 0x2]
|
||||
adds r6, 0x1
|
||||
ldrb r0, [r6]
|
||||
strb r0, [r5, 0x3]
|
||||
adds r6, 0x1
|
||||
ldrb r0, [r6]
|
||||
strb r0, [r5, 0x4]
|
||||
adds r6, 0x1
|
||||
ldrb r0, [r6]
|
||||
strb r0, [r5, 0x5]
|
||||
adds r6, 0x1
|
||||
ldrb r0, [r6]
|
||||
strh r0, [r5, 0x6]
|
||||
adds r6, 0x2
|
||||
ldrb r0, [r6]
|
||||
strh r0, [r5, 0x8]
|
||||
adds r6, 0x2
|
||||
ldrb r0, [r6]
|
||||
strh r0, [r5, 0xA]
|
||||
adds r6, 0x2
|
||||
ldr r7, [sp, 0x18]
|
||||
ldr r0, _080A32A0
|
||||
add r0, r9
|
||||
movs r4, 0
|
||||
ldrsh r0, [r0, r4]
|
||||
lsls r0, 20
|
||||
lsrs r5, r0, 16
|
||||
str r1, [sp, 0x4]
|
||||
movs r0, 0xFF
|
||||
strb r0, [r3]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
strb r0, [r3, 0x1]
|
||||
strb r0, [r3, 0x2]
|
||||
strb r2, [r3, 0x3]
|
||||
movs r4, 0
|
||||
ldr r1, [sp, 0x10]
|
||||
movs r2, 0
|
||||
ldrsh r0, [r1, r2]
|
||||
ldr r3, [sp, 0xC]
|
||||
adds r3, 0xC
|
||||
str r3, [sp, 0x20]
|
||||
cmp r4, r0
|
||||
bge _080A3158
|
||||
ldr r0, _080A32A4
|
||||
add r0, r9
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r4, r0
|
||||
bge _080A3198
|
||||
_080A311E:
|
||||
adds r0, r5, 0
|
||||
adds r1, r0, 0x1
|
||||
lsls r1, 16
|
||||
lsrs r5, r1, 16
|
||||
ldr r1, [sp, 0x4]
|
||||
bl sub_8003810
|
||||
adds r0, r5, 0
|
||||
adds r1, r7, 0
|
||||
movs r2, 0xF
|
||||
bl sub_809971C
|
||||
adds r0, r5, 0
|
||||
adds r0, 0xF
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
adds r7, 0x3C
|
||||
adds r4, 0x1
|
||||
ldr r2, [sp, 0x10]
|
||||
movs r3, 0
|
||||
ldrsh r0, [r2, r3]
|
||||
cmp r4, r0
|
||||
bge _080A3158
|
||||
ldr r0, _080A32A4
|
||||
add r0, r9
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r4, r0
|
||||
blt _080A311E
|
||||
_080A3158:
|
||||
ldr r0, _080A32A4
|
||||
add r0, r9
|
||||
movs r2, 0
|
||||
ldrsh r0, [r0, r2]
|
||||
cmp r4, r0
|
||||
bge _080A3198
|
||||
_080A3164:
|
||||
adds r0, r5, 0
|
||||
adds r1, r0, 0x1
|
||||
lsls r1, 16
|
||||
lsrs r5, r1, 16
|
||||
ldr r1, [sp, 0x4]
|
||||
bl sub_8003810
|
||||
adds r7, r4, 0x1
|
||||
movs r4, 0xE
|
||||
_080A3176:
|
||||
adds r0, r5, 0
|
||||
adds r1, r0, 0x1
|
||||
lsls r1, 16
|
||||
lsrs r5, r1, 16
|
||||
ldr r1, [sp, 0x8]
|
||||
bl sub_8003810
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _080A3176
|
||||
adds r4, r7, 0
|
||||
ldr r0, _080A32A4
|
||||
add r0, r9
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
cmp r4, r0
|
||||
blt _080A3164
|
||||
_080A3198:
|
||||
movs r0, 0xA6
|
||||
lsls r0, 3
|
||||
add r0, r9
|
||||
movs r4, 0
|
||||
ldrsh r0, [r0, r4]
|
||||
lsls r0, 5
|
||||
ldr r5, _080A32A8
|
||||
adds r0, r5
|
||||
ldr r4, _080A32A0
|
||||
add r4, r9
|
||||
ldr r5, _080A3298
|
||||
add r5, r9
|
||||
mov r1, r8
|
||||
adds r2, r4, 0
|
||||
adds r3, r5, 0
|
||||
bl sub_80A37C4
|
||||
movs r0, 0xA9
|
||||
lsls r0, 3
|
||||
add r0, r9
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xA5
|
||||
lsls r1, 3
|
||||
add r1, r9
|
||||
ldr r7, [sp, 0x14]
|
||||
movs r3, 0x4
|
||||
ldrsh r2, [r7, r3]
|
||||
subs r2, 0x1
|
||||
lsls r2, 5
|
||||
add r2, r8
|
||||
str r5, [sp]
|
||||
adds r3, r4, 0
|
||||
bl _UncompressCell
|
||||
ldr r0, _080A32AC
|
||||
add r0, r9
|
||||
movs r3, 0x89
|
||||
lsls r3, 3
|
||||
add r3, r9
|
||||
adds r1, r6, 0
|
||||
adds r2, r4, 0
|
||||
bl sub_80A3908
|
||||
adds r6, r0, 0
|
||||
movs r0, 0x8D
|
||||
lsls r0, 3
|
||||
add r0, r9
|
||||
str r6, [r0]
|
||||
ldr r0, _080A32B0
|
||||
add r0, r9
|
||||
ldr r2, [r0]
|
||||
cmp r2, 0
|
||||
beq _080A321C
|
||||
movs r1, 0xA8
|
||||
lsls r1, 3
|
||||
add r1, r9
|
||||
ldr r0, _080A32B4
|
||||
add r0, r9
|
||||
movs r4, 0
|
||||
ldrsh r3, [r0, r4]
|
||||
ldr r4, [r1]
|
||||
adds r0, r2, 0
|
||||
adds r1, r6, 0
|
||||
mov r2, r10
|
||||
bl _call_via_r4
|
||||
_080A321C:
|
||||
mov r2, r9
|
||||
movs r4, 0
|
||||
ldr r5, [sp, 0x10]
|
||||
movs r6, 0x2
|
||||
ldrsh r0, [r5, r6]
|
||||
cmp r0, 0
|
||||
beq _080A32E4
|
||||
movs r7, 0
|
||||
ldrsh r1, [r5, r7]
|
||||
lsls r0, r1, 4
|
||||
subs r0, r1
|
||||
lsls r0, 2
|
||||
ldr r5, [sp, 0x18]
|
||||
adds r3, r5, r0
|
||||
lsls r1, 2
|
||||
adds r6, r3, r1
|
||||
ldr r0, _080A32B8
|
||||
add r0, r9
|
||||
str r3, [r0]
|
||||
movs r0, 0x8E
|
||||
lsls r0, 3
|
||||
add r0, r9
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
ldr r0, _080A32BC
|
||||
add r0, r9
|
||||
strb r1, [r0]
|
||||
ldr r7, [sp, 0x10]
|
||||
movs r1, 0
|
||||
ldrsh r0, [r7, r1]
|
||||
cmp r4, r0
|
||||
bge _080A32F8
|
||||
ldr r1, _080A32A4
|
||||
add r1, r9
|
||||
movs r5, 0
|
||||
ldrsh r0, [r1, r5]
|
||||
cmp r4, r0
|
||||
bge _080A32F8
|
||||
movs r5, 0
|
||||
mov r8, r1
|
||||
_080A326C:
|
||||
movs r7, 0x2
|
||||
ldrsh r0, [r3, r7]
|
||||
cmp r0, 0
|
||||
ble _080A32C0
|
||||
str r6, [r2, 0x4]
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r3, r0]
|
||||
lsls r0, r1, 4
|
||||
subs r0, r1
|
||||
lsls r0, 2
|
||||
adds r6, r0
|
||||
b _080A32C2
|
||||
.align 2, 0
|
||||
_080A3284: .4byte 0x00000444
|
||||
_080A3288: .4byte gUnknown_81188F0
|
||||
_080A328C: .4byte gGroundFileArchive
|
||||
_080A3290: .4byte 0x00000434
|
||||
_080A3294: .4byte 0x00000464
|
||||
_080A3298: .4byte 0x00000454
|
||||
_080A329C: .4byte 0x0000045a
|
||||
_080A32A0: .4byte 0x0000052c
|
||||
_080A32A4: .4byte 0x0000052e
|
||||
_080A32A8: .4byte 0x06008000
|
||||
_080A32AC: .4byte 0x0000054c
|
||||
_080A32B0: .4byte 0x00000544
|
||||
_080A32B4: .4byte 0x0000053a
|
||||
_080A32B8: .4byte 0x0000046c
|
||||
_080A32BC: .4byte 0x00000471
|
||||
_080A32C0:
|
||||
str r5, [r2, 0x4]
|
||||
_080A32C2:
|
||||
strh r5, [r2]
|
||||
strh r5, [r2, 0x2]
|
||||
str r5, [r2, 0x8]
|
||||
adds r4, 0x1
|
||||
adds r2, 0x10
|
||||
adds r3, 0x4
|
||||
ldr r1, [sp, 0x10]
|
||||
movs r7, 0
|
||||
ldrsh r0, [r1, r7]
|
||||
cmp r4, r0
|
||||
bge _080A32F8
|
||||
mov r1, r8
|
||||
movs r7, 0
|
||||
ldrsh r0, [r1, r7]
|
||||
cmp r4, r0
|
||||
blt _080A326C
|
||||
b _080A32F8
|
||||
_080A32E4:
|
||||
ldr r0, _080A3384
|
||||
add r0, r9
|
||||
str r4, [r0]
|
||||
movs r0, 0x8E
|
||||
lsls r0, 3
|
||||
add r0, r9
|
||||
strb r4, [r0]
|
||||
ldr r0, _080A3388
|
||||
add r0, r9
|
||||
strb r4, [r0]
|
||||
_080A32F8:
|
||||
cmp r4, 0xD
|
||||
bgt _080A330E
|
||||
movs r0, 0
|
||||
_080A32FE:
|
||||
strh r0, [r2]
|
||||
strh r0, [r2, 0x2]
|
||||
str r0, [r2, 0x8]
|
||||
str r0, [r2, 0x4]
|
||||
adds r4, 0x1
|
||||
adds r2, 0x10
|
||||
cmp r4, 0xD
|
||||
ble _080A32FE
|
||||
_080A330E:
|
||||
movs r0, 0xA6
|
||||
lsls r0, 3
|
||||
add r0, r9
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
ldr r2, [sp, 0x14]
|
||||
movs r3, 0x4
|
||||
ldrsh r1, [r2, r3]
|
||||
adds r0, r1
|
||||
lsls r0, 5
|
||||
ldr r4, _080A338C
|
||||
adds r5, r0, r4
|
||||
movs r7, 0
|
||||
movs r6, 0
|
||||
mov r8, r6
|
||||
movs r4, 0xF8
|
||||
lsls r4, 2
|
||||
add r4, r9
|
||||
ldr r0, [sp, 0x1C]
|
||||
str r0, [sp, 0x28]
|
||||
ldr r3, [sp, 0x20]
|
||||
_080A3338:
|
||||
ldr r0, [r3]
|
||||
cmp r0, 0
|
||||
beq _080A3394
|
||||
ldr r1, _080A3390
|
||||
str r3, [sp, 0x24]
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
str r0, [r4, 0x8]
|
||||
movs r1, 0x1
|
||||
strb r1, [r4]
|
||||
strb r1, [r4, 0x1]
|
||||
ldr r2, [r0, 0x4]
|
||||
str r2, [r4, 0xC]
|
||||
adds r1, r2, 0x4
|
||||
movs r0, 0x2
|
||||
ldrsh r6, [r2, r0]
|
||||
lsls r6, 2
|
||||
adds r0, r1, r6
|
||||
str r1, [r4, 0x14]
|
||||
str r1, [r4, 0x10]
|
||||
str r0, [r4, 0x1C]
|
||||
str r0, [r4, 0x18]
|
||||
mov r1, r8
|
||||
strh r1, [r4, 0x2]
|
||||
ldr r0, [r2, 0x4]
|
||||
strh r0, [r4, 0x4]
|
||||
str r5, [r4, 0x20]
|
||||
ldr r2, [sp, 0x28]
|
||||
movs r6, 0
|
||||
ldrsh r0, [r2, r6]
|
||||
lsls r0, 5
|
||||
str r0, [r4, 0x24]
|
||||
movs r1, 0
|
||||
ldrsh r0, [r2, r1]
|
||||
lsls r0, 5
|
||||
adds r5, r0
|
||||
ldr r3, [sp, 0x24]
|
||||
b _080A33AC
|
||||
.align 2, 0
|
||||
_080A3384: .4byte 0x0000046c
|
||||
_080A3388: .4byte 0x00000471
|
||||
_080A338C: .4byte 0x06008000
|
||||
_080A3390: .4byte gGroundFileArchive
|
||||
_080A3394:
|
||||
strb r0, [r4]
|
||||
strb r0, [r4, 0x1]
|
||||
strh r0, [r4, 0x4]
|
||||
strh r0, [r4, 0x2]
|
||||
str r0, [r4, 0x8]
|
||||
str r0, [r4, 0xC]
|
||||
str r0, [r4, 0x14]
|
||||
str r0, [r4, 0x10]
|
||||
str r0, [r4, 0x1C]
|
||||
str r0, [r4, 0x18]
|
||||
str r0, [r4, 0x20]
|
||||
str r0, [r4, 0x24]
|
||||
_080A33AC:
|
||||
adds r4, 0x28
|
||||
ldr r2, [sp, 0x28]
|
||||
adds r2, 0x2
|
||||
str r2, [sp, 0x28]
|
||||
adds r3, 0x4
|
||||
adds r7, 0x1
|
||||
cmp r7, 0x1
|
||||
ble _080A3338
|
||||
cmp r7, 0x3
|
||||
bgt _080A340E
|
||||
_080A33C0:
|
||||
lsls r0, r7, 2
|
||||
ldr r3, [sp, 0x20]
|
||||
adds r0, r3, r0
|
||||
ldr r0, [r0]
|
||||
adds r4, r7, 0x1
|
||||
cmp r0, 0
|
||||
beq _080A3408
|
||||
ldr r1, _080A3438
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
adds r3, r0, 0
|
||||
ldr r0, [r3, 0x4]
|
||||
adds r1, r0, 0x4
|
||||
movs r6, 0x2
|
||||
ldrsh r0, [r0, r6]
|
||||
lsls r0, 2
|
||||
adds r1, r0
|
||||
lsls r0, r7, 1
|
||||
ldr r7, [sp, 0x1C]
|
||||
adds r0, r7, r0
|
||||
movs r2, 0
|
||||
ldrsh r0, [r0, r2]
|
||||
lsls r0, 4
|
||||
cmp r0, 0
|
||||
ble _080A3402
|
||||
adds r2, r0, 0
|
||||
_080A33F4:
|
||||
ldrh r0, [r1]
|
||||
strh r0, [r5]
|
||||
adds r1, 0x2
|
||||
adds r5, 0x2
|
||||
subs r2, 0x1
|
||||
cmp r2, 0
|
||||
bne _080A33F4
|
||||
_080A3402:
|
||||
adds r0, r3, 0
|
||||
bl CloseFile
|
||||
_080A3408:
|
||||
adds r7, r4, 0
|
||||
cmp r7, 0x3
|
||||
ble _080A33C0
|
||||
_080A340E:
|
||||
mov r0, r9
|
||||
movs r1, 0
|
||||
bl sub_80A3BB0
|
||||
movs r0, 0x91
|
||||
lsls r0, 3
|
||||
add r0, r9
|
||||
bl sub_80A3EB0
|
||||
ldr r1, _080A343C
|
||||
add r1, r9
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
_080A3428:
|
||||
add sp, 0x2C
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A3438: .4byte gGroundFileArchive
|
||||
_080A343C: .4byte 0x0000052a
|
||||
thumb_func_end sub_80A2FBC
|
||||
|
||||
thumb_func_start sub_80A3440
|
||||
sub_80A3440:
|
||||
push {r4-r7,lr}
|
||||
|
|
|
|||
|
|
@ -10,8 +10,7 @@ struct unkStruct_81188F0
|
|||
/* 0x0 */ u8 *text1;
|
||||
/* 0x4 */ u8 *text2;
|
||||
/* 0x8 */ u8 *text3;
|
||||
/* 0xC */ u8 *text4;
|
||||
/* 0x10 */ u32 unk1;
|
||||
/* 0xC */ u8 *text4[2];
|
||||
/* 0x14 */ u32 unk2;
|
||||
/* 0x18 */ u32 unk3;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ typedef struct SubStruct_0
|
|||
{
|
||||
u16 unk0;
|
||||
u16 unk2;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
const void *unk4;
|
||||
const void *unk8;
|
||||
u8 fillC;
|
||||
} SubStruct_0;
|
||||
|
||||
|
|
@ -19,12 +19,12 @@ typedef struct SubStruct_3E0
|
|||
u16 unk2;
|
||||
u16 unk4;
|
||||
OpenedFile *unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
s32 unk12;
|
||||
s32 unk14;
|
||||
s32 unk1C;
|
||||
s32 unk20;
|
||||
const void *unkC;
|
||||
const void *unk10;
|
||||
const void *unk12;
|
||||
const void *unk14;
|
||||
const void *unk1C;
|
||||
void *unk20;
|
||||
s32 unk24;
|
||||
} SubStruct_3E0;
|
||||
|
||||
|
|
@ -40,21 +40,44 @@ typedef struct SubStruct_52C
|
|||
{
|
||||
s16 unk0; // 0x52C
|
||||
s16 unk2; // 0x52E
|
||||
u8 fill4[0x4]; // 0x530
|
||||
s16 unk4; // 0x530
|
||||
s16 unk6; // 0x532
|
||||
s16 unk8; // 0x534
|
||||
s16 unkA; // 0x536
|
||||
s16 unkC; // 0x538
|
||||
s16 unkE; // 0x53A
|
||||
s16 unk10; // 0x53C
|
||||
s16 unk12; // 0x53E
|
||||
void (*unk14)(void *, s32, void *, s32); // TODO: fix void * to proper ptr types 0x540
|
||||
void (*unk14)(void *, const void *, void *, s32); // TODO: fix void * to proper ptr types 0x540
|
||||
} SubStruct_52C;
|
||||
|
||||
typedef struct SubStruct_448
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u16 unk6;
|
||||
u16 unk8;
|
||||
u16 unkA;
|
||||
} SubStruct_448;
|
||||
|
||||
#define UNK_0_ARR_COUNT 14
|
||||
#define UNK_3E0_ARR_COUNT 2
|
||||
|
||||
#define UNK_54C_ARR_COUNT 2
|
||||
|
||||
typedef struct SubStruct_545
|
||||
{
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6[4];
|
||||
s16 unkE;
|
||||
} SubStruct_545;
|
||||
|
||||
// size: 0x55C
|
||||
typedef struct unkStruct_3001B70
|
||||
{
|
||||
|
|
@ -67,16 +90,11 @@ typedef struct unkStruct_3001B70
|
|||
OpenedFile *unk43C;
|
||||
OpenedFile *unk440;
|
||||
s16 unk444;
|
||||
u8 fill446[2];
|
||||
u8 unk448;
|
||||
u8 unk449;
|
||||
u8 unk44A;
|
||||
u8 unk44B;
|
||||
u8 unk44C;
|
||||
u8 unk44D;
|
||||
u8 fill44E[0x468-0x44E];
|
||||
s32 unk468;
|
||||
s32 unk46C;
|
||||
SubStruct_448 unk448;
|
||||
SubStruct_545 unk454;
|
||||
s16 unk464[2];
|
||||
const void *unk468;
|
||||
const void *unk46C;
|
||||
u8 unk470;
|
||||
u8 unk471;
|
||||
u8 fill472[0x488-0x472];
|
||||
|
|
|
|||
|
|
@ -507,12 +507,12 @@ void sub_80A2B40(unkStruct_3001B70 *mapPtr, const SubStruct_52C *a1)
|
|||
mapPtr->unk52A = 0;
|
||||
mapPtr->unk444 = -1;
|
||||
mapPtr->unk468 = 0;
|
||||
mapPtr->unk448 = 0;
|
||||
mapPtr->unk449 = 0;
|
||||
mapPtr->unk44A = 0;
|
||||
mapPtr->unk44B = 0;
|
||||
mapPtr->unk44C = 0;
|
||||
mapPtr->unk44D = 0;
|
||||
mapPtr->unk448.unk0 = 0;
|
||||
mapPtr->unk448.unk1 = 0;
|
||||
mapPtr->unk448.unk2 = 0;
|
||||
mapPtr->unk448.unk3 = 0;
|
||||
mapPtr->unk448.unk4 = 0;
|
||||
mapPtr->unk448.unk5 = 0;
|
||||
unk0Ptr = &mapPtr->unk0[0];
|
||||
mapPtr->unk46C = 0;
|
||||
mapPtr->unk470 = 0;
|
||||
|
|
@ -607,12 +607,12 @@ void sub_80A2E64(unkStruct_3001B70 *mapPtr)
|
|||
sub_80A2DD4(mapPtr);
|
||||
mapPtr->unk444 = -1;
|
||||
mapPtr->unk528 = 0;
|
||||
mapPtr->unk448 = 0;
|
||||
mapPtr->unk449 = 0;
|
||||
mapPtr->unk44A = 0;
|
||||
mapPtr->unk44B = 0;
|
||||
mapPtr->unk44C = 0;
|
||||
mapPtr->unk44D = 0;
|
||||
mapPtr->unk448.unk0 = 0;
|
||||
mapPtr->unk448.unk1 = 0;
|
||||
mapPtr->unk448.unk2 = 0;
|
||||
mapPtr->unk448.unk3 = 0;
|
||||
mapPtr->unk448.unk4 = 0;
|
||||
mapPtr->unk448.unk5 = 0;
|
||||
unk0Ptr = &mapPtr->unk0[0];
|
||||
mapPtr->unk46C = 0;
|
||||
mapPtr->unk470 = 0;
|
||||
|
|
@ -657,13 +657,42 @@ void sub_80A2E64(unkStruct_3001B70 *mapPtr)
|
|||
mapPtr->unk52A = 1;
|
||||
}
|
||||
|
||||
// RGB?
|
||||
u8* sub_80A3908(void * a0, const void * a1, void * a2, SubStruct_448 *);
|
||||
void sub_80A37C4(u16 * a0, const u16 *a1, SubStruct_52C *a2, SubStruct_545 *a3);
|
||||
void _UncompressCell(void * a0, u16 *a1, const void * a2, SubStruct_52C *a3, SubStruct_545 *a4);
|
||||
|
||||
extern const struct unkStruct_81188F0 gUnknown_81188F0[10];
|
||||
extern const FileArchive gGroundFileArchive;
|
||||
|
||||
/*
|
||||
extern void sub_809971C(u16 a0, const void *a1, int a2);
|
||||
|
||||
struct UnkFileStruct
|
||||
{
|
||||
u8 unk0;
|
||||
s16 unk2;
|
||||
void *unk4[0]; // This is most likely wrong, will need to be fixed.
|
||||
};
|
||||
|
||||
void sub_80A2FBC(unkStruct_3001B70 *mapPtr, s32 a1_)
|
||||
{
|
||||
SubStruct_0 *sub0Ptr;
|
||||
u16 r5;
|
||||
s32 i, j, k;
|
||||
const struct unkStruct_81188F0 *dataPtr;
|
||||
s16 *mapPtr_464;
|
||||
SubStruct_545 *mapPtr_454;
|
||||
const u16 *file_434;
|
||||
const void *file_438;
|
||||
const void *file_430;
|
||||
SubStruct_448 *mapPtr_448;
|
||||
struct S str2;
|
||||
struct S str1;
|
||||
const void *r7;
|
||||
s32 unk0Id;
|
||||
s32 id;
|
||||
void *vramPtr;
|
||||
s32 sum;
|
||||
s32 a1 = (s16) a1_;
|
||||
|
||||
if (a1 == -1) {
|
||||
|
|
@ -677,7 +706,158 @@ void sub_80A2FBC(unkStruct_3001B70 *mapPtr, s32 a1_)
|
|||
mapPtr->unk430 = OpenFileAndGetFileDataPtr(dataPtr->text1, &gGroundFileArchive);
|
||||
mapPtr->unk434 = OpenFileAndGetFileDataPtr(dataPtr->text2, &gGroundFileArchive);
|
||||
mapPtr->unk438 = OpenFileAndGetFileDataPtr(dataPtr->text3, &gGroundFileArchive);
|
||||
file_430 = mapPtr->unk430->data;
|
||||
file_434 = mapPtr->unk434->data;
|
||||
file_438 = mapPtr->unk438->data;
|
||||
mapPtr_464 = mapPtr->unk464;
|
||||
mapPtr_454 = &mapPtr->unk454;
|
||||
mapPtr_448 = &mapPtr->unk448;
|
||||
|
||||
mapPtr_464[0] = *(u8 *)(file_430); file_430 += 2;
|
||||
mapPtr_464[1] = *(u8 *)(file_430); file_430 += 2;
|
||||
|
||||
mapPtr_454->unk0 = *file_434++;
|
||||
mapPtr_454->unk2 = *file_434++;
|
||||
mapPtr_454->unk4 = *file_434++;
|
||||
|
||||
sum = mapPtr_454->unk4;
|
||||
for (k = 0; k < 4; k++) {
|
||||
mapPtr_454->unk6[k] = *file_434++;
|
||||
sum += mapPtr_454->unk6[k];
|
||||
}
|
||||
mapPtr_454->unkE = *file_434++;
|
||||
|
||||
mapPtr_448->unk0 = *(u8 *)(file_438); file_438 += 1;
|
||||
mapPtr_448->unk1 = *(u8 *)(file_438); file_438 += 1;
|
||||
mapPtr_448->unk2 = *(u8 *)(file_438); file_438 += 1;
|
||||
mapPtr_448->unk3 = *(u8 *)(file_438); file_438 += 1;
|
||||
mapPtr_448->unk4 = *(u8 *)(file_438); file_438 += 1;
|
||||
mapPtr_448->unk5 = *(u8 *)(file_438); file_438 += 1;
|
||||
mapPtr_448->unk6 = *(u8 *)(file_438); file_438 += 2;
|
||||
mapPtr_448->unk8 = *(u8 *)(file_438); file_438 += 2;
|
||||
mapPtr_448->unkA = *(u8 *)(file_438); file_438 += 2;
|
||||
|
||||
r7 = file_430;
|
||||
r5 = mapPtr->unk52C.unk0 * 16;
|
||||
str2 = (struct S) {0};
|
||||
str1.x0.x0[0] = 0xff;
|
||||
str1.x0.x0[1] = 0xff;
|
||||
str1.x0.x0[2] = 0xff;
|
||||
str1.x0.x0[3] = 0;
|
||||
for (i = 0; i < mapPtr_464[0] && i < mapPtr->unk52C.unk2; i++) {
|
||||
sub_8003810(r5++, str2);
|
||||
sub_809971C(r5, r7, 15);
|
||||
r5 += 15;
|
||||
r7 += 60;
|
||||
}
|
||||
for (; i < mapPtr->unk52C.unk2; i++) {
|
||||
sub_8003810(r5++, str2);
|
||||
for (j = 0; j < 15; j++) {
|
||||
sub_8003810(r5++, str1);
|
||||
}
|
||||
}
|
||||
|
||||
sub_80A37C4((void *)(VRAM + 0x8000 + mapPtr->unk52C.unk4 * 32), file_434, &mapPtr->unk52C, &mapPtr->unk454);
|
||||
_UncompressCell(mapPtr->unk548, &mapPtr->unk528, file_434 + ((mapPtr_454->unk4 - 1) * 16), &mapPtr->unk52C, &mapPtr->unk454);
|
||||
file_438 = sub_80A3908(&mapPtr->unk54C, file_438, &mapPtr->unk52C, &mapPtr->unk448);
|
||||
mapPtr->unk468 = file_438;
|
||||
if (mapPtr->unk544 != NULL) {
|
||||
mapPtr->unk52C.unk14(mapPtr->unk544, file_438, mapPtr_448, mapPtr->unk52C.unkE);
|
||||
}
|
||||
|
||||
sub0Ptr = mapPtr->unk0;
|
||||
unk0Id = 0;
|
||||
if (mapPtr_464[1] != 0) {
|
||||
const s16 *r3 = file_430 + (mapPtr_464[0] * 60);
|
||||
const void *r6 = &r3[mapPtr_464[0] * 2];
|
||||
|
||||
mapPtr->unk46C = r3;
|
||||
mapPtr->unk470 = 1;
|
||||
mapPtr->unk471 = 1;
|
||||
for (; unk0Id < mapPtr_464[0] && unk0Id < mapPtr->unk52C.unk2; unk0Id++, sub0Ptr++, r3 += 2) {
|
||||
if (r3[1] > 0) {
|
||||
sub0Ptr->unk4 = r6;
|
||||
r6 += r3[1] * 60;
|
||||
}
|
||||
else {
|
||||
sub0Ptr->unk4 = NULL;
|
||||
}
|
||||
sub0Ptr->unk0 = 0;
|
||||
sub0Ptr->unk2 = 0;
|
||||
sub0Ptr->unk8 = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
mapPtr->unk46C = NULL;
|
||||
mapPtr->unk470 = 0;
|
||||
mapPtr->unk471 = 0;
|
||||
}
|
||||
|
||||
for (; unk0Id < UNK_0_ARR_COUNT; unk0Id++, sub0Ptr++) {
|
||||
sub0Ptr->unk0 = 0;
|
||||
sub0Ptr->unk2 = 0;
|
||||
sub0Ptr->unk4 = sub0Ptr->unk8 = 0;
|
||||
}
|
||||
|
||||
vramPtr = (void *)(VRAM + 0x8000 + (mapPtr->unk52C.unk4 + mapPtr_454->unk4) * 32);
|
||||
for (id = 0; id < 2; id++) {
|
||||
SubStruct_3E0 *sub3E0 = &mapPtr->unk3E0[id];
|
||||
if (dataPtr->text4[id] != NULL) {
|
||||
const struct UnkFileStruct *fileStr;
|
||||
const void *r1, *r0;
|
||||
|
||||
sub3E0->unk8 = OpenFileAndGetFileDataPtr(dataPtr->text4[id], &gGroundFileArchive);
|
||||
sub3E0->unk0 = 1;
|
||||
sub3E0->unk1 = 1;
|
||||
fileStr = sub3E0->unk8->data;
|
||||
sub3E0->unkC = fileStr;
|
||||
r1 = &fileStr->unk4;
|
||||
r0 = r1 + fileStr->unk2 * 4;
|
||||
sub3E0->unk10 = sub3E0->unk12 = r1;
|
||||
sub3E0->unk14 = sub3E0->unk1C = r0;
|
||||
sub3E0->unk2 = 0;
|
||||
sub3E0->unk4 = (u32) fileStr->unk4[0]; // ?
|
||||
sub3E0->unk20 = vramPtr;
|
||||
sub3E0->unk24 = mapPtr_454->unk6[id] * 32;
|
||||
|
||||
vramPtr += mapPtr_454->unk6[id] * 32;
|
||||
}
|
||||
else {
|
||||
sub3E0->unk0 = 0;
|
||||
sub3E0->unk1 = 0;
|
||||
sub3E0->unk4 = 0;
|
||||
sub3E0->unk2 = 0;
|
||||
sub3E0->unk8 = NULL;
|
||||
sub3E0->unkC = 0;
|
||||
sub3E0->unk12 = 0;
|
||||
sub3E0->unk10 = 0;
|
||||
sub3E0->unk1C = 0;
|
||||
sub3E0->unk14 = 0;
|
||||
sub3E0->unk20 = 0;
|
||||
sub3E0->unk24 = 0;
|
||||
}
|
||||
}
|
||||
for (; id < 4; id++) {
|
||||
if (dataPtr->text4[id] != NULL) {
|
||||
s32 n;
|
||||
OpenedFile *file = OpenFileAndGetFileDataPtr(dataPtr->text4[id], &gGroundFileArchive);
|
||||
const struct UnkFileStruct *fileStr = file->data;
|
||||
u16 *r1 = (void *) fileStr->unk4;
|
||||
r1 += fileStr->unk2 * 2;
|
||||
|
||||
n = mapPtr_454->unk6[id] * 16;
|
||||
for (k = 0; k < n; k++) {
|
||||
*(u16 *)(vramPtr) = *r1;
|
||||
r1++;
|
||||
vramPtr += 2;
|
||||
}
|
||||
CloseFile(file);
|
||||
}
|
||||
}
|
||||
|
||||
sub_80A3BB0(mapPtr, 0);
|
||||
sub_80A3EB0(&mapPtr->unk488);
|
||||
mapPtr->unk52A = 1;
|
||||
}
|
||||
*/
|
||||
|
||||
//
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user