sub_810CB90
This commit is contained in:
-131
@@ -5,137 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_810CB90
|
||||
sub_810CB90: @ 810CB90
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x4
|
||||
movs r1, 0
|
||||
mov r0, sp
|
||||
strb r1, [r0]
|
||||
ldr r5, _0810CC54 @ =gSaveBlock1Ptr
|
||||
ldr r0, [r5]
|
||||
movs r1, 0x8E
|
||||
lsls r1, 4
|
||||
adds r4, r0, r1
|
||||
ldr r0, _0810CC58 @ =gUnknown_845318C
|
||||
ldr r1, _0810CC5C @ =gTrainerBattleOpponent_A
|
||||
ldrh r1, [r1]
|
||||
bl sub_810CE10
|
||||
mov r9, r0
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r9, r0
|
||||
beq _0810CC8A
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
ldr r0, _0810CC60 @ =gMapHeader
|
||||
ldr r0, [r0, 0x4]
|
||||
ldrb r0, [r0]
|
||||
cmp r8, r0
|
||||
bge _0810CC8A
|
||||
mov r10, r5
|
||||
adds r6, r4, 0
|
||||
adds r5, r6, 0
|
||||
_0810CBD4:
|
||||
ldrh r0, [r5, 0xC]
|
||||
cmp r0, 0x1
|
||||
beq _0810CBDE
|
||||
cmp r0, 0x3
|
||||
bne _0810CC78
|
||||
_0810CBDE:
|
||||
ldr r0, [r5, 0x10]
|
||||
bl sub_810D074
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
ldr r0, _0810CC58 @ =gUnknown_845318C
|
||||
bl sub_810CE10
|
||||
cmp r9, r0
|
||||
bne _0810CC78
|
||||
ldrb r0, [r5]
|
||||
mov r1, r10
|
||||
ldr r2, [r1]
|
||||
ldrb r1, [r2, 0x5]
|
||||
ldrb r2, [r2, 0x4]
|
||||
mov r3, sp
|
||||
bl TryGetFieldObjectIdByLocalIdAndMap
|
||||
mov r0, sp
|
||||
ldrb r1, [r0]
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r1, _0810CC64 @ =gUnknown_2036E38
|
||||
adds r4, r0, r1
|
||||
adds r0, r6, 0
|
||||
bl sub_810CF54
|
||||
ldr r7, _0810CC68 @ =gUnknown_8453F67
|
||||
ldrb r0, [r4, 0x18]
|
||||
lsls r0, 28
|
||||
lsrs r0, 28
|
||||
adds r0, r7
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
bl sub_805FE7C
|
||||
mov r1, r10
|
||||
ldr r0, [r1]
|
||||
ldr r1, _0810CC6C @ =0x0000063a
|
||||
adds r0, r1
|
||||
ldrb r1, [r5]
|
||||
adds r0, r1
|
||||
movs r1, 0
|
||||
strb r1, [r0]
|
||||
ldr r0, _0810CC70 @ =gUnknown_3005074
|
||||
mov r1, sp
|
||||
ldrb r0, [r0]
|
||||
ldrb r1, [r1]
|
||||
cmp r0, r1
|
||||
bne _0810CC74
|
||||
ldrb r0, [r4, 0x18]
|
||||
lsls r0, 28
|
||||
lsrs r0, 28
|
||||
adds r0, r7
|
||||
ldrb r0, [r0]
|
||||
b _0810CC76
|
||||
.align 2, 0
|
||||
_0810CC54: .4byte gSaveBlock1Ptr
|
||||
_0810CC58: .4byte gUnknown_845318C
|
||||
_0810CC5C: .4byte gTrainerBattleOpponent_A
|
||||
_0810CC60: .4byte gMapHeader
|
||||
_0810CC64: .4byte gUnknown_2036E38
|
||||
_0810CC68: .4byte gUnknown_8453F67
|
||||
_0810CC6C: .4byte 0x0000063a
|
||||
_0810CC70: .4byte gUnknown_3005074
|
||||
_0810CC74:
|
||||
movs r0, 0x8
|
||||
_0810CC76:
|
||||
strb r0, [r4, 0x6]
|
||||
_0810CC78:
|
||||
adds r5, 0x18
|
||||
adds r6, 0x18
|
||||
movs r0, 0x1
|
||||
add r8, r0
|
||||
ldr r0, _0810CC9C @ =gMapHeader
|
||||
ldr r0, [r0, 0x4]
|
||||
ldrb r0, [r0]
|
||||
cmp r8, r0
|
||||
blt _0810CBD4
|
||||
_0810CC8A:
|
||||
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
|
||||
_0810CC9C: .4byte gMapHeader
|
||||
thumb_func_end sub_810CB90
|
||||
|
||||
thumb_func_start sub_810CCA0
|
||||
sub_810CCA0: @ 810CCA0
|
||||
push {r4,r5,lr}
|
||||
|
||||
+39
-3
@@ -14,6 +14,7 @@
|
||||
#include "item_menu.h"
|
||||
#include "field_effect.h"
|
||||
#include "script_movement.h"
|
||||
#include "battle.h"
|
||||
#include "battle_setup.h"
|
||||
#include "random.h"
|
||||
#include "field_map_obj.h"
|
||||
@@ -26,6 +27,7 @@ struct UnkStruct_845318C
|
||||
};
|
||||
|
||||
extern struct MapObject gUnknown_2036E38[MAP_OBJECTS_COUNT];
|
||||
extern u8 gUnknown_3005074;
|
||||
|
||||
// static declarations
|
||||
EWRAM_DATA struct VsSeekerStruct *gUnknown_203ADB8;
|
||||
@@ -36,15 +38,18 @@ void sub_810C8EC(u8 taskId);
|
||||
void sub_810D304(void);
|
||||
bool8 sub_810C96C(void);
|
||||
void sub_810C604(void);
|
||||
u8 sub_810C9A8(const void *);
|
||||
u8 sub_810C9A8(const struct UnkStruct_845318C *);
|
||||
bool8 sub_810D0FC(struct VsSeekerSubstruct *);
|
||||
u16 sub_810D074(const u8 *);
|
||||
u8 sub_810D1CC(void);
|
||||
void sub_810D24C(struct VsSeekerSubstruct *, const u8 *);
|
||||
int sub_810CE10(const struct UnkStruct_845318C *, u16);
|
||||
bool8 sub_810D164(const void *, u16, u8 *);
|
||||
u8 sub_810D280(int, u16);
|
||||
u8 sub_810CF90(u8);
|
||||
void sub_810C640(void);
|
||||
void sub_810CF54(struct MapObjectTemplate *);
|
||||
void sub_805FE7C(struct MapObject *, u8);
|
||||
|
||||
// rodata
|
||||
extern const struct UnkStruct_845318C gUnknown_845318C[];
|
||||
@@ -52,6 +57,7 @@ extern const u8 gUnknown_8453F5C[];
|
||||
extern const u8 gUnknown_8453F60[];
|
||||
extern const u8 gUnknown_8453F62[];
|
||||
extern const u8 gUnknown_8453F64[];
|
||||
extern const u8 gUnknown_8453F67[];
|
||||
|
||||
// text
|
||||
void sub_810C670(u8 taskId)
|
||||
@@ -180,7 +186,7 @@ u8 sub_810C96C(void)
|
||||
|
||||
// Nonmatching due to register roulette
|
||||
#ifdef NONMATCHING
|
||||
u8 sub_810C9A8(const void * a0)
|
||||
u8 sub_810C9A8(const struct UnkStruct_845318C * a0)
|
||||
{
|
||||
u16 r8 = 0;
|
||||
u8 sp0 = 0;
|
||||
@@ -245,7 +251,7 @@ u8 sub_810C9A8(const void * a0)
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
u8 sub_810C9A8(const void * a0)
|
||||
u8 sub_810C9A8(const struct UnkStruct_845318C * a0)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r10\n"
|
||||
@@ -479,3 +485,33 @@ u8 sub_810C9A8(const void * a0)
|
||||
"\tbx r1");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_810CB90(void)
|
||||
{
|
||||
u8 sp0 = 0;
|
||||
struct MapObjectTemplate *r4 = gSaveBlock1Ptr->mapObjectTemplates;
|
||||
int r9 = sub_810CE10(gUnknown_845318C, gTrainerBattleOpponent_A);
|
||||
|
||||
if (r9 != -1)
|
||||
{
|
||||
int r8;
|
||||
|
||||
for (r8 = 0; r8 < gMapHeader.events->mapObjectCount; r8++)
|
||||
{
|
||||
if ((r4[r8].unkC == 1 || r4[r8].unkC == 3) && r9 == sub_810CE10(gUnknown_845318C, sub_810D074(r4[r8].script)))
|
||||
{
|
||||
struct MapObject *r4_2;
|
||||
|
||||
TryGetFieldObjectIdByLocalIdAndMap(r4[r8].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &sp0);
|
||||
r4_2 = &gUnknown_2036E38[sp0];
|
||||
sub_810CF54(&r4[r8]);
|
||||
sub_805FE7C(r4_2, gUnknown_8453F67[r4_2->mapobj_unk_18]);
|
||||
gSaveBlock1Ptr->trainerRematches[r4[r8].localId] = 0;
|
||||
if (gUnknown_3005074 == sp0)
|
||||
r4_2->animPattern = gUnknown_8453F67[r4_2->mapobj_unk_18];
|
||||
else
|
||||
r4_2->animPattern = 0x08;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user