summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/macros/event.inc4
-rw-r--r--asm/menu_specialized.s336
-rwxr-xr-xasm/mevent_server.s534
-rwxr-xr-xasm/mevent_server_helpers.s373
-rwxr-xr-xasm/mevent_server_ish.s567
-rwxr-xr-xdata/mevent_server.s292
-rw-r--r--data/mystery_event_msg.s2
-rw-r--r--data/script_cmd_table.inc4
-rw-r--r--data/scripts/cable_club.inc2
-rw-r--r--include/global.h16
-rw-r--r--include/link_rfu.h2
-rw-r--r--include/menu_specialized.h6
-rwxr-xr-xinclude/mevent.h18
-rw-r--r--include/mevent_801BAAC.h4
-rw-r--r--include/mevent_client.h33
-rw-r--r--include/mevent_server.h28
-rw-r--r--include/mevent_server_helpers.h38
-rw-r--r--include/mevent_server_ish.h10
-rw-r--r--include/naming_screen.h2
-rw-r--r--include/script.h6
-rw-r--r--include/strings.h2
-rw-r--r--include/util.h4
-rw-r--r--ld_script.txt11
-rw-r--r--src/battle_script_commands.c8
-rw-r--r--src/link_rfu.c2
-rw-r--r--src/menu_specialized.c441
-rwxr-xr-xsrc/mevent2.c94
-rw-r--r--src/mevent_801BAAC.c8
-rw-r--r--src/mevent_client.c291
-rw-r--r--src/mevent_scripts.c191
-rw-r--r--src/mevent_server.c295
-rw-r--r--src/mevent_server_helpers.c211
-rw-r--r--src/mystery_gift.c56
-rw-r--r--src/naming_screen.c10
-rw-r--r--src/overworld.c2
-rw-r--r--src/pokemon.c2
-rw-r--r--src/scrcmd.c6
-rw-r--r--src/script.c6
-rw-r--r--src/util.c4
-rw-r--r--sym_ewram.txt17
40 files changed, 1676 insertions, 2262 deletions
diff --git a/asm/macros/event.inc b/asm/macros/event.inc
index 8b3466fe7..e00bdb600 100644
--- a/asm/macros/event.inc
+++ b/asm/macros/event.inc
@@ -77,7 +77,7 @@
.endm
@ Executes a script stored in a default RAM location.
- .macro gotoram
+ .macro returnram
.byte 0x0c
.endm
@@ -1440,7 +1440,7 @@
.endm
@ Depending on factors I haven't managed to understand yet, this command may cause script execution to jump to the offset specified by the pointer at 0x020375C0.
- .macro execram
+ .macro gotoram
.byte 0xcf
.endm
diff --git a/asm/menu_specialized.s b/asm/menu_specialized.s
deleted file mode 100644
index 36db0f865..000000000
--- a/asm/menu_specialized.s
+++ /dev/null
@@ -1,336 +0,0 @@
-
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
-
-
- thumb_func_start DrawLevelUpWindowPg1
-DrawLevelUpWindowPg1: @ 81D3640
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- mov r8, r0
- adds r6, r1, 0
- adds r5, r2, 0
- adds r4, r3, 0
- ldr r3, [sp, 0x4C]
- ldr r0, [sp, 0x50]
- mov r9, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, r4, 4
- orrs r1, r4
- lsls r1, 24
- lsrs r1, 24
- str r3, [sp, 0x28]
- bl FillWindowPixelBuffer
- add r2, sp, 0xC
- ldrh r0, [r5]
- ldrh r1, [r6]
- subs r0, r1
- strh r0, [r2]
- ldrh r0, [r5, 0x2]
- ldrh r1, [r6, 0x2]
- subs r0, r1
- strh r0, [r2, 0x2]
- ldrh r0, [r5, 0x4]
- ldrh r1, [r6, 0x4]
- subs r0, r1
- strh r0, [r2, 0x4]
- ldrh r0, [r5, 0x8]
- ldrh r1, [r6, 0x8]
- subs r0, r1
- strh r0, [r2, 0x6]
- ldrh r0, [r5, 0xA]
- ldrh r1, [r6, 0xA]
- subs r0, r1
- strh r0, [r2, 0x8]
- ldrh r0, [r5, 0x6]
- ldrh r1, [r6, 0x6]
- subs r0, r1
- strh r0, [r2, 0xA]
- add r0, sp, 0x24
- strb r4, [r0]
- ldr r3, [sp, 0x28]
- strb r3, [r0, 0x1]
- mov r1, r9
- strb r1, [r0, 0x2]
- movs r7, 0
- mov r10, r0
- movs r0, 0x1
- negs r0, r0
- mov r9, r0
- add r6, sp, 0x18
-_081D36CA:
- lsls r0, r7, 4
- subs r0, r7
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r10
- str r1, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- ldr r1, =gUnknown_08625B54
- lsls r0, r7, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [sp, 0x8]
- mov r0, r8
- movs r1, 0x1
- movs r2, 0
- adds r3, r5, 0
- bl AddTextPrinterParameterized3
- lsls r0, r7, 1
- mov r4, sp
- adds r4, r0
- adds r4, 0xC
- movs r1, 0
- ldrsh r0, [r4, r1]
- ldr r1, =gText_Dash
- cmp r0, 0
- blt _081D3704
- ldr r1, =gText_UnkCtrlF904
-_081D3704:
- adds r0, r6, 0
- bl StringCopy
- mov r0, r10
- str r0, [sp]
- mov r1, r9
- str r1, [sp, 0x4]
- str r6, [sp, 0x8]
- mov r0, r8
- movs r1, 0x1
- movs r2, 0x38
- adds r3, r5, 0
- bl AddTextPrinterParameterized3
- movs r0, 0
- ldrsh r1, [r4, r0]
- adds r0, r1, 0
- cmp r1, 0
- bge _081D372C
- negs r0, r1
-_081D372C:
- movs r4, 0xC
- cmp r0, 0x9
- bgt _081D3734
- movs r4, 0x12
-_081D3734:
- cmp r1, 0
- bge _081D373A
- negs r1, r1
-_081D373A:
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r2, r4, 0
- adds r2, 0x38
- mov r1, r10
- str r1, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- mov r0, r8
- movs r1, 0x1
- adds r3, r5, 0
- bl AddTextPrinterParameterized3
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x5
- bls _081D36CA
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DrawLevelUpWindowPg1
-
- thumb_func_start DrawLevelUpWindowPg2
-DrawLevelUpWindowPg2: @ 81D3784
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- mov r8, r0
- adds r5, r1, 0
- adds r4, r2, 0
- adds r6, r3, 0
- ldr r2, [sp, 0x4C]
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, r4, 4
- orrs r1, r4
- lsls r1, 24
- lsrs r1, 24
- str r2, [sp, 0x28]
- bl FillWindowPixelBuffer
- add r1, sp, 0xC
- ldrh r0, [r5]
- strh r0, [r1]
- ldrh r0, [r5, 0x2]
- strh r0, [r1, 0x2]
- ldrh r0, [r5, 0x4]
- strh r0, [r1, 0x4]
- ldrh r0, [r5, 0x8]
- strh r0, [r1, 0x6]
- ldrh r0, [r5, 0xA]
- strh r0, [r1, 0x8]
- ldrh r0, [r5, 0x6]
- strh r0, [r1, 0xA]
- add r0, sp, 0x24
- strb r4, [r0]
- strb r6, [r0, 0x1]
- ldr r2, [sp, 0x28]
- strb r2, [r0, 0x2]
- movs r6, 0
- add r1, sp, 0x18
- mov r9, r1
- mov r7, r8
- mov r10, r0
- movs r2, 0x1
- negs r2, r2
- mov r8, r2
-_081D37EE:
- lsls r1, r6, 1
- mov r0, sp
- adds r0, r1
- adds r0, 0xC
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r4, 0x3
- cmp r0, 0x63
- bgt _081D3808
- movs r4, 0x1
- cmp r0, 0x9
- ble _081D3808
- movs r4, 0x2
-_081D3808:
- mov r0, sp
- adds r0, r1
- adds r0, 0xC
- movs r2, 0
- ldrsh r1, [r0, r2]
- mov r0, r9
- movs r2, 0
- adds r3, r4, 0
- bl ConvertIntToDecimalStringN
- movs r0, 0x4
- subs r0, r4
- lsls r4, r0, 1
- adds r4, r0
- lsls r4, 17
- lsrs r4, 16
- lsls r5, r6, 4
- subs r5, r6
- lsls r5, 24
- lsrs r5, 24
- mov r0, r10
- str r0, [sp]
- mov r1, r8
- str r1, [sp, 0x4]
- ldr r1, =gUnknown_08625B54
- lsls r0, r6, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [sp, 0x8]
- adds r0, r7, 0
- movs r1, 0x1
- movs r2, 0
- adds r3, r5, 0
- bl AddTextPrinterParameterized3
- adds r4, 0x38
- lsls r4, 24
- lsrs r4, 24
- mov r2, r10
- str r2, [sp]
- mov r0, r8
- str r0, [sp, 0x4]
- mov r1, r9
- str r1, [sp, 0x8]
- adds r0, r7, 0
- movs r1, 0x1
- adds r2, r4, 0
- adds r3, r5, 0
- bl AddTextPrinterParameterized3
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x5
- bls _081D37EE
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DrawLevelUpWindowPg2
-
- thumb_func_start GetMonLevelUpWindowStats
-GetMonLevelUpWindowStats: @ 81D388C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r1, 0x3A @ MON_DATA_MAX_HP
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x3B @ MON_DATA_ATK
- bl GetMonData
- strh r0, [r5, 0x2]
- adds r0, r4, 0
- movs r1, 0x3C @ MON_DATA_DEF
- bl GetMonData
- strh r0, [r5, 0x4]
- adds r0, r4, 0
- movs r1, 0x3D @ MON_DATA_SPEED
- bl GetMonData
- strh r0, [r5, 0x6]
- adds r0, r4, 0
- movs r1, 0x3E @ MON_DATA_SPATK
- bl GetMonData
- strh r0, [r5, 0x8]
- adds r0, r4, 0
- movs r1, 0x3F @ MON_DATA_SPDEF
- bl GetMonData
- strh r0, [r5, 0xA]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end GetMonLevelUpWindowStats
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/mevent_server.s b/asm/mevent_server.s
deleted file mode 100755
index 8c76e2d0d..000000000
--- a/asm/mevent_server.s
+++ /dev/null
@@ -1,534 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start mevent_srv_init_wnews
-mevent_srv_init_wnews: @ 801D07C
- push {r4,lr}
- ldr r4, =gUnknown_02022C7C
- movs r0, 0x60
- bl AllocZeroed
- str r0, [r4]
- ldr r1, =gUnknown_082F298C
- movs r2, 0
- movs r3, 0x1
- bl mevent_srv_init_common
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end mevent_srv_init_wnews
-
- thumb_func_start mevent_srv_new_wcard
-mevent_srv_new_wcard: @ 801D0A0
- push {r4,lr}
- ldr r4, =gUnknown_02022C7C
- movs r0, 0x60
- bl AllocZeroed
- str r0, [r4]
- ldr r1, =gUnknown_082F29EC
- movs r2, 0
- movs r3, 0x1
- bl mevent_srv_init_common
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end mevent_srv_new_wcard
-
- thumb_func_start mevent_srv_common_do_exec
-mevent_srv_common_do_exec: @ 801D0C4
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r4, =gUnknown_02022C7C
- ldr r0, [r4]
- cmp r0, 0
- bne _0801D0D8
- movs r0, 0x3
- b _0801D0F8
- .pool
-_0801D0D8:
- bl mevent_dispatch_08145600
- adds r5, r0, 0
- cmp r5, 0x3
- bne _0801D0F6
- ldr r0, [r4]
- ldr r1, [r0, 0x4]
- strh r1, [r6]
- bl mevent_srv_free_resources
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
-_0801D0F6:
- adds r0, r5, 0
-_0801D0F8:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end mevent_srv_common_do_exec
-
- thumb_func_start mevent_srv_init_common
-mevent_srv_init_common: @ 801D100
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- adds r4, r0, 0
- adds r6, r1, 0
- mov r8, r2
- mov r9, r3
- movs r5, 0
- str r5, [r4]
- str r5, [r4, 0x8]
- movs r0, 0xA6
- lsls r0, 1
- bl AllocZeroed
- str r0, [r4, 0x18]
- movs r0, 0xDE
- lsls r0, 1
- bl AllocZeroed
- str r0, [r4, 0x1C]
- movs r0, 0x80
- lsls r0, 3
- bl AllocZeroed
- str r0, [r4, 0x14]
- movs r0, 0x64
- bl AllocZeroed
- str r0, [r4, 0x20]
- str r6, [r4, 0x10]
- str r5, [r4, 0xC]
- adds r4, 0x38
- adds r0, r4, 0
- mov r1, r8
- mov r2, r9
- bl sub_801D8D8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end mevent_srv_init_common
-
- thumb_func_start mevent_srv_free_resources
-mevent_srv_free_resources: @ 801D158
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x18]
- bl Free
- ldr r0, [r4, 0x1C]
- bl Free
- ldr r0, [r4, 0x14]
- bl Free
- ldr r0, [r4, 0x20]
- bl Free
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end mevent_srv_free_resources
-
- thumb_func_start mevent_srv_814501C
-mevent_srv_814501C: @ 801D17C
- push {lr}
- adds r0, 0x38
- bl sub_801D904
- pop {r0}
- bx r0
- thumb_func_end mevent_srv_814501C
-
- thumb_func_start sub_801D188
-sub_801D188: @ 801D188
- push {lr}
- cmp r0, 0
- bne _0801D190
- adds r0, r1, 0
-_0801D190:
- pop {r1}
- bx r1
- thumb_func_end sub_801D188
-
- thumb_func_start sub_801D194
-sub_801D194: @ 801D194
- push {lr}
- cmp r1, r0
- bcs _0801D19E
- movs r0, 0
- b _0801D1A8
-_0801D19E:
- cmp r1, r0
- beq _0801D1A6
- movs r0, 0x2
- b _0801D1A8
-_0801D1A6:
- movs r0, 0x1
-_0801D1A8:
- pop {r1}
- bx r1
- thumb_func_end sub_801D194
-
- thumb_func_start sub_801D1AC
-sub_801D1AC: @ 801D1AC
- movs r1, 0x4
- str r1, [r0, 0x8]
- movs r0, 0
- bx lr
- thumb_func_end sub_801D1AC
-
- thumb_func_start sub_801D1B4
-sub_801D1B4: @ 801D1B4
- movs r0, 0x3
- bx lr
- thumb_func_end sub_801D1B4
-
- thumb_func_start sub_801D1B8
-sub_801D1B8: @ 801D1B8
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x38
- bl sub_801D8C0
- cmp r0, 0
- beq _0801D1CA
- movs r0, 0x4
- str r0, [r4, 0x8]
-_0801D1CA:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_801D1B8
-
- thumb_func_start sub_801D1D4
-sub_801D1D4: @ 801D1D4
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x38
- bl sub_801D8CC
- cmp r0, 0
- beq _0801D1E6
- movs r0, 0x4
- str r0, [r4, 0x8]
-_0801D1E6:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_801D1D4
-
- thumb_func_start sub_801D1F0
-sub_801D1F0: @ 801D1F0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0xC]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, [r5, 0x10]
- adds r3, r2, r1
- adds r0, 0x1
- str r0, [r5, 0xC]
- ldr r0, [r3]
- cmp r0, 0x1E
- bls _0801D20C
- b _0801D464
-_0801D20C:
- lsls r0, 2
- ldr r1, =_0801D21C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0801D21C:
- .4byte _0801D298
- .4byte _0801D2A2
- .4byte _0801D2A8
- .4byte _0801D2E2
- .4byte _0801D2D8
- .4byte _0801D2BA
- .4byte _0801D2C6
- .4byte _0801D2EC
- .4byte _0801D300
- .4byte _0801D308
- .4byte _0801D31E
- .4byte _0801D32E
- .4byte _0801D33A
- .4byte _0801D360
- .4byte _0801D348
- .4byte _0801D390
- .4byte _0801D378
- .4byte _0801D3DC
- .4byte _0801D3A8
- .4byte _0801D3C0
- .4byte _0801D3CE
- .4byte _0801D406
- .4byte _0801D3EA
- .4byte _0801D3F8
- .4byte _0801D40E
- .4byte _0801D418
- .4byte _0801D422
- .4byte _0801D43C
- .4byte _0801D450
- .4byte _0801D458
- .4byte _0801D2CC
-_0801D298:
- movs r0, 0x1
- str r0, [r5, 0x8]
- ldr r0, [r3, 0x4]
- str r0, [r5, 0x4]
- b _0801D464
-_0801D2A2:
- movs r0, 0x3
- str r0, [r5, 0x8]
- b _0801D464
-_0801D2A8:
- adds r0, r5, 0
- adds r0, 0x38
- ldr r1, [r3, 0x4]
- ldr r2, [r5, 0x14]
- bl sub_801D928
- movs r0, 0x2
- str r0, [r5, 0x8]
- b _0801D464
-_0801D2BA:
- ldr r0, [r5, 0x20]
- ldr r1, [r5, 0x14]
- movs r2, 0x64
- bl memcpy
- b _0801D464
-_0801D2C6:
- ldr r0, [r5, 0x20]
- movs r1, 0
- b _0801D2D0
-_0801D2CC:
- ldr r0, [r5, 0x20]
- movs r1, 0x1
-_0801D2D0:
- bl sub_801B6A0
- str r0, [r5, 0x4]
- b _0801D464
-_0801D2D8:
- ldr r1, [r5, 0x4]
- ldr r0, [r3, 0x4]
- cmp r1, r0
- beq _0801D2E2
- b _0801D464
-_0801D2E2:
- movs r0, 0
- str r0, [r5, 0xC]
- ldr r0, [r3, 0x8]
- str r0, [r5, 0x10]
- b _0801D464
-_0801D2EC:
- ldr r0, [r3, 0x8]
- ldr r1, [r5, 0x18]
- bl sub_801D188
- adds r2, r0, 0
- ldr r1, [r5, 0x20]
- bl sub_801B6EC
- str r0, [r5, 0x4]
- b _0801D464
-_0801D300:
- ldr r0, [r5, 0x14]
- ldr r0, [r0]
- str r0, [r5, 0x4]
- b _0801D464
-_0801D308:
- ldr r0, [r3, 0x8]
- adds r1, r5, 0
- adds r1, 0x34
- bl sub_801D188
- adds r2, r0, 0
- ldr r1, [r5, 0x20]
- bl sub_801B708
- str r0, [r5, 0x4]
- b _0801D464
-_0801D31E:
- ldr r0, [r5, 0x20]
- ldr r1, [r3, 0x4]
- bl sub_801B784
- lsls r0, 16
- lsrs r0, 16
- str r0, [r5, 0x4]
- b _0801D464
-_0801D32E:
- ldr r0, [r5, 0x20]
- ldr r1, [r3, 0x8]
- bl sub_801B748
- str r0, [r5, 0x4]
- b _0801D464
-_0801D33A:
- ldr r0, [r3, 0x8]
- ldr r1, [r5, 0x14]
- ldr r1, [r1]
- bl sub_801D194
- str r0, [r5, 0x4]
- b _0801D464
-_0801D348:
- ldr r0, [r3, 0x8]
- ldr r1, [r5, 0x1C]
- bl sub_801D188
- adds r2, r0, 0
- movs r3, 0xDE
- lsls r3, 1
- adds r0, r5, 0
- movs r1, 0x17
- bl mevent_srv_814501C
- b _0801D464
-_0801D360:
- ldr r0, [r3, 0x8]
- ldr r1, [r5, 0x18]
- bl sub_801D188
- adds r2, r0, 0
- movs r3, 0xA6
- lsls r3, 1
- adds r0, r5, 0
- movs r1, 0x16
- bl mevent_srv_814501C
- b _0801D464
-_0801D378:
- ldr r0, [r3, 0x8]
- adds r1, r5, 0
- adds r1, 0x34
- bl sub_801D188
- adds r2, r0, 0
- adds r0, r5, 0
- movs r1, 0x18
- movs r3, 0x4
- bl mevent_srv_814501C
- b _0801D464
-_0801D390:
- ldr r2, [r3, 0x8]
- cmp r2, 0
- bne _0801D39C
- ldr r2, [r5, 0x24]
- ldr r3, [r5, 0x28]
- b _0801D39E
-_0801D39C:
- ldr r3, [r3, 0x4]
-_0801D39E:
- adds r0, r5, 0
- movs r1, 0x19
- bl mevent_srv_814501C
- b _0801D464
-_0801D3A8:
- ldr r2, [r3, 0x8]
- cmp r2, 0
- bne _0801D3B4
- ldr r2, [r5, 0x2C]
- ldr r3, [r5, 0x30]
- b _0801D3B6
-_0801D3B4:
- ldr r3, [r3, 0x4]
-_0801D3B6:
- adds r0, r5, 0
- movs r1, 0x10
- bl mevent_srv_814501C
- b _0801D464
-_0801D3C0:
- ldr r2, [r3, 0x8]
- adds r0, r5, 0
- movs r1, 0x1A
- movs r3, 0xBC
- bl mevent_srv_814501C
- b _0801D464
-_0801D3CE:
- ldr r2, [r3, 0x8]
- ldr r3, [r3, 0x4]
- adds r0, r5, 0
- movs r1, 0x15
- bl mevent_srv_814501C
- b _0801D464
-_0801D3DC:
- ldr r2, [r3, 0x8]
- ldr r3, [r3, 0x4]
- adds r0, r5, 0
- movs r1, 0x1C
- bl mevent_srv_814501C
- b _0801D464
-_0801D3EA:
- ldr r0, [r5, 0x18]
- ldr r1, [r3, 0x8]
- movs r2, 0xA6
- lsls r2, 1
- bl memcpy
- b _0801D464
-_0801D3F8:
- ldr r0, [r5, 0x1C]
- ldr r1, [r3, 0x8]
- movs r2, 0xDE
- lsls r2, 1
- bl memcpy
- b _0801D464
-_0801D406:
- ldr r0, [r3, 0x8]
- ldr r0, [r0]
- str r0, [r5, 0x34]
- b _0801D464
-_0801D40E:
- ldr r0, [r3, 0x8]
- str r0, [r5, 0x24]
- ldr r0, [r3, 0x4]
- str r0, [r5, 0x28]
- b _0801D464
-_0801D418:
- ldr r0, [r3, 0x8]
- str r0, [r5, 0x2C]
- ldr r0, [r3, 0x4]
- str r0, [r5, 0x30]
- b _0801D464
-_0801D422:
- ldr r4, [r5, 0x18]
- bl sav1_get_mevent_buffer_1
- adds r1, r0, 0
- movs r2, 0xA6
- lsls r2, 1
- adds r0, r4, 0
- bl memcpy
- ldr r0, [r5, 0x18]
- bl sub_801B3C0
- b _0801D464
-_0801D43C:
- ldr r4, [r5, 0x1C]
- bl sav1_get_mevent_buffer_0
- adds r1, r0, 0
- movs r2, 0xDE
- lsls r2, 1
- adds r0, r4, 0
- bl memcpy
- b _0801D464
-_0801D450:
- bl sub_8099244
- str r0, [r5, 0x24]
- b _0801D464
-_0801D458:
- ldr r2, [r3, 0x8]
- ldr r3, [r3, 0x4]
- adds r0, r5, 0
- movs r1, 0x1B
- bl mevent_srv_814501C
-_0801D464:
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_801D1F0
-
- thumb_func_start mevent_dispatch_08145600
-mevent_dispatch_08145600: @ 801D46C
- push {lr}
- ldr r2, =gUnknown_082F2548
- ldr r1, [r0, 0x8]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {r1}
- bx r1
- .pool
- thumb_func_end mevent_dispatch_08145600
-
- .align 2, 0 @ don't pad with nop
diff --git a/asm/mevent_server_helpers.s b/asm/mevent_server_helpers.s
deleted file mode 100755
index f92f1e2c7..000000000
--- a/asm/mevent_server_helpers.s
+++ /dev/null
@@ -1,373 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_801D8C0
-sub_801D8C0: @ 801D8C0
- push {lr}
- ldr r1, [r0, 0x20]
- bl _call_via_r1
- pop {r1}
- bx r1
- thumb_func_end sub_801D8C0
-
- thumb_func_start sub_801D8CC
-sub_801D8CC: @ 801D8CC
- push {lr}
- ldr r1, [r0, 0x24]
- bl _call_via_r1
- pop {r1}
- bx r1
- thumb_func_end sub_801D8CC
-
- thumb_func_start sub_801D8D8
-sub_801D8D8: @ 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 sub_801D8D8
-
- thumb_func_start sub_801D904
-sub_801D904: @ 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 sub_801D904
-
- thumb_func_start sub_801D928
-sub_801D928: @ 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 sub_801D928
-
- 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
diff --git a/asm/mevent_server_ish.s b/asm/mevent_server_ish.s
deleted file mode 100755
index f61666982..000000000
--- a/asm/mevent_server_ish.s
+++ /dev/null
@@ -1,567 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start mevent_srv_ish_do_init
-mevent_srv_ish_do_init: @ 801D484
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, =s_mevent_srv_ish_ptr
- movs r0, 0x50
- bl AllocZeroed
- str r0, [r4]
- movs r1, 0x1
- movs r2, 0
- bl mevent_srv_ish_init
- ldr r0, [r4]
- str r5, [r0, 0x4C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end mevent_srv_ish_do_init
-
- thumb_func_start mevent_srv_ish_do_exec
-mevent_srv_ish_do_exec: @ 801D4A8
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r4, =s_mevent_srv_ish_ptr
- ldr r0, [r4]
- cmp r0, 0
- bne _0801D4BC
- movs r0, 0x6
- b _0801D4DC
- .pool
-_0801D4BC:
- bl mevent_srv_ish_exec
- adds r5, r0, 0
- cmp r5, 0x6
- bne _0801D4DA
- ldr r0, [r4]
- ldr r1, [r0, 0x4]
- strh r1, [r6]
- bl mevent_srv_ish_free_resources
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
-_0801D4DA:
- adds r0, r5, 0
-_0801D4DC:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end mevent_srv_ish_do_exec
-
- thumb_func_start mevent_srv_ish_inc_flag
-mevent_srv_ish_inc_flag: @ 801D4E4
- ldr r0, =s_mevent_srv_ish_ptr
- ldr r1, [r0]
- ldr r0, [r1, 0xC]
- adds r0, 0x1
- str r0, [r1, 0xC]
- bx lr
- .pool
- thumb_func_end mevent_srv_ish_inc_flag
-
- thumb_func_start mevent_srv_ish_get_buffer
-mevent_srv_ish_get_buffer: @ 801D4F4
- ldr r0, =s_mevent_srv_ish_ptr
- ldr r0, [r0]
- ldr r0, [r0, 0x20]
- bx lr
- .pool
- thumb_func_end mevent_srv_ish_get_buffer
-
- thumb_func_start mevent_srv_ish_set_param
-mevent_srv_ish_set_param: @ 801D500
- ldr r1, =s_mevent_srv_ish_ptr
- ldr r1, [r1]
- str r0, [r1, 0x4]
- bx lr
- .pool
- thumb_func_end mevent_srv_ish_set_param
-
- thumb_func_start mevent_srv_ish_init
-mevent_srv_ish_init: @ 801D50C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- adds r6, r1, 0
- mov r8, r2
- movs r0, 0
- str r0, [r4]
- str r0, [r4, 0x8]
- str r0, [r4, 0xC]
- movs r5, 0x80
- lsls r5, 3
- adds r0, r5, 0
- bl AllocZeroed
- str r0, [r4, 0x14]
- adds r0, r5, 0
- bl AllocZeroed
- str r0, [r4, 0x18]
- adds r0, r5, 0
- bl AllocZeroed
- str r0, [r4, 0x1C]
- movs r0, 0x40
- bl AllocZeroed
- str r0, [r4, 0x20]
- adds r4, 0x24
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, r8
- bl sub_801D8D8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end mevent_srv_ish_init
-
- thumb_func_start mevent_srv_ish_free_resources
-mevent_srv_ish_free_resources: @ 801D55C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x14]
- bl Free
- ldr r0, [r4, 0x18]
- bl Free
- ldr r0, [r4, 0x1C]
- bl Free
- ldr r0, [r4, 0x20]
- bl Free
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end mevent_srv_ish_free_resources
-
- thumb_func_start mevent_srv_ish_jmp_buffer
-mevent_srv_ish_jmp_buffer: @ 801D580
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x1C]
- ldr r1, [r4, 0x18]
- movs r2, 0x80
- lsls r2, 3
- bl memcpy
- movs r0, 0
- str r0, [r4, 0x10]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end mevent_srv_ish_jmp_buffer
-
- thumb_func_start sub_801D59C
-sub_801D59C: @ 801D59C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r6, r1, 0
- adds r5, r2, 0
- movs r0, 0
- str r0, [sp]
- ldr r1, [r4, 0x14]
- ldr r2, =0x05000100
- mov r0, sp
- bl CpuSet
- ldr r2, [r4, 0x14]
- str r5, [r2]
- adds r4, 0x24
- adds r0, r4, 0
- adds r1, r6, 0
- movs r3, 0x4
- bl sub_801D904
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_801D59C
-
- thumb_func_start sub_801D5D0
-sub_801D5D0: @ 801D5D0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x1C]
- ldr r1, =gUnknown_082F2598
- movs r2, 0x80
- lsls r2, 3
- bl memcpy
- movs r1, 0
- str r1, [r4, 0x10]
- movs r0, 0x4
- str r0, [r4, 0x8]
- str r1, [r4, 0xC]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_801D5D0
-
- thumb_func_start sub_801D5F8
-sub_801D5F8: @ 801D5F8
- movs r0, 0x6
- bx lr
- thumb_func_end sub_801D5F8
-
- thumb_func_start sub_801D5FC
-sub_801D5FC: @ 801D5FC
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x24
- bl sub_801D8C0
- cmp r0, 0
- beq _0801D612
- movs r0, 0x4
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
-_0801D612:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_801D5FC
-
- thumb_func_start sub_801D61C
-sub_801D61C: @ 801D61C
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x24
- bl sub_801D8CC
- cmp r0, 0
- beq _0801D632
- movs r0, 0x4
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
-_0801D632:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_801D61C
-
- thumb_func_start sub_801D63C
-sub_801D63C: @ 801D63C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x10]
- lsls r2, r0, 3
- ldr r1, [r4, 0x1C]
- adds r2, r1, r2
- adds r0, 0x1
- str r0, [r4, 0x10]
- ldr r0, [r2]
- cmp r0, 0x15
- bls _0801D654
- b _0801D804
-_0801D654:
- lsls r0, 2
- ldr r1, =_0801D664
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0801D664:
- .4byte _0801D804
- .4byte _0801D6BC
- .4byte _0801D6C4
- .4byte _0801D6D4
- .4byte _0801D70E
- .4byte _0801D716
- .4byte _0801D6FE
- .4byte _0801D708
- .4byte _0801D764
- .4byte _0801D790
- .4byte _0801D788
- .4byte _0801D72C
- .4byte _0801D742
- .4byte _0801D758
- .4byte _0801D77C
- .4byte _0801D7B8
- .4byte _0801D7BC
- .4byte _0801D7C4
- .4byte _0801D7D0
- .4byte _0801D6EA
- .4byte _0801D6D8
- .4byte _0801D7F0
-_0801D6BC:
- ldr r0, [r2, 0x4]
- str r0, [r4, 0x4]
- movs r0, 0x1
- b _0801D7FE
-_0801D6C4:
- adds r0, r4, 0
- adds r0, 0x24
- ldr r1, [r2, 0x4]
- ldr r2, [r4, 0x18]
- bl sub_801D928
- movs r0, 0x2
- b _0801D7FE
-_0801D6D4:
- movs r0, 0x3
- b _0801D7FE
-_0801D6D8:
- adds r0, r4, 0
- adds r0, 0x24
- ldr r2, [r4, 0x14]
- movs r1, 0x14
- movs r3, 0
- bl sub_801D904
- movs r0, 0x3
- b _0801D7FE
-_0801D6EA:
- ldrb r0, [r2, 0x4]
- bl GetGameStat
- adds r2, r0, 0
- adds r0, r4, 0
- movs r1, 0x12
- bl sub_801D59C
- movs r0, 0x3
- b _0801D7FE
-_0801D6FE:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- beq _0801D706
- b _0801D804
-_0801D706:
- b _0801D70E
-_0801D708:
- ldr r0, [r4, 0x4]
- cmp r0, 0x1
- bne _0801D804
-_0801D70E:
- adds r0, r4, 0
- bl mevent_srv_ish_jmp_buffer
- b _0801D804
-_0801D716:
- ldr r0, [r4, 0x20]
- ldr r1, [r4, 0x18]
- movs r2, 0x40
- bl memcpy
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x2
- b _0801D806
-_0801D72C:
- ldr r0, [r4, 0x20]
- ldr r1, [r4, 0x18]
- movs r2, 0x40
- bl memcpy
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x3
- b _0801D806
-_0801D742:
- ldr r0, [r4, 0x20]
- ldr r1, [r4, 0x18]
- movs r2, 0x40
- bl memcpy
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x5
- b _0801D806
-_0801D758:
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x4
- b _0801D806
-_0801D764:
- ldr r0, [r4, 0x14]
- ldr r1, [r4, 0x4C]
- bl sub_801B580
- adds r0, r4, 0
- adds r0, 0x24
- ldr r2, [r4, 0x14]
- movs r1, 0x11
- movs r3, 0x64
- bl sub_801D904
- b _0801D804
-_0801D77C:
- ldr r2, [r4, 0x4]
- adds r0, r4, 0
- movs r1, 0x13
- bl sub_801D59C
- b _0801D804
-_0801D788:
- ldr r0, [r4, 0x18]
- bl sub_801B21C
- b _0801D804
-_0801D790:
- ldr r0, [r4, 0x18]
- bl sub_801B1A4
- cmp r0, 0
- bne _0801D7AC
- ldr r0, [r4, 0x18]
- bl sub_801B078
- adds r0, r4, 0
- movs r1, 0x13
- movs r2, 0
- bl sub_801D59C
- b _0801D804
-_0801D7AC:
- adds r0, r4, 0
- movs r1, 0x13
- movs r2, 0x1
- bl sub_801D59C
- b _0801D804
-_0801D7B8:
- movs r0, 0x6
- b _0801D7FE
-_0801D7BC:
- ldr r0, [r4, 0x18]
- bl sub_801B508
- b _0801D804
-_0801D7C4:
- ldr r0, [r4, 0x18]
- movs r1, 0xFA
- lsls r1, 2
- bl sub_80992A0
- b _0801D804
-_0801D7D0:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, =0x00000bec
- adds r0, r1
- ldr r1, [r4, 0x18]
- movs r2, 0xBC
- bl memcpy
- bl ValidateEReaderTrainer
- b _0801D804
- .pool
-_0801D7F0:
- ldr r0, =gDecompressionBuffer
- ldr r1, [r4, 0x18]
- movs r2, 0x80
- lsls r2, 3
- bl memcpy
- movs r0, 0x7
-_0801D7FE:
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
-_0801D804:
- movs r0, 0x1
-_0801D806:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_801D63C
-
- thumb_func_start sub_801D810
-sub_801D810: @ 801D810
- push {lr}
- adds r1, r0, 0
- ldr r0, [r1, 0xC]
- cmp r0, 0
- beq _0801D822
- movs r0, 0x4
- str r0, [r1, 0x8]
- movs r0, 0
- str r0, [r1, 0xC]
-_0801D822:
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_801D810
-
- thumb_func_start sub_801D828
-sub_801D828: @ 801D828
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0xC]
- cmp r0, 0
- beq _0801D838
- cmp r0, 0x1
- beq _0801D846
- b _0801D858
-_0801D838:
- ldr r0, [r4, 0x18]
- bl sub_8153870
- ldr r0, [r4, 0xC]
- adds r0, 0x1
- str r0, [r4, 0xC]
- b _0801D858
-_0801D846:
- adds r0, r4, 0x4
- bl sub_8153884
- adds r1, r0, 0
- cmp r1, 0
- bne _0801D858
- movs r0, 0x4
- str r0, [r4, 0x8]
- str r1, [r4, 0xC]
-_0801D858:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_801D828
-
- thumb_func_start sub_801D860
-sub_801D860: @ 801D860
- push {r4,lr}
- adds r4, r0, 0
- ldr r3, =gDecompressionBuffer
- adds r0, r4, 0x4
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- ldr r2, =gSaveBlock1Ptr
- ldr r2, [r2]
- bl _call_via_r3
- cmp r0, 0x1
- bne _0801D880
- movs r0, 0x4
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
-_0801D880:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_801D860
-
- thumb_func_start mevent_srv_ish_exec
-mevent_srv_ish_exec: @ 801D894
- push {r4,r5,lr}
- sub sp, 0x20
- mov r2, sp
- ldr r1, =gUnknown_082F255C
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3,r4}
- stm r2!, {r3,r4}
- ldr r1, [r0, 0x8]
- lsls r1, 2
- add r1, sp
- ldr r1, [r1]
- bl _call_via_r1
- add sp, 0x20
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end mevent_srv_ish_exec
-
- .align 2, 0 @ don't pad with nop
diff --git a/data/mevent_server.s b/data/mevent_server.s
deleted file mode 100755
index 02fe9476e..000000000
--- a/data/mevent_server.s
+++ /dev/null
@@ -1,292 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_082F2548:: @ 82F2548
- .4byte sub_801D1AC
- .4byte sub_801D1B4
- .4byte sub_801D1B8
- .4byte sub_801D1D4
- .4byte sub_801D1F0
-
- .align 2
-gUnknown_082F255C:: @ 82F255C
- .4byte sub_801D5D0
- .4byte sub_801D5F8
- .4byte sub_801D5FC
- .4byte sub_801D61C
- .4byte sub_801D63C
- .4byte sub_801D810
- .4byte sub_801D828
- .4byte sub_801D860
-
- .align 2
-gText_CanceledReadingCard:: @ 82F257C
- .string "Canceled reading\nthe Card.$"
-
- .align 2
-gUnknown_082F2598:: @ 82F2598
- .byte 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
- .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .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
-
- .align 2
-gUnknown_082F25C8:: @ 82F25C8
- .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_082F25D8:: @ 82F25D8
- .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_082F25E8:: @ 82F25E8
- .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .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
-
- .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
-
- .align 2
-gUnknown_082F2650:: @ 82F2650
- .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_082F2660:: @ 82F2660
- .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
-
- .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
-
- .align 2
-gUnknown_082F2698:: @ 82F2698
- .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_082F26A8:: @ 82F26A8
- .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
-
- .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
-
- .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
-
- .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
-
- .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
-
- .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
-
- .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
-
- .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
-
- .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
-
- .align 2
-gUnknown_082F298C:: @ 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
-
- .align 2
-gUnknown_082F29EC:: @ 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
diff --git a/data/mystery_event_msg.s b/data/mystery_event_msg.s
index 24a075181..dd1f8e681 100644
--- a/data/mystery_event_msg.s
+++ b/data/mystery_event_msg.s
@@ -36,7 +36,7 @@ MysteryEventScript_SurfPichu:: @ 8674D3D
setvaddress MysteryEventScript_SurfPichu
checkflag FLAG_MYSTERY_EVENT_DONE
vgoto_if 0, SurfPichu_GiveIfPossible
- gotoram
+ returnram
SurfPichu_GiveIfPossible: @ 8674D4C
specialvar VAR_EVENT_PICHU_SLOT, CalculatePlayerPartyCount
diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc
index 39864b2a8..e9a14437a 100644
--- a/data/script_cmd_table.inc
+++ b/data/script_cmd_table.inc
@@ -12,7 +12,7 @@ gScriptCmdTable:: @ 81DB67C
.4byte ScrCmd_callstd
.4byte ScrCmd_gotostd_if
.4byte ScrCmd_callstd_if
- .4byte ScrCmd_gotoram
+ .4byte ScrCmd_returnram
.4byte ScrCmd_killscript
.4byte ScrCmd_setmysteryeventstatus
.4byte ScrCmd_loadword
@@ -207,7 +207,7 @@ gScriptCmdTable:: @ 81DB67C
.4byte ScrCmd_nop1
.4byte ScrCmd_setmonobedient
.4byte ScrCmd_checkmonobedience
- .4byte ScrCmd_cmdCF
+ .4byte ScrCmd_gotoram
.4byte ScrCmd_nop1
.4byte ScrCmd_warpD1
.4byte ScrCmd_setmonmetlocation
diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc
index e0b289899..c755493dc 100644
--- a/data/scripts/cable_club.inc
+++ b/data/scripts/cable_club.inc
@@ -60,7 +60,7 @@ VerdanturfTown_PokemonCenter_2F_EventScript_276B03:: @ 8276B03
end
OldaleTown_PokemonCenter_2F_EventScript_276B19:: @ 8276B19
- execram
+ gotoram
OldaleTown_PokemonCenter_2F_EventScript_276B1A:: @ 8276B1A
msgbox gUnknown_08273178, MSGBOX_NPC
diff --git a/include/global.h b/include/global.h
index 0506c036e..7b570d72e 100644
--- a/include/global.h
+++ b/include/global.h
@@ -816,7 +816,7 @@ struct MysteryEventStruct
u8 unk_1;
};
- struct MEventBuffer_3120_Sub
+ struct WonderNews
{
u16 unk_00;
u8 unk_02;
@@ -825,13 +825,13 @@ struct MysteryEventStruct
u8 unk_2C[10][40];
};
- struct MEventBuffer_3120
+ struct WonderNewsSaveStruct
{
u32 crc;
- struct MEventBuffer_3120_Sub data;
+ struct WonderNews data;
};
- struct MEventBuffer_32E0_Sub
+ struct WonderCard
{
u16 unk_00;
u16 unk_02;
@@ -847,10 +847,10 @@ struct MysteryEventStruct
u8 unk_122[40];
};
- struct MEventBuffer_32E0
+ struct WonderCardSaveStruct
{
u32 crc;
- struct MEventBuffer_32E0_Sub data;
+ struct WonderCard data;
};
struct MEventBuffer_3430_Sub
@@ -870,8 +870,8 @@ struct MysteryEventStruct
struct MEventBuffers
{
- /*0x000 0x322C*/ struct MEventBuffer_3120 buffer_000;
- /*0x1c0 0x33EC*/ struct MEventBuffer_32E0 buffer_1c0;
+ /*0x000 0x322C*/ struct WonderNewsSaveStruct wonderNews;
+ /*0x1c0 0x33EC*/ struct WonderCardSaveStruct wonderCard;
/*0x310 0x353C*/ struct MEventBuffer_3430 buffer_310;
/*0x338 0x3564*/ u16 unk_338[4];
/*0x340 0x356C*/ struct MysteryEventStruct unk_340;
diff --git a/include/link_rfu.h b/include/link_rfu.h
index b8ba1a927..edfd0ed20 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -284,7 +284,7 @@ bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx);
bool8 sub_800DF34(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx);
s32 sub_800E87C(u8 idx);
void sub_8011BA4(void);
-void sub_8010198(void);
+void LinkRfu_FatalError(void);
bool32 sub_8011A9C(void);
void sub_80104B0(void);
void sub_8011A50(void);
diff --git a/include/menu_specialized.h b/include/menu_specialized.h
index d29ac5751..405d78830 100644
--- a/include/menu_specialized.h
+++ b/include/menu_specialized.h
@@ -32,8 +32,8 @@ u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page);
void sub_81D1E90(struct PlayerPCItemPageStruct *page);
void sub_81D1EC0(void);
void sub_81D1D04(u8 a0);
-void DrawLevelUpWindowPg1(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5);
-void DrawLevelUpWindowPg2(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4);
+void DrawLevelUpWindowPg1(u16 arg0, u16 *statStoreLocation1, u16 *statStoreLocation2, u8 arg3, u8 arg4, u8 arg5);
+void DrawLevelUpWindowPg2(u16 arg0, u16 *statStoreLocation1, u8 arg2, u8 arg3, u8 arg4);
void sub_81D1ED4(struct UnknownStruct_81D1ED4 *a0);
void sub_81D2108(struct UnknownStruct_81D1ED4 *arg0);
void sub_81D20AC(struct UnknownStruct_81D1ED4 *arg0);
@@ -47,7 +47,7 @@ bool16 MoveRelearnerRunTextPrinters(void);
void MoveRelearnerCreateYesNoMenu(void);
u8 LoadMoveRelearnerMovesList(const struct ListMenuItem *items, u16 numChoices);
void InitMoveRelearnerWindows(bool8 useContextWindow);
-void GetMonLevelUpWindowStats(struct Pokemon* mon, void* statStoreLocation);
+void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *statStoreLocation);
s32 GetBoxOrPartyMonData(u16 boxId, u16 monId, s32 request, u8 *dst);
void sub_81D2ED4(u8 *dst, u8 *nameDst, u16 boxId, u16 monId, u16 arg5, u16 arg6, bool8 arg7);
void sub_81D2F78(struct UnknownStruct_81D1ED4 *arg0, u8 *sheen, u16 boxId, u16 monId, u16 arg5, u16 id, u16 arg7, bool8 arg8);
diff --git a/include/mevent.h b/include/mevent.h
index 9c5d559bf..a34ca355c 100755
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -32,30 +32,30 @@ struct MEventStruct_Unk1442CC
};
void sub_801AFD8(void);
-struct MEventBuffer_3120_Sub *sav1_get_mevent_buffer_0(void);
-struct MEventBuffer_32E0_Sub *sav1_get_mevent_buffer_1(void);
+struct WonderNews *GetSavedWonderNews(void);
+struct WonderCard *GetSavedWonderCard(void);
struct MEventBuffer_3430_Sub *sav1_get_mevent_buffer_2(void);
struct MysteryEventStruct *sub_801B044(void);
u16 *sub_801B058(void);
void DestroyWonderNews(void);
-bool32 sub_801B078(const struct MEventBuffer_3120_Sub *src);
+bool32 sub_801B078(const struct WonderNews *src);
bool32 ValidateReceivedWonderNews(void);
bool32 WonderNews_Test_Unk_02(void);
bool32 sub_801B1A4(const u8 *src);
void DestroyWonderCard(void);
-bool32 sub_801B21C(const struct MEventBuffer_32E0_Sub *data);
+bool32 sub_801B21C(const struct WonderCard *data);
bool32 ValidateReceivedWonderCard(void);
bool32 WonderCard_Test_Unk_08_6(void);
u16 GetWonderCardFlagID(void);
-void sub_801B3C0(struct MEventBuffer_32E0_Sub *buffer);
+void WonderCard_ResetInternalReceivedFlag(struct WonderCard *buffer);
bool32 CheckReceivedGiftFromWonderCard(void);
bool32 sub_801B508(const u16 *data);
void sub_801B580(struct MEventStruct_Unk1442CC *data, bool32 a1);
bool32 sub_801B6A0(const struct MEventStruct_Unk1442CC *data, bool32 a1);
-u32 sub_801B6EC(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, void *unused);
-u32 sub_801B708(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, void *unused);
-bool32 sub_801B748(const struct MEventStruct_Unk1442CC *a0, const u16 *a1);
-u16 sub_801B784(const struct MEventStruct_Unk1442CC *a0, u32 command);
+u32 sub_801B6EC(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, const void *unused);
+u32 sub_801B708(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, const void *unused);
+bool32 MEventStruct_Unk1442CC_CompareField_unk_16(const struct MEventStruct_Unk1442CC *a0, const u16 *a1);
+u16 MEventStruct_Unk1442CC_GetValueNFrom_unk_20(const struct MEventStruct_Unk1442CC *a0, u32 command);
u16 mevent_081445C0(u32 command);
void sub_801B940(void);
bool32 sub_801B94C(u16 a0);
diff --git a/include/mevent_801BAAC.h b/include/mevent_801BAAC.h
index 547d5237b..d76bc92c2 100644
--- a/include/mevent_801BAAC.h
+++ b/include/mevent_801BAAC.h
@@ -1,8 +1,8 @@
#ifndef GUARD_MEVENT_801BAAC_H
#define GUARD_MEVENT_801BAAC_H
-bool32 InitWonderCardResources(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6);
-bool32 InitWonderNewsResources(const struct MEventBuffer_3120_Sub * a0);
+bool32 InitWonderCardResources(struct WonderCard * r5, struct MEventBuffer_3430_Sub * r6);
+bool32 InitWonderNewsResources(const struct WonderNews * a0);
s32 FadeToWonderCardMenu(void);
s32 FadeToWonderNewsMenu(void);
s32 FadeOutFromWonderCard(bool32 flag);
diff --git a/include/mevent_client.h b/include/mevent_client.h
new file mode 100644
index 000000000..c32d14d7a
--- /dev/null
+++ b/include/mevent_client.h
@@ -0,0 +1,33 @@
+#ifndef GUARD_MEVENT_CLIENT_H
+#define GUARD_MEVENT_CLIENT_H
+
+#include "mevent_server_helpers.h"
+
+struct mevent_client_cmd
+{
+ u32 instr;
+ u32 parameter;
+};
+
+struct mevent_client
+{
+ u32 unk_00;
+ u32 param;
+ u32 mainseqno;
+ u32 flag;
+ u32 cmdidx;
+ void * sendBuffer;
+ void * recvBuffer;
+ struct mevent_client_cmd * cmdBuffer;
+ void * buffer;
+ struct mevent_srv_sub manager;
+ u32 unk_4C;
+};
+
+void mevent_client_do_init(u32 arg);
+u32 mevent_client_do_exec(u16 * a0);
+void mevent_client_inc_flag(void);
+void * mevent_client_get_buffer(void);
+void mevent_client_set_param(u32 a0);
+
+#endif //GUARD_MEVENT_CLIENT_H
diff --git a/include/mevent_server.h b/include/mevent_server.h
index d7657b270..e74337cf6 100644
--- a/include/mevent_server.h
+++ b/include/mevent_server.h
@@ -1,6 +1,34 @@
#ifndef GUARD_MEVENT_SERVER_H
#define GUARD_MEVENT_SERVER_H
+#include "mevent_server_helpers.h"
+
+struct mevent_cmd
+{
+ u32 instr;
+ bool32 flag;
+ const void * parameter;
+};
+
+struct mevent_srv_common
+{
+ u32 unk_00;
+ u32 param;
+ u32 mainseqno;
+ u32 cmdidx;
+ const struct mevent_cmd * cmdBuffer;
+ void * recvBuffer;
+ struct WonderCard * wonder_card;
+ struct WonderNews * wonder_news;
+ struct MEventStruct_Unk1442CC * mevent_unk1442cc;
+ const void * sendBuffer1;
+ u32 sendBuffer1Size;
+ const void * sendBuffer2;
+ u32 sendBuffer2Size;
+ u32 sendWord;
+ struct mevent_srv_sub manager;
+};
+
void mevent_srv_new_wcard();
void mevent_srv_init_wnews();
u32 mevent_srv_common_do_exec(u16 * a0);
diff --git a/include/mevent_server_helpers.h b/include/mevent_server_helpers.h
new file mode 100644
index 000000000..e4e409862
--- /dev/null
+++ b/include/mevent_server_helpers.h
@@ -0,0 +1,38 @@
+#ifndef GUARD_MEVENT_SERVER_HELPERS_H
+#define GUARD_MEVENT_SERVER_HELPERS_H
+
+#define ME_SEND_BUF_SIZE 0x400
+
+struct mevent_srv_sub
+{
+ s32 seqno;
+ u8 sendPlayerNo;
+ u8 recvPlayerNo;
+ u16 recvIdent;
+ u16 recvCounter;
+ u16 recvCRC;
+ u16 recvSize;
+ u16 sendIdent;
+ u16 sendCounter;
+ u16 sendCRC;
+ u16 sendSize;
+ void * recvBfr;
+ const void * sendBfr;
+ u32 (*recvFunc)(struct mevent_srv_sub *);
+ u32 (*sendFunc)(struct mevent_srv_sub *);
+};
+
+struct send_recv_header
+{
+ u16 ident;
+ u16 crc;
+ u16 size;
+};
+
+void mevent_srv_sub_init(struct mevent_srv_sub *, u32, u32);
+void mevent_srv_sub_init_send(struct mevent_srv_sub * manager, u32 ident, const void * src, u32 size);
+bool32 mevent_srv_sub_recv(struct mevent_srv_sub * manager);
+bool32 mevent_srv_sub_send(struct mevent_srv_sub * manager);
+void mevent_srv_sub_init_recv(struct mevent_srv_sub *, u32, void *);
+
+#endif //GUARD_MEVENT_SERVER_HELPERS_H
diff --git a/include/mevent_server_ish.h b/include/mevent_server_ish.h
deleted file mode 100644
index 31f98ed52..000000000
--- a/include/mevent_server_ish.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef GUARD_MEVENT_SERVER_ISH_H
-#define GUARD_MEVENT_SERVER_ISH_H
-
-void mevent_srv_ish_do_init(u32 arg);
-u32 mevent_srv_ish_do_exec(u16 * a0);
-void mevent_srv_ish_inc_flag(void);
-void * mevent_srv_ish_get_buffer(void);
-void mevent_srv_ish_set_param(u32 a0);
-
-#endif //GUARD_MEVENT_SERVER_ISH_H
diff --git a/include/naming_screen.h b/include/naming_screen.h
index b04cb19b6..611f53ef2 100644
--- a/include/naming_screen.h
+++ b/include/naming_screen.h
@@ -59,9 +59,9 @@ struct NamingScreenData {
enum
{
+ PAGE_OTHERS,
PAGE_UPPER,
PAGE_LOWER,
- PAGE_OTHERS,
};
enum
diff --git a/include/script.h b/include/script.h
index 34f4635bb..cfe493479 100644
--- a/include/script.h
+++ b/include/script.h
@@ -57,9 +57,9 @@ u32 CalculateRamScriptChecksum(void);
void ClearRamScript(void);
bool8 InitRamScript(const u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
const u8 *GetRamScript(u8 objectId, const u8 *script);
-bool32 sub_80991F8(void);
-u8 *sub_8099244(void);
-void sub_80992A0(u8 *script, u16 scriptSize);
+bool32 ValidateSavedRamScript(void);
+u8 *GetSavedRamScriptIfValid(void);
+void InitRamScript_NoEventObject(u8 *script, u16 scriptSize);
// srccmd.h
void sub_809BE48(u16 npcId);
diff --git a/include/strings.h b/include/strings.h
index 8aa296eb1..fc5724af3 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -471,6 +471,8 @@ extern const u8 gText_EggCantBattle[];
extern const u8 gText_PkmnAlreadySelected[];
extern const u8 gText_PkmnAlreadyInBattle[];
extern const u8 gText_PkmnCantSwitchOut[];
+extern const u8 gText_Dash[];
+extern const u8 gText_UnkCtrlF904[];
//pokedex text
extern const u8 gText_CryOf[];
diff --git a/include/util.h b/include/util.h
index 56c89359a..77062de96 100644
--- a/include/util.h
+++ b/include/util.h
@@ -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);
diff --git a/ld_script.txt b/ld_script.txt
index 619abfce1..a7f9948b8 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -60,9 +60,9 @@ SECTIONS {
src/union_room_battle.o(.text);
src/mevent2.o(.text);
src/mevent_801BAAC.o(.text);
- asm/mevent_server.o(.text);
- asm/mevent_server_ish.o(.text);
- asm/mevent_server_helpers.o(.text);
+ src/mevent_server.o(.text);
+ src/mevent_client.o(.text);
+ src/mevent_server_helpers.o(.text);
src/mevent_news.o(.text);
src/union_room_chat.o(.text);
src/berry_crush.o(.text);
@@ -303,7 +303,6 @@ SECTIONS {
asm/pokenav.o(.text);
src/pokenav_match_call.o(.text);
src/menu_specialized.o(.text);
- asm/menu_specialized.o(.text);
src/ereader_helpers.o(.text);
src/faraway_island.o(.text);
src/ereader_screen.o(.text);
@@ -416,7 +415,9 @@ SECTIONS {
src/union_room_battle.o(.rodata);
src/mevent2.o(.rodata);
src/mevent_801BAAC.o(.rodata);
- data/mevent_server.o(.rodata);
+ src/mevent_server.o(.rodata);
+ src/mevent_client.o(.rodata);
+ src/mevent_scripts.o(.rodata);
src/union_room_chat.o(.rodata);
data/union_room_chat.o(.rodata);
data/berry_crush.o(.rodata);
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 0a0c34ad2..d1d8d87ac 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -6295,16 +6295,16 @@ static void sub_804F100(void)
{
struct StatsArray currentStats;
- GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
- DrawLevelUpWindowPg1(0xD, gBattleResources->statsBeforeLvlUp, &currentStats, 0xE, 0xD, 0xF);
+ GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], (u16*) &currentStats);
+ DrawLevelUpWindowPg1(0xD, (u16*) gBattleResources->statsBeforeLvlUp,(u16*) &currentStats, 0xE, 0xD, 0xF);
}
static void sub_804F144(void)
{
struct StatsArray currentStats;
- GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
- DrawLevelUpWindowPg2(0xD, &currentStats, 0xE, 0xD, 0xF);
+ GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], (u16*) &currentStats);
+ DrawLevelUpWindowPg2(0xD, (u16*) &currentStats, 0xE, 0xD, 0xF);
}
static void sub_804F17C(void)
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 1e4c9c7e6..7c55df783 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -3674,7 +3674,7 @@ void sub_8010168(void)
gUnknown_03005000.unk_00 = sub_8010148;
}
-void sub_8010198(void)
+void LinkRfu_FatalError(void)
{
sub_800D630();
gUnknown_03005000.unk_ce4 = 1;
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
index f21f4e51a..cbdef3d39 100644
--- a/src/menu_specialized.c
+++ b/src/menu_specialized.c
@@ -28,6 +28,7 @@
#include "gba/io_reg.h"
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
+extern const u8 *gUnknown_08625B54[];
EWRAM_DATA static u8 sUnknown_0203CF48[3] = {0};
EWRAM_DATA static struct ListMenuItem *sUnknown_0203CF4C = NULL;
@@ -259,7 +260,7 @@ static void sub_81D1D44(u8 windowId, s32 itemId, u8 y)
u8 buffer[30];
u16 length;
- if (itemId == LIST_CANCEL)
+ if (itemId == LIST_CANCEL)
return;
StringCopy(buffer, gSaveBlock1Ptr->mail[6 + itemId].playerName);
@@ -1639,3 +1640,441 @@ static void sub_81D35E8(struct Sprite *sprite)
id = gSprites[id].data[5];
}
}
+
+
+#ifdef NONMATCHING
+void DrawLevelUpWindowPg1(u16 arg0, u16 *statStoreLocation1, u16 *statStoreLocation2, u8 arg3, u8 arg4, u8 arg5)
+{
+ u16 i;
+ s16 array[6];
+ u8 *text;
+ u8 text2;
+ s16 *statVal;
+ s32 var;
+ u8 padding;
+ s32 var3;
+ u8 color[11];
+
+ FillWindowPixelBuffer(arg0, PIXEL_FILL(arg3));
+
+ array[0] = statStoreLocation2[STAT_HP] - statStoreLocation1[STAT_HP];
+ array[1] = statStoreLocation2[STAT_ATK] - statStoreLocation1[STAT_ATK];
+ array[2] = statStoreLocation2[STAT_DEF] - statStoreLocation1[STAT_DEF];
+ array[3] = statStoreLocation2[STAT_SPATK] - statStoreLocation1[STAT_SPATK];
+ array[4] = statStoreLocation2[STAT_SPDEF] - statStoreLocation1[STAT_SPDEF];
+ array[5] = statStoreLocation2[STAT_SPEED] - statStoreLocation1[STAT_SPEED];
+
+ color[0] = arg3;
+ color[1] = arg4;
+ color[2] = arg5;
+
+ for(i = 0; i <= 5; i++)
+ {
+ AddTextPrinterParameterized3(arg0,
+ 1,
+ 0,
+ 15 * i,
+ color,
+ TEXT_SPEED_FF,
+ gUnknown_08625B54[i]);
+ statVal = &array[i];
+ text = array[i] >= 0 ? (u8 *) gText_UnkCtrlF904 : (u8 *) gText_Dash;//Plus sign for stat gain, dash for none maybe
+ StringCopy(&text2, text);
+ AddTextPrinterParameterized3(arg0,
+ 1,
+ 56,
+ 15 * i,
+ color,
+ TEXT_SPEED_FF,
+ &text2);
+ var3 = *statVal;
+ var = var3;
+
+ if(var3 < 0)
+ {
+ var = -var3;
+ }
+
+ padding = 12; //amount of padding
+
+ if(var <= 9)
+ {
+ padding = 18; //more padding for single digit numbers
+ }
+
+ if(var3 < 0)
+ {
+ var3 = -var3;
+ }
+
+ ConvertIntToDecimalStringN(&text2, var3, STR_CONV_MODE_LEFT_ALIGN, 2);
+ AddTextPrinterParameterized3(arg0,
+ 1,
+ padding + 56,
+ 15 * i,
+ color,
+ TEXT_SPEED_FF,
+ &text2);
+ }
+}
+#else
+NAKED
+void DrawLevelUpWindowPg1(u16 arg0, u16 *statStoreLocation1, u16 *statStoreLocation2, u8 arg3, u8 arg4, u8 arg5)
+{
+ asm(".syntax unified\n\
+push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x2C\n\
+ mov r8, r0\n\
+ adds r6, r1, 0\n\
+ adds r5, r2, 0\n\
+ adds r4, r3, 0\n\
+ ldr r3, [sp, 0x4C]\n\
+ ldr r0, [sp, 0x50]\n\
+ mov r9, r0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ mov r1, r9\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r9, r1\n\
+ mov r0, r8\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ lsls r1, r4, 4\n\
+ orrs r1, r4\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ str r3, [sp, 0x28]\n\
+ bl FillWindowPixelBuffer\n\
+ add r2, sp, 0xC\n\
+ ldrh r0, [r5]\n\
+ ldrh r1, [r6]\n\
+ subs r0, r1\n\
+ strh r0, [r2]\n\
+ ldrh r0, [r5, 0x2]\n\
+ ldrh r1, [r6, 0x2]\n\
+ subs r0, r1\n\
+ strh r0, [r2, 0x2]\n\
+ ldrh r0, [r5, 0x4]\n\
+ ldrh r1, [r6, 0x4]\n\
+ subs r0, r1\n\
+ strh r0, [r2, 0x4]\n\
+ ldrh r0, [r5, 0x8]\n\
+ ldrh r1, [r6, 0x8]\n\
+ subs r0, r1\n\
+ strh r0, [r2, 0x6]\n\
+ ldrh r0, [r5, 0xA]\n\
+ ldrh r1, [r6, 0xA]\n\
+ subs r0, r1\n\
+ strh r0, [r2, 0x8]\n\
+ ldrh r0, [r5, 0x6]\n\
+ ldrh r1, [r6, 0x6]\n\
+ subs r0, r1\n\
+ strh r0, [r2, 0xA]\n\
+ add r0, sp, 0x24\n\
+ strb r4, [r0]\n\
+ ldr r3, [sp, 0x28]\n\
+ strb r3, [r0, 0x1]\n\
+ mov r1, r9\n\
+ strb r1, [r0, 0x2]\n\
+ movs r7, 0\n\
+ mov r10, r0\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ mov r9, r0\n\
+ add r6, sp, 0x18\n\
+_081D36CA:\n\
+ lsls r0, r7, 4\n\
+ subs r0, r7\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ mov r1, r10\n\
+ str r1, [sp]\n\
+ mov r0, r9\n\
+ str r0, [sp, 0x4]\n\
+ ldr r1, =gUnknown_08625B54\n\
+ lsls r0, r7, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ str r0, [sp, 0x8]\n\
+ mov r0, r8\n\
+ movs r1, 0x1\n\
+ movs r2, 0\n\
+ adds r3, r5, 0\n\
+ bl AddTextPrinterParameterized3\n\
+ lsls r0, r7, 1\n\
+ mov r4, sp\n\
+ adds r4, r0\n\
+ adds r4, 0xC\n\
+ movs r1, 0\n\
+ ldrsh r0, [r4, r1]\n\
+ ldr r1, =gText_Dash\n\
+ cmp r0, 0\n\
+ blt _081D3704\n\
+ ldr r1, =gText_UnkCtrlF904\n\
+_081D3704:\n\
+ adds r0, r6, 0\n\
+ bl StringCopy\n\
+ mov r0, r10\n\
+ str r0, [sp]\n\
+ mov r1, r9\n\
+ str r1, [sp, 0x4]\n\
+ str r6, [sp, 0x8]\n\
+ mov r0, r8\n\
+ movs r1, 0x1\n\
+ movs r2, 0x38\n\
+ adds r3, r5, 0\n\
+ bl AddTextPrinterParameterized3\n\
+ movs r0, 0\n\
+ ldrsh r1, [r4, r0]\n\
+ adds r0, r1, 0\n\
+ cmp r1, 0\n\
+ bge _081D372C\n\
+ negs r0, r1\n\
+_081D372C:\n\
+ movs r4, 0xC\n\
+ cmp r0, 0x9\n\
+ bgt _081D3734\n\
+ movs r4, 0x12\n\
+_081D3734:\n\
+ cmp r1, 0\n\
+ bge _081D373A\n\
+ negs r1, r1\n\
+_081D373A:\n\
+ adds r0, r6, 0\n\
+ movs r2, 0\n\
+ movs r3, 0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ adds r2, r4, 0\n\
+ adds r2, 0x38\n\
+ mov r1, r10\n\
+ str r1, [sp]\n\
+ mov r0, r9\n\
+ str r0, [sp, 0x4]\n\
+ str r6, [sp, 0x8]\n\
+ mov r0, r8\n\
+ movs r1, 0x1\n\
+ adds r3, r5, 0\n\
+ bl AddTextPrinterParameterized3\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ cmp r7, 0x5\n\
+ bls _081D36CA\n\
+ add sp, 0x2C\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+#ifdef NONMATCHING
+void DrawLevelUpWindowPg2(u16 arg0, u16 *statStoreLocation1, u8 arg2, u8 arg3, u8 arg4)
+{
+ s32 i;
+ s16 *var;
+ s32 numDigits;
+ u8 text;
+ s16 array[6];
+ u8 color[11];
+
+ FillWindowPixelBuffer(arg0, PIXEL_FILL(arg2));
+
+ array[0] = statStoreLocation1[STAT_HP];
+ array[1] = statStoreLocation1[STAT_ATK];
+ array[2] = statStoreLocation1[STAT_DEF];
+ array[3] = statStoreLocation1[STAT_SPATK];
+ array[4] = statStoreLocation1[STAT_SPDEF];
+ array[5] = statStoreLocation1[STAT_SPEED];
+
+ color[0] = arg2;
+ color[1] = arg3;
+ color[2] = arg4;
+
+ for(i = 0; i <= 5; i++)
+ {
+ numDigits = 3; //3 digit stat
+ if(array[i] <= 99)
+ {
+ numDigits = 1; //1 digit stat
+ if(array[i] > 9)
+ {
+ numDigits = 2; //2 digit stat
+ }
+ }
+ ConvertIntToDecimalStringN(&text, array[i], STR_CONV_MODE_LEFT_ALIGN, numDigits);
+ AddTextPrinterParameterized3(arg0,
+ 1,
+ 0,
+ 15 * i,
+ color,
+ TEXT_SPEED_FF,
+ gUnknown_08625B54[i]);
+ AddTextPrinterParameterized3(arg0,
+ 1,
+ 6 * (4 - numDigits) + 56,
+ 15 * i,
+ color,
+ TEXT_SPEED_FF,
+ &text);
+ }
+}
+#else
+NAKED
+void DrawLevelUpWindowPg2(u16 arg0, u16 *statStoreLocation1, u8 arg2, u8 arg3, u8 arg4)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x2C\n\
+ mov r8, r0\n\
+ adds r5, r1, 0\n\
+ adds r4, r2, 0\n\
+ adds r6, r3, 0\n\
+ ldr r2, [sp, 0x4C]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ lsls r6, 24\n\
+ lsrs r6, 24\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ lsls r1, r4, 4\n\
+ orrs r1, r4\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ str r2, [sp, 0x28]\n\
+ bl FillWindowPixelBuffer\n\
+ add r1, sp, 0xC\n\
+ ldrh r0, [r5]\n\
+ strh r0, [r1]\n\
+ ldrh r0, [r5, 0x2]\n\
+ strh r0, [r1, 0x2]\n\
+ ldrh r0, [r5, 0x4]\n\
+ strh r0, [r1, 0x4]\n\
+ ldrh r0, [r5, 0x8]\n\
+ strh r0, [r1, 0x6]\n\
+ ldrh r0, [r5, 0xA]\n\
+ strh r0, [r1, 0x8]\n\
+ ldrh r0, [r5, 0x6]\n\
+ strh r0, [r1, 0xA]\n\
+ add r0, sp, 0x24\n\
+ strb r4, [r0]\n\
+ strb r6, [r0, 0x1]\n\
+ ldr r2, [sp, 0x28]\n\
+ strb r2, [r0, 0x2]\n\
+ movs r6, 0\n\
+ add r1, sp, 0x18\n\
+ mov r9, r1\n\
+ mov r7, r8\n\
+ mov r10, r0\n\
+ movs r2, 0x1\n\
+ negs r2, r2\n\
+ mov r8, r2\n\
+_081D37EE:\n\
+ lsls r1, r6, 1\n\
+ mov r0, sp\n\
+ adds r0, r1\n\
+ adds r0, 0xC\n\
+ movs r2, 0\n\
+ ldrsh r0, [r0, r2]\n\
+ movs r4, 0x3\n\
+ cmp r0, 0x63\n\
+ bgt _081D3808\n\
+ movs r4, 0x1\n\
+ cmp r0, 0x9\n\
+ ble _081D3808\n\
+ movs r4, 0x2\n\
+_081D3808:\n\
+ mov r0, sp\n\
+ adds r0, r1\n\
+ adds r0, 0xC\n\
+ movs r2, 0\n\
+ ldrsh r1, [r0, r2]\n\
+ mov r0, r9\n\
+ movs r2, 0\n\
+ adds r3, r4, 0\n\
+ bl ConvertIntToDecimalStringN\n\
+ movs r0, 0x4\n\
+ subs r0, r4\n\
+ lsls r4, r0, 1\n\
+ adds r4, r0\n\
+ lsls r4, 17\n\
+ lsrs r4, 16\n\
+ lsls r5, r6, 4\n\
+ subs r5, r6\n\
+ lsls r5, 24\n\
+ lsrs r5, 24\n\
+ mov r0, r10\n\
+ str r0, [sp]\n\
+ mov r1, r8\n\
+ str r1, [sp, 0x4]\n\
+ ldr r1, =gUnknown_08625B54\n\
+ lsls r0, r6, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ str r0, [sp, 0x8]\n\
+ adds r0, r7, 0\n\
+ movs r1, 0x1\n\
+ movs r2, 0\n\
+ adds r3, r5, 0\n\
+ bl AddTextPrinterParameterized3\n\
+ adds r4, 0x38\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ mov r2, r10\n\
+ str r2, [sp]\n\
+ mov r0, r8\n\
+ str r0, [sp, 0x4]\n\
+ mov r1, r9\n\
+ str r1, [sp, 0x8]\n\
+ adds r0, r7, 0\n\
+ movs r1, 0x1\n\
+ adds r2, r4, 0\n\
+ adds r3, r5, 0\n\
+ bl AddTextPrinterParameterized3\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ cmp r6, 0x5\n\
+ bls _081D37EE\n\
+ add sp, 0x2C\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *statStoreLocation)
+{
+ statStoreLocation[STAT_HP] = GetMonData(mon, MON_DATA_MAX_HP);
+ statStoreLocation[STAT_ATK] = GetMonData(mon, MON_DATA_ATK);
+ statStoreLocation[STAT_DEF] = GetMonData(mon, MON_DATA_DEF);
+ statStoreLocation[STAT_SPEED] = GetMonData(mon, MON_DATA_SPEED);
+ statStoreLocation[STAT_SPATK] = GetMonData(mon, MON_DATA_SPATK);
+ statStoreLocation[STAT_SPDEF] = GetMonData(mon, MON_DATA_SPDEF);
+}
diff --git a/src/mevent2.c b/src/mevent2.c
index 4174c4055..f36e5d06b 100755
--- a/src/mevent2.c
+++ b/src/mevent2.c
@@ -15,8 +15,8 @@ static EWRAM_DATA bool32 gUnknown_02022C70 = FALSE;
static void sub_801B180(void);
static void s_DestroyWonderNews(void);
-static bool32 sub_801B114(const struct MEventBuffer_3120_Sub *data);
-static bool32 sub_801B2CC(const struct MEventBuffer_32E0_Sub *data);
+static bool32 sub_801B114(const struct WonderNews *data);
+static bool32 sub_801B2CC(const struct WonderCard *data);
static void sub_801B330(void);
static void sub_801B368(void);
static void sub_801B9F8(void);
@@ -29,14 +29,14 @@ void sub_801AFD8(void)
sub_811F8BC();
}
-struct MEventBuffer_3120_Sub *sav1_get_mevent_buffer_0(void)
+struct WonderNews *GetSavedWonderNews(void)
{
- return &gSaveBlock1Ptr->unk_322C.buffer_000.data;
+ return &gSaveBlock1Ptr->unk_322C.wonderNews.data;
}
-struct MEventBuffer_32E0_Sub *sav1_get_mevent_buffer_1(void)
+struct WonderCard *GetSavedWonderCard(void)
{
- return &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ return &gSaveBlock1Ptr->unk_322C.wonderCard.data;
}
struct MEventBuffer_3430_Sub *sav1_get_mevent_buffer_2(void)
@@ -59,28 +59,28 @@ void DestroyWonderNews(void)
s_DestroyWonderNews();
}
-bool32 sub_801B078(const struct MEventBuffer_3120_Sub *src)
+bool32 sub_801B078(const struct WonderNews *src)
{
if (!sub_801B114(src))
return FALSE;
s_DestroyWonderNews();
- gSaveBlock1Ptr->unk_322C.buffer_000.data = *src;
- gSaveBlock1Ptr->unk_322C.buffer_000.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub));
+ gSaveBlock1Ptr->unk_322C.wonderNews.data = *src;
+ gSaveBlock1Ptr->unk_322C.wonderNews.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.wonderNews.data, sizeof(struct WonderNews));
return TRUE;
}
bool32 ValidateReceivedWonderNews(void)
{
- if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)) != gSaveBlock1Ptr->unk_322C.buffer_000.crc)
+ if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.wonderNews.data, sizeof(struct WonderNews)) != gSaveBlock1Ptr->unk_322C.wonderNews.crc)
return FALSE;
- if (!sub_801B114(&gSaveBlock1Ptr->unk_322C.buffer_000.data))
+ if (!sub_801B114(&gSaveBlock1Ptr->unk_322C.wonderNews.data))
return FALSE;
return TRUE;
}
-static bool32 sub_801B114(const struct MEventBuffer_3120_Sub *data)
+static bool32 sub_801B114(const struct WonderNews *data)
{
if (data->unk_00 == 0)
return FALSE;
@@ -90,7 +90,7 @@ static bool32 sub_801B114(const struct MEventBuffer_3120_Sub *data)
bool32 WonderNews_Test_Unk_02(void)
{
- const struct MEventBuffer_3120_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_000.data;
+ const struct WonderNews *data = &gSaveBlock1Ptr->unk_322C.wonderNews.data;
if (data->unk_02 == 0)
return FALSE;
@@ -99,8 +99,8 @@ bool32 WonderNews_Test_Unk_02(void)
static void s_DestroyWonderNews(void)
{
- CpuFill32(0, sav1_get_mevent_buffer_0(), sizeof(gSaveBlock1Ptr->unk_322C.buffer_000.data));
- gSaveBlock1Ptr->unk_322C.buffer_000.crc = 0;
+ CpuFill32(0, GetSavedWonderNews(), sizeof(gSaveBlock1Ptr->unk_322C.wonderNews.data));
+ gSaveBlock1Ptr->unk_322C.wonderNews.crc = 0;
}
static void sub_801B180(void)
@@ -111,12 +111,12 @@ static void sub_801B180(void)
bool32 sub_801B1A4(const u8 *src)
{
- const u8 *r5 = (const u8 *)&gSaveBlock1Ptr->unk_322C.buffer_000.data;
+ const u8 *r5 = (const u8 *)&gSaveBlock1Ptr->unk_322C.wonderNews.data;
u32 i;
if (!ValidateReceivedWonderNews())
return FALSE;
- for (i = 0; i < sizeof(struct MEventBuffer_3120_Sub); i++)
+ for (i = 0; i < sizeof(struct WonderNews); i++)
{
if (r5[i] != src[i])
return FALSE;
@@ -136,35 +136,35 @@ void DestroyWonderCard(void)
ClearEReaderTrainer(&gSaveBlock2Ptr->frontier.ereaderTrainer);
}
-bool32 sub_801B21C(const struct MEventBuffer_32E0_Sub *data)
+bool32 sub_801B21C(const struct WonderCard *data)
{
struct MEventBuffer_3430_Sub *r2;
- struct MEventBuffer_32E0_Sub *r1;
+ struct WonderCard *r1;
if (!sub_801B2CC(data))
return FALSE;
DestroyWonderCard();
- memcpy(&gSaveBlock1Ptr->unk_322C.buffer_1c0.data, data, sizeof(struct MEventBuffer_32E0_Sub));
- gSaveBlock1Ptr->unk_322C.buffer_1c0.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
+ memcpy(&gSaveBlock1Ptr->unk_322C.wonderCard.data, data, sizeof(struct WonderCard));
+ gSaveBlock1Ptr->unk_322C.wonderCard.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.wonderCard.data, sizeof(struct WonderCard));
r2 = &gSaveBlock1Ptr->unk_322C.buffer_310.data;
- r1 = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ r1 = &gSaveBlock1Ptr->unk_322C.wonderCard.data;
r2->unk_06 = r1->unk_02;
return TRUE;
}
bool32 ValidateReceivedWonderCard(void)
{
- if (gSaveBlock1Ptr->unk_322C.buffer_1c0.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)))
+ if (gSaveBlock1Ptr->unk_322C.wonderCard.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.wonderCard.data, sizeof(struct WonderCard)))
return FALSE;
- if (!sub_801B2CC(&gSaveBlock1Ptr->unk_322C.buffer_1c0.data))
+ if (!sub_801B2CC(&gSaveBlock1Ptr->unk_322C.wonderCard.data))
return FALSE;
- if (!sub_80991F8())
+ if (!ValidateSavedRamScript())
return FALSE;
return TRUE;
}
-static bool32 sub_801B2CC(const struct MEventBuffer_32E0_Sub *data)
+static bool32 sub_801B2CC(const struct WonderCard *data)
{
if (data->unk_00 == 0)
return FALSE;
@@ -182,7 +182,7 @@ static bool32 sub_801B2CC(const struct MEventBuffer_32E0_Sub *data)
bool32 WonderCard_Test_Unk_08_6(void)
{
- const struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ const struct WonderCard *data = &gSaveBlock1Ptr->unk_322C.wonderCard.data;
if (data->unk_08_6 == 0)
return FALSE;
@@ -191,8 +191,8 @@ bool32 WonderCard_Test_Unk_08_6(void)
static void sub_801B330(void)
{
- CpuFill32(0, &gSaveBlock1Ptr->unk_322C.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
- gSaveBlock1Ptr->unk_322C.buffer_1c0.crc = 0;
+ CpuFill32(0, &gSaveBlock1Ptr->unk_322C.wonderCard.data, sizeof(struct WonderCard));
+ gSaveBlock1Ptr->unk_322C.wonderCard.crc = 0;
}
static void sub_801B368(void)
@@ -204,12 +204,12 @@ static void sub_801B368(void)
u16 GetWonderCardFlagID(void)
{
if (ValidateReceivedWonderCard())
- return gSaveBlock1Ptr->unk_322C.buffer_1c0.data.unk_00;
+ return gSaveBlock1Ptr->unk_322C.wonderCard.data.unk_00;
return 0;
}
-void sub_801B3C0(struct MEventBuffer_32E0_Sub *buffer)
+void WonderCard_ResetInternalReceivedFlag(struct WonderCard *buffer)
{
if (buffer->unk_08_6 == 1)
buffer->unk_08_6 = 0;
@@ -299,11 +299,11 @@ static bool32 sub_801B4A4(const u16 *data)
static int sub_801B4CC(void)
{
- struct MEventBuffer_32E0_Sub *data;
+ struct WonderCard *data;
if (!ValidateReceivedWonderCard())
return 0;
- data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ data = &gSaveBlock1Ptr->unk_322C.wonderCard.data;
if (data->unk_08_0 != 1)
return 0;
@@ -312,7 +312,7 @@ static int sub_801B4CC(void)
bool32 sub_801B508(const u16 *data)
{
- struct MEventBuffer_32E0_Sub *buffer = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ struct WonderCard *buffer = &gSaveBlock1Ptr->unk_322C.wonderCard.data;
int size = buffer->unk_09;
int i;
if (!sub_801B4A4(data))
@@ -355,9 +355,9 @@ void sub_801B580(struct MEventStruct_Unk1442CC *data, bool32 a1)
if (ValidateReceivedWonderCard())
{
- data->unk_14 = sav1_get_mevent_buffer_1()->unk_00;
+ data->unk_14 = GetSavedWonderCard()->unk_00;
data->unk_20 = *sav1_get_mevent_buffer_2();
- data->unk_44 = sav1_get_mevent_buffer_1()->unk_09;
+ data->unk_44 = GetSavedWonderCard()->unk_09;
}
else
{
@@ -399,7 +399,7 @@ bool32 sub_801B6A0(const struct MEventStruct_Unk1442CC *data, bool32 a1)
return TRUE;
}
-u32 sub_801B6EC(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, void *unused)
+u32 sub_801B6EC(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, const void *unused)
{
if (a1->unk_14 == 0)
return 0;
@@ -410,7 +410,7 @@ u32 sub_801B6EC(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, void *un
return 2;
}
-u32 sub_801B708(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, void *unused)
+u32 sub_801B708(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, const void *unused)
{
int r4 = a1->unk_44 - sub_801B438(&a1->unk_20, a1->unk_44);
if (r4 == 0)
@@ -422,7 +422,7 @@ u32 sub_801B708(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, void *un
return 2;
}
-bool32 sub_801B748(const struct MEventStruct_Unk1442CC *a0, const u16 *a1)
+bool32 MEventStruct_Unk1442CC_CompareField_unk_16(const struct MEventStruct_Unk1442CC *a0, const u16 *a1)
{
int i;
for (i = 0; i < 4; i++)
@@ -439,7 +439,7 @@ static int sub_801B770(const struct MEventStruct_Unk1442CC *a0)
return sub_801B438(&a0->unk_20, a0->unk_44);
}
-u16 sub_801B784(const struct MEventStruct_Unk1442CC *a0, u32 command)
+u16 MEventStruct_Unk1442CC_GetValueNFrom_unk_20(const struct MEventStruct_Unk1442CC *a0, u32 command)
{
switch (command)
{
@@ -461,7 +461,7 @@ u16 sub_801B784(const struct MEventStruct_Unk1442CC *a0, u32 command)
static void sub_801B7D8(u32 command)
{
- struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ struct WonderCard *data = &gSaveBlock1Ptr->unk_322C.wonderCard.data;
if (data->unk_08_0 == 2)
{
u16 *dest = NULL;
@@ -495,7 +495,7 @@ u16 mevent_081445C0(u32 command)
{
case 0:
{
- struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ struct WonderCard *data = &gSaveBlock1Ptr->unk_322C.wonderCard.data;
if (data->unk_08_0 == 2)
{
struct MEventBuffer_3430_Sub *buffer = &gSaveBlock1Ptr->unk_322C.buffer_310.data;
@@ -505,7 +505,7 @@ u16 mevent_081445C0(u32 command)
}
case 1:
{
- struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ struct WonderCard *data = &gSaveBlock1Ptr->unk_322C.wonderCard.data;
if (data->unk_08_0 == 2)
{
struct MEventBuffer_3430_Sub *buffer = &gSaveBlock1Ptr->unk_322C.buffer_310.data;
@@ -515,7 +515,7 @@ u16 mevent_081445C0(u32 command)
}
case 2:
{
- struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ struct WonderCard *data = &gSaveBlock1Ptr->unk_322C.wonderCard.data;
if (data->unk_08_0 == 2)
{
struct MEventBuffer_3430_Sub *buffer = &gSaveBlock1Ptr->unk_322C.buffer_310.data;
@@ -525,14 +525,14 @@ u16 mevent_081445C0(u32 command)
}
case 3:
{
- struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ struct WonderCard *data = &gSaveBlock1Ptr->unk_322C.wonderCard.data;
if (data->unk_08_0 == 1)
return sub_801B4CC();
break;
}
case 4:
{
- struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ struct WonderCard *data = &gSaveBlock1Ptr->unk_322C.wonderCard.data;
if (data->unk_08_0 == 1)
return data->unk_09;
break;
@@ -557,7 +557,7 @@ bool32 sub_801B94C(u16 a0)
if (!ValidateReceivedWonderCard())
return FALSE;
- if (gSaveBlock1Ptr->unk_322C.buffer_1c0.data.unk_00 != a0)
+ if (gSaveBlock1Ptr->unk_322C.wonderCard.data.unk_00 != a0)
return FALSE;
gUnknown_02022C70 = TRUE;
diff --git a/src/mevent_801BAAC.c b/src/mevent_801BAAC.c
index 24a999f69..62240af98 100644
--- a/src/mevent_801BAAC.c
+++ b/src/mevent_801BAAC.c
@@ -35,7 +35,7 @@ struct UnkStruct_203F3C8_02DC
struct UnkStruct_203F3C8
{
- /*0000*/ struct MEventBuffer_32E0_Sub unk_0000;
+ /*0000*/ struct WonderCard unk_0000;
/*014c*/ struct MEventBuffer_3430_Sub unk_014C;
/*0170*/ const struct UnkStruct_8467FB8 * unk_0170;
/*0174*/ u8 unk_0174;
@@ -150,7 +150,7 @@ const struct UnkStruct_8467FB8 gUnknown_082F1D60[8] = {
{1, 0, 0, 7, gWonderCardBgGfx8, gWonderCardBgTilemap8, gWonderCardBgPal8}
};
-bool32 InitWonderCardResources(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6)
+bool32 InitWonderCardResources(struct WonderCard * r5, struct MEventBuffer_3430_Sub * r6)
{
if (r5 == NULL || r6 == NULL)
return FALSE;
@@ -465,7 +465,7 @@ void sub_801C61C(void)
struct UnkStruct_203F3CC
{
- /*0000*/ struct MEventBuffer_3120_Sub unk_0000;
+ /*0000*/ struct WonderNews unk_0000;
/*01bc*/ const struct UnkStruct_8467FB8 * unk_01BC;
/*01c0*/ u8 unk_01C0_0:1;
u8 unk_01C0_1:7;
@@ -542,7 +542,7 @@ const struct UnkStruct_8467FB8 gUnknown_082F24C8[] = {
{1, 0, 0, 0, gWonderNewsGfx8, gWonderNewsTilemap8, gWonderNewsPal8}
};
-bool32 InitWonderNewsResources(const struct MEventBuffer_3120_Sub * a0)
+bool32 InitWonderNewsResources(const struct WonderNews * a0)
{
if (a0 == NULL)
return FALSE;
diff --git a/src/mevent_client.c b/src/mevent_client.c
new file mode 100644
index 000000000..ec8908af2
--- /dev/null
+++ b/src/mevent_client.c
@@ -0,0 +1,291 @@
+#include "global.h"
+#include "alloc.h"
+#include "decompress.h"
+#include "overworld.h"
+#include "script.h"
+#include "battle_tower.h"
+#include "mevent.h"
+#include "mystery_event_script.h"
+#include "mevent_client.h"
+
+EWRAM_DATA struct mevent_client * s_mevent_client_ptr = NULL;
+
+static void mevent_client_init(struct mevent_client *, u32, u32);
+static u32 mevent_client_exec(struct mevent_client *);
+static void mevent_client_free_resources(struct mevent_client *);
+
+extern const struct mevent_client_cmd gUnknown_082F2598[];
+
+void mevent_client_do_init(u32 arg)
+{
+ s_mevent_client_ptr = AllocZeroed(sizeof(struct mevent_client));
+ mevent_client_init(s_mevent_client_ptr, 1, 0);
+ s_mevent_client_ptr->unk_4C = arg;
+}
+
+u32 mevent_client_do_exec(u16 * a0)
+{
+ u32 result;
+ if (s_mevent_client_ptr == NULL)
+ return 6;
+ result = mevent_client_exec(s_mevent_client_ptr);
+ if (result == 6)
+ {
+ *a0 = s_mevent_client_ptr->param;
+ mevent_client_free_resources(s_mevent_client_ptr);
+ Free(s_mevent_client_ptr);
+ s_mevent_client_ptr = NULL;
+ }
+ return result;
+}
+
+void mevent_client_inc_flag(void)
+{
+ s_mevent_client_ptr->flag++;
+}
+
+void * mevent_client_get_buffer(void)
+{
+ return s_mevent_client_ptr->buffer;
+}
+
+void mevent_client_set_param(u32 a0)
+{
+ s_mevent_client_ptr->param = a0;
+}
+
+static void mevent_client_init(struct mevent_client * svr, u32 sendPlayerNo, u32 recvPlayerNo)
+{
+ svr->unk_00 = 0;
+ svr->mainseqno = 0;
+ svr->flag = 0;
+ svr->sendBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
+ svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
+ svr->cmdBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
+ svr->buffer = AllocZeroed(0x40);
+ mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo);
+}
+
+static void mevent_client_free_resources(struct mevent_client * svr)
+{
+ Free(svr->sendBuffer);
+ Free(svr->recvBuffer);
+ Free(svr->cmdBuffer);
+ Free(svr->buffer);
+}
+
+static void mevent_client_jmp_buffer(struct mevent_client * svr)
+{
+ memcpy(svr->cmdBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE);
+ svr->cmdidx = 0;
+}
+
+static void mevent_client_send_word(struct mevent_client * svr, u32 ident, u32 word)
+{
+ CpuFill32(0, svr->sendBuffer, ME_SEND_BUF_SIZE);
+ *(u32 *)svr->sendBuffer = word;
+ mevent_srv_sub_init_send(&svr->manager, ident, svr->sendBuffer, sizeof(u32));
+}
+
+static u32 mainseq_0(struct mevent_client * svr)
+{
+ // init
+ memcpy(svr->cmdBuffer, gUnknown_082F2598, ME_SEND_BUF_SIZE);
+ svr->cmdidx = 0;
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ return 0;
+}
+
+static u32 mainseq_1(struct mevent_client * svr)
+{
+ // done
+ return 6;
+}
+
+
+static u32 mainseq_2(struct mevent_client * svr)
+{
+ // do recv
+ if (mevent_srv_sub_recv(&svr->manager))
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 mainseq_3(struct mevent_client * svr)
+{
+ // do send
+ if (mevent_srv_sub_send(&svr->manager))
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 mainseq_4(struct mevent_client * svr)
+{
+ // process command
+ struct mevent_client_cmd * cmd = &svr->cmdBuffer[svr->cmdidx];
+ ++svr->cmdidx;
+ switch (cmd->instr)
+ {
+ case 0:
+ break;
+ case 1:
+ svr->param = cmd->parameter;
+ svr->mainseqno = 1;
+ svr->flag = 0;
+ break;
+ case 2:
+ mevent_srv_sub_init_recv(&svr->manager, cmd->parameter, svr->recvBuffer);
+ svr->mainseqno = 2;
+ svr->flag = 0;
+ break;
+ case 3:
+ svr->mainseqno = 3;
+ svr->flag = 0;
+ break;
+ case 20:
+ mevent_srv_sub_init_send(&svr->manager, 0x14, svr->sendBuffer, 0);
+ svr->mainseqno = 3;
+ svr->flag = 0;
+ break;
+ case 19:
+ mevent_client_send_word(svr, 0x12, GetGameStat(cmd->parameter));
+ svr->mainseqno = 3;
+ svr->flag = 0;
+ break;
+ case 6:
+ if (svr->param == 0)
+ mevent_client_jmp_buffer(svr);
+ break;
+ case 7:
+ if (svr->param == 1)
+ mevent_client_jmp_buffer(svr);
+ break;
+ case 4:
+ mevent_client_jmp_buffer(svr);
+ break;
+ case 5:
+ memcpy(svr->buffer, svr->recvBuffer, 0x40);
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 2;
+ case 11:
+ memcpy(svr->buffer, svr->recvBuffer, 0x40);
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 3;
+ case 12:
+ memcpy(svr->buffer, svr->recvBuffer, 0x40);
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 5;
+ case 13:
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 4;
+ case 8:
+ sub_801B580(svr->sendBuffer, svr->unk_4C);
+ mevent_srv_sub_init_send(&svr->manager, 0x11, svr->sendBuffer, sizeof(struct MEventStruct_Unk1442CC));
+ break;
+ case 14:
+ mevent_client_send_word(svr, 0x13, svr->param);
+ break;
+ case 10:
+ sub_801B21C(svr->recvBuffer);
+ break;
+ case 9:
+ if (!sub_801B1A4(svr->recvBuffer))
+ {
+ sub_801B078(svr->recvBuffer);
+ mevent_client_send_word(svr, 0x13, 0);
+ }
+ else
+ mevent_client_send_word(svr, 0x13, 1);
+ break;
+ case 15:
+ svr->mainseqno = 6;
+ svr->flag = 0;
+ break;
+ case 16:
+ sub_801B508(svr->recvBuffer);
+ break;
+ case 17:
+ InitRamScript_NoEventObject(svr->recvBuffer, 1000);
+ break;
+ case 18:
+ memcpy(&gSaveBlock2Ptr->frontier.ereaderTrainer, svr->recvBuffer, 0xbc);
+ ValidateEReaderTrainer();
+ break;
+ case 21:
+ memcpy(gDecompressionBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE);
+ svr->mainseqno = 7;
+ svr->flag = 0;
+ break;
+ }
+
+ return 1;
+}
+
+static u32 mainseq_5(struct mevent_client * svr)
+{
+ // wait flag
+ if (svr->flag)
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 mainseq_6(struct mevent_client * svr)
+{
+ // ???
+ switch (svr->flag)
+ {
+ case 0:
+ sub_8153870(svr->recvBuffer);
+ ++svr->flag;
+ break;
+ case 1:
+ if (!sub_8153884(&svr->param))
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ break;
+ }
+ return 1;
+}
+
+static u32 mainseq_7(struct mevent_client * svr)
+{
+ // exec arbitrary code
+ u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer;
+ if (func(&svr->param, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1)
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 mevent_client_exec(struct mevent_client * svr)
+{
+ u32 (*funcs[])(struct mevent_client *) = {
+ mainseq_0,
+ mainseq_1,
+ mainseq_2,
+ mainseq_3,
+ mainseq_4,
+ mainseq_5,
+ mainseq_6,
+ mainseq_7
+ };
+ return funcs[svr->mainseqno](svr);
+}
diff --git a/src/mevent_scripts.c b/src/mevent_scripts.c
new file mode 100644
index 000000000..41a5ddd51
--- /dev/null
+++ b/src/mevent_scripts.c
@@ -0,0 +1,191 @@
+#include "global.h"
+#include "mevent_client.h"
+#include "mevent_server.h"
+
+const u8 gText_CanceledReadingCard[] = _("Canceled reading\nthe Card.");
+
+
+const struct mevent_client_cmd gUnknown_082F2598[] = {
+ {.instr = 2, .parameter = 16},
+ {.instr = 4, .parameter = 0}
+};
+
+const struct mevent_client_cmd gUnknown_082F25A8[] = {
+ {.instr = 8, .parameter = 0},
+ {.instr = 3, .parameter = 0},
+ {.instr = 2, .parameter = 16},
+ {.instr = 4, .parameter = 0}
+};
+
+const struct mevent_client_cmd gUnknown_082F25C8[] = {
+ {.instr = 20, .parameter = 0},
+ {.instr = 1, .parameter = 10}
+};
+
+const struct mevent_client_cmd gUnknown_082F25D8[] = {
+ {.instr = 20, .parameter = 0},
+ {.instr = 1, .parameter = 11}
+};
+
+const struct mevent_client_cmd gUnknown_082F25E8[] = {
+ {.instr = 20, .parameter = 0},
+ {.instr = 1, .parameter = 0}
+};
+
+const struct mevent_client_cmd gUnknown_082F25F8[] = {
+ {.instr = 2, .parameter = 22},
+ {.instr = 10, .parameter = 0},
+ {.instr = 2, .parameter = 25},
+ {.instr = 17, .parameter = 0},
+ {.instr = 20, .parameter = 0},
+ {.instr = 1, .parameter = 2}
+};
+
+const struct mevent_client_cmd gUnknown_082F2628[] = {
+ {.instr = 2, .parameter = 23},
+ {.instr = 9, .parameter = 0},
+ {.instr = 3, .parameter = 0},
+ {.instr = 2, .parameter = 16},
+ {.instr = 4, .parameter = 0}
+};
+
+const struct mevent_client_cmd gUnknown_082F2650[] = {
+ {.instr = 20, .parameter = 0},
+ {.instr = 1, .parameter = 7}
+};
+
+const struct mevent_client_cmd gUnknown_082F2660[] = {
+ {.instr = 20, .parameter = 0},
+ {.instr = 1, .parameter = 3}
+};
+
+const struct mevent_client_cmd gUnknown_082F2670[] = {
+ {.instr = 13, .parameter = 0},
+ {.instr = 14, .parameter = 0},
+ {.instr = 3, .parameter = 0},
+ {.instr = 2, .parameter = 16},
+ {.instr = 4, .parameter = 0}
+};
+
+const struct mevent_client_cmd gUnknown_082F2698[] = {
+ {.instr = 20, .parameter = 0},
+ {.instr = 1, .parameter = 9}
+};
+
+const struct mevent_client_cmd gUnknown_082F26A8[] = {
+ {.instr = 20, .parameter = 0},
+ {.instr = 1, .parameter = 5}
+};
+
+const struct mevent_client_cmd gUnknown_082F26B8[] = {
+ {.instr = 2, .parameter = 21},
+ {.instr = 12, .parameter = 0},
+ {.instr = 20, .parameter = 0},
+ {.instr = 1, .parameter = 14},
+ {.instr = 2, .parameter = 21},
+ {.instr = 12, .parameter = 0},
+ {.instr = 20, .parameter = 0},
+ {.instr = 1, .parameter = 13}
+};
+
+const struct mevent_cmd gUnknown_082F26F8[] = {
+ {.instr = 18, .flag = 0x10, .parameter = gUnknown_082F25C8},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x14, .parameter = NULL},
+ {.instr = 0, .flag = 0x0a, .parameter = NULL},
+ {.instr = 18, .flag = 0x10, .parameter = gUnknown_082F25D8},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x14, .parameter = NULL},
+ {.instr = 0, .flag = 0x0b, .parameter = NULL},
+ {.instr = 18, .flag = 0x10, .parameter = gUnknown_082F2698},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x14, .parameter = NULL},
+ {.instr = 0, .flag = 0x09, .parameter = NULL}
+};
+
+const struct mevent_cmd gUnknown_082F2788[] = {
+ {.instr = 18, .flag = 0x20, .parameter = gUnknown_082F26B8},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 20, .flag = 0x1b, .parameter = gText_CanceledReadingCard},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x14, .parameter = NULL},
+ {.instr = 0, .flag = 0x09, .parameter = NULL}
+};
+
+const struct mevent_cmd gUnknown_082F27D0[] = {
+ {.instr = 18, .flag = 0x10, .parameter = gUnknown_082F2650},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x14, .parameter = NULL},
+ {.instr = 0, .flag = 0x07, .parameter = NULL}
+};
+
+const struct mevent_cmd gUnknown_082F2800[] = {
+ {.instr = 18, .flag = 0x28, .parameter = gUnknown_082F2628},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 14, .flag = 0x00, .parameter = NULL},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x13, .parameter = NULL},
+ {.instr = 8, .flag = 0x00, .parameter = NULL},
+ {.instr = 4, .flag = 0x01, .parameter = gUnknown_082F27D0},
+ {.instr = 18, .flag = 0x10, .parameter = gUnknown_082F2660},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x14, .parameter = NULL},
+ {.instr = 0, .flag = 0x03, .parameter = NULL}
+};
+
+const struct mevent_cmd gUnknown_082F2884[] = {
+ {.instr = 18, .flag = 0x30, .parameter = gUnknown_082F25F8},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 13, .flag = 0x00, .parameter = NULL},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 15, .flag = 0x00, .parameter = NULL},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x14, .parameter = NULL},
+ {.instr = 0, .flag = 0x02, .parameter = NULL}
+};
+
+const struct mevent_cmd gUnknown_082F28E4[] = {
+ {.instr = 18, .flag = 0x28, .parameter = gUnknown_082F2670},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x13, .parameter = NULL},
+ {.instr = 8, .flag = 0x00, .parameter = NULL},
+ {.instr = 4, .flag = 0x00, .parameter = gUnknown_082F2884},
+ {.instr = 3, .flag = 0x00, .parameter = gUnknown_082F2788}
+};
+
+const struct mevent_cmd gUnknown_082F292C[] = {
+ {.instr = 18, .flag = 0x10, .parameter = gUnknown_082F26A8},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x14, .parameter = NULL},
+ {.instr = 0, .flag = 0x05, .parameter = NULL},
+ {.instr = 18, .flag = 0x10, .parameter = gUnknown_082F25E8},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x14, .parameter = NULL},
+ {.instr = 0, .flag = 0x00, .parameter = NULL}
+};
+
+const struct mevent_cmd s_mevent_wonder_news[] = {
+ {.instr = 27, .flag = 0x00, .parameter = NULL},
+ {.instr = 18, .flag = 0x20, .parameter = gUnknown_082F25A8},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x11, .parameter = NULL},
+ {.instr = 5, .flag = 0x00, .parameter = NULL},
+ {.instr = 30, .flag = 0x00, .parameter = NULL},
+ {.instr = 4, .flag = 0x00, .parameter = gUnknown_082F26F8},
+ {.instr = 3, .flag = 0x00, .parameter = gUnknown_082F2800}
+};
+
+const struct mevent_cmd s_mevent_wonder_card[] = {
+ {.instr = 26, .flag = 0x00, .parameter = NULL},
+ {.instr = 28, .flag = 0x00, .parameter = NULL},
+ {.instr = 18, .flag = 0x20, .parameter = gUnknown_082F25A8},
+ {.instr = 1, .flag = 0x00, .parameter = NULL},
+ {.instr = 2, .flag = 0x11, .parameter = NULL},
+ {.instr = 5, .flag = 0x00, .parameter = NULL},
+ {.instr = 6, .flag = 0x00, .parameter = NULL},
+ {.instr = 4, .flag = 0x00, .parameter = gUnknown_082F26F8},
+ {.instr = 7, .flag = 0x00, .parameter = NULL},
+ {.instr = 4, .flag = 0x02, .parameter = gUnknown_082F28E4},
+ {.instr = 4, .flag = 0x00, .parameter = gUnknown_082F2884},
+ {.instr = 3, .flag = 0x00, .parameter = gUnknown_082F292C}
+};
diff --git a/src/mevent_server.c b/src/mevent_server.c
new file mode 100644
index 000000000..06b10dd95
--- /dev/null
+++ b/src/mevent_server.c
@@ -0,0 +1,295 @@
+#include "global.h"
+#include "alloc.h"
+#include "script.h"
+#include "mevent.h"
+#include "mevent_server.h"
+#include "mevent_server_helpers.h"
+
+EWRAM_DATA struct mevent_srv_common * s_mevent_srv_common_ptr = NULL;
+
+static void mevent_srv_init_common(struct mevent_srv_common *, const void *, u32, u32);
+static void mevent_srv_free_resources(struct mevent_srv_common *);
+static u32 mevent_srv_exec_common(struct mevent_srv_common *);
+
+extern const struct mevent_cmd s_mevent_wonder_news[];
+extern const struct mevent_cmd s_mevent_wonder_card[];
+
+void mevent_srv_init_wnews(void)
+{
+ s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common));
+ mevent_srv_init_common(s_mevent_srv_common_ptr, s_mevent_wonder_news, 0, 1);
+}
+
+void mevent_srv_new_wcard(void)
+{
+ s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common));
+ mevent_srv_init_common(s_mevent_srv_common_ptr, s_mevent_wonder_card, 0, 1);
+}
+
+u32 mevent_srv_common_do_exec(u16 * a0)
+{
+ u32 result;
+ if (s_mevent_srv_common_ptr == NULL)
+ return 3;
+ result = mevent_srv_exec_common(s_mevent_srv_common_ptr);
+ if (result == 3)
+ {
+ *a0 = s_mevent_srv_common_ptr->param;
+ mevent_srv_free_resources(s_mevent_srv_common_ptr);
+ Free(s_mevent_srv_common_ptr);
+ s_mevent_srv_common_ptr = NULL;
+ }
+ return result;
+}
+
+static void mevent_srv_init_common(struct mevent_srv_common * svr, const void * cmdBuffer, u32 sendPlayerNo, u32 recvPlayerNo)
+{
+ svr->unk_00 = 0;
+ svr->mainseqno = 0;
+ svr->wonder_card = AllocZeroed(sizeof(struct WonderCard));
+ svr->wonder_news = AllocZeroed(sizeof(struct WonderNews));
+ svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
+ svr->mevent_unk1442cc = AllocZeroed(sizeof(struct MEventStruct_Unk1442CC));
+ svr->cmdBuffer = cmdBuffer;
+ svr->cmdidx = 0;
+ mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo);
+}
+
+static void mevent_srv_free_resources(struct mevent_srv_common * svr)
+{
+ Free(svr->wonder_card);
+ Free(svr->wonder_news);
+ Free(svr->recvBuffer);
+ Free(svr->mevent_unk1442cc);
+}
+
+void mevent_srv_common_init_send(struct mevent_srv_common * svr, u32 ident, const void * src, u32 size)
+{
+ AGB_ASSERT(size <= ME_SEND_BUF_SIZE);
+ mevent_srv_sub_init_send(&svr->manager, ident, src, size);
+}
+
+static const void * mevent_first_if_not_null_else_second(const void * a0, const void * a1)
+{
+ if (a0 != NULL)
+ return a0;
+ else
+ return a1;
+}
+
+static u32 mevent_compare_pointers(const void * a0, const void * a1)
+{
+ if (a1 < a0)
+ return 0;
+ else if (a1 == a0)
+ return 1;
+ else
+ return 2;
+}
+
+static u32 common_mainseq_0(struct mevent_srv_common * svr)
+{
+ // start
+ svr->mainseqno = 4;
+ return 0;
+}
+
+static u32 common_mainseq_1(struct mevent_srv_common * svr)
+{
+ // done
+ return 3;
+}
+
+static u32 common_mainseq_2(struct mevent_srv_common * svr)
+{
+ // do recv
+ if (mevent_srv_sub_recv(&svr->manager))
+ svr->mainseqno = 4;
+ return 1;
+}
+
+static u32 common_mainseq_3(struct mevent_srv_common * svr)
+{
+ // do send
+ if (mevent_srv_sub_send(&svr->manager))
+ svr->mainseqno = 4;
+ return 1;
+}
+
+static u32 common_mainseq_4(struct mevent_srv_common * svr)
+{
+ // process command
+ const struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx];
+ const void * ptr;
+ svr->cmdidx++;
+
+ switch (cmd->instr)
+ {
+ case 0:
+ // end
+ AGB_ASSERT(cmd->parameter == NULL);
+ svr->mainseqno = 1;
+ svr->param = cmd->flag;
+ break;
+ case 1:
+ // wait_send
+ svr->mainseqno = 3;
+ break;
+ case 2:
+ // receive
+ AGB_ASSERT(cmd->parameter == NULL);
+ mevent_srv_sub_init_recv(&svr->manager, cmd->flag, svr->recvBuffer);
+ svr->mainseqno = 2;
+ break;
+ case 3:
+ // jump
+ AGB_ASSERT(cmd->flag == FALSE);
+ svr->cmdidx = 0;
+ svr->cmdBuffer = cmd->parameter;
+ break;
+ case 5:
+ // get_1442CC
+ AGB_ASSERT(cmd->flag == FALSE);
+ AGB_ASSERT(cmd->parameter == NULL);
+ memcpy(svr->mevent_unk1442cc, svr->recvBuffer, sizeof(struct MEventStruct_Unk1442CC));
+ break;
+ case 6:
+ // check_header__pass_false
+ AGB_ASSERT(cmd->flag == FALSE);
+ AGB_ASSERT(cmd->parameter == NULL);
+ svr->param = sub_801B6A0(svr->mevent_unk1442cc, FALSE);
+ break;
+ case 30:
+ // check_header__pass_true
+ AGB_ASSERT(cmd->flag == FALSE);
+ AGB_ASSERT(cmd->parameter == NULL);
+ svr->param = sub_801B6A0(svr->mevent_unk1442cc, TRUE);
+ break;
+ case 4:
+ // jump_if_eq
+ if (svr->param == cmd->flag)
+ {
+ svr->cmdidx = 0;
+ svr->cmdBuffer = cmd->parameter;
+ }
+ break;
+ case 7:
+ // check_crc
+ AGB_ASSERT(cmd->flag == FALSE);
+ ptr = mevent_first_if_not_null_else_second(cmd->parameter, svr->wonder_card);
+ svr->param = sub_801B6EC(ptr, svr->mevent_unk1442cc, ptr);
+ break;
+ case 8:
+ // read_word
+ AGB_ASSERT(cmd->flag == FALSE);
+ AGB_ASSERT(cmd->parameter == NULL);
+ svr->param = *(u32 *)svr->recvBuffer;
+ break;
+ case 9:
+ AGB_ASSERT(cmd->flag == FALSE);
+ ptr = mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord);
+ svr->param = sub_801B708(ptr, svr->mevent_unk1442cc, ptr);
+ break;
+ case 10:
+ AGB_ASSERT(cmd->parameter == NULL);
+ svr->param = MEventStruct_Unk1442CC_GetValueNFrom_unk_20(svr->mevent_unk1442cc, cmd->flag);
+ break;
+ case 11:
+ AGB_ASSERT(cmd->flag == FALSE);
+ svr->param = MEventStruct_Unk1442CC_CompareField_unk_16(svr->mevent_unk1442cc, cmd->parameter);
+ break;
+ case 12:
+ AGB_ASSERT(cmd->flag == FALSE);
+ svr->param = mevent_compare_pointers(cmd->parameter, *(void **)svr->recvBuffer);
+ break;
+ case 14:
+ AGB_ASSERT(cmd->flag == FALSE);
+ mevent_srv_common_init_send(svr, 0x17, mevent_first_if_not_null_else_second(cmd->parameter, svr->wonder_news), sizeof(struct WonderNews));
+ break;
+ case 13:
+ AGB_ASSERT(cmd->flag == FALSE);
+ mevent_srv_common_init_send(svr, 0x16, mevent_first_if_not_null_else_second(cmd->parameter, svr->wonder_card), sizeof(struct WonderCard));
+ break;
+ case 16:
+ AGB_ASSERT(cmd->flag == FALSE);
+ mevent_srv_common_init_send(svr, 0x18, mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord), 4);
+ break;
+ case 15:
+ if (cmd->parameter == NULL)
+ mevent_srv_common_init_send(svr, 0x19, svr->sendBuffer1, svr->sendBuffer1Size);
+ else
+ mevent_srv_common_init_send(svr, 0x19, cmd->parameter, cmd->flag);
+ break;
+ case 18:
+ if (cmd->parameter == NULL)
+ mevent_srv_common_init_send(svr, 0x10, svr->sendBuffer2, svr->sendBuffer2Size);
+ else
+ mevent_srv_common_init_send(svr, 0x10, cmd->parameter, cmd->flag);
+ break;
+ case 19:
+ AGB_ASSERT(cmd->flag == FALSE);
+ mevent_srv_common_init_send(svr, 0x1a, cmd->parameter, 188);
+ break;
+ case 20:
+ mevent_srv_common_init_send(svr, 0x15, cmd->parameter, cmd->flag);
+ break;
+ case 17:
+ mevent_srv_common_init_send(svr, 0x1c, cmd->parameter, cmd->flag);
+ break;
+ case 22:
+ AGB_ASSERT(cmd->flag == FALSE);
+ memcpy(svr->wonder_card, cmd->parameter, 332);
+ break;
+ case 23:
+ AGB_ASSERT(cmd->flag == FALSE);
+ memcpy(svr->wonder_news, cmd->parameter, 444);
+ break;
+ case 21:
+ AGB_ASSERT(cmd->flag == FALSE);
+ svr->sendWord = *(u32 *)cmd->parameter;
+ break;
+ case 24:
+ svr->sendBuffer1 = cmd->parameter;
+ svr->sendBuffer1Size = cmd->flag;
+ break;
+ case 25:
+ svr->sendBuffer2 = cmd->parameter;
+ svr->sendBuffer2Size = cmd->flag;
+ break;
+ case 26:
+ AGB_ASSERT(cmd->flag == FALSE && cmd->parameter == NULL);
+ memcpy(svr->wonder_card, GetSavedWonderCard(), 332);
+ WonderCard_ResetInternalReceivedFlag(svr->wonder_card);
+ break;
+ case 27:
+ AGB_ASSERT(cmd->flag == FALSE && cmd->parameter == NULL);
+ memcpy(svr->wonder_news, GetSavedWonderNews(), 444);
+ break;
+ case 28:
+ AGB_ASSERT(cmd->flag == FALSE && cmd->parameter == NULL);
+ svr->sendBuffer1 = GetSavedRamScriptIfValid();
+ break;
+ case 29:
+ mevent_srv_common_init_send(svr, 0x1b, cmd->parameter, cmd->flag);
+ break;
+ }
+
+ return 1;
+}
+
+static u32 (*const func_tbl[])(struct mevent_srv_common *) = {
+ common_mainseq_0,
+ common_mainseq_1,
+ common_mainseq_2,
+ common_mainseq_3,
+ common_mainseq_4
+};
+
+static u32 mevent_srv_exec_common(struct mevent_srv_common * svr)
+{
+ u32 response;
+ AGB_ASSERT(svr->mainseqno < NELEMS(func_tbl));
+ response = func_tbl[svr->mainseqno](svr);
+ AGB_ASSERT(svr->mainseqno < NELEMS(func_tbl));
+ return response;
+}
diff --git a/src/mevent_server_helpers.c b/src/mevent_server_helpers.c
new file mode 100644
index 000000000..9d47ba745
--- /dev/null
+++ b/src/mevent_server_helpers.c
@@ -0,0 +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)
+ {
+ LinkRfu_FatalError();
+ return FALSE;
+ }
+ else if (svr->recvIdent != header.ident)
+ {
+ LinkRfu_FatalError();
+ 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)
+ {
+ LinkRfu_FatalError();
+ 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)
+ LinkRfu_FatalError();
+ 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;
+}
diff --git a/src/mystery_gift.c b/src/mystery_gift.c
index c8b3a9060..ab3df9020 100644
--- a/src/mystery_gift.c
+++ b/src/mystery_gift.c
@@ -25,7 +25,7 @@
#include "mevent_801BAAC.h"
#include "save.h"
#include "link.h"
-#include "mevent_server_ish.h"
+#include "mevent_client.h"
#include "event_data.h"
#include "link_rfu.h"
#include "mevent_news.h"
@@ -815,11 +815,11 @@ static bool32 HandleLoadWonderCardOrNews(u8 * state, bool32 cardOrNews)
case 0:
if (cardOrNews == 0)
{
- InitWonderCardResources(sav1_get_mevent_buffer_1(), sav1_get_mevent_buffer_2());
+ InitWonderCardResources(GetSavedWonderCard(), sav1_get_mevent_buffer_2());
}
else
{
- InitWonderNewsResources(sav1_get_mevent_buffer_0());
+ InitWonderNewsResources(GetSavedWonderNews());
}
(*state)++;
break;
@@ -1269,7 +1269,7 @@ void task00_mystery_gift(u8 taskId)
{
ClearScreenInBg0(TRUE);
data->state = 7;
- mevent_srv_ish_do_init(data->IsCardOrNews);
+ mevent_client_do_init(data->IsCardOrNews);
}
else if (gSpecialVar_Result == 5)
{
@@ -1282,7 +1282,7 @@ void task00_mystery_gift(u8 taskId)
data->state = 8;
break;
case 8:
- switch (mevent_srv_ish_do_exec(&data->curPromptWindowId))
+ switch (mevent_client_do_exec(&data->curPromptWindowId))
{
case 6:
task_add_05_task_del_08FA224_when_no_RfuFunc();
@@ -1290,8 +1290,8 @@ void task00_mystery_gift(u8 taskId)
data->state = 13;
break;
case 5:
- memcpy(data->buffer, mevent_srv_ish_get_buffer(), 0x40);
- mevent_srv_ish_inc_flag();
+ memcpy(data->buffer, mevent_client_get_buffer(), 0x40);
+ mevent_client_inc_flag();
break;
case 3:
data->state = 10;
@@ -1306,29 +1306,29 @@ void task00_mystery_gift(u8 taskId)
}
break;
case 9:
- switch ((u32)mevent_message_print_and_prompt_yes_no(&data->textState, &data->curPromptWindowId, FALSE, mevent_srv_ish_get_buffer()))
+ switch ((u32)mevent_message_print_and_prompt_yes_no(&data->textState, &data->curPromptWindowId, FALSE, mevent_client_get_buffer()))
{
case 0:
- mevent_srv_ish_set_param(0);
- mevent_srv_ish_inc_flag();
+ mevent_client_set_param(0);
+ mevent_client_inc_flag();
data->state = 7;
break;
case 1:
- mevent_srv_ish_set_param(1);
- mevent_srv_ish_inc_flag();
+ mevent_client_set_param(1);
+ mevent_client_inc_flag();
data->state = 7;
break;
case -1u:
- mevent_srv_ish_set_param(1);
- mevent_srv_ish_inc_flag();
+ mevent_client_set_param(1);
+ mevent_client_inc_flag();
data->state = 7;
break;
}
break;
case 10:
- if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, mevent_srv_ish_get_buffer()))
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, mevent_client_get_buffer()))
{
- mevent_srv_ish_inc_flag();
+ mevent_client_inc_flag();
data->state = 7;
}
break;
@@ -1342,19 +1342,19 @@ void task00_mystery_gift(u8 taskId)
}
else
{
- mevent_srv_ish_set_param(0);
- mevent_srv_ish_inc_flag();
+ mevent_client_set_param(0);
+ mevent_client_inc_flag();
data->state = 7;
}
break;
case 1:
- mevent_srv_ish_set_param(1);
- mevent_srv_ish_inc_flag();
+ mevent_client_set_param(1);
+ mevent_client_inc_flag();
data->state = 7;
break;
case -1u:
- mevent_srv_ish_set_param(1);
- mevent_srv_ish_inc_flag();
+ mevent_client_set_param(1);
+ mevent_client_inc_flag();
data->state = 7;
break;
}
@@ -1363,18 +1363,18 @@ void task00_mystery_gift(u8 taskId)
switch ((u32)mevent_message_print_and_prompt_yes_no(&data->textState, &data->curPromptWindowId, FALSE, gText_HaventReceivedCardsGift))
{
case 0:
- mevent_srv_ish_set_param(0);
- mevent_srv_ish_inc_flag();
+ mevent_client_set_param(0);
+ mevent_client_inc_flag();
data->state = 7;
break;
case 1:
- mevent_srv_ish_set_param(1);
- mevent_srv_ish_inc_flag();
+ mevent_client_set_param(1);
+ mevent_client_inc_flag();
data->state = 7;
break;
case -1u:
- mevent_srv_ish_set_param(1);
- mevent_srv_ish_inc_flag();
+ mevent_client_set_param(1);
+ mevent_client_inc_flag();
data->state = 7;
break;
}
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 3b8ba037c..e43a259e7 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -449,7 +449,7 @@ static u8 sub_80E3274(void)
static bool8 MainState_BeginFadeIn(void)
{
sub_80E4CF8(3, gUnknown_08DD4544);
- gNamingScreenData->currentPage = 1;
+ gNamingScreenData->currentPage = PAGE_UPPER;
sub_80E4CF8(2, gUnknown_08DD46E0);
sub_80E4CF8(1, gUnknown_08DD4620);
sub_80E4DE4(gNamingScreenData->windows[1], 0);
@@ -1856,7 +1856,7 @@ static const struct NamingScreenTemplate playerNamingScreenTemplate =
.maxChars = 7,
.iconFunction = 1,
.addGenderIcon = 0,
- .initialPage = 1,
+ .initialPage = PAGE_UPPER,
.unused = 35,
.title = gText_YourName,
};
@@ -1867,7 +1867,7 @@ static const struct NamingScreenTemplate pcBoxNamingTemplate =
.maxChars = 8,
.iconFunction = 2,
.addGenderIcon = 0,
- .initialPage = 1,
+ .initialPage = PAGE_UPPER,
.unused = 19,
.title = gText_BoxName,
};
@@ -1878,7 +1878,7 @@ static const struct NamingScreenTemplate monNamingScreenTemplate =
.maxChars = 10,
.iconFunction = 3,
.addGenderIcon = 1,
- .initialPage = 1,
+ .initialPage = PAGE_UPPER,
.unused = 35,
.title = gText_PkmnsNickname,
};
@@ -1889,7 +1889,7 @@ static const struct NamingScreenTemplate wandaWordsScreenTemplate =
.maxChars = 15,
.iconFunction = 4,
.addGenderIcon = 0,
- .initialPage = 1,
+ .initialPage = PAGE_UPPER,
.unused = 11,
.title = gText_TellHimTheWords,
};
diff --git a/src/overworld.c b/src/overworld.c
index ae6efefd7..9ed147c0a 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -2287,7 +2287,7 @@ static void SetKeyInterceptCallback(u16 (*func)(u32))
static void CheckRfuKeepAliveTimer(void)
{
if (gWirelessCommType != 0 && ++sRfuKeepAliveTimer > 60)
- sub_8010198();
+ LinkRfu_FatalError();
}
static void ResetAllTradingStates(void)
diff --git a/src/pokemon.c b/src/pokemon.c
index 984c484a2..a75701cb0 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -5463,7 +5463,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
if (gEvolutionTable[species][i].param == heldItem)
{
heldItem = 0;
- SetMonData(mon, MON_DATA_HELD_ITEM, (u8 *)&heldItem);
+ SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem);
targetSpecies = gEvolutionTable[species][i].targetSpecies;
}
break;
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 314504600..125a57c01 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -281,7 +281,7 @@ bool8 ScrCmd_callstd_if(struct ScriptContext *ctx)
return FALSE;
}
-bool8 ScrCmd_gotoram(struct ScriptContext *ctx)
+bool8 ScrCmd_returnram(struct ScriptContext *ctx)
{
ScriptJump(ctx, gUnknown_020375C0);
return FALSE;
@@ -2215,9 +2215,9 @@ bool8 ScrCmd_checkmonobedience(struct ScriptContext *ctx)
return FALSE;
}
-bool8 ScrCmd_cmdCF(struct ScriptContext *ctx)
+bool8 ScrCmd_gotoram(struct ScriptContext *ctx)
{
- const u8* v1 = sub_8099244();
+ const u8* v1 = GetSavedRamScriptIfValid();
if (v1)
{
diff --git a/src/script.c b/src/script.c
index cb06300bf..27476dba3 100644
--- a/src/script.c
+++ b/src/script.c
@@ -386,7 +386,7 @@ const u8 *GetRamScript(u8 objectId, const u8 *script)
}
}
-bool32 sub_80991F8(void)
+bool32 ValidateSavedRamScript(void)
{
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
if (scriptData->magic != RAM_SCRIPT_MAGIC)
@@ -402,7 +402,7 @@ bool32 sub_80991F8(void)
return TRUE;
}
-u8 *sub_8099244(void)
+u8 *GetSavedRamScriptIfValid(void)
{
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
if (!ValidateReceivedWonderCard())
@@ -426,7 +426,7 @@ u8 *sub_8099244(void)
}
}
-void sub_80992A0(u8 *script, u16 scriptSize)
+void InitRamScript_NoEventObject(u8 *script, u16 scriptSize)
{
if (scriptSize > sizeof(gSaveBlock1Ptr->ramScript.data.script))
scriptSize = sizeof(gSaveBlock1Ptr->ramScript.data.script);
diff --git a/src/util.c b/src/util.c
index 47112774a..8aa54857a 100644
--- a/src/util.c
+++ b/src/util.c
@@ -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;
diff --git a/sym_ewram.txt b/sym_ewram.txt
index fa0306b1e..ff27b4cfb 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -7,19 +7,16 @@
.include "src/link.o"
.include "src/link_rfu.o"
.include "src/union_room.o"
- .include "src/mystery_gift.o"
- .include "src/union_room_player_avatar.o"
- .include "src/union_room_battle.o"
+ .include "src/mystery_gift.o"
+ .include "src/union_room_player_avatar.o"
+ .include "src/union_room_battle.o"
.include "src/mevent2.o"
.include "src/mevent_801BAAC.o"
+ .include "src/mevent_server.o"
+ .include "src/mevent_client.o"
- @ mevent_server
-gUnknown_02022C7C: @ 2022C7C
- .space 0x4
-
-s_mevent_srv_ish_ptr: @ 2022C80
- .space 0x4
-
+ @ union_room_chat
+ .align 2
gUnknown_02022C84: @ 2022C84
.space 0x4