sub_810C808

This commit is contained in:
PikalaxALT
2018-10-06 17:23:14 -04:00
parent 43a0915d90
commit 53b701c9ef
4 changed files with 51 additions and 119 deletions
-116
View File
@@ -5,122 +5,6 @@
.text
thumb_func_start sub_810C808
sub_810C808: @ 810C808
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
ldr r0, _0810C8DC @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0x8E
lsls r1, 4
adds r2, r0, r1
movs r1, 0
mov r0, sp
strb r1, [r0]
mov r8, r1
mov r9, r1
ldr r0, _0810C8E0 @ =gMapHeader
ldr r0, [r0, 0x4]
ldrb r0, [r0]
cmp r8, r0
bge _0810C8BC
ldr r7, _0810C8E4 @ =gUnknown_203ADB8
mov r6, sp
ldr r0, _0810C8E8 @ =gUnknown_2036E38
mov r10, r0
adds r5, r2, 0
_0810C83C:
ldrh r0, [r5, 0xC]
cmp r0, 0x1
beq _0810C846
cmp r0, 0x3
bne _0810C8AC
_0810C846:
ldr r1, [r7]
mov r2, r8
lsls r4, r2, 4
adds r1, r4
ldr r0, [r5, 0x10]
str r0, [r1]
ldr r0, [r5, 0x10]
bl sub_810D074
ldr r1, [r7]
adds r1, r4
strh r0, [r1, 0x4]
ldrb r0, [r5]
strb r0, [r1, 0x6]
ldrb r0, [r5]
ldr r1, _0810C8DC @ =gSaveBlock1Ptr
ldr r2, [r1]
ldrb r1, [r2, 0x5]
ldrb r2, [r2, 0x4]
mov r3, sp
bl TryGetFieldObjectIdByLocalIdAndMap
ldr r0, [r7]
adds r0, r4
ldrb r1, [r6]
strb r1, [r0, 0x7]
ldr r2, [r7]
adds r2, r4
ldrb r1, [r6]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
add r0, r10
ldrh r0, [r0, 0x10]
subs r0, 0x7
strh r0, [r2, 0x8]
ldrb r1, [r6]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
add r0, r10
ldrh r0, [r0, 0x12]
subs r0, 0x7
strh r0, [r2, 0xA]
ldrb r0, [r5, 0x1]
strb r0, [r2, 0xC]
mov r0, r8
adds r0, 0x1
lsls r0, 24
lsrs r0, 24
mov r8, r0
_0810C8AC:
adds r5, 0x18
movs r0, 0x1
add r9, r0
ldr r0, _0810C8E0 @ =gMapHeader
ldr r0, [r0, 0x4]
ldrb r0, [r0]
cmp r9, r0
blt _0810C83C
_0810C8BC:
ldr r0, _0810C8E4 @ =gUnknown_203ADB8
ldr r0, [r0]
mov r2, r8
lsls r1, r2, 4
adds r0, r1
movs r1, 0xFF
strb r1, [r0, 0x6]
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0810C8DC: .4byte gSaveBlock1Ptr
_0810C8E0: .4byte gMapHeader
_0810C8E4: .4byte gUnknown_203ADB8
_0810C8E8: .4byte gUnknown_2036E38
thumb_func_end sub_810C808
thumb_func_start sub_810C8EC
sub_810C8EC: @ 810C8EC
push {r4,r5,lr}
+8 -1
View File
@@ -476,7 +476,14 @@ struct SaveBlock1
{
/*0x0000*/ u8 filler[0x4];
/*0x0004*/ struct WarpData location;
/*0x000C*/ u8 fillerC[0x3610];
/*0x0C*/ struct WarpData warp1;
/*0x14*/ struct WarpData warp2;
/*0x1C*/ struct WarpData lastHealLocation;
/*0x24*/ struct WarpData warp4;
/*0x002C*/ u8 filler2C[0x674];
/*0x06A0*/ struct MapObject mapObjects[MAP_OBJECTS_COUNT];
/*0x08E0*/ struct MapObjectTemplate mapObjectTemplates[64];
/*0x0EE0*/ u8 fillerEE0[0x273C];
/*0x361C*/ struct RamScript ramScript;
/*0x3A08*/ u8 filler3A08[0x44];
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
+13 -1
View File
@@ -3,9 +3,21 @@
#include "global.h"
struct VsSeekerSubstruct
{
const u8 *unk_0;
u16 unk_4;
u8 unk_6;
u8 unk_7;
u16 unk_8;
u16 unk_a;
u8 unk_c;
};
struct VsSeekerStruct
{
/*0x000*/ u8 filler_00[0x431];
/*0x000*/ struct VsSeekerSubstruct unk_000[MAP_OBJECTS_COUNT];
/*0x100*/ u8 filler_100[0x331];
/*0x431*/ u8 unk_431_0:3;
u8 unk_431_3:5;
};
+30 -1
View File
@@ -3,6 +3,7 @@
#include "sound.h"
#include "task.h"
#include "malloc.h"
#include "field_map_obj.h"
#include "new_menu_helpers.h"
#include "item_use.h"
#include "event_scripts.h"
@@ -17,15 +18,18 @@ struct UnkStruct_845318C
// TODO: populate
};
extern struct MapObject gUnknown_2036E38[MAP_OBJECTS_COUNT];
// static declarations
EWRAM_DATA struct VsSeekerStruct *gUnknown_203ADB8;
void sub_810C730(u8 taskId);
void sub_810C760(u8 taskId);
void sub_810C8EC(u8 taskId);
void sub_810C808(void);
void sub_810C8EC(u8 taskId);
bool8 sub_810C96C(void);
void sub_810C604(void);
u8 sub_810C9A8(const void *);
u16 sub_810D074(const u8 *);
// rodata
extern const struct UnkStruct_845318C gUnknown_845318C[];
@@ -92,3 +96,28 @@ void sub_810C760(u8 taskId)
gTasks[taskId].func = sub_810C8EC;
}
}
void sub_810C808(void)
{
struct MapObjectTemplate *templates = gSaveBlock1Ptr->mapObjectTemplates;
u8 fieldObjectId = 0;
u8 vsSeekerObjectIdx = 0;
s32 mapObjectIdx;
for (mapObjectIdx = 0; mapObjectIdx < gMapHeader.events->mapObjectCount; mapObjectIdx++)
{
if (templates[mapObjectIdx].unkC == 1 || templates[mapObjectIdx].unkC == 3)
{
gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_0 = templates[mapObjectIdx].script;
gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_4 = sub_810D074(templates[mapObjectIdx].script);
gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_6 = templates[mapObjectIdx].localId;
TryGetFieldObjectIdByLocalIdAndMap(templates[mapObjectIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &fieldObjectId);
gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_7 = fieldObjectId;
gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_8 = gUnknown_2036E38[fieldObjectId].coords2.x - 7;
gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_a = gUnknown_2036E38[fieldObjectId].coords2.y - 7;
gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_c = templates[mapObjectIdx].graphicsId;
vsSeekerObjectIdx++;
}
}
gUnknown_203ADB8->unk_000[vsSeekerObjectIdx].unk_6 = 0xFF;
}