through sub_814449C

This commit is contained in:
PikalaxALT
2018-11-29 18:48:06 -05:00
parent 51622adaec
commit d68f434a52
4 changed files with 127 additions and 331 deletions
-328
View File
@@ -5,334 +5,6 @@
.text
thumb_func_start sub_8144254
sub_8144254: @ 8144254sub_81441F0
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _08144280 @ =gSaveBlock1Ptr
ldr r0, [r6]
ldr r1, _08144284 @ =0x000032e4
adds r0, r1
ldrb r4, [r0, 0x9]
adds r0, r5, 0
bl sub_81441F0
cmp r0, 0
beq _081442BE
ldr r0, [r6]
ldr r1, _08144288 @ =0x00003434
adds r0, r1
adds r1, r5, 0
adds r2, r4, 0
bl sub_81441AC
cmp r0, 0
beq _08144298
b _081442BE
.align 2, 0
_08144280: .4byte gSaveBlock1Ptr
_08144284: .4byte 0x000032e4
_08144288: .4byte 0x00003434
_0814428C:
ldrh r0, [r5, 0x2]
strh r0, [r1]
ldrh r0, [r5]
strh r0, [r2]
movs r0, 0x1
b _081442C0
_08144298:
movs r3, 0
cmp r3, r4
bge _081442BE
ldr r0, [r6]
ldr r6, _081442C8 @ =0x0000343c
adds r2, r0, r6
adds r6, 0xE
adds r1, r0, r6
_081442A8:
ldrh r0, [r2, 0xE]
cmp r0, 0
bne _081442B4
ldrh r0, [r2]
cmp r0, 0
beq _0814428C
_081442B4:
adds r2, 0x2
adds r1, 0x2
adds r3, 0x1
cmp r3, r4
blt _081442A8
_081442BE:
movs r0, 0
_081442C0:
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_081442C8: .4byte 0x0000343c
thumb_func_end sub_8144254
thumb_func_start sub_81442CC
sub_81442CC: @ 81442CC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
adds r4, r0, 0
movs r0, 0
str r0, [sp]
ldr r2, _08144328 @ =0x05000019
mov r0, sp
adds r1, r4, 0
bl CpuSet
ldr r0, _0814432C @ =0x00000101
str r0, [r4]
movs r0, 0x1
strh r0, [r4, 0x4]
str r0, [r4, 0x8]
strh r0, [r4, 0xC]
str r0, [r4, 0x10]
bl sub_8143FC8
cmp r0, 0
beq _08144330
bl sav1_get_mevent_buffer_1
ldrh r0, [r0]
strh r0, [r4, 0x14]
bl sav1_get_mevent_buffer_2
adds r1, r4, 0
adds r1, 0x20
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl sav1_get_mevent_buffer_1
ldrb r1, [r0, 0x9]
adds r0, r4, 0
adds r0, 0x44
strb r1, [r0]
b _08144332
.align 2, 0
_08144328: .4byte 0x05000019
_0814432C: .4byte 0x00000101
_08144330:
strh r0, [r4, 0x14]
_08144332:
adds r5, r4, 0
adds r5, 0x4C
ldr r0, _081443BC @ =gSaveBlock2Ptr
mov r8, r0
adds r6, r4, 0
adds r6, 0x45
adds r7, r4, 0
adds r7, 0x50
movs r1, 0x5C
adds r1, r4
mov r9, r1
movs r2, 0x60
adds r2, r4
mov r10, r2
ldr r0, _081443C0 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r3, _081443C4 @ =0x00003458
adds r2, r0, r3
adds r1, r4, 0
adds r1, 0x16
movs r3, 0x3
_0814435C:
ldrh r0, [r2]
strh r0, [r1]
adds r2, 0x2
adds r1, 0x2
subs r3, 0x1
cmp r3, 0
bge _0814435C
mov r0, r8
ldr r1, [r0]
adds r1, 0xA
adds r0, r5, 0
bl CopyUnalignedWord
mov r2, r8
ldr r1, [r2]
adds r0, r6, 0
bl StringCopy
ldr r0, _081443C0 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r3, _081443C8 @ =0x00002ca0
adds r2, r0, r3
adds r1, r7, 0
movs r3, 0x5
_0814438C:
ldrh r0, [r2]
strh r0, [r1]
adds r2, 0x2
adds r1, 0x2
subs r3, 0x1
cmp r3, 0
bge _0814438C
ldr r1, _081443CC @ =RomHeaderGameCode
mov r0, r9
movs r2, 0x4
bl memcpy
ldr r0, _081443D0 @ =RomHeaderSoftwareVersion
ldrb r0, [r0]
mov r5, r10
strb r0, [r5]
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
_081443BC: .4byte gSaveBlock2Ptr
_081443C0: .4byte gSaveBlock1Ptr
_081443C4: .4byte 0x00003458
_081443C8: .4byte 0x00002ca0
_081443CC: .4byte RomHeaderGameCode
_081443D0: .4byte RomHeaderSoftwareVersion
thumb_func_end sub_81442CC
thumb_func_start sub_81443D4
sub_81443D4: @ 81443D4
push {lr}
adds r2, r0, 0
ldr r1, [r2]
ldr r0, _0814440C @ =0x00000101
cmp r1, r0
bne _08144410
ldrh r1, [r2, 0x4]
movs r3, 0x1
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _08144410
ldr r0, [r2, 0x8]
ands r0, r3
cmp r0, 0
beq _08144410
ldrh r1, [r2, 0xC]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _08144410
ldr r0, [r2, 0x10]
movs r1, 0xF
ands r0, r1
cmp r0, 0
beq _08144410
movs r0, 0x1
b _08144412
.align 2, 0
_0814440C: .4byte 0x00000101
_08144410:
movs r0, 0
_08144412:
pop {r1}
bx r1
thumb_func_end sub_81443D4
thumb_func_start sub_8144418
sub_8144418: @ 8144418
push {lr}
ldrh r1, [r1, 0x14]
cmp r1, 0
bne _08144424
movs r0, 0
b _08144430
_08144424:
ldrh r0, [r0]
cmp r0, r1
beq _0814442E
movs r0, 0x2
b _08144430
_0814442E:
movs r0, 0x1
_08144430:
pop {r1}
bx r1
thumb_func_end sub_8144418
thumb_func_start sub_8144434
sub_8144434: @ 8144434
push {r4-r6,lr}
adds r6, r0, 0
adds r4, r1, 0
adds r5, r4, 0
adds r5, 0x20
adds r4, 0x44
ldrb r1, [r4]
adds r0, r5, 0
bl sub_8144184
ldrb r2, [r4]
subs r4, r2, r0
cmp r4, 0
bne _08144454
movs r0, 0x1
b _0814446E
_08144454:
adds r0, r5, 0
adds r1, r6, 0
bl sub_81441AC
cmp r0, 0
beq _08144464
movs r0, 0x3
b _0814446E
_08144464:
cmp r4, 0x1
beq _0814446C
movs r0, 0x2
b _0814446E
_0814446C:
movs r0, 0x4
_0814446E:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8144434
thumb_func_start sub_8144474
sub_8144474: @ 8144474
push {r4,lr}
movs r3, 0
adds r2, r0, 0
adds r2, 0x16
_0814447C:
ldrh r0, [r2]
ldrh r4, [r1]
cmp r0, r4
beq _08144488
movs r0, 0
b _08144494
_08144488:
adds r1, 0x2
adds r2, 0x2
adds r3, 0x1
cmp r3, 0x3
ble _0814447C
movs r0, 0x1
_08144494:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8144474
thumb_func_start sub_814449C
sub_814449C: @ 814449C
push {lr}
adds r2, r0, 0
adds r2, 0x20
adds r0, 0x44
ldrb r1, [r0]
adds r0, r2, 0
bl sub_8144184
pop {r1}
bx r1
thumb_func_end sub_814449C
thumb_func_start sub_81444B0
sub_81444B0: @ 81444B0
push {lr}
+3
View File
@@ -66,4 +66,7 @@ void DoSoftReset(void);
void ClearPokemonCrySongs(void);
void RestoreSerialTimer3IntrHandlers(void);
extern const char RomHeaderGameCode[4];
extern const char RomHeaderSoftwareVersion;
#endif // GUARD_MAIN_H
+18
View File
@@ -3,6 +3,24 @@
#include "global.h"
struct MEventStruct_Unk1442CC
{
u32 unk_00;
u16 unk_04;
u32 unk_08;
u16 unk_0C;
u32 unk_10;
u16 unk_14;
u16 unk_16[4];
struct MEventBuffer_3430_Sub unk_20;
u8 unk_44;
u8 unk_45[7];
u8 unk_4C[4];
u16 unk_50[6];
u8 unk_5C[4];
u8 unk_60;
};
struct MysteryEventStruct * sub_8143D94(void);
bool32 sub_8143E1C(void);
+106 -3
View File
@@ -14,7 +14,10 @@
#include "script.h"
#include "event_data.h"
#include "battle_tower.h"
#include "new_game.h"
#include "string_util.h"
#include "menews_jisan.h"
#include "mevent.h"
struct MEvent_Str_1
{
@@ -704,13 +707,113 @@ bool32 sub_81441F0(const u16 * data)
return TRUE;
}
bool32 sub_8144218(void)
s32 sub_8144218(void)
{
struct MEventBuffer_32E0_Sub * data;
if (!sub_8143FC8())
return FALSE;
return 0;
data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
if (data->unk_08_0 != 1)
return FALSE;
return 0;
return sub_8144184(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data->unk_09);
}
bool32 sub_8144254(const u16 * data)
{
struct MEventBuffer_32E0_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
s32 size = buffer->unk_09;
s32 i;
if (!sub_81441F0(data))
return FALSE;
if (sub_81441AC(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data, size))
return FALSE;
for (i = 0; i < size; i++)
{
if (gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] == 0 && gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] == 0)
{
gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] = data[1];
gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] = data[0];
return TRUE;
}
}
return FALSE;
}
void sub_81442CC(struct MEventStruct_Unk1442CC * data)
{
s32 i;
CpuFill32(0, data, sizeof(struct MEventStruct_Unk1442CC));
data->unk_00 = 0x101;
data->unk_04 = 1;
data->unk_08 = 1;
data->unk_0C = 1;
data->unk_10 = 1;
if (sub_8143FC8())
{
data->unk_14 = sav1_get_mevent_buffer_1()->unk_00;
data->unk_20 = *sav1_get_mevent_buffer_2();
data->unk_44 = sav1_get_mevent_buffer_1()->unk_09;
}
else
data->unk_14 = 0;
for (i = 0; i < 4; i++)
data->unk_16[i] = gSaveBlock1Ptr->unk_3120.unk_338[i];
CopyUnalignedWord(data->unk_4C, gSaveBlock2Ptr->playerTrainerId);
StringCopy(data->unk_45, gSaveBlock2Ptr->playerName);
for (i = 0; i < 6; i++)
data->unk_50[i] = gSaveBlock1Ptr->unk2CA0[i];
memcpy(data->unk_5C, RomHeaderGameCode, 4);
data->unk_60 = RomHeaderSoftwareVersion;
}
bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data)
{
if (data->unk_00 != 0x101)
return FALSE;
if (!(data->unk_04 & 1))
return FALSE;
if (!(data->unk_08 & 1))
return FALSE;
if (!(data->unk_0C & 1))
return FALSE;
if (!(data->unk_10 & 0x0F))
return FALSE;
return TRUE;
}
u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1)
{
if (a1->unk_14 == 0)
return 0;
if (*a0 == a1->unk_14)
return 1;
return 2;
}
u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1)
{
s32 r4 = a1->unk_44 - sub_8144184(&a1->unk_20, a1->unk_44);
if (r4 == 0)
return 1;
if (sub_81441AC(&a1->unk_20, a0, a1->unk_44))
return 3;
if (r4 == 1)
return 4;
return 2;
}
bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1)
{
s32 i;
for (i = 0; i < 4; i++)
{
if (a0->unk_16[i] != a1[i])
return FALSE;
}
return TRUE;
}
s32 sub_814449C(const struct MEventStruct_Unk1442CC * a0)
{
return sub_8144184(&a0->unk_20, a0->unk_44);
}