summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-10-28 15:55:57 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-10-28 15:55:57 -0400
commitefe914a5bab5062834f35cbae7824d1703f45618 (patch)
treeb047c6c07890a7e30ef3f127d534b7fe12051b03
parente9cf9fc104ceedd50330af6b22c6e896e85930e1 (diff)
trade through sub_804E944
-rw-r--r--asm/party_menu.s2
-rw-r--r--asm/pokemon_storage_system.s2
-rw-r--r--asm/pokemon_summary_screen.s10
-rw-r--r--asm/trade.s1796
-rw-r--r--include/overworld.h1
-rw-r--r--include/pokemon_summary_screen.h2
-rw-r--r--include/strings.h3
-rw-r--r--src/random.c6
-rw-r--r--src/trade.c571
9 files changed, 585 insertions, 1808 deletions
diff --git a/asm/party_menu.s b/asm/party_menu.s
index c2eecaf14..b10cfa8f5 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -8681,7 +8681,7 @@ _08122D8C:
ldr r3, _08122DB8 @ =sub_8122DBC
movs r4, 0
str r4, [sp]
- bl sub_81344F8
+ bl ShowPokemonSummaryScreen
add sp, 0x4
pop {r4}
pop {r0}
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index ec0e9e53c..3a6f541b0 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -6561,7 +6561,7 @@ _0808EE78:
mov r0, r8
adds r1, r6, 0
adds r2, r5, 0
- bl sub_81344F8
+ bl ShowPokemonSummaryScreen
b _0808EEF6
.align 2, 0
_0808EEAC: .4byte gUnknown_20397B0
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 4c090a2d9..ceca3ed12 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start sub_81344F8
-sub_81344F8: @ 81344F8
+ thumb_func_start ShowPokemonSummaryScreen
+ShowPokemonSummaryScreen: @ 81344F8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -268,7 +268,7 @@ _08134728: .4byte 0x0000322c
_0813472C: .4byte 0x00003290
_08134730: .4byte 0x00003204
_08134734: .4byte sub_8135C34
- thumb_func_end sub_81344F8
+ thumb_func_end ShowPokemonSummaryScreen
thumb_func_start ShowSelectMovePokemonSummaryScreen
ShowSelectMovePokemonSummaryScreen: @ 8134738
@@ -283,7 +283,7 @@ ShowSelectMovePokemonSummaryScreen: @ 8134738
lsrs r5, 16
movs r4, 0x2
str r4, [sp]
- bl sub_81344F8
+ bl ShowPokemonSummaryScreen
ldr r0, _08134764 @ =gUnknown_203B140
ldr r0, [r0]
ldr r1, _08134768 @ =0x00003260
@@ -14091,7 +14091,7 @@ sub_813B854: @ 813B854
str r0, [sp]
movs r1, 0
movs r2, 0
- bl sub_81344F8
+ bl ShowPokemonSummaryScreen
add sp, 0x4
pop {r0}
bx r0
diff --git a/asm/trade.s b/asm/trade.s
index 34465a17b..fe750b735 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -5,1802 +5,6 @@
.text
- thumb_func_start sub_804DBAC
-sub_804DBAC: @ 804DBAC
- push {lr}
- ldr r0, _0804DBC8 @ =gUnknown_841E0A5
- ldr r1, _0804DBCC @ =gUnknown_2031DA8
- ldr r1, [r1]
- adds r1, 0x72
- ldrh r1, [r1]
- lsls r1, 5
- ldr r2, _0804DBD0 @ =0x06010000
- adds r1, r2
- movs r2, 0x18
- bl sub_804F728
- pop {r0}
- bx r0
- .align 2, 0
-_0804DBC8: .4byte gUnknown_841E0A5
-_0804DBCC: .4byte gUnknown_2031DA8
-_0804DBD0: .4byte 0x06010000
- thumb_func_end sub_804DBAC
-
- thumb_func_start sub_804DBD4
-sub_804DBD4: @ 804DBD4
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- movs r2, 0x1
- adds r0, r4, 0
- ands r0, r2
- cmp r0, 0
- beq _0804DC58
- ldr r0, _0804DBFC @ =gBlockRecvBuffer
- ldrh r1, [r0]
- ldr r0, _0804DC00 @ =0x0000bbbb
- cmp r1, r0
- beq _0804DC38
- cmp r1, r0
- bgt _0804DC08
- ldr r0, _0804DC04 @ =0x0000aabb
- cmp r1, r0
- beq _0804DC28
- b _0804DC52
- .align 2, 0
-_0804DBFC: .4byte gBlockRecvBuffer
-_0804DC00: .4byte 0x0000bbbb
-_0804DC04: .4byte 0x0000aabb
-_0804DC08:
- ldr r0, _0804DC1C @ =0x0000bbcc
- cmp r1, r0
- beq _0804DC48
- ldr r0, _0804DC20 @ =0x0000eeaa
- cmp r1, r0
- bne _0804DC52
- ldr r0, _0804DC24 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x78
- b _0804DC4E
- .align 2, 0
-_0804DC1C: .4byte 0x0000bbcc
-_0804DC20: .4byte 0x0000eeaa
-_0804DC24: .4byte gUnknown_2031DA8
-_0804DC28:
- ldr r0, _0804DC34 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x78
- strb r2, [r0]
- b _0804DC52
- .align 2, 0
-_0804DC34: .4byte gUnknown_2031DA8
-_0804DC38:
- ldr r0, _0804DC44 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x7A
- strb r2, [r0]
- b _0804DC52
- .align 2, 0
-_0804DC44: .4byte gUnknown_2031DA8
-_0804DC48:
- ldr r0, _0804DC80 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x7A
-_0804DC4E:
- movs r1, 0x2
- strb r1, [r0]
-_0804DC52:
- movs r0, 0
- bl ResetBlockReceivedFlag
-_0804DC58:
- movs r2, 0x2
- adds r0, r4, 0
- ands r0, r2
- cmp r0, 0
- beq _0804DCEA
- ldr r3, _0804DC84 @ =gBlockRecvBuffer
- movs r1, 0x80
- lsls r1, 1
- adds r0, r3, r1
- ldrh r1, [r0]
- ldr r0, _0804DC88 @ =0x0000bbbb
- cmp r1, r0
- beq _0804DCCC
- cmp r1, r0
- bgt _0804DC90
- ldr r0, _0804DC8C @ =0x0000aabb
- cmp r1, r0
- beq _0804DCB0
- b _0804DCE4
- .align 2, 0
-_0804DC80: .4byte gUnknown_2031DA8
-_0804DC84: .4byte gBlockRecvBuffer
-_0804DC88: .4byte 0x0000bbbb
-_0804DC8C: .4byte 0x0000aabb
-_0804DC90:
- ldr r0, _0804DCA4 @ =0x0000bbcc
- cmp r1, r0
- beq _0804DCDC
- ldr r0, _0804DCA8 @ =0x0000eeaa
- cmp r1, r0
- bne _0804DCE4
- ldr r0, _0804DCAC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x79
- b _0804DCE2
- .align 2, 0
-_0804DCA4: .4byte 0x0000bbcc
-_0804DCA8: .4byte 0x0000eeaa
-_0804DCAC: .4byte gUnknown_2031DA8
-_0804DCB0:
- ldr r2, _0804DCC8 @ =gUnknown_2031DA8
- ldr r1, [r2]
- movs r4, 0x81
- lsls r4, 1
- adds r0, r3, r4
- ldrb r0, [r0]
- adds r0, 0x6
- adds r1, 0x7E
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0x79
- b _0804DCD2
- .align 2, 0
-_0804DCC8: .4byte gUnknown_2031DA8
-_0804DCCC:
- ldr r0, _0804DCD8 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x7B
-_0804DCD2:
- movs r1, 0x1
- strb r1, [r0]
- b _0804DCE4
- .align 2, 0
-_0804DCD8: .4byte gUnknown_2031DA8
-_0804DCDC:
- ldr r0, _0804DCF0 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x7B
-_0804DCE2:
- strb r2, [r0]
-_0804DCE4:
- movs r0, 0x1
- bl ResetBlockReceivedFlag
-_0804DCEA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804DCF0: .4byte gUnknown_2031DA8
- thumb_func_end sub_804DBD4
-
- thumb_func_start sub_804DCF4
-sub_804DCF4: @ 804DCF4
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r1, 24
- lsrs r5, r1, 24
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _0804DDD6
- ldr r2, _0804DD20 @ =gBlockRecvBuffer
- ldrh r1, [r2]
- ldr r0, _0804DD24 @ =0x0000ddee
- cmp r1, r0
- beq _0804DDC0
- cmp r1, r0
- bgt _0804DD30
- ldr r0, _0804DD28 @ =0x0000ccdd
- cmp r1, r0
- beq _0804DDA0
- ldr r0, _0804DD2C @ =0x0000dddd
- cmp r1, r0
- beq _0804DD6C
- b _0804DDD0
- .align 2, 0
-_0804DD20: .4byte gBlockRecvBuffer
-_0804DD24: .4byte 0x0000ddee
-_0804DD28: .4byte 0x0000ccdd
-_0804DD2C: .4byte 0x0000dddd
-_0804DD30:
- ldr r0, _0804DD40 @ =0x0000eebb
- cmp r1, r0
- beq _0804DD44
- adds r0, 0x11
- cmp r1, r0
- beq _0804DD68
- b _0804DDD0
- .align 2, 0
-_0804DD40: .4byte 0x0000eebb
-_0804DD44:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x4
- bl sub_804F5BC
- ldr r0, _0804DD64 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0xB
- b _0804DDCE
- .align 2, 0
-_0804DD64: .4byte gUnknown_2031DA8
-_0804DD68:
- movs r0, 0x5
- b _0804DDC2
-_0804DD6C:
- ldr r4, _0804DD9C @ =gUnknown_2031DA8
- ldr r1, [r4]
- ldrb r0, [r2, 0x2]
- adds r0, 0x6
- adds r1, 0x7E
- strb r0, [r1]
- movs r0, 0
- bl rbox_fill_rectangle
- ldr r0, [r4]
- adds r0, 0x35
- ldrb r0, [r0]
- bl sub_804EAAC
- ldr r0, [r4]
- adds r0, 0x7E
- ldrb r0, [r0]
- bl sub_804EAAC
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x7
- b _0804DDCE
- .align 2, 0
-_0804DD9C: .4byte gUnknown_2031DA8
-_0804DDA0:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0804DDBC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0xA
- b _0804DDCE
- .align 2, 0
-_0804DDBC: .4byte gUnknown_2031DA8
-_0804DDC0:
- movs r0, 0x1
-_0804DDC2:
- bl sub_804F5BC
- ldr r0, _0804DDEC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x8
-_0804DDCE:
- strb r1, [r0]
-_0804DDD0:
- movs r0, 0
- bl ResetBlockReceivedFlag
-_0804DDD6:
- movs r0, 0x2
- ands r0, r5
- cmp r0, 0
- beq _0804DDE4
- movs r0, 0x1
- bl ResetBlockReceivedFlag
-_0804DDE4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804DDEC: .4byte gUnknown_2031DA8
- thumb_func_end sub_804DCF4
-
- thumb_func_start sub_804DDF0
-sub_804DDF0: @ 804DDF0
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r6, _0804DE4C @ =gUnknown_2031DA8
- ldr r2, [r6]
- adds r1, r2, 0
- adds r1, 0x78
- ldrb r0, [r1]
- cmp r0, 0
- bne _0804DE04
- b _0804DF38
-_0804DE04:
- adds r0, r2, 0
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804DE10
- b _0804DF38
-_0804DE10:
- ldrh r1, [r1]
- ldr r0, _0804DE50 @ =0x00000101
- cmp r1, r0
- bne _0804DE58
- adds r1, r2, 0
- adds r1, 0x6F
- movs r0, 0x6
- strb r0, [r1]
- ldr r2, [r6]
- adds r1, r2, 0
- adds r1, 0x80
- movs r4, 0
- ldr r0, _0804DE54 @ =0x0000dddd
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0x35
- ldrb r1, [r0]
- adds r0, 0x4D
- strh r1, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r0, [r6]
- adds r2, r0, 0
- adds r2, 0x79
- strb r4, [r2]
- adds r0, 0x78
- strb r4, [r0]
- b _0804DF38
- .align 2, 0
-_0804DE4C: .4byte gUnknown_2031DA8
-_0804DE50: .4byte 0x00000101
-_0804DE54: .4byte 0x0000dddd
-_0804DE58:
- ldr r0, _0804DEA0 @ =0x00000201
- cmp r1, r0
- bne _0804DEA8
- movs r0, 0x1
- bl sub_804F5BC
- ldr r1, [r6]
- adds r2, r1, 0
- adds r2, 0x80
- movs r4, 0
- movs r3, 0
- ldr r0, _0804DEA4 @ =0x0000eecc
- strh r0, [r2]
- adds r1, 0x82
- strh r3, [r1]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x7B
- strb r4, [r1]
- adds r0, 0x7A
- strb r4, [r0]
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x79
- strb r4, [r1]
- adds r0, 0x78
- strb r4, [r0]
- ldr r0, [r6]
- adds r0, 0x6F
- movs r1, 0x8
- b _0804DF36
- .align 2, 0
-_0804DEA0: .4byte 0x00000201
-_0804DEA4: .4byte 0x0000eecc
-_0804DEA8:
- movs r0, 0x81
- lsls r0, 1
- cmp r1, r0
- bne _0804DEF4
- movs r0, 0x5
- bl sub_804F5BC
- ldr r1, [r6]
- adds r2, r1, 0
- adds r2, 0x80
- movs r4, 0
- movs r3, 0
- ldr r0, _0804DEF0 @ =0x0000ddee
- strh r0, [r2]
- adds r1, 0x82
- strh r3, [r1]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x7B
- strb r4, [r1]
- adds r0, 0x7A
- strb r4, [r0]
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x79
- strb r4, [r1]
- adds r0, 0x78
- strb r4, [r0]
- ldr r0, [r6]
- adds r0, 0x6F
- movs r1, 0x8
- b _0804DF36
- .align 2, 0
-_0804DEF0: .4byte 0x0000ddee
-_0804DEF4:
- ldr r0, _0804DFD8 @ =0x00000202
- cmp r1, r0
- bne _0804DF38
- adds r1, r2, 0
- adds r1, 0x80
- movs r5, 0
- movs r4, 0
- ldr r0, _0804DFDC @ =0x0000eebb
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0x82
- strh r4, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x79
- strb r5, [r1]
- adds r0, 0x78
- strb r5, [r0]
- ldr r0, [r6]
- adds r0, 0x6F
- movs r1, 0xB
-_0804DF36:
- strb r1, [r0]
-_0804DF38:
- ldr r5, _0804DFE0 @ =gUnknown_2031DA8
- ldr r3, [r5]
- adds r1, r3, 0
- adds r1, 0x7A
- ldrb r0, [r1]
- cmp r0, 0
- beq _0804DFD0
- adds r0, r3, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804DFD0
- ldrh r1, [r1]
- ldr r0, _0804DFE4 @ =0x00000101
- cmp r1, r0
- bne _0804DF86
- adds r1, r3, 0
- adds r1, 0x80
- movs r4, 0
- movs r2, 0
- ldr r0, _0804DFE8 @ =0x0000ccdd
- strh r0, [r1]
- adds r0, r3, 0
- adds r0, 0x82
- strh r2, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r0, [r5]
- adds r0, 0x7A
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x7B
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x6F
- movs r1, 0x9
- strb r1, [r0]
-_0804DF86:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7A
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0804DF9C
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0804DFD0
-_0804DF9C:
- movs r0, 0x1
- bl sub_804F5BC
- ldr r1, [r5]
- adds r2, r1, 0
- adds r2, 0x80
- movs r4, 0
- movs r3, 0
- ldr r0, _0804DFEC @ =0x0000ddee
- strh r0, [r2]
- adds r1, 0x82
- strh r3, [r1]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r0, [r5]
- adds r0, 0x7A
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x7B
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x6F
- movs r1, 0x8
- strb r1, [r0]
-_0804DFD0:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804DFD8: .4byte 0x00000202
-_0804DFDC: .4byte 0x0000eebb
-_0804DFE0: .4byte gUnknown_2031DA8
-_0804DFE4: .4byte 0x00000101
-_0804DFE8: .4byte 0x0000ccdd
-_0804DFEC: .4byte 0x0000ddee
- thumb_func_end sub_804DDF0
-
- thumb_func_start sub_804DFF0
-sub_804DFF0: @ 804DFF0
- push {r4,lr}
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r4, r0, 24
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0804E018
- cmp r4, 0
- bne _0804E012
- movs r0, 0
- bl sub_804DBD4
- b _0804E018
-_0804E012:
- adds r0, r4, 0
- bl sub_804DCF4
-_0804E018:
- cmp r4, 0
- bne _0804E020
- bl sub_804DDF0
-_0804E020:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804DFF0
-
- thumb_func_start sub_804E028
-sub_804E028: @ 804E028
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r6, 0
- movs r5, 0
- ldr r2, _0804E05C @ =gUnknown_2031DA8
- ldr r3, [r2]
- ldr r4, _0804E060 @ =gUnknown_8261D08
- lsls r2, r1, 1
- adds r2, r1
- lsls r2, 1
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r3, 0x38
- adds r2, r1
- adds r2, r4
-_0804E04E:
- ldrb r1, [r2]
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0804E064
- adds r6, r1, 0
- b _0804E06C
- .align 2, 0
-_0804E05C: .4byte gUnknown_2031DA8
-_0804E060: .4byte gUnknown_8261D08
-_0804E064:
- adds r2, 0x1
- adds r5, 0x1
- cmp r5, 0x5
- ble _0804E04E
-_0804E06C:
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_804E028
-
- thumb_func_start TradeMenuMoveCursor
-TradeMenuMoveCursor: @ 804E074
- push {r4-r7,lr}
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r7]
- bl sub_804E028
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xC
- bne _0804E0CC
- ldr r5, _0804E0C4 @ =gUnknown_2031DA8
- ldr r0, [r5]
- adds r0, 0x34
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0804E0C8 @ =gSprites
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r2, [r5]
- adds r2, 0x34
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xE0
- strh r1, [r0, 0x20]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xA0
- strh r1, [r0, 0x22]
- b _0804E114
- .align 2, 0
-_0804E0C4: .4byte gUnknown_2031DA8
-_0804E0C8: .4byte gSprites
-_0804E0CC:
- ldr r4, _0804E128 @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x34
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _0804E12C @ =gSprites
- adds r0, r5
- movs r1, 0
- bl StartSpriteAnim
- ldr r4, [r4]
- adds r4, 0x34
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldr r2, _0804E130 @ =gTradeMonSpriteCoords
- lsls r3, r6, 1
- adds r0, r3, r2
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, 0x20
- strh r0, [r1, 0x20]
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r2, 0x1
- adds r3, r2
- ldrb r0, [r3]
- lsls r0, 3
- strh r0, [r1, 0x22]
-_0804E114:
- ldrb r0, [r7]
- cmp r0, r6
- beq _0804E120
- movs r0, 0x5
- bl PlaySE
-_0804E120:
- strb r6, [r7]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E128: .4byte gUnknown_2031DA8
-_0804E12C: .4byte gSprites
-_0804E130: .4byte gTradeMonSpriteCoords
- thumb_func_end TradeMenuMoveCursor
-
- thumb_func_start sub_804E134
-sub_804E134: @ 804E134
- push {r4,lr}
- movs r0, 0
- bl sub_804F5BC
- ldr r4, _0804E17C @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x5
- strb r1, [r0]
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0804E184
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0x80
- ldr r0, _0804E180 @ =0x0000aabb
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0x35
- ldrb r1, [r0]
- adds r0, 0x4D
- strh r1, [r0]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x80
- movs r2, 0x14
- bl SendBlock
- b _0804E18C
- .align 2, 0
-_0804E17C: .4byte gUnknown_2031DA8
-_0804E180: .4byte 0x0000aabb
-_0804E184:
- ldr r0, [r4]
- adds r0, 0x78
- movs r1, 0x1
- strb r1, [r0]
-_0804E18C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804E134
-
- thumb_func_start sub_804E194
-sub_804E194: @ 804E194
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r0, _0804E1B4 @ =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0804E1BC
- ldr r0, _0804E1B8 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x35
- movs r1, 0
- bl TradeMenuMoveCursor
- b _0804E208
- .align 2, 0
-_0804E1B4: .4byte gMain
-_0804E1B8: .4byte gUnknown_2031DA8
-_0804E1BC:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804E1D8
- ldr r0, _0804E1D4 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x35
- movs r1, 0x1
- bl TradeMenuMoveCursor
- b _0804E208
- .align 2, 0
-_0804E1D4: .4byte gUnknown_2031DA8
-_0804E1D8:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0804E1F4
- ldr r0, _0804E1F0 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x35
- movs r1, 0x2
- bl TradeMenuMoveCursor
- b _0804E208
- .align 2, 0
-_0804E1F0: .4byte gUnknown_2031DA8
-_0804E1F4:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0804E208
- ldr r0, _0804E27C @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x35
- movs r1, 0x3
- bl TradeMenuMoveCursor
-_0804E208:
- ldr r0, _0804E280 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _0804E2DE
- movs r0, 0x5
- bl PlaySE
- ldr r4, _0804E27C @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x35
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _0804E288
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0xE
- bl DrawTextBorderOuter
- movs r0, 0x1
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, _0804E284 @ =gUnknown_8261EE4
- str r0, [sp]
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x10
- movs r3, 0x2
- bl UnionRoomAndTradeMenuPrintOptions
- movs r0, 0x10
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- movs r3, 0
- bl Menu_InitCursor
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x1
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x1
- strb r1, [r0]
- b _0804E2DE
- .align 2, 0
-_0804E27C: .4byte gUnknown_2031DA8
-_0804E280: .4byte gMain
-_0804E284: .4byte gUnknown_8261EE4
-_0804E288:
- cmp r0, 0xB
- bhi _0804E2A6
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x2
- strb r1, [r0]
- b _0804E2DE
-_0804E2A6:
- cmp r0, 0xC
- bne _0804E2DE
- ldr r0, _0804E31C @ =gUnknown_8261FC4
- str r5, [sp]
- movs r1, 0xE
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x4
- strb r1, [r0]
- ldr r0, _0804E320 @ =gUnknown_8261ECC
- ldr r0, [r0, 0x10]
- ldr r1, [r4]
- adds r1, 0x72
- ldrh r1, [r1]
- lsls r1, 5
- ldr r2, _0804E324 @ =0x06010000
- adds r1, r2
- movs r2, 0x18
- bl sub_804F728
-_0804E2DE:
- ldr r0, _0804E328 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0804E314
- movs r2, 0
- ldr r3, _0804E32C @ =gUnknown_2031DA8
-_0804E2F0:
- ldr r0, [r3]
- lsls r1, r2, 1
- adds r0, 0x80
- adds r0, r1
- strh r2, [r0]
- adds r2, 0x1
- cmp r2, 0x9
- ble _0804E2F0
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0804E32C @ =gUnknown_2031DA8
- ldr r1, [r1]
- adds r1, 0x80
- movs r2, 0x14
- bl SendBlock
-_0804E314:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E31C: .4byte gUnknown_8261FC4
-_0804E320: .4byte gUnknown_8261ECC
-_0804E324: .4byte 0x06010000
-_0804E328: .4byte gMain
-_0804E32C: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E194
-
- thumb_func_start sub_804E330
-sub_804E330: @ 804E330
- push {lr}
- bl sub_804F3B4
- ldr r3, _0804E378 @ =gUnknown_2031DA8
- ldr r0, [r3]
- adds r0, 0x6F
- movs r1, 0
- strb r1, [r0]
- ldr r2, _0804E37C @ =gSprites
- ldr r0, [r3]
- adds r0, 0x34
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r0, _0804E380 @ =gUnknown_8261ECC
- ldr r0, [r0, 0x4]
- ldr r1, [r3]
- adds r1, 0x72
- ldrh r1, [r1]
- lsls r1, 5
- ldr r2, _0804E384 @ =0x06010000
- adds r1, r2
- movs r2, 0x18
- bl sub_804F728
- pop {r0}
- bx r0
- .align 2, 0
-_0804E378: .4byte gUnknown_2031DA8
-_0804E37C: .4byte gSprites
-_0804E380: .4byte gUnknown_8261ECC
-_0804E384: .4byte 0x06010000
- thumb_func_end sub_804E330
-
- thumb_func_start sub_804E388
-sub_804E388: @ 804E388
- push {lr}
- sub sp, 0x4
- bl Menu_ProcessInputNoWrapAround
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _0804E3AA
- cmp r0, r1
- ble _0804E462
- cmp r0, 0
- beq _0804E3B6
- cmp r0, 0x1
- beq _0804E3D4
- b _0804E462
-_0804E3AA:
- movs r0, 0x5
- bl PlaySE
- bl sub_804E330
- b _0804E462
-_0804E3B6:
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0804E3D0 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x2
- b _0804E460
- .align 2, 0
-_0804E3D0: .4byte gUnknown_2031DA8
-_0804E3D4:
- ldr r0, _0804E3F4 @ =gPlayerParty
- ldr r1, _0804E3F8 @ =gPlayerPartyCount
- ldrb r1, [r1]
- ldr r2, _0804E3FC @ =gUnknown_2031DA8
- ldr r2, [r2]
- adds r2, 0x35
- ldrb r2, [r2]
- bl sub_804FA14
- cmp r0, 0x5
- bhi _0804E462
- lsls r0, 2
- ldr r1, _0804E400 @ =_0804E404
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E3F4: .4byte gPlayerParty
-_0804E3F8: .4byte gPlayerPartyCount
-_0804E3FC: .4byte gUnknown_2031DA8
-_0804E400: .4byte _0804E404
- .align 2, 0
-_0804E404:
- .4byte _0804E41C
- .4byte _0804E444
- .4byte _0804E44A
- .4byte _0804E450
- .4byte _0804E44A
- .4byte _0804E450
-_0804E41C:
- bl sub_804E134
- ldr r2, _0804E43C @ =gSprites
- ldr r0, _0804E440 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x34
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- b _0804E460
- .align 2, 0
-_0804E43C: .4byte gSprites
-_0804E440: .4byte gUnknown_2031DA8
-_0804E444:
- movs r0, 0x3
- movs r1, 0x3
- b _0804E454
-_0804E44A:
- movs r0, 0x3
- movs r1, 0x6
- b _0804E454
-_0804E450:
- movs r0, 0x3
- movs r1, 0x7
-_0804E454:
- bl sub_804F488
- ldr r0, _0804E468 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x8
-_0804E460:
- strb r1, [r0]
-_0804E462:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0804E468: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E388
-
- thumb_func_start sub_804E46C
-sub_804E46C: @ 804E46C
- push {lr}
- ldr r0, _0804E490 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0804E482
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0804E48C
-_0804E482:
- movs r0, 0x5
- bl PlaySE
- bl sub_804E330
-_0804E48C:
- pop {r0}
- bx r0
- .align 2, 0
-_0804E490: .4byte gMain
- thumb_func_end sub_804E46C
-
- thumb_func_start sub_804E494
-sub_804E494: @ 804E494
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0804E4CC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804E4FC
- ldr r0, _0804E4D0 @ =gUnknown_2031DA8
- ldr r2, [r0]
- adds r3, r2, 0
- adds r3, 0x35
- ldrb r1, [r3]
- cmp r1, 0x5
- bhi _0804E4DC
- ldr r0, _0804E4D4 @ =gPlayerParty
- ldrb r1, [r3]
- adds r2, 0x36
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _0804E4D8 @ =sub_804CF14
- movs r4, 0x4
- str r4, [sp]
- bl sub_81344F8
- b _0804E4F8
- .align 2, 0
-_0804E4CC: .4byte gPaletteFade
-_0804E4D0: .4byte gUnknown_2031DA8
-_0804E4D4: .4byte gPlayerParty
-_0804E4D8: .4byte sub_804CF14
-_0804E4DC:
- ldr r0, _0804E504 @ =gEnemyParty
- subs r1, 0x6
- lsls r1, 24
- lsrs r1, 24
- adds r2, 0x37
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _0804E508 @ =sub_804CF14
- movs r4, 0x4
- str r4, [sp]
- bl sub_81344F8
-_0804E4F8:
- bl FreeAllWindowBuffers
-_0804E4FC:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E504: .4byte gEnemyParty
-_0804E508: .4byte sub_804CF14
- thumb_func_end sub_804E494
-
- thumb_func_start sub_804E50C
-sub_804E50C: @ 804E50C
- push {r4-r7,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- movs r4, 0
- movs r3, 0
- ldr r6, _0804E588 @ =gUnknown_2031DA8
- ldr r7, _0804E58C @ =gEnemyParty
- cmp r4, r1
- bge _0804E538
-_0804E524:
- cmp r2, r3
- beq _0804E532
- adds r0, r5, r3
- ldrb r0, [r0]
- adds r0, r4, r0
- lsls r0, 24
- lsrs r4, r0, 24
-_0804E532:
- adds r3, 0x1
- cmp r3, r1
- blt _0804E524
-_0804E538:
- ldr r0, [r6]
- adds r0, 0x7E
- ldrb r0, [r0]
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0x64
- muls r0, r5
- adds r0, r7
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- movs r0, 0xCD
- lsls r0, 1
- cmp r1, r0
- beq _0804E564
- cmp r1, 0x97
- bne _0804E590
-_0804E564:
- ldr r0, [r6]
- adds r0, 0x7E
- ldrb r0, [r0]
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- muls r0, r5
- adds r0, r7
- movs r1, 0x50
- bl GetMonData
- cmp r0, 0
- bne _0804E590
- movs r0, 0x2
- b _0804E598
- .align 2, 0
-_0804E588: .4byte gUnknown_2031DA8
-_0804E58C: .4byte gEnemyParty
-_0804E590:
- cmp r4, 0
- beq _0804E596
- movs r4, 0x1
-_0804E596:
- adds r0, r4, 0
-_0804E598:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804E50C
-
- thumb_func_start sub_804E5A0
-sub_804E5A0: @ 804E5A0
- push {r4,r5,lr}
- sub sp, 0xC
- movs r2, 0
- ldr r0, _0804E5F4 @ =gUnknown_2031DA8
- ldr r1, [r0]
- adds r3, r1, 0
- adds r3, 0x36
- adds r5, r0, 0
- ldrb r0, [r3]
- cmp r2, r0
- bge _0804E5CC
- adds r4, r1, 0
- adds r4, 0x45
-_0804E5BA:
- mov r1, sp
- adds r0, r1, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- ldrb r0, [r3]
- cmp r2, r0
- blt _0804E5BA
-_0804E5CC:
- adds r4, r5, 0
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x36
- ldrb r1, [r1]
- adds r0, 0x35
- ldrb r2, [r0]
- mov r0, sp
- bl sub_804E50C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0804E61C
- cmp r0, 0x1
- bgt _0804E5F8
- cmp r0, 0
- beq _0804E5FE
- b _0804E668
- .align 2, 0
-_0804E5F4: .4byte gUnknown_2031DA8
-_0804E5F8:
- cmp r0, 0x2
- beq _0804E650
- b _0804E668
-_0804E5FE:
- movs r0, 0x3
- movs r1, 0x3
- bl sub_804F488
- ldr r0, [r4]
- adds r0, 0x80
- ldr r1, _0804E618 @ =0x0000bbcc
- strh r1, [r0]
- movs r0, 0xB4
- movs r1, 0
- bl sub_804F488
- b _0804E668
- .align 2, 0
-_0804E618: .4byte 0x0000bbcc
-_0804E61C:
- movs r0, 0x3
- movs r1, 0x1
- bl sub_804F488
- ldr r0, [r4]
- adds r0, 0x80
- ldr r1, _0804E64C @ =0x0000bbbb
- strh r1, [r0]
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _0804E668
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x80
- movs r2, 0x14
- bl SendBlock
- b _0804E668
- .align 2, 0
-_0804E64C: .4byte 0x0000bbbb
-_0804E650:
- movs r0, 0x3
- movs r1, 0x8
- bl sub_804F488
- ldr r0, [r5]
- adds r0, 0x80
- ldr r1, _0804E670 @ =0x0000bbcc
- strh r1, [r0]
- movs r0, 0xB4
- movs r1, 0
- bl sub_804F488
-_0804E668:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E670: .4byte 0x0000bbcc
- thumb_func_end sub_804E5A0
-
- thumb_func_start sub_804E674
-sub_804E674: @ 804E674
- push {r4,lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0804E696
- cmp r1, 0
- bgt _0804E690
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0804E6B0
- b _0804E6EE
-_0804E690:
- cmp r1, 0x1
- beq _0804E6B0
- b _0804E6EE
-_0804E696:
- bl sub_804E5A0
- ldr r0, _0804E6AC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x64
- strb r1, [r0]
- movs r0, 0x11
- bl PutWindowTilemap
- b _0804E6EE
- .align 2, 0
-_0804E6AC: .4byte gUnknown_2031DA8
-_0804E6B0:
- movs r0, 0x3
- movs r1, 0x1
- bl sub_804F488
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _0804E6DE
- ldr r4, _0804E6F4 @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x80
- ldr r1, _0804E6F8 @ =0x0000bbcc
- strh r1, [r0]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x80
- movs r2, 0x14
- bl SendBlock
-_0804E6DE:
- ldr r0, _0804E6F4 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x64
- strb r1, [r0]
- movs r0, 0x11
- bl PutWindowTilemap
-_0804E6EE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E6F4: .4byte gUnknown_2031DA8
-_0804E6F8: .4byte 0x0000bbcc
- thumb_func_end sub_804E674
-
- thumb_func_start sub_804E6FC
-sub_804E6FC: @ 804E6FC
- push {r4-r6,lr}
- movs r5, 0
- ldr r0, _0804E740 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x37
- ldrb r0, [r0]
- subs r0, 0x4
- cmp r5, r0
- bge _0804E738
- movs r6, 0xC0
- lsls r6, 20
-_0804E712:
- lsrs r4, r6, 24
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x1
- bl CopyWindowToVram
- movs r0, 0x80
- lsls r0, 17
- adds r6, r0
- adds r5, 0x1
- ldr r0, _0804E740 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x37
- ldrb r0, [r0]
- subs r0, 0x4
- cmp r5, r0
- blt _0804E712
-_0804E738:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E740: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E6FC
-
- thumb_func_start sub_804E744
-sub_804E744: @ 804E744
- push {r4,r5,lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r5, r0, 24
- cmp r5, 0
- beq _0804E766
- cmp r5, 0
- bgt _0804E760
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- beq _0804E7B8
- b _0804E7C2
-_0804E760:
- cmp r5, 0x1
- beq _0804E7B8
- b _0804E7C2
-_0804E766:
- movs r0, 0x4
- bl sub_804F5BC
- ldr r4, _0804E7AC @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r2, r0, 0
- adds r2, 0x80
- ldr r1, _0804E7B0 @ =0x0000eeaa
- strh r1, [r2]
- adds r0, 0x82
- strh r5, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r2, _0804E7B4 @ =gSprites
- ldr r0, [r4]
- adds r0, 0x34
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x64
- strb r1, [r0]
- bl sub_804E6FC
- b _0804E7C2
- .align 2, 0
-_0804E7AC: .4byte gUnknown_2031DA8
-_0804E7B0: .4byte 0x0000eeaa
-_0804E7B4: .4byte gSprites
-_0804E7B8:
- movs r0, 0x5
- bl PlaySE
- bl sub_804E330
-_0804E7C2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_804E744
-
- thumb_func_start sub_804E7C8
-sub_804E7C8: @ 804E7C8
- push {r4,lr}
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _0804E7F0
- movs r0, 0
- bl rbox_fill_rectangle
- ldr r4, _0804E800 @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x35
- ldrb r0, [r0]
- bl sub_804EAAC
- ldr r0, [r4]
- adds r0, 0x7E
- ldrb r0, [r0]
- bl sub_804EAAC
-_0804E7F0:
- ldr r0, _0804E800 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x7
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E800: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E7C8
-
- thumb_func_start sub_804E804
-sub_804E804: @ 804E804
- push {r4,lr}
- ldr r4, _0804E828 @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x74
- ldrh r1, [r0]
- ldr r0, _0804E82C @ =0x00000505
- cmp r1, r0
- bne _0804E820
- bl sub_804DBAC
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0xE
- strb r1, [r0]
-_0804E820:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E828: .4byte gUnknown_2031DA8
-_0804E82C: .4byte 0x00000505
- thumb_func_end sub_804E804
-
- thumb_func_start sub_804E830
-sub_804E830: @ 804E830
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r4, _0804E878 @ =gUnknown_2031DA8
- ldr r1, [r4]
- adds r1, 0xA8
- ldrb r0, [r1]
- adds r0, 0x1
- movs r5, 0
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0xA8
- ldrb r0, [r0]
- cmp r0, 0x78
- bls _0804E870
- ldr r0, _0804E87C @ =gUnknown_8261FC4
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xE
- str r1, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- ldr r0, [r4]
- adds r0, 0xA8
- strb r5, [r0]
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x3
- strb r1, [r0]
-_0804E870:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E878: .4byte gUnknown_2031DA8
-_0804E87C: .4byte gUnknown_8261FC4
- thumb_func_end sub_804E830
-
- thumb_func_start sub_804E880
-sub_804E880: @ 804E880
- push {r4-r6,lr}
- ldr r0, _0804E8FC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0804E8F4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl rbox_fill_rectangle
- movs r0, 0x1
- bl rbox_fill_rectangle
- movs r6, 0
- movs r5, 0xE0
- lsls r5, 20
-_0804E8A6:
- lsrs r4, r5, 24
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0
- bl rbox_fill_rectangle
- movs r0, 0x80
- lsls r0, 17
- adds r5, r0
- adds r6, 0x1
- cmp r6, 0x3
- ble _0804E8A6
- movs r0, 0
- bl sub_804F3C8
- movs r0, 0x1
- bl sub_804F3C8
- ldr r2, _0804E900 @ =gUnknown_2031DA8
- ldr r0, [r2]
- adds r0, 0x6F
- movs r1, 0
- strb r1, [r0]
- ldr r3, _0804E904 @ =gSprites
- ldr r0, [r2]
- adds r0, 0x34
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_0804E8F4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E8FC: .4byte gMain
-_0804E900: .4byte gUnknown_2031DA8
-_0804E904: .4byte gSprites
- thumb_func_end sub_804E880
-
- thumb_func_start sub_804E908
-sub_804E908: @ 804E908
- push {lr}
- ldr r0, _0804E924 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804E93C
- ldr r0, _0804E928 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804E92C
- bl sub_800AB9C
- b _0804E932
- .align 2, 0
-_0804E924: .4byte gPaletteFade
-_0804E928: .4byte gWirelessCommType
-_0804E92C:
- movs r0, 0xC
- bl sub_800AA80
-_0804E932:
- ldr r0, _0804E940 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0xC
- strb r1, [r0]
-_0804E93C:
- pop {r0}
- bx r0
- .align 2, 0
-_0804E940: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E908
-
- thumb_func_start sub_804E944
-sub_804E944: @ 804E944
- push {lr}
- ldr r0, _0804E978 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804E988
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _0804E9AA
- ldr r0, _0804E97C @ =gUnknown_2031C90
- ldr r0, [r0]
- bl Free
- ldr r0, _0804E980 @ =gUnknown_2031DA8
- ldr r0, [r0]
- bl Free
- bl FreeAllWindowBuffers
- bl DestroyWirelessStatusIndicatorSprite
- ldr r0, _0804E984 @ =c2_8056854
- bl SetMainCallback2
- b _0804E9AA
- .align 2, 0
-_0804E978: .4byte gWirelessCommType
-_0804E97C: .4byte gUnknown_2031C90
-_0804E980: .4byte gUnknown_2031DA8
-_0804E984: .4byte c2_8056854
-_0804E988:
- ldr r0, _0804E9B0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804E9AA
- ldr r0, _0804E9B4 @ =gUnknown_2031C90
- ldr r0, [r0]
- bl Free
- ldr r0, _0804E9B8 @ =gUnknown_2031DA8
- ldr r0, [r0]
- bl Free
- bl FreeAllWindowBuffers
- ldr r0, _0804E9BC @ =c2_8056854
- bl SetMainCallback2
-_0804E9AA:
- pop {r0}
- bx r0
- .align 2, 0
-_0804E9B0: .4byte gReceivedRemoteLinkPlayers
-_0804E9B4: .4byte gUnknown_2031C90
-_0804E9B8: .4byte gUnknown_2031DA8
-_0804E9BC: .4byte c2_8056854
- thumb_func_end sub_804E944
-
thumb_func_start sub_804E9C0
sub_804E9C0: @ 804E9C0
push {lr}
diff --git a/include/overworld.h b/include/overworld.h
index 805ddc8a0..2e591a599 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -142,5 +142,6 @@ bool32 sub_8058318(void);
void CB2_ReturnToStartMenu(void);
void CB2_WhiteOut(void);
+void c2_8056854(void);
#endif //GUARD_OVERWORLD_H
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 90a67205c..b800e3d30 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -8,7 +8,6 @@ extern u8 gLastViewedMonIndex;
extern const u8 *const gMoveDescriptionPointers[];
extern const u8 *const gNatureNamePointers[];
-void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
u8 sub_8138B2C(void);
@@ -34,5 +33,6 @@ enum PokemonSummaryScreenPage
};
s32 sub_8138B20(void);
+void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4);
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/include/strings.h b/include/strings.h
index 9304b225d..43043b537 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -660,4 +660,7 @@ extern const u8 gText_FiveIsland[];
extern const u8 gText_SixIsland[];
extern const u8 gText_SevenIsland[];
+// trade
+extern const u8 gUnknown_841E0A5[];
+
#endif //GUARD_STRINGS_H
diff --git a/src/random.c b/src/random.c
index 54dae0824..f6c49971d 100644
--- a/src/random.c
+++ b/src/random.c
@@ -8,11 +8,11 @@ u32 gRngValue;
u16 Random(void)
{
- gRngValue = 1103515245 * gRngValue + 24691;
- return gRngValue >> 16;
+ gRngValue = 1103515245 * gRngValue + 24691;
+ return gRngValue >> 16;
}
void SeedRng(u16 seed)
{
- gRngValue = seed;
+ gRngValue = seed;
}
diff --git a/src/trade.c b/src/trade.c
index 42c2792ff..7c77556db 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -16,6 +16,9 @@
#include "data.h"
#include "sound.h"
#include "string_util.h"
+#include "strings.h"
+#include "menu.h"
+#include "overworld.h"
#include "party_menu.h"
#include "pokemon_summary_screen.h"
#include "pokemon_storage_system.h"
@@ -79,12 +82,16 @@ void sub_804D4F8(void);
void sub_804D638(void);
void sub_804D694(u8 state);
void sub_804D764(void);
+u8 shedinja_maker_maybe(void);
void sub_804DFF0(void);
void sub_804E9E4(void);
+void sub_804EAAC(u8 a0);
void sub_804EAE4(u8 side);
-u8 shedinja_maker_maybe(void);
void sub_804F020(u8 side);
void sub_804F284(u8 side);
+void sub_804F3B4(void);
+void sub_804F3C8(u8 a0);
+void sub_804F488(u16 a0, u8 a1);
void sub_804F4DC(void);
void sub_804F5BC(u8 str_idx);
bool8 sub_804F610(void);
@@ -93,6 +100,7 @@ void sub_804F748(u8 side);
void sub_804F890(u8 side);
void sub_804F964(void);
void sub_804F9D8(void);
+u32 sub_804FA14(struct Pokemon * party, u8 partyCount, u8 cursorPos);
void LoadHeldItemIcons(void);
void sub_8050138(void);
@@ -106,6 +114,7 @@ extern const u8 gTradeUnknownSpriteCoords[][4];
extern const struct SpriteTemplate gUnknown_8261CB0;
extern const struct SpriteTemplate gUnknown_8261CC8;
extern const u8 gJPText_Shedinja[];
+extern const u8 gUnknown_8261D08[][4][6];
void sub_804C600(void)
{
@@ -2513,3 +2522,563 @@ bool8 shedinja_maker_maybe(void)
}
return FALSE;
}
+
+void sub_804DBAC(void)
+{
+ sub_804F728(gUnknown_841E0A5, (u8 *)OBJ_VRAM0 + gUnknown_2031DA8->unk_72 * 32, 0x18);
+}
+
+void sub_804DBD4(u8 a0, u8 a1)
+{
+ if (a1 & 1)
+ {
+ switch (gBlockRecvBuffer[0][0])
+ {
+ case 0xEEAA:
+ gUnknown_2031DA8->unk_78 = 2;
+ break;
+ case 0xAABB:
+ gUnknown_2031DA8->unk_78 = 1;
+ break;
+ case 0xBBBB:
+ gUnknown_2031DA8->unk_7A = 1;
+ break;
+ case 0xBBCC:
+ gUnknown_2031DA8->unk_7A = 2;
+ break;
+ }
+ ResetBlockReceivedFlag(0);
+ }
+
+ if (a1 & 2)
+ {
+ switch (gBlockRecvBuffer[1][0])
+ {
+ case 0xEEAA:
+ gUnknown_2031DA8->unk_79 = 2;
+ break;
+ case 0xAABB:
+ gUnknown_2031DA8->unk_7E = gBlockRecvBuffer[1][1] + 6;
+ gUnknown_2031DA8->unk_79 = 1;
+ break;
+ case 0xBBBB:
+ gUnknown_2031DA8->unk_7B = 1;
+ break;
+ case 0xBBCC:
+ gUnknown_2031DA8->unk_7B = 2;
+ break;
+ }
+ ResetBlockReceivedFlag(1);
+ }
+}
+
+void sub_804DCF4(u8 a0, u8 a1)
+{
+ if (a1 & 1)
+ {
+ switch (gBlockRecvBuffer[0][0])
+ {
+ case 0xEEBB:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sub_804F5BC(4);
+ gUnknown_2031DA8->unk_6F = 11;
+ break;
+ case 0xEECC:
+ sub_804F5BC(5);
+ gUnknown_2031DA8->unk_6F = 8;
+ break;
+ case 0xDDDD:
+ gUnknown_2031DA8->unk_7E = gBlockRecvBuffer[0][1] + 6;
+ rbox_fill_rectangle(0);
+ sub_804EAAC(gUnknown_2031DA8->tradeMenuCursorPosition);
+ sub_804EAAC(gUnknown_2031DA8->unk_7E);
+ gUnknown_2031DA8->unk_6F = 7;
+ break;
+ case 0xCCDD:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gUnknown_2031DA8->unk_6F = 10;
+ break;
+ case 0xDDEE:
+ sub_804F5BC(1);
+ gUnknown_2031DA8->unk_6F = 8;
+ }
+ ResetBlockReceivedFlag(0);
+ }
+
+ if (a1 & 2)
+ ResetBlockReceivedFlag(1);
+}
+
+void sub_804DDF0(void)
+{
+ if (gUnknown_2031DA8->unk_78 && gUnknown_2031DA8->unk_79)
+ {
+ if (gUnknown_2031DA8->unk_78 == 1 && gUnknown_2031DA8->unk_79 == 1)
+ {
+ gUnknown_2031DA8->unk_6F = 6;
+ gUnknown_2031DA8->linkData[0] = 0xDDDD;
+ gUnknown_2031DA8->linkData[1] = gUnknown_2031DA8->tradeMenuCursorPosition;
+ sub_804F488(5, 0);
+ gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0;
+ }
+ else if (gUnknown_2031DA8->unk_78 == 1 && gUnknown_2031DA8->unk_79 == 2)
+ {
+ sub_804F5BC(1);
+ gUnknown_2031DA8->linkData[0] = 0xEECC;
+ gUnknown_2031DA8->linkData[1] = 0;
+ sub_804F488(5, 0);
+ gUnknown_2031DA8->unk_7A = gUnknown_2031DA8->unk_7B = 0;
+ gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0;
+ gUnknown_2031DA8->unk_6F = 8;
+ }
+ else if (gUnknown_2031DA8->unk_78 == 2 && gUnknown_2031DA8->unk_79 == 1)
+ {
+ sub_804F5BC(5);
+ gUnknown_2031DA8->linkData[0] = 0xDDEE;
+ gUnknown_2031DA8->linkData[1] = 0;
+ sub_804F488(5, 0);
+ gUnknown_2031DA8->unk_7A = gUnknown_2031DA8->unk_7B = 0;
+ gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0;
+ gUnknown_2031DA8->unk_6F = 8;
+ }
+ else if (gUnknown_2031DA8->unk_78 == 2 && gUnknown_2031DA8->unk_79 == 2)
+ {
+ gUnknown_2031DA8->linkData[0] = 0xEEBB;
+ gUnknown_2031DA8->linkData[1] = 0;
+ sub_804F488(5, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0;
+ gUnknown_2031DA8->unk_6F = 11;
+ }
+ }
+
+ if (gUnknown_2031DA8->unk_7A && gUnknown_2031DA8->unk_7B)
+ {
+ if (gUnknown_2031DA8->unk_7A == 1 && gUnknown_2031DA8->unk_7B == 1)
+ {
+ gUnknown_2031DA8->linkData[0] = 0xCCDD;
+ gUnknown_2031DA8->linkData[1] = 0;
+ sub_804F488(5, 0);
+ gUnknown_2031DA8->unk_7A = 0;
+ gUnknown_2031DA8->unk_7B = 0;
+ gUnknown_2031DA8->unk_6F = 9;
+ }
+
+ if (gUnknown_2031DA8->unk_7A == 2 || gUnknown_2031DA8->unk_7B == 2)
+ {
+ sub_804F5BC(1);
+ gUnknown_2031DA8->linkData[0] = 0xDDEE;
+ gUnknown_2031DA8->linkData[1] = 0;
+ sub_804F488(5, 0);
+ gUnknown_2031DA8->unk_7A = 0;
+ gUnknown_2031DA8->unk_7B = 0;
+ gUnknown_2031DA8->unk_6F = 8;
+ }
+ }
+}
+
+void sub_804DFF0(void)
+{
+ u8 mpId = GetMultiplayerId();
+ u8 status;
+ if ((status = GetBlockReceivedStatus()))
+ {
+ if (mpId == 0)
+ sub_804DBD4(0, status);
+ else
+ sub_804DCF4(mpId, status);
+ }
+ if (mpId == 0)
+ sub_804DDF0();
+}
+
+u8 sub_804E028(u8 oldPosition, u8 direction)
+{
+ int i;
+ u8 newPosition = 0;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (gUnknown_2031DA8->tradeMenuOptionsActive[gUnknown_8261D08[oldPosition][direction][i]] == TRUE)
+ {
+ newPosition = gUnknown_8261D08[oldPosition][direction][i];
+ break;
+ }
+ }
+
+ return newPosition;
+}
+
+
+void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction)
+{
+ u8 newPosition = sub_804E028(*tradeMenuCursorPosition, direction);
+
+ if (newPosition == 12) // CANCEL
+ {
+ StartSpriteAnim(&gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx], 1);
+ gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.x = 224;
+ gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.y = 160;
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx], 0);
+ gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32;
+ gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.y = gTradeMonSpriteCoords[newPosition][1] * 8;
+ }
+
+ if (*tradeMenuCursorPosition != newPosition)
+ {
+ PlaySE(SE_SELECT);
+ }
+
+ *tradeMenuCursorPosition = newPosition;
+}
+
+void sub_804E134(void)
+{
+ sub_804F5BC(0);
+ gUnknown_2031DA8->unk_6F = 5;
+
+ if (GetMultiplayerId() == 1)
+ {
+ gUnknown_2031DA8->linkData[0] = 0xAABB;
+ gUnknown_2031DA8->linkData[1] = gUnknown_2031DA8->tradeMenuCursorPosition;
+ SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 0x14);
+ }
+ else
+ {
+ gUnknown_2031DA8->unk_78 = 1;
+ }
+}
+
+extern const struct MenuAction gUnknown_8261EE4[];
+extern const struct WindowTemplate gUnknown_8261FC4;
+
+void sub_804E194(void)
+{
+ int i;
+
+ if (JOY_REPT(DPAD_UP))
+ {
+ TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 0);
+ }
+ else if (JOY_REPT(DPAD_DOWN))
+ {
+ TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 1);
+ }
+ else if (JOY_REPT(DPAD_LEFT))
+ {
+ TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 2);
+ }
+ else if (JOY_REPT(DPAD_RIGHT))
+ {
+ TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 3);
+ }
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+
+ if (gUnknown_2031DA8->tradeMenuCursorPosition < 6) // PlayerParty
+ {
+ DrawTextBorderOuter(1, 1, 14);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
+ UnionRoomAndTradeMenuPrintOptions(1, 3, 16, 2, gUnknown_8261EE4);
+ Menu_InitCursor(1, 3, 0, 0, 16, 2, 0);
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 3);
+ gUnknown_2031DA8->unk_6F = 1;
+ }
+ else if (gUnknown_2031DA8->tradeMenuCursorPosition < 12)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gUnknown_2031DA8->unk_6F = 2;
+ }
+ else if (gUnknown_2031DA8->tradeMenuCursorPosition == 12)
+ {
+ CreateYesNoMenu(&gUnknown_8261FC4, 3, 0, 2, 0x001, 14, 0);
+ gUnknown_2031DA8->unk_6F = 4;
+ sub_804F728(gUnknown_8261ECC[4], (void *)OBJ_VRAM0 + gUnknown_2031DA8->unk_72 * 32, 24);
+ }
+ }
+ if (JOY_NEW(R_BUTTON))
+ {
+ for (i = 0; i < 10; i++)
+ gUnknown_2031DA8->linkData[i] = i;
+ SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 20);
+ }
+}
+
+void sub_804E330(void)
+{
+ sub_804F3B4();
+ gUnknown_2031DA8->unk_6F = 0;
+ gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = FALSE;
+ sub_804F728(gUnknown_8261ECC[1], (void *)OBJ_VRAM0 + gUnknown_2031DA8->unk_72 * 32, 24);
+}
+
+void sub_804E388(void)
+{
+ switch (Menu_ProcessInputNoWrapAround())
+ {
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ sub_804E330();
+ break;
+ case MENU_NOTHING_CHOSEN:
+ break;
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gUnknown_2031DA8->unk_6F = 2;
+ break;
+ case 1:
+ switch (sub_804FA14(gPlayerParty, gPlayerPartyCount, gUnknown_2031DA8->tradeMenuCursorPosition))
+ {
+ case 0:
+ sub_804E134();
+ gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = TRUE;
+ break;
+ case 1:
+ sub_804F488(3, 3);
+ gUnknown_2031DA8->unk_6F = 8;
+ break;
+ case 2:
+ case 4:
+ sub_804F488(3, 6);
+ gUnknown_2031DA8->unk_6F = 8;
+ break;
+ case 3:
+ case 5:
+ sub_804F488(3, 7);
+ gUnknown_2031DA8->unk_6F = 8;
+ break;
+ }
+ break;
+ }
+}
+
+void sub_804E46C(void)
+{
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_804E330();
+ }
+}
+
+void sub_804E494(void)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gUnknown_2031DA8->tradeMenuCursorPosition < 6)
+ ShowPokemonSummaryScreen(gPlayerParty, gUnknown_2031DA8->tradeMenuCursorPosition, gUnknown_2031DA8->partyCounts[0] - 1, sub_804CF14, 4);
+ else
+ ShowPokemonSummaryScreen(gEnemyParty, gUnknown_2031DA8->tradeMenuCursorPosition - 6, gUnknown_2031DA8->partyCounts[1] - 1, sub_804CF14, 4);
+ FreeAllWindowBuffers();
+ }
+}
+
+u8 sub_804E50C(u8 *a0, u8 a1, u8 a2)
+{
+ s32 i;
+ u16 species;
+ u8 r4 = 0;
+ for (i = 0; i < a1; i++)
+ {
+ if (a2 != i)
+ r4 += a0[i];
+ }
+ species = GetMonData(&gEnemyParty[gUnknown_2031DA8->unk_7E % 6], MON_DATA_SPECIES);
+ if ((species == SPECIES_DEOXYS || species == SPECIES_MEW) && !GetMonData(&gEnemyParty[gUnknown_2031DA8->unk_7E % 6], MON_DATA_OBEDIENCE))
+ return 2;
+ if (r4 != 0)
+ r4 = 1;
+ return r4;
+}
+
+void sub_804E5A0(void)
+{
+ int i;
+ u8 arr[12];
+
+ for (i = 0; i < gUnknown_2031DA8->partyCounts[0]; i++)
+ {
+ arr[i] = gUnknown_2031DA8->unk_45[0][i];
+ }
+
+ switch (sub_804E50C(arr, gUnknown_2031DA8->partyCounts[0], gUnknown_2031DA8->tradeMenuCursorPosition))
+ {
+ case 0:
+ sub_804F488(3, 3);
+ gUnknown_2031DA8->linkData[0] = 0xBBCC;
+ sub_804F488(0xB4, 0);
+ break;
+ case 1:
+ sub_804F488(3, 1);
+ gUnknown_2031DA8->linkData[0] = 0xBBBB;
+ if (IsLinkTaskFinished())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 20);
+ }
+ break;
+ case 2:
+ sub_804F488(3, 8);
+ gUnknown_2031DA8->linkData[0] = 0xBBCC;
+ sub_804F488(0xB4, 0);
+ break;
+ }
+}
+
+void sub_804E674(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ sub_804E5A0();
+ gUnknown_2031DA8->unk_6F = 100;
+ PutWindowTilemap(17);
+ break;
+ case 1:
+ case MENU_B_PRESSED:
+ sub_804F488(3, 1);
+ if (IsLinkTaskFinished())
+ {
+ gUnknown_2031DA8->linkData[0] = 0xBBCC;
+ SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 20);
+ }
+ gUnknown_2031DA8->unk_6F = 100;
+ PutWindowTilemap(17);
+ break;
+ }
+}
+
+void sub_804E6FC(void)
+{
+ int i;
+
+ for (i = 0; i < gUnknown_2031DA8->partyCounts[1] - 4; i++)
+ {
+ PutWindowTilemap(i + 12);
+ CopyWindowToVram(i + 12, 1);
+ }
+}
+
+void sub_804E744(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ sub_804F5BC(4);
+ gUnknown_2031DA8->linkData[0] = 0xEEAA;
+ gUnknown_2031DA8->linkData[1] = 0;
+ sub_804F488(5, 0);
+ gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = TRUE;
+ gUnknown_2031DA8->unk_6F = 100;
+ sub_804E6FC();
+ break;
+ case 1:
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ sub_804E330();
+ break;
+ }
+}
+
+void sub_804E7C8(void)
+{
+ if (GetMultiplayerId() == 0)
+ {
+ rbox_fill_rectangle(0);
+ sub_804EAAC(gUnknown_2031DA8->tradeMenuCursorPosition);
+ sub_804EAAC(gUnknown_2031DA8->unk_7E);
+ }
+ gUnknown_2031DA8->unk_6F = 7;
+}
+
+void sub_804E804(void)
+{
+ if (gUnknown_2031DA8->unk_74[0] == 5 && gUnknown_2031DA8->unk_74[1] == 5)
+ {
+ sub_804DBAC();
+ gUnknown_2031DA8->unk_6F = 14;
+ }
+}
+
+void sub_804E830(void)
+{
+ gUnknown_2031DA8->unk_A8++;
+
+ if (gUnknown_2031DA8->unk_A8 > 120)
+ {
+ CreateYesNoMenu(&gUnknown_8261FC4, 3, 0, 2, 1, 14, 0);
+ gUnknown_2031DA8->unk_A8 = 0;
+ gUnknown_2031DA8->unk_6F = 3;
+ }
+}
+
+void sub_804E880(void)
+{
+ int i;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ rbox_fill_rectangle(0);
+ rbox_fill_rectangle(1);
+
+ for (i = 0; i < 4; i++)
+ {
+ FillWindowPixelBuffer(i + 14, PIXEL_FILL(0));
+ rbox_fill_rectangle(i + 14);
+ }
+
+ sub_804F3C8(0);
+ sub_804F3C8(1);
+ gUnknown_2031DA8->unk_6F = 0;
+ gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = FALSE;
+ }
+}
+
+void sub_804E908(void)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gWirelessCommType)
+ {
+ sub_800AB9C();
+ }
+ else
+ {
+ sub_800AA80(12);
+ }
+
+ gUnknown_2031DA8->unk_6F = 12;
+ }
+}
+
+void sub_804E944(void)
+{
+ if (gWirelessCommType)
+ {
+ if (IsLinkTaskFinished())
+ {
+ Free(gUnknown_2031C90);
+ Free(gUnknown_2031DA8);
+ FreeAllWindowBuffers();
+ DestroyWirelessStatusIndicatorSprite();
+ SetMainCallback2(c2_8056854);
+ }
+ }
+ else
+ {
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ Free(gUnknown_2031C90);
+ Free(gUnknown_2031DA8);
+ FreeAllWindowBuffers();
+ SetMainCallback2(c2_8056854);
+ }
+ }
+}
+