sub_80A2FBC will be a nightmare to match

This commit is contained in:
DizzyEggg
2025-06-04 09:09:16 +02:00
parent e859c2a065
commit 9ed5403720
3 changed files with 106 additions and 172 deletions

View File

@@ -8,176 +8,6 @@
thumb_func_start sub_80A2E64
sub_80A2E64:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
adds r7, r0, 0
bl sub_80A2DD4
ldr r0, _080A2FA4
adds r1, r7, r0
ldr r0, _080A2FA8
strh r0, [r1]
movs r1, 0xA5
lsls r1, 3
adds r0, r7, r1
movs r1, 0
movs r2, 0
strh r2, [r0]
movs r3, 0x89
lsls r3, 3
adds r0, r7, r3
strb r1, [r0]
ldr r4, _080A2FAC
adds r0, r7, r4
strb r1, [r0]
adds r3, 0x2
adds r0, r7, r3
strb r1, [r0]
adds r4, 0x2
adds r0, r7, r4
strb r1, [r0]
adds r3, 0x2
adds r0, r7, r3
strb r1, [r0]
adds r4, 0x2
adds r0, r7, r4
strb r1, [r0]
adds r3, r7, 0
adds r4, 0x1F
adds r0, r7, r4
str r2, [r0]
movs r2, 0x8E
lsls r2, 3
adds r0, r7, r2
strb r1, [r0]
adds r4, 0x5
adds r0, r7, r4
strb r1, [r0]
movs r0, 0
movs r1, 0xD
_080A2ECA:
strh r0, [r3]
strh r0, [r3, 0x2]
str r0, [r3, 0x8]
str r0, [r3, 0x4]
subs r1, 0x1
adds r3, 0x10
cmp r1, 0
bge _080A2ECA
movs r1, 0
movs r2, 0xF8
lsls r2, 2
adds r0, r7, r2
movs r2, 0x1
_080A2EE4:
strb r1, [r0]
strb r1, [r0, 0x1]
strh r1, [r0, 0x2]
strh r1, [r0, 0x4]
str r1, [r0, 0x8]
str r1, [r0, 0xC]
str r1, [r0, 0x14]
str r1, [r0, 0x10]
str r1, [r0, 0x1C]
str r1, [r0, 0x18]
str r1, [r0, 0x20]
str r1, [r0, 0x24]
adds r0, 0x28
subs r2, 0x1
cmp r2, 0
bge _080A2EE4
ldr r3, _080A2FB0
adds r0, r7, r3
movs r4, 0
ldrsh r0, [r0, r4]
lsls r0, 20
lsrs r6, r0, 16
movs r5, 0
ldr r1, _080A2FB4
adds r0, r7, r1
movs r2, 0
ldrsh r0, [r0, r2]
cmp r5, r0
bge _080A2F78
mov r10, r5
add r4, sp, 0x4
movs r3, 0xFF
mov r9, r3
_080A2F26:
mov r0, r10
str r0, [sp]
ldrb r0, [r4]
mov r1, r9
orrs r0, r1
strb r0, [r4]
ldrb r0, [r4, 0x1]
orrs r0, r1
strb r0, [r4, 0x1]
ldrb r0, [r4, 0x2]
orrs r0, r1
strb r0, [r4, 0x2]
mov r2, r10
strb r2, [r4, 0x3]
adds r0, r6, 0
adds r1, r0, 0x1
lsls r1, 16
lsrs r6, r1, 16
ldr r1, [sp]
bl sub_8003810
adds r5, 0x1
mov r8, r5
movs r5, 0xE
_080A2F56:
adds r0, r6, 0
adds r1, r0, 0x1
lsls r1, 16
lsrs r6, r1, 16
ldr r1, [sp, 0x4]
bl sub_8003810
subs r5, 0x1
cmp r5, 0
bge _080A2F56
mov r5, r8
ldr r3, _080A2FB4
adds r0, r7, r3
movs r1, 0
ldrsh r0, [r0, r1]
cmp r5, r0
blt _080A2F26
_080A2F78:
adds r0, r7, 0
movs r1, 0
bl sub_80A3BB0
movs r2, 0x91
lsls r2, 3
adds r0, r7, r2
bl sub_80A3EB0
ldr r3, _080A2FB8
adds r1, r7, r3
movs r0, 0x1
strb r0, [r1]
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080A2FA4: .4byte 0x00000444
_080A2FA8: .4byte 0x0000ffff
_080A2FAC: .4byte 0x00000449
_080A2FB0: .4byte 0x0000052c
_080A2FB4: .4byte 0x0000052e
_080A2FB8: .4byte 0x0000052a
thumb_func_end sub_80A2E64
thumb_func_start sub_80A2FBC
sub_80A2FBC:
push {r4-r7,lr}

View File

@@ -28,10 +28,19 @@ typedef struct SubStruct_3E0
s32 unk24;
} SubStruct_3E0;
typedef struct SubStruct_488
{
u8 fill0[0x18];
void (*unk18)(struct SubStruct_488 *);
u8 fill1C[0x84];
} SubStruct_488;
// size: 0x18?
typedef struct SubStruct_52C
{
u8 fill0[8]; // 0x52C
s16 unk0; // 0x52C
s16 unk2; // 0x52E
u8 fill4[0x4]; // 0x530
s16 unk8; // 0x534
s16 unkA; // 0x536
s16 unkC; // 0x538
@@ -70,7 +79,9 @@ typedef struct unkStruct_3001B70
s32 unk46C;
u8 unk470;
u8 unk471;
u8 fill472[0x52A-0x472];
u8 fill472[0x488-0x472];
struct SubStruct_488 unk488;
u16 unk528;
u8 unk52A;
SubStruct_52C unk52C;
void *unk544;

View File

@@ -463,10 +463,14 @@ UNUSED static const u8 *sub_80A2B28(u16 r0)
return sub_80A2B18(GetScriptVarValue(NULL, GROUND_PLACE));
}
// TODO: Figure out if a new file starts here
#include "ground_map.h"
#include "text_1.h"
#include "memory.h"
#include "file_system.h"
#include "code_8002774.h"
#include "code_801D9E4.h"
extern void sub_80A456C(unkStruct_3001B70 *, u32, const PixelPos *);
extern const PixelPos gUnknown_81172B8;
@@ -543,6 +547,8 @@ void sub_80A2B40(unkStruct_3001B70 *mapPtr, const SubStruct_52C *a1)
}
void sub_80A2DD4(unkStruct_3001B70 *mapPtr);
void sub_80A3BB0(unkStruct_3001B70 *mapPtr, s32 a0);
void sub_80A3EB0(SubStruct_488 *mapSubstructPtr);
void sub_80A2D00(unkStruct_3001B70 *mapPtr)
{
@@ -588,3 +594,90 @@ void sub_80A2DD4(unkStruct_3001B70 *mapPtr)
TRY_CLOSE_FILE_AND_SET_NULL(mapPtr->unk434);
TRY_CLOSE_FILE_AND_SET_NULL(mapPtr->unk438);
}
extern void sub_8003810(u32 param_1, struct S param_2);
void sub_80A2E64(unkStruct_3001B70 *mapPtr)
{
u16 r6;
s32 i, j;
SubStruct_0 *unk0Ptr;
s32 unk0Id, unk3E0Id;
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;
unk0Ptr = &mapPtr->unk0[0];
mapPtr->unk46C = 0;
mapPtr->unk470 = 0;
mapPtr->unk471 = 0;
for (unk0Id = 0; unk0Id < UNK_0_ARR_COUNT; unk0Id++, unk0Ptr++) {
unk0Ptr->unk0 = 0;
unk0Ptr->unk2 = 0;
unk0Ptr->unk8 = 0;
unk0Ptr->unk4 = 0;
}
for (unk3E0Id = 0; unk3E0Id < UNK_3E0_ARR_COUNT; unk3E0Id++) {
SubStruct_3E0 *unkPtr = &mapPtr->unk3E0[unk3E0Id];
unkPtr->unk0 = 0;
unkPtr->unk1 = 0;
unkPtr->unk2 = 0;
unkPtr->unk4 = 0;
unkPtr->unk8 = NULL;
unkPtr->unkC = 0;
unkPtr->unk12 = 0;
unkPtr->unk10 = 0;
unkPtr->unk1C = 0;
unkPtr->unk14 = 0;
unkPtr->unk20 = 0;
unkPtr->unk24 = 0;
}
r6 = mapPtr->unk52C.unk0 * 16;
for (i = 0; i < mapPtr->unk52C.unk2; i++) {
struct S str1 = {0};
struct S str2 = {0xFF, 0xFF, 0xFF, 0};
sub_8003810(r6++, str1);
for (j = 0; j < 15; j++) {
sub_8003810(r6++, str2);
}
}
sub_80A3BB0(mapPtr, 0);
sub_80A3EB0(&mapPtr->unk488);
mapPtr->unk52A = 1;
}
extern const struct unkStruct_81188F0 gUnknown_81188F0[10];
extern const FileArchive gGroundFileArchive;
/*
void sub_80A2FBC(unkStruct_3001B70 *mapPtr, s32 a1_)
{
const struct unkStruct_81188F0 *dataPtr;
s32 a1 = (s16) a1_;
if (a1 == -1) {
sub_80A2E64(mapPtr);
return;
}
sub_80A2DD4(mapPtr);
mapPtr->unk444 = a1;
dataPtr = &gUnknown_81188F0[a1];
mapPtr->unk430 = OpenFileAndGetFileDataPtr(dataPtr->text1, &gGroundFileArchive);
mapPtr->unk434 = OpenFileAndGetFileDataPtr(dataPtr->text2, &gGroundFileArchive);
mapPtr->unk438 = OpenFileAndGetFileDataPtr(dataPtr->text3, &gGroundFileArchive);
}
*/
//