through sub_811175C

This commit is contained in:
PikalaxALT
2018-10-11 17:21:45 -04:00
parent feadfc8911
commit 913f2a9a1d
3 changed files with 98 additions and 293 deletions
-280
View File
@@ -5,286 +5,6 @@
.text
thumb_func_start sub_8111688
sub_8111688: @ 8111688
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
movs r5, 0
ldr r0, _081116CC @ =gSaveBlock1Ptr
mov r8, r0
ldr r7, _081116D0 @ =0x0000063a
_08111698:
ldr r1, _081116D4 @ =0x000040aa
adds r0, r5, r1
lsls r0, 16
lsrs r0, 16
bl VarGet
lsls r1, r5, 1
add r1, sp
strh r0, [r1]
movs r4, 0
adds r6, r5, 0x1
adds r3, r1, 0
lsls r5, 4
_081116B2:
ldrh r0, [r3]
movs r2, 0x1
ands r2, r0
cmp r2, 0
beq _081116D8
mov r1, r8
ldr r0, [r1]
adds r1, r5, r4
adds r0, r7
adds r0, r1
movs r1, 0x1E
strb r1, [r0]
b _081116E4
.align 2, 0
_081116CC: .4byte gSaveBlock1Ptr
_081116D0: .4byte 0x0000063a
_081116D4: .4byte 0x000040aa
_081116D8:
mov r1, r8
ldr r0, [r1]
adds r1, r5, r4
adds r0, r7
adds r0, r1
strb r2, [r0]
_081116E4:
ldrh r0, [r3]
lsrs r0, 1
strh r0, [r3]
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0xF
bls _081116B2
lsls r0, r6, 16
lsrs r5, r0, 16
cmp r5, 0x3
bls _08111698
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8111688
thumb_func_start sub_8111708
sub_8111708: @ 8111708
push {r4,r5,lr}
sub sp, 0x1C
ldr r0, _08111754 @ =0x000040ae
bl VarGet
ldr r4, _08111758 @ =gSaveBlock1Ptr
ldr r1, [r4]
strh r0, [r1, 0x32]
lsls r0, 16
cmp r0, 0
bne _0811174A
movs r0, 0x4
ldrsb r0, [r1, r0]
lsls r0, 16
lsrs r0, 16
ldrb r1, [r1, 0x5]
lsls r1, 24
asrs r1, 24
lsls r1, 16
lsrs r1, 16
bl get_mapheader_by_bank_and_number
mov r1, sp
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldr r0, [r0]
str r0, [r1]
ldr r1, [r4]
mov r0, sp
ldrh r0, [r0, 0x12]
strh r0, [r1, 0x32]
_0811174A:
add sp, 0x1C
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08111754: .4byte 0x000040ae
_08111758: .4byte gSaveBlock1Ptr
thumb_func_end sub_8111708
thumb_func_start sub_811175C
sub_811175C: @ 811175C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
mov r8, r1
lsls r0, 24
lsrs r4, r0, 24
movs r6, 0
mov r9, r6
movs r2, 0x80
lsls r2, 1
mov r0, r8
movs r1, 0
bl memset
movs r7, 0
ldr r2, _081117B8 @ =gUnknown_203AE0C
movs r1, 0
_08111780:
lsls r0, r7, 2
adds r0, r2
str r1, [r0]
adds r0, r7, 0x1
lsls r0, 16
lsrs r7, r0, 16
cmp r7, 0x1F
bls _08111780
ldr r1, _081117BC @ =gSaveBlock1Ptr
movs r0, 0xCD
lsls r0, 3
muls r0, r4
ldr r1, [r1]
adds r0, r1
ldr r1, _081117C0 @ =0x00001868
adds r4, r0, r1
movs r7, 0
_081117A2:
ldrh r0, [r4]
ldr r1, _081117C4 @ =0x00000fff
ands r1, r0
cmp r1, 0x29
bls _081117AE
b _081118AC
_081117AE:
lsls r0, r1, 2
ldr r1, _081117C8 @ =_081117CC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_081117B8: .4byte gUnknown_203AE0C
_081117BC: .4byte gSaveBlock1Ptr
_081117C0: .4byte 0x00001868
_081117C4: .4byte 0x00000fff
_081117C8: .4byte _081117CC
.align 2, 0
_081117CC:
.4byte _08111874
.4byte _08111880
.4byte _08111880
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _081118AC
.4byte _0811188C
.4byte _081118AC
.4byte _08111898
_08111874:
lsls r1, r6, 3
add r1, r8
adds r0, r4, 0
bl sub_8113D08
b _081118A2
_08111880:
lsls r1, r6, 3
add r1, r8
adds r0, r4, 0
bl sub_8113D94
b _081118A2
_0811188C:
lsls r1, r6, 3
add r1, r8
adds r0, r4, 0
bl sub_8113C20
b _081118A2
_08111898:
lsls r1, r6, 3
add r1, r8
adds r0, r4, 0
bl sub_8113C8C
_081118A2:
adds r4, r0, 0
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
b _081118D2
_081118AC:
mov r0, r9
lsls r1, r0, 2
ldr r5, _081118F0 @ =gUnknown_203AE0C
adds r1, r5
adds r0, r4, 0
bl sub_8113A78
adds r4, r0, 0
mov r1, r9
cmp r1, 0
bne _081118C8
ldr r0, [r5]
bl sub_8113ABC
_081118C8:
mov r0, r9
adds r0, 0x1
lsls r0, 16
lsrs r0, 16
mov r9, r0
_081118D2:
cmp r4, 0
beq _081118E2
adds r0, r7, 0x1
lsls r0, 16
lsrs r7, r0, 16
cmp r7, 0x1F
bhi _081118E2
b _081117A2
_081118E2:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_081118F0: .4byte gUnknown_203AE0C
thumb_func_end sub_811175C
thumb_func_start sub_81118F4
sub_81118F4: @ 81118F4
push {lr}
+2 -2
View File
@@ -496,8 +496,8 @@ struct QuestLog
/*0x0148*/ u8 unk_148[0x120];
/*0x02c8*/ u8 unk_268[0x200];
/*0x0468*/ struct QuestLogNPCData npcData[64];
/*0x0568*/ u8 filler_568[0x100];
/*0x0668*/ u8 end[0];
/*0x0568*/ u16 unk_568[0x80];
/*0x0668*/ u16 end[0];
};
#define MAP_OBJECTS_COUNT 16
+96 -11
View File
@@ -41,7 +41,7 @@ EWRAM_DATA u8 gUnknown_203ADFA = 0;
EWRAM_DATA u16 gUnknown_203ADFC = 0;
EWRAM_DATA u8 gUnknown_203ADFE[3];
EWRAM_DATA void * gUnknown_203AE04 = NULL;
EWRAM_DATA void * gUnknown_203AE08 = NULL;
EWRAM_DATA u16 * gUnknown_203AE08 = NULL;
EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL};
EWRAM_DATA void (* gUnknown_203AE8C)(void) = 0;
EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0};
@@ -65,7 +65,12 @@ u16 sub_8111618(void);
u16 sub_811164C(void);
void sub_8111688(void);
void sub_811175C(u8, struct UnkStruct_203AE98 *);
void sub_81118F4(s8);
void * sub_8113D08(void *, struct UnkStruct_203AE98 *);
void * sub_8113D94(void *, struct UnkStruct_203AE98 *);
void * sub_8113C20(void *, struct UnkStruct_203AE98 *);
void * sub_8113C8C(void *, struct UnkStruct_203AE98 *);
void * sub_8113A78(void *, void **);
void sub_8113ABC(void *);
void sub_81138F8(void);
void sub_8111AD8(void);
void sub_8112940(u8, struct UnkStruct_203AE98 *, u16);
@@ -75,6 +80,7 @@ void sub_8113BD8(void);
void * sub_8113BF4(void *);
void * sub_8113D48(void *, struct UnkStruct_203AE98 *);
void * sub_8113CC8(void *, struct UnkStruct_203AE98 *);
void sub_81118F4(s8);
extern const u8 gUnknown_841A155[];
@@ -94,7 +100,7 @@ void sub_8110840(void * a0)
if (gUnknown_203ADFA != 0)
{
if (gUnknown_203AE08)
gUnknown_203AE08 += r1;
gUnknown_203AE08 = (void *)gUnknown_203AE08 + r1;
if (gUnknown_203ADFA == 2)
{
int r3;
@@ -111,7 +117,7 @@ void sub_811089C(void)
gUnknown_203ADF8 = 0;
gUnknown_203ADFA = 0;
gUnknown_203AE8C = 0;
gUnknown_203AE08 = 0;
gUnknown_203AE08 = NULL;
gUnknown_203AE04 = 0;
sub_8113BD8();
sub_81138F8();
@@ -134,20 +140,20 @@ void sub_811092C(void)
gUnknown_203AE8C();
}
bool8 sub_8110944(u8 * a0, size_t a1)
bool8 sub_8110944(void * a0, size_t a1)
{
u8 * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568;
u8 * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end;
void * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568;
void * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end;
r0 -= a1;
if (a0 < r2 || a0 > r0)
return FALSE;
return TRUE;
}
bool8 sub_8110988(u8 * a0, size_t a1)
bool8 sub_8110988(void * a0, size_t a1)
{
u8 * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568;
u8 * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end;
void * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568;
void * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end;
r0 -= a1;
if (a0 < r2 || a0 > r0)
return FALSE;
@@ -209,7 +215,7 @@ void sub_8110AEC(u16 a0)
sub_81108F0(gUnknown_203ADF8);
sub_8113B88();
gUnknown_203AE08 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568;
gUnknown_203AE08 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568;
if ((a0 >= 12 && a0 < 20) || a0 == 35)
gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000 = 2;
else
@@ -798,3 +804,82 @@ u16 sub_811164C(void)
return count;
}
void sub_8111688(void)
{
u16 i, j;
u16 sp0[4];
for (i = 0; i < 4; i++)
{
sp0[i] = VarGet(VAR_0x40AA + i);
for (j = 0; j < 16; j++)
{
if (sp0[i] & 1)
gSaveBlock1Ptr->trainerRematches[16 * i + j] = 30;
else
gSaveBlock1Ptr->trainerRematches[16 * i + j] = 0;
sp0[i] >>= 1;
}
}
}
void sub_8111708(void)
{
struct MapHeader sp0;
gSaveBlock1Ptr->mapDataId = VarGet(VAR_0x40AE);
if (gSaveBlock1Ptr->mapDataId == 0)
{
sp0 = *get_mapheader_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
gSaveBlock1Ptr->mapDataId = sp0.mapDataId;
}
}
void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1)
{
u16 i;
u16 *r4;
u16 r6 = 0;
u16 r9 = 0;
memset(a1, 0, 32 * sizeof(struct UnkStruct_203AE98));
for (i = 0; i < 32; i++)
{
gUnknown_203AE0C[i] = NULL;
}
r4 = gSaveBlock1Ptr->questLog[a0].unk_568;
for (i = 0; i < 32; i++)
{
switch (*r4 & 0xFFF)
{
case 0:
r4 = sub_8113D08(r4, &a1[r6]);
r6++;
break;
case 1:
case 2:
r4 = sub_8113D94(r4, &a1[r6]);
r6++;
break;
case 39:
r4 = sub_8113C20(r4, &a1[r6]);
r6++;
break;
case 41:
r4 = sub_8113C8C(r4, &a1[r6]);
r6++;
break;
default:
r4 = sub_8113A78(r4, &gUnknown_203AE0C[r9]);
if (r9 == 0)
sub_8113ABC(gUnknown_203AE0C[0]);
r9++;
break;
}
if (r4 == NULL)
break;
}
}