mirror of
https://github.com/pret/pmd-red.git
synced 2026-10-01 05:18:28 -05:00
sub_80A2FBC will be a nightmare to match
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
*/
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user