Match sub_80A2FBC

This commit is contained in:
DizzyEggg 2025-06-04 16:16:19 +02:00
parent 9ed5403720
commit ba550a1b9d
4 changed files with 233 additions and 606 deletions

View File

@ -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}

View File

@ -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;
};

View File

@ -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];

View File

@ -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;
}
*/
//