through sub_81436EC

This commit is contained in:
PikalaxALT
2018-11-28 22:15:11 -05:00
parent 18303c4596
commit 21a301b77d
6 changed files with 95 additions and 187 deletions
-187
View File
@@ -5,193 +5,6 @@
.text
thumb_func_start sub_81435DC
sub_81435DC: @ 81435DC
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x4
adds r5, r0, 0
adds r6, r1, 0
mov r8, r2
mov r1, sp
ldr r4, _08143630 @ =0x04000208
ldrh r0, [r4]
strh r0, [r1]
movs r0, 0
strh r0, [r4]
ldr r1, _08143634 @ =gIntrTable
ldr r0, _08143638 @ =sub_815C6D4
str r0, [r1, 0x4]
ldr r0, _0814363C @ =sub_815C6C4
str r0, [r1, 0x8]
bl sub_815C8C8
bl sub_815C960
ldr r2, _08143640 @ =0x04000200
ldrh r0, [r2]
movs r1, 0x4
orrs r0, r1
strh r0, [r2]
mov r0, sp
ldrh r0, [r0]
strh r0, [r4]
movs r0, 0
strh r0, [r5]
str r6, [r5, 0x4]
mov r0, r8
str r0, [r5, 0x8]
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08143630: .4byte 0x04000208
_08143634: .4byte gIntrTable
_08143638: .4byte sub_815C6D4
_0814363C: .4byte sub_815C6C4
_08143640: .4byte 0x04000200
thumb_func_end sub_81435DC
thumb_func_start sub_8143644
sub_8143644: @ 8143644
push {r4,lr}
sub sp, 0x4
mov r1, sp
ldr r4, _08143670 @ =0x04000208
ldrh r0, [r4]
strh r0, [r1]
movs r0, 0
strh r0, [r4]
bl sub_815C960
bl sub_815C91C
bl RestoreSerialTimer3IntrHandlers
mov r0, sp
ldrh r0, [r0]
strh r0, [r4]
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08143670: .4byte 0x04000208
thumb_func_end sub_8143644
thumb_func_start sub_8143674
sub_8143674: @ 8143674
push {r4,r5,lr}
adds r4, r0, 0
movs r5, 0
ldr r1, [r4, 0x4]
ldr r2, [r4, 0x8]
movs r0, 0x1
movs r3, 0
bl sub_815C498
adds r1, r0, 0
strh r1, [r4]
movs r0, 0x13
ands r0, r1
cmp r0, 0x10
bne _08143694
movs r5, 0x1
_08143694:
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _0814369E
movs r5, 0x2
_0814369E:
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _081436A8
movs r5, 0x3
_081436A8:
ldr r1, _081436B8 @ =gUnknown_3003F84
movs r0, 0
strb r0, [r1]
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_081436B8: .4byte gUnknown_3003F84
thumb_func_end sub_8143674
thumb_func_start sub_81436BC
sub_81436BC: @ 81436BC
push {lr}
ldr r0, _081436E0 @ =gDecompressionBuffer
movs r2, 0x80
lsls r2, 6
movs r1, 0
bl memset
ldr r1, _081436E4 @ =gUnknown_202271A
ldr r2, _081436E8 @ =0x00005502
adds r0, r2, 0
strh r0, [r1]
bl sub_8009804
movs r0, 0x1
bl SetSuppressLinkErrorMessage
pop {r0}
bx r0
.align 2, 0
_081436E0: .4byte gDecompressionBuffer
_081436E4: .4byte gUnknown_202271A
_081436E8: .4byte 0x00005502
thumb_func_end sub_81436BC
thumb_func_start sub_81436EC
sub_81436EC: @ 81436EC
push {lr}
sub sp, 0xC
mov r1, sp
ldr r2, _08143730 @ =0x04000208
ldrh r0, [r2]
strh r0, [r1]
movs r0, 0
strh r0, [r2]
ldr r0, _08143734 @ =gUnknown_3003FB4
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [sp, 0x4]
str r1, [sp, 0x8]
mov r0, sp
ldrh r0, [r0]
strh r0, [r2]
add r2, sp, 0x4
ldrh r1, [r2]
ldr r0, _08143738 @ =0x0000b9a0
cmp r1, r0
bne _08143744
ldrh r1, [r2, 0x2]
ldr r0, _0814373C @ =0x0000ccd0
cmp r1, r0
bne _08143744
ldrh r1, [r2, 0x4]
ldr r0, _08143740 @ =0x0000ffff
cmp r1, r0
bne _08143744
ldrh r0, [r2, 0x6]
cmp r0, r1
bne _08143744
movs r0, 0x1
b _08143746
.align 2, 0
_08143730: .4byte 0x04000208
_08143734: .4byte gUnknown_3003FB4
_08143738: .4byte 0x0000b9a0
_0814373C: .4byte 0x0000ccd0
_08143740: .4byte 0x0000ffff
_08143744:
movs r0, 0
_08143746:
add sp, 0xC
pop {r1}
bx r1
thumb_func_end sub_81436EC
thumb_func_start sub_814374C
sub_814374C: @ 814374C
push {lr}
+5
View File
@@ -146,6 +146,10 @@ extern u16 word_3002910[];
extern bool8 gReceivedRemoteLinkPlayers;
extern bool8 gLinkVSyncDisabled;
extern u8 gUnknown_3003F84;
extern u64 gUnknown_3003FB4;
extern u16 gUnknown_202271A;
void Task_DestroySelf(u8);
void OpenLink(void);
void CloseLink(void);
@@ -196,5 +200,6 @@ void sub_8011BD0(void);
u8 sub_800ABAC(void);
u8 sub_800ABBC(void);
void sub_800AC34(void);
void sub_8009804(void);
#endif // GUARD_LINK_H
+3
View File
@@ -9,6 +9,8 @@ typedef void (*MainCallback)(void);
typedef void (*IntrCallback)(void);
typedef void (*IntrFunc)(void);
extern IntrFunc gIntrTable[];
struct Main
{
/*0x000*/ MainCallback callback1;
@@ -62,5 +64,6 @@ void SetSerialCallback(IntrCallback callback);
void InitFlashTimer(void);
void DoSoftReset(void);
void ClearPokemonCrySongs(void);
void RestoreSerialTimer3IntrHandlers(void);
#endif // GUARD_MAIN_H
+11
View File
@@ -0,0 +1,11 @@
#ifndef GUARD_UNK_815C27C_H
#define GUARD_UNK_815C27C_H
void sub_815C6D4(void);
void sub_815C6C4(void);
void sub_815C8C8(void);
void sub_815C960(void);
void sub_815C91C(void);
u16 sub_815C498(u8, u32, u32, u8);
#endif //GUARD_UNK_815C27C_H
+1
View File
@@ -243,6 +243,7 @@ SECTIONS {
asm/roamer.o(.text);
asm/mystery_gift_menu.o(.text);
asm/link_rfu_4.o(.text);
src/mevent.o(.text);
asm/mevent.o(.text);
asm/mevent_server.o(.text);
asm/mevent_8145654.o(.text);
+75
View File
@@ -0,0 +1,75 @@
#include "global.h"
#include "main.h"
#include "decompress.h"
#include "link.h"
#include "unk_815c27c.h"
struct MEvent_Str_1
{
u16 unk_000;
u32 unk_004;
u32 unk_008;
};
void sub_81435DC(struct MEvent_Str_1 *a0, u32 a1, u32 a2)
{
vu16 imeBak = REG_IME;
REG_IME = 0;
gIntrTable[1] = sub_815C6D4;
gIntrTable[2] = sub_815C6C4;
sub_815C8C8();
sub_815C960();
REG_IE |= INTR_FLAG_VCOUNT;
REG_IME = imeBak;
a0->unk_000 = 0;
a0->unk_004 = a1;
a0->unk_008 = a2;
}
void sub_8143644(void)
{
vu16 imeBak = REG_IME;
REG_IME = 0;
sub_815C960();
sub_815C91C();
RestoreSerialTimer3IntrHandlers();
REG_IME = imeBak;
}
u8 sub_8143674(struct MEvent_Str_1 *a0)
{
u8 resp = 0;
a0->unk_000 = sub_815C498(1, a0->unk_004, a0->unk_008, 0);
if ((a0->unk_000 & 0x13) == 0x10)
resp = 1;
if (a0->unk_000 & 8)
resp = 2;
if (a0->unk_000 & 4)
resp = 3;
gUnknown_3003F84 = 0;
return resp;
}
void sub_81436BC(void)
{
memset(gDecompressionBuffer, 0, 0x2000);
gUnknown_202271A = 0x5502;
sub_8009804();
SetSuppressLinkErrorMessage(TRUE);
}
bool8 sub_81436EC(void)
{
vu16 imeBak = REG_IME;
u16 data[4];
REG_IME = 0;
*(u64 *)data = gUnknown_3003FB4;
REG_IME = imeBak;
if ( data[0] == 0xB9A0
&& data[1] == 0xCCD0
&& data[2] == 0xFFFF
&& data[3] == 0xFFFF
)
return TRUE;
return FALSE;
}