through sub_810CF54
This commit is contained in:
-170
@@ -5,176 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_810CE64
|
|
||||||
sub_810CE64: @ 810CE64
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
ldr r5, _0810CEA4 @ =gUnknown_845318C
|
|
||||||
adds r0, r5, 0
|
|
||||||
mov r2, sp
|
|
||||||
bl sub_810D164
|
|
||||||
mov r4, sp
|
|
||||||
adds r4, 0x1
|
|
||||||
strb r0, [r4]
|
|
||||||
ldrb r0, [r4]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0810CEA8
|
|
||||||
mov r0, sp
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsls r0, 4
|
|
||||||
adds r0, r5
|
|
||||||
adds r1, r4, 0
|
|
||||||
bl sub_810CCA0
|
|
||||||
ldrb r1, [r4]
|
|
||||||
lsls r1, 1
|
|
||||||
mov r0, sp
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsls r0, 4
|
|
||||||
adds r1, r0
|
|
||||||
adds r1, r5
|
|
||||||
ldrh r0, [r1]
|
|
||||||
b _0810CEAA
|
|
||||||
.align 2, 0
|
|
||||||
_0810CEA4: .4byte gUnknown_845318C
|
|
||||||
_0810CEA8:
|
|
||||||
movs r0, 0
|
|
||||||
_0810CEAA:
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_810CE64
|
|
||||||
|
|
||||||
thumb_func_start sub_810CEB4
|
|
||||||
sub_810CEB4: @ 810CEB4
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _0810CEC8 @ =gUnknown_845318C
|
|
||||||
ldr r1, _0810CECC @ =gTrainerBattleOpponent_A
|
|
||||||
ldrh r1, [r1]
|
|
||||||
bl sub_810CED0
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0810CEC8: .4byte gUnknown_845318C
|
|
||||||
_0810CECC: .4byte gTrainerBattleOpponent_A
|
|
||||||
thumb_func_end sub_810CEB4
|
|
||||||
|
|
||||||
thumb_func_start sub_810CED0
|
|
||||||
sub_810CED0: @ 810CED0
|
|
||||||
push {lr}
|
|
||||||
lsls r1, 16
|
|
||||||
lsrs r1, 16
|
|
||||||
bl sub_810CE10
|
|
||||||
adds r1, r0, 0
|
|
||||||
movs r0, 0x1
|
|
||||||
negs r0, r0
|
|
||||||
cmp r1, r0
|
|
||||||
beq _0810CEFC
|
|
||||||
cmp r1, 0xDC
|
|
||||||
bhi _0810CEFC
|
|
||||||
ldr r0, _0810CEF8 @ =gUnknown_20370D2
|
|
||||||
ldrh r0, [r0]
|
|
||||||
bl sub_810D0A8
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0810CEFC
|
|
||||||
movs r0, 0x1
|
|
||||||
b _0810CEFE
|
|
||||||
.align 2, 0
|
|
||||||
_0810CEF8: .4byte gUnknown_20370D2
|
|
||||||
_0810CEFC:
|
|
||||||
movs r0, 0
|
|
||||||
_0810CEFE:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_810CED0
|
|
||||||
|
|
||||||
thumb_func_start sub_810CF04
|
|
||||||
sub_810CF04: @ 810CF04
|
|
||||||
push {lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r3, r0, 24
|
|
||||||
lsls r0, r3, 3
|
|
||||||
adds r0, r3
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, _0810CF40 @ =gUnknown_2036E38
|
|
||||||
adds r1, r0, r1
|
|
||||||
ldrb r0, [r1]
|
|
||||||
lsls r0, 31
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0810CF4C
|
|
||||||
ldr r0, _0810CF44 @ =gMapHeader
|
|
||||||
ldr r0, [r0, 0x4]
|
|
||||||
ldrb r0, [r0]
|
|
||||||
ldrb r2, [r1, 0x8]
|
|
||||||
cmp r0, r2
|
|
||||||
bcc _0810CF4C
|
|
||||||
ldr r2, _0810CF48 @ =gSprites
|
|
||||||
ldrb r1, [r1, 0x4]
|
|
||||||
lsls r0, r1, 4
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r2
|
|
||||||
movs r1, 0x2E
|
|
||||||
ldrsh r0, [r0, r1]
|
|
||||||
cmp r0, r3
|
|
||||||
bne _0810CF4C
|
|
||||||
movs r0, 0x1
|
|
||||||
b _0810CF4E
|
|
||||||
.align 2, 0
|
|
||||||
_0810CF40: .4byte gUnknown_2036E38
|
|
||||||
_0810CF44: .4byte gMapHeader
|
|
||||||
_0810CF48: .4byte gSprites
|
|
||||||
_0810CF4C:
|
|
||||||
movs r0, 0
|
|
||||||
_0810CF4E:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_810CF04
|
|
||||||
|
|
||||||
thumb_func_start sub_810CF54
|
|
||||||
sub_810CF54: @ 810CF54
|
|
||||||
push {lr}
|
|
||||||
bl Random
|
|
||||||
lsls r0, 16
|
|
||||||
movs r1, 0xC0
|
|
||||||
lsls r1, 10
|
|
||||||
ands r1, r0
|
|
||||||
lsrs r1, 16
|
|
||||||
adds r0, r1, 0
|
|
||||||
cmp r1, 0x1
|
|
||||||
beq _0810CF8A
|
|
||||||
cmp r1, 0x1
|
|
||||||
bgt _0810CF74
|
|
||||||
cmp r1, 0
|
|
||||||
beq _0810CF7E
|
|
||||||
b _0810CF8A
|
|
||||||
_0810CF74:
|
|
||||||
cmp r0, 0x2
|
|
||||||
beq _0810CF82
|
|
||||||
cmp r0, 0x3
|
|
||||||
beq _0810CF86
|
|
||||||
b _0810CF8A
|
|
||||||
_0810CF7E:
|
|
||||||
movs r0, 0x7
|
|
||||||
b _0810CF8C
|
|
||||||
_0810CF82:
|
|
||||||
movs r0, 0x9
|
|
||||||
b _0810CF8C
|
|
||||||
_0810CF86:
|
|
||||||
movs r0, 0xA
|
|
||||||
b _0810CF8C
|
|
||||||
_0810CF8A:
|
|
||||||
movs r0, 0x8
|
|
||||||
_0810CF8C:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_810CF54
|
|
||||||
|
|
||||||
thumb_func_start sub_810CF90
|
thumb_func_start sub_810CF90
|
||||||
sub_810CF90: @ 810CF90
|
sub_810CF90: @ 810CF90
|
||||||
push {lr}
|
push {lr}
|
||||||
|
|||||||
+66
-8
@@ -41,8 +41,10 @@ bool8 sub_810C96C(void);
|
|||||||
u8 sub_810C9A8(const struct UnkStruct_845318C *);
|
u8 sub_810C9A8(const struct UnkStruct_845318C *);
|
||||||
u8 sub_810CD14(const u16 *, u8);
|
u8 sub_810CD14(const u16 *, u8);
|
||||||
u8 sub_810CD80(const struct UnkStruct_845318C *, u16);
|
u8 sub_810CD80(const struct UnkStruct_845318C *, u16);
|
||||||
bool32 sub_810D0A8(u16);
|
|
||||||
u8 sub_810CDB4(const struct UnkStruct_845318C *, u16);
|
u8 sub_810CDB4(const struct UnkStruct_845318C *, u16);
|
||||||
|
int sub_810CE10(const struct UnkStruct_845318C * a0, u16 a1);
|
||||||
|
bool8 sub_810CED0(const struct UnkStruct_845318C *, u16);
|
||||||
|
bool32 sub_810D0A8(u16);
|
||||||
int sub_810D084(const struct UnkStruct_845318C *, u16);
|
int sub_810D084(const struct UnkStruct_845318C *, u16);
|
||||||
void sub_810D304(void);
|
void sub_810D304(void);
|
||||||
void sub_810C604(void);
|
void sub_810C604(void);
|
||||||
@@ -50,12 +52,11 @@ bool8 sub_810D0FC(struct VsSeekerSubstruct *);
|
|||||||
u16 sub_810D074(const u8 *);
|
u16 sub_810D074(const u8 *);
|
||||||
u8 sub_810D1CC(void);
|
u8 sub_810D1CC(void);
|
||||||
void sub_810D24C(struct VsSeekerSubstruct *, const u8 *);
|
void sub_810D24C(struct VsSeekerSubstruct *, const u8 *);
|
||||||
int sub_810CE10(const struct UnkStruct_845318C *, u16);
|
|
||||||
bool8 sub_810D164(const void *, u16, u8 *);
|
bool8 sub_810D164(const void *, u16, u8 *);
|
||||||
u8 sub_810D280(int, u16);
|
u8 sub_810D280(int, u16);
|
||||||
u8 sub_810CF90(u8);
|
u8 sub_810CF90(u8);
|
||||||
void sub_810C640(void);
|
void sub_810C640(void);
|
||||||
void sub_810CF54(struct MapObjectTemplate *);
|
u8 sub_810CF54(struct MapObjectTemplate *);
|
||||||
void sub_805FE7C(struct MapObject *, u8);
|
void sub_805FE7C(struct MapObject *, u8);
|
||||||
|
|
||||||
// rodata
|
// rodata
|
||||||
@@ -754,23 +755,23 @@ void sub_810CCA0(const u16 * a0, u8 * a1)
|
|||||||
case 0:
|
case 0:
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (!FlagGet(0x292))
|
if (!FlagGet(FLAG_0x292))
|
||||||
*a1 = sub_810CD14(a0, *a1);
|
*a1 = sub_810CD14(a0, *a1);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (!FlagGet(0x896))
|
if (!FlagGet(FLAG_SYS_NATIONAL_DEX))
|
||||||
*a1 = sub_810CD14(a0, *a1);
|
*a1 = sub_810CD14(a0, *a1);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (!FlagGet(0x897))
|
if (!FlagGet(FLAG_SYS_CAVE_SHIP))
|
||||||
*a1 = sub_810CD14(a0, *a1);
|
*a1 = sub_810CD14(a0, *a1);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
if (!FlagGet(0x82c))
|
if (!FlagGet(FLAG_TRAINER_FLAG_START + 0x32c))
|
||||||
*a1 = sub_810CD14(a0, *a1);
|
*a1 = sub_810CD14(a0, *a1);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (!FlagGet(0x844))
|
if (!FlagGet(FLAG_TRAINER_FLAG_START + 0x344))
|
||||||
*a1 = sub_810CD14(a0, *a1);
|
*a1 = sub_810CD14(a0, *a1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -849,3 +850,60 @@ int sub_810CE10(const struct UnkStruct_845318C * a0, u16 a1)
|
|||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sub_810CE64(u16 a0)
|
||||||
|
{
|
||||||
|
u8 sp0;
|
||||||
|
u8 sp1;
|
||||||
|
sp1 = sub_810D164(gUnknown_845318C, a0, &sp0);
|
||||||
|
if (!sp1)
|
||||||
|
return 0;
|
||||||
|
sub_810CCA0(gUnknown_845318C[sp0].unk_0, &sp1);
|
||||||
|
return gUnknown_845318C[sp0].unk_0[sp1];
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 sub_810CEB4(void)
|
||||||
|
{
|
||||||
|
return sub_810CED0(gUnknown_845318C, gTrainerBattleOpponent_A);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_810CED0(const struct UnkStruct_845318C * a0, u16 a1)
|
||||||
|
{
|
||||||
|
int r1 = sub_810CE10(a0, a1);
|
||||||
|
|
||||||
|
if (r1 == -1)
|
||||||
|
return FALSE;
|
||||||
|
if ((u32)r1 >= 0xdd)
|
||||||
|
return FALSE;
|
||||||
|
if (!sub_810D0A8(gUnknown_20370D2))
|
||||||
|
return FALSE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_810CF04(u8 a0)
|
||||||
|
{
|
||||||
|
struct MapObject *r1 = &gUnknown_2036E38[a0];
|
||||||
|
|
||||||
|
if (r1->active && gMapHeader.events->mapObjectCount >= r1->localId && gSprites[r1->spriteId].data[0] == a0)
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 sub_810CF54(struct MapObjectTemplate * unused)
|
||||||
|
{
|
||||||
|
u16 r1 = Random() % 4;
|
||||||
|
|
||||||
|
switch (r1)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
return 7;
|
||||||
|
case 1:
|
||||||
|
return 8;
|
||||||
|
case 2:
|
||||||
|
return 9;
|
||||||
|
case 3:
|
||||||
|
return 10;
|
||||||
|
default:
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user