Reformat mevent server and client scripts

This commit is contained in:
PikalaxALT 2019-04-02 12:22:39 -04:00 committed by huderlem
parent 03badd9c40
commit 6c12d154e7
7 changed files with 335 additions and 580 deletions

View File

@ -1,373 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start mevent_srv_sub_recv
mevent_srv_sub_recv: @ 801D8C0
push {lr}
ldr r1, [r0, 0x20]
bl _call_via_r1
pop {r1}
bx r1
thumb_func_end mevent_srv_sub_recv
thumb_func_start mevent_srv_sub_send
mevent_srv_sub_send: @ 801D8CC
push {lr}
ldr r1, [r0, 0x24]
bl _call_via_r1
pop {r1}
bx r1
thumb_func_end mevent_srv_sub_send
thumb_func_start mevent_srv_sub_init
mevent_srv_sub_init: @ 801D8D8
movs r3, 0
strb r1, [r0, 0x4]
strb r2, [r0, 0x5]
str r3, [r0]
strh r3, [r0, 0x12]
strh r3, [r0, 0x14]
strh r3, [r0, 0x10]
strh r3, [r0, 0xA]
strh r3, [r0, 0xC]
strh r3, [r0, 0x8]
str r3, [r0, 0x1C]
str r3, [r0, 0x18]
ldr r1, =sub_801DA5C
str r1, [r0, 0x24]
ldr r1, =sub_801D988
str r1, [r0, 0x20]
bx lr
.pool
thumb_func_end mevent_srv_sub_init
thumb_func_start mevent_srv_sub_init_send
mevent_srv_sub_init_send: @ 801D904
push {r4,lr}
adds r4, r0, 0
movs r0, 0
str r0, [r4]
strh r1, [r4, 0xE]
strh r0, [r4, 0x10]
strh r0, [r4, 0x12]
cmp r3, 0
beq _0801D91A
strh r3, [r4, 0x14]
b _0801D920
_0801D91A:
movs r0, 0x80
lsls r0, 3
strh r0, [r4, 0x14]
_0801D920:
str r2, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
thumb_func_end mevent_srv_sub_init_send
thumb_func_start mevent_srv_sub_init_recv
mevent_srv_sub_init_recv: @ 801D928
movs r3, 0
str r3, [r0]
strh r1, [r0, 0x6]
strh r3, [r0, 0x8]
strh r3, [r0, 0xA]
strh r3, [r0, 0xC]
str r2, [r0, 0x18]
bx lr
thumb_func_end mevent_srv_sub_init_recv
thumb_func_start sub_801D938
sub_801D938: @ 801D938
push {lr}
adds r3, r0, 0
adds r0, r1, 0
lsls r3, 8
ldr r1, =gBlockRecvBuffer
adds r3, r1
adds r1, r3, 0
bl memcpy
pop {r0}
bx r0
.pool
thumb_func_end sub_801D938
thumb_func_start sub_801D954
sub_801D954: @ 801D954
push {r4,lr}
adds r4, r0, 0
bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
asrs r0, r4
movs r1, 0x1
ands r0, r1
cmp r0, 0
bne _0801D96E
movs r0, 0
b _0801D970
_0801D96E:
movs r0, 0x1
_0801D970:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_801D954
thumb_func_start sub_801D978
sub_801D978: @ 801D978
push {lr}
lsls r0, 24
lsrs r0, 24
bl ResetBlockReceivedFlag
pop {r0}
bx r0
thumb_func_end sub_801D978
thumb_func_start sub_801D988
sub_801D988: @ 801D988
push {r4-r6,lr}
sub sp, 0x8
adds r5, r0, 0
ldr r6, [r5]
cmp r6, 0x1
beq _0801D9EC
cmp r6, 0x1
bgt _0801D99E
cmp r6, 0
beq _0801D9A4
b _0801DA52
_0801D99E:
cmp r6, 0x2
beq _0801DA38
b _0801DA52
_0801D9A4:
ldrb r0, [r5, 0x5]
bl sub_801D954
cmp r0, 0
beq _0801DA52
ldrb r0, [r5, 0x5]
mov r4, sp
mov r1, sp
movs r2, 0x8
bl sub_801D938
ldrh r1, [r4, 0x4]
strh r1, [r5, 0xC]
ldrh r0, [r4, 0x2]
strh r0, [r5, 0xA]
lsls r1, 16
movs r0, 0x80
lsls r0, 19
cmp r1, r0
bls _0801D9D2
_0801D9CC:
bl sub_8010198
b _0801DA52
_0801D9D2:
mov r1, sp
ldrh r0, [r5, 0x6]
ldrh r1, [r1]
cmp r0, r1
bne _0801D9CC
strh r6, [r5, 0x8]
ldrb r0, [r5, 0x5]
bl sub_801D978
ldr r0, [r5]
adds r0, 0x1
str r0, [r5]
b _0801DA52
_0801D9EC:
ldrb r0, [r5, 0x5]
bl sub_801D954
cmp r0, 0
beq _0801DA52
ldrh r0, [r5, 0x8]
lsls r1, r0, 6
subs r1, r0
lsls r3, r1, 2
ldrh r0, [r5, 0xC]
subs r2, r0, r3
cmp r2, 0xFC
bhi _0801DA1E
ldrb r0, [r5, 0x5]
ldr r1, [r5, 0x18]
adds r1, r3
bl sub_801D938
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
ldr r0, [r5]
adds r0, 0x1
str r0, [r5]
b _0801DA30
_0801DA1E:
ldrb r0, [r5, 0x5]
ldr r1, [r5, 0x18]
adds r1, r3
movs r2, 0xFC
bl sub_801D938
ldrh r0, [r5, 0x8]
adds r0, 0x1
strh r0, [r5, 0x8]
_0801DA30:
ldrb r0, [r5, 0x5]
bl sub_801D978
b _0801DA52
_0801DA38:
ldr r0, [r5, 0x18]
ldrh r1, [r5, 0xC]
bl CalcCRC16WithTable
lsls r0, 16
lsrs r0, 16
ldrh r1, [r5, 0xA]
cmp r0, r1
bne _0801D9CC
movs r0, 0
str r0, [r5]
movs r0, 0x1
b _0801DA54
_0801DA52:
movs r0, 0
_0801DA54:
add sp, 0x8
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_801D988
thumb_func_start sub_801DA5C
sub_801DA5C: @ 801DA5C
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
ldr r5, [r4]
cmp r5, 0x1
beq _0801DAC8
cmp r5, 0x1
bgt _0801DA72
cmp r5, 0
beq _0801DA7C
b _0801DB5E
_0801DA72:
cmp r5, 0x2
beq _0801DB1C
cmp r5, 0x3
beq _0801DB46
b _0801DB5E
_0801DA7C:
bl IsLinkTaskFinished
lsls r0, 24
cmp r0, 0
beq _0801DB5E
ldrh r1, [r4, 0xE]
ldr r2, =0xffff0000
ldr r0, [sp]
ands r0, r2
orrs r0, r1
str r0, [sp]
ldrh r1, [r4, 0x14]
ldr r0, [sp, 0x4]
ands r0, r2
orrs r0, r1
str r0, [sp, 0x4]
ldr r0, [r4, 0x1C]
bl CalcCRC16WithTable
lsls r0, 16
ldr r2, =0x0000ffff
ldr r1, [sp]
ands r1, r2
orrs r1, r0
str r1, [sp]
lsrs r1, 16
strh r1, [r4, 0x12]
strh r5, [r4, 0x10]
movs r0, 0
mov r1, sp
movs r2, 0x8
bl SendBlock
b _0801DB3E
.pool
_0801DAC8:
bl IsLinkTaskFinished
lsls r0, 24
cmp r0, 0
beq _0801DB5E
ldrb r0, [r4, 0x4]
bl sub_801D954
cmp r0, 0
beq _0801DB5E
ldrb r0, [r4, 0x4]
bl sub_801D978
ldrh r1, [r4, 0x10]
lsls r0, r1, 6
subs r0, r1
lsls r3, r0, 2
ldrh r0, [r4, 0x14]
subs r0, r3
cmp r0, 0xFC
bhi _0801DB08
ldr r1, [r4, 0x1C]
adds r1, r3
lsls r2, r0, 16
lsrs r2, 16
movs r0, 0
bl SendBlock
ldrh r0, [r4, 0x10]
adds r0, 0x1
strh r0, [r4, 0x10]
b _0801DB3E
_0801DB08:
ldr r1, [r4, 0x1C]
adds r1, r3
movs r0, 0
movs r2, 0xFC
bl SendBlock
ldrh r0, [r4, 0x10]
adds r0, 0x1
strh r0, [r4, 0x10]
b _0801DB5E
_0801DB1C:
bl IsLinkTaskFinished
lsls r0, 24
cmp r0, 0
beq _0801DB5E
ldr r0, [r4, 0x1C]
ldrh r1, [r4, 0x14]
bl CalcCRC16WithTable
lsls r0, 16
lsrs r0, 16
ldrh r1, [r4, 0x12]
cmp r0, r1
beq _0801DB3E
bl sub_8010198
b _0801DB5E
_0801DB3E:
ldr r0, [r4]
adds r0, 0x1
str r0, [r4]
b _0801DB5E
_0801DB46:
ldrb r0, [r4, 0x4]
bl sub_801D954
cmp r0, 0
beq _0801DB5E
ldrb r0, [r4, 0x4]
bl sub_801D978
movs r0, 0
str r0, [r4]
movs r0, 0x1
b _0801DB60
_0801DB5E:
movs r0, 0
_0801DB60:
add sp, 0x8
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_801DA5C
.align 2, 0 @ don't pad with nop

View File

@ -9,265 +9,185 @@ gText_CanceledReadingCard:: @ 82F257C
.align 2
gUnknown_082F2598:: @ 82F2598
.byte 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte 2, 16
.4byte 4, 0
.align 2
gUnknown_082F25A8:: @ 82F25A8
.byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte 8, 0
.4byte 3, 0
.4byte 2, 16
.4byte 4, 0
.align 2
gUnknown_082F25C8:: @ 82F25C8
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00
.4byte 20, 0
.4byte 1, 10
.align 2
gUnknown_082F25D8:: @ 82F25D8
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00
.4byte 20, 0
.4byte 1, 11
.align 2
gUnknown_082F25E8:: @ 82F25E8
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte 20, 0
.4byte 1, 0
.align 2
gUnknown_082F25F8:: @ 82F25F8
.byte 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00
.byte 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00
.byte 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.4byte 2, 22
.4byte 10, 0
.4byte 2, 25
.4byte 17, 0
.4byte 20, 0
.4byte 1, 2
.align 2
gUnknown_082F2628:: @ 82F2628
.byte 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00
.byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte 2, 23
.4byte 9, 0
.4byte 3, 0
.4byte 2, 16
.4byte 4, 0
.align 2
gUnknown_082F2650:: @ 82F2650
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00
.4byte 20, 0
.4byte 1, 7
.align 2
gUnknown_082F2660:: @ 82F2660
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.4byte 20, 0
.4byte 1, 3
.align 2
gUnknown_082F2670:: @ 82F2670
.byte 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte 13, 0
.4byte 14, 0
.4byte 3, 0
.4byte 2, 16
.4byte 4, 0
.align 2
gUnknown_082F2698:: @ 82F2698
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
.4byte 20, 0
.4byte 1, 9
.align 2
gUnknown_082F26A8:: @ 82F26A8
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.4byte 20, 0
.4byte 1, 5
.align 2
gUnknown_082F26B8:: @ 82F26B8
.byte 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00
.byte 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00
.byte 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00
.4byte 2, 21
.4byte 12, 0
.4byte 20, 0
.4byte 1, 14
.4byte 2, 21
.4byte 12, 0
.4byte 20, 0
.4byte 1, 13
.align 2
gUnknown_082F26F8:: @ 82F26F8
.byte 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.4byte gUnknown_082F25C8
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.4byte gUnknown_082F25D8
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.4byte gUnknown_082F2698
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte 18, 0x10, gUnknown_082F25C8
.4byte 1, 0x00, NULL
.4byte 2, 0x14, NULL
.4byte 0, 0x0a, NULL
.4byte 18, 0x10, gUnknown_082F25D8
.4byte 1, 0x00, NULL
.4byte 2, 0x14, NULL
.4byte 0, 0x0b, NULL
.4byte 18, 0x10, gUnknown_082F2698
.4byte 1, 0x00, NULL
.4byte 2, 0x14, NULL
.4byte 0, 0x09, NULL
.align 2
gUnknown_082F2788:: @ 82F2788
.byte 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
.4byte gUnknown_082F26B8
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00
.4byte gText_CanceledReadingCard
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte 18, 0x20, gUnknown_082F26B8
.4byte 1, 0x00, NULL
.4byte 20, 0x1b, gText_CanceledReadingCard
.4byte 1, 0x00, NULL
.4byte 2, 0x14, NULL
.4byte 0, 0x09, NULL
.align 2
gUnknown_082F27D0:: @ 82F27D0
.byte 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.4byte gUnknown_082F2650
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte 18, 0x10, gUnknown_082F2650
.4byte 1, 0x00, NULL
.4byte 2, 0x14, NULL
.4byte 0, 0x07, NULL
.align 2
gUnknown_082F2800:: @ 82F2800
.byte 0x12, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00
.4byte gUnknown_082F2628
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.4byte gUnknown_082F27D0
.byte 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.4byte gUnknown_082F2660
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.4byte 18, 0x28, gUnknown_082F2628
.4byte 1, 0x00, NULL
.4byte 14, 0x00, NULL
.4byte 1, 0x00, NULL
.4byte 2, 0x13, NULL
.4byte 8, 0x00, NULL
.4byte 4, 0x01, gUnknown_082F27D0
.4byte 18, 0x10, gUnknown_082F2660
.4byte 1, 0x00, NULL
.4byte 2, 0x14, NULL
.4byte 0, 0x03, NULL
.align 2
gUnknown_082F2884:: @ 82F2884
.byte 0x12, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00
.4byte gUnknown_082F25F8
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.4byte 18, 0x30, gUnknown_082F25F8
.4byte 1, 0x00, NULL
.4byte 13, 0x00, NULL
.4byte 1, 0x00, NULL
.4byte 15, 0x00, NULL
.4byte 1, 0x00, NULL
.4byte 2, 0x14, NULL
.4byte 0, 0x02, NULL
.align 2
gUnknown_082F28E4:: @ 82F28E4
.byte 0x12, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00
.4byte gUnknown_082F2670
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.4byte gUnknown_082F2884
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte gUnknown_082F2788
.4byte 18, 0x28, gUnknown_082F2670
.4byte 1, 0x00, NULL
.4byte 2, 0x13, NULL
.4byte 8, 0x00, NULL
.4byte 4, 0x00, gUnknown_082F2884
.4byte 3, 0x00, gUnknown_082F2788
.align 2
gUnknown_082F292C:: @ 82F292C
.byte 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.4byte gUnknown_082F26A8
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
.byte 0x10, 0x00, 0x00, 0x00
.4byte gUnknown_082F25E8
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.4byte 18, 0x10, gUnknown_082F26A8
.4byte 1, 0x00, NULL
.4byte 2, 0x14, NULL
.4byte 0, 0x05, NULL
.4byte 18, 0x10, gUnknown_082F25E8
.4byte 1, 0x00, NULL
.4byte 2, 0x14, NULL
.4byte 0, 0x00, NULL
.align 2
s_mevent_wonder_news:: @ 82F298C
.byte 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
.byte 0x20, 0x00, 0x00, 0x00
.4byte gUnknown_082F25A8
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte gUnknown_082F26F8
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte gUnknown_082F2800
.4byte 27, 0x00, NULL
.4byte 18, 0x20, gUnknown_082F25A8
.4byte 1, 0x00, NULL
.4byte 2, 0x11, NULL
.4byte 5, 0x00, NULL
.4byte 30, 0x00, NULL
.4byte 4, 0x00, gUnknown_082F26F8
.4byte 3, 0x00, gUnknown_082F2800
.align 2
s_mevent_wonder_card:: @ 82F29EC
.byte 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
.4byte gUnknown_082F25A8
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.4byte gUnknown_082F26F8
.byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00
.4byte gUnknown_082F28E4
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte gUnknown_082F2884
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.4byte gUnknown_082F292C
.4byte 26, 0x00, NULL
.4byte 28, 0x00, NULL
.4byte 18, 0x20, gUnknown_082F25A8
.4byte 1, 0x00, NULL
.4byte 2, 0x11, NULL
.4byte 5, 0x00, NULL
.4byte 6, 0x00, NULL
.4byte 4, 0x00, gUnknown_082F26F8
.4byte 7, 0x00, NULL
.4byte 4, 0x02, gUnknown_082F28E4
.4byte 4, 0x00, gUnknown_082F2884
.4byte 3, 0x00, gUnknown_082F292C

View File

@ -10,8 +10,8 @@ u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *));
void StoreWordInTwoHalfwords(u16 *, u32);
void LoadWordFromTwoHalfwords(u16 *, u32 *);
int CountTrailingZeroBits(u32 value);
u16 CalcCRC16(u8 *data, s32 length);
u16 CalcCRC16WithTable(u8 *data, u32 length);
u16 CalcCRC16(const u8 *data, s32 length);
u16 CalcCRC16WithTable(const u8 *data, u32 length);
u32 CalcByteArraySum(const u8* data, u32 length);
void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor);
void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha);

View File

@ -62,7 +62,7 @@ SECTIONS {
src/mevent_801BAAC.o(.text);
src/mevent_server.o(.text);
src/mevent_server_ish.o(.text);
asm/mevent_server_helpers.o(.text);
src/mevent_server_helpers.o(.text);
src/mevent_news.o(.text);
src/union_room_chat.o(.text);
src/berry_crush.o(.text);

View File

@ -1 +1,211 @@
#include "global.h"
#include "alloc.h"
#include "decompress.h"
#include "util.h"
#include "link.h"
#include "link_rfu.h"
#include "overworld.h"
#include "script.h"
#include "battle_tower.h"
#include "mystery_event_script.h"
#include "mevent.h"
#include "mevent_server_helpers.h"
static u32 mevent_receive_func(struct mevent_srv_sub *);
static u32 mevent_send_func(struct mevent_srv_sub *);
u32 mevent_srv_sub_recv(struct mevent_srv_sub * svr)
{
return svr->recvFunc(svr);
}
u32 mevent_srv_sub_send(struct mevent_srv_sub * svr)
{
return svr->sendFunc(svr);
}
void mevent_srv_sub_init(struct mevent_srv_sub * svr, u32 sendPlayerNo, u32 recvPlayerNo)
{
svr->sendPlayerNo = sendPlayerNo;
svr->recvPlayerNo = recvPlayerNo;
svr->seqno = 0;
svr->sendCRC = 0;
svr->sendSize = 0;
svr->sendCounter = 0;
svr->recvCRC = 0;
svr->recvSize = 0;
svr->recvCounter = 0;
svr->sendBfr = NULL;
svr->recvBfr = NULL;
svr->sendFunc = mevent_send_func;
svr->recvFunc = mevent_receive_func;
}
void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 ident, const void * src, u32 size)
{
svr->seqno = 0;
svr->sendIdent = ident;
svr->sendCounter = 0;
svr->sendCRC = 0;
if (size != 0)
svr->sendSize = size;
else
svr->sendSize = ME_SEND_BUF_SIZE;
svr->sendBfr = src;
}
void mevent_srv_sub_init_recv(struct mevent_srv_sub * svr, u32 ident, void * dest)
{
svr->seqno = 0;
svr->recvIdent = ident;
svr->recvCounter = 0;
svr->recvCRC = 0;
svr->recvSize = 0;
svr->recvBfr = dest;
}
static void mevent_recv_block(u32 recv_idx, void * dest, size_t size)
{
memcpy(dest, gBlockRecvBuffer[recv_idx], size);
}
static bool32 mevent_has_received(u32 recv_idx)
{
if ((GetBlockReceivedStatus() >> recv_idx) & 1)
return TRUE;
else
return FALSE;
}
static void mevent_reset_recv(u32 recv_idx)
{
ResetBlockReceivedFlag(recv_idx);
}
static bool32 mevent_receive_func(struct mevent_srv_sub * svr)
{
struct send_recv_header header;
switch (svr->seqno)
{
case 0:
if (mevent_has_received(svr->recvPlayerNo))
{
mevent_recv_block(svr->recvPlayerNo, &header, sizeof(header));
svr->recvSize = header.size;
svr->recvCRC = header.crc;
if (svr->recvSize > ME_SEND_BUF_SIZE)
{
sub_8010198();
return FALSE;
}
else if (svr->recvIdent != header.ident)
{
sub_8010198();
return FALSE;
}
else
{
svr->recvCounter = 0;
mevent_reset_recv(svr->recvPlayerNo);
++svr->seqno;
}
}
break;
case 1:
if (mevent_has_received(svr->recvPlayerNo))
{
size_t blocksiz = svr->recvCounter * 252;
if (svr->recvSize - blocksiz <= 252)
{
mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + blocksiz, svr->recvSize - blocksiz);
++svr->recvCounter;
++svr->seqno;
}
else
{
mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + blocksiz, 252);
++svr->recvCounter;
}
mevent_reset_recv(svr->recvPlayerNo);
}
break;
case 2:
if (CalcCRC16WithTable(svr->recvBfr, svr->recvSize) != svr->recvCRC)
{
sub_8010198();
return FALSE;
}
else
{
svr->seqno = 0;
return TRUE;
}
break;
}
return FALSE;
}
static bool32 mevent_send_func(struct mevent_srv_sub * svr)
{
struct send_recv_header header;
switch (svr->seqno)
{
case 0:
if (IsLinkTaskFinished())
{
header.ident = svr->sendIdent;
header.size = svr->sendSize;
header.crc = CalcCRC16WithTable(svr->sendBfr, svr->sendSize);
svr->sendCRC = header.crc;
svr->sendCounter = 0;
SendBlock(0, &header, sizeof(header));
++svr->seqno;
}
break;
case 1:
if (IsLinkTaskFinished())
{
if (mevent_has_received(svr->sendPlayerNo))
{
size_t blocksiz;
mevent_reset_recv(svr->sendPlayerNo);
blocksiz = 252 * svr->sendCounter;
if (svr->sendSize - blocksiz <= 252)
{
SendBlock(0, svr->sendBfr + blocksiz, svr->sendSize - blocksiz);
++svr->sendCounter;
++svr->seqno;
}
else
{
SendBlock(0, svr->sendBfr + blocksiz, 252);
++svr->sendCounter;
}
}
}
break;
case 2:
if (IsLinkTaskFinished())
{
if (CalcCRC16WithTable(svr->sendBfr, svr->sendSize) != svr->sendCRC)
sub_8010198();
else
++svr->seqno;
}
break;
case 3:
if (mevent_has_received(svr->sendPlayerNo))
{
mevent_reset_recv(svr->sendPlayerNo);
svr->seqno = 0;
return TRUE;
}
break;
}
return FALSE;
}

View File

@ -14,9 +14,7 @@ static void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32);
static u32 mevent_srv_ish_exec(struct mevent_srv_ish *);
static void mevent_srv_ish_free_resources(struct mevent_srv_ish *);
extern const u8 gUnknown_082F2598[];
extern const struct mevent_cmd gUnknown_8468B6C[];
extern const struct mevent_cmd gUnknown_8468BCC[];
extern const struct mevent_cmd_ish gUnknown_082F2598[];
void mevent_srv_ish_do_init(u32 arg)
{

View File

@ -218,7 +218,7 @@ int CountTrailingZeroBits(u32 value)
return 0;
}
u16 CalcCRC16(u8 *data, s32 length)
u16 CalcCRC16(const u8 *data, s32 length)
{
u16 i, j;
u16 crc = 0x1121;
@ -237,7 +237,7 @@ u16 CalcCRC16(u8 *data, s32 length)
return ~crc;
}
u16 CalcCRC16WithTable(u8 *data, u32 length)
u16 CalcCRC16WithTable(const u8 *data, u32 length)
{
u16 i;
u16 crc = 0x1121;