sub_810C808
This commit is contained in:
-116
@@ -5,122 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.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
|
thumb_func_start sub_810C8EC
|
||||||
sub_810C8EC: @ 810C8EC
|
sub_810C8EC: @ 810C8EC
|
||||||
push {r4,r5,lr}
|
push {r4,r5,lr}
|
||||||
|
|||||||
+8
-1
@@ -476,7 +476,14 @@ struct SaveBlock1
|
|||||||
{
|
{
|
||||||
/*0x0000*/ u8 filler[0x4];
|
/*0x0000*/ u8 filler[0x4];
|
||||||
/*0x0004*/ struct WarpData location;
|
/*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;
|
/*0x361C*/ struct RamScript ramScript;
|
||||||
/*0x3A08*/ u8 filler3A08[0x44];
|
/*0x3A08*/ u8 filler3A08[0x44];
|
||||||
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
|
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
|
||||||
|
|||||||
+13
-1
@@ -3,9 +3,21 @@
|
|||||||
|
|
||||||
#include "global.h"
|
#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
|
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;
|
/*0x431*/ u8 unk_431_0:3;
|
||||||
u8 unk_431_3:5;
|
u8 unk_431_3:5;
|
||||||
};
|
};
|
||||||
|
|||||||
+30
-1
@@ -3,6 +3,7 @@
|
|||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "malloc.h"
|
#include "malloc.h"
|
||||||
|
#include "field_map_obj.h"
|
||||||
#include "new_menu_helpers.h"
|
#include "new_menu_helpers.h"
|
||||||
#include "item_use.h"
|
#include "item_use.h"
|
||||||
#include "event_scripts.h"
|
#include "event_scripts.h"
|
||||||
@@ -17,15 +18,18 @@ struct UnkStruct_845318C
|
|||||||
// TODO: populate
|
// TODO: populate
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern struct MapObject gUnknown_2036E38[MAP_OBJECTS_COUNT];
|
||||||
|
|
||||||
// static declarations
|
// static declarations
|
||||||
EWRAM_DATA struct VsSeekerStruct *gUnknown_203ADB8;
|
EWRAM_DATA struct VsSeekerStruct *gUnknown_203ADB8;
|
||||||
void sub_810C730(u8 taskId);
|
void sub_810C730(u8 taskId);
|
||||||
void sub_810C760(u8 taskId);
|
void sub_810C760(u8 taskId);
|
||||||
void sub_810C8EC(u8 taskId);
|
|
||||||
void sub_810C808(void);
|
void sub_810C808(void);
|
||||||
|
void sub_810C8EC(u8 taskId);
|
||||||
bool8 sub_810C96C(void);
|
bool8 sub_810C96C(void);
|
||||||
void sub_810C604(void);
|
void sub_810C604(void);
|
||||||
u8 sub_810C9A8(const void *);
|
u8 sub_810C9A8(const void *);
|
||||||
|
u16 sub_810D074(const u8 *);
|
||||||
|
|
||||||
// rodata
|
// rodata
|
||||||
extern const struct UnkStruct_845318C gUnknown_845318C[];
|
extern const struct UnkStruct_845318C gUnknown_845318C[];
|
||||||
@@ -92,3 +96,28 @@ void sub_810C760(u8 taskId)
|
|||||||
gTasks[taskId].func = sub_810C8EC;
|
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