sub_810C808
This commit is contained in:
-116
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user