diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-28 15:55:57 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-28 15:55:57 -0400 |
commit | efe914a5bab5062834f35cbae7824d1703f45618 (patch) | |
tree | b047c6c07890a7e30ef3f127d534b7fe12051b03 | |
parent | e9cf9fc104ceedd50330af6b22c6e896e85930e1 (diff) |
trade through sub_804E944
-rw-r--r-- | asm/party_menu.s | 2 | ||||
-rw-r--r-- | asm/pokemon_storage_system.s | 2 | ||||
-rw-r--r-- | asm/pokemon_summary_screen.s | 10 | ||||
-rw-r--r-- | asm/trade.s | 1796 | ||||
-rw-r--r-- | include/overworld.h | 1 | ||||
-rw-r--r-- | include/pokemon_summary_screen.h | 2 | ||||
-rw-r--r-- | include/strings.h | 3 | ||||
-rw-r--r-- | src/random.c | 6 | ||||
-rw-r--r-- | src/trade.c | 571 |
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); + } + } +} + |